Releases: playcanvas/engine
Releases · playcanvas/engine
v2.14.0
Breaking Changes
-
[BREAKING] Use linear space for vertex colors in gLTF by @LeXXik in #8122
Note: Projects that use vertex colors—especially those imported from FBX—may see visual changes because vertex colors are now treated as linear by default (for glTF compatibility). If your assets use gamma-encoded vertex colors, set material.vertexColorGamma = true to restore the previous appearance. This affects StandardMaterials only, ShaderMaterials are not affected.
Other changes
- Refactor gsplat shader chunks: move helpers and customize to common by @mvaligursky in #8129
- Adds a soft limit on total splat count rendered for streaming lod by @mvaligursky in #8217
- Picker class can (optional) render depth and provide world space pick points by @mvaligursky in #8154
- GSplat streaming lod - used memory optimization by @mvaligursky in #8171
- Add frame:ready event to GSplatComponentSystem for video capture workflows by @mvaligursky in #8128
- Updated main jsdocs block for GSplatComponent by @mvaligursky in #8130
- Optimize BoundingBox.containsPoint performance by @mvaligursky in #8137
- AGENTS.md file automatically used by AI agents (such as Cursor) by @mvaligursky in #8140
- Update all npm dependencies by @renovate[bot] in #8143
- Migrate Renovate config by @renovate[bot] in #8144
- Gizmo mouse button option by @kpal81xd in #8153
- Update actions/checkout action to v6 by @renovate[bot] in #8157
- Add GSplat to ComponentSystemRegistry by @mvaligursky in #8174
- Add loadingCount parameter to GSplat frame:ready event by @mvaligursky in #8178
- Add GSplat flipbook animation script + related functionality + example by @mvaligursky in #8141
- Add WebGPU support to instancing-custom example - custom WGSL shader by @mvaligursky in #8186
- [DOCS] clarify Asset.preload behaviour by @lucaheft in #8189
- Update all npm dependencies by @renovate[bot] in #8194
- Update sinon to latest by @willeastcott in #8195
- Update @webgpu/types dependency to latest by @willeastcott in #8196
- Regenerate package-lock.json by @willeastcott in #8197
- Added tracing support to log all assets in the registry by @mvaligursky in #8209
- Add WGSL shader support for annotation hotspots by @mvaligursky in #8219
- Outline renderer WGSL chunk by @mvaligursky in #8225
Fixes
- Fix incorrect time calculation in first two frames by @mvaligursky in #8185
- [Fix] Fixed gsplat shader effect to handle limit to a camera by @mvaligursky in #8117
- Workaround for packHalf2x16 precision issues on some Android devices by @mvaligursky in #8121
- CameraControls enablePan fix by @kpal81xd in #8126
- docs: fix typos in some files by @Edge-Seven in #8131
- Fix unified gsplat double transformation bug by @mvaligursky in #8135
- Fix GSplat LOD calculation to use nearest point on bounding box by @mvaligursky in #8138
- Fix PBO texture uploads by ensuring correct texture binding state by @mvaligursky in #8146
- Fix unified gsplat rendering when viewport is resized by @mvaligursky in #8147
- Gizmo snap state fix by @kpal81xd in #8151
- Camera controls fly shift fix by @kpal81xd in #8152
- [Fix] UploadStream functionality handles lost context by @mvaligursky in #8160
- [Fix] improve error messages for script attribute validation by @mvaligursky in #8172
- [Fix] Correct transmission attenuation rendering by @mvaligursky in #8173
- Fix Screen.priority signed integer overflow by @mvaligursky in #8180
- Improvements and fixes to streaming lod gsplat being destroyed by @mvaligursky in #8210
- Fix spherical harmonics not rendering with streaming SOGS by @mvaligursky in #8215
- Fix null values in asset cache for ESM scripts causing error by @snave333 in #8221
Examples
- WebGPU Compute shader edge detect example by @mvaligursky in #8192
- Add ESM script for annotations and an example by @willeastcott in #8202
- Remove unnecessary GLSL transpiler config from examples by @mvaligursky in #8175
- Use ministats to display number of splats in an streaming lod example by @mvaligursky in #8182
- [FIX] Address race condition when loading example code by @willeastcott in #8198
- Update examples NPM dependencies by @willeastcott in #8199
- Update Examples Browser to React 19 by @willeastcott in #8200
- Regenerate examples package-lock.json by @willeastcott in #8201
- Removed unused react-es6 package from examples by @kpal81xd in #8208
- Fix examples browser compatibility with React 19 and React Router v7 by @mvaligursky in #8212
- Remove deprecated bloom script from animation examples by @mvaligursky in #8213
- Remove old private LOD example now that we have public examples by @mvaligursky in #8218
- fix: Fix broken BlendTrees example by @abstrakt8 in #8216
- Updated Trees example to supply wgsl chunks by @mvaligursky in #8223
- Shader Hatch example has WGSL shader to avoid transpilation from GLSL by @mvaligursky in #8224
- WGSL shader variant for Integer Textures example by @mvaligursky in #8226
- AreaPicker & internal shader properties test example fixes by @mvaligursky in #8227
New Contributors
- @Edge-Seven made their first contribution in #8131
- @lucaheft made their first contribution in #8189
- @snave333 made their first contribution in #8221
Full Changelog: v2.13.6...v2.14.0
v2.13.6
Fixes
- Fix UploadStream functionality to handle lost context by @mvaligursky in #8160
- Add GSplat to ComponentSystemRegistry by @mvaligursky in #8174
- Add loadingCount parameter to GSplat frame:ready event by @mvaligursky in #8178
Full Changelog: v2.13.5...v2.13.6
v2.13.5
v2.13.4
v2.13.3
Fixes
- Optimize BoundingBox.containsPoint performance by @mvaligursky in #8137
- Fix GSplat LOD calculation to use nearest point on bounding box by @mvaligursky in #8138
- Fix PBO texture uploads by ensuring correct texture binding state by @mvaligursky in #8146
- Fix unified GSplat rendering when viewport is resized by @mvaligursky in #8147
Full Changelog: v2.13.2...v2.13.3
v2.13.2
Fixes
- Fix unified gsplat double transformation bug by @mvaligursky in #8135
Full Changelog: v2.13.1...v2.13.2
v2.13.1
Fixes
- Fixed gsplat shader effect to correctly handle “limit to a camera” by @mvaligursky in #8117.
- Workaround for packHalf2x16 precision issues on some Android devices by @mvaligursky in #8121.
- CameraControls enablePan logic fixes (desktop pan + double touch) by @kpal81xd in #8126.
- Added frame:ready event to GSplatComponentSystem for video-capture workflows by @mvaligursky in #8128.
- Updated main JSDoc block for GSplatComponent by @mvaligursky in #8130.
- Refactor gsplat shader chunks: move helpers/customize to common by @mvaligursky in #8129.
Full Changelog: v2.13.0...v2.13.1
v2.13.0
Changes
- ColorRamp rendering mode for unified gsplats by @mvaligursky in #8060
- Unified gsplats re-evaluate their Spherical Harmonics when camera moves by @mvaligursky in #8098
- GSplat LOD format supports environment tag by @mvaligursky in #8110
- Improvements to unified gsplat asset streaming by @mvaligursky in #8062
- Exposed simpler shader chunk override way to customize gsplat vertex shaders by @mvaligursky in #8063
- Expose modifyCovariance and unify gsplat shader customization API by @mvaligursky in #8064
- Few improvements to unified gsplat rendering by @mvaligursky in #8065
- Optimize sqrt calls by @willeastcott in #8070
- Optimize Gaussian splat sorting to skip unnecessary updates by @mvaligursky in #8104
- Optimize 16-bit unpacking in gsplat chunks by @willeastcott in #8071
- Cache RenderTarget dimensions and optimize resize by @mvaligursky in #8097
- Sync GLSL gsplat chunks with WGSL by @willeastcott in #8072
- Order change in jsdocs block for consistency by @mvaligursky in #8073
- Small refactor to work buffer refactor for unified gsplats by @mvaligursky in #8091
- Fallback texture format for work buffer for unified gsplat rendering by @mvaligursky in #8093
- Add debug label to WebGPU compute passes by @samw-improbable in #8094
- Optimization wireframe index generation by @AlexAPPi in #8025
- chore(deps): update dependency node to v24 by @renovate[bot] in #8078
- chore(deps): update github artifact actions (major) by @renovate[bot] in #8074
- Update gsplat work buffer to use 2 uint textures instead of 3 half-float textures by @mvaligursky in #8055
- Update jsdocs for Material.update() by @mvaligursky in #8103
- Refactor gsplat shader chunks for tree-shaking by @mvaligursky in #8115
- Add UploadStream API and optimize GSplat order data uploads with non-blocking transfers by @mvaligursky in #8053
- Update actions/setup-node action to v6 by @renovate[bot] in #8052
- [DOCS] add documentation for ComponentSystem.id by @aidinabedi in #8087
- Use math.DEG_TO_RAD uinstead of PI / 180 internally by @mvaligursky in #8111
- Revert unintended change by @slimbuck in #8047
Fixes
- [Fix] Unified splat rendering was leaking centers array in the worker by @mvaligursky in #8061
- Fix exp perf regression by @slimbuck in #8046
- [Fix] Fix to particle exmaple not setting up shader correctly by @mvaligursky in #8045
- [Fix] Make sure node aabb debug rendering executes every frame by @mvaligursky in #8044
- Patch null SOG entry by @slimbuck in #8056
- InputSource pointer move fix on Firefox by @kpal81xd in #8057
- Fix spotlight rendering issues with small cone angles in clustered lighting by @mvaligursky in #8108
- Fix spotlight shadow leaks in clustered lighting by @mvaligursky in #8109
- Fix canvas texture dimension mismatch causing texture upload to not work on WebGPU by @mvaligursky in #8113
- [Fix] Reordered bindings when using a StorageBuffer by @samw-improbable in #7886
- [Fix] Mark splatDistances as property in gsplat component by @mvaligursky in #8059
- [Fix] restore mouse movement in pointer lock mode by @mvaligursky in #8116
- Remove MiniStats div from DOM on destroy by @willeastcott in #8069
- Gizmo regression fixes by @kpal81xd in #8079
- Remove no longer used test splat lod data by @mvaligursky in #8082
- Unified gsplat does not use material, avoid warning when cloning by @mvaligursky in #8100
- [Fix] make all gsplat engine examples compatible wtih a Null GraphicsDevice by @mvaligursky in #8101
- [Fix] varying bug when using
@interpolateby @samw-improbable in #8075 - [DOCS] fix possible null in ModelComponent.model by @aidinabedi in #8092
- [DOCS] Fix types and documentation for applySceneSettings by @aidinabedi in #8085
- [Fix] Updates jsdocs to use SKYTYPE_ instead of SKYMESH_ by @mvaligursky in #8102
Examples
- Example to show gsplat reveal shader effects by @mvaligursky in #8084
- GSplats LOD-streaming example by @mvaligursky in #8083
- Shader Effects framework + example for gaussian splatting by @mvaligursky in #8105
New Contributors
- @samw-improbable made their first contribution in #7886
Full Changelog: v2.12.4...v2.13.0