Modified noise for evaluation on graphics hardware

Perlin noise is one of the primary tools responsible for the success of procedural shading in production rendering. It breaks the crisp computer generated look by adding apparent randomness that is controllable and repeatable. Both Perlin's original noise algorithm and his later improved noise were designed to run efficiently on a CPU. These algorithms do not map as well to the design and resource limits of the typical GPU. We propose two modifications to Perlin's improved noise that make it much more suitable for GPU implementation, allowing faster direct computation. The modified noise can be totally evaluated on the GPU without resorting to texture accesses or "baked" into a texture with consistent appearance between textured and computed noise. However, it is most useful for 3D and 4D noise, which cannot easily be stored in reasonably-sized textures. We present one implementation of our modified noise using computation or direct texturing for 1D and 2D noise, and a procedural combination of 2D textures for the 3D noise.

[1]  David S. Ebert,et al.  Texturing and Modeling: A Procedural Approach , 1994 .

[2]  Ken Perlin,et al.  [Computer Graphics]: Three-Dimensional Graphics and Realism , 2022 .

[3]  Manuel Blum,et al.  A Simple Unpredictable Pseudo-Random Number Generator , 1986, SIAM J. Comput..

[4]  Steve D. Upstill,et al.  The renderman companion - a programmer's guide to realistic computer graphics , 1990 .

[5]  Donald E. Knuth,et al.  The art of computer programming. Vol.2: Seminumerical algorithms , 1981 .

[6]  Donald Ervin Knuth,et al.  The Art of Computer Programming , 1968 .

[7]  R. Caflisch,et al.  Quasi-Monte Carlo integration , 1995 .

[8]  Steven Worley,et al.  A cellular texture basis function , 1996, SIGGRAPH.

[9]  Anselmo Lastra,et al.  Real-time programmable shading , 1995, I3D '95.

[10]  Donald Ervin Knuth,et al.  The Art of Computer Programming, Volume II: Seminumerical Algorithms , 1970 .

[11]  John C. Hart Perlin noise pixel shaders , 2001, HWWS '01.

[12]  Ken Perlin,et al.  An image synthesizer , 1988 .

[13]  Li-Yi Wei,et al.  Tile-based texture mapping on graphics hardware , 2004, SIGGRAPH '04.

[14]  Ken Perlin,et al.  Improving noise , 2002, SIGGRAPH.

[15]  J. van Wijk,et al.  Spot noise texture synthesis for data visualization , 1991, SIGGRAPH.

[16]  J. P. Lewis,et al.  Algorithms for solid noise synthesis , 1989, SIGGRAPH.

[17]  R. R. Coveyou Serial Correlation in the Generation of Pseudo-Random Numbers , 1960, JACM.

[18]  Pascal Junod,et al.  Cryptographic Secure Pseudo-Random Bits Generation : The Blum-Blum-Shub Generator , 1999 .

[19]  David S. Ebert,et al.  Texturing and modeling - a procedural approach, Third Edition , 2002, Morgan Kaufmann series in computer graphics and geometric modeling.