Nodes/Skoogeer-Noise/Latent Fractal Brownian Motion
ComfyUI Node

Latent Fractal Brownian Motion

The fractal noise that underlies half of nature's textures

By ttulttul·Created 9 months ago·Updated 3 months ago· 14
Latent Fractal Brownian Motion
  • latent
  • mask
  • LATENT
seed0
base_noisesimplex
frequency2.00
feature_points16
octaves5
persistence0.50
lacunarity2.0
distance_metriceuclidean
jitter0.35
strength0.50
channel_modeshared
temporal_modelocked

Fractal Brownian Motion - fBm - is the name for what happens when you stack noise on top of itself at increasing frequencies: the sum of octaves that produces the self-similar, organic texture you see in clouds, marble, coastlines, wood grain and terrain. Latent Fractal Brownian Motion builds that field and injects it into your latent. If the pack's simplex node is "one smooth layer," this is "the whole fractal stack," with your choice of which base noise to stack.

The practical difference from the plain noise nodes is richness and control. fBm texture has detail at every scale - zoom into any region and there's more structure waiting. That makes it the better tool when you want the latent to feel organic and alive rather than uniformly perturbed, and the pack even lets you pick the base: simplex (smooth and curving), perlin (similar, slightly more grid-like), or worley (cellular - cracks and cell walls instead of blobs).

How it works

The node picks the base generator you asked for, then accumulates octaves of it. Each octave doubles the frequency (lacunarity) and multiplies the amplitude by persistence. Lower frequency gives broad, sweeping structure; more octaves adds the fine detail on top. The result is normalized and scaled by strength relative to the latent's own standard deviation - same convention as every other noise node in the pack, so strength stays interpretable across images.

The controls worth tuning:

  • base_noise - the flavor. Simplex is the safe default; Worley gives you cellular textures but adds the feature_points, distance_metric and jitter knobs (only used when the base is Worley).
  • octaves - 5 default. This is your "how much detail" dial. Fewer octaves = smoother; more = busier.
  • persistence / lacunarity - the fractal character. Lower persistence flattens the fine octaves; higher lacunarity spreads them further apart.
  • strength - the overall amount that lands. Start low; fBm is dense.

channel_mode (shared/per_channel) and temporal_mode (locked/animated, for video) follow the pack conventions, and the optional mask localizes injection.

Installing it

Part of the Skoogeer-Noise pack - install once, get every node in it. ComfyUI Manager: search "Skoogeer-Noise", install, restart. Or:

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

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

Gotchas

  • fBm is dense; you don't need much strength. Because multiple octaves stack, the same strength lands harder than a single-layer simplex field. Start around 0.2–0.3, not 0.5.
  • Worley base is the slow path. Cellular noise does a nearest-point search per pixel; per-channel mode multiplies that. Expect a progress bar on big latents - normal, not frozen.
  • Worley knobs don't exist for simplex/perlin. feature_points, distance_metric and jitter are ignored unless base_noise = worley. Change the base and the ignored knobs silently stop mattering.
  • Flux.2 patchified latents - wrap in Unpatchify Flux.2 Latent / Patchify Flux.2 Latent so the spatial noise operates on true neighbors instead of 2x2 blocks.
  • There's an ImageFractalBrownianMotion sibling for pixel space, and the whole family shares this pack's Image/Latent mirror-image design - pick the side of the VAE you want to live on and stay there.
CategoryLatent/Noise

Inputs (14)

NameTypeDefaultDescription
latentLATENTLatent to enrich with fractal Brownian motion.
seedINT00–18446744073709550000Seed for the base noise generator.
base_noiseCOMBOsimplexNoise primitive accumulated by the fBm stack.
frequencyFLOAT2.000.01–64Fundamental frequency for simplex/perlin bases (acts as a multiplier for Worley).
feature_pointsINT161–4096Base feature point count (used when base noise is Worley).
octavesINT51–12Number of fBm layers to accumulate.
persistenceFLOAT0.500–1Amplitude multiplier between fBm layers.
lacunarityFLOAT2.01–6Frequency multiplier between fBm layers.
distance_metricCOMBOeuclideanDistance metric used when the base noise is Worley.
jitterFLOAT0.350–1Feature jitter amount for Worley base noise.
strengthFLOAT0.500–5Scale of the normalized fBm field relative to the latent's standard deviation.
channel_modeCOMBOsharedShared fBm field per sample or reseeded per channel.
temporal_modeCOMBOlockedlocked reuses the same fBm 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