@forgeax/engine-runtime 0.1.23 → 0.1.25

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.
Files changed (812) hide show
  1. package/README.md +15 -6
  2. package/dist/dev-import-transport.d.ts.map +1 -1
  3. package/dist/index.mjs +1 -1
  4. package/dist/index.mjs.map +1 -1
  5. package/package.json +30 -30
  6. package/src/__tests__/advance-animation-player.cases.unit.test.ts +1666 -0
  7. package/src/__tests__/asset-registry-aabb.cases.unit.test.ts +676 -0
  8. package/src/__tests__/asset-registry-bootstrap.cases.unit.test.ts +472 -0
  9. package/src/__tests__/asset-registry-builtin-nineslice.cases.unit.test.ts +481 -0
  10. package/src/__tests__/asset-registry-d9-tile-sampler-soft-warn.cases.unit.test.ts +568 -0
  11. package/src/__tests__/asset-registry-guid.cases.unit.test.ts +500 -0
  12. package/src/__tests__/asset-registry-material-validate.cases.unit.test.ts +756 -0
  13. package/src/__tests__/asset-registry-mesh-fail-fast.cases.unit.test.ts +591 -0
  14. package/src/__tests__/asset-registry-scene.cases.unit.test.ts +501 -0
  15. package/src/__tests__/asset-registry-sprite-slices-validate.cases.unit.test.ts +536 -0
  16. package/src/__tests__/asset-renderer-assembly.cases.unit.test.ts +496 -0
  17. package/src/__tests__/asset.cases.unit.test.ts +439 -0
  18. package/src/__tests__/bind-group-cache-keying.test.ts +6 -2
  19. package/src/__tests__/bloom-gating.cases.unit.test.ts +428 -0
  20. package/src/__tests__/builtin-guid-ssot.cases.unit.test.ts +472 -0
  21. package/src/__tests__/builtin-pack.cases.unit.test.ts +639 -0
  22. package/src/__tests__/builtin-shader-register-e2e.test.ts +1 -1
  23. package/src/__tests__/camera-antialias.cases.unit.test.ts +372 -0
  24. package/src/__tests__/camera-bloom.cases.unit.test.ts +396 -0
  25. package/src/__tests__/camera-clear-schema.cases.unit.test.ts +391 -0
  26. package/src/__tests__/camera-ortho.cases.unit.test.ts +484 -0
  27. package/src/__tests__/cluster-binner.cases.unit.test.ts +817 -0
  28. package/src/__tests__/collect-scene-mount-collapse.test.ts +5 -1
  29. package/src/__tests__/create-renderer-fallback-shader-manifest.cases.unit.test.ts +345 -0
  30. package/src/__tests__/create-renderer-uniform-fallback.cases.unit.test.ts +445 -0
  31. package/src/__tests__/cubemap-upload.cases.unit.test.ts +593 -0
  32. package/src/__tests__/dawn/hello-sprite-nineslice-section.dawn.test.ts +32 -27
  33. package/src/__tests__/dawn/ibl-precompute-readback.dawn.test.ts +184 -17
  34. package/src/__tests__/dawn/instances-uniform-fallback.dawn.test.ts +91 -64
  35. package/src/__tests__/dawn/material-alpha.dawn.test.ts +17 -4
  36. package/src/__tests__/dawn/material-cooked-fixture.dawn.test.ts +31 -9
  37. package/src/__tests__/derive-bgl-integration.test.ts +8 -8
  38. package/src/__tests__/dev-import-transport.cases.unit.test.ts +503 -0
  39. package/src/__tests__/engine-metrics.cases.unit.test.ts +371 -0
  40. package/src/__tests__/equirect-projection-error.cases.unit.test.ts +416 -0
  41. package/src/__tests__/font-asset-load.cases.unit.test.ts +510 -0
  42. package/src/__tests__/fullscreen-post-process-pass.dawn.test.ts +6 -2
  43. package/src/__tests__/fxaa-intermediate-texture.cases.unit.test.ts +690 -0
  44. package/src/__tests__/fxaa-pipeline.cases.unit.test.ts +546 -0
  45. package/src/__tests__/gpu-residency.cases.unit.test.ts +479 -0
  46. package/src/__tests__/gpu-resource-release.cases.unit.test.ts +929 -0
  47. package/src/__tests__/handle-quad.cases.unit.test.ts +491 -0
  48. package/src/__tests__/hdrp-bgl-slots.cases.unit.test.ts +451 -0
  49. package/src/__tests__/hdrp-grid-invalid.cases.unit.test.ts +408 -0
  50. package/src/__tests__/hdrp-index-list-overflow-once.cases.unit.test.ts +405 -0
  51. package/src/__tests__/hdrp-light-budget.cases.unit.test.ts +483 -0
  52. package/src/__tests__/hdrp-pipeline-asset-config.cases.unit.test.ts +441 -0
  53. package/src/__tests__/helpers/renderer-device-loss-dawn.ts +69 -0
  54. package/src/__tests__/helpers/standard-material-manifest.ts +11 -15
  55. package/src/__tests__/ibl-pipeline-cache.cases.unit.test.ts +415 -0
  56. package/src/__tests__/instances-renderer-lifecycle.integration.test.ts +161 -0
  57. package/src/__tests__/lazy-catalog.cases.unit.test.ts +848 -0
  58. package/src/__tests__/light-gpu-byte-neutral.unit.test.ts +6 -5
  59. package/src/__tests__/load-by-guid-hdr.cases.unit.test.ts +582 -0
  60. package/src/__tests__/load-by-guid-prod-material-parent.cases.unit.test.ts +1514 -0
  61. package/src/__tests__/load-by-guid-prod.cases.unit.test.ts +557 -0
  62. package/src/__tests__/loader-registry.cases.unit.test.ts +767 -0
  63. package/src/__tests__/m7-hdrp-demo-shape.cases.unit.test.ts +361 -0
  64. package/src/__tests__/material-texture-uv-scale.unit.test.ts +2 -2
  65. package/src/__tests__/materials.unit.test.ts +29 -10
  66. package/src/__tests__/mipmap-formula.cases.unit.test.ts +434 -0
  67. package/src/__tests__/mipmap-pipeline-cache.cases.unit.test.ts +490 -0
  68. package/src/__tests__/parse-asset-payload-material.cases.unit.test.ts +555 -0
  69. package/src/__tests__/parse-asset-payload-texture.cases.unit.test.ts +720 -0
  70. package/src/__tests__/parse-scene-payload-refs.cases.unit.test.ts +767 -0
  71. package/src/__tests__/pass-selector.cases.unit.test.ts +376 -0
  72. package/src/__tests__/pbr-pipeline.unit.test.ts +23 -5
  73. package/src/__tests__/pipeline-builder.cases.unit.test.ts +624 -0
  74. package/src/__tests__/pipeline-cache-key-topology.cases.unit.test.ts +807 -0
  75. package/src/__tests__/pipeline-vertex-stride-branch.cases.unit.test.ts +379 -0
  76. package/src/__tests__/pipeline.cases.unit.test.ts +370 -0
  77. package/src/__tests__/point-light-shadow.dawn.test.ts +24 -5
  78. package/src/__tests__/post-process-register.cases.unit.test.ts +405 -0
  79. package/src/__tests__/propagate-transforms.cases.unit.test.ts +502 -0
  80. package/src/__tests__/propagate-transforms.dawn.test.ts +19 -2
  81. package/src/__tests__/record-all-topology.cases.unit.test.ts +608 -0
  82. package/src/__tests__/record-draw-branch.cases.unit.test.ts +621 -0
  83. package/src/__tests__/record-strip-index-format.cases.unit.test.ts +419 -0
  84. package/src/__tests__/record-worldid-isolation.test.ts +6 -25
  85. package/src/__tests__/register-with-guid-rgba16float.cases.unit.test.ts +469 -0
  86. package/src/__tests__/render-data.cases.unit.test.ts +553 -0
  87. package/src/__tests__/render-error-exhaustive.test-d.ts +1 -0
  88. package/src/__tests__/render-query-regression.cases.unit.test.ts +531 -0
  89. package/src/__tests__/render-system-extract.test.ts +76 -1
  90. package/src/__tests__/render-system-record-submesh.cases.unit.test.ts +740 -0
  91. package/src/__tests__/render-system-record-warn-once.cases.unit.test.ts +418 -0
  92. package/src/__tests__/render-system-record.test.ts +15 -33
  93. package/src/__tests__/renderer-device-loss-multi-world.integration.test.ts +103 -0
  94. package/src/__tests__/renderer-device-loss-provider-feasibility.dawn.test.ts +124 -0
  95. package/src/__tests__/renderer-device-loss-recovery.dawn.test.ts +50 -0
  96. package/src/__tests__/renderer-draw-world.cases.unit.test.ts +514 -0
  97. package/src/__tests__/renderer-recovery-consumer.integration.test.ts +96 -0
  98. package/src/__tests__/renderstate-pipeline-cache.cases.unit.test.ts +631 -0
  99. package/src/__tests__/resolve-scene-guids.cases.unit.test.ts +1123 -0
  100. package/src/__tests__/shadow-caster-empty-schema.test.ts +12 -15
  101. package/src/__tests__/shadow-csm-runtime-vary.dawn.test.ts +10 -5
  102. package/src/__tests__/shadow-fields-observable.dawn.test.ts +2 -2
  103. package/src/__tests__/shadow-m1.dawn.test.ts +1 -1
  104. package/src/__tests__/shadow-skip-non-triangle.cases.unit.test.ts +681 -0
  105. package/src/__tests__/skin-errors-kebab-case.cases.unit.test.ts +475 -0
  106. package/src/__tests__/skin-extract-getarrayview-count.unit.test.ts +5 -4
  107. package/src/__tests__/skin-instances-coexist.cases.unit.test.ts +375 -0
  108. package/src/__tests__/skin-m2-extract-happy.cases.unit.test.ts +592 -0
  109. package/src/__tests__/skin-m2-extract-joint-error.cases.unit.test.ts +619 -0
  110. package/src/__tests__/skin-m2-extract-null-assets.cases.unit.test.ts +569 -0
  111. package/src/__tests__/skin-m2-extract-skeleton-error.cases.unit.test.ts +585 -0
  112. package/src/__tests__/skin-m3-record-cache.cases.unit.test.ts +457 -0
  113. package/src/__tests__/skin-palette-extract.cases.unit.test.ts +635 -0
  114. package/src/__tests__/skin-pipeline-routing.cases.unit.test.ts +411 -0
  115. package/src/__tests__/skin.cases.unit.test.ts +421 -0
  116. package/src/__tests__/skybox-extract.cases.unit.test.ts +511 -0
  117. package/src/__tests__/skybox-shader-compile.cases.unit.test.ts +437 -0
  118. package/src/__tests__/skylight-bind-group.cases.unit.test.ts +642 -0
  119. package/src/__tests__/skylight-component.cases.unit.test.ts +386 -0
  120. package/src/__tests__/skylight-fallback-path.cases.unit.test.ts +566 -0
  121. package/src/__tests__/skylight-lazy-projection.test.ts +35 -20
  122. package/src/__tests__/skylight-pipeline-layout.cases.unit.test.ts +506 -0
  123. package/src/__tests__/skylight-solid-color-extract.cases.unit.test.ts +399 -0
  124. package/src/__tests__/sprite-animation-tick-boundary.cases.unit.test.ts +521 -0
  125. package/src/__tests__/sprite-animation-tick-clamp.cases.unit.test.ts +453 -0
  126. package/src/__tests__/sprite-animation-tick-frame-duration-negative.cases.unit.test.ts +447 -0
  127. package/src/__tests__/sprite-animation-tick-frame-duration-zero.cases.unit.test.ts +395 -0
  128. package/src/__tests__/sprite-animation-tick-loop.cases.unit.test.ts +494 -0
  129. package/src/__tests__/sprite-animation-tick-override-probe.cases.unit.test.ts +439 -0
  130. package/src/__tests__/sprite-animation-tick-regions-mismatch.cases.unit.test.ts +466 -0
  131. package/src/__tests__/sprite-lit-bgl-byte-identical.test.ts +5 -5
  132. package/src/__tests__/sprite-lit-pipeline-cache-key.test.ts +1 -1
  133. package/src/__tests__/ssao-pipelines.test.ts +1 -1
  134. package/src/__tests__/storage-buffer-caps.cases.unit.test.ts +373 -0
  135. package/src/__tests__/surface-standard-pipeline.browser.test.ts +350 -0
  136. package/src/__tests__/surface-standard-pipeline.dawn.test.ts +346 -0
  137. package/src/__tests__/surface-standard-pipeline.runtime-fixture.ts +184 -0
  138. package/src/__tests__/surface-standard-pipeline.vite.d.ts +12 -0
  139. package/src/__tests__/systems.cases.unit.test.ts +425 -0
  140. package/src/__tests__/tilemap-chunk-extract.overhang-bounds.test.ts +1 -1
  141. package/src/__tests__/tonemap-hdr-target.cases.unit.test.ts +676 -0
  142. package/src/__tests__/tonemap-pipeline-split.cases.unit.test.ts +867 -0
  143. package/src/__tests__/tonemap.cases.unit.test.ts +446 -0
  144. package/src/__tests__/transparent-sort-config-get.cases.unit.test.ts +395 -0
  145. package/src/__tests__/transparent-sort-config-set.cases.unit.test.ts +424 -0
  146. package/src/__tests__/transparent-sort.cases.unit.test.ts +684 -0
  147. package/src/__tests__/upload-texture-consistency.cases.unit.test.ts +478 -0
  148. package/src/__tests__/verify-revisions.cases.unit.test.ts +619 -0
  149. package/src/__tests__/wire-default-loaders.cases.unit.test.ts +461 -0
  150. package/src/__tests__/zero-camera-clear-fallback.cases.unit.test.ts +374 -0
  151. package/src/dev-import-transport.ts +2 -1
  152. package/dist/__tests__/active-camera.unit.test.d.ts +0 -2
  153. package/dist/__tests__/active-camera.unit.test.d.ts.map +0 -1
  154. package/dist/__tests__/animation-graph-add.unit.test.d.ts +0 -2
  155. package/dist/__tests__/animation-graph-add.unit.test.d.ts.map +0 -1
  156. package/dist/__tests__/animation-graph-asset-union.test-d.d.ts +0 -2
  157. package/dist/__tests__/animation-graph-asset-union.test-d.d.ts.map +0 -1
  158. package/dist/__tests__/animation-graph-blend.unit.test.d.ts +0 -2
  159. package/dist/__tests__/animation-graph-blend.unit.test.d.ts.map +0 -1
  160. package/dist/__tests__/animation-graph-build.unit.test.d.ts +0 -2
  161. package/dist/__tests__/animation-graph-build.unit.test.d.ts.map +0 -1
  162. package/dist/__tests__/animation-graph-clip-missing.unit.test.d.ts +0 -2
  163. package/dist/__tests__/animation-graph-clip-missing.unit.test.d.ts.map +0 -1
  164. package/dist/__tests__/animation-graph-clip.unit.test.d.ts +0 -2
  165. package/dist/__tests__/animation-graph-clip.unit.test.d.ts.map +0 -1
  166. package/dist/__tests__/animation-graph-collect-roundtrip.test.d.ts +0 -2
  167. package/dist/__tests__/animation-graph-collect-roundtrip.test.d.ts.map +0 -1
  168. package/dist/__tests__/animation-graph-default-path.integration.test.d.ts +0 -2
  169. package/dist/__tests__/animation-graph-default-path.integration.test.d.ts.map +0 -1
  170. package/dist/__tests__/animation-graph-describe.unit.test.d.ts +0 -2
  171. package/dist/__tests__/animation-graph-describe.unit.test.d.ts.map +0 -1
  172. package/dist/__tests__/animation-graph-errors.unit.test.d.ts +0 -2
  173. package/dist/__tests__/animation-graph-errors.unit.test.d.ts.map +0 -1
  174. package/dist/__tests__/animation-graph-nesting.unit.test.d.ts +0 -2
  175. package/dist/__tests__/animation-graph-nesting.unit.test.d.ts.map +0 -1
  176. package/dist/__tests__/animation-graph-orthogonal-weight.unit.test.d.ts +0 -2
  177. package/dist/__tests__/animation-graph-orthogonal-weight.unit.test.d.ts.map +0 -1
  178. package/dist/__tests__/animation-graph-serialize.unit.test.d.ts +0 -2
  179. package/dist/__tests__/animation-graph-serialize.unit.test.d.ts.map +0 -1
  180. package/dist/__tests__/animation-graph-slot-fill.unit.test.d.ts +0 -2
  181. package/dist/__tests__/animation-graph-slot-fill.unit.test.d.ts.map +0 -1
  182. package/dist/__tests__/animation-nslot.unit.test.d.ts +0 -2
  183. package/dist/__tests__/animation-nslot.unit.test.d.ts.map +0 -1
  184. package/dist/__tests__/animation-slot-length-guard.unit.test.d.ts +0 -2
  185. package/dist/__tests__/animation-slot-length-guard.unit.test.d.ts.map +0 -1
  186. package/dist/__tests__/append-injection.test.d.ts +0 -2
  187. package/dist/__tests__/append-injection.test.d.ts.map +0 -1
  188. package/dist/__tests__/asi-world-baseline-export.unit.test.d.ts +0 -2
  189. package/dist/__tests__/asi-world-baseline-export.unit.test.d.ts.map +0 -1
  190. package/dist/__tests__/asi-world-ci-config.unit.test.d.ts +0 -2
  191. package/dist/__tests__/asi-world-ci-config.unit.test.d.ts.map +0 -1
  192. package/dist/__tests__/asi-world-smoke.unit.test.d.ts +0 -2
  193. package/dist/__tests__/asi-world-smoke.unit.test.d.ts.map +0 -1
  194. package/dist/__tests__/asset-brand-and-name-retirement.test.d.ts +0 -2
  195. package/dist/__tests__/asset-brand-and-name-retirement.test.d.ts.map +0 -1
  196. package/dist/__tests__/asset-error-exhaustive.test-d.d.ts +0 -11
  197. package/dist/__tests__/asset-error-exhaustive.test-d.d.ts.map +0 -1
  198. package/dist/__tests__/asset-registry-guid-reverse.test.d.ts +0 -2
  199. package/dist/__tests__/asset-registry-guid-reverse.test.d.ts.map +0 -1
  200. package/dist/__tests__/asset-registry-hdr-equirect.test.d.ts +0 -2
  201. package/dist/__tests__/asset-registry-hdr-equirect.test.d.ts.map +0 -1
  202. package/dist/__tests__/asset-registry-mesh-pack-payload.dawn.test.d.ts +0 -2
  203. package/dist/__tests__/asset-registry-mesh-pack-payload.dawn.test.d.ts.map +0 -1
  204. package/dist/__tests__/asset-registry-mounts.test.d.ts +0 -2
  205. package/dist/__tests__/asset-registry-mounts.test.d.ts.map +0 -1
  206. package/dist/__tests__/asset-registry-scene.test-d.d.ts +0 -2
  207. package/dist/__tests__/asset-registry-scene.test-d.d.ts.map +0 -1
  208. package/dist/__tests__/asset-registry.browser.test.d.ts +0 -2
  209. package/dist/__tests__/asset-registry.browser.test.d.ts.map +0 -1
  210. package/dist/__tests__/asset-registry.dawn.test.d.ts +0 -2
  211. package/dist/__tests__/asset-registry.dawn.test.d.ts.map +0 -1
  212. package/dist/__tests__/asset-registry.listCatalog.test.d.ts +0 -2
  213. package/dist/__tests__/asset-registry.listCatalog.test.d.ts.map +0 -1
  214. package/dist/__tests__/asset-registry.mesh-bin.test.d.ts +0 -2
  215. package/dist/__tests__/asset-registry.mesh-bin.test.d.ts.map +0 -1
  216. package/dist/__tests__/asset-registry.pack-cache.test.d.ts +0 -2
  217. package/dist/__tests__/asset-registry.pack-cache.test.d.ts.map +0 -1
  218. package/dist/__tests__/asset-registry.raw-container-failfast.test.d.ts +0 -2
  219. package/dist/__tests__/asset-registry.raw-container-failfast.test.d.ts.map +0 -1
  220. package/dist/__tests__/asset-registry.recursive.spec.d.ts +0 -2
  221. package/dist/__tests__/asset-registry.recursive.spec.d.ts.map +0 -1
  222. package/dist/__tests__/asset-registry.unit.test.d.ts +0 -2
  223. package/dist/__tests__/asset-registry.unit.test.d.ts.map +0 -1
  224. package/dist/__tests__/asset.unit.test.d.ts +0 -2
  225. package/dist/__tests__/asset.unit.test.d.ts.map +0 -1
  226. package/dist/__tests__/audio-load-by-guid.unit.test.d.ts +0 -2
  227. package/dist/__tests__/audio-load-by-guid.unit.test.d.ts.map +0 -1
  228. package/dist/__tests__/backend-selection.integration.test.d.ts +0 -2
  229. package/dist/__tests__/backend-selection.integration.test.d.ts.map +0 -1
  230. package/dist/__tests__/basis-catalog-dispatch.integration.test.d.ts +0 -2
  231. package/dist/__tests__/basis-catalog-dispatch.integration.test.d.ts.map +0 -1
  232. package/dist/__tests__/bind-group-cache-keying.test.d.ts +0 -2
  233. package/dist/__tests__/bind-group-cache-keying.test.d.ts.map +0 -1
  234. package/dist/__tests__/block-upload-math.unit.test.d.ts +0 -2
  235. package/dist/__tests__/block-upload-math.unit.test.d.ts.map +0 -1
  236. package/dist/__tests__/builtin-asset-registry.unit.test.d.ts +0 -2
  237. package/dist/__tests__/builtin-asset-registry.unit.test.d.ts.map +0 -1
  238. package/dist/__tests__/builtin-shader-register-e2e.test.d.ts +0 -2
  239. package/dist/__tests__/builtin-shader-register-e2e.test.d.ts.map +0 -1
  240. package/dist/__tests__/cache-false-eviction.test.d.ts +0 -2
  241. package/dist/__tests__/cache-false-eviction.test.d.ts.map +0 -1
  242. package/dist/__tests__/cache-isolation-matrix.test.d.ts +0 -2
  243. package/dist/__tests__/cache-isolation-matrix.test.d.ts.map +0 -1
  244. package/dist/__tests__/camera-clear-snapshot-equivalence.unit.test.d.ts +0 -2
  245. package/dist/__tests__/camera-clear-snapshot-equivalence.unit.test.d.ts.map +0 -1
  246. package/dist/__tests__/clamp-to-last.e2e.browser.test.d.ts +0 -2
  247. package/dist/__tests__/clamp-to-last.e2e.browser.test.d.ts.map +0 -1
  248. package/dist/__tests__/clamp-to-last.e2e.dawn.test.d.ts +0 -2
  249. package/dist/__tests__/clamp-to-last.e2e.dawn.test.d.ts.map +0 -1
  250. package/dist/__tests__/collect-scene-asset.test.d.ts +0 -2
  251. package/dist/__tests__/collect-scene-asset.test.d.ts.map +0 -1
  252. package/dist/__tests__/collect-scene-mount-collapse.test.d.ts +0 -2
  253. package/dist/__tests__/collect-scene-mount-collapse.test.d.ts.map +0 -1
  254. package/dist/__tests__/collect-subtree.unit.test.d.ts +0 -2
  255. package/dist/__tests__/collect-subtree.unit.test.d.ts.map +0 -1
  256. package/dist/__tests__/collect-transient-children-absent.test.d.ts +0 -2
  257. package/dist/__tests__/collect-transient-children-absent.test.d.ts.map +0 -1
  258. package/dist/__tests__/collect-transient-roundtrip.test.d.ts +0 -2
  259. package/dist/__tests__/collect-transient-roundtrip.test.d.ts.map +0 -1
  260. package/dist/__tests__/collect-transient-skip.test.d.ts +0 -2
  261. package/dist/__tests__/collect-transient-skip.test.d.ts.map +0 -1
  262. package/dist/__tests__/components.test-d.d.ts +0 -2
  263. package/dist/__tests__/components.test-d.d.ts.map +0 -1
  264. package/dist/__tests__/components.unit.test.d.ts +0 -2
  265. package/dist/__tests__/components.unit.test.d.ts.map +0 -1
  266. package/dist/__tests__/composite-skybox-cross-world.browser.test.d.ts +0 -2
  267. package/dist/__tests__/composite-skybox-cross-world.browser.test.d.ts.map +0 -1
  268. package/dist/__tests__/compressed-texture-physical-extent.integration.test.d.ts +0 -2
  269. package/dist/__tests__/compressed-texture-physical-extent.integration.test.d.ts.map +0 -1
  270. package/dist/__tests__/create-renderer-assembly.integration.test.d.ts +0 -2
  271. package/dist/__tests__/create-renderer-assembly.integration.test.d.ts.map +0 -1
  272. package/dist/__tests__/create-renderer-gpu-pass-timing.unit.test.d.ts +0 -2
  273. package/dist/__tests__/create-renderer-gpu-pass-timing.unit.test.d.ts.map +0 -1
  274. package/dist/__tests__/createRenderer-dispose.test.d.ts +0 -2
  275. package/dist/__tests__/createRenderer-dispose.test.d.ts.map +0 -1
  276. package/dist/__tests__/createRenderer-requiredFeatures.unit.test.d.ts +0 -2
  277. package/dist/__tests__/createRenderer-requiredFeatures.unit.test.d.ts.map +0 -1
  278. package/dist/__tests__/createRenderer.browser-no-webgpu.test.d.ts +0 -2
  279. package/dist/__tests__/createRenderer.browser-no-webgpu.test.d.ts.map +0 -1
  280. package/dist/__tests__/createRenderer.unit.test.d.ts +0 -2
  281. package/dist/__tests__/createRenderer.unit.test.d.ts.map +0 -1
  282. package/dist/__tests__/dawn/hello-sprite-nineslice-section.dawn.test.d.ts +0 -2
  283. package/dist/__tests__/dawn/hello-sprite-nineslice-section.dawn.test.d.ts.map +0 -1
  284. package/dist/__tests__/dawn/ibl-compose.dawn.test.d.ts +0 -2
  285. package/dist/__tests__/dawn/ibl-compose.dawn.test.d.ts.map +0 -1
  286. package/dist/__tests__/dawn/ibl-modules-compose.dawn.test.d.ts +0 -2
  287. package/dist/__tests__/dawn/ibl-modules-compose.dawn.test.d.ts.map +0 -1
  288. package/dist/__tests__/dawn/ibl-precompute-readback.dawn.test.d.ts +0 -2
  289. package/dist/__tests__/dawn/ibl-precompute-readback.dawn.test.d.ts.map +0 -1
  290. package/dist/__tests__/dawn/instances-per-instance-pbr.dawn.test.d.ts +0 -2
  291. package/dist/__tests__/dawn/instances-per-instance-pbr.dawn.test.d.ts.map +0 -1
  292. package/dist/__tests__/dawn/instances-shadow.dawn.test.d.ts +0 -2
  293. package/dist/__tests__/dawn/instances-shadow.dawn.test.d.ts.map +0 -1
  294. package/dist/__tests__/dawn/instances-uniform-fallback.dawn.test.d.ts +0 -2
  295. package/dist/__tests__/dawn/instances-uniform-fallback.dawn.test.d.ts.map +0 -1
  296. package/dist/__tests__/dawn/material-alpha.dawn.test.d.ts +0 -2
  297. package/dist/__tests__/dawn/material-alpha.dawn.test.d.ts.map +0 -1
  298. package/dist/__tests__/dawn/material-cooked-fixture.dawn.test.d.ts +0 -2
  299. package/dist/__tests__/dawn/material-cooked-fixture.dawn.test.d.ts.map +0 -1
  300. package/dist/__tests__/dawn/mesh-ssbo-normal-matrix.dawn.test.d.ts +0 -2
  301. package/dist/__tests__/dawn/mesh-ssbo-normal-matrix.dawn.test.d.ts.map +0 -1
  302. package/dist/__tests__/dawn/mesh-update-dawn.test.d.ts +0 -2
  303. package/dist/__tests__/dawn/mesh-update-dawn.test.d.ts.map +0 -1
  304. package/dist/__tests__/dawn/mipmap-srgb-linear.dawn.test.d.ts +0 -2
  305. package/dist/__tests__/dawn/mipmap-srgb-linear.dawn.test.d.ts.map +0 -1
  306. package/dist/__tests__/dawn/per-entity-material-texture-isolation.dawn.test.d.ts +0 -2
  307. package/dist/__tests__/dawn/per-entity-material-texture-isolation.dawn.test.d.ts.map +0 -1
  308. package/dist/__tests__/dawn/sprite-nineslice-mesh-bind.dawn.test.d.ts +0 -2
  309. package/dist/__tests__/dawn/sprite-nineslice-mesh-bind.dawn.test.d.ts.map +0 -1
  310. package/dist/__tests__/dawn/tonemap.dawn.test.d.ts +0 -2
  311. package/dist/__tests__/dawn/tonemap.dawn.test.d.ts.map +0 -1
  312. package/dist/__tests__/dawn/upload-texture.dawn.test.d.ts +0 -2
  313. package/dist/__tests__/dawn/upload-texture.dawn.test.d.ts.map +0 -1
  314. package/dist/__tests__/dawn/user-handle-mesh-render.dawn.test.d.ts +0 -2
  315. package/dist/__tests__/dawn/user-handle-mesh-render.dawn.test.d.ts.map +0 -1
  316. package/dist/__tests__/dawn/user-mesh-upload.dawn.test.d.ts +0 -2
  317. package/dist/__tests__/dawn/user-mesh-upload.dawn.test.d.ts.map +0 -1
  318. package/dist/__tests__/dawn/zero-manifest-mesh-fail.dawn.test.d.ts +0 -2
  319. package/dist/__tests__/dawn/zero-manifest-mesh-fail.dawn.test.d.ts.map +0 -1
  320. package/dist/__tests__/dawn/zero-manifest-ready.dawn.test.d.ts +0 -2
  321. package/dist/__tests__/dawn/zero-manifest-ready.dawn.test.d.ts.map +0 -1
  322. package/dist/__tests__/demo-sortscope-migration.unit.test.d.ts +0 -2
  323. package/dist/__tests__/demo-sortscope-migration.unit.test.d.ts.map +0 -1
  324. package/dist/__tests__/derive-bgl-integration.test.d.ts +0 -2
  325. package/dist/__tests__/derive-bgl-integration.test.d.ts.map +0 -1
  326. package/dist/__tests__/derive-render-data-skin.unit.test.d.ts +0 -2
  327. package/dist/__tests__/derive-render-data-skin.unit.test.d.ts.map +0 -1
  328. package/dist/__tests__/draw-published.d.ts +0 -5
  329. package/dist/__tests__/draw-published.d.ts.map +0 -1
  330. package/dist/__tests__/dynamic-texture-store.unit.test.d.ts +0 -2
  331. package/dist/__tests__/dynamic-texture-store.unit.test.d.ts.map +0 -1
  332. package/dist/__tests__/environment-error-exhaustive.test-d.d.ts +0 -8
  333. package/dist/__tests__/environment-error-exhaustive.test-d.d.ts.map +0 -1
  334. package/dist/__tests__/equirect-bc6h.integration.test.d.ts +0 -2
  335. package/dist/__tests__/equirect-bc6h.integration.test.d.ts.map +0 -1
  336. package/dist/__tests__/error-exhaustive.test.d.ts +0 -2
  337. package/dist/__tests__/error-exhaustive.test.d.ts.map +0 -1
  338. package/dist/__tests__/errors.unit.test.d.ts +0 -2
  339. package/dist/__tests__/errors.unit.test.d.ts.map +0 -1
  340. package/dist/__tests__/extract-frames-graceful-degradation.test.d.ts +0 -2
  341. package/dist/__tests__/extract-frames-graceful-degradation.test.d.ts.map +0 -1
  342. package/dist/__tests__/extract-frames-merge.test.d.ts +0 -2
  343. package/dist/__tests__/extract-frames-merge.test.d.ts.map +0 -1
  344. package/dist/__tests__/extract-frames-reset.test.d.ts +0 -2
  345. package/dist/__tests__/extract-frames-reset.test.d.ts.map +0 -1
  346. package/dist/__tests__/extract-record-no-hardcoded-texture-fields.test.d.ts +0 -2
  347. package/dist/__tests__/extract-record-no-hardcoded-texture-fields.test.d.ts.map +0 -1
  348. package/dist/__tests__/extract-skin-mismatch.unit.test.d.ts +0 -2
  349. package/dist/__tests__/extract-skin-mismatch.unit.test.d.ts.map +0 -1
  350. package/dist/__tests__/fetch-binary-decompress.test.d.ts +0 -2
  351. package/dist/__tests__/fetch-binary-decompress.test.d.ts.map +0 -1
  352. package/dist/__tests__/four-path-compression.integration.test.d.ts +0 -2
  353. package/dist/__tests__/four-path-compression.integration.test.d.ts.map +0 -1
  354. package/dist/__tests__/frame-targets-shadow-regression.unit.test.d.ts +0 -2
  355. package/dist/__tests__/frame-targets-shadow-regression.unit.test.d.ts.map +0 -1
  356. package/dist/__tests__/fullscreen-feature-host.dawn.test.d.ts +0 -2
  357. package/dist/__tests__/fullscreen-feature-host.dawn.test.d.ts.map +0 -1
  358. package/dist/__tests__/fullscreen-post-bgl-depth.test.d.ts +0 -2
  359. package/dist/__tests__/fullscreen-post-bgl-depth.test.d.ts.map +0 -1
  360. package/dist/__tests__/fullscreen-post-depth-params-arity.test.d.ts +0 -2
  361. package/dist/__tests__/fullscreen-post-depth-params-arity.test.d.ts.map +0 -1
  362. package/dist/__tests__/fullscreen-post-process-pass.dawn.test.d.ts +0 -2
  363. package/dist/__tests__/fullscreen-post-process-pass.dawn.test.d.ts.map +0 -1
  364. package/dist/__tests__/fullscreen-post-process-pass.unit.test.d.ts +0 -2
  365. package/dist/__tests__/fullscreen-post-process-pass.unit.test.d.ts.map +0 -1
  366. package/dist/__tests__/fxaa-pixel-diff.dawn.test.d.ts +0 -2
  367. package/dist/__tests__/fxaa-pixel-diff.dawn.test.d.ts.map +0 -1
  368. package/dist/__tests__/fxaa-validation-and-resize.dawn.test.d.ts +0 -2
  369. package/dist/__tests__/fxaa-validation-and-resize.dawn.test.d.ts.map +0 -1
  370. package/dist/__tests__/fxaa-zero-overhead.dawn.test.d.ts +0 -2
  371. package/dist/__tests__/fxaa-zero-overhead.dawn.test.d.ts.map +0 -1
  372. package/dist/__tests__/geometry.unit.test.d.ts +0 -2
  373. package/dist/__tests__/geometry.unit.test.d.ts.map +0 -1
  374. package/dist/__tests__/glyph-tilemap-worldid.test.d.ts +0 -2
  375. package/dist/__tests__/glyph-tilemap-worldid.test.d.ts.map +0 -1
  376. package/dist/__tests__/gpu-resource-cow-survivor.test.d.ts +0 -2
  377. package/dist/__tests__/gpu-resource-cow-survivor.test.d.ts.map +0 -1
  378. package/dist/__tests__/guid-for-asset.unit.test.d.ts +0 -2
  379. package/dist/__tests__/guid-for-asset.unit.test.d.ts.map +0 -1
  380. package/dist/__tests__/handle-migration.test.d.ts +0 -2
  381. package/dist/__tests__/handle-migration.test.d.ts.map +0 -1
  382. package/dist/__tests__/hello-tilemap-smoke-upgrade.unit.test.d.ts +0 -2
  383. package/dist/__tests__/hello-tilemap-smoke-upgrade.unit.test.d.ts.map +0 -1
  384. package/dist/__tests__/helpers/mock-shader-registry.d.ts +0 -11
  385. package/dist/__tests__/helpers/mock-shader-registry.d.ts.map +0 -1
  386. package/dist/__tests__/helpers/register-runtime-components.d.ts +0 -4
  387. package/dist/__tests__/helpers/register-runtime-components.d.ts.map +0 -1
  388. package/dist/__tests__/helpers/register-scene-components.d.ts +0 -4
  389. package/dist/__tests__/helpers/register-scene-components.d.ts.map +0 -1
  390. package/dist/__tests__/helpers/standard-material-manifest.d.ts +0 -12
  391. package/dist/__tests__/helpers/standard-material-manifest.d.ts.map +0 -1
  392. package/dist/__tests__/helpers/tilemap-assets.d.ts +0 -6
  393. package/dist/__tests__/helpers/tilemap-assets.d.ts.map +0 -1
  394. package/dist/__tests__/host-custom-kind-contract.test-d.d.ts +0 -2
  395. package/dist/__tests__/host-custom-kind-contract.test-d.d.ts.map +0 -1
  396. package/dist/__tests__/host-custom-kind-contract.test.d.ts +0 -2
  397. package/dist/__tests__/host-custom-kind-contract.test.d.ts.map +0 -1
  398. package/dist/__tests__/inspect-name.test.d.ts +0 -2
  399. package/dist/__tests__/inspect-name.test.d.ts.map +0 -1
  400. package/dist/__tests__/instances.test-d.d.ts +0 -2
  401. package/dist/__tests__/instances.test-d.d.ts.map +0 -1
  402. package/dist/__tests__/instantiate-mount-deferred-wiring.test.d.ts +0 -2
  403. package/dist/__tests__/instantiate-mount-deferred-wiring.test.d.ts.map +0 -1
  404. package/dist/__tests__/light-attenuation-formula.test.d.ts +0 -2
  405. package/dist/__tests__/light-attenuation-formula.test.d.ts.map +0 -1
  406. package/dist/__tests__/light-casters-9-light.browser.test.d.ts +0 -2
  407. package/dist/__tests__/light-casters-9-light.browser.test.d.ts.map +0 -1
  408. package/dist/__tests__/light-gpu-byte-neutral.unit.test.d.ts +0 -2
  409. package/dist/__tests__/light-gpu-byte-neutral.unit.test.d.ts.map +0 -1
  410. package/dist/__tests__/light-snapshot.test-d.d.ts +0 -2
  411. package/dist/__tests__/light-snapshot.test-d.d.ts.map +0 -1
  412. package/dist/__tests__/lights-preservation.fixup.test.d.ts +0 -2
  413. package/dist/__tests__/lights-preservation.fixup.test.d.ts.map +0 -1
  414. package/dist/__tests__/lights-vec-negative.unit.test.d.ts +0 -2
  415. package/dist/__tests__/lights-vec-negative.unit.test.d.ts.map +0 -1
  416. package/dist/__tests__/lights.unit.test.d.ts +0 -2
  417. package/dist/__tests__/lights.unit.test.d.ts.map +0 -1
  418. package/dist/__tests__/loadbyguid-payload.unit.test.d.ts +0 -2
  419. package/dist/__tests__/loadbyguid-payload.unit.test.d.ts.map +0 -1
  420. package/dist/__tests__/loadbyguid-texture-intern.unit.test.d.ts +0 -2
  421. package/dist/__tests__/loadbyguid-texture-intern.unit.test.d.ts.map +0 -1
  422. package/dist/__tests__/loader-extract-graceful.test.d.ts +0 -2
  423. package/dist/__tests__/loader-extract-graceful.test.d.ts.map +0 -1
  424. package/dist/__tests__/loader-name-survival.test.d.ts +0 -2
  425. package/dist/__tests__/loader-name-survival.test.d.ts.map +0 -1
  426. package/dist/__tests__/m3-vec-negative.unit.test.d.ts +0 -2
  427. package/dist/__tests__/m3-vec-negative.unit.test.d.ts.map +0 -1
  428. package/dist/__tests__/m5-browser-dawn-sweep.integration.test.d.ts +0 -2
  429. package/dist/__tests__/m5-browser-dawn-sweep.integration.test.d.ts.map +0 -1
  430. package/dist/__tests__/material-texture-dimension-mismatch.unit.test.d.ts +0 -2
  431. package/dist/__tests__/material-texture-dimension-mismatch.unit.test.d.ts.map +0 -1
  432. package/dist/__tests__/material-texture-uv-scale.unit.test.d.ts +0 -2
  433. package/dist/__tests__/material-texture-uv-scale.unit.test.d.ts.map +0 -1
  434. package/dist/__tests__/materials.unit.test.d.ts +0 -2
  435. package/dist/__tests__/materials.unit.test.d.ts.map +0 -1
  436. package/dist/__tests__/mesh-bin-contract.test.d.ts +0 -2
  437. package/dist/__tests__/mesh-bin-contract.test.d.ts.map +0 -1
  438. package/dist/__tests__/mesh-bin-skin-roundtrip.unit.test.d.ts +0 -2
  439. package/dist/__tests__/mesh-bin-skin-roundtrip.unit.test.d.ts.map +0 -1
  440. package/dist/__tests__/mesh-bin.test.d.ts +0 -2
  441. package/dist/__tests__/mesh-bin.test.d.ts.map +0 -1
  442. package/dist/__tests__/mesh-loader-skin-contract.unit.test.d.ts +0 -2
  443. package/dist/__tests__/mesh-loader-skin-contract.unit.test.d.ts.map +0 -1
  444. package/dist/__tests__/mesh-ssbo-grow.unit.test.d.ts +0 -2
  445. package/dist/__tests__/mesh-ssbo-grow.unit.test.d.ts.map +0 -1
  446. package/dist/__tests__/mip-gate.unit.test.d.ts +0 -2
  447. package/dist/__tests__/mip-gate.unit.test.d.ts.map +0 -1
  448. package/dist/__tests__/msaa-sprite-pixel-diff.dawn.test.d.ts +0 -2
  449. package/dist/__tests__/msaa-sprite-pixel-diff.dawn.test.d.ts.map +0 -1
  450. package/dist/__tests__/multi-uv-8set.e2e.dawn.test.d.ts +0 -2
  451. package/dist/__tests__/multi-uv-8set.e2e.dawn.test.d.ts.map +0 -1
  452. package/dist/__tests__/name.unit.test.d.ts +0 -2
  453. package/dist/__tests__/name.unit.test.d.ts.map +0 -1
  454. package/dist/__tests__/new-kind-refs-contract.test.d.ts +0 -2
  455. package/dist/__tests__/new-kind-refs-contract.test.d.ts.map +0 -1
  456. package/dist/__tests__/package-promotion.test.d.ts +0 -2
  457. package/dist/__tests__/package-promotion.test.d.ts.map +0 -1
  458. package/dist/__tests__/package-rename.test.d.ts +0 -2
  459. package/dist/__tests__/package-rename.test.d.ts.map +0 -1
  460. package/dist/__tests__/pass-selector.unit.test.d.ts +0 -2
  461. package/dist/__tests__/pass-selector.unit.test.d.ts.map +0 -1
  462. package/dist/__tests__/pbr-pipeline.unit.test.d.ts +0 -2
  463. package/dist/__tests__/pbr-pipeline.unit.test.d.ts.map +0 -1
  464. package/dist/__tests__/pipeline-builder-msaa.unit.test.d.ts +0 -2
  465. package/dist/__tests__/pipeline-builder-msaa.unit.test.d.ts.map +0 -1
  466. package/dist/__tests__/pipeline-cache-keying.unit.test.d.ts +0 -2
  467. package/dist/__tests__/pipeline-cache-keying.unit.test.d.ts.map +0 -1
  468. package/dist/__tests__/pipeline-spec.test.d.ts +0 -2
  469. package/dist/__tests__/pipeline-spec.test.d.ts.map +0 -1
  470. package/dist/__tests__/pipeline.unit.test.d.ts +0 -2
  471. package/dist/__tests__/pipeline.unit.test.d.ts.map +0 -1
  472. package/dist/__tests__/point-light-shadow.browser.test.d.ts +0 -2
  473. package/dist/__tests__/point-light-shadow.browser.test.d.ts.map +0 -1
  474. package/dist/__tests__/point-light-shadow.dawn.test.d.ts +0 -2
  475. package/dist/__tests__/point-light-shadow.dawn.test.d.ts.map +0 -1
  476. package/dist/__tests__/point-light-shadow.unit.test.d.ts +0 -2
  477. package/dist/__tests__/point-light-shadow.unit.test.d.ts.map +0 -1
  478. package/dist/__tests__/post-process-error-codes.unit.test.d.ts +0 -2
  479. package/dist/__tests__/post-process-error-codes.unit.test.d.ts.map +0 -1
  480. package/dist/__tests__/post-process-params-component.unit.test.d.ts +0 -2
  481. package/dist/__tests__/post-process-params-component.unit.test.d.ts.map +0 -1
  482. package/dist/__tests__/post-process-params-extract.unit.test.d.ts +0 -2
  483. package/dist/__tests__/post-process-params-extract.unit.test.d.ts.map +0 -1
  484. package/dist/__tests__/postprocess-camera-consistency.test.d.ts +0 -2
  485. package/dist/__tests__/postprocess-camera-consistency.test.d.ts.map +0 -1
  486. package/dist/__tests__/profiler-assembly.integration.test.d.ts +0 -2
  487. package/dist/__tests__/profiler-assembly.integration.test.d.ts.map +0 -1
  488. package/dist/__tests__/propagate-transforms.dawn.test.d.ts +0 -2
  489. package/dist/__tests__/propagate-transforms.dawn.test.d.ts.map +0 -1
  490. package/dist/__tests__/record-worldid-isolation.test.d.ts +0 -2
  491. package/dist/__tests__/record-worldid-isolation.test.d.ts.map +0 -1
  492. package/dist/__tests__/recover-error-exhaustive.test-d.d.ts +0 -11
  493. package/dist/__tests__/recover-error-exhaustive.test-d.d.ts.map +0 -1
  494. package/dist/__tests__/render-environment-consumer.integration.test.d.ts +0 -2
  495. package/dist/__tests__/render-environment-consumer.integration.test.d.ts.map +0 -1
  496. package/dist/__tests__/render-error-exhaustive.test-d.d.ts +0 -11
  497. package/dist/__tests__/render-error-exhaustive.test-d.d.ts.map +0 -1
  498. package/dist/__tests__/render-feature-assembly.test-d.d.ts +0 -2
  499. package/dist/__tests__/render-feature-assembly.test-d.d.ts.map +0 -1
  500. package/dist/__tests__/render-feature-prepared-graphics-docs.unit.test.d.ts +0 -2
  501. package/dist/__tests__/render-feature-prepared-graphics-docs.unit.test.d.ts.map +0 -1
  502. package/dist/__tests__/render-feature-prepared-graphics.browser.test.d.ts +0 -2
  503. package/dist/__tests__/render-feature-prepared-graphics.browser.test.d.ts.map +0 -1
  504. package/dist/__tests__/render-feature-prepared-graphics.dawn.test.d.ts +0 -2
  505. package/dist/__tests__/render-feature-prepared-graphics.dawn.test.d.ts.map +0 -1
  506. package/dist/__tests__/render-feature-prepared-graphics.fixture.d.ts +0 -10
  507. package/dist/__tests__/render-feature-prepared-graphics.fixture.d.ts.map +0 -1
  508. package/dist/__tests__/render-feature-prepared-graphics.integration.test.d.ts +0 -2
  509. package/dist/__tests__/render-feature-prepared-graphics.integration.test.d.ts.map +0 -1
  510. package/dist/__tests__/render-feature-prepared-graphics.regression.integration.test.d.ts +0 -2
  511. package/dist/__tests__/render-feature-prepared-graphics.regression.integration.test.d.ts.map +0 -1
  512. package/dist/__tests__/render-feature-recover.integration.test.d.ts +0 -2
  513. package/dist/__tests__/render-feature-recover.integration.test.d.ts.map +0 -1
  514. package/dist/__tests__/render-feature-runtime-surface.test-d.d.ts +0 -2
  515. package/dist/__tests__/render-feature-runtime-surface.test-d.d.ts.map +0 -1
  516. package/dist/__tests__/render-schema-consumer.integration.test.d.ts +0 -2
  517. package/dist/__tests__/render-schema-consumer.integration.test.d.ts.map +0 -1
  518. package/dist/__tests__/render-schema-owner-boundary.unit.test.d.ts +0 -2
  519. package/dist/__tests__/render-schema-owner-boundary.unit.test.d.ts.map +0 -1
  520. package/dist/__tests__/render-system-cross-world-overlay-queue.test.d.ts +0 -2
  521. package/dist/__tests__/render-system-cross-world-overlay-queue.test.d.ts.map +0 -1
  522. package/dist/__tests__/render-system-extract-dispatch-ordering.test.d.ts +0 -2
  523. package/dist/__tests__/render-system-extract-dispatch-ordering.test.d.ts.map +0 -1
  524. package/dist/__tests__/render-system-extract.test.d.ts +0 -2
  525. package/dist/__tests__/render-system-extract.test.d.ts.map +0 -1
  526. package/dist/__tests__/render-system-extract.unit.test.d.ts +0 -2
  527. package/dist/__tests__/render-system-extract.unit.test.d.ts.map +0 -1
  528. package/dist/__tests__/render-system-fold-bucket.unit.test.d.ts +0 -2
  529. package/dist/__tests__/render-system-fold-bucket.unit.test.d.ts.map +0 -1
  530. package/dist/__tests__/render-system-fold-fallback.unit.test.d.ts +0 -2
  531. package/dist/__tests__/render-system-fold-fallback.unit.test.d.ts.map +0 -1
  532. package/dist/__tests__/render-system-fold-material.unit.test.d.ts +0 -2
  533. package/dist/__tests__/render-system-fold-material.unit.test.d.ts.map +0 -1
  534. package/dist/__tests__/render-system-fold-metrics.unit.test.d.ts +0 -2
  535. package/dist/__tests__/render-system-fold-metrics.unit.test.d.ts.map +0 -1
  536. package/dist/__tests__/render-system-fold-modegate.unit.test.d.ts +0 -2
  537. package/dist/__tests__/render-system-fold-modegate.unit.test.d.ts.map +0 -1
  538. package/dist/__tests__/render-system-fold-scene-instances.unit.test.d.ts +0 -2
  539. package/dist/__tests__/render-system-fold-scene-instances.unit.test.d.ts.map +0 -1
  540. package/dist/__tests__/render-system-fold.dawn.test.d.ts +0 -2
  541. package/dist/__tests__/render-system-fold.dawn.test.d.ts.map +0 -1
  542. package/dist/__tests__/render-system-mega.test.d.ts +0 -2
  543. package/dist/__tests__/render-system-mega.test.d.ts.map +0 -1
  544. package/dist/__tests__/render-system-owner-split-contract.test.d.ts +0 -2
  545. package/dist/__tests__/render-system-owner-split-contract.test.d.ts.map +0 -1
  546. package/dist/__tests__/render-system-record-multi-material-textureview.test.d.ts +0 -2
  547. package/dist/__tests__/render-system-record-multi-material-textureview.test.d.ts.map +0 -1
  548. package/dist/__tests__/render-system-record-per-submesh-transparency.test.d.ts +0 -2
  549. package/dist/__tests__/render-system-record-per-submesh-transparency.test.d.ts.map +0 -1
  550. package/dist/__tests__/render-system-record.test.d.ts +0 -2
  551. package/dist/__tests__/render-system-record.test.d.ts.map +0 -1
  552. package/dist/__tests__/render-system-record.unit.test.d.ts +0 -2
  553. package/dist/__tests__/render-system-record.unit.test.d.ts.map +0 -1
  554. package/dist/__tests__/render-system-skin-bg.unit.test.d.ts +0 -2
  555. package/dist/__tests__/render-system-skin-bg.unit.test.d.ts.map +0 -1
  556. package/dist/__tests__/renderer-consumer.test-d.d.ts +0 -2
  557. package/dist/__tests__/renderer-consumer.test-d.d.ts.map +0 -1
  558. package/dist/__tests__/renderer-health.unit.test.d.ts +0 -2
  559. package/dist/__tests__/renderer-health.unit.test.d.ts.map +0 -1
  560. package/dist/__tests__/renderer-host-fallback.unit.test.d.ts +0 -2
  561. package/dist/__tests__/renderer-host-fallback.unit.test.d.ts.map +0 -1
  562. package/dist/__tests__/renderer-lifecycle.integration.test.d.ts +0 -2
  563. package/dist/__tests__/renderer-lifecycle.integration.test.d.ts.map +0 -1
  564. package/dist/__tests__/renderer-recover.unit.test.d.ts +0 -2
  565. package/dist/__tests__/renderer-recover.unit.test.d.ts.map +0 -1
  566. package/dist/__tests__/renderer-result.test-d.d.ts +0 -2
  567. package/dist/__tests__/renderer-result.test-d.d.ts.map +0 -1
  568. package/dist/__tests__/renderer-surface.unit.test.d.ts +0 -2
  569. package/dist/__tests__/renderer-surface.unit.test.d.ts.map +0 -1
  570. package/dist/__tests__/renderer-test-utils.d.ts +0 -10
  571. package/dist/__tests__/renderer-test-utils.d.ts.map +0 -1
  572. package/dist/__tests__/renderer.test-d.d.ts +0 -2
  573. package/dist/__tests__/renderer.test-d.d.ts.map +0 -1
  574. package/dist/__tests__/resolve-asset-handle-err.test.d.ts +0 -2
  575. package/dist/__tests__/resolve-asset-handle-err.test.d.ts.map +0 -1
  576. package/dist/__tests__/resolve-asset-handle.unit.test.d.ts +0 -2
  577. package/dist/__tests__/resolve-asset-handle.unit.test.d.ts.map +0 -1
  578. package/dist/__tests__/resolve-depth-only-view.test.d.ts +0 -2
  579. package/dist/__tests__/resolve-depth-only-view.test.d.ts.map +0 -1
  580. package/dist/__tests__/resolveName-fallback.test.d.ts +0 -2
  581. package/dist/__tests__/resolveName-fallback.test.d.ts.map +0 -1
  582. package/dist/__tests__/resolveName-null-package.test.d.ts +0 -2
  583. package/dist/__tests__/resolveName-null-package.test.d.ts.map +0 -1
  584. package/dist/__tests__/resolveName-unified-entry.test.d.ts +0 -2
  585. package/dist/__tests__/resolveName-unified-entry.test.d.ts.map +0 -1
  586. package/dist/__tests__/resolveName.test.d.ts +0 -2
  587. package/dist/__tests__/resolveName.test.d.ts.map +0 -1
  588. package/dist/__tests__/rhi-null-command-flow.unit.test.d.ts +0 -2
  589. package/dist/__tests__/rhi-null-command-flow.unit.test.d.ts.map +0 -1
  590. package/dist/__tests__/rhi-null-noop-behavior.unit.test.d.ts +0 -2
  591. package/dist/__tests__/rhi-null-noop-behavior.unit.test.d.ts.map +0 -1
  592. package/dist/__tests__/rhi-null-renderer-lifecycle.unit.test.d.ts +0 -2
  593. package/dist/__tests__/rhi-null-renderer-lifecycle.unit.test.d.ts.map +0 -1
  594. package/dist/__tests__/roots-to-scene-asset.test.d.ts +0 -2
  595. package/dist/__tests__/roots-to-scene-asset.test.d.ts.map +0 -1
  596. package/dist/__tests__/roundtrip-primitive.test.d.ts +0 -2
  597. package/dist/__tests__/roundtrip-primitive.test.d.ts.map +0 -1
  598. package/dist/__tests__/runtime-authority-scan.unit.test.d.ts +0 -2
  599. package/dist/__tests__/runtime-authority-scan.unit.test.d.ts.map +0 -1
  600. package/dist/__tests__/runtime-domain-residue.unit.test.d.ts +0 -2
  601. package/dist/__tests__/runtime-domain-residue.unit.test.d.ts.map +0 -1
  602. package/dist/__tests__/scene-bare-guid-refs-instantiate.test.d.ts +0 -2
  603. package/dist/__tests__/scene-bare-guid-refs-instantiate.test.d.ts.map +0 -1
  604. package/dist/__tests__/scene-equirect-roundtrip.test.d.ts +0 -2
  605. package/dist/__tests__/scene-equirect-roundtrip.test.d.ts.map +0 -1
  606. package/dist/__tests__/scene-instance-authoring.integration.test.d.ts +0 -2
  607. package/dist/__tests__/scene-instance-authoring.integration.test.d.ts.map +0 -1
  608. package/dist/__tests__/scene-instance-bridge.integration.test.d.ts +0 -2
  609. package/dist/__tests__/scene-instance-bridge.integration.test.d.ts.map +0 -1
  610. package/dist/__tests__/scene-instance-component.test.d.ts +0 -2
  611. package/dist/__tests__/scene-instance-component.test.d.ts.map +0 -1
  612. package/dist/__tests__/scene-instantiate-cycle-runtime.test.d.ts +0 -2
  613. package/dist/__tests__/scene-instantiate-cycle-runtime.test.d.ts.map +0 -1
  614. package/dist/__tests__/scene-mount-fixed-point.test.d.ts +0 -2
  615. package/dist/__tests__/scene-mount-fixed-point.test.d.ts.map +0 -1
  616. package/dist/__tests__/scene-mount-roundtrip.test.d.ts +0 -2
  617. package/dist/__tests__/scene-mount-roundtrip.test.d.ts.map +0 -1
  618. package/dist/__tests__/scene-mount-wrapper-roundtrip.test.d.ts +0 -2
  619. package/dist/__tests__/scene-mount-wrapper-roundtrip.test.d.ts.map +0 -1
  620. package/dist/__tests__/scene-sugar-instantiate.test.d.ts +0 -2
  621. package/dist/__tests__/scene-sugar-instantiate.test.d.ts.map +0 -1
  622. package/dist/__tests__/serialize-mounts-roundtrip.test.d.ts +0 -2
  623. package/dist/__tests__/serialize-mounts-roundtrip.test.d.ts.map +0 -1
  624. package/dist/__tests__/serialize-scene-asset.test.d.ts +0 -2
  625. package/dist/__tests__/serialize-scene-asset.test.d.ts.map +0 -1
  626. package/dist/__tests__/shadow-caster-empty-schema.test.d.ts +0 -2
  627. package/dist/__tests__/shadow-caster-empty-schema.test.d.ts.map +0 -1
  628. package/dist/__tests__/shadow-csm-atlas.test.d.ts +0 -2
  629. package/dist/__tests__/shadow-csm-atlas.test.d.ts.map +0 -1
  630. package/dist/__tests__/shadow-csm-blend.dawn.test.d.ts +0 -2
  631. package/dist/__tests__/shadow-csm-blend.dawn.test.d.ts.map +0 -1
  632. package/dist/__tests__/shadow-csm-cascade-loadop.test.d.ts +0 -2
  633. package/dist/__tests__/shadow-csm-cascade-loadop.test.d.ts.map +0 -1
  634. package/dist/__tests__/shadow-csm-component.test.d.ts +0 -2
  635. package/dist/__tests__/shadow-csm-component.test.d.ts.map +0 -1
  636. package/dist/__tests__/shadow-csm-extract.test.d.ts +0 -2
  637. package/dist/__tests__/shadow-csm-extract.test.d.ts.map +0 -1
  638. package/dist/__tests__/shadow-csm-orthoz.test.d.ts +0 -2
  639. package/dist/__tests__/shadow-csm-orthoz.test.d.ts.map +0 -1
  640. package/dist/__tests__/shadow-csm-runtime-vary.dawn.test.d.ts +0 -2
  641. package/dist/__tests__/shadow-csm-runtime-vary.dawn.test.d.ts.map +0 -1
  642. package/dist/__tests__/shadow-csm-shader.dawn.test.d.ts +0 -2
  643. package/dist/__tests__/shadow-csm-shader.dawn.test.d.ts.map +0 -1
  644. package/dist/__tests__/shadow-csm-tile-consistency.test.d.ts +0 -2
  645. package/dist/__tests__/shadow-csm-tile-consistency.test.d.ts.map +0 -1
  646. package/dist/__tests__/shadow-csm-ubo.dawn.test.d.ts +0 -2
  647. package/dist/__tests__/shadow-csm-ubo.dawn.test.d.ts.map +0 -1
  648. package/dist/__tests__/shadow-csm-ubo.test.d.ts +0 -2
  649. package/dist/__tests__/shadow-csm-ubo.test.d.ts.map +0 -1
  650. package/dist/__tests__/shadow-csm-viewport.browser.test.d.ts +0 -2
  651. package/dist/__tests__/shadow-csm-viewport.browser.test.d.ts.map +0 -1
  652. package/dist/__tests__/shadow-fields-observable.dawn.test.d.ts +0 -2
  653. package/dist/__tests__/shadow-fields-observable.dawn.test.d.ts.map +0 -1
  654. package/dist/__tests__/shadow-m1.dawn.test.d.ts +0 -2
  655. package/dist/__tests__/shadow-m1.dawn.test.d.ts.map +0 -1
  656. package/dist/__tests__/shadow-mesh-ssbo-order.test.d.ts +0 -2
  657. package/dist/__tests__/shadow-mesh-ssbo-order.test.d.ts.map +0 -1
  658. package/dist/__tests__/skin-error-exhaustive.test-d.d.ts +0 -11
  659. package/dist/__tests__/skin-error-exhaustive.test-d.d.ts.map +0 -1
  660. package/dist/__tests__/skin-errors.unit.test.d.ts +0 -2
  661. package/dist/__tests__/skin-errors.unit.test.d.ts.map +0 -1
  662. package/dist/__tests__/skin-extract-getarrayview-count.unit.test.d.ts +0 -2
  663. package/dist/__tests__/skin-extract-getarrayview-count.unit.test.d.ts.map +0 -1
  664. package/dist/__tests__/skin-parented-double-transform.test.d.ts +0 -14
  665. package/dist/__tests__/skin-parented-double-transform.test.d.ts.map +0 -1
  666. package/dist/__tests__/skinned-shadow-mixed.dawn.test.d.ts +0 -2
  667. package/dist/__tests__/skinned-shadow-mixed.dawn.test.d.ts.map +0 -1
  668. package/dist/__tests__/skylight-lazy-projection.test.d.ts +0 -2
  669. package/dist/__tests__/skylight-lazy-projection.test.d.ts.map +0 -1
  670. package/dist/__tests__/sparse-tag-scene-roundtrip.test.d.ts +0 -2
  671. package/dist/__tests__/sparse-tag-scene-roundtrip.test.d.ts.map +0 -1
  672. package/dist/__tests__/sprite-cullmode-flip.dawn.test.d.ts +0 -2
  673. package/dist/__tests__/sprite-cullmode-flip.dawn.test.d.ts.map +0 -1
  674. package/dist/__tests__/sprite-lit-bgl-byte-identical.test.d.ts +0 -2
  675. package/dist/__tests__/sprite-lit-bgl-byte-identical.test.d.ts.map +0 -1
  676. package/dist/__tests__/sprite-lit-extract-branch.test.d.ts +0 -2
  677. package/dist/__tests__/sprite-lit-extract-branch.test.d.ts.map +0 -1
  678. package/dist/__tests__/sprite-lit-pipeline-cache-key.test.d.ts +0 -2
  679. package/dist/__tests__/sprite-lit-pipeline-cache-key.test.d.ts.map +0 -1
  680. package/dist/__tests__/sprite-param-values.test-d.d.ts +0 -2
  681. package/dist/__tests__/sprite-param-values.test-d.d.ts.map +0 -1
  682. package/dist/__tests__/ssao-bgl.test.d.ts +0 -2
  683. package/dist/__tests__/ssao-bgl.test.d.ts.map +0 -1
  684. package/dist/__tests__/ssao-buffers.test.d.ts +0 -2
  685. package/dist/__tests__/ssao-buffers.test.d.ts.map +0 -1
  686. package/dist/__tests__/ssao-data.test.d.ts +0 -2
  687. package/dist/__tests__/ssao-data.test.d.ts.map +0 -1
  688. package/dist/__tests__/ssao-errors.test.d.ts +0 -2
  689. package/dist/__tests__/ssao-errors.test.d.ts.map +0 -1
  690. package/dist/__tests__/ssao-manifest.test.d.ts +0 -2
  691. package/dist/__tests__/ssao-manifest.test.d.ts.map +0 -1
  692. package/dist/__tests__/ssao-passes.test.d.ts +0 -2
  693. package/dist/__tests__/ssao-passes.test.d.ts.map +0 -1
  694. package/dist/__tests__/ssao-pipelines.test.d.ts +0 -2
  695. package/dist/__tests__/ssao-pipelines.test.d.ts.map +0 -1
  696. package/dist/__tests__/ssao-uniform-layout.test.d.ts +0 -2
  697. package/dist/__tests__/ssao-uniform-layout.test.d.ts.map +0 -1
  698. package/dist/__tests__/static-rig.integration.test.d.ts +0 -2
  699. package/dist/__tests__/static-rig.integration.test.d.ts.map +0 -1
  700. package/dist/__tests__/stencil-outline-pixel.dawn.test.d.ts +0 -2
  701. package/dist/__tests__/stencil-outline-pixel.dawn.test.d.ts.map +0 -1
  702. package/dist/__tests__/swap-chain-format.unit.test.d.ts +0 -2
  703. package/dist/__tests__/swap-chain-format.unit.test.d.ts.map +0 -1
  704. package/dist/__tests__/systems.unit.test.d.ts +0 -2
  705. package/dist/__tests__/systems.unit.test.d.ts.map +0 -1
  706. package/dist/__tests__/template-game-default-api-contract.test.d.ts +0 -2
  707. package/dist/__tests__/template-game-default-api-contract.test.d.ts.map +0 -1
  708. package/dist/__tests__/text.unit.test.d.ts +0 -2
  709. package/dist/__tests__/text.unit.test.d.ts.map +0 -1
  710. package/dist/__tests__/texture-dimensions.browser.test.d.ts +0 -2
  711. package/dist/__tests__/texture-dimensions.browser.test.d.ts.map +0 -1
  712. package/dist/__tests__/tilemap-childed-despawn.test.d.ts +0 -2
  713. package/dist/__tests__/tilemap-childed-despawn.test.d.ts.map +0 -1
  714. package/dist/__tests__/tilemap-chunk-extract.overhang-bounds.test.d.ts +0 -2
  715. package/dist/__tests__/tilemap-chunk-extract.overhang-bounds.test.d.ts.map +0 -1
  716. package/dist/__tests__/tilemap-chunk-extract.propagate-order.test.d.ts +0 -2
  717. package/dist/__tests__/tilemap-chunk-extract.propagate-order.test.d.ts.map +0 -1
  718. package/dist/__tests__/tilemap-chunk-extract.terrain-rewrite.unit.test.d.ts +0 -2
  719. package/dist/__tests__/tilemap-chunk-extract.terrain-rewrite.unit.test.d.ts.map +0 -1
  720. package/dist/__tests__/tilemap-chunk-extract.test.d.ts +0 -2
  721. package/dist/__tests__/tilemap-chunk-extract.test.d.ts.map +0 -1
  722. package/dist/__tests__/tilemap-chunk-extract.unit.test.d.ts +0 -2
  723. package/dist/__tests__/tilemap-chunk-extract.unit.test.d.ts.map +0 -1
  724. package/dist/__tests__/tilemap-chunk-y-sort-bench.unit.test.d.ts +0 -2
  725. package/dist/__tests__/tilemap-chunk-y-sort-bench.unit.test.d.ts.map +0 -1
  726. package/dist/__tests__/tilemap-dirty-rebuild.test.d.ts +0 -2
  727. package/dist/__tests__/tilemap-dirty-rebuild.test.d.ts.map +0 -1
  728. package/dist/__tests__/tilemap-material-cache.test.d.ts +0 -2
  729. package/dist/__tests__/tilemap-material-cache.test.d.ts.map +0 -1
  730. package/dist/__tests__/tilemap-multi-atlas.test.d.ts +0 -2
  731. package/dist/__tests__/tilemap-multi-atlas.test.d.ts.map +0 -1
  732. package/dist/__tests__/tilemap-owner-boundary.unit.test.d.ts +0 -2
  733. package/dist/__tests__/tilemap-owner-boundary.unit.test.d.ts.map +0 -1
  734. package/dist/__tests__/tilemap-region-pack.test.d.ts +0 -2
  735. package/dist/__tests__/tilemap-region-pack.test.d.ts.map +0 -1
  736. package/dist/__tests__/tilemap-spawn-flip-pivot.test.d.ts +0 -2
  737. package/dist/__tests__/tilemap-spawn-flip-pivot.test.d.ts.map +0 -1
  738. package/dist/__tests__/tilemap-uv-inset.test.d.ts +0 -2
  739. package/dist/__tests__/tilemap-uv-inset.test.d.ts.map +0 -1
  740. package/dist/__tests__/tilemap-validate.test.d.ts +0 -2
  741. package/dist/__tests__/tilemap-validate.test.d.ts.map +0 -1
  742. package/dist/__tests__/tileset-asset-validate.test.d.ts +0 -2
  743. package/dist/__tests__/tileset-asset-validate.test.d.ts.map +0 -1
  744. package/dist/__tests__/transcode-fallback.unit.test.d.ts +0 -2
  745. package/dist/__tests__/transcode-fallback.unit.test.d.ts.map +0 -1
  746. package/dist/__tests__/transform-hierarchy-pixel-diff.dawn.test.d.ts +0 -2
  747. package/dist/__tests__/transform-hierarchy-pixel-diff.dawn.test.d.ts.map +0 -1
  748. package/dist/__tests__/transient-fields-collect.test.d.ts +0 -2
  749. package/dist/__tests__/transient-fields-collect.test.d.ts.map +0 -1
  750. package/dist/__tests__/transient-runtime-behavior.test.d.ts +0 -2
  751. package/dist/__tests__/transient-runtime-behavior.test.d.ts.map +0 -1
  752. package/dist/__tests__/transitional-authoring.integration.test.d.ts +0 -2
  753. package/dist/__tests__/transitional-authoring.integration.test.d.ts.map +0 -1
  754. package/dist/__tests__/transparent-sort-tilemap-sprite-interleave.test.d.ts +0 -2
  755. package/dist/__tests__/transparent-sort-tilemap-sprite-interleave.test.d.ts.map +0 -1
  756. package/dist/__tests__/variant-selection.unit.test.d.ts +0 -2
  757. package/dist/__tests__/variant-selection.unit.test.d.ts.map +0 -1
  758. package/dist/__tests__/vertex-attribute-layout.test.d.ts +0 -2
  759. package/dist/__tests__/vertex-attribute-layout.test.d.ts.map +0 -1
  760. package/dist/__tests__/video-extract-bindgroup.dawn.test.d.ts +0 -2
  761. package/dist/__tests__/video-extract-bindgroup.dawn.test.d.ts.map +0 -1
  762. package/dist/__tests__/video-loader-consumption.test.d.ts +0 -2
  763. package/dist/__tests__/video-loader-consumption.test.d.ts.map +0 -1
  764. package/dist/__tests__/video-loader-smoke.dawn.test.d.ts +0 -2
  765. package/dist/__tests__/video-loader-smoke.dawn.test.d.ts.map +0 -1
  766. package/dist/__tests__/view-ubo-layout.browser.test.d.ts +0 -2
  767. package/dist/__tests__/view-ubo-layout.browser.test.d.ts.map +0 -1
  768. package/dist/__tests__/volumetric-fog-record-recovery.integration.test.d.ts +0 -2
  769. package/dist/__tests__/volumetric-fog-record-recovery.integration.test.d.ts.map +0 -1
  770. package/dist/__tests__/world-entity-key.test.d.ts +0 -2
  771. package/dist/__tests__/world-entity-key.test.d.ts.map +0 -1
  772. package/dist/__tests__/world-scene-despawn.test.d.ts +0 -2
  773. package/dist/__tests__/world-scene-despawn.test.d.ts.map +0 -1
  774. package/dist/__tests__/world-scene-instantiate.test.d.ts +0 -2
  775. package/dist/__tests__/world-scene-instantiate.test.d.ts.map +0 -1
  776. package/dist/__tests__/world-scene-nested.test.d.ts +0 -2
  777. package/dist/__tests__/world-scene-nested.test.d.ts.map +0 -1
  778. package/dist/__tests__/world-scene-override.test.d.ts +0 -2
  779. package/dist/__tests__/world-scene-override.test.d.ts.map +0 -1
  780. package/dist/__tests__/zero-compression-zero-load.integration.test.d.ts +0 -2
  781. package/dist/__tests__/zero-compression-zero-load.integration.test.d.ts.map +0 -1
  782. package/dist/components/__tests__/camera.test-d.d.ts +0 -2
  783. package/dist/components/__tests__/camera.test-d.d.ts.map +0 -1
  784. package/dist/components/__tests__/camera.test.d.ts +0 -2
  785. package/dist/components/__tests__/camera.test.d.ts.map +0 -1
  786. package/dist/components/__tests__/child-of.test.d.ts +0 -2
  787. package/dist/components/__tests__/child-of.test.d.ts.map +0 -1
  788. package/dist/components/__tests__/sprite-animation.test-d.d.ts +0 -2
  789. package/dist/components/__tests__/sprite-animation.test-d.d.ts.map +0 -1
  790. package/dist/components/__tests__/sprite-instances.unit.test.d.ts +0 -2
  791. package/dist/components/__tests__/sprite-instances.unit.test.d.ts.map +0 -1
  792. package/dist/components/__tests__/sprite-region-override.test-d.d.ts +0 -2
  793. package/dist/components/__tests__/sprite-region-override.test-d.d.ts.map +0 -1
  794. package/dist/components/__tests__/tile-layer.test-d.d.ts +0 -2
  795. package/dist/components/__tests__/tile-layer.test-d.d.ts.map +0 -1
  796. package/dist/components/__tests__/tile-layer.unit.test.d.ts +0 -2
  797. package/dist/components/__tests__/tile-layer.unit.test.d.ts.map +0 -1
  798. package/dist/components/__tests__/tilemap.test-d.d.ts +0 -2
  799. package/dist/components/__tests__/tilemap.test-d.d.ts.map +0 -1
  800. package/dist/components/__tests__/transform-vec-schema.test.d.ts +0 -2
  801. package/dist/components/__tests__/transform-vec-schema.test.d.ts.map +0 -1
  802. package/dist/scene-instances/__tests__/post-spawn-resolve-joints.unit.test.d.ts +0 -2
  803. package/dist/scene-instances/__tests__/post-spawn-resolve-joints.unit.test.d.ts.map +0 -1
  804. package/dist/systems/__tests__/_xorshift.d.ts +0 -28
  805. package/dist/systems/__tests__/_xorshift.d.ts.map +0 -1
  806. package/dist/systems/__tests__/argsort-in-place.test.d.ts +0 -2
  807. package/dist/systems/__tests__/argsort-in-place.test.d.ts.map +0 -1
  808. package/dist/systems/__tests__/transparent-sort.bench.d.ts +0 -2
  809. package/dist/systems/__tests__/transparent-sort.bench.d.ts.map +0 -1
  810. package/src/__tests__/asset.unit.test.ts +0 -7113
  811. package/src/__tests__/pipeline.unit.test.ts +0 -5279
  812. package/src/__tests__/systems.unit.test.ts +0 -9061
