oria-webgpu

A minimal, typed WebGPU wrapper. Not a rendering engine.

This entire demo — device setup, a uniform buffer, a render pipeline with a named binding, and the per-frame draw call — is the code on the right. No manual bind group layouts.

Same per-instance math, same instance count, and — above 150,000 — a per-fragment shader loop heavy enough to genuinely exceed vsync rather than idle inside it (below that, both sides just idle at 60fps and "no difference" would mean nothing). Once actually GPU-bound, both land at essentially the same fps here: a single steady-state instanced draw call is already near-optimal on a mature WebGL2 driver, so this workload isn't where WebGPU's real advantages (many draw calls / state changes, compute, lower driver overhead) show up. "ms submit" is CPU time to encode + submit one frame's draw call — at low instance counts it's small enough to brush against the browser's clamped timer resolution; treat tiny values as "negligible," not exact. Illustrative, not a rigorous benchmark.
WebGPU via oria-webgpu
—
WebGL2 raw
—