- Simplex noise
Simplex noise is a method for constructing an n-dimensional noise function comparable to
Perlin noise("classic" noise) but with a lower computational overhead, especially in larger dimensions. Ken Perlindesigned the algorithm in 2001 [Ken Perlin, Noise hardware. In Real-Time Shading SIGGRAPH Course Notes (2001), Olano M., (Ed.). [http://www.csee.umbc.edu/~olano/s2002c36/ch02.pdf (pdf)] ] to address the limitations of his classic noise function, especially in higher dimensions.
The advantages of simplex noise over Perlin noise:
* Simplex noise has a lower computational complexity and requires fewer multiplications.
* Simplex noise scales to higher dimensions (4D, 5D and up) with much less computational cost, the complexity is for dimensions instead of the of classic Noise [Ken Perlin, Making noise. Based on a talk presented at GDCHardcore (Dec 9, 1999). [http://www.noisemachine.com/talk1/32.html (url)] ] .
* Simplex noise has no noticeable directional artifacts (is
* Simplex noise has a well-defined and continuous gradient everywhere that can be computed quite cheaply.
* Simplex noise is easy to implement in hardware.
Whereas classical noise interpolates between the values from the surrounding hypergrid end points (ie: North South East West in 2D), Simplex noise divides the space into simplexes (ie: n dimensional equilateral triangles) to interpolate between. This reduces the number of data points. While a hypercube in dimensions has corners, a simplex in dimensions has only corners.
* [http://staffwww.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf Short technical article with source code by Stefan Gustavson] (PDF)
* [http://mrl.nyu.edu/~perlin/homepage2006/simplex_noise/index.html Perlin's animated "rubber sheet" simplex noise demo]
* [http://staffwww.itn.liu.se/~stegu/aqsis/aqsis-newnoise/ Another implementation of Simplex Noise in C++ (SimplexNoise1234)]
Wikimedia Foundation. 2010.