Interactive demo
Curl Noise
The curl of a noise field is a velocity field that never compresses or expands, like an incompressible fluid. Particles that follow it swirl like smoke but never bunch up, which makes curl noise a favorite for visual effects.
Switch the field to Gradient: the particles now run uphill and gather on the peaks of the noise. In the curl field they follow its contour lines instead.
Controls
Display
Legend
- Particle trails
- Noise field (potential), light = high
- Flow direction
Noise types compared
| Noise | Output | Built from | Work per sample | Smooth |
|---|---|---|---|---|
| Value Noise | Scalar field | Random values on a grid | 4 grid points | Yes |
| Perlin Noise | Scalar field | Random gradients on a grid | 4 grid points | Yes |
| Simplex Noise | Scalar field | Gradients on a triangle grid | 3 corners | Yes |
| Worley Noise | Scalar field | Random feature points | 9 to 25 cells | No |
| Blue Noise | Point set | Random candidates around existing points | Up to 30 tries per point | – |
| Fractal Noise | Scalar field | Octaves of a base noise | 1 base noise per octave | Yes |
| Diamond-Square | Heightmap | Displaced midpoints of a grid | 4 neighbors per point | No |
| Colors of Noise | Signal or image | White noise filtered by frequency | 1 FFT for all samples | – |
| Domain Warping | Scalar field | Fractal noise at warped positions | Up to 5 fractal noises | Yes |
| Curl Noise this page | Vector field | Derivatives of a noise field | 4 noise samples | Yes |
| Noise Terrain Generator | Heightmap | Stacked noise layers | Layers × octaves | – |
1. Curl of a potential
The noise ψ(x, y) serves as a potential. The velocity is v = (∂ψ/∂y, −∂ψ/∂x), the gradient turned by 90°. It runs along the contour lines of ψ, so the particles circle around the highs and lows of the noise.
2. No sources, no sinks
The divergence of this field is zero everywhere: as much flows into every small area as flows out of it, so the particles stay evenly spread. The gradient field (∂ψ/∂x, ∂ψ/∂y) has sources and sinks, and the particles pile up in its sinks.
3. Around obstacles
To make the flow avoid an obstacle, the potential is multiplied by a smooth ramp of the distance to it. On the boundary the potential becomes zero, so the boundary is a contour line and the flow glides along it instead of passing through.
Credits
- Based on Curl-Noise for Procedural Fluid Flow by Robert Bridson, Jim Hourihan and Marcus Nordenstam (SIGGRAPH 2007), including the ramp that bends the flow around obstacles.