Benchmark

One scripted pass over every demo: each route runs on WebGPU, then again with the fallback forced (?forceWebGL=1 for rendering, ?forceWasm=1 for inference). Both columns are measured — never estimated.

0.0 s elapsed · budget 90 s

17 of 20 demos are automated; the rest are marked manual. Frame-rate demos warm up 500 ms and sample 900 ms. First run on a cold dev server includes route compilation.

Per row: paired bars normalised to the row maximumWebGPUFallback
DemoMetricWebGPUFallbackWebGPU speed-upPaired bars
Capability labfps (1 s EMA, averaged)pendingpending—
glTF viewerfps (1 s EMA, averaged)pendingpending—
TSL playgroundfps (1 s EMA, averaged)pendingpending—
Post-processingfps (1 s EMA, averaged)pendingpending—
Clustered lightsfps (1 s EMA, averaged)pendingpending—
1M particlesfps (1 s EMA, averaged)pendingpending—
Rigid bodiesfps (1 s EMA, averaged)pendingpending—
Boidsfps (1 s EMA, averaged)pendingpending—
SPH fluidfps (1 s EMA, averaged)pendingpending—
Clothfps (1 s EMA, averaged)pendingpending—
N-bodyfps (1 s EMA, averaged)pendingpending—
Visioninference mspendingpending—
Speech (Whisper)inference mspendingpending—
Semantic searchquery embed mspendingpending—
Depth → meshinference mspendingpending—
Chat (WebLLM)tokens / spendingpending—
Image filtersfilter GPU ms (vs JS)pendingpending—
Live videofps (1 s EMA, averaged)pendingpending—
SDF raymarcherfps (1 s EMA, averaged)pendingpending—
Reaction-diffusionfps (1 s EMA, averaged)pendingpending—