# Noise Library

# What is a noise?

Let’s define noise like this: Noise is a function f(x) , such as any two values, f(x0) and f(x1) have no correlation unless x0=x1.

However, noises generated by Isara Tech’s plugins are coherent noises defined this way : Coherent noise is a function f(x) , such as any two values f(x0) and f(x1) are close together when x0 and x1 are close together, but do not correlate when x0 and x1 are far apart.

Using this definition, we can say: each noise generator available in Isara Tech’s plugins obeys to the same rules:

Passing in the same input value to a noise generator will always return the same output value (coherent noises)

A small change in the noise generator’s input value will produce a small change in the output value.

A large change in the noise generator’s input value will produce a random change in the output value.

## Noise library

In the following documentation articles, you will see 2D representation of noises (such as the checkerboard below).

For each representation, a black and white gradient has been used to easily understand pixels output values. When the color is black, the output value at this pixel is -1. When the color is white, the output color at this value is 1. All colors between these values are a linear interpolation. For instance, grey means an output value of 0.

Our noise library provides a lot of noises generators and noises functions such as modifiers and selectors. Using all these generation modules, you can create anything you want : 2D structures based on noises, 3D structures, use noises value to place assets, etc… There is no limitations.

Of course, our noise library can be used at runtime. You can create a 3D animated noise and move assets based on the noise movement.

## 2D Usage

Most of the time, you will use the noise library in 2D. Using X and Y values to get the height value on at wished coordinates. Use cases can be:

Heightmap generation

Texture generation

Random asset spawn based on noise value

And more…

The image below represents the sphere noise. A 20×20 grid of cubes has been generated, each cube height is defined by the noise value at this point.

## 3D Usage

Another use case of our noise library can be generation of 3D structures based on noise. For this usage, you can define a threshold value, if the noise value at wished 3D coordinates is above this value then, spawn a cube.

Here is an example with spheres modifier :