Next: 6.21.2 Generating Noise Functions
Up: 6.21 Procedural Texture Generation
Previous: 6.21 Procedural Texture Generation
A filtered noise function is simply a function created by filtering
impulses of random amplitude over the domain. There are a variety of
ways to distribute the impulses spatially and to filter those
impulses; these methods determine the character of the function and,
in turn, the character of the procedural texture created from the
function. Regardless of the method chosen, a filtered noise function
should have certain properties [25], some of
which are:
- It is a repeatable pseudorandom function of its inputs.
- It has a known range, typically -1 to 1.
- It is band-limited, with a maximum frequency of about 1 per domain unit.
Given such a function, we can build a more interesting function by making
dilated versions of the original such that each one has a frequency of
2, 4, 8, etc. These are called the octaves of the original
function. The octaves are then composited together with the original noise
function using some set of weights. The result is a band-limited
function which gives the impression of controlled randomness in each
frequency band.
One way of distributing noise impulses is to space them uniformly along
the coordinate axes, as in a lattice. In value noise, the function
itself interpolates the values at the lattice points, while in
gradient noise the gradient of the function interpolates the values at the lattice
points [25]. Gradient noise is similar to the noise
function implemented in the RenderMan shading language.
Lattice noises can exhibit axis-aligned artifacts. Lewis [58]
describes sparse convolution, a way to avoid such artifacts by
distributing the impulses using a stochastic process, and van Wijk
[97] describes
a similar technique called spot noise.
Although the noise functions described in [25] are
generally 3D, we first discuss how to generate a 2D noise function, because
it is more
straightforward to construct in a 2D framebuffer and because some simple
interesting effects can be created with it.
Next: 6.21.2 Generating Noise Functions
Up: 6.21 Procedural Texture Generation
Previous: 6.21 Procedural Texture Generation
David Blythe
1999-08-06