Background · WebGL· 7 sites
Video: The Viral $1 Website Effect That Looks Like $10K, Nick Saraev
How it works
One generated clip, dithered live into a two-tone dot field behind crisp type.In 6 steps.
Generate one image, turn it into a short locked-off clip, and play the clip as a field of dots in two close tones. The texture reads as atmosphere rather than noise, so a large serif headline sits on it untouched. The dots come from an ordered (Bayer 8×8) dither computed on the GPU every frame, so the palette, the dot size and the threshold stay live.
- 01
Generate one image
A single subject with a hard light and a lot of dark: a sphere, a field of wheat, a dome. Contrast matters more than detail, because the dither keeps only light and dark.
- 02
Animate it without moving the camera
Image-to-video with the same image as the first and the last frame gives a clip that loops seamlessly. Ask for motion inside the frame (light sweeping, wheat swaying), never a camera move.
- 03
Cut it into greyscale frames
48 frames at 11 fps, small (320 px wide is plenty), packed into one WebP atlas of 8 × 6 cells. Colour is thrown away here: the palette comes later, so lossy compression is harmless.
- 04
Dither on the GPU
For each cell of the canvas, read the frame's brightness at the cell's centre and compare it with the Bayer 8×8 threshold for that cell. Above it, draw a dot: a square inside the cell with a gap around it, in the ink tone; the brightest dots take the accent.
- 05
Keep type out of it
The canvas is a background layer. The headline, nav and buttons stay ordinary HTML on top, in the palette's text colour, so they stay sharp, selectable and accessible.
- 06
Start politely
Load the atlas after the page's largest paint, pause when the hero leaves the screen or the tab hides, and hold a still frame for reduced motion.