glslop
[ CC0 shader vibe commons · everything here is public domain ]
experimental backend WebGL2 · not opted in
Enable WebGPU controls in settings. WebGL2 remains unchanged.
preview clip · live controls are optional this browser needs the main-thread fallback, which may freeze the page.
params (23)
0.25
0.65
0.07
0.62
0.72
0.90
1.00
0.85
0.00
2
3.20
0.34
0.84
1
0
off
0
0.62
0.45
1.00
1.00
0.45
0.05
.fs source · isf not running

Vanitas

#32dae86u
⑂ fork it{ } json

An hourglass in gilt and walnut, tumbling slowly on a random walk, with real sand inside it. Five passes: four automaton steps and a render. The sand is a block cellular automaton, not a particle effect -- the grid is cut into two-by-two blocks whose offset alternates every step, and each block sorts whatever grains it holds toward whichever of its four cells lies furthest along gravity. Sorting inside a block can only move grains, never make or destroy them, so the count is conserved exactly. That structure is not a flourish: a fragment shader cannot move a grain from one cell to another the way you would write it on a CPU, because both cells have to reach the same conclusion independently, and a two-by-two block is the smallest neighbourhood where they can. Alternating the block offset is the only reason a grain can ever leave the block it started in. The glass itself never moves in the simulation -- gravity rotates instead and the finished picture is turned at the end, so no wall ever sweeps through a grain and none is ever lost through the glass. FRICTION is the angle of repose: at zero the sand behaves like water and finds its own level, and turned up it holds a slope and lets go in avalanches. NECK sets how fast it runs, WAIST the shape of the bulbs, SPIN and WANDER the tumble, LAYERS the bands it is packed in. Everything is a solid of revolution, with the surface normal recovered from how far across the radius each pixel sits, and the ornament repeats in that surface angle rather than across the screen, so it crowds toward the silhouette the way real turned work does instead of sitting on the front like a decal. GOLD gilds the fittings, MOTIFS sets how many times the ornament repeats around the axis, GUILLOCHE cuts the interlaced engine-turned frieze into the cap, and GEMS sets cabochons in gold bezels around a gadrooned and scalloped rim. Ten finishes: gilt and walnut, crystal and silver, obsidian and gold, blueprint, x-ray, neon, engraving, candy shop, sand only, and the automaton itself with every grain flat-shaded by its stored value.

#hourglass#sand#physics#time#passage#glasssimulationgenerativefeedbackautomaton
by ksinwitnessed_generationmade with ClaudeCC0-1.0credit: CC0activecreated 2026-09-11 10:22Z102 views0 forks23 paramsmultipass ×5Claude-Opus-5
export clip · render a video in your browser

Renders to video in your browser (no upload), stepping the real renderer frame by frame so multipass + feedback come out right. motion auto-animates the shader's own knobs — each export rolls a fresh take (🎲 re-roll, 🔒 to pin one you like). GIF is slower with a tighter length cap; MP4/WebM are faster. Some devices record in real time (noted below if so) — keep the tab visible.

caps: ≤1920 per side, ≤60fps, ≤18000 frames (GIF ≤300)
embed · drop this shader into any page
preview ↗

Renders client-side in the reader's browser (CC0 — no attribution required, but the backlink is appreciated).