ArticleslgStudy

biology

Perlin noise

Perlin noise is a biology topic covered in the lgStudy science library. This page brings together a partial reference excerpt, illustrations, worked examples, real-world applications and a short study plan, so you can understand Perlin noise rather than just read about it. In short: Perlin noise is a type of gradient noise developed by Ken Perlin in 1982. It has many uses, including but not limited to: procedurally generating terrain, applying pseudo-random changes to a variable, and assisting in the creation of image textures.

Perlin noise — main illustration
Perlin noise — illustration

Key takeaways

  • Perlin noise belongs to biology; place it in that map before memorising details.
  • Learn the definition first, then one example that makes the definition concrete.
  • Connect Perlin noise to a quantity you can measure, compute or draw — that is where exam questions come from.
  • Reproduce the core statement of Perlin noise from memory before moving on to harder problems.

Reference excerpt

Perlin noise is a type of gradient noise developed by Ken Perlin in 1982. It has many uses, including but not limited to: procedurally generating terrain, applying pseudo-random changes to a variable, and assisting in the creation of image textures. It is most commonly implemented in two, three, or four dimensions, but can be defined for any number of dimensions.

History Ken Perlin developed Perlin noise in 1982 as a result of his problems with the "machine-like" look of computer-generated imagery (CGI) at the time. He formally described his findings in a SIGGRAPH paper in 1985 called "An Image Synthesizer". He developed it after working on Disney's computer animated sci-fi motion picture Tron (1982) for the animation company Mathematical Applications Group (MAGI). In 1997, Perlin was awarded an Academy Award for Technical Achievement for creating the algorithm, the citation for which read:

To Ken Perlin for the development of Perlin Noise, a technique used to produce natural appearing textures on computer generated surfaces for motion picture visual effects. The development of Perlin Noise has allowed computer graphics artists to better represent the complexity of natural phenomena in visual effects for the motion picture industry. Perlin did not apply for any patents on the algorithm, but in 2001 he was granted a patent for the use of 3D+ implementations of simplex noise for texture synthesis. Simplex noise has the same purpose of Perlin noise, but uses a simpler space-filling grid and produces less grid-shaped artifacts.

Uses

Perlin noise is a procedural texture primitive, a type of gradient noise used by visual effects artists to increase the appearance of realism in computer graphics. The function has a pseudo-random appearance that causes all details created to stay the same size. This property allows it to be controllable; multiple scaled copies of Perlin noise can be inserted into mathematical expressions to create various procedural textures. Synthetic textures using Perlin noise are often used in CGI to make computer-generated visual elements appear more natural, by imitating the controlled random appearance of textures in nature.

It is also frequently used to generate textures when memory is limited, such as in demos. Its successors, such as fractal noise and simplex noise, have become popular in graphics processing units both for real-time graphics and for non-real-time procedural textures in computer graphics. It is also frequently used in video games to make procedurally generated terrain that looks natural.

Algorithm detail

Perlin noise is most commonly implemented as a two-, three- or four-dimensional function, but can be defined for any number of dimensions. An implementation typically involves three steps: defining a grid of random gradient vectors, computing the dot product between the gradient vectors and their offsets, and interpolation between these values.

Define an n-dimensional grid where each grid intersection has associated with it a fixed random n-dimensional unit-length gradient vector, except in the one dimensional case where the gradients are random scalars between −1 and 1.

To work out the value of any candidate point, the unique grid cell in which the point lies is found. The 2n corners of that cell and their associated gradient vectors is identified. For each corner, an offset vector (a displacement vector from that corner to the candidate point) is calculated, and the dot product between its gradient vector and the offset vector is computed. This dot product will be zero if the candidate point is exactly at the grid corner. For a point in a two-dimensional grid, this requires the computation of four offset vectors and dot products, while in three dimensions it requires eight offset vectors and eight dot products. In general, the algorithm has O(2n) complexity in n dimensions.

The final step is interpolation between the 2n dot products. Interpolation is performed using a function that has zero first derivative (and possibly also second derivative) at the 2n grid nodes. Therefore, at points close to the grid nodes, the output will approximate the dot product of the gradient vector of the node and the offset vector to the node. This means that the noise function will pass through 0 at every node, giving Perlin noise its characteristic look. If n = 1, an example of a function that interpolates between value a0 at grid node 0 and value a1 at grid node 1 is

f ( x ) = a 0 + smoothstep ⁡ ( x ) ⋅ ( a 1 − a 0 ) for 0 ≤ x ≤ 1 {\displaystyle f(x)=a_{0}+\operatorname {smoothstep} (x)\cdot (a_{1}-a_{0})\quad {\text{for }}0\leq x\leq 1}

