Nodes/ComfyUI-UltimateUpsacaler/Geekatplay HyperTile Planner
ComfyUI Node

Geekatplay HyperTile Planner

The node that does the tiled-upscale math so you don't guess

By GeekatplayStudio·Created 5 months ago·Updated 5 months ago· 7
Geekatplay HyperTile Planner
  • image
  • tile_width
  • tile_height
  • batch_size
  • denoise
  • tiled_decode
  • profile
  • source_width
  • source_height
  • target_width
  • target_height
  • upscale_ratio
  • tiles_x
  • tiles_y
  • preview_text
sizing_mode
target_long_edge4096
magnification4.0
output_width4096
output_height4096
snap_to_multiple64
model_family
vram_gb12
preserve_compositiontrue
denoise_adjust0.00

If you've ever built a tiled upscale by hand, you know the ritual: pick a target size, do the aspect-ratio math by hand, then second-guess your tile size and denoise until the seams teach you otherwise. The HyperTilePlanner is Geekatplay's attempt to kill that loop. It's the conductor of this whole pack - it reads your source image, works out where you want to end up, and hands every other node its numbers.

It ships in GeekatplayStudio/ComfyUI-UltimateUpsacaler, a stack that wraps the classic ComfyUI tiled-generative-upscale pattern - neural upscale via Ultimate SD Upscale, then a tiled denoise pass with ControlNet Tile - into helper nodes plus ready-to-import SDXL and FLUX workflows. "Ultimate Upsacaler" is not a promise to beat SUPIR or SeedVR2; it's tiled diffusion made low-guess. (And yes, the repo spells it "Upsacaler" - typo and all, that's the one to search.)

How it works

The node reads the image tensor's dimensions and resolves a target size from your sizing_mode:

  • target_long_edge - scale so the long edge hits your value (default 4096)
  • magnification - multiply the source by a factor (default 4x)
  • output_size - exact output_width/output_height

The result snaps to snap_to_multiple (default 64 - SDXL latents tile in multiples of 8, and 64 keeps everything clean). Then come the heuristics, which are the part worth understanding. It picks a tile size from model_family + vram_gb: SDXL gets 1024px tiles on 24GB+, 768 on 16–24GB, 512 below; FLUX.1-dev gets 768 on 24GB+, else 512; FLUX.1-schnell 768 on 16GB+, else 512. If the target exceeds 8192 on a ≤16GB card it clamps to 512, and anything at 6x+ upscale also backs down. Denoise comes from preserve_composition - 0.24 for SDXL, 0.18 for dev, 0.14 for schnell with it on, looser with it off - then denoise_adjust nudges it (clamped to 0–1). tiled_decode turns on when the longest side is 2048+ or VRAM is ≤12GB. Everything lands in a JSON profile plus discrete outputs.

The inputs that actually matter

  • model_family - SDXL, FLUX.1-dev, or FLUX.1-schnell. Be honest here; it changes tile and denoise defaults.
  • vram_gb - the single most impactful knob. Overstate it and you get 1024px tiles that OOM mid-sample; understate it and you're on 512px tiles with more seams than you needed.
  • preserve_composition - keep it true unless you want the pass free to move things. Denoise above roughly 0.5 is where composition genuinely starts shifting, and the defaults sit well under that.
  • denoise_adjust - a ±0.3 fine-tune for when seams show up or detail comes out timid.

Outputs and where they wire

tile_width/tile_height and tiles_x/tiles_y feed the tiler and the Tile Preview; denoise feeds the KSampler in the tiled pass; tiled_decode feeds the VAE decode; target_width/target_height feed HyperTile Resize Image. profile is the full JSON of what it decided, and preview_text is a one-line human summary.

Install

The usual path: ComfyUI Manager → search "ComfyUI-UltimateUpsacaler" (or just "Geekatplay") → install, or:

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

Then restart. Note the pack's own installer (install.py / install.bat) goes further: it clones UltimateSDUpscale and TTP Toolset and downloads 4x-UltraSharp, RealESRGAN_x4plus, the 6.9GB SDXL base checkpoint and the 2.5GB SDXL Tile ControlNet - so expect a big first download even though this node itself is pure math and needs nothing beyond numpy/Pillow.

Common issues

  • Lying about VRAM. This is the trap. Tell it 24GB on a 12GB card and the 1024px tiles will eat your sample. Set vram_gb to what you have, not what you wish you had.
  • Asking for 16000 on a 12GB card. The planner will happily plan it; it won't save you from the geometry. The README's own advice: keep tiles at 512 on 12–16GB.
  • Treating denoise_adjust as free. At +0.3 on the SDXL default you're at 0.54, past the composition point.

One nice touch: the node's change-detection key is the image's own pixel sum, so loading a new source re-plans instead of serving a stale cached plan. You'll only notice that when it works - which is the point.

CategoryGeekatplay HyperTile/Upscale

Inputs (11)

NameTypeDefaultDescription
imageIMAGE
sizing_modeCOMBO3 options: target_long_edge, magnification, output_size
target_long_edgeINT40961024–16000
magnificationFLOAT4.01–16
output_widthINT409664–32768
output_heightINT409664–32768
snap_to_multipleINT641–512
model_familyCOMBO3 options: SDXL, FLUX.1-dev, FLUX.1-schnell
vram_gbINT126–80
preserve_compositionBOOLEANtrue
denoise_adjustFLOAT0.00-0.3–0.3

Outputs (14)

NameTypeDescription
tile_widthINT
tile_heightINT
batch_sizeINT
denoiseFLOAT
tiled_decodeBOOLEAN
profileSTRING
source_widthINT
source_heightINT
target_widthINT
target_heightINT
upscale_ratioFLOAT
tiles_xINT
tiles_yINT
preview_textSTRING