Icy LatentRotate
90 Degrees of Freedom
- samples
- LATENT
IcyLatentRotate turns your latent 90, 180, or 270 degrees, before the sampler ever runs. That's the whole feature list, and honestly that's fine - rotation in the graph is a "when you need it, you need it" kind of tool, and most people would rather have it and not use it than hunt for a workaround at 1 a.m.
The "Icy" prefix is the pack, not a different rotate: IcyHider subclasses ComfyUI's core nodes at startup, keeping identical inputs, outputs, and behavior, and just files them under the IcyHider Comfy Core category so the extension's JavaScript can cover their previews until you hover. So this is core LatentRotate with a privacy coat. Everything that's true of LatentRotate is true here.
Inputs and output
From the schema, two inputs:
samples- the LATENT to rotate.rotation- a four-way enum:none,90 degrees,180 degrees,270 degrees.
One LATENT out, into whatever's next - another latent op, a sampler, a VAEDecode.
Why rotate before sampling?
Because pre-denoise rotation is generation, post-decode rotation is editing. If you rotate the latent and then sample, the model draws the composition in the rotated orientation - which matters more than you'd think, since diffusion models aren't orientation-symmetric. Text, faces, and lighting all have preferred directions, and a model can render the same prompt differently after a 180° flip. If you're rotating because the output is sideways (a portrait rendered as a landscape, say), the straightforward fix is to set the latent dimensions and rotate accordingly rather than re-roll.
Where it actually shines: fixing images that come out sideways or upside down without re-generating, prepping an aspect-ratio experiment, and the old data-augmentation trick of rotating your input latents to see if the model's composition improves. It's also useful in batch pipelines where you generate four variants at 90° intervals and want to compare them.
The pragmatic alternative is rotating pixels after VAEDecode - an Image Rotate node. That's cheaper to reason about, and for a simple "my output is sideways" it's usually the right call. LatentRotate is for when you want the model itself to commit to the rotated composition.
Install and gotchas
Same frontend-only pack, no dependencies, no model files:
# 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 caveats apply: the cover is applied to DOM elements, so on the newer Nodes 2.0 canvas frontend it may silently not engage, and the hiding is on-screen only - SaveImage still writes files that anyone with folder access can see. Also, rotation is lossless in 90° steps, so if you chain a rotate before sampling and a counter-rotate after decoding, you've moved nothing and changed everything; double-check your graph.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| samples | LATENT | — | |
| rotation | COMBO | 4 options: none, 90 degrees, 180 degrees, 270 degrees |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| LATENT | LATENT | — |