ALGORITHMICS / REFERENCES / PERLIN NOISE

Fields, noise, and flow

Perlin Noise

A coherent scalar field made from local variation and smooth interpolation.

What it is

Ken Perlin introduced noise as a controllable procedural function for building natural-looking variation rather than storing a texture image. Unlike independently chosen random values, nearby samples are related: moving the input a little moves the output a little. [1]

Canonical two-dimensional gradient noise divides the plane into integer lattice cells. A deterministic hash assigns each corner a pseudo-random gradient vector; at a query point, each corner contributes a dot product between its gradient and its offset to the point. The four contributions are smoothly blended.

Mathematical construction

Write i = floor(p) and f = p − i, with f in a unit cell. For corner c, use dc = gi+c · (f − c), then interpolate the four dc values in x and y. Perlin’s improved fade is q(t) = 6t5 − 15t4 + 10t3; its first and second derivatives vanish at cell edges, reducing seams where the field is differentiated. [2]

Frequency comes from input scale: N(sx, sy) has features roughly s times smaller than N(x, y). Multiple octave bands may be summed—Σ akN(2kx, 2ky)—to create broad and fine structure; this is a design choice, not a requirement.

Reading the field

The diagram makes the internal lattice visible. The fade curve hides its joins, while corner gradients establish local slope. A seed changes gradient assignments, scale changes feature size, and output remapping changes contrast without changing spatial organisation. Gradient noise differs from white noise because it is spatially correlated; geometry and rendering still decide what field values become.

Structural use

Algorithmics note. “Perlin” is often used loosely. Implementations should distinguish gradient noise from simpler hashed-value noise with smooth interpolation: both are coherent, but their local behaviour differs.

Sources

  1. Ken Perlin, “An Image Synthesizer,” SIGGRAPH 1985
  2. Ken Perlin, “Improving Noise,” SIGGRAPH 2002
  3. Ken Perlin, Improved Noise reference implementation

← References