HOME

TheInfoList



OR:

OpenSimplex noise is an n-dimensional (up to 4D)
gradient noise Gradient noise is a type of noise commonly used as a procedural texture primitive in computer graphics. It is conceptually different, and often confused with value noise. This method consists of a creation of a lattice of random (or typically pse ...
function that was developed in order to overcome the patent-related issues surrounding
simplex noise Simplex noise is the result of an ''n''-dimensional noise function comparable to Perlin noise ("classic" noise) but with fewer directional artifacts and, in higher dimensions, a lower computational overhead. Ken Perlin designed the algorithm in ...
, while likewise avoiding the visually-significant directional artifacts characteristic of
Perlin noise Perlin noise is a type of gradient noise developed by Ken Perlin. History Ken Perlin developed Perlin noise in 1983 as a result of his frustration with the "machine-like" look of computer-generated imagery (CGI) at the time. He formally descr ...
. The algorithm shares numerous similarities with simplex noise, but has two primary differences: * Whereas simplex noise starts with a
hypercubic honeycomb In geometry, a hypercubic honeycomb is a family of regular honeycombs (tessellations) in -dimensional spaces with the Schläfli symbols and containing the symmetry of Coxeter group (or ) for . The tessellation is constructed from 4 -hypercube ...
and squashes it down the main diagonal in order to form its grid structure,Ken Perlin, Noise hardware. In Real-Time Shading SIGGRAPH Course Notes (2001), Olano M., (Ed.)
(pdf)
/ref> OpenSimplex noise instead swaps the skew and inverse-skew factors and uses a stretched hypercubic honeycomb. The stretched hypercubic honeycomb becomes a
simplectic honeycomb In geometry, the simplectic honeycomb (or -simplex honeycomb) is a dimensional infinite series of honeycombs, based on the _n affine Coxeter group symmetry. It is represented by a Coxeter-Dynkin diagram as a cyclic graph of nodes with one node ...
after subdivision.Spirit of Iron: Simplectic Noise
Michael Powell's blog
This means that 2D Simplex and 2D OpenSimplex both use different orientations of the
triangular tiling In geometry, the triangular tiling or triangular tessellation is one of the three regular tilings of the Euclidean plane, and is the only such tiling where the constituent shapes are not parallelogons. Because the internal angle of the equilater ...
, but whereas 3D Simplex uses the
tetragonal disphenoid honeycomb The tetragonal disphenoid tetrahedral honeycomb is a space-filling tessellation (or honeycomb) in Euclidean 3-space made up of identical tetragonal disphenoidal cells. Cells are face-transitive with 4 identical isosceles triangle faces. John Horton ...
, 3D OpenSimplex uses the
tetrahedral-octahedral honeycomb The tetrahedral-octahedral honeycomb, alternated cubic honeycomb is a quasiregular space-filling tessellation (or honeycomb) in Euclidean 3-space. It is composed of alternating regular octahedra and tetrahedra in a ratio of 1:2. Other names incl ...
. * OpenSimplex noise uses a larger kernel size than simplex noise. The result is a smoother appearance at the cost of performance, as additional vertices need to be determined and factored into each evaluation. OpenSimplex has a variant called "SuperSimplex" (or OpenSimplex2S), which is visually smoother. "OpenSimplex2F" is identical to the original SuperSimplex.


See also

* Value noise *
Worley noise Worley noise is a noise function introduced by Steven Worley in 1996. In computer graphics it is used to create procedural textures, i.e. textures that are created automatically with arbitrary precision and do not have to be drawn by hand. Worley ...


References


External links


Blog post introducing OpenSimplex noise
*
Author's current implementation
(OpenSimplex2)
Android library

C implementation

GPU implementation in OpenCL

Heavily-optimized implementation in C#

Noise library for the Rust programming language
providing OpenSimplex noise – does not hard code gradient initial values
Python implementation
Noise (graphics) {{graphics-software-stub