@plasius/gpu-demo-viewer 0.1.8 → 0.1.10
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 +34 -0
- package/README.md +131 -154
- package/docs/batch-three-qualification.json +234 -0
- package/docs/catalogue-production-rollout.md +21 -2
- package/docs/wavefront-viewer.md +69 -0
- package/model-library/catalogue.json +823 -0
- package/model-library/rollout.json +18 -18
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,38 @@ The format is based on Keep a Changelog and this project adheres to SemVer.
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
- **Added**
|
|
10
|
+
- (placeholder)
|
|
11
|
+
|
|
12
|
+
- **Changed**
|
|
13
|
+
- (placeholder)
|
|
14
|
+
|
|
15
|
+
- **Fixed**
|
|
16
|
+
- (placeholder)
|
|
17
|
+
|
|
18
|
+
- **Security**
|
|
19
|
+
- (placeholder)
|
|
20
|
+
|
|
21
|
+
## [0.1.10] - 2026-10-20
|
|
22
|
+
|
|
23
|
+
- Restore workshop setup and current quality controls near the start of the README; separate workspace/maintainer guidance and replace stale release counts with authoritative tracking links.
|
|
24
|
+
|
|
25
|
+
- **Added**
|
|
26
|
+
- (placeholder)
|
|
27
|
+
|
|
28
|
+
- **Changed**
|
|
29
|
+
- (placeholder)
|
|
30
|
+
|
|
31
|
+
- **Fixed**
|
|
32
|
+
- (placeholder)
|
|
33
|
+
|
|
34
|
+
- **Security**
|
|
35
|
+
- (placeholder)
|
|
36
|
+
|
|
37
|
+
## [0.1.9] - 2026-10-18
|
|
38
|
+
|
|
39
|
+
- Add nine original natural-object and textile models with fixed64/UHD inspection evidence, pinned Khronos resources and explicit default-material limits.
|
|
40
|
+
|
|
9
41
|
- **Added**
|
|
10
42
|
- (placeholder)
|
|
11
43
|
|
|
@@ -227,3 +259,5 @@ The format is based on Keep a Changelog and this project adheres to SemVer.
|
|
|
227
259
|
[0.1.6]: https://github.com/Plasius-LTD/gpu-demo-viewer/releases/tag/v0.1.6
|
|
228
260
|
[0.1.7]: https://github.com/Plasius-LTD/gpu-demo-viewer/releases/tag/v0.1.7
|
|
229
261
|
[0.1.8]: https://github.com/Plasius-LTD/gpu-demo-viewer/releases/tag/v0.1.8
|
|
262
|
+
[0.1.9]: https://github.com/Plasius-LTD/gpu-demo-viewer/releases/tag/v0.1.9
|
|
263
|
+
[0.1.10]: https://github.com/Plasius-LTD/gpu-demo-viewer/releases/tag/v0.1.10
|
package/README.md
CHANGED
|
@@ -7,132 +7,162 @@
|
|
|
7
7
|
[](./SECURITY.md)
|
|
8
8
|
[](./CHANGELOG.md)
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
A browser workshop for inspecting source models with the Plasius GPU renderer,
|
|
11
|
+
plus a workspace launcher for the `gpu-*` package demos. The workshop provides
|
|
12
|
+
camera gestures, progressive rendering, quality controls and model credits.
|
|
11
13
|
|
|
12
|
-
|
|
14
|
+
The npm package includes the viewer source, manifest and build-time acquisition
|
|
15
|
+
helper. Model binaries are downloaded separately; they are not bundled in npm.
|
|
13
16
|
|
|
14
|
-
|
|
17
|
+
## Run the model workshop
|
|
15
18
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
- the experimental wavefront path-tracing demo mounts the
|
|
19
|
-
`@plasius/gpu-renderer` WebGPU mesh BVH renderer
|
|
20
|
-
- remaining code-example demos still expose their recommended command and entry file
|
|
21
|
-
- the manifest is tested so new `gpu-*` demo folders do not get missed
|
|
19
|
+
Use Node.js 24 or later, npm, and a WebGPU-capable browser on localhost or HTTPS.
|
|
20
|
+
Clone the repository to run its Vite development server:
|
|
22
21
|
|
|
23
|
-
|
|
22
|
+
```sh
|
|
23
|
+
git clone https://github.com/Plasius-LTD/gpu-demo-viewer.git
|
|
24
|
+
cd gpu-demo-viewer
|
|
25
|
+
npm ci
|
|
26
|
+
npm run models:download
|
|
27
|
+
npm run models:dev
|
|
28
|
+
```
|
|
24
29
|
|
|
25
|
-
|
|
30
|
+
Open [the local workshop](http://127.0.0.1:5291/?review=first-twelve).
|
|
31
|
+
The default download command selects the original review batch. It verifies the
|
|
32
|
+
exact size and SHA-256 of each model and its buffer/image dependencies, preserving
|
|
33
|
+
source files and credits. Downloaded binaries live in `model-library/assets/`
|
|
34
|
+
and are ignored by Git and npm. The workshop uses the published shared inspection
|
|
35
|
+
and renderer dependencies from the lockfile; sibling source overrides are optional.
|
|
36
|
+
|
|
37
|
+
The original batch includes a **manual Medieval house download**. Obtain the
|
|
38
|
+
original GLB from the model's credited Sketchfab source and place it at
|
|
39
|
+
`model-library/assets/sf-house/medieval_house.glb`, then rerun the download command.
|
|
40
|
+
A missing manual file produces a placement message; this command does not download
|
|
41
|
+
it for you. Only the pinned original file passes verification. Gem is excluded
|
|
42
|
+
from the rollout and is not substituted.
|
|
43
|
+
|
|
44
|
+
To acquire another reviewed batch or choose a different local port:
|
|
45
|
+
|
|
46
|
+
```sh
|
|
47
|
+
npm run models:download -- 1
|
|
48
|
+
npm run models:dev -- --port 5292
|
|
49
|
+
```
|
|
26
50
|
|
|
27
|
-
|
|
28
|
-
|
|
51
|
+
Select one batch at a time. A catalogue record can still be held for acquisition,
|
|
52
|
+
licensing or visual review; it is not a claim that the model is available locally
|
|
53
|
+
or enabled on the production site. The download helper admits only configured
|
|
54
|
+
resources and keeps two workers, a 100 MiB per-file limit and a 200 MiB batch limit.
|
|
55
|
+
Source, creator, licence and review notes appear beside each model.
|
|
56
|
+
|
|
57
|
+
## Camera and render quality
|
|
58
|
+
|
|
59
|
+
Drag or use one finger to orbit; Shift/right-drag trucks, Alt-drag pans, and the
|
|
60
|
+
wheel or pinch moves closer/farther. Two-finger movement trucks. Focus the canvas
|
|
61
|
+
to use arrows, Shift-arrows, +/− and keyboard modes 1–5. `Home` restores framing;
|
|
62
|
+
`?` replays a brief gesture reminder. Persistent instructions remain in Camera help.
|
|
63
|
+
|
|
64
|
+
| Control | Choices | Default |
|
|
65
|
+
| --- | --- | --- |
|
|
66
|
+
| Sample target | 1, 8, 16, 32, 64, 128, 256 | 64 |
|
|
67
|
+
| Light bounces | 2, 4, 6, 8, 10, 12 | 6 |
|
|
68
|
+
| Render size | 480, 800, 1280 px width; 1920×1080, 2560×1440, 3840×2160 | 800 px width |
|
|
69
|
+
| Denoising | On or off | On |
|
|
70
|
+
|
|
71
|
+
The first pass uses one sample. Once the camera is still, batches of up to four
|
|
72
|
+
refine toward the target. Camera and quality changes restart history. Hidden tabs
|
|
73
|
+
pause further work; progress reports GPU-completed samples and actual dimensions.
|
|
74
|
+
Settings do not reload the source model. Resizing preserves the camera.
|
|
75
|
+
|
|
76
|
+
HD, QHD and 4K presets trace the exact selected dimensions independently of the
|
|
77
|
+
window size; the canvas contains the image without stretching. Use one sample for
|
|
78
|
+
a quick full-resolution check. GPU memory and rendering time depend on the model,
|
|
79
|
+
resolution and device. Current released sampling is fixed progressive sampling;
|
|
80
|
+
per-pixel adaptive controls remain separate qualification work.
|
|
81
|
+
|
|
82
|
+
This workshop displays static geometry. Source animation clips remain in the
|
|
83
|
+
original assets, but are not played here. Material variants are not selectable;
|
|
84
|
+
for example, the sheen chair uses its default material. Completion of a render
|
|
85
|
+
does not resolve the visual findings recorded in its review notes.
|
|
86
|
+
|
|
87
|
+
## Embed the rendering runtime
|
|
88
|
+
|
|
89
|
+
For an application view, use
|
|
90
|
+
[`@plasius/gpu-shared/model-inspection`](https://github.com/Plasius-LTD/gpu-shared#inspect-a-model).
|
|
91
|
+
It owns model loading, integrity verification, camera handling and refinement.
|
|
92
|
+
This viewer supplies the surrounding catalogue, controls and review workflow.
|
|
93
|
+
|
|
94
|
+
Node build tools can use the published acquisition helper:
|
|
95
|
+
|
|
96
|
+
```sh
|
|
97
|
+
npm install @plasius/gpu-demo-viewer
|
|
29
98
|
```
|
|
30
99
|
|
|
31
|
-
|
|
100
|
+
```js
|
|
101
|
+
import { acquisitionPlan, acquireFixtures } from "@plasius/gpu-demo-viewer/model-library/acquire";
|
|
32
102
|
|
|
33
|
-
|
|
34
|
-
|
|
103
|
+
// Pass one reviewed batch of catalogue asset records and an absolute destination.
|
|
104
|
+
export async function downloadReviewedBatch(assets, root) {
|
|
105
|
+
const plan = acquisitionPlan(assets, root); // Validates paths, sources and budgets.
|
|
106
|
+
console.log(`Verified download plan: ${plan.length} resources`);
|
|
107
|
+
return acquireFixtures({ assets, root });
|
|
108
|
+
}
|
|
35
109
|
```
|
|
36
110
|
|
|
37
|
-
The
|
|
111
|
+
The input shape follows
|
|
112
|
+
[model-library/catalogue.json](https://github.com/Plasius-LTD/gpu-demo-viewer/blob/main/model-library/catalogue.json).
|
|
113
|
+
Only approved HTTPS providers are accepted; redirects fail. Existing files must
|
|
114
|
+
match their pinned hashes and sizes; missing manual sources fail with a placement
|
|
115
|
+
message. Keep this Node helper out of browser bundles. Site builds may enforce
|
|
116
|
+
stricter limits and must verify the complete dependency closure.
|
|
38
117
|
|
|
39
|
-
|
|
118
|
+
## Workspace demo launcher
|
|
40
119
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
120
|
+
The static root launcher expects sibling `gpu-*` package checkouts and their
|
|
121
|
+
required builds. It is useful when developing the package family together.
|
|
122
|
+
From a checkout named `gpu-demo-viewer`, with Python 3 installed:
|
|
44
123
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
```text
|
|
48
|
-
http://localhost:8000/gpu-demo-viewer/wavefront/?experimental=wavefront&capture=1
|
|
124
|
+
```sh
|
|
125
|
+
npm run demo
|
|
49
126
|
```
|
|
50
127
|
|
|
51
|
-
|
|
128
|
+
Visit [the workspace launcher](http://localhost:8000/gpu-demo-viewer/).
|
|
129
|
+
The server serves the parent directory so sibling demo URLs remain reachable.
|
|
130
|
+
Browser-backed demos can be launched or embedded; code-example packages show
|
|
131
|
+
their command and entry file. `gpu-world-generator` uses its built `demo/dist/`.
|
|
132
|
+
The manifest is tested so sibling demo folders are not missed.
|
|
52
133
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
```
|
|
134
|
+
See [the experimental wavefront viewer](https://github.com/Plasius-LTD/gpu-demo-viewer/blob/main/docs/wavefront-viewer.md)
|
|
135
|
+
for its separate capture mode, benchmark controls and timing interpretation.
|
|
56
136
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
the renderer. The active demo presets are 960x540 capture, 1280x720 balanced,
|
|
61
|
-
1920x1080 detail, and a 3840x2160 4K target. The 540p/720p/1080p presets
|
|
62
|
-
default to 8 samples per pixel, while 4K defaults to 4 samples per pixel; the
|
|
63
|
-
renderer keeps queue buffers tile-bounded so these targets do not require
|
|
64
|
-
full-frame ray queues.
|
|
65
|
-
|
|
66
|
-
The wavefront page runs a live render loop by default. The performance panel
|
|
67
|
-
shows FPS, frame timing, primary rays per second, and a 100% stacked timing bar
|
|
68
|
-
for the viewer-observed frame budget: WebGPU command dispatch, GPU completion
|
|
69
|
-
wait, optional probe/readback, overlay update, and requestAnimationFrame pacing.
|
|
70
|
-
These timings are browser-side measurements; they identify where the viewer is
|
|
71
|
-
blocked each frame but do not yet replace future GPU timestamp-query profiling
|
|
72
|
-
inside individual compute passes.
|
|
73
|
-
|
|
74
|
-
## Static Validation Contract
|
|
75
|
-
|
|
76
|
-
This repository is a public npm package that ships the static validation
|
|
77
|
-
surface for the `gpu-*` family.
|
|
78
|
-
|
|
79
|
-
- `npm run demo` serves the workspace root so sibling `gpu-*` demos are
|
|
80
|
-
reachable from one URL.
|
|
81
|
-
- `npm run typecheck` syntax-checks the shipped browser entrypoints and
|
|
82
|
-
manifest modules.
|
|
83
|
-
- `npm run build` verifies the static contract documented in
|
|
84
|
-
`docs/adrs/adr-0001-gpu-demo-viewer-governance-baseline.md`.
|
|
85
|
-
- `npm run pack:check` verifies the public npm package payload before GitHub
|
|
86
|
-
Actions publishes it.
|
|
87
|
-
- Releases are published only through `.github/workflows/cd.yml` with npm
|
|
88
|
-
provenance and the GitHub `production` environment.
|
|
89
|
-
|
|
90
|
-
## Validation Notes
|
|
91
|
-
|
|
92
|
-
- Browser-backed WebGPU demos still require `localhost` or `HTTPS`.
|
|
93
|
-
- The wavefront path-tracing demo is a WebGPU renderer mount, not a CPU/static
|
|
94
|
-
canvas tracer. It submits only the benchmark model mesh set with
|
|
95
|
-
`displayQuality: true`, builds the renderer mesh BVH on the GPU, disables
|
|
96
|
-
environment portals, and leaves skybox/environment lighting as the only
|
|
97
|
-
scene lighting source. The demo intentionally excludes the previous synthetic
|
|
98
|
-
room, floor, wall, emissive-panel, and fluid-surface geometry so most escaped
|
|
99
|
-
paths should terminate against the skybox rather than unlit scene blockers.
|
|
100
|
-
Shallow no-light/max-depth paths return the renderer ambient residual to
|
|
101
|
-
approximate unresolved high-order indirect bounces. The demo exposes 1, 4, 8,
|
|
102
|
-
and 16 samples-per-pixel settings and defaults to 8 spp for the 540p, 720p,
|
|
103
|
-
and 1080p presets. The denoise toggle runs the renderer post pass; denoise
|
|
104
|
-
smooths neighboring pixels but does not replace active-ray skybox/environment
|
|
105
|
-
hits as the primary lighting source. The loop updates camera uniforms every
|
|
106
|
-
animation frame through `@plasius/gpu-renderer` so the FPS counter represents
|
|
107
|
-
a moving realtime render rather than repeated presentation of one static
|
|
108
|
-
frame.
|
|
109
|
-
- The wavefront performance chart is intended for local tuning: compare
|
|
110
|
-
resolution, depth, samples-per-pixel, and denoise settings while watching
|
|
111
|
-
whether time is dominated by command dispatch, sampled GPU completion sync,
|
|
112
|
-
readback, overlay work, or frame pacing. The demo does not hard-sync every
|
|
113
|
-
frame; completion sync is sampled periodically to avoid making the viewer
|
|
114
|
-
itself serialize the GPU queue.
|
|
115
|
-
- The shared integration showcase is 3D but does not require WebGPU initialization just to render the validation scene.
|
|
116
|
-
- The showcase now resolves `@plasius/gpu-shared` through an import map so the browser entry uses the package public surface instead of a deep internal file path.
|
|
117
|
-
- `gpu-world-generator` is launched from its built `demo/dist/` bundle in the viewer because its source demo uses a Vite workflow.
|
|
118
|
-
- Code-example packages are listed for discovery but are not embedded in an iframe.
|
|
119
|
-
|
|
120
|
-
## Local Checks
|
|
121
|
-
|
|
122
|
-
```bash
|
|
137
|
+
## Development and review records
|
|
138
|
+
|
|
139
|
+
```sh
|
|
123
140
|
npm run build
|
|
124
141
|
npm run typecheck
|
|
125
142
|
npm run lint
|
|
143
|
+
npm run test:coverage
|
|
126
144
|
npm run pack:check
|
|
127
|
-
npm test
|
|
128
145
|
```
|
|
129
146
|
|
|
130
|
-
|
|
147
|
+
`build` verifies the static viewer contract; `typecheck` checks shipped JavaScript
|
|
148
|
+
syntax. Neither command performs browser GPU qualification.
|
|
149
|
+
|
|
150
|
+
For deliberate local development against an unreleased package, the model Vite
|
|
151
|
+
config accepts `PLASIUS_SHARED_INSPECTION_SOURCE` (absolute `src/model-inspection.js`)
|
|
152
|
+
and `PLASIUS_RENDERER_SOURCE` (absolute `src/index.js` or built `dist/index.js`).
|
|
153
|
+
These overrides are local development tools. Production consumes published,
|
|
154
|
+
qualified package versions and approved source assets.
|
|
155
|
+
|
|
156
|
+
- [Initial model findings](https://github.com/Plasius-LTD/gpu-demo-viewer/blob/main/docs/model-library-review.md).
|
|
157
|
+
- [UHD inspection contract](https://github.com/Plasius-LTD/gpu-demo-viewer/blob/main/docs/model-inspection-uhd.md).
|
|
158
|
+
- [Catalogue rollout requirements](https://github.com/Plasius-LTD/gpu-demo-viewer/blob/main/docs/catalogue-production-rollout.md) and [live delivery tracking](https://github.com/Plasius-LTD/plasius-ltd-site/issues/2308).
|
|
159
|
+
- [Non-functional requirements](https://github.com/Plasius-LTD/gpu-demo-viewer/blob/main/NFR.md), [workflow](https://github.com/Plasius-LTD/gpu-demo-viewer/blob/main/WORKFLOW.md), [flags and capabilities](https://github.com/Plasius-LTD/gpu-demo-viewer/blob/main/FLAGS_AND_CAPABILITIES.md), and [architecture decisions](https://github.com/Plasius-LTD/gpu-demo-viewer/blob/main/docs/adrs/index.md).
|
|
160
|
+
|
|
161
|
+
The research manifest retains source identities and credits separately from
|
|
162
|
+
acquisition state. Production entitlement and visual qualification are distinct
|
|
163
|
+
from downloading a model. GitHub Project tracking owns current delivery status;
|
|
164
|
+
voxel conversion follows qualification of the original-model catalogue.
|
|
131
165
|
|
|
132
|
-
- Non-functional requirements: [`NFR.md`](./NFR.md)
|
|
133
|
-
- Delivery workflow: [`WORKFLOW.md`](./WORKFLOW.md)
|
|
134
|
-
- Feature flags and capabilities: [`FLAGS_AND_CAPABILITIES.md`](./FLAGS_AND_CAPABILITIES.md)
|
|
135
|
-
- Architectural decision log: [`docs/adrs/index.md`](./docs/adrs/index.md)
|
|
136
166
|
<!-- BEGIN PLASIUS RELEASE INTEGRITY -->
|
|
137
167
|
## Release integrity
|
|
138
168
|
|
|
@@ -148,56 +178,3 @@ npm 11.5.1 or newer, uses the protected `production` environment and
|
|
|
148
178
|
short-lived npm OIDC with provenance, and has no long-lived npm write-token
|
|
149
179
|
fallback. Rollback disables CD; it never rewrites published package history.
|
|
150
180
|
<!-- END PLASIUS RELEASE INTEGRITY -->
|
|
151
|
-
|
|
152
|
-
## Model library review
|
|
153
|
-
|
|
154
|
-
`npm run models:download` installs the ten reviewed, freely licensed Poly Haven and Khronos fixtures from `model-library/catalogue.json`, including all buffer/image dependencies. Downloads are bounded and SHA-256 checked; binaries are ignored by Git and npm. `npm run models:dev` opens the localhost server on port 5291. Visit `http://127.0.0.1:5291/?review=first-twelve`. The Medieval house is a manually supplied eleventh asset; Gem is excluded from the rollout by request. Source links, creators and licences are available beside each model.
|
|
155
|
-
|
|
156
|
-
For Medieval house, obtain the original GLB from its credited Sketchfab source and place it at `model-library/assets/sf-house/medieval_house.glb`, then run `npm run models:download` to verify its pinned size and SHA-256 and write its credits. This command never downloads manual assets; a missing file produces an explicit placement message. The catalogue stores no private local paths.
|
|
157
|
-
|
|
158
|
-
This page consumes the shared model-inspection package entrypoint. While its upstream release is pending, development testing can set `PLASIUS_SHARED_INSPECTION_SOURCE` to an absolute path to the reviewed sibling `src/model-inspection.js`; this explicit source override is for localhost development only, not a released dependency or production deployment.
|
|
159
|
-
|
|
160
|
-
Mouse/touch/keyboard inspection reuses the material-study camera. The view progressively refines while the camera is still, stopping at the selected sample target. `Home` restores framing and `?` displays a brief gesture reminder. Resizing updates resolution while preserving the camera. Fox is static here; its Survey, Walk and Run clips remain in the original download. Amber uses the fixed-continuation correction in renderer 0.2.50; its original materials are unchanged. See `docs/model-library-review.md` for the initial findings; none of these fixtures is implicitly approved for the production showcase.
|
|
161
|
-
|
|
162
|
-
Render-quality controls select 8–256 total samples, 2–12 light bounces, 480/800/1280px render width and denoising. Defaults are 64/6/800/on. The first pass is one sample; idle refinement adds up to four samples per batch. Camera and quality changes restart history. Hidden tabs pause further work; the progress bar reports completed samples and actual dimensions. Settings do not reload the source model.
|
|
163
|
-
|
|
164
|
-
During upstream progressive-renderer development, also set `PLASIUS_RENDERER_SOURCE` to an absolute reviewed `src/index.js` or built `dist/index.js`. Both source overrides are development-only; PRs remain dependency-blocked until approved package CD and final released-version validation. To use another local port: `npm run models:dev -- --port 5292`.
|
|
165
|
-
|
|
166
|
-
The model review includes native 1920 × 1080, 2560 × 1440 and 3840 × 2160 quality presets. These trace the exact selected pixel dimensions independently of viewport size; the canvas contains the image without stretching. A one-sample target supports quick full-resolution checks. See [UHD inspection design](docs/model-inspection-uhd.md).
|
|
167
|
-
|
|
168
|
-
The released model review uses fixed progressive sampling with native UHD sizes and requires renderer 0.2.51/shared 1.1.8 or newer. Adaptive controls remain in a separate qualification branch. See [release scope](docs/model-review-release.md); the local inspection catalogue explicitly retains unresolved visual findings.
|
|
169
|
-
|
|
170
|
-
## Complete model catalogue rollout
|
|
171
|
-
|
|
172
|
-
The [74-model production rollout](docs/catalogue-production-rollout.md) tracks the
|
|
173
|
-
eleven retained originals and seven subsequent batches of nine. The research
|
|
174
|
-
manifest retains the excluded Gem identity, making 75 research records. `model-library/rollout.json`
|
|
175
|
-
records acquisition/qualification state separately from production entitlement;
|
|
176
|
-
`research-catalogue.json` preserves the original source identities and credits.
|
|
177
|
-
Ten models are currently production-verified. Amber is locally qualified with renderer 0.2.50 and awaits production verification; Gem is excluded by request. Research entries are not a claim of downloaded or working
|
|
178
|
-
models. Voxel conversion is the following pass after original-model production
|
|
179
|
-
qualification. GitHub Story [2308](https://github.com/Plasius-LTD/plasius-ltd-site/issues/2308)
|
|
180
|
-
owns delivery and acceptance.
|
|
181
|
-
|
|
182
|
-
### Review batch downloads
|
|
183
|
-
|
|
184
|
-
`npm run models:download -- 1` acquires only the six checked Poly Haven models
|
|
185
|
-
in the first follow-on batch. The default remains batch 0 (the original group).
|
|
186
|
-
Each batch retains the existing 200 MiB total and 100 MiB per-file download
|
|
187
|
-
limits, two workers and exact hashes. Downloaded models are candidates, not
|
|
188
|
-
production approvals. The local workshop includes acquired candidates with
|
|
189
|
-
their source credits; production remains a separately qualified catalogue.
|
|
190
|
-
|
|
191
|
-
### Build-time model acquisition
|
|
192
|
-
|
|
193
|
-
Node consumers may import `acquisitionPlan` and `acquireFixtures` from
|
|
194
|
-
`@plasius/gpu-demo-viewer/model-library/acquire`. Pass reviewed asset metadata
|
|
195
|
-
and a destination root; the helper verifies exact bytes and SHA-256, uses only
|
|
196
|
-
approved HTTPS providers without redirects, and bounds concurrency, time and
|
|
197
|
-
bytes. Select one explicit reviewed batch per call (200 MiB total / 100 MiB per
|
|
198
|
-
resource maximum). Existing files must match; missing manual sources fail closed.
|
|
199
|
-
This Node subpath is build tooling and must not enter browser bundles. Binary
|
|
200
|
-
assets are not included in the npm package. Site build-time use retains stricter
|
|
201
|
-
resource limits and verifies the complete source dependency closure.
|
|
202
|
-
|
|
203
|
-
The review now consumes published renderer 0.2.51 and shared 1.1.8: camera movement reuses unchanged scene geometry, and repeated source primitives share their authored materials during import.
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
{
|
|
2
|
+
"date": "2026-10-18",
|
|
3
|
+
"renderer": "0.2.51",
|
|
4
|
+
"shared": "1.1.8",
|
|
5
|
+
"sourceOverrides": false,
|
|
6
|
+
"mode": "fixed-progressive",
|
|
7
|
+
"productionVerified": false,
|
|
8
|
+
"consoleErrors": 0,
|
|
9
|
+
"limitations": [
|
|
10
|
+
"Static geometry only; adaptive transport and animation are not qualified.",
|
|
11
|
+
"Sheen Chair uses its authored default material; variants are not selectable.",
|
|
12
|
+
"The source Rubber Boots set contains four boot meshes.",
|
|
13
|
+
"Physical touch hardware and screen-reader speech were not tested.",
|
|
14
|
+
"Completed images support source inspection, not full physical-fidelity approval."
|
|
15
|
+
],
|
|
16
|
+
"models": [
|
|
17
|
+
{
|
|
18
|
+
"key": "food_pomegranate_01",
|
|
19
|
+
"triangles": 8142,
|
|
20
|
+
"primitives": 1,
|
|
21
|
+
"materials": 1,
|
|
22
|
+
"completedFixedSamples": 64,
|
|
23
|
+
"denoisingOffOn": true,
|
|
24
|
+
"cameraResetAndRefinement": true,
|
|
25
|
+
"completedUhd": {
|
|
26
|
+
"width": 3840,
|
|
27
|
+
"height": 2160,
|
|
28
|
+
"samples": 1
|
|
29
|
+
},
|
|
30
|
+
"evidence": [
|
|
31
|
+
{
|
|
32
|
+
"file": "Food-Pomegranate-01.png",
|
|
33
|
+
"sha256": "b884838f06ae474122623228954630e1ce56ab5540dbb98bdb013be9ef5d70ac"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"file": "Food-Pomegranate-01-UHD.png",
|
|
37
|
+
"sha256": "c6bf16fae502a0da2a030d5e0cef4c4375af62bbedde069ff039823bd534a3a4"
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"key": "lambis_shell",
|
|
43
|
+
"triangles": 12498,
|
|
44
|
+
"primitives": 1,
|
|
45
|
+
"materials": 1,
|
|
46
|
+
"completedFixedSamples": 64,
|
|
47
|
+
"denoisingOffOn": true,
|
|
48
|
+
"cameraResetAndRefinement": true,
|
|
49
|
+
"completedUhd": {
|
|
50
|
+
"width": 3840,
|
|
51
|
+
"height": 2160,
|
|
52
|
+
"samples": 1
|
|
53
|
+
},
|
|
54
|
+
"evidence": [
|
|
55
|
+
{
|
|
56
|
+
"file": "Lambis-Shell.png",
|
|
57
|
+
"sha256": "33b954c771bb4aaaf8bb9ad78f736546cfd7344885370535e989aaad1e872585"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"file": "Lambis-Shell-UHD.png",
|
|
61
|
+
"sha256": "b8f04147705a144a85688eb74a0dbee878bf4401275cfde11fb8eaa02ca901f5"
|
|
62
|
+
}
|
|
63
|
+
]
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"key": "rock_face_01",
|
|
67
|
+
"triangles": 20174,
|
|
68
|
+
"primitives": 1,
|
|
69
|
+
"materials": 1,
|
|
70
|
+
"completedFixedSamples": 64,
|
|
71
|
+
"denoisingOffOn": true,
|
|
72
|
+
"cameraResetAndRefinement": true,
|
|
73
|
+
"completedUhd": {
|
|
74
|
+
"width": 3840,
|
|
75
|
+
"height": 2160,
|
|
76
|
+
"samples": 1
|
|
77
|
+
},
|
|
78
|
+
"evidence": [
|
|
79
|
+
{
|
|
80
|
+
"file": "Rock-Face-01.png",
|
|
81
|
+
"sha256": "33c7d7b6230b455e70cddab45344052ee125d47196c58943c0607a17e0fc8de8"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"file": "Rock-Face-01-UHD.png",
|
|
85
|
+
"sha256": "b369e857112218f79542bfe2039e677d4c45ac34fb9d912ee58c10aee80a7708"
|
|
86
|
+
}
|
|
87
|
+
]
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"key": "tree_stump_01",
|
|
91
|
+
"triangles": 41046,
|
|
92
|
+
"primitives": 1,
|
|
93
|
+
"materials": 1,
|
|
94
|
+
"completedFixedSamples": 64,
|
|
95
|
+
"denoisingOffOn": true,
|
|
96
|
+
"cameraResetAndRefinement": true,
|
|
97
|
+
"completedUhd": {
|
|
98
|
+
"width": 3840,
|
|
99
|
+
"height": 2160,
|
|
100
|
+
"samples": 1
|
|
101
|
+
},
|
|
102
|
+
"evidence": [
|
|
103
|
+
{
|
|
104
|
+
"file": "Tree-Stump-01.png",
|
|
105
|
+
"sha256": "01b6cce2016364555fcc8fce3af3554b2380458f44efe91082df13e61ce83293"
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"file": "Tree-Stump-01-UHD.png",
|
|
109
|
+
"sha256": "e649c3490bdac8096fde3b8aa50dd31ab92942eb40350ada9b64a4f0d0d24a4d"
|
|
110
|
+
}
|
|
111
|
+
]
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"key": "ArmChair_01",
|
|
115
|
+
"triangles": 5626,
|
|
116
|
+
"primitives": 1,
|
|
117
|
+
"materials": 1,
|
|
118
|
+
"completedFixedSamples": 64,
|
|
119
|
+
"denoisingOffOn": true,
|
|
120
|
+
"cameraResetAndRefinement": true,
|
|
121
|
+
"completedUhd": {
|
|
122
|
+
"width": 3840,
|
|
123
|
+
"height": 2160,
|
|
124
|
+
"samples": 1
|
|
125
|
+
},
|
|
126
|
+
"evidence": [
|
|
127
|
+
{
|
|
128
|
+
"file": "Arm-Chair-01.png",
|
|
129
|
+
"sha256": "2880f3e3554562b46eefff8e00bc468ec502481c584fc13c4ddeb4b0127e6581"
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"file": "Arm-Chair-01-UHD.png",
|
|
133
|
+
"sha256": "7529879e264de2b7f25bd5ea8e2df39ac5b3183bda21406578a6beb015990d00"
|
|
134
|
+
}
|
|
135
|
+
]
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"key": "fishermans_hat",
|
|
139
|
+
"triangles": 10304,
|
|
140
|
+
"primitives": 1,
|
|
141
|
+
"materials": 1,
|
|
142
|
+
"completedFixedSamples": 64,
|
|
143
|
+
"denoisingOffOn": true,
|
|
144
|
+
"cameraResetAndRefinement": true,
|
|
145
|
+
"completedUhd": {
|
|
146
|
+
"width": 3840,
|
|
147
|
+
"height": 2160,
|
|
148
|
+
"samples": 1
|
|
149
|
+
},
|
|
150
|
+
"evidence": [
|
|
151
|
+
{
|
|
152
|
+
"file": "Fishermans-Hat.png",
|
|
153
|
+
"sha256": "8059b74c6dfc1074540dea7fb009f0c0634646cd5ed60b63ede9e9f524d8f01e"
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"file": "Fishermans-Hat-UHD.png",
|
|
157
|
+
"sha256": "8d8dffb568abdcda33f922bb875536bcd9c7116c5c7bb5a05730a7d1edec9a7d"
|
|
158
|
+
}
|
|
159
|
+
]
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"key": "rubber_boots",
|
|
163
|
+
"triangles": 56128,
|
|
164
|
+
"primitives": 4,
|
|
165
|
+
"materials": 2,
|
|
166
|
+
"completedFixedSamples": 64,
|
|
167
|
+
"denoisingOffOn": true,
|
|
168
|
+
"cameraResetAndRefinement": true,
|
|
169
|
+
"completedUhd": {
|
|
170
|
+
"width": 3840,
|
|
171
|
+
"height": 2160,
|
|
172
|
+
"samples": 1
|
|
173
|
+
},
|
|
174
|
+
"evidence": [
|
|
175
|
+
{
|
|
176
|
+
"file": "Rubber-Boots.png",
|
|
177
|
+
"sha256": "4630658b9360eb26ef582db9ab7f7b727a5191e36dcda20b0b37d7123eab8b23"
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"file": "Rubber-Boots-UHD.png",
|
|
181
|
+
"sha256": "9a1cb02dcee8b517a94d282af2dedc1f318b6a269b8949f7a1dca8cacc2f590c"
|
|
182
|
+
}
|
|
183
|
+
]
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"key": "SheenChair",
|
|
187
|
+
"triangles": 39936,
|
|
188
|
+
"primitives": 4,
|
|
189
|
+
"materials": 6,
|
|
190
|
+
"completedFixedSamples": 64,
|
|
191
|
+
"denoisingOffOn": true,
|
|
192
|
+
"cameraResetAndRefinement": true,
|
|
193
|
+
"completedUhd": {
|
|
194
|
+
"width": 3840,
|
|
195
|
+
"height": 2160,
|
|
196
|
+
"samples": 1
|
|
197
|
+
},
|
|
198
|
+
"evidence": [
|
|
199
|
+
{
|
|
200
|
+
"file": "Sheen-Chair.png",
|
|
201
|
+
"sha256": "a77903d6ead6cbcc9a03f9974ae7fe6d879c24c091bb7d384f7698b3fe3e8bb2"
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
"file": "Sheen-Chair-UHD.png",
|
|
205
|
+
"sha256": "1252911713a6a0fbb46238c06cc5845eaece04ac4cd0ff27d215a4db73875c36"
|
|
206
|
+
}
|
|
207
|
+
]
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
"key": "SheenCloth",
|
|
211
|
+
"triangles": 115200,
|
|
212
|
+
"primitives": 1,
|
|
213
|
+
"materials": 1,
|
|
214
|
+
"completedFixedSamples": 64,
|
|
215
|
+
"denoisingOffOn": true,
|
|
216
|
+
"cameraResetAndRefinement": true,
|
|
217
|
+
"completedUhd": {
|
|
218
|
+
"width": 3840,
|
|
219
|
+
"height": 2160,
|
|
220
|
+
"samples": 1
|
|
221
|
+
},
|
|
222
|
+
"evidence": [
|
|
223
|
+
{
|
|
224
|
+
"file": "Sheen-Cloth.png",
|
|
225
|
+
"sha256": "c6b485a30af21fcafa949bc1e5d0dc7ee9f8304e6613a86617bcdd953185d247"
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
"file": "Sheen-Cloth-UHD.png",
|
|
229
|
+
"sha256": "4d41f377201f9fe4c4db329391981d1ac4c61efc3ec350c072f9dcacbe1ae7a2"
|
|
230
|
+
}
|
|
231
|
+
]
|
|
232
|
+
}
|
|
233
|
+
]
|
|
234
|
+
}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
# Complete catalogue rollout
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Plan recorded 18 October 2026; counts below are a historical planning snapshot,
|
|
4
|
+
not current deployment status. See [Story 2308](https://github.com/Plasius-LTD/plasius-ltd-site/issues/2308)
|
|
5
|
+
for delivery evidence and current status. Parent Epic: site#2271;
|
|
4
6
|
Feature: site#1170. First-batch Story: site#2303; production Task: site#2305.
|
|
5
7
|
|
|
6
8
|
The research catalogue contains 75 distinct source assets/sets. Gem is explicitly
|
|
7
9
|
excluded by the user, leaving 74 production candidates: eleven retained from
|
|
8
|
-
the original twelve and 63 further models.
|
|
10
|
+
the original twelve and 63 further models. Thirty-one have been acquired and ten
|
|
9
11
|
are currently selectable in production.
|
|
10
12
|
The 52 deployed files are geometry/texture resources, not 52 models.
|
|
11
13
|
|
|
@@ -113,3 +115,20 @@ Four LOD0 tree sources exceed the unchanged 500,000-triangle limit: Fir Tree 01
|
|
|
113
115
|
(6,982,937), Island Tree 01 (1,599,403), Jacaranda Tree (3,863,832) and Pine Tree 01
|
|
114
116
|
(17,182,252). These need deliberate LOD preparation before admission; increasing
|
|
115
117
|
the runtime budget or silently replacing their sources is not a qualification.
|
|
118
|
+
|
|
119
|
+
## Batch 3 acquisition
|
|
120
|
+
|
|
121
|
+
Nine original sources are acquired: pomegranate, shell, rock face, tree stump,
|
|
122
|
+
armchair, hat, boots, Sheen Chair and Sheen Cloth. Poly Haven resources retain
|
|
123
|
+
the provider MD5/length and local SHA-256 inventories. Khronos sources are pinned
|
|
124
|
+
to commit edc7c9e67c639d230715049ee31f9a96a6babbbe and checked against Git blob
|
|
125
|
+
identities before SHA-256 inventory. Both sheen examples are CC0 in their primary
|
|
126
|
+
source notices. Sheen Chair exposes its authored default material only; material
|
|
127
|
+
variant selection is not claimed. This acquisition record does not admit any
|
|
128
|
+
of these nine sources to production before visual qualification and site CI/CD.
|
|
129
|
+
|
|
130
|
+
All nine batch-three models completed fixed64, camera reset/refinement, denoising
|
|
131
|
+
off/on and native UHD1 using released packages, with no observed console errors.
|
|
132
|
+
See [batch three evidence](batch-three-qualification.json). Four boot meshes are
|
|
133
|
+
part of the source set; Sheen Chair retains its default authored material.
|
|
134
|
+
Production verification remains pending.
|