@plasius/gpu-renderer 0.1.15 → 0.2.1

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,16 +23,40 @@ All notable changes to this project will be documented in this file.
23
23
  - **Security**
24
24
  - (placeholder)
25
25
 
26
- ## [0.1.15] - 2026-06-04
26
+ ## [0.2.1] - 2026-06-06
27
27
 
28
28
  - **Added**
29
- - (placeholder)
29
+ - Added deterministic wavefront reference helpers for primary-ray creation,
30
+ triangle-hit evaluation, nearest-hit selection, and environment-miss
31
+ fallback alongside regression tests for task-level acceptance coverage.
32
+ - Added ADR coverage for mesh BVH wavefront path tracing as the display-quality
33
+ baseline.
30
34
 
31
35
  - **Changed**
32
- - (placeholder)
36
+ - Promoted the mesh BVH wavefront renderer source into the canonical
37
+ `src/wavefront-compute.js` module so source, typings, tests, and package
38
+ builds no longer drift behind generated artifacts.
39
+ - Changed wavefront mesh tracing to dispatch bounce intersection and
40
+ surface-resolution work from GPU-authored active-ray counts instead of the
41
+ fixed tile capacity after queue compaction.
42
+ - Changed the npm CD workflow to prepare package version and changelog
43
+ metadata locally, then publish the validated tag while persisting release
44
+ metadata through an automation PR branch instead of direct protected-main
45
+ pushes.
33
46
 
34
47
  - **Fixed**
35
- - (placeholder)
48
+ - Fixed wavefront source ownership so display-quality mesh BVH code is not
49
+ hidden behind a legacy module split.
50
+ - Preserved the wavefront mode/workgroup constants, shader-source helper,
51
+ one-shot frame helper, and `renderFrame(...)` compatibility wrapper while
52
+ promoting the mesh BVH renderer source.
53
+ - Fixed a production performance regression where compacted continuation
54
+ queues still scheduled full-capacity per-bounce workgroups.
55
+ - Fixed low-sample wavefront surface traces so terminal non-emissive surface
56
+ collisions use an environment-derived ambient floor instead of a flat or
57
+ missing fallback.
58
+ - Fixed release metadata versioning, demo dependencies, and one-shot
59
+ wavefront cleanup blockers found during PR validation.
36
60
 
37
61
  - **Security**
38
62
  - (placeholder)
@@ -287,4 +311,4 @@ All notable changes to this project will be documented in this file.
287
311
  [0.1.11]: https://github.com/Plasius-LTD/gpu-renderer/releases/tag/v0.1.11
288
312
  [0.1.12]: https://github.com/Plasius-LTD/gpu-renderer/releases/tag/v0.1.12
289
313
  [0.1.14]: https://github.com/Plasius-LTD/gpu-renderer/releases/tag/v0.1.14
290
- [0.1.15]: https://github.com/Plasius-LTD/gpu-renderer/releases/tag/v0.1.15
314
+ [0.2.1]: https://github.com/Plasius-LTD/gpu-renderer/releases/tag/v0.2.1
package/README.md CHANGED
@@ -141,6 +141,10 @@ const renderer = await createWavefrontPathTracingComputeRenderer({
141
141
  renderer.renderOnce();
142
142
  ```
143
143
 
144
+ Existing consumers that still call `renderFrame(...)` or
145
+ `renderWavefrontPathTracingComputeFrame(...)` remain supported as compatibility
146
+ wrappers around the canonical mesh renderer.
147
+
144
148
  Analytic scene objects remain available for debug fixtures:
145
149
 
146
150
  ```js
@@ -203,7 +207,12 @@ sampling, temporal accumulation, and better material PDFs are hardened.
203
207
  For static mesh scenes, the GPU acceleration build is submitted once and then
204
208
  reused by subsequent frames. Per-frame tracing writes one dynamic uniform slot
205
209
  per tile/sample or post-process pass and batches tile tracing, tile output,
206
- optional denoise, and presentation into a single command submission. WebGPU
210
+ optional denoise, and presentation into a single command submission. After each
211
+ primary-ray or compaction pass, the GPU writes the active-ray workgroup count
212
+ into the counter buffer and the encoder copies it into an indirect-dispatch
213
+ argument buffer. Intersection and surface-resolution passes therefore scale
214
+ with active continuation rays instead of the maximum tile capacity, while still
215
+ avoiding CPU readback between bounces. WebGPU
207
216
  still preserves ordering between dependent bounce passes, but the renderer no
208
217
  longer forces one CPU queue submission per tile/sample.
209
218
  Environment-light portals can additionally guide and gate sky/HDRI contribution
@@ -242,6 +251,11 @@ renderer.bindXrManager(xr, {
242
251
  - `createRayTracingRenderPlan(options)`
243
252
  - `createWavefrontPathTracingComputeRenderer(options)`
244
253
  - `createWavefrontPathTracingComputeConfig(options)`
254
+ - `createWavefrontPathTracingComputeShaderSource(options?)`
255
+ - `renderWavefrontPathTracingComputeFrame(options)`
256
+ - `createWavefrontReferenceRay(config, options?)`
257
+ - `intersectWavefrontReferenceTriangle(ray, triangle, options?)`
258
+ - `traceWavefrontReferenceTriangles(config, ray, triangles, options?)`
245
259
  - `normalizeWavefrontMesh(input)`
246
260
  - `createWavefrontGpuMeshSource(meshes)`
247
261
  - `createWavefrontBvhSortStages(itemCount)`
@@ -251,6 +265,9 @@ renderer.bindXrManager(xr, {
251
265
  - `packWavefrontSceneObjects(sceneObjects, capacity?)`
252
266
  - `packWavefrontTriangles(triangles, capacity?)`
253
267
  - `packWavefrontBvhNodes(nodes, capacity?)`
268
+ - `rendererWavefrontComputeMode`
269
+ - `rendererWavefrontComputeWorkgroupSize`
270
+ - `rendererWavefrontComputeStatsStride`
254
271
  - `bindRendererToXrManager(renderer, xrManager, options)`
255
272
  - `defaultRendererClearColor`
256
273
  - `rendererDebugOwner`
@@ -260,6 +277,11 @@ renderer.bindXrManager(xr, {
260
277
  - `rendererWorkerProfileNames`
261
278
  - `rendererWorkerManifests`
262
279
 
280
+ The reference helpers mirror the renderer WGSL camera and triangle-hit math in
281
+ deterministic JavaScript so tests and downstream tooling can validate primary
282
+ ray generation, barycentrics, nearest-hit selection, and environment misses
283
+ without standing up a WebGPU device.
284
+
263
285
  ## Demo
264
286
 
265
287
  Run the demo server from the repo root:
@@ -290,6 +312,8 @@ npm run pack:check
290
312
  ## Files
291
313
 
292
314
  - `src/index.js`: WebGPU renderer runtime and XR binding helper.
315
+ - `src/wavefront-compute.js`: Canonical WebGPU mesh BVH wavefront renderer,
316
+ debug scene-object fixtures, and deterministic reference helpers.
293
317
  - `src/index.d.ts`: public API typings.
294
318
  - `tests/package.test.js`: unit tests for renderer lifecycle behavior.
295
319
  - `docs/design/worker-manifest-integration.md`: renderer frame-stage DAG model.