〽️ Image Ops Noise
Procedural noise that animates — Perlin plates, animated textures, and seamless tiles
- low_color
- high_color
- image
- mask
ImageOps Noise is a procedural texture generator that does a lot more than sprinkle random pixels. Perlin, value, and white noise; fractal combinations like fbm, turbulence, and ridged; seamless tiling for repeating textures; and a third axis that lets you animate the noise over a frame sequence like a 3D noise volume moving through Z. It's from the ComfyUI-Majoor-ImageOps pack, and if you've ever wanted displacement maps, cloud plates, or animated textures without downloading anything, this is the node.
The controls that matter
basis- the noise flavor.perlinis the smooth, organic default (clouds, terrain, displacement).valueis chunkier and cheaper.whiteis pure static - use it for grain-style randomness.fractal_mode- how layers of the noise stack:fbm(fractal Brownian motion, the standard organic accumulation),turbulence(the "swirly, aggressive" variant),ridged(sharp mountain-ridge structure - great for lightning or craggy displacement), ornone.scale(1–4096) - the feature size; bigger scale = bigger blobs.octaves(1–12) andgain(0–1) shape the fractal detail - more octaves = finer detail, lower gain = softer contrast between layers.offset_zandanimation_speed- the magic for motion. Offset Z moves into the 3D noise field; animation_speed adds a Z offset per frame, so aframe_lengthof 48 with animation_speed 1.0 gives you 48 frames of smoothly evolving noise. Set it to 0 and you get a still.seamless- wraps the X/Y lattice so the texture tiles without a seam. The thing to enable for repeating textures or loop-friendly displacement maps.seed- determinism, with the pack's 🎲 button to randomize.low_color/high_color- the ramp colors the output is remapped through. Default white→black; set them to a warm/cool pair and the node doubles as a procedural color plate.contrastandinvert- tonal shaping on the way out.
Outputs are image and mask - the mask is the grayscale noise as a matte, ready to drive a blend or displacement without conversion.
How it behaves
Despite the "procedural" label it runs on the GPU when available (auto/CUDA with a CPU fallback), so it's fast, and generation transfers frames incrementally to keep VRAM sane on big batches. Deterministic per seed - same seed, same plate, every run, which is what you want when a displacement map has to match a workflow you're iterating on.
Where it fits
The pairing that matters: Noise → ImageOps Distort. Generate a Perlin plate, wire it into Distort's displacement input, and you've got organic animated warping - water, heat haze, flag fabric - without any external assets. Noise plates also feed ImageOps Mask Convert for soft masks, and a seamless noise texture with animation_speed is a fast way to generate animated background plates for video.
Install and gotchas
ComfyUI Manager (search "ComfyUI-Majoor-ImageOps"), or:
cd ComfyUI/custom_nodes
git clone https://github.com/MajoorWaldi/ComfyUI-Majoor-ImageOps
Restart and hard-refresh the browser (Ctrl+F5 / Cmd+Shift+R). No models, no extra dependencies.
Two things trip people up. First, scale and octaves fight each other: bumping octaves adds fine detail on top of whatever scale you chose, so if the result looks "too busy," lower the octaves before you shrink the scale. Second, animation only happens if you ask for multiple frames - frame_length defaults to 1, so a still with animation_speed set does nothing visible. Set frame_length and watch the preview; if you want a seamless loop, match the motion to the frame count and use seamless tiling.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| width | INT | 102464–8192 | — |
| height | INT | 102464–8192 | — |
| frame_length | INT | 11–256 | Number of frames to generate. |
| fps | FLOAT | 12.01–120 | — |
| seed | INT | 00–2147483647 | — |
| basis | COMBO | perlin | 3 options: perlin, value, white |
| fractal_mode | COMBO | fbm | 4 options: none, fbm, turbulence, ridged |
| scale | FLOAT | 1601–4096 | — |
| octaves | INT | 51–12 | — |
| gain | FLOAT | 0.500–1 | — |
| offset_z | FLOAT | 0-65536–65536 | Static Z offset into the noise field. |
| animation_speed | FLOAT | 1.00–512 | Z offset added per frame. Higher = faster animation. 0 = still image. |
| seamless | BOOLEAN | false | Wrap X/Y lattice so the texture tiles seamlessly. |
| contrast | FLOAT | 1.000–4 | — |
| invert | BOOLEAN | false | — |
| low_color | COLOR | #FFFFFF | — |
| high_color | COLOR | #FFFFFF | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| mask | MASK | — |