v2.5.0

playcanvas/enginev2.5.0Feb 10, 2025by mvaligursky

AI Summary

ShaderMaterial refactoring that removes auto-inclusion of standard effects and improves WGSL shader support.

Key Highlights

  • ShaderMaterial no longer auto includes gamma, tonemapping and fog code
  • Updates to material chunks override functionality
  • Improved support for WGSL shaders
  • GSplatMaterial internally uses ShaderMaterial to generate variants

Breaking Changes

  • ShaderMaterial no longer auto includes gamma, tonemapping and fog code

New Features

  • View Cube extra example
  • Refactor first-person controller script
  • Easier to override render pass used by CameraFrame

Full Release Notes

## Breaking changes
* [BREAKING] ShaderMaterial no longer auto includes gamma, tonemapping and fog code by @mvaligursky in https://github.com/playcanvas/engine/pull/7331

## Other changes
* Updates to material chunks override functionality by @mvaligursky in https://github.com/playcanvas/engine/pull/7284
* Small gsplat init update by @slimbuck in https://github.com/playcanvas/engine/pull/7286
* Moved CameraFrame script to ESM folder by @mvaligursky in https://github.com/playcanvas/engine/pull/7285
* Script Types & ESLint by @kpal81xd in https://github.com/playcanvas/engine/pull/7288
* Refactor Grid class initialization and set initial values by @marklundin in https://github.com/playcanvas/engine/pull/7287
* Refactor first-person controller script by @marklundin in https://github.com/playcanvas/engine/pull/7289
* Refactor Camera controls  by @kpal81xd in https://github.com/playcanvas/engine/pull/7291
* Unified handling of core shader generation defines by @mvaligursky in https://github.com/playcanvas/engine/pull/7298
* Replace skybox shader generator with a ShaderMaterial using few defines by @mvaligursky in https://github.com/playcanvas/engine/pull/7301
* GsplatMaterial interally uses ShaderMaterial to generate variants by @mvaligursky in https://github.com/playcanvas/engine/pull/7302
* WarnOnce in debug mode if material parameter is being set to undefined by @mvaligursky in https://github.com/playcanvas/engine/pull/7305
* Do not log warning when material data contains sheenGlossTint, which was removed by @mvaligursky in https://github.com/playcanvas/engine/pull/7306
* Shader WGSL example - split single shader into vertex and fragment by @mvaligursky in https://github.com/playcanvas/engine/pull/7310
* Improve preprocessor to allow for define value injection by @mvaligursky in https://github.com/playcanvas/engine/pull/7309
* View Cube extra by @kpal81xd in https://github.com/playcanvas/engine/pull/7081
* Examples build rework by @kpal81xd in https://github.com/playcanvas/engine/pull/7314
* Script Destroy by @kpal81xd in https://github.com/playcanvas/engine/pull/7315
* VecN/Color array conversion support by @kpal81xd in https://github.com/playcanvas/engine/pull/7312
* Examples build static file optimisation by @kpal81xd in https://github.com/playcanvas/engine/pull/7317
* Camera controls focus damping by @kpal81xd in https://github.com/playcanvas/engine/pull/7313
* Editor example updates by @kpal81xd in https://github.com/playcanvas/engine/pull/7319
* Easier to override render pass used by the CameraFrame by @mvaligursky in https://github.com/playcanvas/engine/pull/7321
* Improvements to sRGB support by the Texture by @mvaligursky in https://github.com/playcanvas/engine/pull/7323
* Gizmo rotate updates by @kpal81xd in https://github.com/playcanvas/engine/pull/7327
* Improved support for WGSL shaders. by @mvaligursky in https://github.com/playcanvas/engine/pull/7320
* Improvement to internal WGSL shader processing to only replace whole words by @mvaligursky in https://github.com/playcanvas/engine/pull/7329
* Outline renderer supports morphed models by @mvaligursky in https://github.com/playcanvas/engine/pull/7333
* When Texture.srgb is changed, shaders are reevaluated to be recreated by @mvaligursky in https://github.com/playcanvas/engine/pull/7336
* Adds `@enableif` to Camera Controls Script by @marklundin in https://github.com/playcanvas/engine/pull/7330
* Gsplat material creation no longer set undefined parameters on the material by @mvaligursky in https://github.com/playcanvas/engine/pull/7339
* Make Batch.destroy public as it’s useful for destroying manually created batch groups by @mvaligursky in https://github.com/playcanvas/engine/pull/7340

## Fixes
* [Fix] Handle CameraFrame script changing enabled state by @mvaligursky in https://github.com/playcanvas/engine/pull/7282
* GSplat shader fixes by @slimbuck in https://github.com/playcanvas/engine/pull/7283
* [Fix] Splat shader didn’t have gamma decode functions when gamma output is disabled by @mvaligursky in https://github.com/playcanvas/engine/pull/7290
* Gsplat chunk fix by @slimbuck in https://github.com/playcanvas/engine/pull/7292
* [Fix] Fix frequent shader variant invalidation by @mvaligursky in https://github.com/playcanvas/engine/pull/7294
* First Person Controller fixes by @kpal81xd in https://github.com/playcanvas/engine/pull/7293
* [Fix] Texture created by TextureAtlas respects its initial settings by @mvaligursky in https://github.com/playcanvas/engine/pull/7300
* [Fix] Preprocessor correctly updates position for text replacement by @mvaligursky in https://github.com/playcanvas/engine/pull/7303
* Fix some issues with CameraFrame.enabled not working correctly by @mvaligursky in https://github.com/playcanvas/engine/pull/7311
* Packaged ESM Scripts fixes by @kpal81xd in https://github.com/playcanvas/engine/pull/7316
* toArray/fromArray fixes by @kpal81xd in https://github.com/playcanvas/engine/pull/7318
* [Fix] When CameraFrame is disabled, disable SSAO being applied during forward pass by @mvaligursky in https://github.com/playcanvas/engine/pull/7322
* Fix to msdf chunk to handle gamma space correctly by @mvaligursky in https://github.com/playcanvas/engine/pull/7325
* [Fix] Multiple changes and fixed related to the way UI system handles srgb by @mvaligursky in https://github.com/playcanvas/engine/pull/7335
* Camera controls fixes by @kpal81xd in https://github.com/playcanvas/engine/pull/7337

**Full Changelog**: https://github.com/playcanvas/engine/compare/v2.4.3...v2.5.0