Releases: playcanvas/engine
Releases · playcanvas/engine
v1.62.1
Fixes
- Aces2 exposure fix by @slimbuck in #5261
- Check for ior 0 by @slimbuck in #5239
- CurrentTime needs to be called before state change by @yaustar in #5241
- Fix to incorrect clearing of temp arrays by @mvaligursky in #5245
- Fixed PCF1 clustered shadow shader compile error by @yaustar in #5250
- Revert "Warn and block Entity transform when Dynamic Rigid Body present (#5069)" by @yaustar in #5254
- Fixed a typo in a warning message about missing color texture. by @mvaligursky in #5257
- Clean up event listeners on anim clip dest by @yaustar in #5260
- Disable GPU particles on Mali G52 due to rendering artifacts by @yaustar in #5255
Full Changelog: v1.62.0...v1.62.1
v1.62.0
What's Changed
This release breaks most lit/frag chunks. Most of these chunks have had their signatures changed to accept the various values they need, instead of relying on globals. With that said, most globals are still set in the shader. An example of this change is:
vec3 combineColor() {
vec3 ret = vec3(0);
ret = dAlbedo * dDiffuseLight;
...
}
Is now expressed:
vec3 combineColor(vec3 albedo, vec3 sheenSpecularity, float clearcoatSpecularity) {
vec3 ret = vec3(0);
ret = albedo * dDiffuseLight;
...
}
The affected chunks are documented here: https://dev-developer.playcanvas.com/en/user-manual/graphics/shader-chunk-migrations/#engine-v162
Breaking changes
- Further separation of frontend and backend shaders by @GSterbrant in #5104
- Implementation of BlendState by @mvaligursky in #5083
- DepthState implementation for WebGL and WebGPU by @mvaligursky in #5150
- Updates to Plane’s class constructor, to take a distance instead of a point by @mvaligursky in #5196
New features
- Function RenderPass.execute is now optional by @mvaligursky in #5100
- Extended GamePad support by @MushAsterion in #5044
- Added Debug.gpuError to log out gpu validation errors in debug mode by @mvaligursky in #5110
- Added couple of additional GPU markers to forward renderer by @mvaligursky in #5111
- WebGPU support to shadow atlas (shadow cascades + clustered shadows) by @mvaligursky in #5118
- Exposed MeshInstance.castShadow by @mvaligursky in #5130
- Updated mesh batching to support triangle strips used by UI system by @mvaligursky in #5132
- WebGPU clear renderer, allowing render target clear using a quad rendering by @mvaligursky in #5128
- Precision of MorphTarget data can be specified by @mvaligursky in #5138
- Examples working on WebGPU device are enabled to use it in Examples Browser by @mvaligursky in #5151
- Quat: add the setFromDirections method and tests for it by @querielo in #5145
- WebGPU Render pipeline validation in debug mode by @mvaligursky in #5173
- Parse models asynchronously by @slimbuck in #5078
- Simple planar-renderer script to render planar reflections by @mvaligursky in #5186
- Change
raycastAll
sorting default tofalse
by @MushAsterion in #5181 - Implements results filtering for
raycastAll
andraycastFirst
by @MushAsterion in #5180 - Add
RaycastResult
sorting onRigidBodyComponentSystem#raycastAll
by @MushAsterion in #5179
Fixes
- Convert local light shadow rendering to use render passes by @mvaligursky in #5103
- Optimize the handling of cull state for negatively scaled world transforms by @mvaligursky in #5204
- Update obj parser by @slimbuck in #5200
- Enabled BlendTrees1D on WebGPU as working now by @mvaligursky in #5195
- Add specular occlusion to sheen. by @GSterbrant in #5119
- Alpha test fix by @slimbuck in #5126
- Small optimizations to the way target textures are constructed in Morph by @mvaligursky in #5134
- Optimization to Morph.aabb calculation by @mvaligursky in #5137
- Lazily evaluate disjoint timer extension by @mvaligursky in #5139
- Optimize morph target animation creation from glb data by @mvaligursky in #5140
- Updated tint wasm compiler to up to date version by @mvaligursky in #5141
- WebGPU renderer handles canvas size change by @mvaligursky in #5148
- Support empty AnimTracks by @ellthompson in #5112
- Fix for blend tree animations by @ellthompson in #5155
- Optimized GPU cost if zero clustered lights by @mvaligursky in #5131
- WebGPU - fix rendering with single-sampled framebuffer by @mvaligursky in #5164
- Deprecate
StandardMaterial#shininess
by @willeastcott in #5166 - Http arrayBuffer fix by @slimbuck in #5165
- Correctly handle absolute URLs in gltf by @slimbuck in #5169
- Outline post effect shader uses textureLod to avoid non-uniform sampling in a branch by @mvaligursky in #5171
- Sample shadow maps using LOD instruction on WebGPU by @mvaligursky in #5174
- Workaround for 8bit GLB index buffers not supported on WebGPU by @mvaligursky in #5175
- Unloaded animation assignment fix by @ellthompson in #5172
- Small optimization of BoundingBox.computeMinMax by @mvaligursky in #5177
- Don’t include code using vertex_tangent unless needed by @mvaligursky in #5176
- Improved error logging when using current render target as texture by @mvaligursky in #5182
- Clamp shadow distance to camera far plane by @slimbuck in #5183
- Remove VSM blur weights restriction by @slimbuck in #5184
- Improved handling of features and limit for WebGPU by @mvaligursky in #5188
- Set default value for twoSidedLightingNegScaleFactor as renderer does not always set it by @mvaligursky in #5189
- Fix to the way WebGPU device handles render target resizing by @mvaligursky in #5193
- Addition of private helper debug only function to help guard against destroyed objects being used. by @mvaligursky in #5194
- Output types for extras module build by @slimbuck in #5197
- Removed setting material.blend as not needed by ParticleEmitter by @mvaligursky in #5120
Examples
- Anim engine examples updated to work on WebGPU by @mvaligursky in #5203
- Updated LightsBaked engine example to bake specular (direction) as well by @mvaligursky in #5202
- Few engine examples in the loaders section enabled on WebGPU by @mvaligursky in #5198
- Small fixes in examples to avoid debug errors / warnings by @mvaligursky in #5129
- Support device type switching by @ellthompson in #5147
- Dropped number of chairs in the Compound Collision example by @mvaligursky in #5149
- Mini stats fix by @ellthompson in #5156
- Enabled multiple examples for WebGPU by @mvaligursky in #5158
- Fixes and workarounds to bring multiple examples to work on WebGPU by @mvaligursky in #5170
Full Changelog: v1.61.3...v1.62.0
v1.61.3
Fixes
- Use highp samplers for clustered light data to avoid precision issues on some devices by @mvaligursky in #5093
- Fix the destroy callback in Bloom by @querielo in #5077
- [Fix] Fix ParticleComponent documentation: ‘blend’ should be ‘blendType’ by @mvaligursky in #5092
- Fix typo with lightMapVertexColors and refer to proper frontend option. by @GSterbrant in #5094
- [Fix] Fix to Picker class not releasing its render target by @mvaligursky in #5084
Full Changelog: v1.61.2...v1.61.3
v1.61.2
Fixes
- [Fix] Adding early out for clustered lights to fix performance regression by @mvaligursky in #5088
Full Changelog: v1.61.1...v1.61.2
v1.61.1
Bug Fixes
- Delete old material property when the new one already exists (#5053)
- WebXR - fixed bug where the wrong number of views is being added (#5063)
- WebXR - camera parameters fix (#5068)
- Handle undefined bufferView in glb parser (#5079) - many thanks to @querielo for this one!
- Instantiate Draco if it appears in extensionsUsed (#5080) - many thanks to @querielo for this one too!
- Only log error related to nested render passes once on Open GL (#5081)
v1.61.0
Breaking changes
- [BREAKING] UI Scroll Views now work in XR by @yaustar in #4940
- [BREAKING] Quad render class, drawQuadWithShader refactor, Camera render events moved. by @mvaligursky in #4988
New Features
- Use hardware device properties (fov) when in XR by @yaustar in #4837
- Optimize clustered lighting shaders compilation time on Windows platform by @mvaligursky in #5012
- Update basis initialisation to work with facebook games by @slimbuck in #5016
- Include WebGPU support in all built targets by @mvaligursky in #5030
- Updated codebase to properly use WebGPU types by @mvaligursky in #5031
- Additional engine tracing related to frame timing by @mvaligursky in #4975
- Update to WebGL shader compilation and linking by @mvaligursky in #4964
- Added attributes parameter to createShaderFromCode by @mvaligursky in #4984
- Plane/Ray add copy/clone methods + prefer ownership over references by @kungfooman in #4925
- Properly deprecated Timer class by @mvaligursky in #4979
- Smaller PostEffect refactor and simplification, WebGPU support by @mvaligursky in #4996
- Updates to make PostEffects example working on WebGPU by @mvaligursky in #5004
- Transpile WebGPU SpirV shaders into WGSL by @mvaligursky in #5015
- Refactor all remaining posteffects to use drawQuad + simpler shader creation by @mvaligursky in #5002
- rollup: add JSDoc, spacesToTabs fix, improved debugging builds by @kungfooman in #4796
- Removed isDefined helper function by @mvaligursky in #4978
- Texture based morphing support for WebGPU by @mvaligursky in #4989
- Clustered light cookie textures works on WebGPU by @mvaligursky in #4991
- Deprecated property: Layer.renderTarget by @mvaligursky in #4994
- Improved documentation for Shader creation by @mvaligursky in #4997
- Clear DebugGraphics gpu call stack each frame by @mvaligursky in #5003
- Added public API notes for the container resource by @yaustar in #4999
- Rearanged members of ClusterLightData structure to eliminate padding by @mvaligursky in #5005
- Removed unneeded dirty flag set in XrManager by @yaustar in #5013
- Variable rename in the clustered lighting shader to avoid the use of reserved word by @mvaligursky in #5014
- Updated texture reprojection to work on WebGPU by @mvaligursky in #5021
- Added AnimCurve and AnimData back to API Docs by @MushAsterion in #5023
- Ignore custom .npmrc by @yak32 in #4954
- Tint compiler updated to newer version by @mvaligursky in #5025
- Improved shadow cascades for WebGPU by @mvaligursky in #5026
- Add support for building the API reference with Typedoc by @willeastcott in #5028
- Add types for WebGPU by @willeastcott in #5029
- Add field declarations for all core classes by @willeastcott in #5033
- Add MDN links to Typedocs for browser APIs by @willeastcott in #5034
- Optimize createMorphTargetCurves by @mvaligursky in #5035
- Optimize texture upload of morph targets by @mvaligursky in #5037
- Deprecate
createStyle
function by @willeastcott in #5040 - Switch Material to use field declarations by @willeastcott in #5041
- Added Container asset option skipMeshes, to ignore mesh loading from glb by @mvaligursky in #5046
Changes to Examples
- ShaderCompile engine example to be used as a test for shader compilation speed by @mvaligursky in #5000
- Examples browser dependency update by @ellthompson in #4974 #5010
- Shader*** examples updated to use createGraphicsDevice by @mvaligursky in #4981
- [Examples Browser] Build with local PCUI by @ellthompson in #4976
- Small polish to the ClusteredSpotShadows example by @mvaligursky in #4992
- Cleanup and improvements of ModelOutline example by @mvaligursky in #4993
- Multiple engine examples are converted to use createGraphicsDevice function by @mvaligursky in #5022
Fixes
- Load old material glossiness correctly by @slimbuck in #4967
- Remove energy conservation for ambient light when using the phong model. by @GSterbrant in #4968
- [Fix] Fix to non-clustered omni shadow rendering by @mvaligursky in #4972
- Small docs fix for XrDomOverlay by @yaustar in #4977
- Fixed Camera Component API docs for scissorRect by @yaustar in #4998
- [Fix] Fixed code examples for calculateTangents and calculateNormals by @mvaligursky in #4980
- [Fix] Fix to Grab-pass engine example on WebGL1 by @mvaligursky in #4983
- Fix shadow map using vertex normals. by @GSterbrant in #4985
- Sparse accessor fix by @slimbuck in #4986
- Exclude area lights LTC shader chunk if clustered area lights are disabled by @mvaligursky in #4990
- Fix for draco vertex colors, which are stored as 16 bit for some reason by @slimbuck in #5008
- Fixing Entities being cloned on attribute change by @MushAsterion in #5024
- Fix gravity test by @slimbuck in #5020
- Fix warnings from Typedoc build by @willeastcott in #5032
- Fix docs typos by @LeXXik in #5036
- Fix many issues with API reference links by @willeastcott in #5038
- [Fix] Fix to the way morph weight name is looked up by @mvaligursky in #5045
- Fix ao vertex colors by @slimbuck in #5047
New Contributors
- @MushAsterion made their first contribution in #5023
Full Changelog: v1.60.0...v1.61.0
v1.60.0
What's Changed
- WebGPU support for rendering to shadow map for Directional lights by @mvaligursky in #4924
- Directional shadow support for WebGPU by @mvaligursky in #4931
- Small update to PCF5 sampling chunk to be compatible with WebGPU by @mvaligursky in #4932
- Updated few engine examples to use createGraphicsDevice function by @mvaligursky in #4933
- Element Drag Helper - Screen to Local gives wrong values if parent is scaled by @yaustar in #4935
- Uniform buffer supports arrays by @mvaligursky in #4936
- Update to internal DebugGraphics class to allow better error messages by @mvaligursky in #4939
- SpineBoy example updated to use createGraphicsDevice by @mvaligursky in #4941
- Clustered-spot-shadows example converted to use createGraphicsDevice by @mvaligursky in #4942
- Improve performance of some path's methods by @querielo in #4943
- Improve render pass logging of the framebuffer on WebGPU by @mvaligursky in #4944
- Update TypeScript to 4.9.4 by @willeastcott in #4948
- Add standard material invert for gloss channels by @slimbuck in #4949
- Moved compiled shader cache from device to DeviceCache instance by @mvaligursky in #4960
- Rename material uniform glossiness to gloss by @slimbuck in #4962
- Replace mix with 1 - value for energy conservation by @GSterbrant in #4963
Fixes
- [Fix] Fix to attribute based morphing by @mvaligursky in #4923
- [Fix] Postprocessing optimization. by @querielo in #4927
- [Fix] Regression of world space drag bug #3748 by @yaustar in #4937
- [Fix] Fix to light options processing causing clustered shaders compilation when lights change by @mvaligursky in #4955
- [Fix] Fix null access caused in clustered light code when no meshes use lights by @mvaligursky in #4956
- [Fix] Clustered light culls meshes when the atlas slot is reassigned by @mvaligursky in #4958
- [Fix] A few small material bits by @slimbuck in #4959
- [Fix] Light conservation also affecting ambient (diffuse) light. by @GSterbrant in #4961
Full Changelog: v1.59.0...v1.60.0
v1.59.0
New features
- Improved shadow cascades rendering, allowing per cascade update by @mvaligursky in #4921
- Added collision component linear and angular offset by @yaustar in #4865 #4916
- Directional shadows are rendered using RenderPass setup by @mvaligursky in #4917
- Split generic parts of ForwardRenderer into a Renderer class by @mvaligursky in #4886
- GrabPass functionality changes to support WebGPU and improve WebGL support by @mvaligursky in #4896
- Various small improvements and validations to WebGPU rendering by @mvaligursky in #4899
- Refactor out dependency of SceneGrab on the AppBase by @mvaligursky in #4901
- Partial Depth-GrabPass support for WebGPU by @mvaligursky in #4906
- Partial cubemap support for WebGPU by @mvaligursky in #4911
- Support for debug tracing info about RenderPipeline and its layout, WebGPU by @mvaligursky in #4914
- Split ShadowRenderer into class for local and class for directional lights by @mvaligursky in #4915
- LitOptions class to hold backend options by @GSterbrant in #4900
- Change VertexFormat.defaultInstancingFormat from a property to a function by @mvaligursky in #4918
- Updated examples to use createGraphicsDevice function (Dynamic Batching, ClusteredAreaLights, MultiView, Glb, GroundFog, GrabPass, AssetViewer, RenderCubemap, RenderToTexture, Rendering to texture) by @mvaligursky in #4880 #4887 #4895 #4888 #4890 #4897 #4908 #4919
Fixes
- Improvement and fix to view-proj matrix handling by @mvaligursky in #4891
- Fix sheen glossiness being consistent throughout the engine by @GSterbrant in #4898
- Bump GLB parser chunks to 1.58. by @GSterbrant in #4905
- [Anim Binder] Animate multiple valid morph instances by @ellthompson in #4912
- Fix: getActiveStateProgressForTime by @ertugrulcetin in #4913
New Contributors
- @ertugrulcetin made their first contribution in #4913
Full Changelog: v1.58.2...v1.59.0
v1.58.2
Fixes
Full Changelog: v1.58.1...v1.58.2
v1.58.1
Bug Fixes
- Fix missing click events in mixed touch/mouse scenarios (#4839)
- Fix grab depth texture on WebGL1 (#4845)
- Fix skybox rotation (#4857)
- Fix shadow renderer not using nearClip of 0 (#4859)
- Fix packSamples calculating out-of-bounds (#4862)
- Audio fix for safari desktop (#4868)
- Fix light intensities being wrong (#4870)
Full Changelog: v1.58.0...v1.58.1