v2.17.0
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
dracoDecodefor 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
- Fix flipbook example playback speed by @mvaligursky in #8505
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