Perlin noise is an algorithmic (computer-generated) effect developed by Ken Perlin, often used for simulating elements in nature and for procedural terrain generation, especially in situations with low levels of memory. It is also pseudo-random, and can be in any number of dimensions. An improved version of this now exists, also developed by Ken Perlin, and also covered by this tag - simplex noise.
What is Perlin Noise?
Perlin noise is a technique which was developed by Ken Perlin in 1983 for simulating elements in nature and generating procedural patterns with a pseudo-random algorithm. It is a widely used algorithm today, and for this work, he won an Academy Award for Technical Achievement. Perlin noise itself was designed to be isotropic and to have random variations of approximately the same size. It can exist in any number of dimensions, as it relies on a general formula - however, it was originally implemented in 2 and 3 dimensions, and is most commonly used in 2, 3 and 4 dimensions. There was a radical improvement on it, simplex noise, which was developed in 2001, also by Ken Perlin - its main advantage is that it is much cheaper to compute.
What does isotropic mean?
Isotropic means that the object in question shows uniformity in all directions - in Perlin noise, this also applies in each dimension. This does not mean that Perlin noise is the same in all directions, but rather that the direction has no impact on the results.
How is Perlin noise built / how do I expand it to n-dimensions?
Although the resulting effects are complicated, the algorithm itself is not, and can easily be scaled to an arbitrary number of dimensions. The algorithm, on a superficial level, goes as follows:
Step 1: Create an n-dimensional grid.
Step 2: Populate the grid with pseudo-random values determined by a seed.
Step 3: Calculate noise(x, y) using the values at the corners of the grid weighted by the distance
What is simplex noise?
Simplex noise is a variant of Perlin noise developed by Ken Perlin in 2001. It functions approximately the same as Perlin noise, but its main improvement is a lower complexity, especially when scaled to higher dimensions - it requires fewer multiplications in general, and when scaling to larger dimensions, its complexity is quadratic - O(n²) - as opposed to exponential - O(2ⁿ).
What questions does this tag cover?
This tag covers any questions which involve:
- The question involves issues with generating Perlin noise.
- It is a question based upon an issue with the implementation or theory of Perlin noise.
- The question involves issues about where Perlin noise should be used.
- It is a game-specific question (read the faq) - otherwise, ask it on Stack Overflow.
Different forms of Perlin noise
- The question involves topics which are closely related to Perlin noise, but are subtly different.
- This covers topics such as simplex noise, which is a less computationally-expensive form of Perlin Noise.
Where can I get more information?
If you're new, then one site to get information from is:
- The Perlin noise math FAQ - this is a page devoted to explaining the concepts behind Perlin noise and how the maths works.
On the other hand, if you're looking for more in-depth information:
- Ask here - after all, that is what GD.SE is about - if you have a good question, it'll get good answers.
If you're looking for very specific information about Perlin noise: