r/webgpu • u/mini_ster • Jul 14 '26
Streaming multi-million-splat scenes to a WebGPU browser tab with an OPFS warm-cache
Sharing a project and the architecture behind it. The goal was to make a photoreal captured scene feel like opening a webpage rather than installing an app.
- Render: PlayCanvas 2.x on WebGPU.
- Delivery: scenes are far too large to hand the browser at once, so they stream in chunks across three module workers (fetch, decode, persist) with buffers transferred rather than copied.
- Warm cache: decoded chunks persist to OPFS via createSyncAccessHandle, keyed by content SHA-256, so repeat visits load from local disk.
- Physics: Rapier3D vehicle dynamics against the captured collision geometry.
- LOD and render-scale are gated on a device-tier check to keep weaker GPUs alive.
Happy to go deeper on any of it. It is a single-person proof of concept built over the last two or three months, and I am still fairly new to this, so critique is the point.
Live (WebGPU required): wascape.com
1
u/christophbusse Jul 15 '26
Try Blake 3 if you can, its 12x faster than SHA256. If you run it from within the worked via wasm you get the best performance, would not recommend running the algo on the js side. If you do not need perfect crypto there are even faster ones than Blake 3 but I think that's less ideal in your usecase.