Fractal Brownian Motion (FBM)

13 / 15
Create complex patterns with self-similarity by layering multiple noise octaves (usually Perlin or Simplex noise) with varying frequencies and amplitudes, often used to generate natural phenomena like mountains, clouds, and water surfaces.

A single noise layer is too uniform — it lacks detail. FBM stacks multiple layers together, each at double the frequency and half the amplitude, producing both large-scale variation and fine surface texture:


What an octave is

Each layer is called an octave. The first octave is low-frequency, large-scale noise (providing the overall shape). The second doubles the frequency and halves the amplitude (adding mid-range detail). Each subsequent octave adds finer and finer detail. Beyond about 6 octaves the added detail becomes imperceptible.


Frequency doubling, amplitude halving

Amplitudes decay by powers of 0.5 (1/2, 1/4, 1/8...), so the infinite sum converges — the total value stays below 1.0.


Three columns in the canvas

Left column shows 1 octave — smooth large patches, like a height-map outline. Middle column shows 3 octaves — medium detail added. Right column shows 6 octaves — the richest detail, like real terrain or a cloud cross-section.


Try changing it

ChangeEffect
int octaves = 41Only the coarse, large-scale noise layer
int octaves = 48Very fine high-frequency detail (hard to see improvement beyond 6)
amplitude *= 0.5amplitude *= 0.7Higher layers decay slower, more detail, higher contrast
uv * 3.0uv * 6.0Double overall frequency, finer texture

Exercise

Change int octaves = 4 to 1, then 3, then 6, and observe how the amount of surface detail changes with each value.

Answer Breakdown

1 octave: A single smooth noise layer, similar to plain value noise. No fine detail.

3 octaves: Medium-frequency detail appears. Shapes start to feel complex, like condensed cloud or gentle terrain.

6 octaves: Rich detail approaching natural complexity. Tiny surface texture makes the result feel more realistic.

Key pattern: each additional octave contributes half the amplitude of the previous one, so the visual improvement from each new octave is smaller. Beyond 6–8 octaves the difference is essentially invisible.

GLSL Code Editor

Correct Code Preview

Current Code Preview