Releases: playcanvas/engine
Releases · playcanvas/engine
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
v1.58.0
Breaking changes
- Refraction index can be set to 0 without defaulting to 0.667. This means any material that is using 0 for this value may experience incorrect rendering and should reset it to the default value.
New features
- Organized source folders to better reflect the layered design of the engine by @mvaligursky in #4703 #4704 #4705 #4706 #4707 #4710 #4711 #4713 #4714 #4717 #4718 #4719 #4720 #4722 #4723 #4725 #4728 #4729 #4730 #4731 #4734 #4735 #4740 #4741
- Update to Rollup 3 by @willeastcott in #4801
- Implementation of
math.nearestPowerOfTwo
function by @mvaligursky in #4689 - Texture related improvements to glTF and USDZ Exporters by @mvaligursky in #4690
- Refactored
ProgramLibrary
to use theDeviceCache
by @mvaligursky in #4692 - Exposed build targets for rollup visualizers: network and sunburst by @mvaligursky in #4693
- Small refactor in the way
VertexBuffer
for post effects is created. by @mvaligursky in #4700 - Refactored
Shader#destroy
to avoid its dependency onProgramLibrary
by @mvaligursky in #4701 - Refactoring to remove dependency of
WebglGraphicsDevice
on shader chunks by @mvaligursky in #4702 - Enable lint checks for import statements by @willeastcott in #4708
- Convert extras to modules by @slimbuck in #4727
- Rollup plugin that logs imports from a library on a higher level by @mvaligursky in #4732
- Moved camera related functionality from
Frustum
toCamera
class by @mvaligursky in #4737 - Refactored out access to
getApplication
inMesh
,Morph
andScene
by @mvaligursky in #4738 - Remove response type warning from http by @slimbuck in #4744
- Anim folder circular dependency by @ellthompson in #4745
ShaderUtils
class to provide common shader creation functionality by @mvaligursky in #4746- Update README-kr.md by @kangjung in #4749
- Switch the Loaders/glb example to use physical units by @mvaligursky in #4752
- Shader compilation timing and avoid compilation of unprocessed shaders by @mvaligursky in #4753
- Shader generation code refactoring and unification by @mvaligursky in #4758
- Add missing material parameters by @GSterbrant in #4750
- Remove two circular dependencies from scripts by @mvaligursky in #4764
- Extracted
ScriptType
s fromScriptHandler
to avoid circular dependency by @mvaligursky in #4766 - Detect glb using file header by @slimbuck in #4768 #4781
- Improvements to clustered lighting shader compilation speed on Windows (DirectX) by @mvaligursky in #4761
- WebGPU rendering improvements for GLB test files by @mvaligursky in #4773
- Improvement to vertex attribute types for WebGPU by @mvaligursky in #4777
- Tracing console calls can print out the stack by @mvaligursky in #4808
- Improve error message when framebuffer validation fails by @mvaligursky in #4809
- Ensure READMEs use https for links by @willeastcott in #4811
- Add grab pass toggles as component attribute by @GSterbrant in #4814
- Small updates to get skinning to work on WebGPU device. by @mvaligursky in #4818
- Fix appearance of asset-viewer example by @GSterbrant in #4822
- Minor improvements to asset viewer example by @mvaligursky in #4823
- Add chunk validations for 1.58 by @GSterbrant in #4825
Fixes
GltfExporter
correctly handles multiple mesh instances per entity by @mvaligursky in #4683- Fix GLB punctual lights with physical units by @GSterbrant in #4691
- [Fix] Fix vertex shader attribute validation to support builtins by @mvaligursky in #4695
- Fixes sheen intensity by @GSterbrant in #4697
- Processing the animation data properties in the original order before PR #4174 by @yaustar in #4698
- [Fix]
GltfExporter
correctly exports buffer views for non-interleaved vertex data by @mvaligursky in #4699 - Fix lint issues in types-fixup.mjs by @mvaligursky in #4716
- Fix typo by @slimbuck in #4733
- Cleanup of
Entity
constructor to remove circular dependency by @mvaligursky in #4736 - [Fix] Switching directional light to a clustered local light works. by @mvaligursky in #4739
- Remove transmission factor gamma decoding by @GSterbrant in #4743
- Fix
cubeMapRotation
uniform by @slimbuck in #4748 - [FIX] Various spelling mistakes by @willeastcott in #4754
- [FIX] Check docs build with Actions and make fixes by @willeastcott in #4756
- Return a sensible value for animation component duration if no animation is playing by @yaustar in #4765
- Glb parser: duplicate morph curve fix by @ellthompson in #4771
- Downscale oversized ImageBitmaps by @slimbuck in #4783
AnimClip
event cursor fix by @ellthompson in #4785- Audio resume fix by @slimbuck in #4788 4789
- specify normal is swizzled by @slimbuck in #4790
- Fix disabling derivatives not generating
vObjectSpaceUpW
. by @GSterbrant in #4798 - [Fix] Fix the bounding sphere calculation for spot lights by @mvaligursky in #4800
- [Fix] Clustered lighting correctly supports light layers by @mvaligursky in #4799
- [Fix] Fix issue with baking clustered lights by @mvaligursky in #4810
Full Changelog: v1.57.1...v1.58.0
v1.57.1
Bug Fixes
- Use prefiltered cubemap format and type by @slimbuck in #4672
- GltfExporter correctly handles multiple mesh instances per entity by @mvaligursky in #4683
- Texture related improvements to Gltf and USDZ Exporters by @mvaligursky in #4690
- Fix GLB punctual lights with physical units by @GSterbrant in #4691
- Fixes sheen intensity by @GSterbrant in #4697
- Fix vertex shader attribute validation to support builtins by @mvaligursky in #4695
- Processing the animation data properties in the original order before PR #4174 by @yaustar in #4698
Full Changelog: v1.57.0...v1.57.1
v1.57.0
Major changes
- Add support for iridescence by @GSterbrant in #4632
- USDZ Exporter by @mvaligursky in #4638 #4646 #4668
- Output treeshakeable module builds by @slimbuck in #4601
New features
- Physically based camera by @GSterbrant in #4585
- Physically based light units by @GSterbrant in #4618
- Pass area lights LUT directly by @yak32 in #4643
- Add glTF exporter by @willeastcott in #3366
- Added changeScene API by @yaustar in #4626
- Adds a texture mapping allowing us to combine sampler uniforms by @GSterbrant in #4636
- Small updates to improve WebGPU implementation by @mvaligursky in #4599
- Added CC-BY-4.0 licences to asset viewer example by @yaustar in #4610
- Add the XXXMapTint and XXXMapVertexColor to the removed material parameters list by @GSterbrant in #4567
- Use better defaults for physically based camera parameters by @GSterbrant in #4617
- Only add the shared sampler if the chunk uses the $SAMPLER macro. by @GSterbrant in #4669 #4674 #4681
- Partial support for texture formats on WebGPU by @mvaligursky in #4622
- Expose lightmapper chunks by @slimbuck in #4648
- Additional flexibility for Morph targets by @mvaligursky in #4662
- Small improvements to physical lights units example by @mvaligursky in #4679
- Revert enabling image bitmap by @slimbuck in #4596
- Test for ImageBitmap support at startup by @slimbuck in #4598
Fixes
- Fix missing chunk deprecations and updates. by @GSterbrant in #4592
- Make sure we create a grab pass buffer if no source is present by @GSterbrant in #4593
- Fix using fresnel incorrectly with lightmaps. by @GSterbrant in #4594
- Fix sheen glossiness and colour not getting applied correctly by @GSterbrant in #4619
- Fix bug where sheen wasn't appropriately layered by @GSterbrant in #4629
- Fix energy preservation for clear coat by @GSterbrant in #4630
- Fix refraction bug by @GSterbrant in #4631
- Disable use of specularity factor if non-metalness workflow is used. by @GSterbrant in #4640
- Lint fixes to UsdzExportExample by @mvaligursky in #4646
- Fix lightmap chunk sampler by @slimbuck in #4652
- Fix vector subtraction comments by @ninito-ph in #4654
- Fixed issue (#3733) that prevents XR from working in certain circumstances by @Clicky02 in #4517
- Unset deleted render target by @slimbuck in #4655
- Fix unpacking of msdf markup params by @NewboO in #4600
- Clear coat fresnel fix by @GSterbrant in #4657
- [Fix] Fixed Webgl’s shader handling of lost context by @mvaligursky in #4658
- Resolve render target before generating mips by @slimbuck in #4661
- [Fix] Engine examples readme file specifies how to build the thubmnails by @mvaligursky in #4663
- Fix typo in cloneSkinInstances to avoid double allocations by @mvaligursky in #4664
- GLB parser - check for empty curveData path arrays by @ellthompson in #4665
- Fix screen-space UI not receiving events in AR mode. by @jpauloruschel in #4667
- Fix chunk decode calls by @slimbuck in #4670
- Fix warning for our GLB chunks not using the right API version by @GSterbrant in #4671
- Use prefiltered cubemap format and type by @slimbuck in #4672
- ElementDragHelper: Fix drag NaN by @kungfooman in #4666
New Contributors
- @ninito-ph made their first contribution in #4654
- @Clicky02 made their first contribution in #4517
Full Changelog: v1.56.0...v1.57.0
v1.56.0
Larger Features
- Add support for
KHR_materials_sheen
by @GSterbrant in #4460 - Add support for
KHR_materials_volume
by @GSterbrant in #4485 - Add support for
KHR_materials_variants
by @GSterbrant in #4528 - Add support for
KHR_materials_emissive_strength
by @GSterbrant in #4535 - Add HQ reflections by @slimbuck in #4513
- Initial very basic implementation of WebGPU by @mvaligursky in #4534
- Clustered lighting is enabled by default and public by @mvaligursky in #4586
What's new
- Add Korean language README file by @kangjung in #4479
- Append action function by @jath-git in #4469
- Remove negative mouse action requirement by @jath-git in #4458
- Added validation for the chunks with changed APIs by @GSterbrant in #4496
- Provide default textures for the new material textures. by @GSterbrant in #4523
- Unified standard + basic shader intro code by @mvaligursky in #4565
- Print a warning when resource loader is not registered by @mvaligursky in #4574
- Asset viewer example by @GSterbrant in #4583
- Moved lightmapper only chunks to separate module to allow for their tree-shaking by @mvaligursky in #4588
Bug Fixes
- Glb-parser morph target fix by @ellthompson in #4474
- Add missing material parameters by @GSterbrant in #4478
- Reproject fix by @slimbuck in #4488
- Fix Specularity Factor tint with map by @GSterbrant in #4506
- Split the reflection and light sheen calculations by @GSterbrant in #4500
- Fix to recently introduced issue with Basic shader generator by @mvaligursky in #4507
- When material is not set on mesh instance, warn and use default one. by @mvaligursky in #4524
- Morph target animation fix by @ellthompson in #4532
- Apply polygon offset for shadows with WebGL1 by @GSterbrant in #4538
- Fix biasing issues with WGL1 by @GSterbrant in #4544
- Animation resource with events fix by @ellthompson in #4545
- AnimBinder path resolution update by @ellthompson in #4548
- Return null if no variants are present by @GSterbrant in #4549
- Example controls fix by @ellthompson in #4550
- Fix AudioContext not resuming properly. by @jpauloruschel in #4462
- AssetListLoader fix by @ellthompson in #4561
- Dynamic refractions multiply albedo twice by @GSterbrant in #4563
- Handle default material for createModel by @GSterbrant in #4566
- Add layer check between Camera and Element when testing for input. by @jpauloruschel in #4210
- Fix material thickness and texture transforms by @GSterbrant in #4578
- Export AppOptions by @slimbuck in #4581
- Fix UI Element input events on multiple touches. by @jpauloruschel in #4562
- Avoid using null Batcher by @mvaligursky in #4590
- Register shader generators at the point of use instead of always by @mvaligursky in #4587
- Fix grab pass with downscaled render target by @GSterbrant in #4591
New Contributors
- @jath-git made their first contribution in #4469
- @Mintytorus made their first contribution in #4481
- @kangjung made their first contribution in #4479
Full Changelog: v1.55.0...v1.56.0
Notes
To enable the new dynamic refractions, a few modifications are required on the application side, first, you need to add this:
const depthLayer = app.scene.layers.getLayerById(pc.LAYERID_DEPTH);
app.scene.layers.remove(depthLayer);
app.scene.layers.insertOpaque(depthLayer, 2);
What this does is to rearrange the layers such that the skydome will be part of the grab pass. Then we need to make the camera actually perform the grab pass:
const camera = new pc.Entity();
camera.addComponent("camera", {
clearColor: new pc.Color(0.4, 0.45, 0.5)
});
camera.setLocalPosition(0, 5, 30);
camera.camera.requestSceneColorMap(true);
The last thing to do is to make sure you create the graphics device with the alpha option set to true
// Create the app and start the update loop
const app = new pc.Application(canvas, {
graphicsDeviceOptions: {
alpha: true
},
mouse: new pc.Mouse(document.body),
keyboard: new pc.Keyboard(document.body),
touch: new pc.TouchDevice(document.body)
});
v1.55.4
Bug Fixes
- Updated REGEX for Samsung Exynos check for Snapchat Minis (#4515)
- [Fix] Fix error message accessing null in SkinInstance (#4526)
- Clear wasm module global (#4527)
- Fix preprocessor regexp matching extensions (#4530)
- fix for the named morph targets feature (#4532)
Full Changelog: v1.55.3...v1.55.4