Releases: playcanvas/engine
Releases · playcanvas/engine
v2.16.2
Fixes
- Fix
GsplatResourceBase.getTextureto be public by @mvaligursky in #8442 - Inline WGSL
resolveCodebookto fix Firefox naga compatibility by @mvaligursky in #8450 - Move clustered packed values out of light struct for Samsung WebGL precision/corruption issues by @mvaligursky in #8461
- Only emit written color outputs in WGSL
FragmentOutputstruct by @slimbuck in #8465 - Fix annotation hotspot sizing by @slimbuck in #8463
- Fix WebGL
readTextureAsyncallocating too much memory for output data by @slimbuck in #8472 - Exclude skinned and morphed mesh instances from batching by @mvaligursky in #8477
Full Changelog: v2.16.1...v2.16.2
v2.16.1
Fixes
- Fix chromatic fringing shader undefined behavior with negative values by @mvaligursky in #8438
Full Changelog: v2.16.0...v2.16.1
v2.16.0
Changes
- Procedural GSplat Container API by @mvaligursky in #8352
- GSplat Extra Streams and Work Buffer Customization by @mvaligursky in #8383
- GsplatProcessor and extra data streams for gaussian splats by @mvaligursky in #8395
- GSplat Work Buffer Custom Streams Support by @mvaligursky in #8396
- Unify GSplat format shader architecture by @mvaligursky in #8377
- GSplat: Centralize texture management with GSplatStreams class by @mvaligursky in #8379
- Clarify gamma correction docs by @mvaligursky in #8386
- Modernize legacy posteffect scripts to ES6 classes and fix FXAA offset bug by @mvaligursky in #8397
- Update jsdocs of QuadRender by @mvaligursky in #8398
- Add BatchManager.getGroupById method by @mvaligursky in #8399
- Destroy WebGPU texture immediately instead of letting garbage collection do it by @mvaligursky in #8401
- Add numeric literal support to shader preprocessor by @mvaligursky in #8402
- Implement deferred destruction for WebGPU textures by @mvaligursky in #8403
- Add 2D Gaussian Splatting (2DGS) Rendering Support by @slimbuck in #8416
- Improve XrSession script documentation and consistency by @willeastcott in #8417
- feat: add snap vertical movement to XrNavigation script by @willeastcott in #8420
- Unified GSplat Picking Support by @mvaligursky in #8421
- Document ColorLUT texture format in CameraFrame JSDoc by @mvaligursky in #8424
- Remove deprecated gsplatCustomizeVS shader chunk by @mvaligursky in #8422
- Rename GSplatParams.id to enableIds by @mvaligursky in #8423
- Add support for WGSL subgroup_uniformity and subgroup_id language extensions by @mvaligursky in #8426
- GSplatProcessor: Add numSplats uniforms and automatic padding skip by @mvaligursky in #8430
Fixes
- ES2020 compatibility for GSplatSortBinWeights worker injection by @mvaligursky in #8373
- Fix preprocessor numeric literal parsing to avoid incorrect partial matches by @mvaligursky in #8404
- Fix unified gsplat work buffer extra streams for octrees and color-only updates by @mvaligursky in #8405
- Fix WebGL texture.read() for R8/RG8/RGB8 formats and add UNPACK_ALIGNMENT state caching by @mvaligursky in #8406
- Revert "[FIX] Fix ElementComponent 'mousemove' event firing outside element" by @willeastcott in #8413
- [Fix] ClusteredOmniShadows example - avoid debug render texture when destroyed by @mvaligursky in #8433
- Fix material-refraction example to use correct IOR value by @mvaligursky in #8434
- [Fix] GSplatComponent.customAabb to fall back to resource AABB by @mvaligursky in #8435
- Fix WebGPU uniform warnings in RenderPassPicker by @mvaligursky in #8436
Examples
- Flipbook engine example by @mvaligursky in #8384
- GSplat Editor Example and Gsplat Shader / GsplatProcessor API Refactoring by @mvaligursky in #8412
- Exposed the color band width parameter for radial reveal effect by @mvaligursky in #8414
- Add GSplat procedural shape scripts and example, other fixes and imrovements by @mvaligursky in #8415
- Add GsplatMesh script and example for converting meshes to gaussian splats by @mvaligursky in #8419
- Add LOD Instances Gaussian Splat example by @mvaligursky in #8429
Full Changelog: v2.15.3...v2.16.0
v2.15.3
Fixes
- Revert Fix ElementComponent ‘mousemove’ event firing outside element by @willeastcott in #8413
Full Changelog: v2.15.2...v2.15.3
v2.15.2
Fixes
- Fix XrInputSource crash when grip unavailable by @willeastcott in #8389
- Fix controller models in XR movement example by @willeastcott in #8390
- Fix XrInputSource JSDoc errors and redundant code by @willeastcott in #8391
- Fix duplicate XrViews instance and clean up handler in XrManager by @willeastcott in #8392
- Fix WebXR stereo frustum culling by @willeastcott in #8393
- Add XrMenu script and example for WebXR hand/controller menus by @willeastcott in #8407
- Fix account for camera local offset in XrNavigation teleport by @willeastcott in #8409
- Improve XrControllers script robustness and documentation by @willeastcott in #8410
- Correct vertex format mismatch when decoding Draco meshes by @willeastcott in #8394
Full Changelog: v2.15.1...v2.15.2
v2.15.1
Fixes
- [Fix] ES2020 compatibility for GSplatSortBinWeights worker injection by @mvaligursky in #8373
Full Changelog: v2.15.0...v2.15.1
v2.15.0
New Features
- Unified GSplat support for rendering to shadow map + Example by @mvaligursky in #8228
- Updated
GsplatShaderEffectscript to use simpler material API by @mvaligursky in #8229 - Improved
splatBudgetbehavior to allow both increase and decrease LOD by @mvaligursky in #8230 - Moved the
splatBudgetAPI to gsplat component by @mvaligursky in #8231 - Updated
Ministatswith additional timings by @mvaligursky in #8241 - Workbuffer for gsplat uniform no longer stores covariance, but directly the components by @mvaligursky in #8244
- Removed workaround related to workbuffer storing covariants on android by @mvaligursky in #8245
- Add
gsplatModifyVSshader customization chunk for gaussian splats by @mvaligursky in #8246 - Update GitHub Artifact Actions (major) by @renovate[bot] in #8247
- Add simple render pipeline cache for mipmap renderer (WebGPU) by @mvaligursky in #8253
- Add viewport / scissor support to
RenderPassShaderQuadby @mvaligursky in #8254 - Adds a GPU-based radix sort implementation using fragment shaders with mipmap-based prefix sums by @mvaligursky in #8255
- Adds support for specifying a custom entry point function name when creating compute shaders by @mvaligursky in #8258
- Increase quad buffer size for ministats to allow more stats to render by @mvaligursky in #8259
- NPM Publish by @kpal81xd in #8261
- Add
KHR_materials_emissive_strengthexport support by @willeastcott in #8268 - Add
KHR_materials_specularexport support by @willeastcott in #8269 - Add
KHR_materials_unlitexport support by @willeastcott in #8270 - Add
KHR_materials_iorexport support by @willeastcott in #8272 - Add
KHR_materials_dispersionexport support by @willeastcott in #8274 - Defines map can be specified when creating compute shader by @mvaligursky in #8273
- Add
KHR_materials_clearcoatexport support by @willeastcott in #8275 - Add
KHR_materials_transmissionexport support by @willeastcott in #8277 - Add
KHR_materials_volumeexport support by @willeastcott in #8278 - Add WebGPU compute shader radix sort + changes / fixes to render pass based radix sort by @mvaligursky in #8276
- Add
KHR_materials_sheenexport support by @willeastcott in #8279 - Add compute pipeline creation caching for WebGPU by @mvaligursky in #8281
- Use Set instead of array for buffer tracking by @mvaligursky in #8283
- Add
KHR_materials_iridescenceexport support by @willeastcott in #8280 - Add
KHR_materials_anisotropyexport support by @willeastcott in #8284 - Improve docs for
get/setFromEulerAnglesby @willeastcott in #8289 - Clustered lighting integer arithmetic optimization by @mvaligursky in #8303
- Make
Texture.read()a public API by @mvaligursky in #8306 - GPU-based sorting using compute shaders for unified gsplat (optional) on WebGPU by @mvaligursky in #8310
- Clean up camera shader parameter setup by @mvaligursky in #8314
- Add WebGPU texture-format-tier1, texture-format-tier2, and primitive-index features by @mvaligursky in #8316
- Add
TextureViewfor mip level and array layer access in compute shaders by @mvaligursky in #8308 - Optimize texture tracking with Set-based dirty texture management by @mvaligursky in #8309
- Adds a configurable color property to the vignette post-effect by @mvaligursky in #8318
- Add new texture formats:
RG32F,RGB9E5,RG8S,RGBA8S,RGB10A2,RGB10A2Uby @mvaligursky in #8319 - Added node name to batch insertion/removal assert message by @yaustar in #8322
- Refactor Annotation System with AnnotationManager by @willeastcott in #8323
- Updates the
LICENSEcopyright year to 2026 by @mvaligursky in #8333 - Allow changing unified property without disabling component by @mvaligursky in #8334
- Add indirect compute dispatch support for WebGPU by @mvaligursky in #8332
- WebGPU now supports omni/spot shadows baking using Lightmapper by @mvaligursky in #8335
- Improve JSDoc for the core layer by @willeastcott in #8358
- Add 'worker' to reserved script names by @mvaligursky in #8368
Fixes
- [FIX] Specify anonymous cross origin for gsplat assets to avoid security issues on iOS by @mvaligursky in #8235
- Fix uninitialized
SplatCentermembers in GLSL gsplat shader by @mvaligursky in #8237 - Internal cursor file is ignored by git by @mvaligursky in #8242
- [FIX] Fix metalness and roughness handling in
UsdzExporterby @willeastcott in #8248 - [FIX] Return correct typed array from texture.read() on WebGPU platform by @mvaligursky in #8251
- [FIX] Notify existing element descendants when a screen is added by @willeastcott in #8252
- [FIX] Fix particle emission rate when looping by @willeastcott in #8263
- [FIX] Convert sRGB colors to linear when writing glTF by @willeastcott in #8267
- Fix SOG SH decompression by @slimbuck in #8271
- ScopeSpace.removeValue not clearing destroyed textures from scope by @mvaligursky in #8282
- [FIX] Fix glTF export for
KHR_materials_pbrSpecularGlossinessmaterials by @willeastcott in #8285 - [FIX] Fix black specular map still showing reflections by @willeastcott in #8287
- [FIX] Fix
ElementComponentmousemoveevent firing outside element by @willeastcott in #8288 - [FIX] Fix
ElementComponentnot rendering when entity already in hierarchy by @willeastcott in #8290 - Tighten up typing for
RigidBodyComponent#typeby @willeastcott in #8292 - [FIX] Fix
KHR_materials_specularincorrectly affecting metals and diffuse by @willeastcott in #8293 - [FIX] Add Dedicated Isotropic GGX Specular Implementation by @willeastcott in #8299
- [FIX] Enforce WGSL syntax highlighting in all WGSL chunks by @willeastcott in #8300
- [FIX] Fix clustered lighting artifacts caused by UV precision by @willeastcott in #8302
- [FIX] Fix screen space particles when CPU simulation is used by @willeastcott in #8301
- [FIX] Add setter for
Script.scriptNamefor TypeScript compatibility by @willeastcott in #8291 - [FIX] Fix orthographic camera loading from glTF by @willeastcott in #8304
- [FIX] Fix glTF spot light default cone angle by @willeastcott in #8305
- [FIX] Fix glTF spot light luminance calculation by @willeastcott in #8307
- Fix IOR/refractionIndex being ignored in materials by @mvaligursky in #8311
- Rename
GSplatComponentSystem#getGSplatMaterialto getMaterial by @mvaligursky in #8339 - Better support blended pickers by @slimbuck in #8340
- WebGPU lightmapper support for shadow casting local lights and omni shadow shader cleanup by @mvaligursky in #8338
- Lazy mesh creation for GSplat resources by @mvaligursky in #8343
- Remove unnecessary polyfills by @willeastcott in #8347
- Modernize build target to ES2020 by @willeastcott in #8348
- annotation.mjs to annotations.mjs by @...
v2.14.4
Fixes
- Fix metalness and roughness handling in UsdzExporter by @willeastcott in #8248
- Return correct typed array from texture.read() on WebGPU platform by @mvaligursky in #8251
- Notify existing element descendants when a screen is added by @willeastcott in #8252
- Convert sRGB colors to linear when writing glTF by @willeastcott in #8267
- Fix SOG SH decompression by @slimbuck in #8271
Full Changelog: v2.14.3...v2.14.4
v2.14.3
Fixes
- Fix uninitialized SplatCenter members in GLSL gsplat shader by @mvaligursky in #8237
Full Changelog: v2.14.2...v2.14.3
v2.14.2
Fixes
- Fix GSplat assets by specifying anonymous cross-origin to avoid iOS security issues by @mvaligursky in #8235
Full Changelog: v2.14.1...v2.14.2