# Perlin Noise

Menu Path : **Operator > Noise > Perlin Noise**

The **Perlin Noise** Operator allows you to specify coordinates to sample a noise value within a specified range in one, two, or three dimensions. Perlin noise is a type of gradient noise which has a good distribution of values which makes it rarer to have similar adjacent values.

![Three cubes representing one, two, and three dimensional noise.](Images/Operator-PerlinNoiseAnimation.gif)

You can use this Operator to introduce variety to your particle attributes. A common use case is to use each particle’s position as a coordinate to sample the noise to output a new color, velocity, or position value.

## Operator settings

| **Property**   | **Type** | **Description**                                              |
| -------------- | -------- | ------------------------------------------------------------ |
| **Dimensions** | Enum     | Specify whether the noise is one, two, or three dimensional. |
| **Type**       | Enum     | Specify what type of noise to use.                           |

## Operator properties

| **Input**      | **Type**                      | **Description**                                              |
| -------------- | ----------------------------- | ------------------------------------------------------------ |
| **Coordinate** | Float<br/>Vector2<br/>Vector3 | The coordinate in the noise field to sample from. <br/>![A cursor moving across the noise field, showing the different coordinates.](Images/Operator-PerlinNoiseCoordinate.gif)<br/>The **Type** changes to match the number of **Dimensions**. |
| **Frequency**  | Float                         | The period in which Unity samples the noise. A higher frequency results in more frequent noise change.<br/>![As the value of the frequency increases, the noise increases.](Images/Operator-PerlinNoiseFrequency.gif) |
| **Octaves**    | Int                           | The number of layers of noise. More octaves create a more varied look but are also more resource-intensive to calculate.<br/>![As the value of the octaves increases, the noise is more varied.](Images/Operator-PerlinNoiseOctaves.gif) |
| **Roughness**  | Float                         | The scaling factor Unity applies to each octave. Unity only uses roughness when **Octaves** is set to a value higher than 1.<br/>![As the value of the roughness increases, the noise is more visibly detailed.](Images/Operator-PerlinNoiseRoughness.gif) |
| **Lacunarity** | Float                         | The rate of change of the frequency for each successive octave. A lacunarity value of 1 results in each octave having the same frequency.<br/>![As the value of the lacunarity increases, the noise is more visibly detailed.](Images/Operator-PerlinNoiseLacunarity.gif) |
| **Range**      | Vector2                       | The range within which Unity calculates the noise. The noise stays between the X and Y value you specify here, where X is the minimum and Y is the maximum.<br/>![As the range increases, the noise is more visible.](Images/Operator-PerlinNoiseRange.gif) |

| **Output**      | **Type**                      | **Description**                                              |
| --------------- | ----------------------------- | ------------------------------------------------------------ |
| **Noise**       | Float                         | The noise value at the coordinate you specify.               |
| **Derivatives** | Float<br/>Vector2<br/>Vector3 | The rate of change of the noise for every dimension.<br/>The **Type** changes to match the number of **Dimensions**. |
