Skip to content

Releases: playcanvas/engine

v2.17.0

06 Mar 16:31

Choose a tag to compare

Changes

  • Half-precision (f16) type aliases for WGSL shaders by @mvaligursky in #8439
  • Gaussian Splatting: Use half-precision for spherical harmonics evaluation on WebGPU by @mvaligursky in #8441
  • Add Color Enhance post-processing effect by @mvaligursky in #8443
  • Improve scene texture error messages to mention CameraFrame by @mvaligursky in #8446
  • Global splat budget for scene-wide GSplat LOD management by @mvaligursky in #8444
  • Material.meshInstances change to Set for faster MeshInstance removal by @Maksims in #8451
  • GSplat: GPU-driven sorting and frustum culling pipeline on WebGPU by @mvaligursky in #8453
  • Replace interval texture binary search with instanced quad rendering for GSplat work buffer copy by @mvaligursky in #8456
  • Refactor data texture creation using internal Texture helper by @mvaligursky in #8457
  • Add midtones control to Color Enhance post-effect by @mvaligursky in #8458
  • Improve MiniStats VRAM reporting and graph grouping by @mvaligursky in #8460
  • Only emit written color outputs in WGSL FragmentOutput struct by @slimbuck in #8465
  • Expose WebGPU texture format tier capabilities by @mvaligursky in #8459
  • Use half-precision (f16) in gsplat WGSL shaders by @slimbuck in #8466
  • Skip padding pixels during GSplat sorting and rendering by @mvaligursky in #8471
  • Exclude skinned and morphed mesh instances from batching by @mvaligursky in #8477
  • Interval-based GPU compaction for GSplat rendering by @mvaligursky in #8476
  • Remove double indirection from GSplat rendering by @mvaligursky in #8478
  • Improved error reporting when a bind group value is missing by @mvaligursky in #8479
  • Compact GSplat work buffer format by @mvaligursky in #8480
  • Add BlockAllocator for 1D block memory management by @mvaligursky in #8481
  • Extract NumericIds from PickerId for reusable ID generation by @mvaligursky in #8482
  • Switch gsplat work buffer from row-aligned to pixel-offset layout by @mvaligursky in #8484
  • Use UploadStream for GSplat sort order uploads by @slimbuck in #8487
  • Remove STORAGE_ORDER shader define by @slimbuck in #8488
  • Cache validated FBO configurations in debug builds by @mvaligursky in #8491
  • Per-node block allocation and partial work buffer updates for GSplats by @mvaligursky in #8490
  • Skip pcNodeIndex work buffer stream when GPU sorting is active by @mvaligursky in #8492
  • Optimize GSplat work buffer rebuilds and block allocator fragmentation by @mvaligursky in #8493
  • Add MiniStats stat presets for gsplat stats by @mvaligursky in #8495
  • Expose dracoDecode for decoder reuse by @koteelok in #8470
  • Add frontFace support to render pipeline by @AlexAPPi in #8448
  • Add debug assert for texture upload inside render pass on WebGPU by @mvaligursky in #8504
  • FrontFace follow-up: fix double-flip, remove twoSidedLightingNegScaleFactor, add setDrawStates by @mvaligursky in #8503
  • Estimate total size for unreported assets in SOG progress tracking by @slimbuck in #8502
  • Use half-precision types in bloom downsample/upsample WGSL shaders by @mvaligursky in #8508
  • Improve GSplat LOD system with geometric progression, FOV compensation, and budget balancing fixes by @mvaligursky in #8506
  • Skip CAS HDR conversions for LDR input and use half-precision in WGSL by @mvaligursky in #8509

Fixes

  • Fix chromatic fringing shader undefined behavior with negative values by @mvaligursky in #8438
  • GsplatResourceBase.getTexture needs to be public by @mvaligursky in #8442
  • Inline WGSL resolveCodebook to fix Firefox naga compatibility by @mvaligursky in #8450
  • Refresh texture state when toggling mipmaps by @willeastcott in #8455
  • Fix clustered lighting packed decode stability on Samsung WebGL by @mvaligursky in #8461
  • Fix annotation hotspot sizing by @slimbuck in #8463
  • Fix WebGL readTextureAsync allocating too much memory for outputData by @slimbuck in #8472
  • Prevent setLayout from corrupting interval compaction data by @mvaligursky in #8485
  • Fix frame-rate dependent camera rotation and zoom in CameraControls by @slimbuck in #8494
  • Fix GSplat LOD re-evaluation when params change via frame:ready event by @mvaligursky in #8498
  • Fix WebGPU staging buffer error in non-unified GSplat sorter by @mvaligursky in #8499
  • Fire GSplatSorter 'updated' event immediately for renderNextFrame support by @mvaligursky in #8500
  • Fix MiniStats VRAM subcategories not hiding on collapse by @mvaligursky in #8507

Examples

Engine Dependencies

  • Update all npm dependencies in #8467
  • Update all npm dependencies (major) in #8468
  • Update dependency sinon to v21.0.1 in #8469
  • Update github artifact actions (major) in #8486

Contributors

New Contributors

Full Changelog: v2.16.2...v2.17.0

v2.16.2

24 Feb 12:49

Choose a tag to compare

Fixes

  • Fix GsplatResourceBase.getTexture to be public by @mvaligursky in #8442
  • Inline WGSL resolveCodebook to 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 FragmentOutput struct by @slimbuck in #8465
  • Fix annotation hotspot sizing by @slimbuck in #8463
  • Fix WebGL readTextureAsync allocating 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

04 Feb 09:55

Choose a tag to compare

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

03 Feb 14:32

Choose a tag to compare

Changes

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

Full Changelog: v2.15.3...v2.16.0

v2.15.3

28 Jan 15:34

Choose a tag to compare

Fixes

  • Revert Fix ElementComponent ‘mousemove’ event firing outside element by @willeastcott in #8413

Full Changelog: v2.15.2...v2.15.3

v2.15.2

26 Jan 15:02

Choose a tag to compare

Fixes

Full Changelog: v2.15.1...v2.15.2

v2.15.1

12 Jan 16:00

Choose a tag to compare

Fixes

  • [Fix] ES2020 compatibility for GSplatSortBinWeights worker injection by @mvaligursky in #8373

Full Changelog: v2.15.0...v2.15.1

v2.15.0

12 Jan 13:20

Choose a tag to compare

New Features

Fixes

Read more

v2.14.4

19 Dec 14:49

Choose a tag to compare

Fixes

Full Changelog: v2.14.3...v2.14.4

v2.14.3

09 Dec 10:40

Choose a tag to compare

Fixes

  • Fix uninitialized SplatCenter members in GLSL gsplat shader by @mvaligursky in #8237

Full Changelog: v2.14.2...v2.14.3