WebGL
Ride the swell, not a stock clip
The surface is a Gerstner sum built from the same height, period and heading the rest of the app uses. It only breaks where the water is shallow enough, and the peel travels at c = √(g·depth) — so what you are holding onto is a consequence of the tide, not a scripted animation.
Live surface
Live live read at 00:00 local, Pago Pago. The engine rated this hour 61%.
Honest limits
What this scene is and is not
- It is: a Gerstner surface with real swell parameters, a real seabed profile, breaking at the real 0.78 depth ratio, and a peel speed taken from the engine's own physics. The numbers in the panel beside it are the engine's numbers.
- It is not: a CFD simulation, and the riding is a score rather than a physics engine with a real surfer on it. Take the water model seriously and the gameplay lightly.
- Keyboard first: it is fully playable with A/D, W, S and Space. It also responds to the arrow keys. There is nothing here that only works with a pointer.
- Reduced motion: if your system asks for reduced motion the scene still runs, because it is the only way to interact with it. Everything else on the site respects that setting.
Attach a ride
Open the lab from one of your sessions
You have no sessions yet. Commit an hour from a break page and it will show up here — then any ride you log is written to that session through the same endpoint the agent's log_ride tool calls.