Icy LatentComposite
Cut and paste, but in latent space
- samples_to
- samples_from
- LATENT
IcyLatentComposite is the ComfyUI-IcyHider wrapper of core LatentComposite - same node, renamed class so the hiding extension can cover it. As with every node in this pack, "Icy" is packaging, not behavior.
What it does: it pastes one latent onto another. samples_to is the base canvas, samples_from is the patch being placed on top of it, at position (x, y), and feather softens the patch's edges so it blends rather than punching a hard rectangle. Output is a single LATENT - the composite.
Why composite in latent space
This is the classic regional-composition move. Instead of blending two whole images (that's LatentBlend), you generate a subject on its own canvas, then paste its latent onto the main scene's latent at a specific spot. Because the merge happens before final denoising, the two regions can interact during sampling - the model gets a chance to harmonize lighting and edges instead of you shipping a visible seam. It's a lower-level cousin of regional conditioning: there, prompts are confined to boxes; here, actual sampled content is placed into the canvas.
The inputs and the one real gotcha
- samples_to (LATENT) - the base.
- samples_from (LATENT) - the pasted content.
- x / y (INT, 0–16384, step 8) - paste position.
- feather (INT, 0–16384, step 8) - edge softness, in the same units.
Here's the gotcha: these values are in latent-space units, and latents run at one-eighth your image resolution. That's why every field steps by 8 - the schema is telling you the minimum meaningful increment. If your final image is 1024×1024, the latent is 128×128, and placing at x: 256 means "256 latent pixels in," i.e. 2048 image pixels in - off canvas entirely. Beginners who treat these as pixel coordinates paste things into the void or jam everything into a corner. Divide your intended pixel offset by 8 (or just think in latent units) and it all behaves.
When you'd use it
- Regional compositing of separately generated subjects into one scene.
- Object placement where you want full control over position and edge softness, then a final sampling pass to unify it.
- Outpainting-style assembly by pasting a generated patch onto a blank/partial canvas.
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/icekiub-ai/ComfyUI-IcyHider
Restart, or use ComfyUI Manager (search "IcyHider"). No pip dependencies, no models.
Common issues
- Missing node in shared workflows - install the pack or swap in core
LatentComposite. - "Nothing appears where I put it." Check your units - see the x/y/8 explanation above. If you typed pixel-style numbers, you're way off-canvas.
- Hard visible seam.
featheris 0. Give it some padding (in multiples of 8) so the patch blends, and consider a final low-denoise pass over the composite so the sampler reconciles the regions. - Size mismatch. samples_from has to fit within samples_to at the given position; a patch larger than the canvas will error. Downscale the patch first.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| samples_to | LATENT | — | |
| samples_from | LATENT | — | |
| x | INT | 00–16384 | — |
| y | INT | 00–16384 | — |
| feather | INT | 00–16384 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| LATENT | LATENT | — |