# Noise Library

### The Noise Library is available here: https://www.unrealengine.com/marketplace/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 :