PlayCanvas Engine v2.21.0 Adds glTF and SPZ Gaussian Splat Loading

Michael Rubloff

Michael Rubloff

PlayCanvas

PlayCanvas has released Engine v2.21.0, which loads gaussian splats from glb files carrying the KHRgaussian_splatting extension. The glb parser decodes splat primitives, POINTS meshes flagged with the extension, into GSplatData and GSplatResource. Namespaced attributes are de-interleaved into the PLY style layout, quaternions reordered from xyzw to wxyz, per coefficient spherical harmonic RGB regrouped into channel major f_rest fields, and the data morton reordered as the PLY path is.

The engine's gsplat loaders have covered PLY, its compressed variant and SOG, and Engine 2.13 extended the unified gsplat renderer with a ColorRamp mode and spherical harmonic re-evaluation on camera movement. The Khronos Group published KHR_gaussian_splatting as a glTF baseline for Gaussian Splatting, still at release candidate, and the splat-transform CLI already writes files that use it.

The extension stores linear scale and post sigmoid opacity, so GSplatData gains an activated flag and the iterator, AABB, focal point and color texture paths read those values directly. PLY behavior is unchanged. Container resources expose splats through a new ContainerResource#gsplats array, and instantiateRenderEntity attaches a gsplat component to splat carrying nodes.

Unsupported values warn in debug builds, covering non-ellipse kernels, the lin_rec709_display colorSpace and non-POINTS modes, while sortingMethod and projection are ignored because sorting runs from the engine's global gsplat settings. The companion SPZ compression extension is not supported and remains an unmerged draft.

Niantic open sourced SPZ in late 2024, and Engine v2.21.0 reads it through spz-parser.mjs, an external parser script registered with app.loader.getHandler('gsplat').addParser(new SpzParser(app)). SpzParser reads the SPZ v4 NGSP container directly and keeps the data quantized in GPU textures at roughly 20 bytes per splat plus optional spherical harmonics, dequantized in the shader as the compressed PLY and SOG paths are. The parser supports 0 to 3 SH bands, clamps degree 4 files to 3, and runs under GLSL and WGSL.

ZSTD compressed attribute streams are decompressed by a wasm module the application registers draco style through pc.WasmModule.setConfig, and the 54kB zstddeclib build is vendored into the examples. No engine code changed for SPZ, since the parser builds on the public GSplatResourceBase and GSplatFormat API. A new simple-spz example loads the biker asset at 2.1MB in spz v4 against 2.5MB as compressed ply.

The breaking change renames the scripts/esm/gsplat script classes from Gsplat to GSplat, matching the core GSplatComponent and GSplatContainer casing, so a named npm import of GsplatFlipbook becomes GSplatFlipbook. The scriptName strings, including streamedGsplat and gsplatFlipbook, are unchanged, so Editor projects that reference scripts by name are unaffected.

Engine v2.21.0 also adds volumetric fog in CameraFrame, KTX2 cubemap support, an XrManipulation script for two hand drag, rotate and scale, and a physics backend abstraction with Ammo and Null implementations. The engine is available now on npm.

Featured

Recents

Platforms

Babylon.js 9.27.1 Puts Gaussian Splats in Frame Graph

Babylon.js 9.27.1 Puts Gaussian Splats in Frame Graph Intro: Babylon.js 9.27.1 adds Gaussian splats to the frame graph geometry renderer, writing GLSL and WGSL prepass outputs for depth, normal, albedo and velocity.

Michael Rubloff

Sep 19, 2026

Platforms

Babylon.js 9.27.1 Puts Gaussian Splats in Frame Graph

Babylon.js 9.27.1 Puts Gaussian Splats in Frame Graph Intro: Babylon.js 9.27.1 adds Gaussian splats to the frame graph geometry renderer, writing GLSL and WGSL prepass outputs for depth, normal, albedo and velocity.

Michael Rubloff

Platforms

Niantic Spatial Launches Gaussian Splat Relighting

Niantic Spatial opens a design-partner beta for Gaussian splat relighting, using the aligned mesh and precomputed radiance transfer to vary sun, sky and rain.

Michael Rubloff

Sep 19, 2026

Platforms

Niantic Spatial Launches Gaussian Splat Relighting

