@plasius/gpu-renderer 0.1.14 → 0.2.0

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,22 @@ All notable changes to this project will be documented in this file.
23
23
  - **Security**
24
24
  - (placeholder)
25
25
 
26
+ ## [0.2.0] - 2026-06-05
27
+
28
+ - **Added**
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
+
33
+ - **Changed**
34
+ - (placeholder)
35
+
36
+ - **Fixed**
37
+ - (placeholder)
38
+
39
+ - **Security**
40
+ - (placeholder)
41
+
26
42
  ## [0.1.14] - 2026-06-04
27
43
 
28
44
  - **Added**
@@ -57,10 +73,15 @@ All notable changes to this project will be documented in this file.
57
73
  tail so active diffuse rays sample finite mesh light geometry more often
58
74
  without adding a ninth trace storage buffer or separate direct-light/shadow
59
75
  accumulation path.
76
+ - Added WebGPU environment-light portal records so rooms and studio interiors
77
+ can guide and gate sky/HDRI contribution through openings such as windows.
60
78
 
61
79
  - **Changed**
62
80
  - Wavefront environment misses now evaluate a direction-aware sky/key-light
63
81
  environment payload instead of only using a flat environment colour.
82
+ - Wavefront environment misses now respect `environmentPortalMode`; in
83
+ `guide-and-gate` mode, misses outside configured portals fall back to the
84
+ ambient residual instead of receiving full sky radiance.
64
85
  - Display-quality wavefront configuration now uses GPU-built mesh
65
86
  acceleration; CPU-built mesh acceleration is treated as debug-only.
66
87
  - Replaced the one-thread BVH internal-node build kernel with bottom-up
@@ -78,11 +99,17 @@ All notable changes to this project will be documented in this file.
78
99
  preview output.
79
100
  - Wavefront primary-ray jitter and bounce sampling now use mixed
80
101
  pixel/sample/bounce/frame seeds to reduce row-correlated low-sample noise.
102
+ - Wavefront frames now reuse a static GPU-built mesh BVH after the first
103
+ acceleration build and batch tile/sample tracing, tile output, optional
104
+ denoise, and presentation into one frame command submission.
81
105
 
82
106
  - **Fixed**
83
107
  - Fixed primary-ray jitter seeding to use absolute screen pixel ids instead
84
108
  of tile-local pixel ids, preventing repeated sampling patterns across
85
109
  tiles.
110
+ - Fixed environment portal WGSL reserved-word usage and now request the
111
+ required 9-storage-buffer trace limit from capable WebGPU adapters before
112
+ creating the mesh-BVH trace pipeline.
86
113
  - Fixed the WebGPU hit-buffer stride to match the WGSL `HitRecord` layout
87
114
  and added a continuation-queue capacity guard, preventing tile-row
88
115
  corruption in mesh BVH wavefront renders.
@@ -262,3 +289,4 @@ All notable changes to this project will be documented in this file.
262
289
  [0.1.11]: https://github.com/Plasius-LTD/gpu-renderer/releases/tag/v0.1.11
263
290
  [0.1.12]: https://github.com/Plasius-LTD/gpu-renderer/releases/tag/v0.1.12
264
291
  [0.1.14]: https://github.com/Plasius-LTD/gpu-renderer/releases/tag/v0.1.14
292
+ [0.2.0]: https://github.com/Plasius-LTD/gpu-renderer/releases/tag/v0.2.0
package/README.md CHANGED
@@ -200,6 +200,19 @@ weight so finite light guidance does not over-expose low-sample renders before
200
200
  full material PDFs/MIS are implemented. High-energy samples are clamped in
201
201
  linear radiance space to keep low-sample preview output stable while production
202
202
  sampling, temporal accumulation, and better material PDFs are hardened.
203
+ For static mesh scenes, the GPU acceleration build is submitted once and then
204
+ reused by subsequent frames. Per-frame tracing writes one dynamic uniform slot
205
+ per tile/sample or post-process pass and batches tile tracing, tile output,
206
+ optional denoise, and presentation into a single command submission. WebGPU
207
+ still preserves ordering between dependent bounce passes, but the renderer no
208
+ longer forces one CPU queue submission per tile/sample.
209
+ Environment-light portals can additionally guide and gate sky/HDRI contribution
210
+ through rectangular openings such as windows. `environmentPortalMode: "guide"`
211
+ biases diffuse continuation rays toward configured openings, while
212
+ `"guide-and-gate"` requires an environment miss to pass through a portal before
213
+ it receives sky radiance; misses outside a portal fall back to the ambient
214
+ residual. This keeps interior rooms from treating the whole sky as visible from
215
+ every bounce.
203
216
  Texture sampling, dynamic TLAS updates, higher-grade LBVH/SAH construction,
204
217
  runtime execution behind the `@plasius/gpu-worker` lock-free queue, and broader
205
218
  material lookup remain follow-up work.
@@ -229,6 +242,9 @@ renderer.bindXrManager(xr, {
229
242
  - `createRayTracingRenderPlan(options)`
230
243
  - `createWavefrontPathTracingComputeRenderer(options)`
231
244
  - `createWavefrontPathTracingComputeConfig(options)`
245
+ - `createWavefrontReferenceRay(config, options?)`
246
+ - `intersectWavefrontReferenceTriangle(ray, triangle, options?)`
247
+ - `traceWavefrontReferenceTriangles(config, ray, triangles, options?)`
232
248
  - `normalizeWavefrontMesh(input)`
233
249
  - `createWavefrontGpuMeshSource(meshes)`
234
250
  - `createWavefrontBvhSortStages(itemCount)`
@@ -247,6 +263,11 @@ renderer.bindXrManager(xr, {
247
263
  - `rendererWorkerProfileNames`
248
264
  - `rendererWorkerManifests`
249
265
 
266
+ The reference helpers mirror the renderer WGSL camera and triangle-hit math in
267
+ deterministic JavaScript so tests and downstream tooling can validate primary
268
+ ray generation, barycentrics, nearest-hit selection, and environment misses
269
+ without standing up a WebGPU device.
270
+
250
271
  ## Demo
251
272
 
252
273
  Run the demo server from the repo root: