Nodes/Skoogeer-Noise/Image Worley Noise
ComfyUI Node

Image Worley Noise

Cracks, bubbles, and reptile skin from one noise function

By ttulttul·Created 9 months ago·Updated 3 months ago· 14
Image Worley Noise
  • image
  • mask
  • IMAGE
seed0
feature_points16
octaves3
persistence0.65
lacunarity2.0
distance_metriceuclidean
jitter0.35
strength0.50
channel_modeshared
temporal_modelocked

Worley noise is the one in the procedural family that makes borders. Where simplex and Perlin produce smooth blobs, Worley (also called cellular or Voronoi noise) scatters points around and then measures distance to the nearest one - so you get cell walls, cracks, bubbles, stained-glass boundaries, alligator skin, dried mud. If your effect needs seams, this is your node.

In the Skoogeer-Noise pack it sits alongside the simplex, Perlin and fBm generators. It's the most characterful of them and the slowest, because every pixel does a nearest-feature-point search across however many cells you asked for. That's fine on a single image; just know that per_channel mode multiplies the work.

How it works

The node scatters feature_points "seed" points across the image plane and computes, for each pixel, the distance to its nearest point. That distance field is the noise - a smooth gradient inside each cell, with hard boundaries where two cells meet. Then it's run through the same fractal stacking as the other nodes: octaves layers, persistence shrinking amplitude per layer, lacunarity multiplying the feature point count per layer.

The two controls unique to Worley are worth knowing:

  • distance_metric - euclidean gives round, organic cells; manhattan and chebyshev produce diamond and square cell shapes, respectively. This one alone changes the whole texture family.
  • jitter - how far feature points drift inside their cell. Low jitter = clean, regular grid; high jitter = chaotic, clumped cells. 0.35 is the default and a good middle ground.

Everything else follows the pack's conventions: seed fixes the whole field, strength scales the normalized pattern relative to the image's own standard deviation, channel_mode shared/per_channel controls whether each RGB channel gets its own field (per-channel = color fringing), and temporal_mode locked/animated decides whether video frames share a pattern or reseed each frame. The optional mask limits the injection to masked regions.

Inputs that matter

If you're starting from defaults, the knobs you'll actually turn are feature_points (cell density - fewer points, bigger cells), jitter, and strength. The others are fine where they are. Output is a single IMAGE that feeds a preview, save node, or further processing.

Installing it

It's part of the Skoogeer-Noise pack - install once, get all the noise nodes. ComfyUI Manager: search "Skoogeer-Noise", install, restart. Or manually:

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

Standard deps only (torch, numpy, einops, pyyaml) - no model downloads.

Gotchas

  • It's slow. Worley does a neighbor search per pixel, and per-channel mode multiplies that by three. On a big batch expect a progress bar - that's normal, not a hang.
  • "I want bubbles but I got cracked mud." Bump jitter up and raise feature_points. The distance metric also decides a lot of the look - try manhattan if cells feel too round.
  • Fringing in colors. channel_mode is per_channel. Switch to shared for a clean single texture.
  • Want the same cellular texture in the latent instead? LatentWorleyNoise runs before the VAE and stays in sync with the model's working space.
CategoryImage/Noise

Inputs (12)

NameTypeDefaultDescription
imageIMAGEImage to perturb with Worley (cellular) noise.
seedINT00–18446744073709550000Seed for the feature point distribution.
feature_pointsINT161–4096Base number of feature points scattered across the plane.
octavesINT31–8Number of cellular layers to accumulate.
persistenceFLOAT0.650–1Amplitude multiplier between Worley octaves.
lacunarityFLOAT2.01–6Multiplier for the feature point count between octaves.
distance_metricCOMBOeuclideanDistance metric used when measuring feature proximity.
jitterFLOAT0.350–1How far feature points can drift inside each cell.
strengthFLOAT0.500–5Scale of the normalized Worley noise relative to the image's standard deviation.
channel_modeCOMBOsharedShared noise for all channels or reseeded per channel.
temporal_modeCOMBOlockedlocked reuses a single noise pattern per frame; animated reseeds each frame.
maskoptMASKOptional mask (often image-sized) to limit the noise injection to masked areas. The mask is resized to the image resolution (bicubic when downscaling).

Outputs (1)

NameTypeDescription
IMAGEIMAGE