
The dash relief
WebGL, 3D, Hover
NewLifetime
The pointer moves over the paper like a wet brush: where it passes the paper turns into ink, a real WebGL fluid, and underneath the same word appears, inflated like a silver balloon. Then the paper closes again.
A folder that runs on its own: index.html, style.css, script.js and the libraries from a CDN.
The code for this animation is part of lifetime access.
The preview stays open: watch it, slow it down, try it on your phone.
Lifetime accessVelocity, pressure and ink are half-precision textures (RGBA16F) drawn by one full-screen triangle. Every frame: vorticity, divergence, twenty Jacobi steps for the pressure, gradient subtraction, then the velocity carries itself and the ink. It is Jos Stam’s stable fluids method.
Every pointer movement pours two Gaussian splats at the same point: into the velocity, equal to the movement counted in grid cells times the push, and into the ink. The brush is 7.5% of the word’s font size. On fast strokes the splats repeat along the segment, so the trail has no holes.
The ink is soft, but the screen cuts it at 0.5 after multiplying it by 3.9, with a smoothstep just one screen pixel wide (fwidth): a torn-paper edge, without steps. The ink loses 1.2% every sixtieth of a second and falls below the threshold after about three seconds: the paper closes.
The same word is drawn white on black on a 2D canvas, at the exact position of the letters on the page, then blurred three times and put through a square root: a height map with steep sides and a round top. Its slopes give the normals, and the normals reflect a horizon, light sky above and dark ground below: metal.
| Name | File | Default | What it changes |
|---|---|---|---|
SPINTA | script.js | 6 | How hard the brush pushes the fluid: the velocity poured is the pointer’s movement, counted in grid cells, times this number. |
PENNELLO | script.js | 0.075 | Brush radius, as a fraction of the word’s font size: that way the trail stays in proportion on phones too. |
RESTA_INCHIOSTRO | script.js | 0.988 | How much ink is left every sixtieth of a second: the closer to 1, the longer the trail lasts. |
RICCIOLI | script.js | 12 | How much the fluid curls. With 0 no vortices. |
GONFIO | script.js | 5 | How rounded the silver word is. |
For the first screen of a brand with a strong word: the simplest gesture, moving the mouse, becomes a game with the logo. Avoid it over text meant to be read.
The finger paints. The fluid uses a smaller grid and fewer steps, and the canvas works at a density of 1.5 at most. Inside an iframe a vertical finger stays with the page: it only paints sideways.
No fluid and no ghost brush: the silver word shows in a still circle under the pointer.
GSAP 3.15.0, Mona Sans (font variabile) 5.3.0.
Weight: 28 KB of our own files.
Tested on 27 September 2026
Use it in your own projects and in your clients’ projects. Do not resell it or redistribute it as is. GSAP stays under its own Standard license. Full license.
With your account’s email and password.
You’re signed in as .
Your plan is free. When lifetime access arrives, it will switch on for this same account.