Nodes/Skoogeer-Noise/Latent Swirl Noise
ComfyUI Node

Latent Swirl Noise

A vortex warp that melts your latent around, well, vortices

By ttulttul·Created 9 months ago·Updated 3 months ago· 14
Latent Swirl Noise
  • latent
  • mask
  • LATENT
seed0
vortices1
channel_modeglobal
channel_fraction1.00
strength0.75
radius0.50
center_spread0.25
direction_bias0.00
mix1.00

The name says "noise" but this node is a liar in the best way: it's a spatial deformation, not additive noise. Latent Swirl Noise picks one or more vortex centers, places them in your latent, and rotates nearby pixels around them with a falloff. What you get is a creamy, twisting melt - the "drawn by a distracted barista" look. No static is involved; the pixels themselves get pushed in circles.

This is the perturbation you reach for when you want movement rather than texture: hair blowing into a spiral, water being stirred, fabric twisting, or the classic surreal melting-clock vibe. Because it deforms instead of adding, it composes well with the channel transforms in this pack - a mild swirl plus a channel rotation is a great one-two for "dreamlike but not broken." It's also deterministic per seed, which makes it a nice exploration tool: dial the seed, watch the vortex drift.

The inputs that matter

  • vortices (default 1) - how many independent vortex centers spawn per latent. One gives a focused twist; 3–4 gives a storm of conflicting rotations.
  • strength (0.75) - peak swirl rotation in radians near the vortex center. 0.75 is a solid visible twist; this maxes at 6.28 (a full 360°).
  • radius (0.5) - normalized radius of influence. Higher = the vortex's pull reaches further; lower = a tight, violent core.
  • center_spread (0.25) - how far the vortex origin drifts from the latent center. Crank it and the whirlpool stops being center-screen and starts wandering.
  • direction_bias - 1 biases counter-clockwise, -1 biases clockwise, 0 is ambivalent. Set it and the whole frame spins the same way.
  • channel_mode - global shares one swirl grid across all channels (clean twist), per_channel gives each channel its own grid (glitchy, chromatic-breakup swirls).
  • channel_fraction - the fraction of channels that actually get swirled; the subset is picked randomly per sample. Drop it below 1 to swirl only part of the feature space.

Plus seed, mix (0 = original latent, 1 = fully swirled), and an optional mask. Single LATENT output.

Installing and using it

Part of Skoogeer-Noise. Install via ComfyUI Manager (search "Skoogeer-Noise") or:

cd ComfyUI/custom_nodes
git clone https://github.com/ttulttul/Skoogeer-Noise

Restart ComfyUI. No model downloads; deps are torch, numpy, einops, pyyaml - already in ComfyUI.

Common issues

Two things catch people. First: because it's a deformation with no strength-relative-to-std calibration, the effect is resolution-sensitive - a radius that's gentle at 1024×1024 is a tiny violent core at smaller latent sizes, so re-tune radius when you change resolution. Second: with vortices at 1 and the default center_spread, the swirl is dead-center, which reads as a lens-bulge. Most people prefer center_spread ~0.5–0.7 so the vortex lands off-center and feels like motion rather than a filter. If your swirl is coming out as noise-like breakup instead of a smooth twist, you've got channel_mode on per_channel and it's fighting you - switch to global. On Flux.2, wrap with Unpatchify Flux.2 Latent / Patchify Flux.2 Latent as usual.

CategoryLatent/Noise

Inputs (11)

NameTypeDefaultDescription
latentLATENTLatent to deform with vortex-style warps.
seedINT00–18446744073709550000Seed for vortex placement and direction randomness.
vorticesINT11–16Number of independent vortex centres to spawn per latent.
channel_modeCOMBOglobalUse a shared swirl grid for all channels or generate unique grids per affected channel.
channel_fractionFLOAT1.000–1Fraction of channels to swirl. The subset is randomly selected per sample.
strengthFLOAT0.750–6.28Peak swirl rotation in radians near the vortex center.
radiusFLOAT0.500.05–2Normalized radius controlling how far the vortex influence extends.
center_spreadFLOAT0.250–1How far the vortex origin drifts from the latent center.
direction_biasFLOAT0.00-1–1Bias toward counter-clockwise (1) or clockwise (-1) swirl.
mixFLOAT1.000–1Blend between original latent (0) and fully swirled result (1).
maskoptMASKOptional mask (often image-sized) to limit the swirl to masked areas. The mask is resized to latent resolution (bicubic when downscaling).

Outputs (1)

NameTypeDescription
LATENTLATENT