@plasius/gpu-renderer 0.2.45 → 0.2.47

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,42 @@ All notable changes to this project will be documented in this file.
23
23
  - **Security**
24
24
  - (placeholder)
25
25
 
26
+ ## [0.2.47] - 2026-10-09
27
+
28
+ - **Added**
29
+ - Added `createCanonicalWavefrontMeshInputs` to adapt decoded canonical model
30
+ geometry, material factors, and texture samples to Wavefront renderer inputs.
31
+
32
+ - **Changed**
33
+ - (placeholder)
34
+
35
+ - **Fixed**
36
+ - (placeholder)
37
+
38
+ - **Security**
39
+ - (placeholder)
40
+
41
+ ## [0.2.46] - 2026-09-29
42
+
43
+ - Add native showcase surface drawing with filtered shadows, HDR planar water
44
+ reflections, analytic waves, four-sample antialiasing and bounded resource ownership.
45
+ - Add an optional multipass `encodeFrame` hook to the existing renderer lifecycle.
46
+
47
+ - **Added**
48
+ - Internal reflected adaptive budget/count metadata, optional bounded classifier
49
+ and packed-history buffers, and lazy allocation admission with a 128 MiB cap.
50
+ This is infrastructure only; per-pixel dispatch and site controls remain pending.
51
+ - (placeholder)
52
+
53
+ - **Changed**
54
+ - (placeholder)
55
+
56
+ - **Fixed**
57
+ - (placeholder)
58
+
59
+ - **Security**
60
+ - (placeholder)
61
+
26
62
  ## [0.2.45] - 2026-09-07
27
63
 
28
64
  - **Added**
@@ -1127,3 +1163,5 @@ All notable changes to this project will be documented in this file.
1127
1163
  [0.2.43]: https://github.com/Plasius-LTD/gpu-renderer/releases/tag/v0.2.43
1128
1164
  [0.2.44]: https://github.com/Plasius-LTD/gpu-renderer/releases/tag/v0.2.44
1129
1165
  [0.2.45]: https://github.com/Plasius-LTD/gpu-renderer/releases/tag/v0.2.45
1166
+ [0.2.46]: https://github.com/Plasius-LTD/gpu-renderer/releases/tag/v0.2.46
1167
+ [0.2.47]: https://github.com/Plasius-LTD/gpu-renderer/releases/tag/v0.2.47
package/README.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # @plasius/gpu-renderer
2
2
 
