The fluid carries itself.
Every point in the field asks one question: where was I a moment ago? It reaches backward along the flow and pulls that colour forward. Do it for every pixel, every frame, and motion becomes a medium.
A real fluid solver running sixty times a second — advection, pressure projection, vorticity — entirely on the GPU. Drag your cursor and stir the colour. It obeys the same equations as water.
Every point in the field asks one question: where was I a moment ago? It reaches backward along the flow and pulls that colour forward. Do it for every pixel, every frame, and motion becomes a medium.
Real fluid cannot pile up. A pressure solve runs twenty-two times a frame, pushing back wherever the flow tries to compress, until the field is perfectly divergence-free — the single step that makes it feel like water instead of smoke.
Numerical fluids lose their swirl too fast. So we measure the spin at every point and feed a little of it back in — vorticity confinement — and the eddies keep turning, the way they should.
Move across the field and you inject both colour and momentum. The solver does the rest. No two strokes ever settle the same way.
Each cell traces its velocity backward and samples the colour it came from — unconditionally stable at any timestep.
Twenty-two relaxation passes approximate the pressure that keeps the velocity field incompressible.
Curl is measured and re-injected so small eddies survive instead of smearing away.
Velocity, dye, pressure and divergence each live in float textures, read and rewritten every frame.
Your cursor injects a gaussian of dye and force; an ambient jet keeps the tank alive when you are still.
Nine hand-written GLSL passes, manual render targets. Honors prefers-reduced-motion.