
three.js
three.js is the open source JavaScript 3D library for WebGL and WebGPU, and r186 ships a native Gaussian splat renderer in core.
Location
Size
Total raised
Hiring?
Platform
JavaScript library for the browser, with WebGL2 and WebGPU renderers
GPU
None published. three.js runs in the browser, so a WebGL2 capable GPU is the floor and the WebGPU path needs a browser that exposes WebGPU. Splat training happens elsewhere, three.js only renders
Pricing
Free
License
MIT
Best for
Rendering Gaussian splats on the open web
Updated
July 2026
three.js is an open source JavaScript 3D library first released by Ricardo Cabello in 2010 under the MIT license. It renders through WebGL2 and through a newer WebGPU backend, and it is the library a large share of interactive 3D on the open web is built on. The package ships a core alongside an examples directory, examples/jsm, that carries loaders, camera controls, post processing passes and now a Gaussian splat renderer.
Splat rendering in three.js was third party work for its first two years. The GaussianSplats3D library arrived in January 2024 as the first three.js implementation, added spherical harmonics that May and 2D Gaussian splatting support that July. World Labs released Spark v2.0 in April 2026 as a second renderer for the same host. Each option is a separate dependency with its own loader set, its own sorting strategy and its own render path, so a three.js project choosing between them is choosing an architecture, not a feature flag.
Pull request 33950, authored by Ben Houston, moved that capability into the library, and r186 shipped it on 8 September 2026 as npm package three 0.186.0. The renderer is a GaussianSplat object written in TSL, the Three.js Shading Language, so one implementation targets both the WebGL and the WebGPU backend rather than requiring a backend specific shader. GaussianSplatPLYLoader reads splat PLY files, SPZLoader, SPLATLoader and KSPLATLoader cover the other three formats, and GLTFGaussianSplatLoaderExtension reads the KHR_gaussian_splatting extension the Khronos Group introduced in February 2026. GaussianSplatUtils and SortUtils carry the shared math and the depth ordering. Two class names changed between the merge into the development branch and the release, GaussianSplatMesh became GaussianSplat and PLYGaussianSplatLoader became GaussianSplatPLYLoader, so code written against a pre release build needs both renamed.
The shipped renderer is wider than the merge was and narrower than a mature third party option. View dependent color resolves through the glTF loader extension, so higher order spherical harmonics render rather than every splat falling back to a flat base color. Raycasting against splats works, and per mesh bounding boxes drive frustum culling. What is still absent is a level of detail scheme and chunked streaming, so a scene loads whole and its memory and fill cost scale directly with splat count. A scan large enough to need paging is still a job for Spark or for a library built on it.
r186 is published, so a project installing three.js from npm now gets the splat renderer in the box. Version 0.186.0 supersedes r185, which had no splat support of its own. Spark and GaussianSplats3D remain the route for anything the core renderer does not do, and both continue as separate dependencies with their own loaders and their own streaming.
three.js is free, has no paid tier and imposes no commercial licence condition, which is one reason it sits underneath so much shipped splat work rather than alongside it. Gaussian splat viewers, product configurators, WebXR experiences and vendor SDKs including Varjo's Teleport.js all target three.js as their host, and Teleport.js pins three.js 0.180.0 as its floor. Native splat support in core changes what those integrations have to carry themselves.
Frequently Asked Questions
q
a
q
a
q
a
q
a
q
a
Alternatives
Recent Headlines
three.js Ships Its Native Gaussian Splat Renderer and Splat Raycasting in r186
Three.js Merges a Native Gaussian Splat Renderer for WebGPU in r186
World Labs Releases Spark V2.0
Three.js-based implemetation, GaussianSplats3D adds 2DGS Support
Spherical Harmonics added to three.js library, GaussianSplats3D
GaussianSplats3D, a Three.js Implementation of 3DGS


