Burn
A print burns through to the picture from the pointer, through its shadows first.
Anatomy
| Mask | one canvas over the crisp poster for the plate’s whole life; every dot is print or crisp |
|---|---|
| Landing | each dot has a landing time; for 70ms before it lands it prints as Bayer grain turning to ink, so every front arrives as grain |
| Fronts | first-passage times on an 8-connected grid (Dial’s bucket queue, hence square fronts); crossing costs more in highlight than in shadow, so fronts run through the dark masses first |
| From the pointer | solved on 4×4-dot cells from the cell under the pointer and up to three dark cells near it, scaled to 520ms, plus T · 28ms of grain; keyboard focus opens from the centre |
| Back | from scattered seeds biased to the shadows, scaled to 640ms |
| Cost | fronts solved once per plate, ~40–50ms when the main thread is idle; a hover ~1.5ms to retime |
From src/lib/exposure/burn.ts and the guide’s Motion §1.
Decisions
-
No arrival
Images do not transition in (Oct 2026): the page transition is the arrival, so a picture playing its own on top of it was a second one.
-
Retimed, never restarted
A new target retimes only the dots that have not landed, so leaving mid-reveal never makes the picture jump.
-
Replaced Bloom
A spring-driven square reveal round the cursor (Sept 2026). The burn was chosen because it reads as the hero culture’s arrival, carried onto the pictures.
-
Touch
Nothing hovers and a tap is the link, so on touch nothing burns: plates rest on the print.