HiResFix Tiled (Nukun)
One node for the whole tiled HiResFix pipeline, tuned for Pony v7
- image
- upscale_model
- model
- positive
- negative
- vae
- image
- upscaled_image
- seed
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.
Inputs (26)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| upscale_model | UPSCALE_MODEL | — | |
| model | MODEL | — | |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| vae | VAE | — | |
| seed | INT | 00–18446744073709550000 | Seed used by the tiled img2img refinement. |
| steps | INT | 201–10000 | — |
| cfg | FLOAT | 3.50–100 | — |
| sampler_name | COMBO | euler | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 |
| scheduler | COMBO | simple | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 |
| denoise | FLOAT | 0.400–1 | — |
| tile_width | INT | 102464–8192 | — |
| tile_height | INT | 102464–8192 | — |
| mask_blur | INT | 640–64 | — |
| tile_padding | INT | 1920–8192 | — |
| use_reference_latent | BOOLEAN | true | Encode the upscaled image and attach it to positive conditioning as a reference latent. |
| use_differential_diffusion | BOOLEAN | true | Patch the model with Differential Diffusion before tiled refinement. |
| differential_strength | FLOAT | 0.700–1 | — |
| tiled_decode | BOOLEAN | true | — |
| batch_size | INT | 11–4096 | — |
| noise_device | COMBO | auto | auto uses CPU for ComfyUI-core-like reproducibility. cuda falls back to CPU when unavailable. |
| noise_type | COMBO | gaussian | Initial tile noise distribution. gaussian with auto device and strength 1.0 matches ComfyUI core noise. |
| noise_strength | FLOAT | 1.000–5 | Multiplier applied to generated tile noise. |
| noise_profile | COMBO | gaussian | Universal tile noise profile. Leave as gaussian to preserve legacy noise_type behavior. |
| detail_bias | FLOAT | 0.350–1 | Only affects composite tile noise profiles such as illustrious_* and pony_v7_*. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| upscaled_image | IMAGE | — |
| seed | INT | — |