 
 
 
 
 
 
 
  
 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