Icy LatentUpscaleBy
Upscaling before the pixels exist — LatentUpscaleBy, the honest case for it
- samples
- LATENT
IcyLatentUpscaleBy is the IcyHider clone of LatentUpscaleBy, and before anything else, the honest framing: latent upscaling is the intermediate step in a hi-res fix, not a real upscaler. It enlarges the latent - the compressed representation the sampler works in - before it ever becomes pixels. Done right, it's how you get a higher-resolution second pass out of a model that can't sample big natively. Done naively, it's how you get mush.
What it does
Three inputs:
samples- aLATENTfrom your sampler's output (or from a VAE encode).upscale_method- the interpolation:nearest-exact,bilinear,area,bicubic,bislerp.bislerpis the ComfyUI-native method for latents and the sensible default;bicubicis a common alternative. The others are there for special cases.scale_by- the factor, default 1.5, range 0.01–8.0.
It outputs a LATENT at the new resolution. That's it - the node does no detail creation, only interpolation, which is why the result alone always looks soft.
The workflow it belongs to
The classic hi-res fix: generate at native res → LatentUpscaleBy (1.5×) → feed the bigger latent plus a lower denoise into a second sampler pass. The second pass re-adds the detail the interpolation smeared. This is the correct, cheap way to get a 768→1152 style bump without tiling, and it's what upscaling guides mean when they say "use a latent upscale as the intermediate step, then img2img adds detail."
Where people get burned: scaling by 2× and expecting the model to fill the gap. At some point interpolation alone can't invent that much new information, and the image turns to plastic. The fix is either a smaller factor or - for real enlargement - a proper upscaler: tiled diffusion with a tile ControlNet if you want to keep the model's hand in it, or a dedicated upscaling pass. Latent upscaling is the on-ramp, not the destination.
The "Icy" caveat
This node outputs LATENT, and while latents can be previewed, this node has no image preview for IcyHider's JavaScript to hide - so the wrapper is, once again, packaging. The exact same code runs as ComfyUI's LatentUpscaleBy. Use whichever name fits your graph.
Install
Same pack install as all the Icy nodes: ComfyUI Manager → search "IcyHider" → install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/icekiub-ai/ComfyUI-IcyHider.git
Restart ComfyUI. Zero Python dependencies, no model downloads. It appears under IcyHider Comfy Core. If your second-pass output looks worse than the first pass, don't debug the node - cut the scale factor and raise the detail back into the second sampler.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| samples | LATENT | — | |
| upscale_method | COMBO | 5 options: nearest-exact, bilinear, area, bicubic, bislerp | |
| scale_by | FLOAT | 1.500.01–8 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| LATENT | LATENT | — |