How many particles fit a VFX budget under mobile CPU throttling?

nixie-fx 0.1.20 · PixiJS 8.22.0 · three r185 · fixed 1/60 s steps · canvas 390×600 CSS px at resolution 2

One looping ember fountain (60 particles/s, about 72 alive per instance), repeated 1 to 64 times. For each count the page warms up 90 frames, then times 120 frames of update() + render + a 1-pixel read-back that waits for the GPU. To emulate a phone CPU, open DevTools → Performance → CPU: 4× or 6× slowdown before pressing Run.

The verdict uses update() p95 (CPU simulation). "Frame" adds render submission plus a GPU read-back wait, about 2.5 ms on its own here, so it overstates the VFX cost; it's there for context.