v2.9.0

playcanvas/enginev2.9.0Jul 3, 2025by mvaligursky

AI Summary

Significant release introducing GSplat optimizations, WebGPU indirect drawing, compute shaders, and Node.js support for GSplat.

Key Highlights

  • GSplat optimizations (limit large gaussians, fastExp)
  • WebGPU indirect draw calls
  • Compute shader support
  • GSplat worker on Node.js

New Features

  • Limit large gaussians
  • Support for indirect draw calls for WebGPU
  • Add support for texture async write
  • Compute shaders preprocess the provided source code
  • fastExp implementation for gsplat rendering
  • Support gsplat worker on nodejs
  • Implementation of baseVertex support
  • Inputs overhaul (CameraControls updated)
  • First Person Script & InputSource updates
  • Beta builds (manual trigger)
  • Add asset load event
  • Add fast render path for SOGS spherical harmonics
  • Gizmo WGSL shaders
  • Grids script WGSL Shader
  • Quat tests
  • toArray type overloading
  • Slightly expanded functionality of Texture.resize
  • Adds export conditions
  • Updated jsdocs for Material class
  • Split sorter code

Full Release Notes

## What's Changed
* Limit large gaussians by @slimbuck in https://github.com/playcanvas/engine/pull/7781
* Support for indirect draw calls for WebGPU by @mvaligursky in https://github.com/playcanvas/engine/pull/7777
* Add support for texture async write by @slimbuck in https://github.com/playcanvas/engine/pull/7782
* Additional frustum culling events in order to better support indirect drawing by @mvaligursky in https://github.com/playcanvas/engine/pull/7778
* Compute shaders preprocess the provided source code by @mvaligursky in https://github.com/playcanvas/engine/pull/7783
* fastExp implementation for gsplat rendering by @slimbuck in https://github.com/playcanvas/engine/pull/7784
* Remove platform/audio by @willeastcott in https://github.com/playcanvas/engine/pull/7774
* Support gsplat worker on nodejs by @slimbuck in https://github.com/playcanvas/engine/pull/7770
* Implementation of baseVertex support by @AlexAPPi in https://github.com/playcanvas/engine/pull/7765
* Inputs overhaul (CameraControls updated) by @kpal81xd in https://github.com/playcanvas/engine/pull/7779
* First Person Script & InputSource updates by @kpal81xd in https://github.com/playcanvas/engine/pull/7792
* Beta builds (manual trigger) by @kpal81xd in https://github.com/playcanvas/engine/pull/7798
* Add asset load event by @slimbuck in https://github.com/playcanvas/engine/pull/7803
* Add fast render path for SOGS spherical harmonics by @slimbuck in https://github.com/playcanvas/engine/pull/7796
* Gizmo WGSL shaders by @kpal81xd in https://github.com/playcanvas/engine/pull/7804
* Grids script WGSL Shader by @kpal81xd in https://github.com/playcanvas/engine/pull/7805
* Quat tests by @kpal81xd in https://github.com/playcanvas/engine/pull/7806
* toArray type overloading by @kpal81xd in https://github.com/playcanvas/engine/pull/7808
* Slightly expanded functionality of Texture.resize by @mvaligursky in https://github.com/playcanvas/engine/pull/7807
* Adds export conditions by @marklundin in https://github.com/playcanvas/engine/pull/7810
* Updated jsdocs for Material class by @mvaligursky in https://github.com/playcanvas/engine/pull/7813
* Split sorter code by @slimbuck in https://github.com/playcanvas/engine/pull/7814

## Fixes
* Hide PrimitiveMode example which is only for internal testing by @mvaligursky in https://github.com/playcanvas/engine/pull/7768
* Fix doc types in rigidbody system by @AlexAPPi in https://github.com/playcanvas/engine/pull/7773
* Fix to anisotropy-lamp example - layer order changed for sky to be captured by grab pass by @mvaligursky in https://github.com/playcanvas/engine/pull/7775
* Sogs decompress fix by @slimbuck in https://github.com/playcanvas/engine/pull/7786
* Fix shaderParticle assignment (#7787) by @michaelfranzl in https://github.com/playcanvas/engine/pull/7788
* Fix WebGPU profiler by @slimbuck in https://github.com/playcanvas/engine/pull/7793
* First Person Controller fixes by @kpal81xd in https://github.com/playcanvas/engine/pull/7794
* Workflow Publishing fix by @marklundin in https://github.com/playcanvas/engine/pull/7797
* ESM Template instantiate fix by @marklundin in https://github.com/playcanvas/engine/pull/7809
* screenToWorld & worldToScreen camera rect by @kpal81xd in https://github.com/playcanvas/engine/pull/7816

**Full Changelog**: https://github.com/playcanvas/engine/compare/v2.8.2...v2.9.0