Technicolor Ink in Black Water: A Live GPU Fluid Simulation by Supreme DreamTechnicolor Ink in Black Water: A Live GPU Fluid Simulation by Supreme Dream

Technicolor Ink in Black Water: A Live GPU Fluid Simulation

Supreme Dream

Supreme Dream

Ink dropped into water is one of the most filmed effects in advertising, and it usually means a tank, a macro lens and a day of reshoots. We built it as code instead: a real fluid simulation that runs in a browser tab and answers your hand.
Fluid Ink is chapter 15 of the GiveMePrompts Lab, live on the studio site, and the same ink system drives a scene in the studio reel. It is studio R&D, not client work.

The brief

Make ink that behaves like ink. Thin filaments must stay thin instead of smearing into fog, two colours that meet should blend through the spectrum rather than turn grey, and the whole thing has to run live, on a laptop, with no plugin.
Code to frame: the seven tunables that shape the water, next to a frame the solver rendered live
Code to frame: the seven tunables that shape the water, next to a frame the solver rendered live

The idea

Treat the screen as a tank. Every click drops a splat of pigment and a push of velocity. Every drag stirs. Vorticity confinement keeps re-inforcing the small curls, which is what gives the plumes their mushroom and tendril shapes. Four palettes change the pigment without changing the physics.
Live capture: ink dropped and stirred in the chapter, green and amber plumes rolling into each other
Live capture: ink dropped and stirred in the chapter, green and amber plumes rolling into each other

How it is built

It is a stable-fluids solver in WebGL2. Velocity and pressure live on a coarse grid, 128 cells on the short side, while the dye lives on a finer grid of 640, so the colour stays sharp while the physics stays fast. Each tick runs a curl pass, vorticity confinement, 22 Jacobi pressure iterations, then advection. Dye is advected with a limited MacCormack scheme, which is the reason filaments survive.
The simulation always advances exactly 1/60 of a second per step and its event schedule is keyed to the step count, so live playback and frame-by-frame capture produce the same picture. That makes it usable for film as well as for the web.
Live capture: a second session, crimson ink spreading through dark water
Live capture: a second session, crimson ink spreading through dark water
Live capture: a magenta plume curling back on itself after a stir
Live capture: a magenta plume curling back on itself after a stir

What a client gets

Liquid motion in your brand colours without a shoot: an interactive hero for a launch page, a loop for a product reveal, or deterministic renders cut to music for a spot. Because the frames are computed, a change of colour or timing is an edit, not a reshoot.

Work with us

If your brand should feel fluid, tell us where it needs to move.
Try it live: Fluid ink on givemeprompts.com. Drag to pour.
Like this project

Posted Oct 4, 2026

A stable-fluids solver running in the browser. Click to drop ink, drag to stir, and the colours curl and blend in real time. Studio R&D.