@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 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
- submitting work that can occupy more than one GPU execution unit. After each
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 -->