Perlin Noise Abstract Art Generator
Generate unique abstract art using Perlin noise with fractal Brownian motion. Customize octaves, scale, palettes, and export as PNG.
About
Perlin noise, introduced by Ken Perlin in 1985 and refined in 2002, produces coherent gradient noise that avoids the visual artifacts of white noise. This generator implements the improved algorithm with a permutation table of 256 entries and the smoothstep fade function f(t) = 6t5 − 15t4 + 10t3. Fractal Brownian motion (fBm) layers multiple octaves of noise at increasing frequency and decreasing amplitude, controlled by lacunarity and persistence. Misconfigured parameters produce mud: too many octaves with high persistence saturate contrast, while low scale values collapse detail into uniform color. The tool maps noise output through curated color gradients. Results depend on the interaction between seed, scale, and octave count. This approximation assumes 2D sampling on a regular grid and does not account for tiling or seamless wrapping.
Formulas
The improved Perlin noise function evaluates gradient noise at point (x, y) using the quintic fade curve and bilinear interpolation of gradient dot products:
Fractal Brownian motion sums n octaves with frequency doubling and amplitude decay:
For ridged noise, the absolute value is inverted to create sharp crease lines:
For turbulence, the absolute value produces billowing cloud forms:
The final noise value is normalized to [0, 1], then contrast and brightness are applied:
Where p = persistence, L = lacunarity, n = octave count, C = contrast multiplier, B = brightness offset. The output vout indexes into the selected color palette gradient for final pixel color.
Reference Data
| Parameter | Range | Default | Effect |
|---|---|---|---|
| Scale | 1 - 500 | 80 | Zoom level of noise pattern. Lower values produce tighter, more detailed features. |
| Octaves | 1 - 10 | 6 | Number of layered noise passes. Each adds finer detail at cost of computation. |
| Lacunarity | 1.0 - 4.0 | 2.0 | Frequency multiplier per octave. Higher values increase detail separation. |
| Persistence | 0.1 - 1.0 | 0.5 | Amplitude multiplier per octave. Higher values retain more fine detail contrast. |
| Seed | 0 - 65535 | Random | Initializes permutation table shuffle. Same seed reproduces identical output. |
| X Offset | −1000 - 1000 | 0 | Horizontal translation across the noise field. |
| Y Offset | −1000 - 1000 | 0 | Vertical translation across the noise field. |
| Width | 256 - 2048 px | 800 | Output canvas width in pixels. |
| Height | 256 - 2048 px | 600 | Output canvas height in pixels. |
| Contrast | 0.5 - 3.0 | 1.0 | Post-processing contrast multiplier applied before color mapping. |
| Brightness | −0.5 - 0.5 | 0.0 | Post-processing brightness offset added before color mapping. |
| Noise Type | Standard, Ridged, Turbulence | Standard | Standard uses raw fBm. Ridged inverts absolute value for sharp creases. Turbulence uses absolute value for cloud-like forms. |
| Gradient Stops | 2 - 6 | Palette-dependent | Number of color anchors in the mapping gradient. |
| Total Pixels | 65,536 - 4,194,304 | 480,000 | Width × Height. Computation time scales linearly with pixel count. |
| fBm Amplitude Sum | Varies | - | Normalization divisor: 1 − pn1 − p where p is persistence and n is octaves. |