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 5 months ago·Updated 5 months ago· 2
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—