v2.16.2
- 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: https://github.com/playcanvas/engine/compare/v2.16.1...v2.16.2
v2.16.1
- Fix chromatic fringing shader undefined behavior with negative values by @mvaligursky in #8438
Full Changelog: https://github.com/playcanvas/engine/compare/v2.16.0...v2.16.1
v2.16.0
- Procedural GSplat Container API by @mvaligursky in https://github.com/playcanvas/engine/pull/8352
- GSplat Extra Streams and Work Buffer Customization by @mvaligursky in https://github.com/playcanvas/engine/pull/8383
- GsplatProcessor and extra data streams for gaussian splats by @mvaligursky in https://github.com/playcanvas/engine/pull/8395
- GSplat Work Buffer Custom Streams Support by @mvaligursky in https://github.com/playcanvas/engine/pull/8396
- Unify GSplat format shader architecture by @mvaligursky in https://github.com/playcanvas/engine/pull/8377
- GSplat: Centralize texture management with GSplatStreams class by @mvaligursky in https://github.com/playcanvas/engine/pull/8379
- Clarify gamma correction docs by @mvaligursky in https://github.com/playcanvas/engine/pull/8386
- Modernize legacy posteffect scripts to ES6 classes and fix FXAA offset bug by @mvaligursky in https://github.com/playcanvas/engine/pull/8397
- Update jsdocs of QuadRender by @mvaligursky in https://github.com/playcanvas/engine/pull/8398
- Add BatchManager.getGroupById method by @mvaligursky in https://github.com/playcanvas/engine/pull/8399
- Destroy WebGPU texture immediately instead of letting garbage collection do it by @mvaligursky in https://github.com/playcanvas/engine/pull/8401
- Add numeric literal support to shader preprocessor by @mvaligursky in https://github.com/playcanvas/engine/pull/8402
- Implement deferred destruction for WebGPU textures by @mvaligursky in https://github.com/playcanvas/engine/pull/8403
- Add 2D Gaussian Splatting (2DGS) Rendering Support by @slimbuck in https://github.com/playcanvas/engine/pull/8416
- Improve XrSession script documentation and consistency by @willeastcott in https://github.com/playcanvas/engine/pull/8417
- feat: add snap vertical movement to XrNavigation script by @willeastcott in https://github.com/playcanvas/engine/pull/8420
- Unified GSplat Picking Support by @mvaligursky in https://github.com/playcanvas/engine/pull/8421
- Document ColorLUT texture format in CameraFrame JSDoc by @mvaligursky in https://github.com/playcanvas/engine/pull/8424
- Remove deprecated gsplatCustomizeVS shader chunk by @mvaligursky in https://github.com/playcanvas/engine/pull/8422
- Rename GSplatParams.id to enableIds by @mvaligursky in https://github.com/playcanvas/engine/pull/8423
- Add support for WGSL subgroup_uniformity and subgroup_id language extensions by @mvaligursky in https://github.com/playcanvas/engine/pull/8426
- GSplatProcessor: Add numSplats uniforms and automatic padding skip by @mvaligursky in https://github.com/playcanvas/engine/pull/8430
- ES2020 compatibility for GSplatSortBinWeights worker injection by @mvaligursky in https://github.com/playcanvas/engine/pull/8373
- Fix preprocessor numeric literal parsing to avoid incorrect partial matches by @mvaligursky in https://github.com/playcanvas/engine/pull/8404
- Fix unified gsplat work buffer extra streams for octrees and color-only updates by @mvaligursky in https://github.com/playcanvas/engine/pull/8405
- Fix WebGL texture.read() for R8/RG8/RGB8 formats and add UNPACK_ALIGNMENT state caching by @mvaligursky in https://github.com/playcanvas/engine/pull/8406
- Revert "[FIX] Fix ElementComponent 'mousemove' event firing outside element" by @willeastcott in https://github.com/playcanvas/engine/pull/8413
- [Fix] ClusteredOmniShadows example - avoid debug render texture when destroyed by @mvaligursky in https://github.com/playcanvas/engine/pull/8433
- Fix material-refraction example to use correct IOR value by @mvaligursky in https://github.com/playcanvas/engine/pull/8434
- [Fix] GSplatComponent.customAabb to fall back to resource AABB by @mvaligursky in https://github.com/playcanvas/engine/pull/8435
- Fix WebGPU uniform warnings in RenderPassPicker by @mvaligursky in https://github.com/playcanvas/engine/pull/8436
- Flipbook engine example by @mvaligursky in https://github.com/playcanvas/engine/pull/8384
- GSplat Editor Example and Gsplat Shader / GsplatProcessor API Refactoring by @mvaligursky in https://github.com/playcanvas/engine/pull/8412
- Exposed the color band width parameter for radial reveal effect by @mvaligursky in https://github.com/playcanvas/engine/pull/8414
- Add GSplat procedural shape scripts and example, other fixes and imrovements by @mvaligursky in https://github.com/playcanvas/engine/pull/8415
- Add GsplatMesh script and example for converting meshes to gaussian splats by @mvaligursky in https://github.com/playcanvas/engine/pull/8419
- Add LOD Instances Gaussian Splat example by @mvaligursky in https://github.com/playcanvas/engine/pull/8429
Full Changelog: https://github.com/playcanvas/engine/compare/v2.15.3...v2.16.0
v2.15.3
- Revert Fix ElementComponent ‘mousemove’ event firing outside element by @willeastcott in #8413
Full Changelog: https://github.com/playcanvas/engine/compare/v2.15.2...v2.15.3
v2.15.2
- 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: https://github.com/playcanvas/engine/compare/v2.15.1...v2.15.2
v2.15.1
- [Fix] ES2020 compatibility for GSplatSortBinWeights worker injection by @mvaligursky in #8373
Full Changelog: https://github.com/playcanvas/engine/compare/v2.15.0...v2.15.1
v2.15.0
- Unified GSplat support for rendering to shadow map + Example by @mvaligursky in https://github.com/playcanvas/engine/pull/8228
- Updated
GsplatShaderEffectscript to use simpler material API by @mvaligursky in https://github.com/playcanvas/engine/pull/8229 - Improved
splatBudgetbehavior to allow both increase and decrease LOD by @mvaligursky in https://github.com/playcanvas/engine/pull/8230 - Moved the
splatBudgetAPI to gsplat component by @mvaligursky in https://github.com/playcanvas/engine/pull/8231 - Updated
Ministatswith additional timings by @mvaligursky in https://github.com/playcanvas/engine/pull/8241 - Workbuffer for gsplat uniform no longer stores covariance, but directly the components by @mvaligursky in https://github.com/playcanvas/engine/pull/8244
- Removed workaround related to workbuffer storing covariants on android by @mvaligursky in https://github.com/playcanvas/engine/pull/8245
- Add
gsplatModifyVSshader customization chunk for gaussian splats by @mvaligursky in https://github.com/playcanvas/engine/pull/8246 - Update GitHub Artifact Actions (major) by @renovate[bot] in https://github.com/playcanvas/engine/pull/8247
- Add simple render pipeline cache for mipmap renderer (WebGPU) by @mvaligursky in https://github.com/playcanvas/engine/pull/8253
- Add viewport / scissor support to
RenderPassShaderQuadby @mvaligursky in https://github.com/playcanvas/engine/pull/8254 - Adds a GPU-based radix sort implementation using fragment shaders with mipmap-based prefix sums by @mvaligursky in https://github.com/playcanvas/engine/pull/8255
- Adds support for specifying a custom entry point function name when creating compute shaders by @mvaligursky in https://github.com/playcanvas/engine/pull/8258
- Increase quad buffer size for ministats to allow more stats to render by @mvaligursky in https://github.com/playcanvas/engine/pull/8259
- NPM Publish by @kpal81xd in https://github.com/playcanvas/engine/pull/8261
- Add
KHR_materials_emissive_strengthexport support by @willeastcott in https://github.com/playcanvas/engine/pull/8268 - Add
KHR_materials_specularexport support by @willeastcott in https://github.com/playcanvas/engine/pull/8269 - Add
KHR_materials_unlitexport support by @willeastcott in https://github.com/playcanvas/engine/pull/8270 - Add
KHR_materials_iorexport support by @willeastcott in https://github.com/playcanvas/engine/pull/8272 - Add
KHR_materials_dispersionexport support by @willeastcott in https://github.com/playcanvas/engine/pull/8274 - Defines map can be specified when creating compute shader by @mvaligursky in https://github.com/playcanvas/engine/pull/8273
- Add
KHR_materials_clearcoatexport support by @willeastcott in https://github.com/playcanvas/engine/pull/8275 - Add
KHR_materials_transmissionexport support by @willeastcott in https://github.com/playcanvas/engine/pull/8277 - Add
KHR_materials_volumeexport support by @willeastcott in https://github.com/playcanvas/engine/pull/8278 - Add WebGPU compute shader radix sort + changes / fixes to render pass based radix sort by @mvaligursky in https://github.com/playcanvas/engine/pull/8276
- Add
KHR_materials_sheenexport support by @willeastcott in https://github.com/playcanvas/engine/pull/8279 - Add compute pipeline creation caching for WebGPU by @mvaligursky in https://github.com/playcanvas/engine/pull/8281
- Use Set instead of array for buffer tracking by @mvaligursky in https://github.com/playcanvas/engine/pull/8283
- Add
KHR_materials_iridescenceexport support by @willeastcott in https://github.com/playcanvas/engine/pull/8280 - Add
KHR_materials_anisotropyexport support by @willeastcott in https://github.com/playcanvas/engine/pull/8284 - Improve docs for
get/setFromEulerAnglesby @willeastcott in https://github.com/playcanvas/engine/pull/8289 - Clustered lighting integer arithmetic optimization by @mvaligursky in https://github.com/playcanvas/engine/pull/8303
- Make
Texture.read()a public API by @mvaligursky in https://github.com/playcanvas/engine/pull/8306 - GPU-based sorting using compute shaders for unified gsplat (optional) on WebGPU by @mvaligursky in https://github.com/playcanvas/engine/pull/8310
- Clean up camera shader parameter setup by @mvaligursky in https://github.com/playcanvas/engine/pull/8314
- Add WebGPU texture-format-tier1, texture-format-tier2, and primitive-index features by @mvaligursky in https://github.com/playcanvas/engine/pull/8316
- Add
TextureViewfor mip level and array layer access in compute shaders by @mvaligursky in https://github.com/playcanvas/engine/pull/8308 - Optimize texture tracking with Set-based dirty texture management by @mvaligursky in https://github.com/playcanvas/engine/pull/8309
- Adds a configurable color property to the vignette post-effect by @mvaligursky in https://github.com/playcanvas/engine/pull/8318
- Add new texture formats:
RG32F,RGB9E5,RG8S,RGBA8S,RGB10A2,RGB10A2Uby @mvaligursky in https://github.com/playcanvas/engine/pull/8319 - Added node name to batch insertion/removal assert message by @yaustar in https://github.com/playcanvas/engine/pull/8322
- Refactor Annotation System with AnnotationManager by @willeastcott in https://github.com/playcanvas/engine/pull/8323
- Updates the
LICENSEcopyright year to 2026 by @mvaligursky in https://github.com/playcanvas/engine/pull/8333 - Allow changing unified property without disabling component by @mvaligursky in https://github.com/playcanvas/engine/pull/8334
- Add indirect compute dispatch support for WebGPU by @mvaligursky in https://github.com/playcanvas/engine/pull/8332
- WebGPU now supports omni/spot shadows baking using Lightmapper by @mvaligursky in https://github.com/playcanvas/engine/pull/8335
- Improve JSDoc for the core layer by @willeastcott in https://github.com/playcanvas/engine/pull/8358
- Add 'worker' to reserved script names by @mvaligursky in https://github.com/playcanvas/engine/pull/8368
- [FIX] Specify anonymous cross origin for gsplat assets to avoid security issues on iOS by @mvaligursky in https://github.com/playcanvas/engine/pull/8235
- Fix uninitialized
SplatCentermembers in GLSL gsplat shader by @mvaligursky in https://github.com/playcanvas/engine/pull/8237 - Internal cursor file is ignored by git by @mvaligursky in https://github.com/playcanvas/engine/pull/8242
- [FIX] Fix metalness and roughness handling in
UsdzExporterby @willeastcott in https://github.com/playcanvas/engine/pull/8248 - [FIX] Return correct typed array from texture.read() on WebGPU platform by @mvaligursky in https://github.com/playcanvas/engine/pull/8251
- [FIX] Notify existing element descendants when a screen is added by @willeastcott in https://github.com/playcanvas/engine/pull/8252
- [FIX] Fix particle emission rate when looping by @willeastcott in https://github.com/playcanvas/engine/pull/8263
- [FIX] Convert sRGB colors to linear when writing glTF by @willeastcott in https://github.com/playcanvas/engine/pull/8267
- Fix SOG SH decompression by @slimbuck in https://github.com/playcanvas/engine/pull/8271
- ScopeSpace.removeValue not clearing destroyed textures from scope by @mvaligursky in https://github.com/playcanvas/engine/pull/8282
- [FIX] Fix glTF export for
KHR_materials_pbrSpecularGlossinessmaterials by @willeastcott in https://github.com/playcanvas/engine/pull/8285 - [FIX] Fix black specular map still showing reflections by @willeastcott in https://github.com/playcanvas/engine/pull/8287
- [FIX] Fix
ElementComponentmousemoveevent firing outside element by @willeastcott in https://github.com/playcanvas/engine/pull/8288 - [FIX] Fix
ElementComponentnot rendering when entity already in hierarchy by @willeastcott in https://github.com/playcanvas/engine/pull/8290 - Tighten up typing for
RigidBodyComponent#typeby @willeastcott in https://github.com/playcanvas/engine/pull/8292 - [FIX] Fix
KHR_materials_specularincorrectly affecting metals and diffuse by @willeastcott in https://github.com/playcanvas/engine/pull/8293 - [FIX] Add Dedicated Isotropic GGX Specular Implementation by @willeastcott in https://github.com/playcanvas/engine/pull/8299
- [FIX] Enforce WGSL syntax highlighting in all WGSL chunks by @willeastcott in https://github.com/playcanvas/engine/pull/8300
- [FIX] Fix clustered lighting artifacts caused by UV precision by @willeastcott in https://github.com/playcanvas/engine/pull/8302
- [FIX] Fix screen space particles when CPU simulation is used by @willeastcott in https://github.com/playcanvas/engine/pull/8301
- [FIX] Add setter for
Script.scriptNamefor TypeScript compatibility by @willeastcott in https://github.com/playcanvas/engine/pull/8291 - [FIX] Fix orthographic camera loading from glTF by @willeastcott in https://github.com/playcanvas/engine/pull/8304
- [FIX] Fix glTF spot light default cone angle by @willeastcott in https://github.com/playcanvas/engine/pull/8305
- [FIX] Fix glTF spot light luminance calculation by @willeastcott in https://github.com/playcanvas/engine/pull/8307
- Fix IOR/refractionIndex being ignored in materials by @mvaligursky in https://github.com/playcanvas/engine/pull/8311
- Rename
GSplatComponentSystem#getGSplatMaterialto getMaterial by @mvaligursky in https://github.com/playcanvas/engine/pull/8339 - Better support blended pickers by @slimbuck in https://github.com/playcanvas/engine/pull/8340
- WebGPU lightmapper support for shadow casting local lights and omni shadow shader cleanup by @mvaligursky in https://github.com/playcanvas/engine/pull/8338
- Lazy mesh creation for GSplat resources by @mvaligursky in https://github.com/playcanvas/engine/pull/8343
- Remove unnecessary polyfills by @willeastcott in https://github.com/playcanvas/engine/pull/8347
- Modernize build target to ES2020 by @willeastcott in https://github.com/playcanvas/engine/pull/8348
- annotation.mjs to annotations.mjs by @willeastcott in https://github.com/playcanvas/engine/pull/8349
- Move treeshake-ignore plugin to examples by @willeastcott in https://github.com/playcanvas/engine/pull/8351
- Small updates to the
BlurredPlanarReflectionscript by @mvaligursky in https://github.com/playcanvas/engine/pull/8353 - [FIX] Add mip level for WebGPU device
copyRenderTargetby @AlexAPPi in https://github.com/playcanvas/engine/pull/8320 - [FIX] Fixed incorrect uv1 (unwrapped uvs for lightmapping) for box and cone geometry by @mvaligursky in https://github.com/playcanvas/engine/pull/8336
- [FIX] Fix
EventHandlecleanup in annotation script by @willeastcott in https://github.com/playcanvas/engine/pull/8337 - [FIX] Fix glTF node matrix decomposition with negative scale by @willeastcott in https://github.com/playcanvas/engine/pull/8329
- Replace
Debug.assertwitherrorOnceand early return in GSplatComponent by @mvaligursky in https://github.com/playcanvas/engine/pull/8355 - [FIX] Hide
__initializeAttributesfrom the API reference by @willeastcott in https://github.com/playcanvas/engine/pull/8359 - [FIX] Restore annotations for misc/annotations example by @willeastcott in https://github.com/playcanvas/engine/pull/8369
- Fix WebGL array texture crash when created without levels data by @mvaligursky in https://github.com/playcanvas/engine/pull/8371
- Fix memory leak in WebGPU multi-draw allocation by @mvaligursky in https://github.com/playcanvas/engine/pull/8367
- Simple gsplat viewer engine example with HDR controls by @mvaligursky in https://github.com/playcanvas/engine/pull/8232
- Added bloom and other tweeks to Gsplat viewer example by @mvaligursky in https://github.com/playcanvas/engine/pull/8234
- Add Gaussian Splat AABB Crop Example with Edge Clipping by @mvaligursky in https://github.com/playcanvas/engine/pull/8236
- Examples that create custom ministats hide the default one by @mvaligursky in https://github.com/playcanvas/engine/pull/8239
- Update examples/src/examples/gaussian-splatting/crop.example.mjs by @JaclynCodes in https://github.com/playcanvas/engine/pull/8266
- [Example] Added basic glb loading support to the Viewer example for HDR testing by @mvaligursky in https://github.com/playcanvas/engine/pull/8312
- Add gaussian splatting annotations example with opacity controls by @mvaligursky in https://github.com/playcanvas/engine/pull/8313
- Add
BlurredPlanarReflectionscript with distance-based blur effect by @mvaligursky in https://github.com/playcanvas/engine/pull/8342 - Improve examples sidebar category panel styling by @mvaligursky in https://github.com/playcanvas/engine/pull/8356
- [Example] Update camera positions in the anotations example to see all annotations on start by @mvaligursky in https://github.com/playcanvas/engine/pull/8372
- @JaclynCodes made their first contribution in https://github.com/playcanvas/engine/pull/8266
Full Changelog: https://github.com/playcanvas/engine/compare/v2.14.4...v2.15.0
v2.14.4
- 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: https://github.com/playcanvas/engine/compare/v2.14.3...v2.14.4
v2.14.3
- Fix uninitialized SplatCenter members in GLSL gsplat shader by @mvaligursky in #8237
Full Changelog: https://github.com/playcanvas/engine/compare/v2.14.2...v2.14.3
v2.14.2
- Fix GSplat assets by specifying anonymous cross-origin to avoid iOS security issues by @mvaligursky in #8235
Full Changelog: https://github.com/playcanvas/engine/compare/v2.14.1...v2.14.2