Skip to content
FoundationSource checked

Perlin Noise

Generates smooth random-looking variation over space.

Quick Facts

Compact metadata for implementation and discovery.

Category
Procedural Generation
Difficulty
Intermediate
Family
Coherent Noise
Tier
Foundation
Status
Verified
Review
Source Checked
Sources
2
Formulas
1
Relationships
8
Code example
Not ready
Visualization
Ready
Aliases
Gradient Noise

Overview

Perlin Noise assigns gradients to grid points and blends their influence to create coherent noise.

Core Concepts

gradient latticesmooth interpolationnoise octaveseeded fieldgenerated structuresmooth noise fieldrendered imagecoherent noise

Quick facts

Complexity

Runtime and memory behavior at a glance.

Best

O(1)

Average

O(1)

Worst

O(1)

Space

O(g)

When to Use

  • Use it when smooth, repeatable pseudo-random variation is needed.
  • Use it for terrain, textures, clouds, and procedural animation parameters.
  • Use multiple octaves when richer fractal detail is desired.

When Not to Use

  • Avoid it when white-noise independence is required.
  • Avoid it when authored control matters more than procedural variation.
  • Avoid visible grid artifacts by choosing scale and interpolation carefully.

What It Does

  • Creates smooth noise values
  • Blends local gradient contributions

Use Cases

  • Terrain generation
  • Texture variation
  • Natural-looking animation

Inputs

  • Coordinate
  • Gradient grid
  • Scale or frequency

Outputs

  • Noise value

Key Formulas (1)

Interpolation

value = lerp(dot(g0, d0), dot(g1, d1), fade(t))
value = lerp(dot(g0, d0), dot(g1, d1), fade(t))

Blends gradient dot products with a smooth fade curve.

Pseudocode

  1. 1.Find the grid cell containing the coordinate
  2. 2.Get gradients at the cell corners
  3. 3.Compute each corner's influence
  4. 4.Smoothly interpolate the influences
  5. 5.Return the blended noise value

Canonical Example

Input
coordinate = (2.3, 4.7), seeded gradient grid
Output
a smooth noise value
Explanation
The value blends gradient influences from the corners of the containing grid cell.

Implementation Notes

  • Find the lattice cell containing the query point.
  • Hash cell corners to deterministic gradient vectors.
  • Interpolate corner influences with a smooth fade function.

Common Pitfalls

  • Using a scale that makes grid structure visible.
  • Forgetting to seed or hash gradients deterministically.
  • Adding octaves without controlling amplitude, frequency, and range.

Interactive Mechanism Walkthrough

Spatial Primitive & Sweep-Line Canvas

Show smooth grayscale noise forming from grid gradients.

Perlin Noise mechanism walkthrough step 1 of 5
Step 1 of 5: Find the grid cell containing the coordinate
coherent-noise

Notes

Layering octaves of Perlin noise creates fractal-looking variation, but the output range should be normalized if downstream code expects bounds.

Sources (2)

What each reference supports for this entry.

Perlin Image Synthesizer

Paper

Original Perlin reference for coherent procedural noise and solid textures.

Open source

Texturing and Modeling: A Procedural Approach

Book

Procedural-generation reference for Perlin Noise's noise, texture synthesis, and terrain/shape generation use cases.

Explore Next

Good next jumps from the relationship graph, ranked for useful discovery.

GeneralizesGradient Noise

Perlin Noise is a classic gradient-noise construction.

Alternative toSimplex Noise

Both produce coherent gradient-based noise.

Tags

Procedural GenerationNoiseGraphics