A living catchment
Real terrain on your GPU — rain carves it, fire runs with the wind. Drag to orbit; the terminal speaks english: try “make it storm”.
Catchment · Flagship I · How it works
A world that runs, burns and learns
Catchment is a WebGPU Earth engine. A real patch of terrain, the Byron hinterland, with working hydrology, erosion and fire, and a neural network trained to imitate the solver it runs beside. Everything happens on your own GPU, in hand-written WGSL compute shaders, with no server and no graphics library. It is the physical counterpart to Genesis, which grows life instead of landscapes.
The water
Rain falls on a digital elevation model and a shallow-water solver moves it downhill: flux between cells, velocity, erosion, sediment transport, deposition. Six compute passes per substep, several substeps per frame, every cell updated in parallel. Water finds the creeks on its own because the creeks are really there.
The fire
Ignite a hillside and a fire front spreads cell to cell, pushed by wind, pulled uphill by slope, starved by wet ground. Burnt fuel leaves a char scar that fades as vegetation regrows. Water and fire genuinely fight: heavy rain can put a front out, and a wind change can save a ridge.
The meteors
Hold to charge, release to strike. Small stony rocks, iron heavyweights that rebound a central peak, and volatile ones that arrive burning. Each impact digs a real crater in the bedrock, throws ejecta rays, shakes the camera and leaves a glow that cools from white through orange over a few seconds. The sim keeps the wound: water pools in your craters and fire runs along your scorch lines.
The neural operator
The headline act. A small convolutional network was trained offline on rollouts exported from this exact solver, then transcribed into WGSL so it runs as raw compute passes, no runtime, no ONNX, no library. Flip to Neural and the network predicts the water dynamics itself, seeded from physics once at switch-on. The error field shows exactly where the student drifts from its teacher, live, while both run.
The terminal
The controls are a terminal. Structured commands work — rain 60, meteor for 30s — but so does plain english: a ~26k-parameter intent model (hashed bag-of-features into a tiny MLP, trained in numpy on synthetic phrasings, shipped as 83 KB of quantised JSON) maps “make it stormy” to the right forcings, entirely on-device. Same rules as the surrogate: no runtime, no library, no server — and a parity gate that refuses the model if the browser ever disagrees with its trainer.
Honest limits
The network is a student, not a copy. It was trained for stability over long rollouts and for conserving mass, not for per-frame perfection, so it smooths what the solver sharpens. That gap is the point of the demo: you can watch where learned physics holds and where it lets go.
Tip: hold longer in Meteor mode for a bigger class of rock. Ask the terminal for worlds — there are more than the hinterland, and one is not on the list. Mariner 9 photographed it in 1971.