where the smoothstep function was used. Noise functions for use in computer graphics typically produce values in the range [–1.0, 1.0] and can be scaled accordingly.

Gradient permutation In Ken Perlin's original implementation he used a simple hashing scheme to determine what gradient vector is associated with each grid intersection. A pre-computed permutation table is used to turn a given grid coordinate into a random number. The original implementation worked on a 256-node grid and so included the following permutation table:

This specific permutation is not absolutely required, though it does require a randomized array of the integers 0 to 255. If creating a new permutation table, care should be taken to ensure uniform distribution of the values. To get a gradient vector using the permutation table the coordinates of a grid point are looked up sequentially in the permutation table adding the value of each coordinate to the permutation of the previous coordinate. So for example the original implementation did this in 3D as follows:

The algorithm then looks at the bottom 4 bits of the hash output to pick 1 of 12 gradient vectors for that grid point.

… excerpt ends here. Continue reading the full article.

Illustrations

Perlin noise: Two-dimensional slice through 3D Perlin noise at z = 0
Two-dimensional slice through 3D Perlin noise at z = 0
Perlin noise: A virtual landscape generated using Perlin noise
A virtual landscape generated using Perlin noise
Perlin noise: A virtual organic surface generated with Perlin noise
A virtual organic surface generated with Perlin noise
Perlin noise: Perlin noise rescaled and added into itself to create fractal noise. At each step, noise frequency is doubled and amplitude is halved.
Perlin noise rescaled and added into itself to create fractal noise. At each step, noise frequency is doubled and amplitude is halved.
Perlin noise: 2-D Perlin noise with a contour line at zero, showing that the noise is zero at the gradient mesh intersections
2-D Perlin noise with a contour line at zero, showing that the noise is zero at the gradient mesh intersections

Worked examples

Example 1 — a first encounter with Perlin noise

Start with the simplest possible case. Write down what Perlin noise claims or describes in one sentence, then invent the smallest concrete situation in which that sentence is true. In biology, the smallest case is usually a single object, a single equation or a single measurement. Check that every symbol or term in your sentence has a meaning in that case.

Example 2 — changing one variable

Take the situation from Example 1 and change exactly one quantity: double it, halve it, or set it to zero. Predict what should happen to Perlin noise before you calculate. Comparing your prediction with the result is the fastest way to find out whether you understand the idea or only the words.

Example 3 — an exam-style question

Typical questions about Perlin noise ask you to (a) state it precisely, (b) apply it to given data, and (c) explain a limitation. Practise writing all three answers in under five minutes; the third part is what separates a full-mark answer from an average one.

Applications of Perlin noise

In research
Perlin noise appears in biology research whenever the underlying quantities have to be modelled precisely. Papers usually cite it as a starting assumption and then explore where it breaks down.
In technology and industry
Engineering practice reuses Perlin noise in design rules, simulations and safety margins. Knowing the idea lets you read a specification sheet and understand why the numbers look the way they do.
In the classroom
Perlin noise is common in secondary-school and first-year university syllabi. It links to neighbouring topics Computer graphics, Fractals, Noise (graphics), so understanding it makes those chapters shorter.
In everyday life
Look for Perlin noise outside the textbook — in sport, cooking, traffic, electronics or the sky above you. An example you found yourself is remembered far longer than one you were given.
Ask Teacher Smith questions about this articleOpens your AI tutor with a question about “Perlin noise” →

Affiliate

Preply — study more efficiently by working with a personal tutor. 50% off.

How to study Perlin noise in 20 minutes

  1. Read the reference excerpt below once, without taking notes.
  2. Close the page and write down what Perlin noise means in your own words.
  3. Compare your version with the excerpt and mark what you missed.
  4. Work through the three examples above with pen and paper.
  5. Explain Perlin noise out loud to somebody else — or to Teacher Smith in the lgStudy chat.

Frequently asked questions

What is Perlin noise in simple terms?

Perlin noise is a type of gradient noise developed by Ken Perlin in 1982. It has many uses, including but not limited to: procedurally generating terrain, applying pseudo-random changes to a variable, and assisting in the creation of image textures.

Why does Perlin noise matter?

Because it connects several biology ideas at once: it gives you a definition you can apply, a quantity you can calculate, and a way to check whether a result is plausible.

How should I study Perlin noise?

Read the excerpt, restate it from memory, then work through the examples and applications listed on this page. The five-step study plan above takes about twenty minutes.

What does this page cover?

It gives you a compact reference excerpt plus original lgStudy explanations, examples, applications and study material on Perlin noise.

Tags

  • Computer graphics
  • Fractals
  • Noise (graphics)
  • Procedural generation
  • Special effects

Keep exploring