Nodes/ComfyUI-UltimateUpsacaler/Geekatplay HyperTile Regional Conditioning
ComfyUI Node

Geekatplay HyperTile Regional Conditioning

Give each tile its own prompt with area-scoped conditioning

By GeekatplayStudio·Created 5 months ago·Updated 5 months ago· 7
Geekatplay HyperTile Regional Conditioning
  • clip
  • positions
  • base_conditioning
  • conditioning
  • debug_prompts
captions
base_prompt
strength1.00
include_base_prompttrue
fallback_to_base_prompttrue

The default Geekatplay FLUX workflow keeps one merged positive prompt across the whole tile batch, and the README says this node is "shipped for advanced graphs, but not wired into the default FLUX workflow." That's the honest framing. HyperTileRegionalConditioning is for when one prompt isn't good enough and you want each tile's denoise to know what that region actually contains - a tile over a face gets told it's a face, a tile over fabric gets told it's fabric.

How it works

It's ComfyUI's classic regional conditioning (the same idea as ConditioningSetArea, which the ecosystem has used since the SD 1.5 days) wrapped in a tile-aware interface. You hand it a CLIP, a list of tile positions as (left, top, right, bottom) rectangles, and the caption string from HyperTile Caption Tiles. For each position it:

  1. Builds a prompt - base_prompt plus that tile's caption, deduped (or base-only when a tile has no caption and fallback_to_base_prompt is on).
  2. Encodes it with the CLIP.
  3. Sets an area on the conditioning in latent units - the pixel coordinates are divided by 8 because the latent is 8x smaller - with your strength, and set_area_to_bounds off, so the region isn't clamped to the whole canvas.

Pass base_conditioning in and the region conditionings are appended to it. An empty positions list just hands the base conditioning back unchanged.

Inputs

  • clip (CLIP) - your model's text encoder.
  • positions (LIST) - the four-value rectangles, one per tile, straight from your tiler. This is a forced input; there's no combo box here.
  • captions - the multiline tile 1: ..., tile 2: ... output from Caption Tiles.
  • base_prompt - the global description, prepended to each tile's caption unless include_base_prompt is off.
  • strength - 0–10, default 1. How hard each region's prompt pushes.
  • fallback_to_base_prompt - use the base prompt for tiles that got no caption.
  • base_conditioning (optional CONDITIONING) - chain into existing conditioning.

Outputs

  • conditioning (CONDITIONING) - goes into the KSampler's positive input.
  • debug_prompts (STRING) - one line per tile showing the resolved prompt. Wire this to a text display the first time you build the graph; it makes the "why is this tile wrong" questions much faster.

Install

Part of GeekatplayStudio/ComfyUI-UltimateUpsacaler: Manager → search "ComfyUI-UltimateUpsacaler", or:

cd ComfyUI/custom_nodes && git clone https://github.com/GeekatplayStudio/ComfyUI-UltimateUpsacaler

Restart afterwards. Only bother with the pack's FLUX assets (the two 17GB fp8 checkpoints plus the FLUX Union ControlNet) if you're running the FLUX path; the SDXL path needs just the SDXL checkpoint and Tile ControlNet.

Why it's advanced, not beginner

It depends on three other moving parts: a tiler that hands you positions, Caption Tiles (or your own captions) for text, and a graph already built around the tiled pass. Get the position format wrong and it raises a clear ValueError rather than guessing. And regional conditioning with hard areas is fiddlier on FLUX than on SDXL - the area feature behaves differently across model families, which is exactly why the pack ships the simple merged-prompt path as the default and leaves this for graphs that need it.

Common issues

  • Positions must be 4-value tuples. Anything else raises "Tile position at index N must have 4 values". Check your tiler's output format.
  • Don't pre-divide coordinates by 8. The node does the latent-space conversion for you.
  • If regions are ignored entirely, check that this node's conditioning is on the KSampler's positive input, not the base encode.
  • Captions parse on the first colon per line. A caption with a colon in its text can mis-split; keep captions simple, which the Caption Tiles node mostly does for you.
CategoryGeekatplay HyperTile/Conditioning

Inputs (8)

NameTypeDefaultDescription
clipCLIP
positionsLIST
captionsSTRING
base_promptSTRING
strengthFLOAT1.000–10
include_base_promptBOOLEANtrue
fallback_to_base_promptBOOLEANtrue
base_conditioningoptCONDITIONING

Outputs (2)

NameTypeDescription
conditioningCONDITIONING
debug_promptsSTRING