Navigation menu 
A portable, opensource, coherent noisegenerating library for C++ 
GlossaryTable of contentsDefinitionsAmplitudeThe maximum absolute value that a specific coherentnoise function can output. In libnoise, a coherentnoise function with an ampltude of n generates values between +n and n, although in some cases (for example, when generating Perlin noise), this is not guaranteed. Coherent noiseA type of smooth pseudorandom noise. Coherent noise is generated by a coherentnoise function, which has three important properties:
An ndimensional coherentnoise function requires an ndimensional input value. Its output value is always a scalar. In libnoise, all coherentnoise functions are threedimensional. Threedimensional coherent noise is often called solid noise because it can be used to create solid threedimensional textures. The following graph shows the output of a onedimensional coherentnoise function n(x) with a frequency of 2:
Compare it to the following graph that shows the output of a noncoherentnoise function n(x):
Combiner moduleA noise module that mathematically combines the output values from two or more source modules together. Examples of combiner modules include:
The following image demonstrates the noise::module::Add noise module, a type of combiner module.
Control moduleA noise module that indicates how to combine the output values from the source modules that are connected to a selector module. FrequencyThe number of cycles per unit length that a specific coherentnoise function outputs. Coherent noise has properties similar to that of a sine wave:
Unlike a sine wave, the output of a coherentnoise function may or may not cross zero during the middle of a cycle. The following graph shows the output of a onedimensional coherentnoise function n(x):
In the above graph, the beginning of each cycle is shown with a circle. The following graphs show the outputs of onedimensional coherentnoise functions n(x) with frequencies 2, 4, and 8. In these graphs, f refers to frequency.
Generator moduleA noise module that outputs a value generated by a coherentnoise function or some other mathematical function. If a generator module outputs coherent noise, the output of this module is often called solid noise. This is because solid noise can be used to create solid threedimensional textures. Examples of generator modules include:
The following image demonstrates the noise::module::Perlin noise module, a type of generator module.
LacunarityA multiplier that determines how quickly the frequency increases for each successive octave in a Perlinnoise function. The frequency of each successive octave is equal to the product of the previous octave's frequency and the lacunarity value. A similar property to lacunarity is persistence, which modifies the octaves' amplitudes in a similar way. Modifier moduleA noise module that mathematically modifies the output value from a source module. Examples of modifier modules include:
The following image demonstrates the noise::module::Invert noise module, a type of modifier module.
ModuleSee noise module. Noise ModuleIn libnoise, an object that calculates and outputs a value given a threedimensional input value. All noise modules are instantiations of classes derived from the base class noise::module::Module. Each noise module class uses a specific method to calculate an output value. Some of these methods include:
Noise modules can be chained together in nearinfinite ways like LEGO® bricks. libnoise has several types of noise modules: See also: Source module, Control module OctaveOne of the coherentnoise functions in a series of coherentnoise functions that are added together to form Perlin noise. These coherentnoise functions are called octaves because each octave has, by default, double the frequency of the previous octave. Musical tones have this property as well; a musical C tone that is one octave higher than the previous C tone has double the frequency. The number of octaves control the amount of detail of Perlin noise. Adding more octaves increases the detail of Perlin noise, with the added drawback of increasing the calculation time. The following graphs show the outputs of onedimensional Perlinnoise functions n(x) with 1, 2, 4, and 8 octaves. In these graphs, o refers to the octave count.
Perlin noiseA type of coherent noise that is the sum of several coherentnoise functions of everincreasing frequencies and everdecreasing amplitudes. The following graphs show the outputs of several onedimensional coherentnoise functions n(x). Each graph shows a function with double the frequency and onehalf the amplitude of the function from the previous graph. In these graphs, f refers to frequency and a refers to amplitude.
The sum of these coherentnoise functions result in Perlin noise.
Each coherentnoise function that is part of a Perlinnoise function is called an octave. These functions are called octaves because each function has, by default, double the frequency of the previous function; musical tones have this property as well. Perlin noise generated with more octaves produce more detailed coherent noise, at a cost of additional calculation time. Perlin noise is fractal in nature; a zoomedin section of Perlin noise tends to look like the original section. Natural objects also have this property; for example, a twig from a tree resembles a branch of the tree, which in turn resembles the original tree. Because of this property, Perlin noise is ideal for generating natural, selfsimilar textures such as granite, wood, marble, and clouds. It is also ideal for generating realistic terrain. Ken Perlin invented Perlin noise in ~1983. Because his invention is used everywhere in the specialeffects industry, he won an Academy Award®. See also: Lacunarity, Persistence PersistenceA multiplier that determines how quickly the amplitudes diminish for each successive octave in a Perlinnoise function. The amplitude of each successive octave is equal to the product of the previous octave's amplitude and the persistence value. Increasing the persistence produces "rougher" Perlin noise. The following graphs show the outputs of fiveoctave Perlinnoise functions n(x) with persistence values of 3/4, 1/2, and 1/4. In these graphs, p refers to persistence.
A similar property to persistence is lacunarity, which modifies the octaves' frequencies in a similar way. SeedA value that changes the output of a coherentnoise function. Seeds in coherentnoise functions are used in the same way as seeds in standard randomnumber generators. By changing the seed of a coherentnoise function, you change its output values; however, that function's frequency and amplitude are not altered. Selector moduleA noise module that uses the output value from a control module to specify how to combine the output values from its source modules. Examples of selector modules include:
The following image demonstrates the noise::module::Select noise module, a type of selector module. The noise module at the bottom of this image is used as the control module.
Solid noiseA common term for threedimensional coherent noise. Solid noise is often used as threedimensional procedural textures. This is because one can "carve out" modeled objects from solid noise, like a sculptor carving a statue from marble. Because each point in threedimensional space has its own coherentnoise value, the resulting texture does not have any warps or creases. An interesting consequence of this property is that if one cuts a piece out of the object, the texture inside of that object will mesh perfectly with the texture on the outside of the object. The following image shows an object that has a solid noise texture. Note that the texture does not warp anywhere on the object; it is uniform throughout the object. It would be very difficult to produce a nonwarping twodimensional texture map for this object.
Source moduleA noise module that is used as a source of output values for another noise module. For example, the noise module noise::module::Add outputs the sum of the two source modules connected to it. Each source module may also be connected to other source modules, and so on. Transformer moduleA noise module that applies a transformation to the coordinates of the input value before retrieving the output value from the source module. Examples of transformer modules include:
The following image demonstrates the noise::module::RotatePoint noise module, a type of transformer module.


© 20032005 Jason Bevins 