Random-dot basics Lay noise, nudge the disc pixels a few columns per row, and a circle turns into a ball the moment your eyes relax

bulge depth 10px · 1px grain · cycle 2s ImageData · per-row shift