Breaking changes
- EventHandle and option to disable EventHandler chaining. by @Maksims in #5481 breaks compatibility with Tween, see playcanvas/playcanvas-tween#42
Changes
- Refactor the internals of antialiasing / backbuffer on WebGL device by @mvaligursky in #5628
- NullGraphicsDevice implementation allowing to run the application without rendering by @mvaligursky in #5563
- GltfExporter supports BasicMaterial by @mvaligursky in #5562
- Refactor LayerComposition to avoid its update when mesh transparency changes / mesh is added by @mvaligursky in #5536
- Mat3 and Mat4 updates by @slimbuck in #5567
- chore(examples): address eslint warnings by @epreston in #5532
- chore(examples): rollup type completion - lint warnings by @epreston in #5539
- chore: update package-lock.json by @epreston in #5543
- chore: include localised readmes in npm package by @epreston in #5544
- Simplify some shadow penumbra math / avoid divide by zero by @mvaligursky in #5551
- Add WebXR types by @willeastcott in #5556
- WebXR Anchors by @Maksims in #3091
- Layer composition does not maintain list of shadow casters per light by @mvaligursky in #5540
- JSDoc: Remove redundant default param values by @willeastcott in #5566
- JSDoc: Modernize some blocks by @willeastcott in #5568
- WorldClusters allocation is now dynamic, removed from composition update by @mvaligursky in #5569
- Refactored and fixed the lightcube lighting for particle emitters by @mvaligursky in #5570
- Remove unneeded indirection using light indices by @mvaligursky in #5571
- Shader generators are converted to modules by @mvaligursky in #5552
- Cookie renderer refactored to use a single render pass by @mvaligursky in #5572
- Improvement to light sorting when layer light hash is generated by @mvaligursky in #5576
- Refactor shader caching to handle mesh instance on layers with different lights by @mvaligursky in #5582
- Vec and Quat source args by @slimbuck in #5575
- chore: speed up and clean up CI by @epreston in #5590
- Refactored the way LightComponent changes notify the LayerComposition by @mvaligursky in #5592
- Refactored shadow casting directional lights collection by @mvaligursky in #5593
- chore(examples): update playcanvas-spine.3.8.js by @epreston in #5600
- refactor(build): update rollup shaderChunks by @epreston in #5602
- chore(build): create .eslintrc.json in karma tests by @epreston in #5603
- Layer composition no longer handles lights by @mvaligursky in #5604
- Converted Picker to use render pass internally by @mvaligursky in #5608
- Added function: RenderTarget.resize by @mvaligursky in #5611
- Remove private Texture.getDds function that is no longer needed by @mvaligursky in #5612
- rollup-shader-chunks.mjs: simplify + fix template string bug by @kungfooman in #5613
- Add setAttribute to standard material by @LeXXik in #5607
- Refactor rendering in MiniStats by @mvaligursky in #5616
- Minor update to instancing example by @LeXXik in #5618
- Don't drop newline of single line comments by @kungfooman in #5617
- Added width and height to sprite component clone by @OlegGedzjuns in #5625
- Easy ES5 ES6 Distinguishability via file extension only by @kungfooman in #5623
- Renaming of internal variable to backBufferFormat by @mvaligursky in #5630
- MiniStats render on UI layer by @mvaligursky in #5631
- chore: update jsdoc comment by @epreston in #5634
- Vec2.rotate(degrees), Vec2.angle, Vec2.angleTo methods by @Maksims in #5622
- Refactor - do not create cookies render pass each time but reuse one by @mvaligursky in #5645
- Small internal refator to RenderPass to allow simpler override implementation by @mvaligursky in #5652
- Extracted generic render pass for a cookie renderer and picker to a new modules by @mvaligursky in #5653
- Adding glsl tags to internal shaders for syntax highlighting to work by @mvaligursky in #5654
- Extract the color grab functionality to a render pass by @mvaligursky in #5655
- Small internal refactor of the way camera is passed around for rendering by @mvaligursky in #5656
- Removed CookieRenderer by making it fully integrated into cookie render pass by @mvaligursky in #5658
- Renamed internal render pass function for consistency by @mvaligursky in #5660
- Compressed texture formats working on webgpu by @slimbuck in #5659
- Enable WebGPU support for TextureBasis engine example by @mvaligursky in #5661
- Internal variable renamed for consistency with next updates by @mvaligursky in #5666
- Fallback Webgl1 solution for depth grab is replaced by a RenderPassDepth by @mvaligursky in #5671
- Update basis binaries by @slimbuck in #5674
- Convert depth grabbing functionality on WebGL2/WebGPU to a render pass by @mvaligursky in #5673
- Add equalsApprox to vec2, vec3, vec4 (and tests) by @querielo in #5662
- Latest ammo module by @slimbuck in #5676
- Deprecate device.webgl2 in favor of device.isWebGL2 by @mvaligursky in #5678
- Small cleanup to the way antialiasing set up is handled by @mvaligursky in #5679
- Validate and enforce valid texture dimensions by @mvaligursky in #5683
- Improved handling of VSM32 on WebGPU by @mvaligursky in #5684
- chore(deps): update chai to ^4.3.10 by @epreston in #5696
- Fix scroll view touch events by @LeXXik in #5703
- Bump actions/checkout from 3 to 4 by @dependabot in #5701
- Better handling of gltf blend materials by @slimbuck in #5705
- feat(build): clean build folder before rebuilding all targets by @epreston in #5695
- Fire destroy event in AppBase#destroy by @kungfooman in #5693
- Add RenderTarget|null typing + remove dead code by @kungfooman in #5704
- New API: add a scaled vector by @LeXXik in #5702
- Ministats render size by @slimbuck in #5718
Bug fixes
- Fix to the LitShader compatibility handling by @mvaligursky in #5533
- Set ior when metalness is used by @slimbuck in #5534
- fix: jsdoc typo by @epreston in #5537
- fix(examples): update react app code by @epreston in #5545
- fix(examples): undefined imageEntity by @epreston in #5547
- [Fix] Avoid additional shaders creation caused by out of order lights by @mvaligursky in #5550
- Fix some consistent-return lint errors by @willeastcott in #5557
- fix(test): vec3.test.mjs by @epreston in #5559
- fix(examples): remove duplicate npm parameter by @epreston in #5560
- [Fix] Fix few shader chunks using removed IridescenceArgs struct by @mvaligursky in #5564
- Fix to lightmapper when no baking lights by @mvaligursky in #5565
- [Fix] Null / undefined access to script loader and xr fix by @mvaligursky in #5580
- Handle case of gl.getSupportedExtrentions returning null by @mvaligursky in #5583
- [Fix] Fix the Picker not restoring transparency flag by @mvaligursky in #5584
- fix(docs): remove type-error warning by @epreston in #5587
- fix(examples): ensure examples commands work on windows by @epreston in #5594
- fix(docs): remove {{TYPE-ERROR}} warning by @epreston in #5596
- [Fix] Make sure the non-clustered shadow allocates shadow map even when not rendered by @mvaligursky in #5597
- [Fix] Handle missing clusteredLightingEnabled in render settings by @mvaligursky in #5598
- [Fix] avoid null/undefined access on iOS when the context is lost by @mvaligursky in #5610
- Fix to mesh instance culling not honoring its cull flag by @mvaligursky in #5629
- Handle ios 17 basis wasm regression by @slimbuck in #5657
- Material prefiltered cubemap fix by @slimbuck in #5627
- Fix the order of layers in ReflectionPlanar example to render MiniStats last by @mvaligursky in #5642
- Fix to restoring lost context on WebGL related to very recent backbuffer refactoring by @mvaligursky in #5643
- When the context is lost, silently ignore failed shader compilation by @mvaligursky in #5644
- fix: define es6 package as es6 package by @epreston in #5635
- Shadow Artifact Fix by @defektu in #5646
- docs: update drawTexture typedoc by @epreston in #5641
- [FIX] JSDoc for AnimEvaluator#update by @willeastcott in #5647
- DOCS: Add missing TONEMAP_ACES2 to JSDocs by @willeastcott in #5648
- Fix to render target logging for render passes by @mvaligursky in #5649
- Fix reallocation of a depth render target in the SceneGrab class by @querielo in #5650
- Fix resizing of render targets in the PostEffectQueue class by @querielo in #5651
- [Fix] Calling CameraComponent.onRemove when the entity with camera is destroyed by @mvaligursky in #5670
- Handle null gl.getContextAttributes() when context is lost by @jbromberg in #5667
- Fix the number of samples detection code for WebGL1 by @mvaligursky in #5677
- Minor fix: there is no need to bind _addLayer by @querielo in #5706
- Don't create WebglShaderInput if there is no attribute by @AndrewRayCode in #5710
- Handle vertex formats in GLB files that are not supported on WebGPU by @mvaligursky in #5712
- Webgpu fixes by @slimbuck in #5711
- fix array cloning by @LeXXik in #5694
- WebGPU texture anisotropy validation fix by @slimbuck in #5715
- WebGPU Uploads textures / mipmaps before the render pass starts by @mvaligursky in #5716
New Contributors
- @defektu made their first contribution in #5646
- @AndrewRayCode made their first contribution in #5710
Full Changelog: v1.65.5...v1.66.0