Geekatplay HyperTile Regional Conditioning
Give each tile its own prompt with area-scoped conditioning
- clip
- positions
- base_conditioning
- conditioning
- debug_prompts
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:
- Builds a prompt -
base_promptplus that tile's caption, deduped (or base-only when a tile has no caption andfallback_to_base_promptis on). - Encodes it with the CLIP.
- 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, andset_area_to_boundsoff, 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 multilinetile 1: ..., tile 2: ...output from Caption Tiles.base_prompt- the global description, prepended to each tile's caption unlessinclude_base_promptis 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
conditioningis 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.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| positions | LIST | — | |
| captions | STRING | — | |
| base_prompt | STRING | — | |
| strength | FLOAT | 1.000–10 | — |
| include_base_prompt | BOOLEAN | true | — |
| fallback_to_base_prompt | BOOLEAN | true | — |
| base_conditioningopt | CONDITIONING | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| conditioning | CONDITIONING | — |
| debug_prompts | STRING | — |