IPAdapter Style & Composition Batch SDXL V2
Two references per frame, SDXL only
- model
- ipadapter
- image_style
- image_composition
- image_negative
- attn_mask
- clip_vision
- MODEL
Take everything the single-image Style & Composition node does - one reference for style, one for layout, independent weights, injected together - and apply it to a sequence of reference pairs instead of one pair. That's this node. IPAdapterStyleCompositionBatchV2 is the batch variant: it expects image_style and image_composition to be batches (multiple frames), and it processes them per frame rather than blending them into one average. This is what you want for animation or frame-by-frame work where each frame needs its own style/composition pairing.
The "Batch" in the name isn't just an advertising flourish. In this pack's source, batch variants set unfold_batch = True, which changes how the encoder handles the incoming image tensor: each image in the batch is encoded and conditioned separately, instead of the whole batch being folded into a single conditioning. That distinction is what keeps frame 1's style from bleeding into frame 30's. It's also why there are paired single/batch versions of so many nodes here - the difference is structural, not cosmetic.
The inputs are the same as the single version, minus combine_embeds (the batch path fixes the merge internally - check the source if you care; the default concat behavior is fine for sequences). You get image_style, image_composition, weight_style, weight_composition, expand_style, start_at, end_at, and embeds_scaling, plus the usual optional image_negative, attn_mask, and clip_vision. Output is MODEL. And like its sibling, this is SDXL-only - feed it SD 1.5 and it raises the same "only available for SDXL models" error.
When you'd reach for it
The realistic use is a style-consistent animation or slideshow: a storyboard of composition references, each frame styled by a matching style reference, run through one node. It's also the answer when you're batch-generating a contact sheet of variations and want each variant to pair its own style/composition refs. For a single pair of images, the non-batch node is the simpler choice - this one adds nothing but the per-frame handling.
Install
Part of chflame163/ComfyUI_IPAdapter_plus_V2, the V2 fork of cubiq's pack:
cd ComfyUI/custom_nodes
git clone https://github.com/chflame163/ComfyUI_IPAdapter_plus_V2
or ComfyUI Manager → search ComfyUI_IPAdapter_plus_V2, then restart. No pip requirements.
Gotchas
The batch-synchronization trap: image_style and image_composition need matching batch sizes, or the encoder silently misaligns them frame for frame. If your styles drift from your compositions mid-sequence, check the batch lengths first. And per-frame processing is slower and hungrier than a single-pair pass - on a tight-VRAM card, this node will be the first thing you notice. Finally, keep the same era-caveat as the rest of this pack: this is an SDXL-family tool, so if your base is newer, none of this applies.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| ipadapter | IPADAPTER | — | |
| image_style | IMAGE | — | |
| image_composition | IMAGE | — | |
| weight_style | FLOAT | 1.00-1–5 | — |
| weight_composition | FLOAT | 1.00-1–5 | — |
| expand_style | BOOLEAN | false | — |
| start_at | FLOAT | 0.0000–1 | — |
| end_at | FLOAT | 1.0000–1 | — |
| embeds_scaling | COMBO | 4 options: V only, K+V, K+V w/ C penalty, K+mean(V) w/ C penalty | |
| image_negativeopt | IMAGE | — | |
| attn_maskopt | MASK | — | |
| clip_visionopt | CLIP_VISION | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |