Nodes/OmniNodes/Conditioning Composer 🧩 (TensorVizion)
ComfyUI Node

Conditioning Composer 🧩 (TensorVizion)

One node for every way two prompts can share a frame

By TensorVizionΒ·Created 3 months agoΒ·Updated 7 days agoΒ· 0
Conditioning Composer 🧩 (TensorVizion)
  • conditioning_1
  • conditioning_2
  • conditioning
  • summary
β—„modeβ–Ύβ–Ί
β—„width512β–Ί
β—„height512β–Ί
β—„x0β–Ί
β—„y0β–Ί
β—„area_strength1.00β–Ί

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_area mode. 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.

CategoryTensorVizion/Prompt

Inputs (8)

NameTypeDefaultDescription
conditioning_1CONDITIONINGβ€”
conditioning_2CONDITIONINGβ€”
modeCOMBO3 options: combine, concat, set_area
widthINT51264–8192β€”
heightINT51264–8192β€”
xINT00–8192β€”
yINT00–8192β€”
area_strengthFLOAT1.000–10β€”

Outputs (2)

NameTypeDescription
conditioningCONDITIONINGβ€”
summarySTRINGβ€”