Conditioning Composer π§© (TensorVizion)
One node for every way two prompts can share a frame
- conditioning_1
- conditioning_2
- conditioning
- summary
If you've ever wanted a red dress in the left third of the frame and a sunset behind it, without either prompt bleeding into the other, you've wanted conditioning composition. ComfyUI ships three separate stock nodes for it - ConditioningCombine, ConditioningConcat, and ConditioningSetArea - and this node folds all three into one with a mode dropdown. It's the pack's answer to "I want regional prompting but I don't want three more nodes cluttering the graph."
What the three modes do
You feed in two already-encoded conditionings, pick a mode, and it merges them:
- combine - both conditionings apply across the whole image, averaged in influence. Think "blend these two styles/subjects globally."
- concat - the two token sequences get concatenated instead of averaged. Both get a stronger combined pull, so it's the mode to pick when you want both prompts to genuinely coexist rather than average out to mush.
- set_area - conditioning_2 gets confined to a rectangle you define, while conditioning_1 keeps applying globally. This is the regional one, and it's why most people reach for the node.
The summary output just echoes which mode ran and its settings - handy if you're logging runs.
The inputs that matter
Of the seven required inputs, a beginner really sets four:
- conditioning_1 and conditioning_2 - both CONDITIONING, straight out of CLIP Text Encode.
- mode - the enum above.
- width / height / x / y / area_strength - only read in
set_areamode. They're ignored elsewhere, which is worth knowing because people wire them up in combine mode and wonder why nothing changes.
For set_area, x/y is the top-left corner and width/height is the box size. Coordinates are in latent-space multiples of 8 - a 512Γ512 canvas is a 64Γ64 latent, so if you want the region to be "the left half of the frame," that's roughly x=0, width=256, not width=512. area_strength (default 1.0) scales how hard conditioning_2 pulls inside its box; values below 1.0 let the global prompt leak back in, which is often exactly what you want for natural blending.
Installation and quirks
It's part of OmniNodes, so:
cd ComfyUI/custom_nodes/
git clone https://github.com/TensorVizion/OmniNodes
Restart ComfyUI, or install "OmniNodes" through ComfyUI Manager. No extra dependencies - the node delegates to core's ConditioningCombine/Concat/SetArea, so its behavior matches the stock nodes exactly and there's no model download.
The trap beginners hit: in set_area mode, the region is defined against the latent, and if your box falls outside the latent bounds or you leave the defaults (512Γ512 at x=0,y=0) while working at a different resolution, your second prompt either vanishes or covers everything. Set the box relative to your actual output resolution. And don't expect set_area to be a hard mask - it's a conditioning weight, so the boundary will be soft. If you need a hard region boundary, a mask-based approach is the better tool; this node is for the "prompt for this corner, different prompt for that corner" workflow.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| conditioning_1 | CONDITIONING | β | |
| conditioning_2 | CONDITIONING | β | |
| mode | COMBO | 3 options: combine, concat, set_area | |
| width | INT | 51264β8192 | β |
| height | INT | 51264β8192 | β |
| x | INT | 00β8192 | β |
| y | INT | 00β8192 | β |
| area_strength | FLOAT | 1.000β10 | β |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| conditioning | CONDITIONING | β |
| summary | STRING | β |