@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 +38 -0
- package/README.md +71 -0
- package/dist/index.cjs +2580 -1705
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +2578 -1705
- package/dist/index.js.map +1 -1
- package/package.json +3 -1
- package/src/canonical-wavefront-meshes.js +226 -0
- package/src/index.d.ts +64 -0
- package/src/index.js +2 -0
- package/src/native-scene-renderer.js +550 -0
- package/src/native-scene-shader.js +178 -0
- package/src/renderer-webgpu-runtime.js +24 -19
- package/src/wavefront-adaptive-byte-constants.js +28 -0
- package/src/wavefront-adaptive-metadata.js +185 -0
- package/src/wavefront-adaptive-shader.js +28 -0
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
|
[](https://www.npmjs.com/package/@plasius/gpu-renderer)
|
|
4
25
|
[](https://github.com/Plasius-LTD/gpu-renderer/actions/workflows/ci.yml)
|
|
5
26
|
[](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
|