Morphogen

two chemicals · one rule · every form here

Phase space  (drag)—
↔ feed f  ·  ↕ kill k  ·  everything lives on the curve
feed  f0.0000
kill  k0.0000
scale1.00×
Regimes
Palette
relief1.00
glow  (reaction rate)0.65
bloom0.55
tempo18×
brush0.05
What am I looking at
Two substances share a dish. A is fed in from everywhere at rate f. B is drained away at rate f+k. And B is autocatalytic — it eats A to make more of itself, two molecules at a time:
A + 2B  →  3B
That's the whole story. Both diffuse, but A spreads twice as fast as B — and that single asymmetry is the crack the universe pries open to make structure.
∂ₜA = Dₐ∇²A − AB² + f(1−A)
∂ₜB = D_b∇²B + AB² − (f+k)B
Turing proposed this shape of equation in 1952 as an answer to how a featureless ball of cells becomes a leopard. He was right, and he never got to see it run.

The curve on the phase map is k = √f⁄2 − f, the exact place where the two nontrivial steady states of the reaction collide and annihilate — below it the dish has three possible resting states, above it only one, the dead one where B is gone.

What's strange, and worth staring at: the interesting patterns don't hide safely below that line. They straddle it. Mitosis, worms, solitons all sit just above, in territory where the equations promise nothing can persist. They persist anyway — not by resting, but by never stopping. A spot there can't settle, so it splits. That's the whole trick of the self-replicating regime, and it only happens because the resting state was taken away.

Scale sets how big the pattern wants to be. Feature size goes as √D, so the slider is just D = scale² — but raising diffusion shrinks the stable timestep, so the clock slows and the step count climbs to compensate. Nothing about the chemistry changes; only the grain does.

Glow is not brightness — it's |∂B/∂t|, the rate the reaction is running, kept as a short decaying trace. Settled structure goes dark; only what is currently becoming something lights up. Pause, and the picture cools.

Keys   space pause   r reseed   c clear   a atlas   d drift   p palette   h hide UI   s save   1–9 regimes

Mouse   drag to seed B · right-drag to erase · wheel to size the brush
This needs WebGL2 with float render targets.
Try a desktop Chrome, Firefox or Safari 15+.