Nodes/Skoogeer-Noise/Latent Simplex Noise
ComfyUI Node

Latent Simplex Noise

Perlin's less-aliased cousin for organic latent drift

By ttulttul·Created 9 months ago·Updated 3 months ago· 14
Latent Simplex Noise
  • latent
  • mask
  • LATENT
seed0
frequency2.00
octaves4
persistence0.50
lacunarity2.0
strength0.50
channel_modeshared
temporal_modelocked

Simplex noise is what Perlin noise grew up into. Same idea - smooth, lattice-based noise where nearby points are correlated - but built on a simplex grid instead of a square one. That kills the visible axis-aligned "square grid" bias classic Perlin has, produces smoother gradients, and it's cheaper to compute in higher dimensions. For latent perturbation purposes the practical difference is: Perlin tends to read as cloud-like and slightly directional; simplex reads as more purely organic - flowing, marbley, less obviously grid-structured.

You'd reach for this node when you want variation that stays natural. It's the go-to for subtle texture drift on a person's skin or fabric between samples, for organic "flow" perturbations before a second pass, and honestly just for that background sheen of life that flat Gaussian noise can't give you. Because it's smooth, a low-strength simplex bump won't destroy your composition the way random static can - it nudges the image in coherent blobs.

The inputs

Same fractal stack as the Perlin node, which is intentional - you can build either noise from the same mental model:

  • frequency (default 2) - base lattice frequency. Lower = broader features, higher = finer.
  • octaves (default 4) - stacked layers of the noise; each one finer and fainter than the last.
  • persistence (0.5) and lacunarity (2.0) - amplitude and frequency multipliers between octaves. The defaults are the boring-but-correct values.
  • strength (0.5) - how hard the noise hits, scaled relative to the latent's standard deviation. 0.5 is subtle, 1.0 is noticeable, anything above 2 is deliberate destruction.
  • channel_mode - shared uses one noise field for all channels; per_channel reseeds per channel for more colorful breakup.
  • temporal_mode - this one exists here (unlike the Perlin node) because this node generates 2D noise: locked reuses one pattern across frames for temporal stability, animated reseeds each frame. If you're doing video latents and the locked result looks frozen, that's the dial.

seed for reproducibility, optional mask to localize, single LATENT output that replaces your latent in the graph.

Installing it

Part of Skoogeer-Noise. ComfyUI Manager → search "Skoogeer-Noise" → install, or:

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

Restart ComfyUI. No downloads beyond the pack itself; deps are torch, numpy, einops, pyyaml - all already present in a standard ComfyUI install.

How it differs from the Perlin node, and gotchas

If you're choosing between the two, the honest take is that the difference is subtle at the strengths you'll actually use. Simplex is marginally smoother and has that temporal_mode for 5D video latents; Perlin is a shade more "terrain-like" and auto-generates 3D noise for video shapes. Try both at strength 0.5 and pick the one whose artifacts you like. Common failure: cranking strength while leaving octaves at 4+ - you get a fully melted image and blame the node. Drop octaves first, then raise strength. And on Flux.2, wrap any latent noise node with the Unpatchify Flux.2 LatentPatchify Flux.2 Latent pair or the patchified 128-channel layout will produce blocky artifacts.

CategoryLatent/Noise

Inputs (10)

NameTypeDefaultDescription
latentLATENTLatent to perturb with simplex noise.
seedINT00–18446744073709550000Seed controlling the simplex lattice offsets.
frequencyFLOAT2.000.01–64Base lattice frequency for the simplex grid.
octavesINT41–12Number of simplex layers to accumulate.
persistenceFLOAT0.500–1Amplitude multiplier applied between octaves.
lacunarityFLOAT2.01–6Frequency multiplier applied between octaves.
strengthFLOAT0.500–5Scale of the normalized simplex noise relative to the latent's standard deviation.
channel_modeCOMBOsharedReuse a single noise field for all channels or reseed per channel.
temporal_modeCOMBOlockedlocked reruns the same 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 latent resolution (bicubic when downscaling).

Outputs (1)

NameTypeDescription
LATENTLATENT