A shot needs a lazy drift of smoke across a lantern, dust motes swirling in a shaft of light, ripples skimming a pond, wind combing a wheat field, the flicker of a distant campfire. You could reach for a fluid solver — grid the air, march pressure and velocity, wait for it to bake. But for a background element that nobody is staring at, that is a sledgehammer for a thumbtack. The cheaper, older, and often more art-directable trick is procedural noise: coherent pseudo-random fields that look like turbulence, evaluated on demand at any point in space and time with a handful of arithmetic — no solver, no memory, no bake, and infinite non-repeating detail.
This page is about faking natural phenomena with noise instead of physics. We meet the building
blocks — coherent noise, fBm and turbulence, and
domain warping — then the beautiful special case of
curl noise, which advects particles as if the air were an incompressible fluid, with
no solver at all. Along the way we keep one honest fact in view: noise is not a
simulation. It builds on the coherent
White noise — an independent random number at every pixel — is useless for natural look: it is pure static, all high frequency, no shape. Natural phenomena have structure at a scale: a cloud is smooth up close and lumpy far out; smoke has big rolling masses carrying fine wisps. What we want is coherent, band-limited randomness — random, but smooth, so nearby points have nearby values and the field varies over a controllable length scale.
Perlin noise (Ken Perlin, 1983, and his 2001 simplex refinement) is the canonical example: interpolate random gradients placed on a lattice, so the output is smooth and has no visible grid. One octave of it is a gentle, blobby field — exactly the raw clay we sculpt with next.
A single octave is too smooth to read as nature. The fix is to sum copies of noise at increasing frequency and decreasing amplitude. Each copy is an octave: double the frequency, halve the amplitude. The result is fractional Brownian motion (fBm) — the self-similar roughness of coastlines, mountains and clouds.
The first octave lays down the big shapes; each further octave sprinkles finer, fainter detail on top.
The ratio of successive frequencies is the lacunarity (here
Turbulence is the same sum with the absolute value of each octave,
Because most natural rough surfaces have a power-law spectrum: energy falls off as
frequency rises, roughly as
Below is a genuine 1D fBm curve, computed live in your browser from a simple deterministic
value-noise (a hashed lattice, smoothly interpolated — no Math.random, so it is the same
every reload). The faint line is a single octave — smooth and blobby. The bold curve is the
fBm sum. Drag the octaves slider from
At one octave the curve could be a gentle hill; by five or six octaves it has the crinkled,
self-similar texture of a mountain ridge or a cloud edge — and every added octave contributes at most
Plain fBm is isotropic — wiggly, but without the flow of real smoke, where masses curl and
stretch. Domain warping adds that flow for almost free: instead of sampling the field
at
Feeding noise into the coordinates of noise drags the field around, producing the billowing, smeared, marbled tendrils that read as smoke and clouds. Nest it twice — warp the warp — and you get the swirling, organic look Inigo Quilez popularised for shader clouds. It is still just a stack of cheap noise calls; no dynamics, only a clever change of coordinates.
Here is the trick that makes noise look genuinely fluid. If you advect particles by a raw noise velocity field, they clump: the field has sources and sinks (non-zero divergence), so particles pile up in some places and thin out in others — the density goes blotchy, which the eye reads as "not a fluid". Real incompressible flow has zero divergence everywhere, which is what keeps smoke and dust looking evenly dense as they swirl.
Curl noise (Robert Bridson, Ringold & Marschner, SIGGRAPH 2007) gets that for
free. Take a scalar noise potential
The payoff: cheap smoke, dust, mist and magical swirls that swirl the way incompressible fluid does, evaluated per particle with zero global solve. Bridson's paper adds the neat extra that you can ramp the potential to zero near boundaries so the flow slides along obstacles — still with no solver. It is the workhorse of "fluid-ish" effects that don't need to be exact.
Why curl and not just "pick a divergence-free field"? Because the curl construction guarantees the property by identity, for any noise you throw at it — including fBm and domain-warped potentials — so you keep all the art-directable detail of noise and get incompressibility thrown in for free.
A still noise field is a texture; a moving one is an effect. Two standard ways to breathe life into it:
Combine the two — a slow scroll plus a slow evolve — and a curl-noise velocity field, and you have a living, swirling, evenly-dense ambient effect for a handful of noise calls per particle per frame.
This is the one misconception to nail. Noise looks like fluid, but it has no dynamics. There is no pressure, no incompressibility being solved (curl noise merely constructs a divergence-free field, it does not respond to anything), no collisions, no conservation of mass or momentum, no reaction to forces in the scene. A curl-noise smoke plume will happily pass straight through a wall, ignore a moving character, and never billow because of heat — it billows because you told it to, everywhere, unconditionally.
So the rule of thumb is: use procedural noise for ambient and background phenomena — distant clouds, atmospheric dust, gentle water shimmer, wind on grass, a flickering torch — where nothing needs to interact. When a phenomenon is a hero element that must collide, pour, splash against geometry, or respond to the action, simulate it with a real solver. Many productions do exactly this hybrid: solve the hero fluid, and fill the background with cheap noise. Noise is infinite, controllable and free; it is simply not physics.
| Dimension | Procedural noise | Fluid simulation |
|---|---|---|
| Cost | A few arithmetic ops per point; no bake | Grid/particle solve, heavy, baked |
| Detail | Infinite, non-repeating, any resolution | Limited by grid/particle resolution |
| Control | Art-directable knobs (octaves, gain, warp) | Indirect — tune forces, then re-solve |
| Interaction | None — ignores the scene | Collides, pours, reacts to forces |
| Accuracy | Plausible look only, no real physics | Conserves mass/momentum; physically grounded |
| Best for | Ambient / background phenomena | Hero elements that must interact |