Icy SetLatentNoiseMask
Setting a Noise Mask
- samples
- mask
- LATENT
SetLatentNoiseMask is the node that actually turns "masked inpainting" into "masked inpainting." You've got a latent and you've got a mask; this node attaches the mask to the latent so the sampler knows where to denoise and where to leave the pixels alone. Without it, your carefully drawn mask is just a black-and-white picture doing nothing. This is the wiring, and it's the piece beginners miss more than any other when they try inpainting for the first time.
The "Icy" prefix is the pack's privacy coat, not a different node. IcyHider subclasses core ComfyUI nodes at startup - same inputs, outputs, and behavior, filed under the IcyHider Comfy Core category - and its JavaScript hides previews until hover. This is core SetLatentNoiseMask with a cover on.
The two inputs
From the schema, both simple:
samples- the LATENT to attach the mask to. This should be the VAE-encoded latent of your base image.mask- the MASK tensor. Grayscale: white regions get denoised (regenerated), black regions stay put. Anything in between is partial influence.
One output: LATENT, the same latent carrying the noise mask, ready for the KSampler.
The standard inpainting graph
It looks like this, and it's worth committing to memory:
- LoadImage (your base) → VAEDecode is wrong here; instead it's VAE Encode to get the latent.
- LoadImageMask (your mask PNG) → this node.
- KSampler, with
denoiseset to something like 0.7–1.0 if you want full replacement inside the mask, lower if you want the region to keep some of its original content. - VAEDecode → output.
The KB's inpainting essay adds the two things that make or break it: keep the unmasked pixels exactly the original (that's the whole point of mask-based inpainting - bit-identical untouched regions), and watch your denoise - too high and the masked area drifts from what the mask implies; too low and the edit is invisible. Soft gray mask edges give soft blends; hard black/white edges give hard cuts.
Install and gotchas
Frontend-only pack, no dependencies:
# ComfyUI Manager: search "IcyHider", Install, restart
# or:
cd ComfyUI/custom_nodes
git clone https://github.com/icekiub-ai/ComfyUI-IcyHider.git
# restart ComfyUI
Pack-wide: the cover is DOM-based, so the newer Nodes 2.0 canvas frontend may not hide previews, and the hiding is screen-only. Two node-specific gotchas to keep in mind: if your mask does nothing, check its values (a mask full of gray or zeros is a mask that does nothing), and make sure the mask's dimensions match the latent's - a size mismatch silently misaligns your inpainting region.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| samples | LATENT | — | |
| mask | MASK | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| LATENT | LATENT | — |