3
+ ## Native animated showcase surfaces
4
+
5
+ `createNativeSceneRenderer({ canvas })` draws interleaved world-space triangles
6
+ with depth testing, four-sample antialiasing, filtered directional shadows and
7
+ animated water with a planar reflection. Call `render({ vertices, camera, time,
8
+ wakes })` from the caller's animation loop and `destroy()` on teardown. Each vertex
9
+ has twelve floats: position XYZ, normal XYZ, linear colour RGB, roughness,
10
+ metalness, and procedural detail kind (0 plain, 1 wood, 2 mineral/cloth, 3 terrain).
11
+ `camera` supplies `eye`, `target` and optional vertical `fov`. At most four wakes
12
+ contain `[x, z, headingRadians]`; water can be disabled with `water: false`.
13
+
14
+ The input limit defaults to 300,000 vertices. Colour/depth targets are reused and
15
+ render dimensions are capped at 3840 per axis and a 1080p pixel budget. Snapshots identify `webgpu-raster`
16
+ and count submitted frames; they do not claim ray tracing, GPU completion or
17
+ photorealism. Native initialization failures reject; device loss changes
18
+ `available` and calls `onUnavailable`. The existing wavefront APIs are unchanged.
19
+
20
+ Enable only through the consumer's remote `gpu-demo.scene-fidelity.enabled`
21
+ decision and existing access capability. See [design](docs/design/native-showcase-surfaces.md)
22
+ and [ADR-0030](docs/adrs/adr-0030-native-showcase-surfaces.md) for rollout and limits.
23
+
3
24
  [![npm version](https://img.shields.io/npm/v/@plasius/gpu-renderer.svg)](https://www.npmjs.com/package/@plasius/gpu-renderer)
4
25
  [![Build Status](https://img.shields.io/github/actions/workflow/status/Plasius-LTD/gpu-renderer/ci.yml?branch=main&label=build&style=flat)](https://github.com/Plasius-LTD/gpu-renderer/actions/workflows/ci.yml)
5
26
  [![coverage](https://img.shields.io/codecov/c/github/Plasius-LTD/gpu-renderer)](https://codecov.io/gh/Plasius-LTD/gpu-renderer)
@@ -58,6 +79,21 @@ diagnostic capture or network/storage operation, and never registers
58
79
  `/player-system`. Disabling the flag preserves ordinary structured-only bug
59
80
  reporting.
60
81
 
82
+ ## Adaptive per-pixel implementation status
83
+
84
+ Per-pixel adaptive rendering is not yet exposed by the public renderer API.
85
+ The internal [metadata foundation](docs/design/adaptive-metadata.md) now provides
86
+ reflected requested/completed count storage and lazy, bounded allocation.
87
+ `@plasius/gpu-shader` validates the final initialization WGSL in development;
88
+ the reflector does not enter browser bundles. The normal `npm test` suite checks
89
+ generated byte constants, count packing, allocation admission and cleanup.
90
+
91
+ The fixed renderer and its whole-frame budget adjustment are unchanged. Actual
92
+ completed-count normalization, compact primary scheduling, foveation and shared
93
+ integration must land before a site comparison can claim per-pixel adaptation.
94
+ No image-quality, performance or net-memory-saving claim follows from the
95
+ metadata-only WebGPU execution fixture. See [ADR 0029](docs/adrs/adr-0029-reflected-adaptive-metadata-admission.md).
96
+
61
97
  ## Install
62
98
 
63
99
  ```sh
@@ -93,6 +129,41 @@ renderer.resize(window.innerWidth, window.innerHeight);
93
129
  renderer.start();
94
130
  ```
95
131
 
132
+ ## Canonical model ingestion
133
+
134
+ `createCanonicalWavefrontMeshInputs` adapts decoded primitive geometry and image
135
+ samples from the canonical model pipeline to the renderer's existing
136
+ `WavefrontMeshInput` shape. It maps canonical material factors and standard
137
+ texture bindings, preserves supported material extension data, and rejects
138
+ missing primitive, material, or decoded texture references. It accepts triangle
139
+ primitives; parsing, resource fetching, image decoding, and other topologies stay
140
+ in the upstream conversion layer. Metallic-roughness and unlit workflows are
141
+ supported; workflows without an existing Wavefront mapping fail explicitly.
142
+
143
+ ```js
144
+ import { createCanonicalWavefrontMeshInputs } from "@plasius/gpu-renderer";
145
+
146
+ const meshes = createCanonicalWavefrontMeshInputs({
147
+ document: canonicalDocument,
148
+ geometry: decodedPrimitives.map(({ primitiveId, positions, indices, normals, texcoords }) => ({
149
+ primitiveId,
150
+ positions,
151
+ indices,
152
+ normals,
153
+ texcoords,
154
+ })),
155
+ // ReadonlyMap<canonical texture id, decoded RGBA sample>
156
+ textures: decodedTextureSamples,
157
+ });
158
+ ```
159
+
160
+ The canonical document uses types from `@plasius/gpu-model-core`. Geometry is
161
+ already renderer-ready, normals may be omitted to retain the renderer's existing
162
+ fallback, and texture samples are keyed by canonical texture ID. The consuming
163
+ surface remains responsible for evaluating the remote
164
+ `gpu.model.conversion.enabled` flag: when disabled or rolled back, keep the
165
+ existing rendering path active.
166
+
96
167
  ## Adaptive Frame Hooks
97
168
 
98
169
  `@plasius/gpu-renderer` now exposes frame lifecycle hooks so the app can pass