15.9. Further Information
Ken Perlin has a tutorial and history of the noise function as well as a recent reference implementation in the Java programming language at his Web site (http://www.noisemachine.com). A lot of other interesting things are available on Ken's home page at NYU (http://mrl.nyu.edu/~perlin). His paper, An Image Synthesizer, appeared in the 1985 SIGGRAPH proceedings, and his improvements to the original algorithm were published in the paper Improving Noise as part of SIGGRAPH 2002. He also described a clever method for combining two small 3D textures to get a large 3D Perlin-like noise function in the article Implementing Improved Perlin Noise in the book GPU Gems.
The book Texturing & Modeling: A Procedural Approach, Third Edition, by David S. Ebert et al. (2000) contains several excellent discussions on noise, and that book's Web site, http://www.texturingandmodeling.com contains C source code for a variety of noise functions that appear in the book, including Perlin's original noise function. Perlin has written a chapter for that book that provides more depth on his noise algorithm, and Ken Musgrave explores breathtakingly beautiful mathematical worlds based on a variety of noise functions. Planet-building software built on these ideas is available from Musgrave's company, Pandromeda, at http://www.pandromeda.com. In Chapter 2 of that book, Darwyn Peachey describes a variety of noise functions, and in Chapter 7, David Ebert describes an approach similar to the 3D texturing approach described previously. Advanced RenderMan: Creating CGI for Motion Pictures by Tony Apodaca and Larry Gritz (1999) also contains a discussion of noise and presents some excellent noise-based RenderMan shaders.