next up previous contents
Next: 6.21.3 High Resolution Filtering Up: 6.21 Procedural Texture Generation Previous: 6.21.1 Filtered Noise Functions   Contents

6.21.2 Generating Noise Functions

Filtered noise functions are typically implemented as continuous functions that can be sampled at an arbitrary domain value. However, for some applications a set of uniformly spaced samples of the function may suffice. In these cases, a discrete version of the function can be created in the framebuffer using OpenGL. In the following, we do not distinguish between the terms noise function and discrete noise function .

A simple way to create lattice noise is to create a texture with random values for the texels, and then to draw a textured rectangle with a bilinear texture filter at an appropriate magnification. However, bilinear interpolation produces poor results, especially when creating the lower octaves, where values are interpolated across a large area. Some OpenGL implementations support bicubic texture filtering, which may produce results of acceptable quality. However, a particular implementation of bicubic filtering may have limited subtexel precision, causing noticeable banding at the lower octaves. Both bilinear and bicubic filters also have the limitation that they produce only value noise; gradient noise is not possible. We suggest another approach.


next up previous contents
Next: 6.21.3 High Resolution Filtering Up: 6.21 Procedural Texture Generation Previous: 6.21.1 Filtered Noise Functions   Contents
2001-01-10