Skip to content

Babylon.js 9.0: clustered lighting, node particles, and gaussian splatting overhaul

Babylon.js 9.0 is out, and it's the biggest release the open-source WebGPU/WebGL engine has shipped to date. The headline feature is a clustered lighting system that lets scenes render hundreds or thousands of dynamic lights at smooth frame rates on both WebGPU and WebGL 2.

The new Node Particle Editor in Babylon.js 9.0

Clustered lighting changes everything

Traditional per-pixel lighting forces every pixel to compute contributions from every light in the scene, even lights nowhere near it. Clustered lighting fixes that by grouping lights into screen-space tiles and depth slices. At render time, each pixel only evaluates lights that actually affect it. The result is that a scene with 1,000 dynamic lights can now run at real-time frame rates instead of crawling.

This works on WebGPU and WebGL 2, which means the performance improvement reaches the widest possible audience.

Textured area lights

Area lights were introduced in Babylon.js 8.0. Version 9.0 adds emission textures, so you can project any image through a rectangular area light. Think stained glass projections, LED panel displays, or cinematic lighting setups with physically accurate light emission.

Volumetric lighting

The new volumetric lighting system renders light shafts through fog, dust, and haze. It includes configurable extinction and phase parameters for artistic control over how light scatters in the atmosphere. The system supports directional light sources and uses WebGPU compute shaders where available, with WebGL 2 fallbacks.

Node Particle Editor

The Node Particle Editor (NPE) is a visual drag-and-connect tool for building particle systems. If you've used the Node Material Editor, the workflow is identical. You get full control over emission shapes, sprite sheets, update behaviors, and sub-emitters through a non-destructive node graph. Flow maps and gravity attractors round out the particle upgrades.

Gaussian splatting overhaul

Babylon.js introduced gaussian splatting support in version 7.0. Version 9.0 rewrites the system with shadow casting, triangle splatting for opaque mesh-like rendering, and support for compressed SOG/SOGS formats alongside .splat, .ply, and .spz files. You can now combine multiple splat assets in a single scene with global sorting, and each part can be independently transformed and animated. Adobe contributed to this work.

Frame Graph system

The Frame Graph, introduced as an alpha feature in 8.0, hits v1 in this release. It's a directed acyclic graph where each node represents a rendering task. The system manages texture allocation, reuse, and optimization automatically. The team reports GPU memory savings of 40% or more in some cases. You can compose custom render pipelines visually through the Node Render Graph Editor or programmatically through the class framework.

Other additions

Animation retargeting lets you apply animations from one character skeleton to another, even with different bone structures and naming conventions. The release also includes a rebuilt inspector, large world rendering to prevent floating-point jitter in large coordinate systems, and geospatial rendering capabilities.

References