Image Swirl Noise
Liquify your image with vortex warps, not pixel static
- image
- mask
- IMAGE
Don't let the name fool you: Image Swirl Noise doesn't add a speck of noise. It's a spatial warp. The node spawns a handful of vortex centers and physically swirls the pixels around each one, like a liquify tool got loose on your image. That's a fundamentally different category of effect from the rest of the noise nodes in the pack, and it's worth knowing before you wire it up expecting grain.
So what's it for? Melting, spinning, folding. One gentle vortex in the middle of a portrait gives you that dreamy "face dissolving into a spiral" look. A few weak vortices spread across a landscape reads like heat-haze or a subtle lens warp. Crank strength and everything starts looking like a Van Gogh painting left in the rain. It's the stylization node of the set, not the texture node.
How it works
Each vortex is a point in the image around which pixels rotate by strength radians (the default 0.75 is about 43° of twist at the center). The rotation falls off as you move away from the center, and radius (normalized, so 0.5 means half the image) controls how far that influence reaches. center_spread lets the vortex origin drift off the true center - the default 0.25 keeps vortices near-ish the middle; push it to 1.0 and they scatter toward the edges. direction_bias nudges all vortices to spin clockwise or counterclockwise; at 0 each picks its own direction from the seed.
Three controls shape the effect in practice:
- vortices - how many independent centers to spawn (1–16). One is a clean swirl; several overlap into turbulent mess, which is sometimes exactly what you want.
- strength - peak rotation in radians. This is your main intensity dial.
- mix - blend between the original image (0) and the fully swirled result (1). The one control beginners skip and then wonder why the effect is too strong. 0.3–0.5 with a high strength gives a subtle organic warp instead of a tornado.
channel_mode global swirls all channels with the same grid, keeping colors aligned; per_channel gives each channel its own grid and produces chromatic-aberration-style color fringing. channel_fraction picks a random subset of channels to affect per sample, which is a lighter-weight way to get that same glitchy fringe without full per-channel grids.
The optional mask input localizes the swirl to masked areas - great for swirling only a sky or only a face. The output is a single IMAGE, ready for preview, save, or further processing.
Installing it
Part of the Skoogeer-Noise pack. In ComfyUI Manager, search "Skoogeer-Noise", install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/ttulttul/Skoogeer-Noise
# restart ComfyUI
Only standard dependencies (torch, numpy, einops, pyyaml), no model files, no downloads.
Gotchas
- It looks like an acid trip and you wanted subtle. Your
strengthandradiusare both high, andmixis still at 1. Dropmixfirst - it's the least destructive way to tame the effect. - "Nothing happened."
strengthof 0 ormixof 0 short-circuits the node and passes the image through untouched. Check those two before blaming the seed. - Fringing you didn't ask for. You're in
per_channelmode. Switch toglobalunless you're chasing the aberration look. - There's a
LatentSwirlNoisesibling for latent-space warping if you're working before the VAE - same idea, applied to the compressed representation.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | Image to deform with vortex-style warps. | |
| seed | INT | 00–18446744073709550000 | Seed for vortex placement and direction randomness. |
| vortices | INT | 11–16 | Number of independent vortex centres to spawn per image. |
| channel_mode | COMBO | global | Use a shared swirl grid for all channels or generate unique grids per affected channel. |
| channel_fraction | FLOAT | 1.000–1 | Fraction of channels to swirl. The subset is randomly selected per sample. |
| strength | FLOAT | 0.750–6.28 | Peak swirl rotation in radians near the vortex center. |
| radius | FLOAT | 0.500.05–2 | Normalized radius controlling how far the vortex influence extends. |
| center_spread | FLOAT | 0.250–1 | How far the vortex origin drifts from the image center. |
| direction_bias | FLOAT | 0.00-1–1 | Bias toward counter-clockwise (1) or clockwise (-1) swirl. |
| mix | FLOAT | 1.000–1 | Blend between original image (0) and fully swirled result (1). |
| maskopt | MASK | Optional mask (often image-sized) to limit the swirl to masked areas. The mask is resized to the image resolution (bicubic when downscaling). |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |