# Notes on Noise

Types of Noise:

Attribute Noise SOP

Simplex:

Similar to Perlin Noise, but has fewer artifacts and has more improvements from a classic noise function. It can be scaled to higher resolutions than regular noise, lower computational complexity, and has a continuous gradient. It was first created by Ken Perlin in 2001. Also the creator of Perlin Noise!

Classic Noise formulas interpolate gradients together to create patterns based on their direction in 3D/2D space. Whereas Simplex Noise takes these gradients and dives them into triangles. This triangle pattern is called simplices.

Sparse Convulsion:

Traditionally, this is a type of noise that uses something called Sparse Gabor Convolution. This means it is based on random numbers, such as other types of noise. But It also samples these numbers “sparsely”. So it doesn’t sample all of them. This type of sampling is also known as white noise. But it can be computationally expensive.

In Houdini, Sparse Convolution Noise is similar to Worley Noise. It bases it’s patterns off of the turbulent weights of the closest points on the geometry.

Perlin Flow:

This type of noise can generate non-repeating patterns. It operates in the same way as Perlin Noise. Perlin Flow noise is designed to create 1D or 3D patterns based on 3D data. It titles patterns over a set amount of 3D space, and is customizable based on its offset and frequency.

Perlin:

This noise is based on gradients. It takes the gradients and calculates the vectors on the geometry it is going to project the noise onto. Then it computes a dot product function between sets of gradients to determine a pattern. It is also related to lattice gradient noise patterns. It was first invented in 1985 by Ken Perlin. It is a standard noise pattern that is used in almost every type of computer graphics software. It is mainly used to create natural and chaotic textures.

It can be used as a 2D, 3D, and 4D function to create patterns.

In Houdini, perlin operates pretty much as described above. The improved function for it in Houdini sums the octaves of the noise pattern in a range between 0 to 1. In VEX you can call this noise pattern with the function: onoise.

There is also the original Perlin Noise function in Houdini. The original version is less efficient and it’s bounds are between -1 to 1. So you will have to use a fit VOP node to center it between 0-1 if you want. You can call it in VEX with the function: pnoise.

Alligator:

In Houdini Alligator Noise is similar to Worley Noise. It’s bounding regions are between the numbers: 0, 0.5. You can call Alligator Noise in VEX by using the function: "anoise".

Fast Noise:

In Houdini, this type of noise is a variant of Perlin Noise. It still uses the same algorithm, but is faster. It also creates a different variant of Perlin Noise with larger bumps.

F1 Worley Cellular:

Worley Noise was first created by Steven Worley in 1996. It is used to create procedural textures and patterns. It’s basic formula creates a pattern that resembles cells or stones clumped together.

In Houdini, F1 Worley Cellular Noise is designed to generate patterns that resemble waves, plant cells, or basic landscape features.

F2-F1 Worley Cellular:

In Houdini, this Worley pattern follows the basic structure as a regular Worley function. However, this variation is designed to produce patterns that produce very blunt and jagged features. Almost like a soft pointy stone.

Manhattan F1 Worley Cellular:

In Houdini, this noise type uses a function called the Manhattan distance calculation. It is great for generating unusual noise patterns.

Manhattan F2-F1 Worley Cellular:

In Houdini, this type of noise does the same thing as the Manhattan F1 Worley Cellular pattern. However, it adds more randomness and variation to the shapes generated.

Chebyshev F1 Worley Cellular:

In Houdini, this type of noise uses a function called the Chebyshev distance calculation. It is a great pattern for generating very rough random noise.

Chebyshev F2-F1 Worley Cellular:

In Houdini, This noise is the same type of Chebyshev F1 Worley Cellular. However it adds more variation and more randomness into the noise.

Attribute VOP Noise Types:

Cell Noise:

In Houdini, Cell noise is designed to look like cells. It is similar to Vorinoi noise because of the way it calculates it’s patterns. This noise is Anti-Aliased, so it is very suitable for certain shaders.

Anti-Alias Noise:

In Houdini, This noise type uses a fractional brownian motion to compute noise patterns. (Same goes for the Anti-Alias Noise VOP) It creates banding patterns that are based off of this fractional frequency. The max Octaves parameter on the VOP node controls the number of iterations of the noise.

The difference between Anti-Aliasing and Aliased Noise is that Anti-Aliasing smooths out any jagged edges the pattern might have, and averages the colors of the pixels. Aliased Noise does not do this.

Anti-Aliased Flow Noise:

This node operates in the same way as the regular Anti-Alias Node, It still uses fractional brownian motion to compute it’s patterns. But it also adds flow noise into the mix. Therefore, the node has extra parameters for this function. The flow noise adds more detail on top of the Anti-Alias noise, and also advects the frequencies of the noise to make them “darker” or “lighter” than they usually would be.

Curl Noise:

Curl noise is used a lot in fluid simulations and for a lot of atmospheric studies as well. It is used for modeling turbulent flows, because of its ability to mimic large storms or high intensity areas. It is also great for generating velocity fields.

In Houdini, the Curl Noise VOP node uses a Perlin noise function to operate. It generates 3D noise, and has four parameters for you to control the noise shapes even more. These inputs are Step Size (h), Surface Effect Radius (d), Distance to Surface (dist), and Surface Normal (N).

Flow Noise:

Regular Flow noise is the opposite of Perlin Flow Noise. It does not repeat the patterns it generates in 3D space, rather it generates a series of random patterns over it’s set N-space in the software. In Houdini, the Flow Noise VOP node has an extra parameter for you to control the “flow” of the patterns. This pattern rotates the noise vectors and avects them in the noise’s space.

Outside of Houdini, it is used a lot in calculating Bernouli’s Principle, flow rates for liquids, sheer waves, and Aeroacoustics.

Periodic (Perlin) Noise:

This Node is sort of the opposite of a normal Perlin noise function. It creates easy tileable repeating patterns. It doesn’t really work well with other parameters such as turbulence, roughness, or amplitude.

Periodic Worley Noise:

This node in Houdini operates by using Poisson distribution to scatter points across a surface. It is not anti-aliased, so it has a few jagged edges in it’s patterns. But it’s main pattern appears as cells. When calculating the distance between points, it has three methods it can use. These methods are Euclidean, Manhattan, and Chebyshev. It also operates on the same operating system as Worley noise.

Turbulent Noise:

In Houdini, the Turbulent Noise VOP is designed to output multiple noise types. These noise types are Perlin, Sparse Convolution, Alligator, Simplex, and much more.

Worley Noise:

This is one of the oldest computer generated types of noise. Worley noise creates textures of stone, water, and biological cells. It randomly distributes patterns across points. It tries to mimic Poisson distribution as much as possible. It calculates the distance between points and then, creates gradients based on the calculated distance. Steven Worley wrote about this algorithm in his paper: A Cellular Texture Basis Function.

In Houdini, Worley Noise can be controlled through various noses, but also through the Worley Noise VOP node. It is not Anti-Aliased and isn’t too great with textures.

Voronoi Noise:

Voronoi noise is based on Voronoi patterns. These patterns are cells based off of Delaunay triangulation. The noise is controlled by the number of cells in the calculated space.

In Houdini, there is a Voroni VOP node that generates this pattern. But there are also other ways you can make it in the software. It is a heavier form of noise, and does need some computational effort to calculate.

Unified Noise:

In Houdini, the Unified Noise VOP node has a lot of functions. Unified noise is a mash of many different pattern generators. These generators contain fractals, band pass filters, and folding. This allows you to generate many different abstract results with the node. It offers most patterns in Houdini to be normalized from 0 to 1 or -1 to 1. The noise functions sometimes give artifacts or an area of static results around offset 0, so you want to always begin designing your noise with non-zero values in the offset.

Unified Noise Static:

This node is the same as the Unified Noise VOP. However, the noise and fractal type of the VOP cannot be changed, and are set as constants. It is a lot faster to optimize than the Unified Noise VOP, but it doesn’t work well inside of HDAs.

Curl Noise 2D:

This Noise allows you to generate divergent free noise in 2D space. It adds curl noise and Perlin noise functions together to create noise flows around a given object. It also has the same inputs as the Turbulent Noise operator. So the node is very customizable.

Pyro Noise:

This node multiplies values on top of your Unified Noise VOP. It also allows you to convert your noise into a vector or a float, depending on what works with your pyro simulation. This also makes the noise easier to control in an interface setting.

Mountain SOP:

Sinusoid:

In Houdini, this noise type is based around Sin Waves! Pretty straight forward. But it’s not actually a type of noise. It is used more as a diagnostic tool than anything else. It outputs between a range of 0 to 1.

Fractal Types:

Fractal types are designed to layer noise patterns on top of your previously chosen noise pattern.

Hybrid Terrain: This version is similar to the Terrain function but it does not smooth out any valleys, and just adds chaos. :)

Standard fBm: This standard pattern adds pseudo-random noise into the mix. This just means it adds a certain amount of statistical randomness into the equation. The fBm stands for Fractional Brownian motion. Which is the motion it uses to calculate it’s pattern.

Terrain: This function is mainly used for terrain generation as it removes any noise from deep valleys that your terrain has generated,and is great for generating mountains.

Noise History:

Ken Perlin: Ken Perlin is responsible for revolutionizing textures. He has received numerous awards in the field of computer science, and has many other achievements besides creating noise patterns. He is a professor in the Department of Computer Science at New York University. He also founded their Media Research Lab as well. He has been honoured with an Academy Award for Technical Achievement for Perlin Noise in 1997, and also presented at SIGGRAPH in 1985.