@plasius/gpu-demo-viewer 0.1.7 → 0.1.8

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
@@ -6,6 +6,26 @@ 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.8] - 2026-10-18
22
+
23
+ - Consume released renderer 0.2.51 and shared 1.1.8 for responsive camera updates and material reuse on repeated modular-kit meshes.
24
+
25
+ - Export the existing bounded Node asset-acquisition helper for hash-pinned build-time consumers; record five further acquired foliage/terrain models and four LOD holds.
26
+
27
+ - Prepare six original Poly Haven models for the next review batch and bound acquisition to an explicitly selected batch.
28
+
9
29
  - **Added**
10
30
  - (placeholder)
11
31
 
@@ -206,3 +226,4 @@ The format is based on Keep a Changelog and this project adheres to SemVer.
206
226
  [0.1.5]: https://github.com/Plasius-LTD/gpu-demo-viewer/releases/tag/v0.1.5
207
227
  [0.1.6]: https://github.com/Plasius-LTD/gpu-demo-viewer/releases/tag/v0.1.6
208
228
  [0.1.7]: https://github.com/Plasius-LTD/gpu-demo-viewer/releases/tag/v0.1.7
229
+ [0.1.8]: https://github.com/Plasius-LTD/gpu-demo-viewer/releases/tag/v0.1.8
package/README.md CHANGED
@@ -165,7 +165,7 @@ During upstream progressive-renderer development, also set `PLASIUS_RENDERER_SOU
165
165
 
166
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
167
 
168
- The released model review uses fixed progressive sampling with native UHD sizes and requires renderer0.2.49/shared1.1.7 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.
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
169
 
170
170
  ## Complete model catalogue rollout
171
171
 
@@ -178,3 +178,26 @@ Ten models are currently production-verified. Amber is locally qualified with re
178
178
  models. Voxel conversion is the following pass after original-model production
179
179
  qualification. GitHub Story [2308](https://github.com/Plasius-LTD/plasius-ltd-site/issues/2308)
180
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,19 @@
1
+ # ADR 0005: Share the bounded Node model acquisition helper
2
+
3
+ Accepted for staged delivery, 18 October 2026. Feature site#1170, Story site#2308,
4
+ Task #62. The growing original-model catalogue must not put every source binary
5
+ in site Git history or duplicate the reviewed acquisition implementation.
6
+
7
+ Expose `model-library/acquire.js` as `@plasius/gpu-demo-viewer/model-library/acquire`.
8
+ This is a Node-only tooling boundary; browser entrypoints and public runtime APIs
9
+ remain unchanged. Preserve existing provider allowlists, SHA-256/length checks,
10
+ redirect rejection, two workers, deadlines, manual-source admission and byte
11
+ budgets. Callers select explicit batches and may impose tighter constraints.
12
+
13
+ The site materializes reviewed sources during normal CI/builds, then tests the
14
+ complete output and embeds it in its approved deployment artifact. A missing or
15
+ changed provider source fails the build. Original bytes and credits remain
16
+ traceable; package tarballs contain metadata/tools, never source binary bundles.
17
+
18
+ Export regression, existing acquisition failure tests, combined LCOV and approved
19
+ package CI/CD are required before the site consumes this boundary.
@@ -6,3 +6,5 @@
6
6
  - [ADR-0002: Hosted OIDC Package Publication](./adr-0002-hosted-oidc-package-publication.md)
7
7
 
8
8
  - [ADR 0003: Reviewed model library](adr-0003-reviewed-model-library.md)
9
+
10
+ - [ADR 0005: Build-time model acquisition subpath](adr-0005-build-time-model-acquisition-subpath.md)
@@ -0,0 +1,161 @@
1
+ {
2
+ "date": "2026-10-18",
3
+ "renderer": "0.2.50",
4
+ "sharedSource": "3d119868bb9be471f71e04e1e91ed467a958b2d6",
5
+ "mode": "fixed-progressive",
6
+ "sourcePolicy": "Original source resources unchanged; default modular-kit layouts retained.",
7
+ "productionVerified": false,
8
+ "limitations": [
9
+ "No adaptive transport qualification.",
10
+ "Static geometry only; no animation entitlement implied.",
11
+ "This is a source-model inspection catalogue, not assembled cinematic scenes.",
12
+ "Dandelion source contains five widely spaced plants; use camera approach/truck for leaf detail.",
13
+ "Physical touch hardware and screen-reader speech were not tested."
14
+ ],
15
+ "models": [
16
+ {
17
+ "key": "large_iron_gate",
18
+ "triangles": 38140,
19
+ "primitives": 4,
20
+ "materials": 1,
21
+ "completedFixedSamples": 64,
22
+ "completedUhd": {
23
+ "width": 3840,
24
+ "height": 2160,
25
+ "samples": 1
26
+ },
27
+ "evidence": [
28
+ {
29
+ "file": "Large-Iron-Gate.png",
30
+ "sha256": "c1b6d1d907ef6dc24a2483b44b035b834dac306c780e1a3e8d05164f4bb93892"
31
+ },
32
+ {
33
+ "file": "Large-Iron-Gate-UHD.png",
34
+ "sha256": "94c3b333073b0cd572fd1f93bb1176a4caf697c3c10b48c901e7136e7d8b557c"
35
+ }
36
+ ]
37
+ },
38
+ {
39
+ "key": "modular_factory_facade",
40
+ "triangles": 175014,
41
+ "primitives": 263,
42
+ "materials": 6,
43
+ "completedFixedSamples": 64,
44
+ "completedUhd": {
45
+ "width": 3840,
46
+ "height": 2160,
47
+ "samples": 1
48
+ },
49
+ "evidence": [
50
+ {
51
+ "file": "Modular-Factory-Facade.png",
52
+ "sha256": "afb015f2d620513b3bb88bff49df06948100fb76e9696cd5296e1da217228f25"
53
+ },
54
+ {
55
+ "file": "Modular-Factory-Facade-UHD.png",
56
+ "sha256": "6ec1279c040cb6af2d3aeb290e6c40ad3a35548882406cf659a98c3358e9f8fe"
57
+ }
58
+ ]
59
+ },
60
+ {
61
+ "key": "modular_fort_01",
62
+ "triangles": 28218,
63
+ "primitives": 45,
64
+ "materials": 3,
65
+ "completedFixedSamples": 64,
66
+ "completedUhd": {
67
+ "width": 3840,
68
+ "height": 2160,
69
+ "samples": 1
70
+ },
71
+ "evidence": [
72
+ {
73
+ "file": "Modular-Fort-01.png",
74
+ "sha256": "c2a9b7fc1124946ed1ffc9f5cf710752422221581df81699229ff7236bd66503"
75
+ },
76
+ {
77
+ "file": "Modular-Fort-01-UHD.png",
78
+ "sha256": "992eec049485a2ba1a90ee1c3097cafdec0f7ab00220423d9e8eb5de7daba0ec"
79
+ }
80
+ ]
81
+ },
82
+ {
83
+ "key": "modular_urban_apartments_facade",
84
+ "triangles": 270045,
85
+ "primitives": 193,
86
+ "materials": 5,
87
+ "completedFixedSamples": 64,
88
+ "completedUhd": {
89
+ "width": 3840,
90
+ "height": 2160,
91
+ "samples": 1
92
+ },
93
+ "evidence": [
94
+ {
95
+ "file": "Modular-Urban-Apartments-Facade.png",
96
+ "sha256": "0de5ba7e3e084477d871ea6a3d87d462c2cc848568184a5706ee905698ff27f7"
97
+ },
98
+ {
99
+ "file": "Modular-Urban-Apartments-Facade-UHD.png",
100
+ "sha256": "da58feb5597d1642b672812333a8d3b4591dd02288cee0ca6f00c7ddb2459935"
101
+ }
102
+ ]
103
+ },
104
+ {
105
+ "key": "modular_wooden_pier",
106
+ "triangles": 84780,
107
+ "primitives": 12,
108
+ "materials": 2,
109
+ "completedFixedSamples": 64,
110
+ "completedUhd": {
111
+ "width": 3840,
112
+ "height": 2160,
113
+ "samples": 1
114
+ },
115
+ "evidence": [
116
+ {
117
+ "file": "Modular-Wooden-Pier.png",
118
+ "sha256": "6417b2f48258bdcaa29447984c65b504ce6e8d5b61ec5b695d3045dc3fb9afc1"
119
+ },
120
+ {
121
+ "file": "Modular-Wooden-Pier-UHD.png",
122
+ "sha256": "11625d3cb251e7fb45f125b17ed67044a8fea737d1c333713893de1dd704eb73"
123
+ }
124
+ ]
125
+ },
126
+ {
127
+ "key": "dandelion_01",
128
+ "triangles": 54764,
129
+ "primitives": 5,
130
+ "materials": 1,
131
+ "completedFixedSamples": 64,
132
+ "completedUhd": {
133
+ "width": 3840,
134
+ "height": 2160,
135
+ "samples": 1
136
+ },
137
+ "evidence": [
138
+ {
139
+ "file": "Dandelion-01.png",
140
+ "sha256": "eba0dfe86dca4bfdd37203e44e9041fa832f21f6329ee57d5b8316c35bb6577b"
141
+ },
142
+ {
143
+ "file": "Dandelion-01-UHD.png",
144
+ "sha256": "342b2d313c18e2a4eda35fa1e85a66f3bdb7fb475095c23bfc292c7efe5bd62b"
145
+ }
146
+ ]
147
+ }
148
+ ],
149
+ "registryConsumptionCheck": {
150
+ "renderer": "0.2.51",
151
+ "shared": "1.1.8",
152
+ "sourceOverrides": false,
153
+ "completedFixedSamples": 64,
154
+ "cameraResetAndRefinement": true,
155
+ "consoleErrors": 0,
156
+ "evidence": {
157
+ "file": "Factory-released-packages.png",
158
+ "sha256": "57ad9a850dfffdf642bc2e641fe19484ba343df27f245fac20af02cec4ec00eb"
159
+ }
160
+ }
161
+ }
@@ -0,0 +1,145 @@
1
+ {
2
+ "date": "2026-10-18",
3
+ "rendererSource": "65de630819322cdd90955417d21f97dd51416e90",
4
+ "sharedSource": "3d119868bb9be471f71e04e1e91ed467a958b2d6",
5
+ "requiredPublishedPackages": {
6
+ "@plasius/gpu-renderer": "0.2.51",
7
+ "@plasius/gpu-shared": "1.1.8"
8
+ },
9
+ "mode": "fixed-progressive",
10
+ "productionVerified": false,
11
+ "limitations": [
12
+ "Static source geometry only; this does not qualify adaptive transport or animation.",
13
+ "Physical touch hardware and screen-reader speech were not tested.",
14
+ "Changing quality settings reallocates the renderer and can take several seconds on dense sources."
15
+ ],
16
+ "models": [
17
+ {
18
+ "key": "grass_medium_01",
19
+ "triangles": 24730,
20
+ "primitives": 17,
21
+ "materials": 1,
22
+ "completedFixedSamples": 64,
23
+ "cameraResetAndRefinement": true,
24
+ "completedUhd": {
25
+ "width": 3840,
26
+ "height": 2160,
27
+ "samples": 1
28
+ },
29
+ "evidence": [
30
+ {
31
+ "file": "Grass-Medium-01.png",
32
+ "sha256": "c3110d79baa4cf1307cf818f694458b8e1865bdb1f3758a0210ebe0ac0e3ddc1"
33
+ },
34
+ {
35
+ "file": "Grass-Medium-01-UHD.png",
36
+ "sha256": "2bef23adc598ebaf0f6df4008444325e7425b0199edcac49e3690c2b8f44fd91"
37
+ }
38
+ ]
39
+ },
40
+ {
41
+ "key": "searsia_lucida",
42
+ "triangles": 377192,
43
+ "primitives": 21,
44
+ "materials": 3,
45
+ "completedFixedSamples": 64,
46
+ "cameraResetAndRefinement": true,
47
+ "completedUhd": {
48
+ "width": 3840,
49
+ "height": 2160,
50
+ "samples": 1
51
+ },
52
+ "evidence": [
53
+ {
54
+ "file": "Searsia-Lucida.png",
55
+ "sha256": "571ba465753bd4aec4d063b60e72e7196ed1ce0936a335dd28c0b7266be04b15"
56
+ },
57
+ {
58
+ "file": "Searsia-Lucida-UHD.png",
59
+ "sha256": "06478a062b57dc382d37c5ae448d2b3987b99bfa77589407b470af24a888ffe1"
60
+ }
61
+ ]
62
+ },
63
+ {
64
+ "key": "boulder_01",
65
+ "triangles": 66122,
66
+ "primitives": 1,
67
+ "materials": 1,
68
+ "completedFixedSamples": 64,
69
+ "cameraResetAndRefinement": true,
70
+ "completedUhd": {
71
+ "width": 3840,
72
+ "height": 2160,
73
+ "samples": 1
74
+ },
75
+ "evidence": [
76
+ {
77
+ "file": "Boulder-01.png",
78
+ "sha256": "d5a85db2d77d54bee0a2359ee3704ad1a751952dae9da55f52ee845df8c5dc21"
79
+ },
80
+ {
81
+ "file": "Boulder-01-UHD.png",
82
+ "sha256": "0c8e927d9845c5218740c7efc65c7b282bb0f7d45166779b3244dd6aebc12793"
83
+ }
84
+ ]
85
+ },
86
+ {
87
+ "key": "coastal_cliff_01",
88
+ "triangles": 461824,
89
+ "primitives": 1,
90
+ "materials": 1,
91
+ "completedFixedSamples": 64,
92
+ "cameraResetAndRefinement": true,
93
+ "completedUhd": {
94
+ "width": 3840,
95
+ "height": 2160,
96
+ "samples": 1
97
+ },
98
+ "evidence": [
99
+ {
100
+ "file": "Coastal-Cliff-01.png",
101
+ "sha256": "13ca80f446d6ee1199c67712a9f81b3c8b1303ecea335de0217d2b723c229adb"
102
+ },
103
+ {
104
+ "file": "Coastal-Cliff-01-UHD.png",
105
+ "sha256": "532cf5b9b272ce0e395e82bf044fa964b3cd00ebbac8160c4295b78edce5ee15"
106
+ }
107
+ ]
108
+ },
109
+ {
110
+ "key": "dead_tree_trunk",
111
+ "triangles": 101802,
112
+ "primitives": 1,
113
+ "materials": 1,
114
+ "completedFixedSamples": 64,
115
+ "cameraResetAndRefinement": true,
116
+ "completedUhd": {
117
+ "width": 3840,
118
+ "height": 2160,
119
+ "samples": 1
120
+ },
121
+ "evidence": [
122
+ {
123
+ "file": "Dead-Tree-Trunk.png",
124
+ "sha256": "ae1c01085ea5d4ed1fc05bd76ffa7a1d622dc620ca67c5a578b0cfedc59de3ce"
125
+ },
126
+ {
127
+ "file": "Dead-Tree-Trunk-UHD.png",
128
+ "sha256": "3664c0101bd9d80e4993376272d1e83abe23298001dc72f7ab526acf09d83b8a"
129
+ }
130
+ ]
131
+ }
132
+ ],
133
+ "registryConsumptionCheck": {
134
+ "renderer": "0.2.51",
135
+ "shared": "1.1.8",
136
+ "sourceOverrides": false,
137
+ "completedFixedSamples": 64,
138
+ "cameraResetAndRefinement": true,
139
+ "consoleErrors": 0,
140
+ "evidence": {
141
+ "file": "Searsia-Lucida-released-packages.png",
142
+ "sha256": "2c33f63553d04e901e3386e13b83100e700631efc15b4685c79a1abf0dae7b86"
143
+ }
144
+ }
145
+ }
@@ -5,7 +5,7 @@ Feature: site#1170. First-batch Story: site#2303; production Task: site#2305.
5
5
 
6
6
  The research catalogue contains 75 distinct source assets/sets. Gem is explicitly
7
7
  excluded by the user, leaving 74 production candidates: eleven retained from
8
- the original twelve and 63 further models. Eleven have been acquired and ten
8
+ the original twelve and 63 further models. Twenty-two have been acquired and ten
9
9
  are currently selectable in production.
10
10
  The 52 deployed files are geometry/texture resources, not 52 models.
11
11
 
@@ -78,3 +78,38 @@ All retained fixture categories completed fixed64 checks; Amber additionally
78
78
  completed fixed256 with denoising off/on, camera reset/refinement and native
79
79
  3840×2160 at one sample. These checks do not qualify adaptive transport or claim
80
80
  complete cinematic presentation. Production verification remains a separate gate.
81
+
82
+ ## Batch 1 acquisition
83
+
84
+ Six CC0 Poly Haven sources are acquired unchanged: Large Iron Gate, Modular
85
+ Factory Facade, Modular Fort 01, Modular Urban Apartments Facade, Modular Wooden
86
+ Pier and Dandelion 01. Their 60 files total 58,823,648 bytes. Provider MD5/length
87
+ checks and recorded SHA-256 inventories agree; glTF dependency closure is complete.
88
+ `models:download -- 1` selects only this batch; runtime review still loads one
89
+ model at a time. Floating Castle, Thatched Cottage and Diffuse Transmission Plant
90
+ remain outside the acquired set. No additional model is production-qualified by
91
+ this acquisition record.
92
+
93
+ ## Batch 1 inspection
94
+
95
+ The [qualification record](batch-one-qualification.json) records all six source
96
+ models completing fixed64 and native 3840×2160 at one sample. The material reuse
97
+ correction in shared PR150 makes the factory kit usable without duplicating its
98
+ six materials across 263 primitives. Camera and quality controls remain the
99
+ shared inspection APIs. The modular sources remain separate kit pieces; the
100
+ dandelion source contains five plants spread apart. This qualification supports
101
+ source inspection and does not claim assembled environments or cinematic quality.
102
+ Production remains pending registry consumption and approved site deployment.
103
+
104
+ ## Batch 2 acquisition
105
+
106
+ Grass Medium 01, Searsia Lucida, Boulder 01, Coastal Cliff 01 and Dead Tree Trunk
107
+ are acquired unchanged (25 files, 48,818,088 bytes). All five completed fixed64,
108
+ camera reset/refinement and native UHD1 inspection; see
109
+ [batch two evidence](batch-two-qualification.json). The workshop consumes
110
+ published renderer 0.2.51 and shared 1.1.8, including the camera scene-reuse fix.
111
+ Quality changes still reallocate the renderer; dense models can take several seconds.
112
+ Four LOD0 tree sources exceed the unchanged 500,000-triangle limit: Fir Tree 01
113
+ (6,982,937), Island Tree 01 (1,599,403), Jacaranda Tree (3,863,832) and Pine Tree 01
114
+ (17,182,252). These need deliberate LOD preparation before admission; increasing
115
+ the runtime budget or silently replacing their sources is not a qualification.