The encyclopedia · Engineering & Operations · Technical decision · 1982–1985
Perlin noise gave CGI a natural look from a tiny function
In 1985 Ken Perlin's gradient noise made computer graphics look natural without a library of textures.
Mathematical Applications Group (MAGI) · New York University
the move
Early computer-generated imagery looked flat and machine-like because surfaces were defined by perfectly smooth geometry or by bitmaps that had to be stored and could only repeat. Real things — smoke, clouds, water, rock — have believable irregularity, and reproducing it graphically was the problem Ken Perlin faced while working on Tron in the early 1980s.
Perlin's answer was a type of gradient noise. The function puts pseudo-random gradient vectors at the corners of a grid and interpolates the dot products, so any point in space returns a smooth, natural-looking value between random extremes. Because it is a function, not a stored picture, it can be evaluated anywhere and at any scale.
It gives a controllable pseudo-random appearance where the size of every detail stays constant, so scaled copies can be layered into a spot, wood, water or terrain pattern on demand. Perlin described it in a 1985 SIGGRAPH paper, and it became the primitive for believable procedural texture in computer graphics.
why it works
- As a function, it generates texture procedurally so no bitmap has to be stored, which frees memory for more detail.
- The output is deterministic yet pseudo-random, so it looks natural but is reproducible.
- Scaling and summing copies produces rich, fractal-looking surfaces from one primitive.
what transfers
Instead of storing a fixed texture, define one function that manufactures believable variation anywhere and infinitely, so memory stops being the limit on a scene's detail.
what came after
Perlin won an Academy Award for Technical Achievement in 1997 for the technique, which became ubiquitous in motion-picture visual effects, video games and demos, and its successor simplex noise is now built into many graphics processing units.
references
spotted an error? The archive wants to know.