px and py, read by 84 dots and a ringEach dot is scale: 'clamp(1.8 - sqrt(pow(x0 - px, 2) + pow(y0 - py, 2)) / 260, 0.25, 1.8)' with its own x0, y0. The page calls movie.setVars({ px, py }) on every pointer move; calls that arrive during a rebuild are joined (so "moves" counts more than "rebuilds"). The wave of dots, the drifting lights and the sweeping band run by themselves (keyframes), so it is a film even when the pointer rests; a rebuild keeps the frame and keeps playing. A recorded session of px/py would export to the same video: pixi-effects render pointer.html --var px=900 --var py=200.