What to try
- Drag the sample or use the x and y controls.
- Move to a corner, then change the gradients and trace an edge.
What to look for: The table links each gradient dot product to its fade weight. At a lattice corner the noise is zero; along an edge only the two adjacent corners contribute.
How it works
At a sample position, each nearby lattice gradient is dotted with the displacement from its lattice corner. A smooth fade curve blends those contributions. Nearby positions therefore tend to be related, unlike independent white-noise samples. Value noise instead interpolates random scalar values at the corners.
Frequency controls how quickly the field varies across space. Multiple octaves combine related fields at different scales. The Lab’s Perlin implementations use seeded lattice gradients and a quintic fade; the seed chooses the realization, while the parameters control its structure.
Use it in the Lab
Generate a coherent field as a starting layer, then threshold it, map it to a palette or use it in a texture chain. Keep the seed when you want to repeat a result.
Limits & distinctions
Coherent noise is not the same as a photographic texture. High frequencies can alias on a small pixel grid, and extra octaves are only useful while their detail can be sampled.
Further reading
How It Works
Invented by Ken Perlin in 1983 for the movie Tron, Perlin noise generates smooth pseudorandom values by interpolating between gradient vectors placed on a regular grid. Each grid point is assigned a random gradient, and the noise value at any point is computed by blending contributions from surrounding grid corners.
Core Algorithm
For each point P, compute the dot product between each corner's gradient and the vector from that corner to P, then interpolate using a smooth fade curve: 6t⁵ − 15t⁴ + 10t³
Spatial Coherence
Unlike white noise, Perlin noise has spatial coherence — nearby points produce similar values. This property makes it ideal for simulating natural phenomena: clouds, terrain height maps, marble textures, and organic flow fields.
// Perlin noise pseudocode
for each point (x, y):
x0, y0 = floor(x), floor(y)
g00, g10, g01, g11 = gradients at corners
d00 = dot(g00, (x-x0, y-y0))
d10 = dot(g10, (x-x0-1, y-y0))
// ... blend with fade curve
return lerp(fade(x-x0), lerp(...), lerp(...))Fractal Brownian Motion
In algorithmic art, Perlin noise serves as a foundational building block. Multiple octaves can be layered — each at double the frequency and half the amplitude — a technique called fractal Brownian motion (fBm). This creates rich, detailed textures with structure at every scale, from rolling hills to fine surface grain.
Start with 4–6 octaves and a persistence of 0.5 for natural-looking results. Increase octaves for finer detail, decrease persistence for smoother output.
Related artworks
Related Lab categories
Sources & references
Guide updated
