Nodes/Unified Conditioning Merge (with timestep ranges)/CLIP Text Encode SDXL Enhanced (Detail Isolation)
ComfyUI Node

CLIP Text Encode SDXL Enhanced (Detail Isolation)

It eats a chain of sections

By RandyHaylor·Created 4 months ago·Updated 3 months ago· 1
CLIP Text Encode SDXL Enhanced (Detail Isolation)
  • clip
  • prompt_sections
  • latent
  • conditioning
  • upscaled_conditioning
  • reference_full_prompt
upscaled_conditioning_multiplier1.00
join_separator,
zoom1.00
offset_x0.00
offset_y0.00

This node is the receiving end of a two-part system. Its little sibling, CLIPTextEncodeSDXLEnhancedDetailIsolationSection, is a building block you chain together to describe each chunk of your prompt; this one takes the assembled chain and produces the actual SDXL conditioning. If you've used the v3 encoder, the math is familiar - same per-stream Cutoff isolation, same target-text/region-text structure - but the sections arrive through the graph instead of widgets.

Why bother with the split? Because a graph-based chain is rearrangeable. You can move a section node in front of another, bypass it, or keep one section's settings intact while you tweak its neighbors. On the widget version, reordering means copy-pasting text between fields. If you're building a reusable prompt structure, the chain is nicer to work with.

What this node carries vs. what the sections carry

The primary node keeps only the global and image-geometry settings: upscaled_conditioning_multiplier, zoom, offset_x, offset_y, and the optional latent input (for target W/H). Everything per-section - the global_text/enhanced_text pair, weights, CLIP-L/G strengths, and the A1111 embedding toggles - lives on the section nodes themselves, each with its own values. Different sections can use different toggle settings, which the widget versions can't easily express.

Inputs and outputs

Inputs: clip, upscaled_conditioning_multiplier, join_separator (inserted between chained sections in the base prompt), zoom/offset_x/offset_y, plus the optional prompt_sections (DETAIL_ISOLATION_SECTION_CHAIN) and latent inputs.

Outputs are the family standard: conditioning (primary, sized to the latent), upscaled_conditioning (same tokens, upscaled metadata for two-stage workflows), and reference_full_prompt (STRING - the joined prompt text CLIP actually encoded).

Install

ComfyUI Manager → search "Unified Conditioning", or:

cd ComfyUI/custom_nodes
git clone https://github.com/RandyHaylor/unified-conditioning-combine-with-timestep-range.git unified-conditioning-merge

Restart ComfyUI; it's under unified-conditioning-merge. No models, no pip deps.

Troubleshooting

  • An empty conditioning output usually means no section nodes are wired in - the chain is the whole input. Start with at least one ...DetailIsolationSection node feeding prompt_sections.
  • If a section seems to vanish from the result, check whether its enhanced_text was left empty - that makes it a passthrough chunk, which is often exactly what you want, but it's also the easiest way to silently "lose" a region.
  • reference_full_prompt is your ground truth for what got built. When the isolation isn't doing what you expect, read it before you suspect the math.
Categoryunified-conditioning-merge

Inputs (8)

NameTypeDefaultDescription
clipCLIP
upscaled_conditioning_multiplierFLOAT1.00
join_separatorSTRING,String inserted between chained sections in the base prompt when the prior section did not already end with this separator. Default ','. Empty = no separator inserted (sections concatenate directly; single commas still preserved from typed trailing punctuation).
zoomFLOAT1.001–100
offset_xFLOAT0.00-1–1
offset_yFLOAT0.00-1–1
prompt_sectionsoptDETAIL_ISOLATION_SECTION_CHAIN
latentoptLATENT

Outputs (3)

NameTypeDescription
conditioningCONDITIONING
upscaled_conditioningCONDITIONING
reference_full_promptSTRING