Nodes/Nukun_ComfyUI_Nodes/HiResFix Tiled (Nukun)
ComfyUI Node

HiResFix Tiled (Nukun)

One node for the whole tiled HiResFix pipeline, tuned for Pony v7

By OnekoSL·Created 3 months ago·Updated 11 days ago· 1
HiResFix Tiled (Nukun)
  • image
  • upscale_model
  • model
  • positive
  • negative
  • vae
  • image
  • upscaled_image
  • seed
seed0
steps20
cfg3.5
sampler_nameeuler
schedulersimple
denoise0.40
tile_width1024
tile_height1024
mask_blur64
tile_padding192
use_reference_latenttrue
use_differential_diffusiontrue
differential_strength0.70
tiled_decodetrue
batch_size1
noise_deviceauto
noise_typegaussian
noise_strength1.00
noise_profilegaussian
detail_bias0.35

HiResFix - upscale the base image, then run a low-denoise img2img pass to add detail back - is the standard way to get crisp large images out of a model that can't render at target resolution directly. On big images it usually has to be tiled to fit in VRAM, which means a wall of nodes: upscaler, reference latent, differential diffusion, and the Ultimate SD Upscale rig with its tile settings. NukunHiResFixTiled collapses all of it into one node whose defaults mirror a real, working Pony v7 tiled workflow.

It's the all-in-one integration node from the Nukun pack. If you've been assembling tiled HiResFix by hand, this is the "someone already tuned it" shortcut.

What it does internally

The pipeline: take your image, upscale it with an upscale_model via ComfyUI's ImageUpscaleWithModel (using the model's native scale), then refine the upscaled result with tiled img2img through Ultimate SD Upscale. On top of that it wires in two optional quality helpers that the author's reference workflow uses:

  • use_reference_latent (default on) - encodes the upscaled image and attaches it to the positive conditioning as a reference latent, which helps the detail pass stay faithful to the upscaled structure.
  • use_differential_diffusion (default on, strength 0.7) - patches the model so different image regions denoise at different rates, which keeps flat areas flat while detail areas get worked. tiled_decode (on) tiles the VAE decode so you don't blow VRAM on the final decode step.

The inputs that matter

You feed it image, upscale_model, model, positive, negative, and vae - a full sampler's worth of inputs, plus seed. Then the sampler controls: steps (20), cfg (3.5), sampler_name, scheduler, denoise (0.4 - the classic detail-pass value). Tile controls: tile_width/tile_height (1024), tile_padding (192), mask_blur (64). And the Nukun noise integration: noise_profile, noise_strength, detail_bias, with a legacy noise_type widget kept for compatibility (if noise_profile stays gaussian, old noise_type values like blue or violet are still honored).

Outputs: image (final refined), upscaled_image (the raw upscale before refinement - genuinely useful for A/B), and seed.

Noise profiles worth trying

The README suggests beyond the default gaussian + auto + 1.0: pony_v7_stage2_violet, illustrious_texture, pyramid_mix, highres_pyramid, pink, or perlin for more textured HiResFix redraws. If your detail pass is producing glassy-smooth results, one of those tile-noise profiles is a cheap experiment before you start changing denoise.

Installing it - needs Ultimate SD Upscale

This node requires the Ultimate SD Upscale package, which is not bundled:

cd ComfyUI/custom_nodes
git clone https://github.com/OnekoSL/Nukun_ComfyUI_Nodes.git
cd ComfyUI/custom_nodes
git clone https://github.com/ssitu/ComfyUI_UltimateSDUpscale.git

Restart ComfyUI (or use ComfyUI Manager for both - "Nukun" and "Ultimate SD Upscale"). The rest of the pack runs without it; only this node needs the companion. You'll also want an upscale model (a 4x ESRGAN-class model like 4x-UltraSharp) loaded into upscale_model.

The honest caveats

First, the one input most people forget: upscale_model is a required socket, and it's easy to assume the node upscales on its own - it doesn't; you pick the model. Second, the "no upscale" mode inside Ultimate SD Upscale (this node runs it with upscaling off, because the model upscale already happened) means the tile pass is pure detail-refinement - if your tiles show seams, that's the mask_blur/tile_padding balance, and the README's defaults are a sane starting point. Third, this is tuned for Pony v7 but works on SDXL-family models generally; on other architectures, lower cfg and denoise rather than assuming the defaults carry over.

CategoryNukun/Sampling

Inputs (26)

NameTypeDefaultDescription
imageIMAGE
upscale_modelUPSCALE_MODEL
modelMODEL
positiveCONDITIONING
negativeCONDITIONING
vaeVAE
seedINT00–18446744073709550000Seed used by the tiled img2img refinement.
stepsINT201–10000
cfgFLOAT3.50–100
sampler_nameCOMBOeuler44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBOsimple9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
denoiseFLOAT0.400–1
tile_widthINT102464–8192
tile_heightINT102464–8192
mask_blurINT640–64
tile_paddingINT1920–8192
use_reference_latentBOOLEANtrueEncode the upscaled image and attach it to positive conditioning as a reference latent.
use_differential_diffusionBOOLEANtruePatch the model with Differential Diffusion before tiled refinement.
differential_strengthFLOAT0.700–1
tiled_decodeBOOLEANtrue
batch_sizeINT11–4096
noise_deviceCOMBOautoauto uses CPU for ComfyUI-core-like reproducibility. cuda falls back to CPU when unavailable.
noise_typeCOMBOgaussianInitial tile noise distribution. gaussian with auto device and strength 1.0 matches ComfyUI core noise.
noise_strengthFLOAT1.000–5Multiplier applied to generated tile noise.
noise_profileCOMBOgaussianUniversal tile noise profile. Leave as gaussian to preserve legacy noise_type behavior.
detail_biasFLOAT0.350–1Only affects composite tile noise profiles such as illustrious_* and pony_v7_*.

Outputs (3)

NameTypeDescription
imageIMAGE
upscaled_imageIMAGE
seedINT