@@ -126,7 +126,7 @@ async function readbackRgba16f(
126
126
  texture: GPUTexture,
127
127
  arrayLayer: number,
128
128
  mipLevel: number,
129
- ): Promise<number[]> {
129
+ ): Promise<{ values: number[]; rawBytes: number[] }> {
130
130
  // Read one pixel from (0,0) of (face=arrayLayer, mip=mipLevel).
131
131
  const bytesPerRow = 256;
132
132
  const buffer = device.createBuffer({
@@ -142,7 +142,8 @@ async function readbackRgba16f(
142
142
  device.queue.submit([encoder.finish()]);
143
143
  await buffer.mapAsync(0x0001 /* MAP_READ */);
144
144
  const range = buffer.getMappedRange();
145
- const dv = new DataView(range.slice(0));
145
+ const raw = new Uint8Array(range.slice(0));
146
+ const dv = new DataView(raw.buffer);
146
147
  buffer.unmap();
147
148
  const f16ToF32 = (u16: number) => {
148
149
  const sign = (u16 & 0x8000) >> 15;
@@ -152,12 +153,129 @@ async function readbackRgba16f(
152
153
  if (exp === 0x1f) return frac ? Number.NaN : (sign ? -1 : 1) * Number.POSITIVE_INFINITY;
153
154
  return (sign ? -1 : 1) * 2 ** (exp - 15) * (1 + frac / 1024);
154
155
  };
155
- return [
156
- f16ToF32(dv.getUint16(0, true)),
157
- f16ToF32(dv.getUint16(2, true)),
158
- f16ToF32(dv.getUint16(4, true)),
159
- f16ToF32(dv.getUint16(6, true)),
160
- ];
156
+ return {
157
+ values: [
158
+ f16ToF32(dv.getUint16(0, true)),
159
+ f16ToF32(dv.getUint16(2, true)),
160
+ f16ToF32(dv.getUint16(4, true)),
161
+ f16ToF32(dv.getUint16(6, true)),
162
+ ],
163
+ rawBytes: [...raw.slice(0, 8)],
164
+ };
165
+ }
166
+
167
+ interface TextureReadbackSpec {
168
+ readonly label: string;
169
+ readonly texture: GPUTexture;
170
+ readonly width: number;
171
+ readonly height: number;
172
+ readonly faces: number;
173
+ readonly mipLevels: number;
174
+ readonly identity: string;
175
+ }
176
+
177
+ /**
178
+ * Submit all subresource copies before mapping any staging buffer. This keeps
179
+ * the readback observational: no producer pass is interrupted by a map/wait.
180
+ */
181
+ async function assertFiniteTextureRgba16f(
182
+ device: GPUDevice,
183
+ spec: TextureReadbackSpec,
184
+ ): Promise<void> {
185
+ const bytesPerPixel = 8;
186
+ const parts: Array<{
187
+ readonly buffer: GPUBuffer;
188
+ readonly width: number;
189
+ readonly height: number;
190
+ readonly face: number;
191
+ readonly mip: number;
192
+ readonly rowPitch: number;
193
+ }> = [];
194
+ const encoder = device.createCommandEncoder({ label: `${spec.label}-full-readback` });
195
+ for (let mip = 0; mip < spec.mipLevels; mip += 1) {
196
+ const width = Math.max(1, spec.width >> mip);
197
+ const height = Math.max(1, spec.height >> mip);
198
+ const rowPitch = Math.ceil((width * bytesPerPixel) / 256) * 256;
199
+ for (let face = 0; face < spec.faces; face += 1) {
200
+ const buffer = device.createBuffer({
201
+ label: `${spec.label}-readback-face${face}-mip${mip}`,
202
+ size: rowPitch * height,
203
+ usage: 0x0001 | 0x0008,
204
+ });
205
+ encoder.copyTextureToBuffer(
206
+ { texture: spec.texture, mipLevel: mip, origin: { x: 0, y: 0, z: face } },
207
+ { buffer, bytesPerRow: rowPitch },
208
+ { width, height, depthOrArrayLayers: 1 },
209
+ );
210
+ parts.push({ buffer, width, height, face, mip, rowPitch });
211
+ }
212
+ }
213
+ device.queue.submit([encoder.finish()]);
214
+ await Promise.all(parts.map((part) => part.buffer.mapAsync(0x0001)));
215
+ try {
216
+ for (const part of parts) {
217
+ const raw = new Uint8Array(part.buffer.getMappedRange()).slice();
218
+ const view = new DataView(raw.buffer);
219
+ for (let y = 0; y < part.height; y += 1) {
220
+ for (let x = 0; x < part.width; x += 1) {
221
+ const offset = y * part.rowPitch + x * bytesPerPixel;
222
+ for (let channel = 0; channel < 4; channel += 1) {
223
+ const value = f16ToF32(view.getUint16(offset + channel * 2, true));
224
+ if (!Number.isFinite(value)) {
225
+ const rawBytes = [...raw.slice(offset, offset + bytesPerPixel)];
226
+ throw new Error(
227
+ `${spec.label} non-finite sample at texture=${spec.identity}, face=${part.face}, mip=${part.mip}, x=${x}, y=${y}; rawBytes=${rawBytes.join(',')}`,
228
+ );
229
+ }
230
+ }
231
+ }
232
+ }
233
+ }
234
+ } finally {
235
+ for (const part of parts) {
236
+ part.buffer.unmap();
237
+ part.buffer.destroy();
238
+ }
239
+ }
240
+ }
241
+
242
+ function f16ToF32(u16: number): number {
243
+ const sign = (u16 & 0x8000) >> 15;
244
+ const exp = (u16 & 0x7c00) >> 10;
245
+ const frac = u16 & 0x03ff;
246
+ if (exp === 0) return (sign ? -1 : 1) * 2 ** -14 * (frac / 1024);
247
+ if (exp === 0x1f) return frac ? Number.NaN : (sign ? -1 : 1) * Number.POSITIVE_INFINITY;
248
+ return (sign ? -1 : 1) * 2 ** (exp - 15) * (1 + frac / 1024);
249
+ }
250
+
251
+ async function loadPhysicalGuidEquirect(): Promise<EquirectAsset> {
252
+ const fs = await import('node:fs');
253
+ const path = await import('node:path');
254
+ const crypto = await import('node:crypto');
255
+ const here = path.dirname(new URL(import.meta.url).pathname);
256
+ const guid = '019e4a26-3c29-7420-af5d-20f2724a16b0';
257
+ const bodyPath = path.resolve(
258
+ here,
259
+ '../../../../../apps/hello/physical-material/dist/assets',
260
+ `${guid}-body.bin`,
261
+ );
262
+ const raw = (fs.readFileSync as unknown as (path: string) => Uint8Array)(bodyPath);
263
+ const data = new Uint8Array(raw.byteLength);
264
+ data.set(raw);
265
+ const digest = crypto.createHash('sha256').update(data).digest('hex');
266
+ const expected = '391ac77feea42745a6ae6b12d4da46bed90e8af4721525f4def0882c10cd8084';
267
+ if (digest !== expected) throw new Error(`physical HDR body hash mismatch: ${digest}`);
268
+ console.error(
269
+ `[ibl-diagnostic] ${JSON.stringify({ sourceGuid: guid, bodyPath, bodySha256: digest, width: 1600, height: 800, format: 'rgba16float', deviceGeneration: 0 })}`,
270
+ );
271
+ return {
272
+ kind: 'equirect',
273
+ width: 1600,
274
+ height: 800,
275
+ format: 'rgba16float',
276
+ data,
277
+ colorSpace: 'linear',
278
+ };
161
279
  }
162
280
 
163
281
  describe('t51 (M3.5) -- dawn IBL 4-pass non-zero readback', () => {
@@ -184,7 +302,10 @@ describe('t51 (M3.5) -- dawn IBL 4-pass non-zero readback', () => {
184
302
  const scope = DeviceScope.create(0, 'ibl-dawn-test');
185
303
  store.bindDeviceScope(scope);
186
304
  const world = new World();
187
- const equirect = makeWhiteEquirect();
305
+ const equirect =
306
+ process.env.FORGEAX_IBL_REAL_SOURCE === '1'
307
+ ? await loadPhysicalGuidEquirect()
308
+ : makeWhiteEquirect();
188
309
  const equirectHandle = world.allocSharedRef('EquirectAsset', equirect);
189
310
 
190
311
  // The production path receives the opaque RhiDevice and the same
@@ -220,7 +341,16 @@ describe('t51 (M3.5) -- dawn IBL 4-pass non-zero readback', () => {
220
341
 
221
342
  // (a) equirect-to-cube face 0 center pixel != 0
222
343
  const cubePx = await readbackRgba16f(rawDevice, cubeRaw, 0, 0);
223
- expect(cubePx.some((c) => c !== 0)).toBe(true);
344
+ expect(cubePx.values.some((c) => c !== 0)).toBe(true);
345
+ await assertFiniteTextureRgba16f(rawDevice, {
346
+ label: 'base-cube',
347
+ texture: cubeRaw,
348
+ width: Math.min(equirect.width, equirect.height),
349
+ height: Math.min(equirect.width, equirect.height),
350
+ faces: 6,
351
+ mipLevels: 1,
352
+ identity: 'cubemap-source',
353
+ });
224
354
 
225
355
  // (b) irradiance, (c) prefilter, (d) brdfLut: the textures live on
226
356
  // IblPipelineCache after t52/t53. Read opaque cache slots through the
@@ -234,16 +364,53 @@ describe('t51 (M3.5) -- dawn IBL 4-pass non-zero readback', () => {
234
364
  expect(irrTex).toBeDefined();
235
365
  expect(prefTex).toBeDefined();
236
366
  expect(brdfTex).toBeDefined();
237
- if (irrTex === undefined || prefTex === undefined || brdfTex === undefined) return;
367
+ expect(cache.prefilterFaceViewsByMip).toBeDefined();
368
+ if (
369
+ irrTex === undefined ||
370
+ prefTex === undefined ||
371
+ brdfTex === undefined ||
372
+ cache.prefilterFaceViewsByMip === undefined
373
+ )
374
+ return;
238
375
 
239
- const irrPx = await readbackRgba16f(rawDevice, rawTexture(irrTex), 0, 0);
240
- expect(irrPx.some((c) => c !== 0)).toBe(true);
376
+ const irrRaw = rawTexture(irrTex);
377
+ const irrPx = await readbackRgba16f(rawDevice, irrRaw, 0, 0);
378
+ expect(irrPx.values.some((c) => c !== 0)).toBe(true);
379
+ await assertFiniteTextureRgba16f(rawDevice, {
380
+ label: 'irradiance',
381
+ texture: irrRaw,
382
+ width: 32,
383
+ height: 32,
384
+ faces: 6,
385
+ mipLevels: 1,
386
+ identity: 'ibl-irradiance-cube',
387
+ });
241
388
 
242
- const prefPx = await readbackRgba16f(rawDevice, rawTexture(prefTex), 0, 0);
243
- expect(prefPx.some((c) => c !== 0)).toBe(true);
389
+ const prefRaw = rawTexture(prefTex);
390
+ const prefPx = await readbackRgba16f(rawDevice, prefRaw, 0, 0);
391
+ expect(prefPx.values.some((c) => c !== 0)).toBe(true);
392
+ await assertFiniteTextureRgba16f(rawDevice, {
393
+ label: 'prefilter',
394
+ texture: prefRaw,
395
+ width: 128,
396
+ height: 128,
397
+ faces: 6,
398
+ mipLevels: cache.prefilterFaceViewsByMip.length,
399
+ identity: 'ibl-prefilter-cube',
400
+ });
244
401
 
245
- const brdfPx = await readbackRgba16f(rawDevice, rawTexture(brdfTex), 0, 0);
246
- expect(brdfPx.some((c) => c !== 0)).toBe(true);
402
+ const brdfRaw = rawTexture(brdfTex);
403
+ const brdfPx = await readbackRgba16f(rawDevice, brdfRaw, 0, 0);
404
+ expect(brdfPx.values.some((c) => c !== 0)).toBe(true);
405
+ await assertFiniteTextureRgba16f(rawDevice, {
406
+ label: 'brdf-lut',
407
+ texture: brdfRaw,
408
+ width: 256,
409
+ height: 256,
410
+ faces: 1,
411
+ mipLevels: 1,
412
+ identity: 'ibl-brdf-lut',
413
+ });
247
414
  },
248
415
  60_000,
249
416
  );
@@ -1,28 +1,10 @@
1
- // instances-uniform-fallback.dawn.test.ts -- feat-20260604-instances-per-instance-transform-shader-group3-bin
2
- // M1 / w6.
3
- //
4
- // AC-07: storage-buffer path + uniform-fallback path both compile and render
5
- // correctly for <=128 instances.
6
- //
7
- // Primary path: dawn-node renders <=128 instances through the normal storage
8
- // buffer path (caps.storageBuffer===true on dawn) and asserts frames are
9
- // non-clear (proves the storage variant renders).
10
- //
11
- // Degraded path (research R-C partial): dawn-node always has
12
- // caps.storageBuffer===true, so we cannot force the uniform-fallback variant
13
- // at the GPU level. Instead, we verify that:
14
- // (a) The uniform-fallback #else form `var<uniform> instances : array<InstanceData, 128>`
15
- // is present in common.wgsl (source-level structural check).
16
- // (b) The variant count stays at 2 (verified by w1 unit test).
17
- // (c) A non-trivial Instances render (<=128) works on the storage path.
18
- //
19
- // This is the best-effort degraded path per research R-C: "if dawn cannot
20
- // construct caps.storageBuffer===false, fall back to a vitest unit that
21
- // asserts the #else uniform array<..,128> form compiles, with reason
22
- // recorded."
1
+ // World-authored Instances render through storage and uniform bindings on Dawn.
2
+ // The restricted RHI advertises no storage buffers while retaining the real
3
+ // WebGPU device, shader compiler, validation and pixel readback. This proves
4
+ // the uniform lane and its 128-instance chunks, not WebGL2 backend parity.
23
5
 
24
6
  import type { MaterialAsset } from '@forgeax/engine-types';
25
- import { describe, expect, it } from 'vitest';
7
+ import { beforeAll, describe, expect, it } from 'vitest';
26
8
  import { drawPublished } from '../draw-published';
27
9
 
28
10
  // Source-level structural check: common.wgsl must carry both the storage
@@ -45,7 +27,16 @@ const STORAGE_PATTERN =
45
27
  const UNIFORM_PATTERN =
46
28
  /@group\(3\)\s+@binding\(0\)\s+var<uniform>\s+instances\s*:\s*array<InstanceData,\s*128>/;
47
29
 
48
- describe('w6 -- AC-07 storage+uniform variant test (degraded best-effort)', () => {
30
+ describe('World Instances storage and uniform submission', () => {
31
+ let ENGINE_MANIFEST_URL_W6: string;
32
+ beforeAll(async () => {
33
+ // Shader production is fixture setup; keep the render assertion's 30s
34
+ // deadline independent of a cold compiler/manifest build.
35
+ const { buildEngineShaderManifest } = await import('@forgeax/engine-vite-plugin-shader');
36
+ const manifest = await buildEngineShaderManifest();
37
+ ENGINE_MANIFEST_URL_W6 = `data:application/json,${encodeURIComponent(JSON.stringify(manifest))}`;
38
+ }, 180_000);
39
+
49
40
  it('(a) common.wgsl declares uniform-fallback array<InstanceData,128> under #else', async () => {
50
41
  const fsId = 'node:fs';
51
42
  const pathId = 'node:path';
@@ -88,39 +79,41 @@ describe('w6 -- AC-07 storage+uniform variant test (degraded best-effort)', () =
88
79
  expect(commonSrc).toMatch(/localFromInstance\s*:\s*mat4x4<f32>/);
89
80
  });
90
81
 
91
- // (b) deg-path rationale: dawn-node always has caps.storageBuffer===true, so
92
- // the uniform-fallback path cannot be exercised at the GPU level in this
93
- // dawn test. The uniform-fallback variant is structurally verified via:
94
- // - w1 source-level variant=2 unit test (AC-11)
95
- // - w6 (a) source-level uniform array<..,128> form check above
96
- // - naga_oil compiles both variants at build-time (vite-plugin-shader)
97
- // Restore as a real `it()` if a dawn-side uniform-fallback path becomes
98
- // reachable (feat-20260608-ci-time-cut converted from `expect(true)`).
99
- it.todo('(b) deg-path rationale recorded: dawn-node always storageBuffer=true');
100
-
101
- it('(c) storage path renders Instances (dawn smoke integration)', async () => {
82
+ it.each([
83
+ { storage: true, grid: 8 },
84
+ { storage: false, grid: 8 },
85
+ { storage: false, grid: 12 },
86
+ ])('renders $grid x $grid instances with storage=$storage', async ({ storage, grid }) => {
102
87
  const dawnAvailable = typeof globalThis.navigator?.gpu?.requestAdapter === 'function';
103
88
  if (!dawnAvailable) {
104
89
  throw new Error('dawn-node navigator.gpu not injected; vitest.setup-webgpu.ts regressed');
105
90
  }
106
91
 
107
- // Render <=128 instances on the storage path and assert non-clear output.
108
- // This proves the storage-buffer variant of @group(3) instances works
109
- // end-to-end on dawn.
110
-
111
92
  const { World } = await import('@forgeax/engine-ecs');
93
+ const { rhi } = await import('@forgeax/engine-rhi-webgpu');
94
+ const restrictedRhi: typeof rhi = {
95
+ ...rhi,
96
+ async requestAdapter(...args) {
97
+ const adapter = await rhi.requestAdapter(...args);
98
+ if (!adapter.ok) return adapter;
99
+ const requestDevice = adapter.value.requestDevice.bind(adapter.value);
100
+ adapter.value.requestDevice = async (options) => {
101
+ const result = await requestDevice(options);
102
+ if (result.ok && !storage)
103
+ Object.defineProperty(result.value, 'caps', {
104
+ value: { ...result.value.caps, storageBuffer: false, compute: false },
105
+ });
106
+ return result;
107
+ };
108
+ return adapter;
109
+ },
110
+ };
112
111
  const { AssetRegistry, HANDLE_CUBE } = await import('@forgeax/engine-assets-runtime');
113
112
  const { Camera, MeshRenderer } = await import('@forgeax/engine-render');
114
113
  const { Instances } = await import('@forgeax/engine-render');
115
114
  const { constructRuntimeRendererHost } = await import('../../renderer-host');
116
115
  const { MeshFilter } = await import('@forgeax/engine-render');
117
116
  const { Transform } = await import('@forgeax/engine-scene');
118
- const { buildEngineShaderManifest } = await import('@forgeax/engine-vite-plugin-shader');
119
- const ENGINE_MANIFEST_W6 = await buildEngineShaderManifest();
120
- const ENGINE_MANIFEST_URL_W6 = `data:application/json,${encodeURIComponent(
121
- JSON.stringify(ENGINE_MANIFEST_W6),
122
- )}`;
123
-
124
117
  const W6_WIDTH = 256;
125
118
  const W6_HEIGHT = 256;
126
119
 
@@ -132,15 +125,20 @@ describe('w6 -- AC-07 storage+uniform variant test (degraded best-effort)', () =
132
125
  const originalRequestDevice = rawAdapter.requestDevice.bind(rawAdapter);
133
126
  rawAdapter.requestDevice = async (desc) => {
134
127
  const dev = await originalRequestDevice(desc);
135
- if (sharedDevice === undefined) sharedDevice = dev;
128
+ if (sharedDevice === undefined) {
129
+ sharedDevice = dev;
130
+ dev.pushErrorScope('validation');
131
+ }
136
132
  return dev;
137
133
  };
138
134
  return rawAdapter;
139
135
  };
140
136
 
141
137
  let renderTarget: GPUTexture | undefined;
138
+ let targetFormat: GPUTextureFormat = 'rgba8unorm';
142
139
  const ensureTarget = (device: GPUDevice, format: GPUTextureFormat): GPUTexture => {
143
140
  if (renderTarget !== undefined) return renderTarget;
141
+ targetFormat = format;
144
142
  renderTarget = device.createTexture({
145
143
  size: { width: W6_WIDTH, height: W6_HEIGHT, depthOrArrayLayers: 1 },
146
144
  format,
@@ -177,15 +175,18 @@ describe('w6 -- AC-07 storage+uniform variant test (degraded best-effort)', () =
177
175
  try {
178
176
  host = await constructRuntimeRendererHost(
179
177
  mockCanvas,
180
- {},
178
+ { rhi: restrictedRhi },
181
179
  { shaderManifestUrl: ENGINE_MANIFEST_URL_W6 },
182
180
  );
183
181
  } finally {
184
182
  globalThis.navigator.gpu.requestAdapter = origReq;
185
183
  }
186
- expect(host.ok).toBe(true);
187
184
  if (!host.ok) throw host.error;
188
185
  const { renderer, assets } = host.value;
186
+ const errors: string[] = [];
187
+ renderer.subscribe((event) => {
188
+ if (event.kind === 'error') errors.push(JSON.stringify(event.error));
189
+ });
189
190
  expect(renderer.inspect().state).toBe('alive');
190
191
  expect(assets).toBeInstanceOf(AssetRegistry);
191
192
 
@@ -201,9 +202,8 @@ describe('w6 -- AC-07 storage+uniform variant test (degraded best-effort)', () =
201
202
  values: { baseColor: [0.9, 0.2, 0.2, 1], metallic: 0, roughness: 0.5 },
202
203
  } as MaterialAsset;
203
204
 
204
- // Build ~60 instances (well under 128 uniform cap), 2D grid
205
- const GRID = 8;
206
- const COUNT = GRID * GRID; // 64
205
+ const GRID = grid;
206
+ const COUNT = GRID * GRID;
207
207
  const SP = 3.0;
208
208
  const transforms = new Float32Array(COUNT * 16);
209
209
  let idx = 0;
@@ -295,18 +295,45 @@ describe('w6 -- AC-07 storage+uniform variant test (degraded best-effort)', () =
295
295
  readbackBuf.unmap();
296
296
  readbackBuf.destroy();
297
297
 
298
- // Sample multiple positions — the 8x8 grid should fill a substantial
299
- // portion of the frame. Center should NOT be clear-color.
300
- const cx = W6_WIDTH >> 1;
301
- const cy = W6_HEIGHT >> 1;
302
- const readPixel = (px: number, py: number): [number, number, number] => {
303
- const off = py * bytesPerRow + px * 4;
304
- return [bytes[off + 2] ?? 0, bytes[off + 1] ?? 0, bytes[off + 0] ?? 0];
305
- };
306
- const [cr, cg, cb] = readPixel(cx, cy);
307
- // Clear color is ~(13, 13, 20) in sRGB bytes. Center should be
308
- // significantly different (red cubes).
309
- const distFromClear = Math.sqrt((cr - 13) ** 2 + (cg - 13) ** 2 + (cb - 20) ** 2);
310
- expect(distFromClear).toBeGreaterThan(30);
298
+ expect(errors).toEqual([]);
299
+ expect((await device.popErrorScope())?.message).toBeUndefined();
300
+
301
+ // Count actual red material pixels; comparing against guessed clear bytes
302
+ // could pass an empty frame because the target applies sRGB conversion.
303
+ let redPixels = 0;
304
+ for (let y = 0; y < W6_HEIGHT; y++) {
305
+ for (let x = 0; x < W6_WIDTH; x++) {
306
+ const offset = y * bytesPerRow + x * 4;
307
+ const r = bytes[offset + (targetFormat.startsWith('bgra') ? 2 : 0)] ?? 0;
308
+ const g = bytes[offset + 1] ?? 0;
309
+ const b = bytes[offset + (targetFormat.startsWith('bgra') ? 0 : 2)] ?? 0;
310
+ if (r > g + 30 && r > b + 30) redPixels++;
311
+ }
312
+ }
313
+ expect(redPixels).toBeGreaterThan(COUNT * 2);
314
+ // The last row crosses the 128-instance boundary for the 12x12 case.
315
+ // Verify its last matrix reaches a distinct screen location, not a
316
+ // duplicate of the first chunk or merely some non-clear geometry.
317
+ const edge = ((GRID - 1) / 2) * SP * 0.3;
318
+ const ndcEdge = edge / (25 * Math.tan(Math.PI / 8));
319
+ const lastX = Math.round(((1 + ndcEdge) * W6_WIDTH) / 2);
320
+ const lastY = Math.round(((1 - ndcEdge) * W6_HEIGHT) / 2);
321
+ let lastInstancePixels = 0;
322
+ for (let y = lastY - 3; y <= lastY + 3; y++) {
323
+ for (let x = lastX - 3; x <= lastX + 3; x++) {
324
+ const offset = y * bytesPerRow + x * 4;
325
+ const r = bytes[offset + (targetFormat.startsWith('bgra') ? 2 : 0)] ?? 0;
326
+ const g = bytes[offset + 1] ?? 0;
327
+ const b = bytes[offset + (targetFormat.startsWith('bgra') ? 0 : 2)] ?? 0;
328
+ if (r > g + 30 && r > b + 30) lastInstancePixels++;
329
+ }
330
+ }
331
+ expect(lastInstancePixels).toBeGreaterThan(0);
332
+ if (!storage) {
333
+ const residency = renderer.inspect().instanceCollections[0];
334
+ expect(residency?.lane).toBe(COUNT > 128 ? 'chunked-uniform' : 'direct-uniform');
335
+ expect(residency?.uploadedBytes).toBe(0);
336
+ }
337
+ await renderer.dispose();
311
338
  });
312
339
  });
@@ -22,6 +22,7 @@ const ENGINE_MANIFEST = await (async () => {
22
22
  return buildEngineShaderManifest();
23
23
  })();
24
24
  const ENGINE_MANIFEST_URL = `data:application/json,${encodeURIComponent(JSON.stringify(ENGINE_MANIFEST))}`;
25
+ const LIGHTWEIGHT_DAWN = process.env.FORGEAX_DAWN_LIGHTWEIGHT === '1';
25
26
 
26
27
  interface AlphaCase {
27
28
  readonly caseId: string;
@@ -92,6 +93,16 @@ const CASES: readonly AlphaCase[] = [
92
93
  },
93
94
  ];
94
95
 
96
+ const DAWN_CASES = LIGHTWEIGHT_DAWN
97
+ ? CASES.filter((testCase) =>
98
+ [
99
+ 'material-alpha-rgba-factor',
100
+ 'material-alpha-mask-explicit',
101
+ 'material-alpha-blend',
102
+ ].includes(testCase.caseId),
103
+ )
104
+ : CASES;
105
+
95
106
  function textureBytes(color: readonly [number, number, number, number]): Uint8Array {
96
107
  return Uint8Array.from(color.map((channel) => Math.round(channel * 255)));
97
108
  }
@@ -224,13 +235,12 @@ async function captureCase(testCase: AlphaCase): Promise<[number, number, number
224
235
  }
225
236
  : { cullMode: 'none' as const };
226
237
  const material = Materials.standard({
227
- baseColor: [
238
+ baseColor: Materials.srgb([
228
239
  testCase.baseColor[0],
229
240
  testCase.baseColor[1],
230
241
  testCase.baseColor[2],
231
242
  testCase.baseAlpha,
232
- ],
233
- colorSpace: 'srgb',
243
+ ]),
234
244
  castShadow: false,
235
245
  metallic: 0,
236
246
  roughness: 1,
@@ -281,7 +291,10 @@ function expectedVisible(testCase: AlphaCase): boolean {
281
291
  }
282
292
 
283
293
  describe('M2 runtime PBR alpha readback', () => {
284
- for (const testCase of CASES) {
294
+ // The browser parity gate still closes all seven alpha cases. Dawn keeps
295
+ // one opaque, one mask, and one blend boundary on overloaded PR runners;
296
+ // local/nightly runs retain the complete threshold matrix.
297
+ for (const testCase of DAWN_CASES) {
285
298
  it(`${testCase.caseId}: Materials.standard single draw is observable`, async () => {
286
299
  const actual = await captureCase(testCase);
287
300
  const expected = testCase.clear.map((channel) => Math.round(channel * 255));
@@ -22,9 +22,10 @@ type CookedRecord = {
22
22
  };
23
23
 
24
24
  type MaterialRow = {
25
+ readonly guid: string;
25
26
  readonly kind: 'material';
26
27
  readonly payload: {
27
- readonly role?: string;
28
+ readonly parent?: string;
28
29
  readonly cooked?: CookedRecord;
29
30
  };
30
31
  };
@@ -41,24 +42,45 @@ const fixture = JSON.parse(
41
42
  ),
42
43
  ) as { readonly assets: readonly MaterialRow[] };
43
44
 
45
+ const materialRows = fixture.assets.filter((asset) => asset.kind === 'material');
46
+ const root = materialRows.find((asset) => asset.payload.parent === undefined);
47
+ const derived = materialRows.find((asset) => asset.payload.parent === root?.guid);
48
+
44
49
  describe('custom-shader cooked MaterialAsset fixture', () => {
45
- it('keeps browser and Dawn on the same key, bytes, and values', () => {
46
- const root = fixture.assets.find((asset) => asset.payload.role === 'root');
47
- const derived = fixture.assets.find((asset) => asset.payload.role === 'derived');
50
+ it('keeps browser and Dawn on the same cooked payload with the child override', () => {
48
51
  expect(root?.payload.cooked).toBeDefined();
49
52
  expect(derived?.payload.cooked).toBeDefined();
53
+
54
+ const cookedRecords = [root?.payload.cooked, derived?.payload.cooked];
55
+ for (const cooked of cookedRecords) {
56
+ expect(cooked).toBeDefined();
57
+ expect(cooked?.artifact?.digest).toMatch(/^sha256:/);
58
+ expect(cooked?.artifact?.digest).toBe(cooked?.artifactDigest);
59
+ expect(cooked?.receipt?.schemaVersion).toBe('material-cook/3');
60
+ expect(cooked?.receipt?.identity?.layoutIdentity).toMatch(/^sha256-/);
61
+ expect(cooked?.receipt?.identity?.programIdentity).toMatch(/^sha256:/);
62
+ expect(cooked?.receipt?.identity?.pipelineIdentity).toMatch(/^sha256:/);
63
+ expect(cooked?.receipt?.identity?.cookIdentity).toMatch(/^sha256:/);
64
+ expect(cooked?.receipt?.identity?.compilerFingerprint).toMatch(/^sha256-/);
65
+ }
50
66
  expect(derived?.payload.cooked?.specializationKey).toBe(
51
67
  root?.payload.cooked?.specializationKey,
52
68
  );
53
69
  expect(derived?.payload.cooked?.artifactDigest).toBe(root?.payload.cooked?.artifactDigest);
54
- expect(derived?.payload.cooked?.artifact.bytes).toEqual(root?.payload.cooked?.artifact.bytes);
55
- expect(derived?.payload.cooked?.resolved?.values).toEqual(
56
- root?.payload.cooked?.resolved?.values,
57
- );
70
+ expect(derived?.payload.cooked?.artifact?.bytes).toEqual(root?.payload.cooked?.artifact?.bytes);
71
+ expect(root?.payload.cooked?.resolved?.values).toMatchObject({
72
+ baseColor: [0.95, 0.45, 0.2, 1],
73
+ time: 0,
74
+ speed: 2,
75
+ });
76
+ expect(derived?.payload.cooked?.resolved?.values).toMatchObject({
77
+ baseColor: [0.2, 0.55, 0.95, 1],
78
+ time: 0,
79
+ speed: 2,
80
+ });
58
81
  });
59
82
 
60
83
  it('keeps cooked layout identity and authored coordinate transforms', () => {
61
- const root = fixture.assets.find((asset) => asset.payload.role === 'root');
62
84
  const cooked = root?.payload.cooked;
63
85
  expect(cooked?.receipt?.schemaVersion).toBe('material-cook/3');
64
86
  expect(cooked?.receipt?.identity?.layoutIdentity).toMatch(/^sha256-/);
@@ -50,7 +50,7 @@ const standardPbrSchema: readonly ParamSchemaEntry[] = [
50
50
  { name: 'occlusionStrength', type: 'f32', default: 1 },
51
51
  { name: 'alphaCutoff', type: 'f32', default: 0 },
52
52
  { name: 'clearcoat', type: 'f32', default: 0 },
53
- { name: 'clearcoatRoughness', type: 'f32', default: 0.5 },
53
+ { name: 'clearcoatRoughness', type: 'f32', default: 1 },
54
54
  { name: 'baseColorTexture', type: 'texture2d' },
55
55
  { name: 'metallicRoughnessTexture', type: 'texture2d' },
56
56
  { name: 'normalTexture', type: 'texture2d' },
@@ -202,12 +202,12 @@ const defaultStandardPbrSchema: readonly ParamSchemaEntry[] = [
202
202
  { name: 'occlusionStrength', type: 'f32', default: 1 },
203
203
  { name: 'alphaCutoff', type: 'f32', default: 0 },
204
204
  { name: 'clearcoat', type: 'f32', default: 0 },
205
- { name: 'clearcoatRoughness', type: 'f32', default: 0.5 },
206
- { name: 'specularTint', type: 'vec3', default: [1, 1, 1] },
205
+ { name: 'clearcoatRoughness', type: 'f32', default: 1 },
206
+ { name: 'specularColor', type: 'vec3', default: [1, 1, 1] },
207
207
  { name: 'baseColorTexture', type: 'texture2d' },
208
208
  { name: 'metallicRoughnessTexture', type: 'texture2d' },
209
209
  { name: 'normalTexture', type: 'texture2d' },
210
- { name: 'specularTintTexture', type: 'texture2d' },
210
+ { name: 'specularColorTexture', type: 'texture2d' },
211
211
  ];
212
212
 
213
213
  describe('built-in PBR derive+injection regression fence (M1 w1)', () => {
@@ -234,7 +234,7 @@ describe('built-in PBR derive+injection regression fence (M1 w1)', () => {
234
234
  expect(out.textureFieldNames.has('baseColorTexture')).toBe(true);
235
235
  expect(out.textureFieldNames.has('metallicRoughnessTexture')).toBe(true);
236
236
  expect(out.textureFieldNames.has('normalTexture')).toBe(true);
237
- expect(out.textureFieldNames.has('specularTintTexture')).toBe(true);
237
+ expect(out.textureFieldNames.has('specularColorTexture')).toBe(true);
238
238
 
239
239
  // sampler map: each texture has a paired sampler.
240
240
  expect(out.samplerForTexture.size).toBe(4);
@@ -243,7 +243,7 @@ describe('built-in PBR derive+injection regression fence (M1 w1)', () => {
243
243
  'metallicRoughnessTexture_sampler',
244
244
  );
245
245
  expect(out.samplerForTexture.get('normalTexture')).toBe('normalTexture_sampler');
246
- expect(out.samplerForTexture.get('specularTintTexture')).toBe('specularTintTexture_sampler');
246
+ expect(out.samplerForTexture.get('specularColorTexture')).toBe('specularColorTexture_sampler');
247
247
  });
248
248
 
249
249
  it('w1 full pipeline: derive + ibl injection + lightmap injection = 20 entries dense 0..19', () => {
@@ -337,7 +337,7 @@ const parallax4TextureSchema: readonly ParamSchemaEntry[] = [
337
337
  { name: 'baseColorTexture', type: 'texture2d' },
338
338
  { name: 'metallicRoughnessTexture', type: 'texture2d' },
339
339
  { name: 'normalTexture', type: 'texture2d' },
340
- { name: 'specularTintTexture', type: 'texture2d' },
340
+ { name: 'specularColorTexture', type: 'texture2d' },
341
341
  { name: 'heightTexture', type: 'texture2d' },
342
342
  ];
343
343
 
@@ -354,7 +354,7 @@ describe('5-texture custom schema derive: heightTexture binding + injection shif
354
354
  expect(out.bglEntries.length).toBe(11);
355
355
 
356
356
  // heightTexture is the 5th texture: sampler at binding 9, texture at binding 10.
357
- // (after baseColor 1/2, MR 3/4, normal 5/6, specular tint 7/8).
357
+ // (after baseColor 1/2, MR 3/4, and normal 5/6).
358
358
  const heightSampler = out.bglEntries[9];
359
359
  const heightTexture = out.bglEntries[10];
360
360
  expect(heightSampler?.binding).toBe(9);