PlayCanvas v2.17: half-precision Gaussian Splatting on WebGPU
PlayCanvas Engine v2.17.0 landed with a focused set of improvements that push Gaussian Splatting forward on WebGPU. The release adds half-precision spherical harmonics, a GPU-driven sorting and culling pipeline, and a global splat budget for managing scene-wide LOD.
SuperSplat walkthrough with PlayCanvas CEO Will Eastcott on editing and optimizing Gaussian Splats
f16 spherical harmonics
The big technical addition is half-precision (f16) spherical harmonics for Gaussian Splatting when running on WebGPU. Spherical harmonics encode view-dependent color information for each splat, and they're one of the heaviest data structures in a splatting pipeline. Switching from 32-bit to 16-bit floats cuts memory usage roughly in half with minimal visual difference.
This only works on WebGPU because WebGL doesn't natively support f16 buffers. It's another example of WebGPU enabling optimizations that weren't practical before.
GPU-driven sorting and frustum culling
v2.17.0 introduces a GPU-driven sorting and frustum culling pipeline for splats on WebGPU. Previously, splat sorting happened on the CPU, which became a bottleneck with scenes containing millions of Gaussians. Moving this to compute shaders means the GPU handles both sorting and culling without round-tripping data back to the CPU.
The frustum culling step discards splats outside the camera view before they're sorted, reducing the workload further.
Global splat budget
A new global splat budget system provides scene-wide Gaussian Splat LOD management. When your scene contains multiple splat objects, you can now set a total splat count for the entire scene. The engine automatically distributes the budget across objects based on distance and screen coverage.
This is practical for applications that compose multiple scanned environments or objects into a single scene, like virtual showrooms or architectural walkthroughs.
Self-hosting Gaussian Splatting models with the PlayCanvas viewer
Color Enhance and rendering updates
The release adds a new Color Enhance post-effect with midtones control, plus half-precision bloom shaders for better performance. Material.meshInstances changed from an Array to a Set, which speeds up instance removal operations. Front face support was also added to the render pipeline.
v2.16.0 laid the groundwork
The prior release (v2.16.0, February 3) added 2D Gaussian Splatting (2DGS) support and WGSL subgroup support. 2DGS uses flat discs instead of 3D ellipsoids, which can produce sharper surface reconstructions for planar geometry like walls and floors. The WGSL subgroup support enables wave-level operations in compute shaders, allowing faster parallel reductions on supported GPUs.
Together, v2.16 and v2.17 represent a significant push toward making PlayCanvas the go-to engine for web-based Gaussian Splatting.