@plasius/gpu-renderer 0.2.39 → 0.2.41
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 +45 -0
- package/README.md +71 -1
- package/dist/index.cjs +626 -147
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +626 -147
- package/dist/index.js.map +1 -1
- package/package.json +10 -5
- 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 +411 -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/legal/CLA-REGISTRY.csv +0 -2
package/CHANGELOG.md
CHANGED
|
@@ -23,6 +23,49 @@ All notable changes to this project will be documented in this file.
|
|
|
23
23
|
- **Security**
|
|
24
24
|
- (placeholder)
|
|
25
25
|
|
|
26
|
+
## [0.2.41] - 2026-08-30
|
|
27
|
+
|
|
28
|
+
- **Added**
|
|
29
|
+
- Added opt-in fixed-SPP ray-count and timing telemetry to awaited
|
|
30
|
+
`renderFrame({ readStats: true })` results, including exact primary,
|
|
31
|
+
continuation, total path-segment, and per-bounce counts plus WebGPU
|
|
32
|
+
timestamp-query timing with an explicit queue-completion fallback.
|
|
33
|
+
|
|
34
|
+
- **Changed**
|
|
35
|
+
- Switched WGSL preflight diagnostics to the standard
|
|
36
|
+
`GPUShaderModule.getCompilationInfo()` API and request the 21 sampled
|
|
37
|
+
textures already required by the final material shader when the adapter
|
|
38
|
+
exposes that limit.
|
|
39
|
+
|
|
40
|
+
- **Fixed**
|
|
41
|
+
- Fixed final assembled WGSL compilation by making triangle initialization
|
|
42
|
+
resilient to record-field additions and aligning the trace bind-group
|
|
43
|
+
layout with all declared material-extension textures.
|
|
44
|
+
|
|
45
|
+
- **Security**
|
|
46
|
+
- (placeholder)
|
|
47
|
+
|
|
48
|
+
## [0.2.40] - 2026-08-30
|
|
49
|
+
|
|
50
|
+
- **Added**
|
|
51
|
+
- (placeholder)
|
|
52
|
+
|
|
53
|
+
- **Changed**
|
|
54
|
+
- Updated internal GPU dependencies to their surviving clean lines and refreshed the esbuild resolution.
|
|
55
|
+
|
|
56
|
+
- **Fixed**
|
|
57
|
+
- (placeholder)
|
|
58
|
+
|
|
59
|
+
- **Security**
|
|
60
|
+
- Added permanent fail-closed Zero-Three validation for manifests, source,
|
|
61
|
+
locks, installed dependency graphs, declarations, bundles, npm tarballs,
|
|
62
|
+
CycloneDX SBOMs, and active documentation, with digest-bound evidence
|
|
63
|
+
retained and attested by CI/CD.
|
|
64
|
+
- Pinned patched transitive npm dependencies to clear the current audit baseline.
|
|
65
|
+
- Replaced token-based npm publication with a two-phase exact-main OIDC workflow, immutable tarball/SBOM hand-off, isolated pull-request validation, and fail-closed integrity checks.
|
|
66
|
+
- Added fail-closed source and npm-package admission for the administrative contributor registry and pinned the CI/CD runtime to Node.js 24.18.0 LTS.
|
|
67
|
+
- (placeholder)
|
|
68
|
+
|
|
26
69
|
## [0.2.39] - 2026-07-10
|
|
27
70
|
|
|
28
71
|
- **Added**
|
|
@@ -984,3 +1027,5 @@ All notable changes to this project will be documented in this file.
|
|
|
984
1027
|
[0.2.37]: https://github.com/Plasius-LTD/gpu-renderer/releases/tag/v0.2.37
|
|
985
1028
|
[0.2.38]: https://github.com/Plasius-LTD/gpu-renderer/releases/tag/v0.2.38
|
|
986
1029
|
[0.2.39]: https://github.com/Plasius-LTD/gpu-renderer/releases/tag/v0.2.39
|
|
1030
|
+
[0.2.40]: https://github.com/Plasius-LTD/gpu-renderer/releases/tag/v0.2.40
|
|
1031
|
+
[0.2.41]: https://github.com/Plasius-LTD/gpu-renderer/releases/tag/v0.2.41
|
package/README.md
CHANGED
|
@@ -27,6 +27,21 @@ Apache-2.0. ESM + CJS builds.
|
|
|
27
27
|
npm install @plasius/gpu-renderer
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
+
## Permanent Zero-Three boundary
|
|
31
|
+
|
|
32
|
+
This WebGPU renderer and its complete production, development, test, tooling,
|
|
33
|
+
peer, optional, and artifact dependency graphs permanently prohibit Three.js,
|
|
34
|
+
R3F, TSL, their related packages, and any dependency path reaching them. There
|
|
35
|
+
is no compatibility mode, fallback, waiver, or rollback to those renderers.
|
|
36
|
+
|
|
37
|
+
Run `npm run zero-three:source` before installing dependencies, or run
|
|
38
|
+
`npm run build && npm run zero-three` after `npm ci` for the installed graph,
|
|
39
|
+
built bundle, actual npm tarball, and generated CycloneDX evidence. The full
|
|
40
|
+
command writes digest-bound package/version evidence to
|
|
41
|
+
`release-artifacts/zero-three-evidence.json`. CI retains it, and production CD
|
|
42
|
+
passes it by immutable artifact ID, verifies it again, attaches it to the
|
|
43
|
+
GitHub release, and attests it.
|
|
44
|
+
|
|
30
45
|
## Usage
|
|
31
46
|
|
|
32
47
|
```js
|
|
@@ -435,7 +450,47 @@ drop in jobs/submission or jobs/s versus the approved baseline as a
|
|
|
435
450
|
release-validation failure unless a linked ticket explicitly approves the
|
|
436
451
|
regression; `submission-batching` warns when the renderer falls back to roughly
|
|
437
452
|
one GPU job per submission despite a higher pass ceiling.
|
|
438
|
-
|
|
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
|
+
|
|
482
|
+
When the adapter exposes `timestamp-query`, the device requests it
|
|
483
|
+
opportunistically and two timestamps measure the GPU span from the first
|
|
484
|
+
primary pass through presentation. Set `gpuTimestamps: false` at renderer
|
|
485
|
+
creation to prevent that optional feature request. Where timestamp queries are
|
|
486
|
+
not exposed or fail, `timings` reports `source: "queue-completion"`, leaves
|
|
487
|
+
`totalGpuTimeMs` null, and retains the awaited
|
|
488
|
+
`totalRenderJobTimeMs`. Classification, compaction, and sampling sub-pass times
|
|
489
|
+
remain null until the corresponding adaptive passes exist. Without
|
|
490
|
+
`readStats: true`, and for `renderOnce()`, the fixed dispatcher creates no
|
|
491
|
+
telemetry buffers, query sets, readbacks, or timestamped pass descriptors.
|
|
492
|
+
|
|
493
|
+
After each
|
|
439
494
|
primary-ray or compaction pass, the GPU writes the active-ray workgroup count
|
|
440
495
|
into the counter buffer and the encoder copies it into an indirect-dispatch
|
|
441
496
|
argument buffer. Intersection and surface-resolution passes therefore scale
|
|
@@ -580,3 +635,18 @@ npm run pack:check
|
|
|
580
635
|
- `docs/design/worker-manifest-integration.md`: renderer frame-stage DAG model.
|
|
581
636
|
- `docs/adrs/*`: architecture decisions for renderer runtime design.
|
|
582
637
|
- `docs/tdrs/*`: technical direction for frame hook integration.
|
|
638
|
+
|
|
639
|
+
<!-- BEGIN PLASIUS RELEASE INTEGRITY -->
|
|
640
|
+
## Release integrity
|
|
641
|
+
|
|
642
|
+
CI keeps the administrative contributor registry outside Git and npm package
|
|
643
|
+
artifacts using exact, case-normalised path checks. External fork heads are
|
|
644
|
+
rejected; same-repository pull requests validate on GitHub-hosted runners and
|
|
645
|
+
main pushes validate on approved self-hosted runners. Release preparation and
|
|
646
|
+
publication use a two-run exact-main protocol on GitHub-hosted Node.js 24.18.0
|
|
647
|
+
LTS. A read-only job seals the package tarball and SBOM before a dependency-free
|
|
648
|
+
production job publishes that exact artifact through npm OIDC with provenance;
|
|
649
|
+
there is no npm write-token fallback. CD remains disabled until the npm trusted
|
|
650
|
+
publisher binding and protected-branch-only production environment are
|
|
651
|
+
independently verified.
|
|
652
|
+
<!-- END PLASIUS RELEASE INTEGRITY -->
|