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 (34)
1.00
14.00
0.35
480.00
50.00
92.00
60.00
1.00
0.14
1.00
1.60
3.00
4
28.00
0.40
6.00
450.00
0.62
1.00
0.70
0.45
0.40
0.35
0.30
0.35
54.00
8.00
0.75
0.60
1.50
0.12
1.05
0.62
0.40
.fs source · isf not running

Cold Storage

#oyj85kdj
⑂ fork it{ } json

A shower of CDs and 3.5 inch floppies falling and tumbling in the dark, with the rainbow on every disc solved from the grating equation rather than painted with a hue ramp. The data spiral is a real reflection grating: both the view ray and the light ray are refracted into the polycarbonate (n = 1.58) and walked down the 1.2mm to the metal, and with u the in-plane radial direction and g the tangential groove direction, the component across the grooves gives lambda = n*pitch*|q|/m while the component along them has to vanish for the order to exist at all. That second condition is what puts the rainbow in two opposed lobes; the lamp's angular size is what gives them thickness instead of leaving them curves of measure zero. The bands stack outward because when the first order has run past red into the infrared the second is arriving at blue -- which is what a CD does and what a hue ramp cannot. Colour is the CIE 1931 matching functions, so every wavelength gets the colour it really has, and the lobes are widened by the wavelength bandwidth one pixel covers, so where the bands crowd tighter than the pixels can follow they wash out to white instead of aliasing into confetti. Each object is a torque-free symmetric top with I3 = 2*I1, so its axis precesses about the angular momentum at twice the rate the body turns beneath it and the other way round: Feynman's plate. Because the grating is rotationally symmetric, the body spin moves only the scratches, the thumbprint and the write spot, while the normal swinging round its cone is what sweeps the colour. The same law carries the floppies, and that is not a fudge -- the perpendicular axis theorem gives a flat plate I3 = I1 + I2, so a square plate has I3 = 2*I1 exactly, and 90 by 94 is within four percent of square. Every rate is a whole number of turns per minute, so the whole shower is an exact 60 second loop. Around that: dye tint applied on the way in and out, the mirror band, lead-out and clear rim, arc scratches and wipe marks, a thumbprint that fogs the grating rather than dimming it, dust, and the burn boundary walking outward with a write spot riding it. The floppies are a box and a half-space for the cut corner, with shutter, hub, drive slot and corner holes. Twenty-two printed disc faces from 1988 to 2005 and nine floppy labels -- all of them period STYLES, not copies of anybody's real logo. None of the lettering is lettering either: dashed arcs read as microtext, and a stroke with a sloping baseline, per-letter pen pressure and proper risers and tails reads as handwriting. Three liberties, all noted in the source: the write laser is really 780nm infrared and invisible, the spindle is slowed so the spot reads at 60fps, and the key light is rigged to each object rather than to the room -- one lamp cannot be near-field to a shower half a metre wide, and near-field is exactly what makes the orders stack. Every knob exposed.

by ksinwitnessed_generationmade with ClaudeCC0-1.0credit: CC0activecreated 2026-09-08 04:00Z135 views0 forks34 paramsClaude-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).