Benchmark report

WebGPU Engine Benchthree.js · PlayCanvas · Babylon.js

The same deterministic scenes built in three engines, measured frame by frame on WebGPU and WebGL2 in Chrome, Safari and Firefox. Every scene renders identical geometry, lights and camera at 1920×1080 with 4× MSAA and ACES tone mapping; the harness owns the frame loop and times each engine through the same WebGPU instrumentation.

Scoreboard

Same engine, three WebGPU implementations

CPU time per frame for each engine in Chrome (Dawn), Safari (WebKit) and Firefox (wgpu). CPU time is the one metric every browser reports identically — Safari caps the frame rate at the display refresh and Firefox's GPU timestamps are disabled (see methodology). Mid-ladder level for each scenario, current backend and path.

What WebGPU buys each engine

How each engine drives the GPU

WebGPU calls per frame recorded by the harness's probe (not the engine's own counters) for 1,000 animated meshes, plus live GPU memory from every buffer and texture the engine allocated.

Startup and footprint

Shipped JavaScript for the smallest lit-cube app (tree-shaken, minified, brotli) and the time from navigation to the first rendered frame.

Bundle size

Brotli-compressed, initial chunks of a minimal WebGPU app.

Time to first frame

Did they render the same thing?

Frame 60 of each scene in Chrome on WebGPU, captured by the harness. Identical data in, so any visible difference is the engine's lighting model or defaults.

Beyond the numbers

What each engine offers on WebGPU today, as used to build this benchmark.

Methodology and caveats