Noise


This is a shader which evaluates a coherent noise function (potentially summed over several octaves, giving fractal noise, sometimes known as a turbulence function). The output is between 0 to 1 (actually [0,1)), which can be used as input to several other shader nodes to produce various effects. This is useful for creating many real-world patterns (marble, granite, leather, etc.)

A tutorial that covers different noise patterns can be found here.

This shader outputs a float value and therefore may prove unpredictable when connecting it to something like a gobo filter which requires color values. A workaround is to build an RGB color from the output of the Noise texture using the float_to_rgb shader.

Octaves

The number of octaves over which the noise function is calculated (the fractal noise function is repeated at multiple frequencies, known as octaves; normally each octave is at about twice the frequency, i.e., half the size, of the previous one, but you can alter this with the lacunarity control).

Distortion

Defines a degree of random displacement applied to each point as part of the noise calculation, giving a different aesthetic feel.

Lacunarity

Controls the average size of gaps in the texture pattern produced. Lacunarity means the change in scale between each octave - in musical scales this would be 2.0, meaning each octave is at twice the frequency / half the scale of the previous one, but for our purposes numbers that are near 2.0, but not actually 2.0 are best. In most cases, we recommend using the default value of 1.92.


Amplitude

Controls the amplitude, or range, of the output. Normally the output has values between 0 and 1; the amplitude control multiplies this.

Scale

Controls the scale of the noise function in x, y, and z directions.

Scaling the noise in one direction only can produce interesting results.

Scale X:1, Y:0.1, Z:0.1

Offset

Offset the noise in x, y, or z directions.


Color 1, 2

The output color of the noise shader in scalar mode (interpolation between the two color values by the noise function).

Mode

Defines the noise function to use (scalar or vector fractal noise). In scalar mode, the output color is computed by blending between color1 and color2, and in vector mode, a separate noise signal is generated per color channel.

Time

The pattern of noise smoothly varies over time.

Coordinate Space

Specifies the coordinate space to use. These include World, Object, Pref and UV space coordinates. Pref is short for 'vertex in reference pose'. The plugin can pass these vertices to Arnold (in addition to the regular, deformed vertices) which can, in turn, be queried by the noise shader so that the noise 'sticks' to the reference pose and does not swim as the mesh deforms.

  • Object space, where points are expressed relative to the local origin (center) of the object.
  • World space, where points are relative to the global origin of the scene.
  • Pref, which isn’t really a space, but rather a reference to a bind pose (note Pref does not work with NURBS surfaces).
  • UV, for texturing using the object’s local UV coordinates. Note that this calls the faster 2D noise API, not the 3D noise like all other coordinate spaces.

 

P

Input coordinates of the 4D fractal noise function. The surface point is used when not defined (0). An arbitrary coordinate space can be specified manually by linking another shader into the P parameter. This is useful for all sorts of things such as being able to animate patterns flowing through objects, having patterns move along with objects, etc.

For example a coordinate system that you're animating to move the noise field through an object (common technique for doing water running over a surface) or a coordinate system that is defined relative to a larger object (e.g. think of a spaceship that's comprised of many smaller objects, and you want to paint noise over the whole surface).


Below are animations that show Pref space coordinates in use with a deforming object. Note how the texture sticks to the object when using Pref space coordinates, compared to Object/World space coordinates where the texture swims. 

 

Using World/Object Space - Texture Swims

 

Using Pref Space - Fixes Texture Swimming


The Pref attribute must be of type "Float" (size 3) and sub-type of "Position". In Arnold terms, it's userdata of type PNT. To add Pref to an object first create a rest node to make the reference pose and then create a Pref attribute.

Pref Name

Specify the name of the reference position user-data array. Previously, the name was hard-coded as "Pref", which is still the default. The array type can be RGB/RGBA as well as VECTOR.

 

  • No labels