OpenSimplex noise

N-dimensional gradient noise function
Abstract composition in 3D generated with the OpenSimplex noise generation algorithm.

OpenSimplex noise is an n-dimensional (up to 4D) gradient noise function that was developed in order to overcome the patent-related issues surrounding simplex noise, while likewise avoiding the visually-significant directional artifacts characteristic of Perlin noise.

The algorithm shares numerous similarities with simplex noise, but has two primary differences:

  • Whereas simplex noise starts with a hypercubic honeycomb and squashes it down the main diagonal in order to form its grid structure,[1] OpenSimplex noise instead swaps the skew and inverse-skew factors and uses a stretched hypercubic honeycomb. The stretched hypercubic honeycomb becomes a simplectic honeycomb after subdivision.[2] This means that 2D Simplex and 2D OpenSimplex both use different orientations of the triangular tiling, but whereas 3D Simplex uses the tetragonal disphenoid honeycomb, 3D OpenSimplex uses the tetrahedral-octahedral honeycomb.[2]
  • 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.[2]

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

References

  1. ^ Ken Perlin, Noise hardware. In Real-Time Shading SIGGRAPH Course Notes (2001), Olano M., (Ed.). (pdf)
  2. ^ a b c Spirit of Iron: Simplectic Noise Michael Powell's blog

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
  • v
  • t
  • e
Procedural coherent noise
Approach
Lattice based
Gradient noise
  • OpenSimplex noise
  • Perlin noise
  • Simplex noise
  • Simulation noise
  • Wavelet noise
Value noise
  • Value noise
Point based
  • Worley noise (Voronoi/Cellular noise)
Applications


Stub icon

This graphics software–related article is a stub. You can help Wikipedia by expanding it.

  • v
  • t
  • e