@plasius/gpu-renderer 0.2.40 → 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 +41 -0
- package/README.md +44 -1
- package/dist/index.cjs +630 -147
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +630 -147
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/index.d.ts +34 -0
- package/src/wavefront-compute.js +174 -76
- package/src/wavefront-core.js +2 -0
- package/src/wavefront-frame-encoder.js +13 -5
- package/src/wavefront-frame-runtime.js +24 -0
- package/src/wavefront-frame-stats.js +9 -0
- package/src/wavefront-frame-telemetry.js +415 -0
- package/src/wavefront-pipelines.js +12 -0
- package/src/wavefront-runtime-support.js +37 -4
- package/src/wavefront-shader-bvh.js +43 -30
- package/src/wavefront-shader-kernels.js +1 -30
package/CHANGELOG.md
CHANGED
|
@@ -23,6 +23,45 @@ 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
|
+
|
|
43
|
+
## [0.2.41] - 2026-08-30
|
|
44
|
+
|
|
45
|
+
- **Added**
|
|
46
|
+
- Added opt-in fixed-SPP ray-count and timing telemetry to awaited
|
|
47
|
+
`renderFrame({ readStats: true })` results, including exact primary,
|
|
48
|
+
continuation, total path-segment, and per-bounce counts plus WebGPU
|
|
49
|
+
timestamp-query timing with an explicit queue-completion fallback.
|
|
50
|
+
|
|
51
|
+
- **Changed**
|
|
52
|
+
- Switched WGSL preflight diagnostics to the standard
|
|
53
|
+
`GPUShaderModule.getCompilationInfo()` API and request the 21 sampled
|
|
54
|
+
textures already required by the final material shader when the adapter
|
|
55
|
+
exposes that limit.
|
|
56
|
+
|
|
57
|
+
- **Fixed**
|
|
58
|
+
- Fixed final assembled WGSL compilation by making triangle initialization
|
|
59
|
+
resilient to record-field additions and aligning the trace bind-group
|
|
60
|
+
layout with all declared material-extension textures.
|
|
61
|
+
|
|
62
|
+
- **Security**
|
|
63
|
+
- (placeholder)
|
|
64
|
+
|
|
26
65
|
## [0.2.40] - 2026-08-30
|
|
27
66
|
|
|
28
67
|
- **Added**
|
|
@@ -1006,3 +1045,5 @@ All notable changes to this project will be documented in this file.
|
|
|
1006
1045
|
[0.2.38]: https://github.com/Plasius-LTD/gpu-renderer/releases/tag/v0.2.38
|
|
1007
1046
|
[0.2.39]: https://github.com/Plasius-LTD/gpu-renderer/releases/tag/v0.2.39
|
|
1008
1047
|
[0.2.40]: https://github.com/Plasius-LTD/gpu-renderer/releases/tag/v0.2.40
|
|
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
|
@@ -450,7 +450,50 @@ drop in jobs/submission or jobs/s versus the approved baseline as a
|
|
|
450
450
|
release-validation failure unless a linked ticket explicitly approves the
|
|
451
451
|
regression; `submission-batching` warns when the renderer falls back to roughly
|
|
452
452
|
one GPU job per submission despite a higher pass ceiling.
|
|
453
|
-
|
|
453
|
+
|
|
454
|
+
Awaited fixed-SPP renders can opt into exact ray and timing evidence:
|
|
455
|
+
|
|
456
|
+
```js
|
|
457
|
+
const frame = await renderer.renderFrame({
|
|
458
|
+
readStats: true,
|
|
459
|
+
readOutputProbe: false,
|
|
460
|
+
});
|
|
461
|
+
|
|
462
|
+
console.log({
|
|
463
|
+
primaryRays: frame.primaryRays,
|
|
464
|
+
secondaryRays: frame.secondaryRays,
|
|
465
|
+
totalPathSegments: frame.totalPathSegments,
|
|
466
|
+
bounceHistogram: frame.rayCounts.bounceHistogram,
|
|
467
|
+
gpuTimeMs: frame.timings.totalGpuTimeMs,
|
|
468
|
+
renderJobTimeMs: frame.timings.totalRenderJobTimeMs,
|
|
469
|
+
timingSource: frame.timings.source,
|
|
470
|
+
});
|
|
471
|
+
```
|
|
472
|
+
|
|
473
|
+
`primaryRays` is the exact number of camera samples. `secondaryRays` is the
|
|
474
|
+
sum of active continuation records intersected after bounce zero, including
|
|
475
|
+
bounded reflection/transmission branches, and `totalPathSegments` is their sum.
|
|
476
|
+
The renderer copies the existing active-queue counter once per bounce into a
|
|
477
|
+
lazily allocated telemetry buffer; it does not add diagnostic shader atomics or
|
|
478
|
+
change WGSL transport. `rayCounts.status` distinguishes available,
|
|
479
|
+
unavailable, failed, and not-requested evidence. A mismatch between scheduled
|
|
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.
|
|
484
|
+
|
|
485
|
+
When the adapter exposes `timestamp-query`, the device requests it
|
|
486
|
+
opportunistically and two timestamps measure the GPU span from the first
|
|
487
|
+
primary pass through presentation. Set `gpuTimestamps: false` at renderer
|
|
488
|
+
creation to prevent that optional feature request. Where timestamp queries are
|
|
489
|
+
not exposed or fail, `timings` reports `source: "queue-completion"`, leaves
|
|
490
|
+
`totalGpuTimeMs` null, and retains the awaited
|
|
491
|
+
`totalRenderJobTimeMs`. Classification, compaction, and sampling sub-pass times
|
|
492
|
+
remain null until the corresponding adaptive passes exist. Without
|
|
493
|
+
`readStats: true`, and for `renderOnce()`, the fixed dispatcher creates no
|
|
494
|
+
telemetry buffers, query sets, readbacks, or timestamped pass descriptors.
|
|
495
|
+
|
|
496
|
+
After each
|
|
454
497
|
primary-ray or compaction pass, the GPU writes the active-ray workgroup count
|
|
455
498
|
into the counter buffer and the encoder copies it into an indirect-dispatch
|
|
456
499
|
argument buffer. Intersection and surface-resolution passes therefore scale
|