Nodes/ComfyUI-Majoor-ImageOps/〽️ Image Ops Noise
ComfyUI Node

〽️ Image Ops Noise

Procedural noise that animates — Perlin plates, animated textures, and seamless tiles

By MajoorWaldi·Created 8 months ago·Updated 8 days ago· 11
〽️ Image Ops Noise
  • low_color
  • high_color
  • image
  • mask
width1024
height1024
frame_length1
fps12.0
seed0
basisperlin
fractal_modefbm
scale160
octaves5
gain0.50
offset_z0
animation_speed1.0
seamlessfalse
contrast1.00
invertfalse

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. perlin is the smooth, organic default (clouds, terrain, displacement). value is chunkier and cheaper. white is 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), or none.
  • scale (1–4096) - the feature size; bigger scale = bigger blobs. octaves (1–12) and gain (0–1) shape the fractal detail - more octaves = finer detail, lower gain = softer contrast between layers.
  • offset_z and animation_speed - the magic for motion. Offset Z moves into the 3D noise field; animation_speed adds a Z offset per frame, so a frame_length of 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.
  • contrast and invert - 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.

Categoryimage/imageops

Inputs (17)

NameTypeDefaultDescription
widthINT102464–8192
heightINT102464–8192
frame_lengthINT11–256Number of frames to generate.
fpsFLOAT12.01–120
seedINT00–2147483647
basisCOMBOperlin3 options: perlin, value, white
fractal_modeCOMBOfbm4 options: none, fbm, turbulence, ridged
scaleFLOAT1601–4096
octavesINT51–12
gainFLOAT0.500–1
offset_zFLOAT0-65536–65536Static Z offset into the noise field.
animation_speedFLOAT1.00–512Z offset added per frame. Higher = faster animation. 0 = still image.
seamlessBOOLEANfalseWrap X/Y lattice so the texture tiles seamlessly.
contrastFLOAT1.000–4
invertBOOLEANfalse
low_colorCOLOR#FFFFFF
high_colorCOLOR#FFFFFF

Outputs (2)

NameTypeDescription
imageIMAGE
maskMASK