v2.16.0
playcanvas/enginev2.16.0Feb 3, 2026by mvaligursky
AI Summary
Introduces procedural GSplat Container API, 2D Gaussian Splatting support, and WGSL extensions.
Key Highlights
- Adds procedural GSplat Container API
- Supports 2D Gaussian Splatting rendering
- Adds WGSL subgroup_uniformity and subgroup_id support
- Improves shader preprocessor with numeric literals
New Features
- Procedural GSplat Container API
- 2D Gaussian Splatting support
- WGSL subgroup support
Full Release Notes
## Changes * Procedural GSplat Container API by @mvaligursky in https://github.com/playcanvas/engine/pull/8352 * GSplat Extra Streams and Work Buffer Customization by @mvaligursky in https://github.com/playcanvas/engine/pull/8383 * GsplatProcessor and extra data streams for gaussian splats by @mvaligursky in https://github.com/playcanvas/engine/pull/8395 * GSplat Work Buffer Custom Streams Support by @mvaligursky in https://github.com/playcanvas/engine/pull/8396 * Unify GSplat format shader architecture by @mvaligursky in https://github.com/playcanvas/engine/pull/8377 * GSplat: Centralize texture management with GSplatStreams class by @mvaligursky in https://github.com/playcanvas/engine/pull/8379 * Clarify gamma correction docs by @mvaligursky in https://github.com/playcanvas/engine/pull/8386 * Modernize legacy posteffect scripts to ES6 classes and fix FXAA offset bug by @mvaligursky in https://github.com/playcanvas/engine/pull/8397 * Update jsdocs of QuadRender by @mvaligursky in https://github.com/playcanvas/engine/pull/8398 * Add BatchManager.getGroupById method by @mvaligursky in https://github.com/playcanvas/engine/pull/8399 * Destroy WebGPU texture immediately instead of letting garbage collection do it by @mvaligursky in https://github.com/playcanvas/engine/pull/8401 * Add numeric literal support to shader preprocessor by @mvaligursky in https://github.com/playcanvas/engine/pull/8402 * Implement deferred destruction for WebGPU textures by @mvaligursky in https://github.com/playcanvas/engine/pull/8403 * Add 2D Gaussian Splatting (2DGS) Rendering Support by @slimbuck in https://github.com/playcanvas/engine/pull/8416 * Improve XrSession script documentation and consistency by @willeastcott in https://github.com/playcanvas/engine/pull/8417 * feat: add snap vertical movement to XrNavigation script by @willeastcott in https://github.com/playcanvas/engine/pull/8420 * Unified GSplat Picking Support by @mvaligursky in https://github.com/playcanvas/engine/pull/8421 * Document ColorLUT texture format in CameraFrame JSDoc by @mvaligursky in https://github.com/playcanvas/engine/pull/8424 * Remove deprecated gsplatCustomizeVS shader chunk by @mvaligursky in https://github.com/playcanvas/engine/pull/8422 * Rename GSplatParams.id to enableIds by @mvaligursky in https://github.com/playcanvas/engine/pull/8423 * Add support for WGSL subgroup_uniformity and subgroup_id language extensions by @mvaligursky in https://github.com/playcanvas/engine/pull/8426 * GSplatProcessor: Add numSplats uniforms and automatic padding skip by @mvaligursky in https://github.com/playcanvas/engine/pull/8430 ## Fixes * ES2020 compatibility for GSplatSortBinWeights worker injection by @mvaligursky in https://github.com/playcanvas/engine/pull/8373 * Fix preprocessor numeric literal parsing to avoid incorrect partial matches by @mvaligursky in https://github.com/playcanvas/engine/pull/8404 * Fix unified gsplat work buffer extra streams for octrees and color-only updates by @mvaligursky in https://github.com/playcanvas/engine/pull/8405 * Fix WebGL texture.read() for R8/RG8/RGB8 formats and add UNPACK_ALIGNMENT state caching by @mvaligursky in https://github.com/playcanvas/engine/pull/8406 * Revert "[FIX] Fix ElementComponent 'mousemove' event firing outside element" by @willeastcott in https://github.com/playcanvas/engine/pull/8413 * [Fix] ClusteredOmniShadows example - avoid debug render texture when destroyed by @mvaligursky in https://github.com/playcanvas/engine/pull/8433 * Fix material-refraction example to use correct IOR value by @mvaligursky in https://github.com/playcanvas/engine/pull/8434 * [Fix] GSplatComponent.customAabb to fall back to resource AABB by @mvaligursky in https://github.com/playcanvas/engine/pull/8435 * Fix WebGPU uniform warnings in RenderPassPicker by @mvaligursky in https://github.com/playcanvas/engine/pull/8436 ## Examples * Flipbook engine example by @mvaligursky in https://github.com/playcanvas/engine/pull/8384 * GSplat Editor Example and Gsplat Shader / GsplatProcessor API Refactoring by @mvaligursky in https://github.com/playcanvas/engine/pull/8412 * Exposed the color band width parameter for radial reveal effect by @mvaligursky in https://github.com/playcanvas/engine/pull/8414 * Add GSplat procedural shape scripts and example, other fixes and imrovements by @mvaligursky in https://github.com/playcanvas/engine/pull/8415 * Add GsplatMesh script and example for converting meshes to gaussian splats by @mvaligursky in https://github.com/playcanvas/engine/pull/8419 * Add LOD Instances Gaussian Splat example by @mvaligursky in https://github.com/playcanvas/engine/pull/8429 **Full Changelog**: https://github.com/playcanvas/engine/compare/v2.15.3...v2.16.0