3DGS Renderer Bench

Preview

Select a model to preview
2560 × 1440
Drag to orbit · Right-drag to pan · Scroll to zoom
Camera No model

Load a model to start

Tests run sequentially. Keep this tab visible.

Results

Frame intervals in the normal rendering loop, including browser scheduling. FPS = frames / sampled time (1000 / mean frame interval). Statistics are medians across rounds.

Best Highest FPS or lowest frame time in each column; ties are highlighted together.

Measurement notes

Each backend runs in a fresh iframe per round with a shared camera and fixed pixel resolution; order rotates or reverses between rounds. The full model is loaded (no LOD). Orbit: ±45°, 8 s period, following real elapsed time.

One GPU frame in flight: each frame is submitted only after the previous one has finished on the GPU (WebGL2 fence / WebGPU onSubmittedWorkDone). Without this wait the CPU runs ahead, intervals look short and the queued work later shows up as stalls. Each sample is the interval between submissions; FPS = frames / sampled time.

Load time runs from the public loader call to its completion signal (SuperSplat Viewer: its first ready frame), excluding package downloads and SPZ conversion. Only public APIs are used; native caching and async sorting stay active. GPU time, sort time and GPU memory are not measured. GPU errors, hiding the tab or resizing the window invalidate the run.

PDF report

Download PDF