Fork me on GitHub

Choosing one of the presets in the dropdown list will initialize the other parameters with predefined values in order to obtain the chosen effect.

This value is used to initialize the pseudorandom number generator.

It can be any string, even an empty one.

It can be any string, even an empty one.

This parameter controls how noise is mapped to colors in the final image.

If**greyscale** is chosen, the same noise function is used for all the three color components (RGB), resulting in shades of gray.

All the other values use three statistically independent noise functions for the three color components.

The only exception to this is**gradient**, which can either use three or one noise functions depending on whether the **indipendent** flag is selected or not, respectively.

With**RGB**, the noise functions are directly mapped to the three color components, while with **HSL** and **HSV** they are previously converted from the respective cylindrical coordinates to RGB.

**gradient** can be used to constrain the color shades inside the colors of a gradient, which can be specified using the **Gradient Start** and **Gradient End** parameters.

If

All the other values use three statistically independent noise functions for the three color components.

The only exception to this is

With

If this flag is selected, three statistically independent noise functions will be used for each color component; a single noise function will be used otherwise.

Click the box on the right to choose the gradient start color.

Click the box on the right to choose the gradient end color.

This parameter control which algorithm is used for generating the noise value at each point.

See for reference:

See for reference:

This function is used to "smooth" the transition between on noise value and the other in the noise lattice.

More specifically, given a distance**d** value between two integer noise values in the range [0, 1]:
**hermite** smoothing was used in the original implementation of classic Perlin noise, while **quintic** was used in the improved version of the same.

More specifically, given a distance

**cosine**: 0.5 * (1 + cos((1 -**d**) * π))**hermite**: 3**d**^2 - 2**d**^3**quintic**: 6**d**^5 - 15**d**^4 + 10**d**^3

Each octave value is passed through this function. Available options are:

**none**: the value is left untouched;**absolute**: the value is scaled in the range [-1, 1], the its absolute value is returned;**custom**: you can manually set the function that will be used.

Here you can provide the actual body of the javascript function that will be applied to octave values.

The function takes three arguments:

The function declaration (

An example could be:

The function takes three arguments:

**n**: the octave value, in the range [0, 1];**x**: the x coordinate of the value being computed;**y**: the y coordinate of the value being computed;**o**: the 1-based number of the octave being computed.

The function declaration (

`function(x, y, z, o){`

) and closing bracket are automatically added respectively before and after your code, so you must not write them.An example could be:

`return Math.cos(y + n * x);`

Each fractal sum value is passed through this function. Available options are:

**none**: the value is left untouched;**sine**: the value is summed to the X coordinate multiplied by the**Sine Frequency**factor below, the the sine of the resulting value is computed and scaled to the range [0, 1];**modular**: the value is multiplied by the**Amplitude**factor below, then its decimal part is returned;**custom**: you can manually set the function that will be used.

Here you can provide the actual body of the javascript function that will be applied to fractal sums.

The function takes three arguments:

The function declaration (

An example could be:

The function takes three arguments:

**n**: the octave value, in the range [0, 1];**x**: the x coordinate of the value being computed;**y**: the y coordinate of the value being computed;

The function declaration (

`function(x, y, z, o){`

) and closing bracket are automatically added respectively before and after your code, so you must not write them.An example could be:

`return Math.cos(y + n * x);`