Nodes/ComfyUI-Smart-Upscaler/Tile Job Director: Exact Local Tiles
ComfyUI Node

Tile Job Director: Exact Local Tiles

The node that cuts the exact tiles and hands each one its context

By HallettVisual·Created 2 months ago·Updated 2 days ago· 28
Tile Job Director: Exact Local Tiles
  • upscaled_tiles
  • prompt_system
  • tile_images
  • tile_instructions
  • tile_references
  • tile_seeds
  • caption_images
◄tile_metadata_json—►
◄global_context—►
◄selection_modeall_tiles►
◄tile_number1►
◄base_seed0►
◄seed_modefixed►

The Tile Planner makes the plan; the Tile Job Director executes it. This node takes the enlarged tile batch plus the whole-image context from SmartCachedTextGenerate, cuts the exact local tiles, and assembles every per-tile job - the tile image, its instruction, its reference ID, and its seed. Think of it as the foreman between "here's the picture and the plan" and "here's a queue of ninety self-contained tile jobs."

What it does

It matches each planned tile with the prompt contract from the Prompt Director (prompt_system) and the scene brief (global_context), then emits the complete job sets that the rest of the pipeline consumes. It also has a selection_mode that switches the whole pack between one tile and all tiles - the mechanism behind the one-tile test that the README pushes as the fastest way to iterate.

The seeds it hands out are worth a moment. base_seed plus seed_mode decides how every tile gets a reproducible seed:

  • increment - each tile steps the base seed by one.
  • fixed - every tile uses the same seed (good for debugging, bad for identical tiles).
  • hashed - a stable hash of the tile reference, so a tile keeps its seed across reruns even if the order changes.

Same seed for a tile = same result, which is why the pack's caching story works: change the scale and rerun, and the tiles you didn't want to move come out the same.

Inputs that matter

Mostly wired for you:

  • upscaled_tiles, tile_metadata_json - from the Tile Planner. global_context - the scene brief from SmartCachedTextGenerate. prompt_system - the contract from the Prompt Director.
  • selection_mode - single_tile or all_tiles. The README's advice is to review with single_tile before switching to all_tiles.
  • tile_number - the human tile number (T001…), used in single-tile mode to pick which one.
  • base_seed and seed_mode - described above.

Outputs, all lists in the same order so the downstream nodes can zip them together: tile_images, tile_instructions, tile_references, tile_seeds, and caption_images (the bare local crops the captioner should actually look at - unpadded, no diagnostics painted on them, per the pack's honesty contract that literal models would otherwise reproduce the overlay in the output).

Where it sits

tile_images + tile_instructions feed the per-tile prompt generator (SmartCachedTilePromptGenerator), and the four sampler-facing sets flow into SmartSamplerTileSelector, which decides what actually reaches the sampler. Because the Job Director only ever exchanges standard IMAGE and STRING values, the generator block is externally replaceable - the pack's promise is that anything taking a picture and a prompt and returning a picture can sit in that slot.

Install

Same pack install as every node here - ComfyUI Manager (search "ComfyUI-Smart-Upscaler") or:

cd ComfyUI/custom_nodes
git clone https://github.com/HallettVisual/ComfyUI-Smart-Upscaler

then restart, plus ComfyUI-KJNodes and rgthree-comfy for the shipped workflow. No Python deps; models in docs/MODELS.md total ~13 GB (the captioner and the Z-Image Turbo stack are the load-bearing ones).

Gotchas

  • Seeds and reproducibility. If a tile keeps changing between runs, check seed_mode - hashed is the one that pins a tile's seed to its reference across reruns.
  • single_tile leaves the rest blank. That's expected; the finalizer fills unrendered positions from the enlarged baseline so you can see the whole picture. Switch back to all_tiles for the real run.
  • Confusing tile IDs. References display as T001, T002…; the inspector and the sampler selector both use the same numbering, so a bad tile's number in the log is the same number you type into tile_number. That consistency is the pack's whole debugging story.
CategorySmart Upscaler/Prompting

Inputs (8)

NameTypeDefaultDescription
upscaled_tilesIMAGE—
tile_metadata_jsonSTRING—
global_contextSTRING—
prompt_systemSMART_PROMPT_SYSTEM—
selection_modeCOMBOall_tilesLeave on all tiles. single_tile writes a prompt for one tile only and is a way to save captioning time while testing; to test the SAMPLER on one tile, use the Sampler Tile Test Selector instead, which keeps every prompt and audit record intact.
tile_numberINT11–4096Only used by single_tile above. This is the tile number shown on the processing grid.
base_seedINT00–18446744073709550000—
seed_modeCOMBOfixedfixed gives every tile the same seed, which keeps texture consistent from tile to tile - the right choice for an upscale. increment and hashed vary the seed per tile, which varies the texture too.

Outputs (5)

NameTypeDescription
tile_imagesIMAGE—
tile_instructionsSTRING—
tile_referencesSTRING—
tile_seedsINT—
caption_imagesIMAGE—