Babylon.js V9.0: 3DGS Gets Shadows, SOGs, and Triangle Splatting Support Announced

Michael Rubloff

Michael Rubloff

Mar 26, 2026

Email
Copy Link
Twitter
Linkedin
Reddit
Whatsapp

Babylon.js 9.0 is here, and with it comes another significant leap forward for radiance field rendering on the web. Building on the foundation laid in V8, which introduced dedicated Gaussian Splatting mesh and material classes, Node Material Editor integration, and major performance optimizations, the 9.0 release deepens the engine's commitment to real time splatting with a slate of features that bring Babylon closer to being a full-fledged production pipeline for radiance field content.

Here's a breakdown of the key splatting updates arriving in V9.

One of the most requested features in the Babylon.js community has landed. Gaussian Splatting meshes can now cast shadows. Because splats are rendered using alpha blending, the shadow implementation requires transparency shadow support to be enabled on the shadow generator. Now developers can ground their splats with contact hardening shadows.

Babylon.js now supports the SOG/SOGS compressed format from Fraunhofer HHI's Self-Organizing Gaussians research. SOG is a compression scheme that dramatically reduces file sizes for Gaussian Splatting data. Cedric Guillemet shipped it as part of the 8.30.4 release cycle that rolls into the V9 milestone.

The V8 cycle introduced Niantic's SPZ format and Spherical Harmonics support. V9 continues to refine the loader pipeline, with the SPZ importer now supporting a flipY option for handling vertically flipped file outputs. The broader splat file loader has also been improved. Babylon now supports loading .splat, .ply, .spz, and .sog files through a unified loading path, making it straightforward to work with splat data regardless of its origin.

Gaussian Splatting rendering now works correctly with orthographic cameras. This may sound like a small change, but it opens up important use cases: architectural visualization, isometric game views, technical documentation, and any scenario where perspective distortion needs to be eliminated.

Perhaps what will generate the most buzz is initial support for Triangle Splatting, the radiance field technique introduced by researchers at the University of Liège and UCLouvain that replaces semi-transparent Gaussian ellipsoids with opaque triangular geometry.

Triangle Splatting produces a mesh of opaque, vertex colored triangles stored in standard PLY files. Babylon can already load and render these—the key is applying an unlit vertex color material with backface culling disabled. The documentation now includes the recommended material setup:

const material = new BABYLON.StandardMaterial("unlitVertexColorMat", scene);
material.disableLighting = true;              
material.emissiveColor = new BABYLON.Color3(1, 1, 1);
material.diffuseColor = new BABYLON.Color3(1, 1, 1);
material.backFaceCulling = false;
const material = new BABYLON.StandardMaterial("unlitVertexColorMat", scene);
material.disableLighting = true;              
material.emissiveColor = new BABYLON.Color3(1, 1, 1);
material.diffuseColor = new BABYLON.Color3(1, 1, 1);
material.backFaceCulling = false;
const material = new BABYLON.StandardMaterial("unlitVertexColorMat", scene);
material.disableLighting = true;              
material.emissiveColor = new BABYLON.Color3(1, 1, 1);
material.diffuseColor = new BABYLON.Color3(1, 1, 1);
material.backFaceCulling = false;
const material = new BABYLON.StandardMaterial("unlitVertexColorMat", scene);
material.disableLighting = true;              
material.emissiveColor = new BABYLON.Color3(1, 1, 1);
material.diffuseColor = new BABYLON.Color3(1, 1, 1);
material.backFaceCulling = false;

What makes Triangle Splatting exciting is what it inherits from being opaque geometry: correct depth testing and occlusion without per-frame sorting, compatibility with standard rendering pipelines, potential for dynamic LODs, and, crucially, the possibility of relighting. As Cedric noted in the forums, opaque geometry solves many of the compositing challenges that make traditional Gaussian Splats difficult to integrate into mixed scenes. The research team also since released Triangle Splatting+, which pushes the technique further with fully opaque, differentiable rendering.

It's worth noting that the differentiable renderer needed for training Triangle Splats currently depends on CUDA, so the training side remains a GPU compute workload. But the inference, loading and rendering the resulting triangle meshes, works today in Babylon.js on any WebGL or WebGPU device.

V9 also refines the multi part scene composition workflow for Gaussian Splatting. Developers can now combine multiple splat assets into a single scene while maintaining global sort order, attach parts to a root container, and independently transform each component. Each part supports independent visibility controls, and a new GPU based picking system enables accurate selection of individual splat parts.

The Gaussian Splatting material now integrates with Babylon.js's material plugin system via MaterialPluginBase. This lets developers extend the splatting shader pipeline with custom effects without forking the core material code.

Looking at the open issues on the Babylon.js GitHub, the team has GS LOD (level-of-detail) streaming on the roadmap, a feature that PlayCanvas has already shipped and that would be transformative for large scale splat scenes on resource constrained devices. Babylon.js appears to be positioning itself not just as a viewer for radiance field data, but as a platform where splats are as composable, editable, and production ready as traditional meshes.

Babylon.js remains open-source under the Apache 2.0 license. The full changelog is available on GitHub, and the Gaussian Splatting documentation has been updated to reflect all of the new features.