Every screensaver has now been measured at the real videowall resolution. Until today
every figure in this repo was taken at 3000×600 — a quarter of the pixels — so nothing
was known about the resolution the app actually runs at.
Method
node shot.mjs --root <repo>/input_viewer_electron --saver "<name>" \
--size 6000x1200 --times 15 --seed 4242 --gpu
30 savers, 15 seconds each, one fixed seed (4242), real GPU (ANGLE/Metal, M3 Pro) — not
SwiftShader, which shadercheck deliberately forces for determinism and which says
nothing about speed. The list came from STRUCTURE_BASELINES, which is generated from
the registry, so it is all 30 and no preset names.
Results
| Saver |
fps @ 6000×1200 |
Rewritten today |
| Flow Field |
15.6 ⚠ |
— |
| Raymarch Fractal |
18.4 ⚠ |
#217 |
| Mandelbrot |
26.6 ⚠ |
#210 |
| Frost |
34.3 ⚠ |
— |
| Bicycle Horizon |
35.9 ⚠ |
— |
| Voronoi |
43.8 ⚠ |
#211 |
| Plasma |
50.7 |
#216 |
| Burning Ship |
62.4 |
— |
| Strange Attractor |
66.8 |
— |
| Aquarium |
75.6 |
— |
| Weather |
76.3 |
— |
| Metaballs |
86.4 |
#218 |
| Starfield Warp |
91.6 |
#212 |
| Truchet Tiles |
92.5 |
#214 |
| Reaction Diffusion |
103.1 |
#220 |
| Particle Swarm |
103.8 |
— |
| Julia Set |
108.7 |
— |
| Pong |
113.7 |
#213 |
| Matrix Rain |
114.5 |
#219 |
| Boids |
114.6 |
— |
| Physarum |
117.7 |
— |
| Moire Interference |
118.9 |
#215 |
| Double Pendulum |
119.9 (vsync cap) |
— |
| ASCII Doughnut |
120.0 (vsync cap) |
— |
| Wave Tank |
120.0 (vsync cap) |
— |
| Tree Growth |
120.0 (vsync cap) |
— |
| Game of Life |
120.1 (vsync cap) |
— |
| Falling Sand |
120.1 (vsync cap) |
— |
| DVD Logo |
120.1 (vsync cap) |
— |
| White Particles |
120.2 (vsync cap) |
— |
Three savers stutter, and the worst is not new
Flow Field at 15.6 fps is the slowest saver in the set, and it predates this batch.
It is one of the twelve the owner singled out as already good. That is the opposite of the
expected result: the eleven rewrites merged today are mostly healthy, and the
pre-existing set carries the worst offender. Nobody had filed a bug, because nobody had
measured at this resolution.
Raymarch Fractal at 18.4 fps is the one real casualty of the rewrite batch. #217
carried the claim that it "costs less than the version it replaces"; that was flagged as
unverified when it merged, and at 18.4 fps it should not be relied on. The likely cost
centre is that the temporal accumulation blends into a canvas-sized HDR target every
frame — cheap at 1.8M pixels, much less so at 7.2M.
Mandelbrot at 26.6 fps is the price of the perturbation-theory dive from #121. That
may simply be what an unbounded dive costs; worth confirming rather than assuming.
Frost (34.3) and Bicycle Horizon (35.9) are marginal rather than broken, and neither is
from this batch.
Two limits on what this proves
- Wrong machine. These are M3 Pro numbers, not the machine that drives the wall. A
weaker GPU shifts everything down proportionally, so 35 fps here could be 20 there.
The figures are comparative, not a pass mark. Re-running this on the actual wall
host is the measurement that would settle it, and it is one command.
- The ~120 readings are a vsync cap, not a measured ceiling. Twelve savers are
refresh-bound and have unknown headroom above 120.
Not a release blocker
Nothing here is a regression. Flow Field has evidently been shipping at this speed for
some time. But three savers visibly stutter on the wall, and that is now measured instead
of suspected.
Acceptance criteria
Every screensaver has now been measured at the real videowall resolution. Until today
every figure in this repo was taken at 3000×600 — a quarter of the pixels — so nothing
was known about the resolution the app actually runs at.
Method
30 savers, 15 seconds each, one fixed seed (4242), real GPU (ANGLE/Metal, M3 Pro) — not
SwiftShader, which
shadercheckdeliberately forces for determinism and which saysnothing about speed. The list came from
STRUCTURE_BASELINES, which is generated fromthe registry, so it is all 30 and no preset names.
Results
Three savers stutter, and the worst is not new
Flow Field at 15.6 fps is the slowest saver in the set, and it predates this batch.
It is one of the twelve the owner singled out as already good. That is the opposite of the
expected result: the eleven rewrites merged today are mostly healthy, and the
pre-existing set carries the worst offender. Nobody had filed a bug, because nobody had
measured at this resolution.
Raymarch Fractal at 18.4 fps is the one real casualty of the rewrite batch. #217
carried the claim that it "costs less than the version it replaces"; that was flagged as
unverified when it merged, and at 18.4 fps it should not be relied on. The likely cost
centre is that the temporal accumulation blends into a canvas-sized HDR target every
frame — cheap at 1.8M pixels, much less so at 7.2M.
Mandelbrot at 26.6 fps is the price of the perturbation-theory dive from #121. That
may simply be what an unbounded dive costs; worth confirming rather than assuming.
Frost (34.3) and Bicycle Horizon (35.9) are marginal rather than broken, and neither is
from this batch.
Two limits on what this proves
weaker GPU shifts everything down proportionally, so 35 fps here could be 20 there.
The figures are comparative, not a pass mark. Re-running this on the actual wall
host is the measurement that would settle it, and it is one command.
refresh-bound and have unknown headroom above 120.
Not a release blocker
Nothing here is a regression. Flow Field has evidently been shipping at this speed for
some time. But three savers visibly stutter on the wall, and that is now measured instead
of suspected.
Acceptance criteria
numbers here — they are the ones that matter
per-frame iteration budget stated
benchexists andshot.mjsreportsfps, so a regression gate is possible, but a fps threshold on shared CI hardware is
notoriously flaky and may be worse than nothing