@plasius/gpu-renderer 0.2.41 → 0.2.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -23,6 +23,23 @@ All notable changes to this project will be documented in this file.
23
23
  - **Security**
24
24
  - (placeholder)
25
25
 
26
+ ## [0.2.42] - 2026-08-31
27
+
28
+ - **Added**
29
+ - (placeholder)
30
+
31
+ - **Changed**
32
+ - (placeholder)
33
+
34
+ - **Fixed**
35
+ - Made fixed-SPP ray-count reduction stack-safe for the supported
36
+ 4K/eight-bounce/128-SPP envelope by replacing unbounded argument spreading
37
+ with a constant-stack linear maximum scan.
38
+ - (placeholder)
39
+
40
+ - **Security**
41
+ - (placeholder)
42
+
26
43
  ## [0.2.41] - 2026-08-30
27
44
 
28
45
  - **Added**
@@ -1029,3 +1046,4 @@ All notable changes to this project will be documented in this file.
1029
1046
  [0.2.39]: https://github.com/Plasius-LTD/gpu-renderer/releases/tag/v0.2.39
1030
1047
  [0.2.40]: https://github.com/Plasius-LTD/gpu-renderer/releases/tag/v0.2.40
1031
1048
  [0.2.41]: https://github.com/Plasius-LTD/gpu-renderer/releases/tag/v0.2.41
1049
+ [0.2.42]: https://github.com/Plasius-LTD/gpu-renderer/releases/tag/v0.2.42
package/README.md CHANGED
@@ -478,6 +478,9 @@ lazily allocated telemetry buffer; it does not add diagnostic shader atomics or
478
478
  change WGSL transport. `rayCounts.status` distinguishes available,
479
479
  unavailable, failed, and not-requested evidence. A mismatch between scheduled
480
480
  and observed primary rays fails the `ray-count-telemetry` transport guardrail.
481
+ Ray-count reduction uses constant call-stack space, including the supported
482
+ 4K/eight-bounce/128-SPP stress envelope where hundreds of thousands of
483
+ tile/sample/depth records collapse into a small per-bounce histogram.
481
484
 
482
485
  When the adapter exposes `timestamp-query`, the device requests it
483
486
  opportunistically and two timestamps measure the GPU span from the first
package/dist/index.cjs CHANGED
@@ -6345,7 +6345,11 @@ function createWavefrontFrameTelemetryResources({
6345
6345
  const rayCounts = new Uint32Array(rayCopy, 0, recordCount);
6346
6346
  rayCountReadbackBuffer.unmap();
6347
6347
  rayReadbackMapped = false;
6348
- const bounceHistogram = Array.from({ length: Math.max(0, ...bounceIndices) + 1 }, () => 0);
6348
+ let maximumBounceIndex = 0;
6349
+ for (const bounceIndex of bounceIndices) {
6350
+ maximumBounceIndex = Math.max(maximumBounceIndex, bounceIndex);
6351
+ }
6352
+ const bounceHistogram = Array.from({ length: maximumBounceIndex + 1 }, () => 0);
6349
6353
  let observedPrimaryRays = 0;
6350
6354
  let secondaryRays = 0;
6351
6355
  let totalPathSegments = 0;