Niantic Spatial opens a design-partner beta for Gaussian splat relighting, using the aligned mesh and precomputed radiance transfer to vary sun, sky and rain.

Michael Rubloff

CorbeauSplat 2.0.0-beta.4 Fixes Its 4DGS COLMAP Step

CorbeauSplat v2.0.0-beta.4 is a pre-release fixing a 4DGS bug that fed COLMAP every frame of every camera, and tracking renamed splat-transform CLI flags.

Michael Rubloff

Sep 18, 2026

CorbeauSplat 2.0.0-beta.4 Fixes Its 4DGS COLMAP Step

CorbeauSplat v2.0.0-beta.4 is a pre-release fixing a 4DGS bug that fed COLMAP every frame of every camera, and tracking renamed splat-transform CLI flags.

Michael Rubloff

Platforms

fVDB v0.6.0 Moves Gaussian Splatting API to Reality Capture

fVDB v0.6.0 moves the high-level Gaussian splatting API out of fvdb-core to fVDB Reality Capture, keeping the CUDA kernels and adding multi-GPU 3DGUT support.

Michael Rubloff

Sep 18, 2026

Platforms

fVDB v0.6.0 Moves Gaussian Splatting API to Reality Capture

fVDB v0.6.0 moves the high-level Gaussian splatting API out of fvdb-core to fVDB Reality Capture, keeping the CUDA kernels and adding multi-GPU 3DGUT support.

Michael Rubloff

Trending Articles
  1. TRENDING
    Loading...
  2. TRENDING
    Loading...
  3. TRENDING
    Loading...
Michael Rubloff

Written by Michael Rubloff

Michael is the Founder and Managing Editor of Radiancefields.com

More from Michael Rubloff

More from Michael Rubloff

Platforms

Babylon.js 9.27.1 Puts Gaussian Splats in Frame Graph

Babylon.js 9.27.1 Puts Gaussian Splats in Frame Graph Intro: Babylon.js 9.27.1 adds Gaussian splats to the frame graph geometry renderer, writing GLSL and WGSL prepass outputs for depth, normal, albedo and velocity.

Michael Rubloff

Sep 19, 2026

Babylon.js

Platforms

Babylon.js 9.27.1 Puts Gaussian Splats in Frame Graph

Michael Rubloff

Sep 19, 2026

Babylon.js

Platforms

Babylon.js 9.27.1 Puts Gaussian Splats in Frame Graph

Babylon.js 9.27.1 Puts Gaussian Splats in Frame Graph Intro: Babylon.js 9.27.1 adds Gaussian splats to the frame graph geometry renderer, writing GLSL and WGSL prepass outputs for depth, normal, albedo and velocity.

Michael Rubloff

Sep 19, 2026

Babylon.js

Platforms

Niantic Spatial Launches Gaussian Splat Relighting

Niantic Spatial opens a design-partner beta for Gaussian splat relighting, using the aligned mesh and precomputed radiance transfer to vary sun, sky and rain.

Michael Rubloff

Sep 19, 2026

Niantic Spatial

Platforms

Niantic Spatial Launches Gaussian Splat Relighting

Michael Rubloff

Sep 19, 2026

Niantic Spatial

Platforms

Niantic Spatial Launches Gaussian Splat Relighting

Niantic Spatial opens a design-partner beta for Gaussian splat relighting, using the aligned mesh and precomputed radiance transfer to vary sun, sky and rain.

Michael Rubloff

Sep 19, 2026

Niantic Spatial

CorbeauSplat 2.0.0-beta.4 Fixes Its 4DGS COLMAP Step

CorbeauSplat v2.0.0-beta.4 is a pre-release fixing a 4DGS bug that fed COLMAP every frame of every camera, and tracking renamed splat-transform CLI flags.

Michael Rubloff

Sep 18, 2026

Corbeau Splat

CorbeauSplat 2.0.0-beta.4 Fixes Its 4DGS COLMAP Step

Michael Rubloff

Sep 18, 2026

Corbeau Splat

CorbeauSplat 2.0.0-beta.4 Fixes Its 4DGS COLMAP Step

CorbeauSplat v2.0.0-beta.4 is a pre-release fixing a 4DGS bug that fed COLMAP every frame of every camera, and tracking renamed splat-transform CLI flags.

Michael Rubloff

Sep 18, 2026

Corbeau Splat