IPAdapter Precise Composition V2
When you want the layout, not the look
- model
- ipadapter
- image
- image_negative
- attn_mask
- clip_vision
- MODEL
Regular IP-Adapter is a blunt instrument: it drags everything about the reference along - subject, palette, mood, composition - and you spend the whole session fighting the parts you didn't want. IPAdapterPreciseCompositionV2 is the version that leans on the composition side of the signal. It's an advanced apply node, structurally identical to IPAdapterAdvancedV2, but with one input the others don't have: composition_boost.
That knob is the whole reason this node exists. composition_boost runs from −5 to 5 with a default of 0, and it scales how hard the composition signal pushes on the model. Push it positive and the output starts obeying the reference's layout - where the subject sits, the arrangement of objects, the frame's structure - while leaving style and content to your prompt. Take it negative and you're actively suppressing the layout so the model goes its own way. Think of it as a dedicated fader for "spatial arrangement," separate from the weight knob that controls overall influence. It's the same idea the community plus_composition adapter embodies (see the Community loader), expressed as a fine-tune on the standard adapter.
Everything else is the standard advanced apply-node surface: weight, combine_embeds (concat / add / subtract / average / norm average for how multiple reference images combine), start_at / end_at for step-range control, and embeds_scaling (V only, K+V, K+V w/ C penalty, K+mean(V) w/ C penalty) for how the embedding injects into attention. The optional inputs - image_negative, attn_mask, clip_vision - are the usual ones: a negative reference to push away from, a mask to restrict conditioning to a region, or a CLIP vision override.
The output is a patched MODEL, chained into your sampler. Wire the ipadapter pipe from the Unified Loader in, drop your reference into image, set composition_boost to taste, done.
When you'd actually reach for it
Two workflows, mainly. One: you want a scene arranged like a reference but rendered in a totally different style - product shots, interior layouts, poster compositions. Two: the "my character keeps ending up somewhere random" problem - you want the model to respect where things sit in the frame without cloning the source image's colors or subject. In both cases the classic combo is this node with weight moderate and composition_boost positive, paired with a normal IP-Adapter or ControlNet for the things you actually want to copy. IP-Adapter conditions on semantic content; ControlNet conditions on spatial structure; this node is the middle ground that biases the adapter toward structure.
Install
Part of chflame163/ComfyUI_IPAdapter_plus_V2, the V2-renamed fork of cubiq's pack so it coexists with the original. Via 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
composition_boost is more dramatic than the default of 0 suggests - a few tenths either way is already a visible change, so move it in small steps. And don't expect it to do the job of ControlNet: boosting composition makes the model prefer a layout, it doesn't lock it. If you need pixel-precise placement, that's what ControlNet is for, and stacking both is the standard move. Finally, remember the batch sibling IPAdapterPreciseCompositionBatchV2 exists if your image is a sequence - this single-image version handles one reference cleanly but isn't built for per-frame work.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| ipadapter | IPADAPTER | — | |
| image | IMAGE | — | |
| weight | FLOAT | 1.00-1–5 | — |
| composition_boost | FLOAT | 0.00-5–5 | — |
| combine_embeds | COMBO | 5 options: concat, add, subtract, average, norm average | |
| 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 | — |