Latent Fractal Brownian Motion
The fractal noise that underlies half of nature's textures
- latent
- mask
- LATENT
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_metricandjitterknobs (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
strengthlands 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_metricandjitterare ignored unlessbase_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 Latentso the spatial noise operates on true neighbors instead of 2x2 blocks. - There's an
ImageFractalBrownianMotionsibling for pixel space, and the whole family shares this pack'sImage/Latentmirror-image design - pick the side of the VAE you want to live on and stay there.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| latent | LATENT | Latent to enrich with fractal Brownian motion. | |
| seed | INT | 00–18446744073709550000 | Seed for the base noise generator. |
| base_noise | COMBO | simplex | Noise primitive accumulated by the fBm stack. |
| frequency | FLOAT | 2.000.01–64 | Fundamental frequency for simplex/perlin bases (acts as a multiplier for Worley). |
| feature_points | INT | 161–4096 | Base feature point count (used when base noise is Worley). |
| octaves | INT | 51–12 | Number of fBm layers to accumulate. |
| persistence | FLOAT | 0.500–1 | Amplitude multiplier between fBm layers. |
| lacunarity | FLOAT | 2.01–6 | Frequency multiplier between fBm layers. |
| distance_metric | COMBO | euclidean | Distance metric used when the base noise is Worley. |
| jitter | FLOAT | 0.350–1 | Feature jitter amount for Worley base noise. |
| strength | FLOAT | 0.500–5 | Scale of the normalized fBm field relative to the latent's standard deviation. |
| channel_mode | COMBO | shared | Shared fBm field per sample or reseeded per channel. |
| temporal_mode | COMBO | locked | locked reuses the same fBm per frame; animated reseeds each frame. |
| maskopt | MASK | Optional mask (often image-sized) to limit the noise injection to masked areas. The mask is resized to latent resolution (bicubic when downscaling). |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| LATENT | LATENT | — |