Nodes/radiance/Upscale Tiler
ComfyUI Node

Upscale Tiler

The tiling engine, plus the fix for upscaler colour drift

By FXTD-Studios·Created 8 months ago·Updated about 18 hours ago· 246
Upscale Tiler
  • images
  • upscale_model
  • source
  • reference
  • image_a
  • image_b
  • info
◄operationTile►
◄scale4×►
◄tile_size512►
◄overlap128►
◄blend_modelaplacian_pyramid►
◄model_tiertier1_fast (Real-ESRGAN — GAN, ms/frame)►
◄cf_strength1.00►
◄n_bins512►

Two jobs in one node, and the second one is the reason to install it.

Tile is the memory-safe upscale path: chop the image into overlapping patches, upscale each one, blend them back together so you can't see the seams. ColourFix is a histogram match that removes the colour drift an upscaler leaves behind. Both are things you'd otherwise build by hand out of tile, paste and colour-match nodes, badly.

Tile mode

operation: Tile, images in, image_a out. Your controls: scale (2×, 4×, or 8× as two cascaded 4× passes), tile_size (default 512, input pixels), overlap (default 128), and blend_mode.

On the blend: laplacian_pyramid is the default and best quality - a 4-level pyramid blends each frequency band separately, so coarse structure blends over a long distance while fine detail blends tightly, which is why it doesn't produce the soft halo you get from naive feathering. gaussian_feather is the fast one; linear is the simple one. The module's own documentation adds the rule of thumb: overlap should be ≥20% of tile_size, which is exactly what a 128/512 default pairing satisfies. Shrink the overlap to save time and you'll find out why.

model_tier selects the built-in backend (Real-ESRGAN, HAT-L, SwinIR-L, SD x4, SeedVR2), or connect your own model to upscale_model - the tooltip is explicit that any ComfyUI UPSCALE_MODEL works and its native scale should match scale.

ColourFix mode

This is the sleeper feature. Every GAN upscaler drifts colour slightly - a touch warmer, a touch more contrast - and on a sequence that drift compounds until the shot no longer matches its neighbours. The fix has always been a histogram match back to the source; here it's one mode with four controls.

Wire the upscaled image into source and the original pre-upscale image into reference, set operation: ColourFix, then dial cf_strength (default 1, "full CDF match") and n_bins (default 512, the histogram resolution). Both images are optional in the schema - which means you get a confusing no-op if you leave them unconnected, not an error. Connect both.

Outputs and the one real trap

image_a, image_b and info. In Tile mode the pair gives you the processed result; in ColourFix mode the matched one. Read info - it reports what ran.

The trap is in the input list: Tile mode's output is clamped to 0–1. So if you're upscaling a scene-linear HDR plate, this is the wrong node in that mode - you'll lose everything above white. The pack's Upscale Image has proper HDR handling (hdr_mode, color_encoding) for that job, and the pack's Upscale 32-bit (RadianceProUpscale) for the plain-resize case. Upscale Tiler is the LDR tiling workhorse and the colour-drift fixer.

Install

  1. ComfyUI Manager → search Radiance → Install → restart → refresh the browser.
  2. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/fxtd-studios/radiance.git
cd radiance
python -m pip install -r requirements.txt

Windows portable: use python_embeded\python.exe for that line.

The built-in backends fetch their weights on first use - Real-ESRGAN and SwinIR-L download from their original releases, SHA-256 checked. HAT-L is the exception: it lives on Google Drive with no pinned direct download, so it's a manual install, and until you do it Tier 2 quietly runs SwinIR-L at 4x and Real-ESRGAN at 2x. SeedVR2 (a Tier 3 option elsewhere and available here too) needs the separate ComfyUI-SeedVR2_VideoUpscaler pack for its weights. RADIANCE_ALLOW_DOWNLOADS=0 or RADIANCE_UPSCALE_OFFLINE=1 stops all of it.

Practical notes

Tiling is a VRAM dial, so tune it against your card rather than a number from a forum: 512 with 128 overlap is a sane start, 256 with 64 for a small card, 1024 with 256 when you have headroom and want the model to see more context per tile.

One subtlety specific to the pack: the confidence-style outputs elsewhere in the Upscale family (the ones showing tile weights) are geometric - they tell you where blending happened, not how much the model invented. Same spirit here: blend_mode changes how seamless the result looks, not how true it is. If your upscaled detail is wrong, a better blend won't fix it; a different tier will.

CategoryFXTD STUDIOS/Radiance/Upscale

Inputs (12)

NameTypeDefaultDescription
operationCOMBOTileTile: tiled upscale of images (output clamped to 0-1). ColourFix: histogram-match source to reference to remove upscaler colour drift.
imagesoptIMAGEInput image batch (B,H,W,C) float32.
scaleoptCOMBO4×Upscale factor. 8× uses two cascaded 4× passes.
tile_sizeoptINT512128–2048Tile side in input pixels. Smaller = less VRAM.
overlapoptINT12832–512Tile overlap in input pixels. ≥20% of tile_size recommended.
blend_modeoptCOMBOlaplacian_pyramidlaplacian_pyramid: best quality. gaussian_feather: fast. linear: simple.
upscale_modeloptUPSCALE_MODELAny ComfyUI UPSCALE_MODEL; its native scale should match scale. Leave empty to use the built-in model chosen by model_tier.
model_tieroptCOMBOtier1_fast (Real-ESRGAN — GAN, ms/frame)Built-in model tier when no upscale_model is connected.
sourceoptIMAGEUpscaled image with colour drift (ColourFix mode).
referenceoptIMAGEOriginal pre-upscale image — colour reference (ColourFix mode).
cf_strengthoptFLOAT1.000–1ColourFix strength: 0 = off, 1 = full CDF match.
n_binsoptINT51264–2048Histogram resolution (ColourFix mode).

Outputs (3)

NameTypeDescription
image_aIMAGE—
image_bIMAGE—
infoSTRING—