Nodes/ComfyUI_IPAdapter_plus_V2/IPAdapter Style & Composition SDXL V2
ComfyUI Node

IPAdapter Style & Composition SDXL V2

One image for style, one for layout — SDXL only

By chflame163·Created 2 years ago·Updated 2 years ago· 55
IPAdapter Style & Composition SDXL V2
  • model
  • ipadapter
  • image_style
  • image_composition
  • image_negative
  • attn_mask
  • clip_vision
  • MODEL
weight_style1.00
weight_composition1.00
expand_stylefalse
combine_embedsaverage
start_at0.000
end_at1.000
embeds_scaling

Here's a workflow problem: you want a scene arranged like photo A but painted like photo B, and no amount of prompt engineering gets you both. IPAdapterStyleCompositionV2 is the node built for exactly that. It takes two reference images - one for style, one for composition - encodes them separately, and injects both into the model, each with its own weight. It's the "best of both references" node, and it's the reason the display name is "IPAdapter Style & Composition SDXL V2": this only works on SDXL. Feed it an SD 1.5 model and it throws "Style + Composition transfer is only available for SDXL models at the moment."

The mechanism is the advanced apply pipeline with a split brain. Internally, image_style becomes the primary image and the node switches the weight curve to style and composition (or strong style and composition if expand_style is on), while image_composition rides along as a separate encoding. Two CLIP passes, two embeddings, one combined injection.

The inputs that matter:

  • image_style - where the look comes from: palette, texture, rendering
  • image_composition - where the arrangement comes from: subject placement, scene structure
  • weight_style / weight_composition - independent faders for each (default 1.0 each, range −1 to 5). This is the whole appeal - you can run style at 0.8 and composition at 1.2 and not have them fight
  • expand_style - off by default. On, it picks the strong style-and-composition curve, so the reference pair pushes harder against the prompt
  • combine_embeds - how the two encodings merge, default average

Plus the usual start_at/end_at, embeds_scaling, and optional image_negative, attn_mask, clip_vision. Output is a patched MODEL.

When you'd reach for it

Art-directing from two photos is the killer use: "keep the composition of the product shot, but render it like this painting." Same for character work - pose and framing from one reference, clothing/texture style from another. It's also a genuinely good fallback when a single reference has a layout you love and a look you hate: split them into two images and dial each independently.

Install

Part of chflame163/ComfyUI_IPAdapter_plus_V2, the V2 fork of cubiq's pack. Manager → search ComfyUI_IPAdapter_plus_V2, or:

cd ComfyUI/custom_nodes
git clone https://github.com/chflame163/ComfyUI_IPAdapter_plus_V2

Restart. No pip requirements.

Gotchas

The SDXL-only restriction is the big one - don't reach for this on SD 1.5 or Pony-for-SD15 workflows; use two separate apply nodes instead. expand_style is a real lever, not a gimmick: with it off the references cooperate with the prompt; with it on they start overriding it, so treat it as "louder" rather than "better." And both images should be prepped to a sensible aspect - see PrepImageForClipVisionV2 if one of them is a weird crop, because the composition reference's framing is exactly what you're asking the model to copy. If your references are a sequence rather than a single pair, the Batch version of this node handles them per-frame instead of averaging them together.

Categoryipadapter/style_composition

Inputs (14)

NameTypeDefaultDescription
modelMODEL
ipadapterIPADAPTER
image_styleIMAGE
image_compositionIMAGE
weight_styleFLOAT1.00-1–5
weight_compositionFLOAT1.00-1–5
expand_styleBOOLEANfalse
combine_embedsCOMBOaverage5 options: concat, add, subtract, average, norm average
start_atFLOAT0.0000–1
end_atFLOAT1.0000–1
embeds_scalingCOMBO4 options: V only, K+V, K+V w/ C penalty, K+mean(V) w/ C penalty
image_negativeoptIMAGE
attn_maskoptMASK
clip_visionoptCLIP_VISION

Outputs (1)

NameTypeDescription
MODELMODEL