For anyone building interactive 3D on the web, the upcoming r186 release of Three.js is shaping up to be one of the most significant in the library's history. A pull request merging a built-in 3D Gaussian Splatting renderer — contributed by Ben Houston of Threekit — has landed in the dev branch and is targeting r186.
Gaussian splatting is the technique behind the wave of photorealistic 3D capture that has been sweeping game development, architecture, and product visualization over the past two years. Until now, web developers who wanted to render Gaussian splats in Three.js had to pull in third-party libraries, write custom shaders, or maintain their own renderers. The new implementation changes that: it is native, weighs just 7KB beyond base Three.js, and requires three lines of code to load a scene.
Under the hood, the renderer is written in Three Shader Language (TSL) and targets WebGPU as the primary backend, with a WebGL fallback for older hardware. It supports four formats: PLY (the original research format), SPZ (a compressed variant popular with capture apps), KSPLAT (used by many community tools), and the standardized glTF KHR_gaussian_splatting extension. A follow-up PR merged on August 11 added SH1 through SH3 spherical harmonics support — the feature that gives Gaussian splat renders their characteristic view-dependent color effects, making objects appear to have real specular response and material behaviour relative to viewing angle.
What makes this notable beyond the technical details is the adoption signal. When a feature this specialized becomes part of the core of the most widely deployed WebGL/WebGPU library, it typically unlocks a wave of implementations. Designers and developers who have been experimenting with 3D capture workflows — scanning objects or spaces with NeRF-adjacent tools, then exporting SPZ or PLY files — now have a direct, standardized path to drop those assets into any Three.js scene without dependencies.
The r186 release date has not been confirmed yet, but the dev branch merge puts it on the immediate roadmap. If you want to test it today, the feature is available on Three.js's dev branch.