Releases: playcanvas/engine
Releases · playcanvas/engine
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