@forgeax/engine-runtime 0.1.4 → 0.1.7

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 (606) hide show
  1. package/README.md +65 -83
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/__tests__/animation-graph-collect-roundtrip.test.d.ts +2 -0
  4. package/dist/__tests__/animation-graph-collect-roundtrip.test.d.ts.map +1 -0
  5. package/dist/__tests__/animation-graph-serialize.unit.test.d.ts +2 -0
  6. package/dist/__tests__/animation-graph-serialize.unit.test.d.ts.map +1 -0
  7. package/dist/__tests__/asset-brand-and-name-retirement.test.d.ts +2 -0
  8. package/dist/__tests__/asset-brand-and-name-retirement.test.d.ts.map +1 -0
  9. package/dist/__tests__/asset-error-exhaustive.test-d.d.ts +11 -0
  10. package/dist/__tests__/asset-error-exhaustive.test-d.d.ts.map +1 -0
  11. package/dist/__tests__/asset-registry-guid-reverse.test.d.ts +2 -0
  12. package/dist/__tests__/asset-registry-guid-reverse.test.d.ts.map +1 -0
  13. package/dist/__tests__/asset-registry-hdr-equirect.test.d.ts +2 -0
  14. package/dist/__tests__/asset-registry-hdr-equirect.test.d.ts.map +1 -0
  15. package/dist/__tests__/asset-registry-mesh-pack-payload.dawn.test.d.ts +2 -0
  16. package/dist/__tests__/asset-registry-mesh-pack-payload.dawn.test.d.ts.map +1 -0
  17. package/dist/__tests__/asset-registry-mounts.test.d.ts +2 -0
  18. package/dist/__tests__/asset-registry-mounts.test.d.ts.map +1 -0
  19. package/dist/__tests__/asset-registry.browser.test.d.ts +2 -0
  20. package/dist/__tests__/asset-registry.browser.test.d.ts.map +1 -0
  21. package/dist/__tests__/asset-registry.dawn.test.d.ts +2 -0
  22. package/dist/__tests__/asset-registry.dawn.test.d.ts.map +1 -0
  23. package/dist/__tests__/asset-registry.listCatalog.test.d.ts +2 -0
  24. package/dist/__tests__/asset-registry.listCatalog.test.d.ts.map +1 -0
  25. package/dist/__tests__/asset-registry.mesh-bin.test.d.ts +2 -0
  26. package/dist/__tests__/asset-registry.mesh-bin.test.d.ts.map +1 -0
  27. package/dist/__tests__/asset-registry.pack-cache.test.d.ts +2 -0
  28. package/dist/__tests__/asset-registry.pack-cache.test.d.ts.map +1 -0
  29. package/dist/__tests__/asset-registry.raw-container-failfast.test.d.ts +2 -0
  30. package/dist/__tests__/asset-registry.raw-container-failfast.test.d.ts.map +1 -0
  31. package/dist/__tests__/asset-registry.recursive.spec.d.ts +2 -0
  32. package/dist/__tests__/asset-registry.recursive.spec.d.ts.map +1 -0
  33. package/dist/__tests__/asset-registry.unit.test.d.ts +2 -0
  34. package/dist/__tests__/asset-registry.unit.test.d.ts.map +1 -0
  35. package/dist/__tests__/asset.unit.test.d.ts +2 -0
  36. package/dist/__tests__/asset.unit.test.d.ts.map +1 -0
  37. package/dist/__tests__/audio-load-by-guid.unit.test.d.ts +2 -0
  38. package/dist/__tests__/audio-load-by-guid.unit.test.d.ts.map +1 -0
  39. package/dist/__tests__/backend-selection.integration.test.d.ts +2 -0
  40. package/dist/__tests__/backend-selection.integration.test.d.ts.map +1 -0
  41. package/dist/__tests__/basis-catalog-dispatch.integration.test.d.ts +2 -0
  42. package/dist/__tests__/basis-catalog-dispatch.integration.test.d.ts.map +1 -0
  43. package/dist/__tests__/builtin-asset-registry.unit.test.d.ts +2 -0
  44. package/dist/__tests__/builtin-asset-registry.unit.test.d.ts.map +1 -0
  45. package/dist/__tests__/collect-scene-asset.test.d.ts +1 -2
  46. package/dist/__tests__/collect-scene-asset.test.d.ts.map +1 -1
  47. package/dist/__tests__/collect-scene-mount-collapse.test.d.ts +2 -0
  48. package/dist/__tests__/collect-scene-mount-collapse.test.d.ts.map +1 -0
  49. package/dist/__tests__/collect-transient-roundtrip.test.d.ts +1 -1
  50. package/dist/__tests__/collect-transient-roundtrip.test.d.ts.map +1 -1
  51. package/dist/__tests__/collect-transient-skip.test.d.ts +1 -2
  52. package/dist/__tests__/collect-transient-skip.test.d.ts.map +1 -1
  53. package/dist/__tests__/compressed-texture-physical-extent.integration.test.d.ts +2 -0
  54. package/dist/__tests__/compressed-texture-physical-extent.integration.test.d.ts.map +1 -0
  55. package/dist/__tests__/dawn/mesh-update-dawn.test.d.ts +2 -0
  56. package/dist/__tests__/dawn/mesh-update-dawn.test.d.ts.map +1 -0
  57. package/dist/__tests__/dawn/upload-texture.dawn.test.d.ts +2 -0
  58. package/dist/__tests__/dawn/upload-texture.dawn.test.d.ts.map +1 -0
  59. package/dist/__tests__/draw-published.d.ts +2 -2
  60. package/dist/__tests__/draw-published.d.ts.map +1 -1
  61. package/dist/__tests__/dynamic-texture-store.unit.test.d.ts +2 -0
  62. package/dist/__tests__/dynamic-texture-store.unit.test.d.ts.map +1 -0
  63. package/dist/__tests__/errors.unit.test.d.ts +2 -0
  64. package/dist/__tests__/errors.unit.test.d.ts.map +1 -0
  65. package/dist/__tests__/extract-skin-mismatch.unit.test.d.ts +2 -0
  66. package/dist/__tests__/extract-skin-mismatch.unit.test.d.ts.map +1 -0
  67. package/dist/__tests__/fetch-binary-decompress.test.d.ts +2 -0
  68. package/dist/__tests__/fetch-binary-decompress.test.d.ts.map +1 -0
  69. package/dist/__tests__/four-path-compression.integration.test.d.ts +2 -0
  70. package/dist/__tests__/four-path-compression.integration.test.d.ts.map +1 -0
  71. package/dist/__tests__/fullscreen-feature-host.dawn.test.d.ts +2 -0
  72. package/dist/__tests__/fullscreen-feature-host.dawn.test.d.ts.map +1 -0
  73. package/dist/__tests__/guid-for-asset.unit.test.d.ts +2 -0
  74. package/dist/__tests__/guid-for-asset.unit.test.d.ts.map +1 -0
  75. package/dist/__tests__/handle-migration.test.d.ts +2 -0
  76. package/dist/__tests__/handle-migration.test.d.ts.map +1 -0
  77. package/dist/__tests__/helpers/register-runtime-components.d.ts.map +1 -1
  78. package/dist/__tests__/host-custom-kind-contract.test-d.d.ts +2 -0
  79. package/dist/__tests__/host-custom-kind-contract.test-d.d.ts.map +1 -0
  80. package/dist/__tests__/host-custom-kind-contract.test.d.ts +2 -0
  81. package/dist/__tests__/host-custom-kind-contract.test.d.ts.map +1 -0
  82. package/dist/__tests__/inspect-name.test.d.ts +2 -0
  83. package/dist/__tests__/inspect-name.test.d.ts.map +1 -0
  84. package/dist/__tests__/instantiate-mount-deferred-wiring.test.d.ts +2 -0
  85. package/dist/__tests__/instantiate-mount-deferred-wiring.test.d.ts.map +1 -0
  86. package/dist/__tests__/loadbyguid-payload.unit.test.d.ts +2 -0
  87. package/dist/__tests__/loadbyguid-payload.unit.test.d.ts.map +1 -0
  88. package/dist/__tests__/loadbyguid-texture-intern.unit.test.d.ts +2 -0
  89. package/dist/__tests__/loadbyguid-texture-intern.unit.test.d.ts.map +1 -0
  90. package/dist/__tests__/loader-extract-graceful.test.d.ts +2 -0
  91. package/dist/__tests__/loader-extract-graceful.test.d.ts.map +1 -0
  92. package/dist/__tests__/loader-name-survival.test.d.ts +2 -0
  93. package/dist/__tests__/loader-name-survival.test.d.ts.map +1 -0
  94. package/dist/__tests__/mesh-bin-contract.test.d.ts +2 -0
  95. package/dist/__tests__/mesh-bin-contract.test.d.ts.map +1 -0
  96. package/dist/__tests__/mesh-bin-skin-roundtrip.unit.test.d.ts +2 -0
  97. package/dist/__tests__/mesh-bin-skin-roundtrip.unit.test.d.ts.map +1 -0
  98. package/dist/__tests__/mesh-bin.test.d.ts +2 -0
  99. package/dist/__tests__/mesh-bin.test.d.ts.map +1 -0
  100. package/dist/__tests__/mesh-loader-skin-contract.unit.test.d.ts +2 -0
  101. package/dist/__tests__/mesh-loader-skin-contract.unit.test.d.ts.map +1 -0
  102. package/dist/__tests__/new-kind-refs-contract.test.d.ts +2 -0
  103. package/dist/__tests__/new-kind-refs-contract.test.d.ts.map +1 -0
  104. package/dist/__tests__/package-promotion.test.d.ts +2 -0
  105. package/dist/__tests__/package-promotion.test.d.ts.map +1 -0
  106. package/dist/__tests__/package-rename.test.d.ts +2 -0
  107. package/dist/__tests__/package-rename.test.d.ts.map +1 -0
  108. package/dist/__tests__/recover-error-exhaustive.test-d.d.ts +1 -1
  109. package/dist/__tests__/recover-error-exhaustive.test-d.d.ts.map +1 -1
  110. package/dist/__tests__/render-error-exhaustive.test-d.d.ts +1 -1
  111. package/dist/__tests__/render-error-exhaustive.test-d.d.ts.map +1 -1
  112. package/dist/__tests__/render-feature-prepared-graphics.fixture.d.ts +10 -0
  113. package/dist/__tests__/render-feature-prepared-graphics.fixture.d.ts.map +1 -0
  114. package/dist/__tests__/render-system-extract.unit.test.d.ts +2 -0
  115. package/dist/__tests__/render-system-extract.unit.test.d.ts.map +1 -0
  116. package/dist/__tests__/renderer-test-utils.d.ts +10 -0
  117. package/dist/__tests__/renderer-test-utils.d.ts.map +1 -0
  118. package/dist/__tests__/renderer.test-d.d.ts +2 -0
  119. package/dist/__tests__/renderer.test-d.d.ts.map +1 -0
  120. package/dist/__tests__/resolve-asset-handle-err.test.d.ts +2 -0
  121. package/dist/__tests__/resolve-asset-handle-err.test.d.ts.map +1 -0
  122. package/dist/__tests__/resolve-asset-handle.unit.test.d.ts +2 -0
  123. package/dist/__tests__/resolve-asset-handle.unit.test.d.ts.map +1 -0
  124. package/dist/__tests__/resolveName-fallback.test.d.ts +2 -0
  125. package/dist/__tests__/resolveName-fallback.test.d.ts.map +1 -0
  126. package/dist/__tests__/resolveName-null-package.test.d.ts +2 -0
  127. package/dist/__tests__/resolveName-null-package.test.d.ts.map +1 -0
  128. package/dist/__tests__/resolveName-unified-entry.test.d.ts +2 -0
  129. package/dist/__tests__/resolveName-unified-entry.test.d.ts.map +1 -0
  130. package/dist/__tests__/resolveName.test.d.ts +2 -0
  131. package/dist/__tests__/resolveName.test.d.ts.map +1 -0
  132. package/dist/__tests__/roots-to-scene-asset.test.d.ts +1 -1
  133. package/dist/__tests__/roots-to-scene-asset.test.d.ts.map +1 -1
  134. package/dist/__tests__/roundtrip-primitive.test.d.ts +2 -0
  135. package/dist/__tests__/roundtrip-primitive.test.d.ts.map +1 -0
  136. package/dist/__tests__/scene-bare-guid-refs-instantiate.test.d.ts +2 -0
  137. package/dist/__tests__/scene-bare-guid-refs-instantiate.test.d.ts.map +1 -0
  138. package/dist/__tests__/scene-instance-authoring.integration.test.d.ts +2 -0
  139. package/dist/__tests__/scene-instance-authoring.integration.test.d.ts.map +1 -0
  140. package/dist/__tests__/scene-mount-fixed-point.test.d.ts +2 -0
  141. package/dist/__tests__/scene-mount-fixed-point.test.d.ts.map +1 -0
  142. package/dist/__tests__/scene-mount-roundtrip.test.d.ts +2 -0
  143. package/dist/__tests__/scene-mount-roundtrip.test.d.ts.map +1 -0
  144. package/dist/__tests__/scene-mount-wrapper-roundtrip.test.d.ts +2 -0
  145. package/dist/__tests__/scene-mount-wrapper-roundtrip.test.d.ts.map +1 -0
  146. package/dist/__tests__/scene-sugar-instantiate.test.d.ts +2 -0
  147. package/dist/__tests__/scene-sugar-instantiate.test.d.ts.map +1 -0
  148. package/dist/__tests__/serialize-mounts-roundtrip.test.d.ts +2 -0
  149. package/dist/__tests__/serialize-mounts-roundtrip.test.d.ts.map +1 -0
  150. package/dist/__tests__/serialize-scene-asset.test.d.ts +1 -1
  151. package/dist/__tests__/serialize-scene-asset.test.d.ts.map +1 -1
  152. package/dist/__tests__/template-game-default-api-contract.test.d.ts +2 -0
  153. package/dist/__tests__/template-game-default-api-contract.test.d.ts.map +1 -0
  154. package/dist/__tests__/tileset-asset-validate.test.d.ts +2 -0
  155. package/dist/__tests__/tileset-asset-validate.test.d.ts.map +1 -0
  156. package/dist/__tests__/transcode-fallback.unit.test.d.ts +2 -0
  157. package/dist/__tests__/transcode-fallback.unit.test.d.ts.map +1 -0
  158. package/dist/__tests__/transient-runtime-behavior.test.d.ts +2 -0
  159. package/dist/__tests__/transient-runtime-behavior.test.d.ts.map +1 -0
  160. package/dist/__tests__/video-loader-consumption.test.d.ts +2 -0
  161. package/dist/__tests__/video-loader-consumption.test.d.ts.map +1 -0
  162. package/dist/__tests__/video-loader-smoke.dawn.test.d.ts +2 -0
  163. package/dist/__tests__/video-loader-smoke.dawn.test.d.ts.map +1 -0
  164. package/dist/backend-selection.d.ts +13 -0
  165. package/dist/backend-selection.d.ts.map +1 -0
  166. package/dist/collect-scene-asset.d.ts +7 -4
  167. package/dist/collect-scene-asset.d.ts.map +1 -1
  168. package/dist/createRenderer.d.ts +14 -2
  169. package/dist/createRenderer.d.ts.map +1 -1
  170. package/dist/errors/environment.d.ts +1 -1
  171. package/dist/errors/environment.d.ts.map +1 -1
  172. package/dist/index.d.ts +20 -82
  173. package/dist/index.d.ts.map +1 -1
  174. package/dist/index.mjs +107 -108
  175. package/dist/index.mjs.map +1 -1
  176. package/dist/renderer-host.d.ts +9 -0
  177. package/dist/renderer-host.d.ts.map +1 -0
  178. package/dist/renderer-host.mjs +62 -0
  179. package/dist/renderer-host.mjs.map +1 -0
  180. package/dist/scene-instances/index.d.ts +2 -0
  181. package/dist/scene-instances/index.d.ts.map +1 -0
  182. package/dist/scene-utils/mount-override-fold.d.ts +1 -2
  183. package/dist/scene-utils/mount-override-fold.d.ts.map +1 -1
  184. package/dist/systems/sprite-animation-tick.d.ts +1 -1
  185. package/dist/systems/sprite-animation-tick.d.ts.map +1 -1
  186. package/dist/systems/transparent-sort.d.ts +1 -2
  187. package/dist/systems/transparent-sort.d.ts.map +1 -1
  188. package/dist/tilemap-register-validate.d.ts.map +1 -1
  189. package/package.json +34 -33
  190. package/src/__tests__/active-camera.unit.test.ts +19 -9
  191. package/src/__tests__/animation-graph-collect-roundtrip.test.ts +213 -0
  192. package/src/__tests__/animation-graph-serialize.unit.test.ts +171 -0
  193. package/src/__tests__/append-injection.test.ts +1 -1
  194. package/src/__tests__/asset-brand-and-name-retirement.test.ts +102 -0
  195. package/src/__tests__/asset-error-exhaustive.test-d.ts +62 -0
  196. package/src/__tests__/asset-registry-guid-reverse.test.ts +608 -0
  197. package/src/__tests__/asset-registry-hdr-equirect.test.ts +78 -0
  198. package/src/__tests__/asset-registry-mesh-pack-payload.dawn.test.ts +232 -0
  199. package/src/__tests__/asset-registry-mounts.test.ts +806 -0
  200. package/src/__tests__/asset-registry.browser.test.ts +81 -0
  201. package/src/__tests__/asset-registry.dawn.test.ts +94 -0
  202. package/src/__tests__/asset-registry.listCatalog.test.ts +170 -0
  203. package/src/__tests__/asset-registry.mesh-bin.test.ts +316 -0
  204. package/src/__tests__/asset-registry.pack-cache.test.ts +969 -0
  205. package/src/__tests__/asset-registry.raw-container-failfast.test.ts +225 -0
  206. package/src/__tests__/asset-registry.recursive.spec.ts +1397 -0
  207. package/src/__tests__/asset-registry.unit.test.ts +1030 -0
  208. package/src/__tests__/asset.unit.test.ts +7107 -0
  209. package/src/__tests__/audio-load-by-guid.unit.test.ts +126 -0
  210. package/src/__tests__/backend-selection.integration.test.ts +11 -0
  211. package/src/__tests__/basis-catalog-dispatch.integration.test.ts +320 -0
  212. package/src/__tests__/bind-group-cache-keying.test.ts +4 -4
  213. package/src/__tests__/block-upload-math.unit.test.ts +2 -2
  214. package/src/__tests__/builtin-asset-registry.unit.test.ts +112 -0
  215. package/src/__tests__/builtin-shader-register-e2e.test.ts +1 -1
  216. package/src/__tests__/cache-false-eviction.test.ts +2 -1
  217. package/src/__tests__/cache-isolation-matrix.test.ts +2 -1
  218. package/src/__tests__/camera-clear-snapshot-equivalence.unit.test.ts +5 -6
  219. package/src/__tests__/clamp-to-last.e2e.browser.test.ts +29 -19
  220. package/src/__tests__/collect-scene-asset.test.ts +49 -52
  221. package/src/__tests__/collect-scene-mount-collapse.test.ts +391 -0
  222. package/src/__tests__/collect-subtree.unit.test.ts +1 -2
  223. package/src/__tests__/collect-transient-children-absent.test.ts +24 -10
  224. package/src/__tests__/collect-transient-roundtrip.test.ts +44 -20
  225. package/src/__tests__/collect-transient-skip.test.ts +24 -13
  226. package/src/__tests__/components.test-d.ts +1 -6
  227. package/src/__tests__/components.unit.test.ts +20 -19
  228. package/src/__tests__/composite-skybox-cross-world.browser.test.ts +59 -27
  229. package/src/__tests__/compressed-texture-physical-extent.integration.test.ts +139 -0
  230. package/src/__tests__/create-renderer-assembly.integration.test.ts +42 -29
  231. package/src/__tests__/createRenderer-dispose.test.ts +35 -402
  232. package/src/__tests__/createRenderer.browser-no-webgpu.test.ts +25 -30
  233. package/src/__tests__/createRenderer.unit.test.ts +1 -1
  234. package/src/__tests__/dawn/hello-sprite-nineslice-section.dawn.test.ts +27 -63
  235. package/src/__tests__/dawn/ibl-precompute-readback.dawn.test.ts +56 -47
  236. package/src/__tests__/dawn/instances-per-instance-pbr.dawn.test.ts +49 -29
  237. package/src/__tests__/dawn/instances-shadow.dawn.test.ts +26 -15
  238. package/src/__tests__/dawn/instances-uniform-fallback.dawn.test.ts +13 -14
  239. package/src/__tests__/dawn/material-alpha.dawn.test.ts +23 -31
  240. package/src/__tests__/dawn/material-cooked-fixture.dawn.test.ts +24 -9
  241. package/src/__tests__/dawn/{mesh-update.dawn.test.ts → mesh-update-dawn.test.ts} +42 -134
  242. package/src/__tests__/dawn/mipmap-srgb-linear.dawn.test.ts +14 -7
  243. package/src/__tests__/dawn/per-entity-material-texture-isolation.dawn.test.ts +16 -28
  244. package/src/__tests__/dawn/sprite-nineslice-mesh-bind.dawn.test.ts +23 -39
  245. package/src/__tests__/dawn/upload-texture.dawn.test.ts +198 -0
  246. package/src/__tests__/dawn/user-handle-mesh-render.dawn.test.ts +12 -14
  247. package/src/__tests__/dawn/user-mesh-upload.dawn.test.ts +27 -22
  248. package/src/__tests__/dawn/zero-manifest-mesh-fail.dawn.test.ts +25 -28
  249. package/src/__tests__/dawn/zero-manifest-ready.dawn.test.ts +10 -11
  250. package/src/__tests__/demo-sortscope-migration.unit.test.ts +5 -5
  251. package/src/__tests__/derive-bgl-integration.test.ts +34 -44
  252. package/src/__tests__/derive-render-data-skin.unit.test.ts +1 -1
  253. package/src/__tests__/draw-published.ts +11 -4
  254. package/src/__tests__/dynamic-texture-store.unit.test.ts +190 -0
  255. package/src/__tests__/equirect-bc6h.integration.test.ts +144 -21
  256. package/src/__tests__/errors.unit.test.ts +1227 -0
  257. package/src/__tests__/extract-frames-graceful-degradation.test.ts +3 -7
  258. package/src/__tests__/extract-frames-merge.test.ts +35 -22
  259. package/src/__tests__/extract-record-no-hardcoded-texture-fields.test.ts +5 -16
  260. package/src/__tests__/extract-skin-mismatch.unit.test.ts +322 -0
  261. package/src/__tests__/fetch-binary-decompress.test.ts +356 -0
  262. package/src/__tests__/four-path-compression.integration.test.ts +395 -0
  263. package/src/__tests__/frame-targets-shadow-regression.unit.test.ts +1 -1
  264. package/src/__tests__/fullscreen-feature-host.dawn.test.ts +80 -0
  265. package/src/__tests__/fullscreen-post-bgl-depth.test.ts +4 -2
  266. package/src/__tests__/fullscreen-post-depth-params-arity.test.ts +3 -3
  267. package/src/__tests__/fullscreen-post-process-pass.dawn.test.ts +39 -23
  268. package/src/__tests__/fullscreen-post-process-pass.unit.test.ts +4 -2
  269. package/src/__tests__/fxaa-pixel-diff.dawn.test.ts +28 -17
  270. package/src/__tests__/fxaa-validation-and-resize.dawn.test.ts +29 -18
  271. package/src/__tests__/fxaa-zero-overhead.dawn.test.ts +16 -12
  272. package/src/__tests__/geometry.unit.test.ts +525 -159
  273. package/src/__tests__/glyph-tilemap-worldid.test.ts +1 -1
  274. package/src/__tests__/gpu-resource-cow-survivor.test.ts +6 -4
  275. package/src/__tests__/guid-for-asset.unit.test.ts +102 -0
  276. package/src/__tests__/handle-migration.test.ts +136 -0
  277. package/src/__tests__/helpers/register-runtime-components.ts +4 -2
  278. package/src/__tests__/helpers/register-scene-components.ts +1 -1
  279. package/src/__tests__/host-custom-kind-contract.test-d.ts +47 -0
  280. package/src/__tests__/host-custom-kind-contract.test.ts +578 -0
  281. package/src/__tests__/inspect-name.test.ts +139 -0
  282. package/src/__tests__/instances.test-d.ts +1 -1
  283. package/src/__tests__/instantiate-mount-deferred-wiring.test.ts +112 -0
  284. package/src/__tests__/light-casters-9-light.browser.test.ts +73 -76
  285. package/src/__tests__/light-gpu-byte-neutral.unit.test.ts +7 -10
  286. package/src/__tests__/light-snapshot.test-d.ts +2 -2
  287. package/src/__tests__/lights-vec-negative.unit.test.ts +1 -1
  288. package/src/__tests__/lights.unit.test.ts +31 -511
  289. package/src/__tests__/loadbyguid-payload.unit.test.ts +117 -0
  290. package/src/__tests__/loadbyguid-texture-intern.unit.test.ts +213 -0
  291. package/src/__tests__/loader-extract-graceful.test.ts +146 -0
  292. package/src/__tests__/loader-name-survival.test.ts +213 -0
  293. package/src/__tests__/m3-vec-negative.unit.test.ts +3 -2
  294. package/src/__tests__/material-texture-uv-scale.unit.test.ts +101 -31
  295. package/src/__tests__/materials.unit.test.ts +10 -27
  296. package/src/__tests__/mesh-bin-contract.test.ts +28 -0
  297. package/src/__tests__/mesh-bin-skin-roundtrip.unit.test.ts +149 -0
  298. package/src/__tests__/mesh-bin.test.ts +38 -0
  299. package/src/__tests__/mesh-loader-skin-contract.unit.test.ts +120 -0
  300. package/src/__tests__/mesh-ssbo-grow.unit.test.ts +3 -3
  301. package/src/__tests__/mip-gate.unit.test.ts +1 -1
  302. package/src/__tests__/msaa-sprite-pixel-diff.dawn.test.ts +29 -68
  303. package/src/__tests__/new-kind-refs-contract.test.ts +132 -0
  304. package/src/__tests__/node-shims.d.ts +4 -6
  305. package/src/__tests__/package-promotion.test.ts +88 -0
  306. package/src/__tests__/package-rename.test.ts +103 -0
  307. package/src/__tests__/pass-selector.unit.test.ts +2 -2
  308. package/src/__tests__/pbr-pipeline.unit.test.ts +21 -25
  309. package/src/__tests__/pipeline-builder-msaa.unit.test.ts +6 -9
  310. package/src/__tests__/pipeline-cache-keying.unit.test.ts +6 -9
  311. package/src/__tests__/pipeline-spec.test.ts +16 -177
  312. package/src/__tests__/pipeline.unit.test.ts +154 -1693
  313. package/src/__tests__/point-light-shadow.dawn.test.ts +33 -42
  314. package/src/__tests__/point-light-shadow.unit.test.ts +19 -60
  315. package/src/__tests__/post-process-error-codes.unit.test.ts +4 -1
  316. package/src/__tests__/post-process-params-component.unit.test.ts +1 -1
  317. package/src/__tests__/post-process-params-extract.unit.test.ts +2 -5
  318. package/src/__tests__/postprocess-camera-consistency.test.ts +4 -7
  319. package/src/__tests__/profiler-assembly.integration.test.ts +1 -1
  320. package/src/__tests__/propagate-transforms.dawn.test.ts +12 -11
  321. package/src/__tests__/record-worldid-isolation.test.ts +7 -29
  322. package/src/__tests__/recover-error-exhaustive.test-d.ts +1 -1
  323. package/src/__tests__/render-error-exhaustive.test-d.ts +117 -71
  324. package/src/__tests__/render-feature-assembly.test-d.ts +20 -9
  325. package/src/__tests__/render-feature-prepared-graphics-docs.unit.test.ts +8 -6
  326. package/src/__tests__/render-feature-prepared-graphics.browser.test.ts +65 -559
  327. package/src/__tests__/render-feature-prepared-graphics.dawn.test.ts +57 -544
  328. package/src/__tests__/render-feature-prepared-graphics.fixture.ts +104 -0
  329. package/src/__tests__/render-feature-prepared-graphics.integration.test.ts +40 -248
  330. package/src/__tests__/render-feature-prepared-graphics.regression.integration.test.ts +83 -340
  331. package/src/__tests__/render-feature-recover.integration.test.ts +9 -49
  332. package/src/__tests__/render-feature-runtime-surface.test-d.ts +17 -20
  333. package/src/__tests__/render-schema-consumer.integration.test.ts +20 -13
  334. package/src/__tests__/render-schema-owner-boundary.unit.test.ts +2 -6
  335. package/src/__tests__/render-system-cross-world-overlay-queue.test.ts +5 -5
  336. package/src/__tests__/render-system-extract-dispatch-ordering.test.ts +16 -31
  337. package/src/__tests__/render-system-extract.test.ts +36 -51
  338. package/src/__tests__/render-system-extract.unit.test.ts +360 -0
  339. package/src/__tests__/render-system-fold-bucket.unit.test.ts +3 -5
  340. package/src/__tests__/render-system-fold-fallback.unit.test.ts +6 -3
  341. package/src/__tests__/render-system-fold-material.unit.test.ts +3 -5
  342. package/src/__tests__/render-system-fold-metrics.unit.test.ts +5 -5
  343. package/src/__tests__/render-system-fold-modegate.unit.test.ts +6 -6
  344. package/src/__tests__/render-system-fold.dawn.test.ts +7 -5
  345. package/src/__tests__/render-system-mega.test.ts +292 -190
  346. package/src/__tests__/render-system-owner-split-contract.test.ts +10 -32
  347. package/src/__tests__/render-system-record-multi-material-textureview.test.ts +59 -45
  348. package/src/__tests__/render-system-record-per-submesh-transparency.test.ts +23 -29
  349. package/src/__tests__/render-system-record.test.ts +398 -235
  350. package/src/__tests__/render-system-record.unit.test.ts +25 -26
  351. package/src/__tests__/render-system-skin-bg.unit.test.ts +8 -12
  352. package/src/__tests__/renderer-consumer.test-d.ts +16 -3
  353. package/src/__tests__/renderer-health.unit.test.ts +26 -916
  354. package/src/__tests__/renderer-lifecycle.integration.test.ts +19 -6
  355. package/src/__tests__/renderer-recover.unit.test.ts +49 -1069
  356. package/src/__tests__/renderer-result.test-d.ts +19 -9
  357. package/src/__tests__/renderer-surface.unit.test.ts +3 -5
  358. package/src/__tests__/renderer-test-utils.ts +56 -0
  359. package/src/__tests__/renderer.test-d.ts +61 -0
  360. package/src/__tests__/resolve-asset-handle-err.test.ts +111 -0
  361. package/src/__tests__/resolve-asset-handle.unit.test.ts +64 -0
  362. package/src/__tests__/resolve-depth-only-view.test.ts +1 -1
  363. package/src/__tests__/resolveName-fallback.test.ts +64 -0
  364. package/src/__tests__/resolveName-null-package.test.ts +38 -0
  365. package/src/__tests__/resolveName-unified-entry.test.ts +65 -0
  366. package/src/__tests__/resolveName.test.ts +64 -0
  367. package/src/__tests__/rhi-null-command-flow.unit.test.ts +56 -260
  368. package/src/__tests__/rhi-null-renderer-lifecycle.unit.test.ts +41 -169
  369. package/src/__tests__/roots-to-scene-asset.test.ts +199 -93
  370. package/src/__tests__/roundtrip-primitive.test.ts +351 -0
  371. package/src/__tests__/scene-bare-guid-refs-instantiate.test.ts +123 -0
  372. package/src/__tests__/scene-equirect-roundtrip.test.ts +103 -16
  373. package/src/__tests__/scene-instance-authoring.integration.test.ts +8 -0
  374. package/src/__tests__/scene-instance-bridge.integration.test.ts +1 -1
  375. package/src/__tests__/scene-instance-component.test.ts +1 -1
  376. package/src/__tests__/scene-mount-fixed-point.test.ts +257 -0
  377. package/src/__tests__/scene-mount-roundtrip.test.ts +987 -0
  378. package/src/__tests__/scene-mount-wrapper-roundtrip.test.ts +202 -0
  379. package/src/__tests__/scene-sugar-instantiate.test.ts +324 -0
  380. package/src/__tests__/serialize-mounts-roundtrip.test.ts +533 -0
  381. package/src/__tests__/serialize-scene-asset.test.ts +219 -22
  382. package/src/__tests__/shadow-caster-empty-schema.test.ts +3 -3
  383. package/src/__tests__/shadow-csm-cascade-loadop.test.ts +37 -17
  384. package/src/__tests__/shadow-csm-component.test.ts +3 -5
  385. package/src/__tests__/shadow-csm-extract.test.ts +2 -100
  386. package/src/__tests__/shadow-csm-orthoz.test.ts +2 -16
  387. package/src/__tests__/shadow-csm-runtime-vary.dawn.test.ts +19 -14
  388. package/src/__tests__/shadow-csm-tile-consistency.test.ts +32 -26
  389. package/src/__tests__/shadow-csm-ubo.dawn.test.ts +8 -49
  390. package/src/__tests__/shadow-csm-ubo.test.ts +3 -25
  391. package/src/__tests__/shadow-csm-viewport.browser.test.ts +1 -1
  392. package/src/__tests__/shadow-fields-observable.dawn.test.ts +67 -56
  393. package/src/__tests__/shadow-m1.dawn.test.ts +8 -9
  394. package/src/__tests__/shadow-mesh-ssbo-order.test.ts +11 -27
  395. package/src/__tests__/skin-errors.unit.test.ts +1 -1
  396. package/src/__tests__/skin-extract-getarrayview-count.unit.test.ts +7 -5
  397. package/src/__tests__/skylight-lazy-projection.test.ts +36 -15
  398. package/src/__tests__/sparse-tag-scene-roundtrip.test.ts +5 -5
  399. package/src/__tests__/sprite-cullmode-flip.dawn.test.ts +47 -64
  400. package/src/__tests__/sprite-lit-bgl-byte-identical.test.ts +15 -14
  401. package/src/__tests__/sprite-lit-extract-branch.test.ts +1 -1
  402. package/src/__tests__/sprite-lit-pipeline-cache-key.test.ts +1 -1
  403. package/src/__tests__/ssao-bgl.test.ts +16 -9
  404. package/src/__tests__/ssao-buffers.test.ts +2 -2
  405. package/src/__tests__/ssao-data.test.ts +2 -2
  406. package/src/__tests__/ssao-errors.test.ts +1 -1
  407. package/src/__tests__/ssao-passes.test.ts +68 -392
  408. package/src/__tests__/ssao-pipelines.test.ts +1 -1
  409. package/src/__tests__/ssao-uniform-layout.test.ts +8 -6
  410. package/src/__tests__/stencil-outline-pixel.dawn.test.ts +25 -17
  411. package/src/__tests__/swap-chain-format.unit.test.ts +5 -7
  412. package/src/__tests__/systems.unit.test.ts +536 -1326
  413. package/src/__tests__/template-game-default-api-contract.test.ts +362 -0
  414. package/src/__tests__/text.unit.test.ts +56 -33
  415. package/src/__tests__/tilemap-childed-despawn.test.ts +8 -14
  416. package/src/__tests__/tilemap-chunk-extract.overhang-bounds.test.ts +8 -12
  417. package/src/__tests__/tilemap-chunk-extract.propagate-order.test.ts +2 -1
  418. package/src/__tests__/tilemap-chunk-extract.test.ts +13 -17
  419. package/src/__tests__/tilemap-dirty-rebuild.test.ts +7 -11
  420. package/src/__tests__/tilemap-material-cache.test.ts +8 -13
  421. package/src/__tests__/tilemap-multi-atlas.test.ts +12 -32
  422. package/src/__tests__/tilemap-owner-boundary.unit.test.ts +5 -2
  423. package/src/__tests__/tilemap-region-pack.test.ts +8 -12
  424. package/src/__tests__/tilemap-spawn-flip-pivot.test.ts +8 -12
  425. package/src/__tests__/tilemap-uv-inset.test.ts +11 -14
  426. package/src/__tests__/tilemap-validate.test.ts +1 -1
  427. package/src/__tests__/tileset-asset-validate.test.ts +638 -0
  428. package/src/__tests__/transcode-fallback.unit.test.ts +207 -0
  429. package/src/__tests__/transform-hierarchy-pixel-diff.dawn.test.ts +36 -28
  430. package/src/__tests__/transient-fields-collect.test.ts +28 -21
  431. package/src/__tests__/transient-runtime-behavior.test.ts +227 -0
  432. package/src/__tests__/transparent-sort-tilemap-sprite-interleave.test.ts +4 -4
  433. package/src/__tests__/variant-selection.unit.test.ts +1 -1
  434. package/src/__tests__/video-extract-bindgroup.dawn.test.ts +89 -136
  435. package/src/__tests__/video-loader-consumption.test.ts +86 -0
  436. package/src/__tests__/video-loader-smoke.dawn.test.ts +60 -0
  437. package/src/__tests__/view-ubo-layout.browser.test.ts +0 -22
  438. package/src/__tests__/world-entity-key.test.ts +1 -1
  439. package/src/__tests__/world-scene-despawn.test.ts +1 -1
  440. package/src/__tests__/world-scene-instantiate.test.ts +2 -36
  441. package/src/__tests__/world-scene-nested.test.ts +1 -1
  442. package/src/__tests__/world-scene-override.test.ts +1 -1
  443. package/src/backend-selection.ts +69 -0
  444. package/src/collect-scene-asset.ts +35 -23
  445. package/src/components/__tests__/camera.test-d.ts +1 -1
  446. package/src/components/__tests__/camera.test.ts +1 -1
  447. package/src/components/__tests__/sprite-animation.test-d.ts +2 -2
  448. package/src/components/__tests__/tile-layer.test-d.ts +1 -1
  449. package/src/components/__tests__/tile-layer.unit.test.ts +2 -2
  450. package/src/createRenderer.ts +24 -36
  451. package/src/errors/environment.ts +1 -1
  452. package/src/index.ts +51 -113
  453. package/src/renderer-host.ts +33 -0
  454. package/src/scene-instances/__tests__/post-spawn-resolve-joints.unit.test.ts +1 -1
  455. package/src/scene-instances/index.ts +4 -0
  456. package/src/scene-utils/mount-override-fold.ts +3 -7
  457. package/src/systems/__tests__/transparent-sort.bench.ts +3 -3
  458. package/src/systems/sprite-animation-tick.ts +1 -1
  459. package/src/systems/transparent-sort.ts +38 -38
  460. package/src/tilemap-register-validate.ts +4 -4
  461. package/dist/__tests__/bind-group-cache-binding.test.d.ts +0 -2
  462. package/dist/__tests__/bind-group-cache-binding.test.d.ts.map +0 -1
  463. package/dist/__tests__/bind-group-cache-frame.test.d.ts +0 -2
  464. package/dist/__tests__/bind-group-cache-frame.test.d.ts.map +0 -1
  465. package/dist/__tests__/dawn/mesh-update.dawn.test.d.ts +0 -2
  466. package/dist/__tests__/dawn/mesh-update.dawn.test.d.ts.map +0 -1
  467. package/dist/__tests__/dispatch-fullscreen-pass-composite-swapchain.dawn.test.d.ts +0 -2
  468. package/dist/__tests__/dispatch-fullscreen-pass-composite-swapchain.dawn.test.d.ts.map +0 -1
  469. package/dist/__tests__/dispatch-fullscreen-pass-custom-reads.dawn.test.d.ts +0 -2
  470. package/dist/__tests__/dispatch-fullscreen-pass-custom-reads.dawn.test.d.ts.map +0 -1
  471. package/dist/__tests__/dispatch-fullscreen-pass-depth-composite.dawn.test.d.ts +0 -2
  472. package/dist/__tests__/dispatch-fullscreen-pass-depth-composite.dawn.test.d.ts.map +0 -1
  473. package/dist/__tests__/dispatch-fullscreen-pass-params.unit.test.d.ts +0 -2
  474. package/dist/__tests__/dispatch-fullscreen-pass-params.unit.test.d.ts.map +0 -1
  475. package/dist/__tests__/fog-producer-manifest.d.ts +0 -131
  476. package/dist/__tests__/fog-producer-manifest.d.ts.map +0 -1
  477. package/dist/__tests__/fog-producer-pixel-probe.d.ts +0 -42
  478. package/dist/__tests__/fog-producer-pixel-probe.d.ts.map +0 -1
  479. package/dist/__tests__/fog-producer-pixel.browser.test.d.ts +0 -2
  480. package/dist/__tests__/fog-producer-pixel.browser.test.d.ts.map +0 -1
  481. package/dist/__tests__/fog-producer-pixel.dawn.test.d.ts +0 -2
  482. package/dist/__tests__/fog-producer-pixel.dawn.test.d.ts.map +0 -1
  483. package/dist/__tests__/fog-producer-real-fixture.d.ts +0 -5
  484. package/dist/__tests__/fog-producer-real-fixture.d.ts.map +0 -1
  485. package/dist/__tests__/fog-producer-vfx-effect.d.ts +0 -3
  486. package/dist/__tests__/fog-producer-vfx-effect.d.ts.map +0 -1
  487. package/dist/__tests__/fog-scene-asset.integration.test.d.ts +0 -2
  488. package/dist/__tests__/fog-scene-asset.integration.test.d.ts.map +0 -1
  489. package/dist/__tests__/gpu-resource-store-cubemap-status.test.d.ts +0 -2
  490. package/dist/__tests__/gpu-resource-store-cubemap-status.test.d.ts.map +0 -1
  491. package/dist/__tests__/gpu-resource.test.d.ts +0 -2
  492. package/dist/__tests__/gpu-resource.test.d.ts.map +0 -1
  493. package/dist/__tests__/hdrp-bgl-slots.browser.test.d.ts +0 -2
  494. package/dist/__tests__/hdrp-bgl-slots.browser.test.d.ts.map +0 -1
  495. package/dist/__tests__/hdrp-buffers.unit.test.d.ts +0 -2
  496. package/dist/__tests__/hdrp-buffers.unit.test.d.ts.map +0 -1
  497. package/dist/__tests__/hdrp-execute-filter.unit.test.d.ts +0 -2
  498. package/dist/__tests__/hdrp-execute-filter.unit.test.d.ts.map +0 -1
  499. package/dist/__tests__/hdrp-gbuffer-attachments.browser.test.d.ts +0 -2
  500. package/dist/__tests__/hdrp-gbuffer-attachments.browser.test.d.ts.map +0 -1
  501. package/dist/__tests__/hdrp-pipeline-asset-type.test-d.d.ts +0 -2
  502. package/dist/__tests__/hdrp-pipeline-asset-type.test-d.d.ts.map +0 -1
  503. package/dist/__tests__/hdrp-ssao-boundary.test.d.ts +0 -2
  504. package/dist/__tests__/hdrp-ssao-boundary.test.d.ts.map +0 -1
  505. package/dist/__tests__/hdrp-ssao-falsification.test.d.ts +0 -2
  506. package/dist/__tests__/hdrp-ssao-falsification.test.d.ts.map +0 -1
  507. package/dist/__tests__/helpers/primitive-world.d.ts +0 -8
  508. package/dist/__tests__/helpers/primitive-world.d.ts.map +0 -1
  509. package/dist/__tests__/helpers/render-asset-port.d.ts +0 -15
  510. package/dist/__tests__/helpers/render-asset-port.d.ts.map +0 -1
  511. package/dist/__tests__/helpers/scene-asset-port.d.ts +0 -9
  512. package/dist/__tests__/helpers/scene-asset-port.d.ts.map +0 -1
  513. package/dist/__tests__/material-derived-coordinates.integration.test.d.ts +0 -2
  514. package/dist/__tests__/material-derived-coordinates.integration.test.d.ts.map +0 -1
  515. package/dist/__tests__/pipeline-layout-selection.test.d.ts +0 -2
  516. package/dist/__tests__/pipeline-layout-selection.test.d.ts.map +0 -1
  517. package/dist/__tests__/post-process-reads-narrowing.test-d.d.ts +0 -2
  518. package/dist/__tests__/post-process-reads-narrowing.test-d.d.ts.map +0 -1
  519. package/dist/__tests__/post-process-register-roundtrip.dawn.test.d.ts +0 -2
  520. package/dist/__tests__/post-process-register-roundtrip.dawn.test.d.ts.map +0 -1
  521. package/dist/__tests__/render-feature-zero-feature.browser.test.d.ts +0 -2
  522. package/dist/__tests__/render-feature-zero-feature.browser.test.d.ts.map +0 -1
  523. package/dist/__tests__/render-pipeline-trivial.dawn.test.d.ts +0 -2
  524. package/dist/__tests__/render-pipeline-trivial.dawn.test.d.ts.map +0 -1
  525. package/dist/__tests__/shadow-csm-caster-membership.test.d.ts +0 -2
  526. package/dist/__tests__/shadow-csm-caster-membership.test.d.ts.map +0 -1
  527. package/dist/__tests__/shadow-csm-pssm.test.d.ts +0 -2
  528. package/dist/__tests__/shadow-csm-pssm.test.d.ts.map +0 -1
  529. package/dist/__tests__/shadow-csm-temporal.browser.test.d.ts +0 -2
  530. package/dist/__tests__/shadow-csm-temporal.browser.test.d.ts.map +0 -1
  531. package/dist/__tests__/shadow-csm-viewport.test.d.ts +0 -2
  532. package/dist/__tests__/shadow-csm-viewport.test.d.ts.map +0 -1
  533. package/dist/__tests__/shadow-m2.dawn.test.d.ts +0 -2
  534. package/dist/__tests__/shadow-m2.dawn.test.d.ts.map +0 -1
  535. package/dist/__tests__/shadow-m3-calibrate-run.dawn.test.d.ts +0 -2
  536. package/dist/__tests__/shadow-m3-calibrate-run.dawn.test.d.ts.map +0 -1
  537. package/dist/__tests__/shadow-m3-calibrate.d.ts +0 -83
  538. package/dist/__tests__/shadow-m3-calibrate.d.ts.map +0 -1
  539. package/dist/__tests__/shadow-m3.dawn.test.d.ts +0 -2
  540. package/dist/__tests__/shadow-m3.dawn.test.d.ts.map +0 -1
  541. package/dist/__tests__/shadow-probe-control-flow.dawn.test.d.ts +0 -2
  542. package/dist/__tests__/shadow-probe-control-flow.dawn.test.d.ts.map +0 -1
  543. package/dist/__tests__/shadow-quality-metrics.dawn.test.d.ts +0 -2
  544. package/dist/__tests__/shadow-quality-metrics.dawn.test.d.ts.map +0 -1
  545. package/dist/__tests__/temporal-off-path.unit.test.d.ts +0 -2
  546. package/dist/__tests__/temporal-off-path.unit.test.d.ts.map +0 -1
  547. package/dist/__tests__/video-cache-regression.unit.test.d.ts +0 -2
  548. package/dist/__tests__/video-cache-regression.unit.test.d.ts.map +0 -1
  549. package/dist/asset-kind.d.ts +0 -4
  550. package/dist/asset-kind.d.ts.map +0 -1
  551. package/dist/errors/sprite-animation.d.ts +0 -3
  552. package/dist/errors/sprite-animation.d.ts.map +0 -1
  553. package/dist/scene-asset-port.d.ts +0 -17
  554. package/dist/scene-asset-port.d.ts.map +0 -1
  555. package/dist/scene-collect-errors.d.ts +0 -22
  556. package/dist/scene-collect-errors.d.ts.map +0 -1
  557. package/dist/shadow-m3-calibrate.d.ts +0 -40
  558. package/dist/shadow-m3-calibrate.d.ts.map +0 -1
  559. package/src/__tests__/bind-group-cache-binding.test.ts +0 -2513
  560. package/src/__tests__/bind-group-cache-frame.test.ts +0 -1511
  561. package/src/__tests__/dispatch-fullscreen-pass-composite-swapchain.dawn.test.ts +0 -204
  562. package/src/__tests__/dispatch-fullscreen-pass-custom-reads.dawn.test.ts +0 -297
  563. package/src/__tests__/dispatch-fullscreen-pass-depth-composite.dawn.test.ts +0 -271
  564. package/src/__tests__/dispatch-fullscreen-pass-params.unit.test.ts +0 -321
  565. package/src/__tests__/fog-producer-manifest.ts +0 -162
  566. package/src/__tests__/fog-producer-pixel-probe.ts +0 -263
  567. package/src/__tests__/fog-producer-pixel.browser.test.ts +0 -26
  568. package/src/__tests__/fog-producer-pixel.dawn.test.ts +0 -55
  569. package/src/__tests__/fog-producer-real-fixture.ts +0 -805
  570. package/src/__tests__/fog-producer-vfx-effect.ts +0 -272
  571. package/src/__tests__/fog-scene-asset.integration.test.ts +0 -123
  572. package/src/__tests__/gpu-resource-store-cubemap-status.test.ts +0 -207
  573. package/src/__tests__/gpu-resource.test.ts +0 -1206
  574. package/src/__tests__/hdrp-bgl-slots.browser.test.ts +0 -50
  575. package/src/__tests__/hdrp-buffers.unit.test.ts +0 -70
  576. package/src/__tests__/hdrp-execute-filter.unit.test.ts +0 -200
  577. package/src/__tests__/hdrp-gbuffer-attachments.browser.test.ts +0 -64
  578. package/src/__tests__/hdrp-pipeline-asset-type.test-d.ts +0 -139
  579. package/src/__tests__/hdrp-ssao-boundary.test.ts +0 -237
  580. package/src/__tests__/hdrp-ssao-falsification.test.ts +0 -289
  581. package/src/__tests__/helpers/primitive-world.ts +0 -91
  582. package/src/__tests__/helpers/render-asset-port.ts +0 -65
  583. package/src/__tests__/helpers/scene-asset-port.ts +0 -23
  584. package/src/__tests__/material-derived-coordinates.integration.test.ts +0 -100
  585. package/src/__tests__/pipeline-layout-selection.test.ts +0 -298
  586. package/src/__tests__/post-process-reads-narrowing.test-d.ts +0 -52
  587. package/src/__tests__/post-process-register-roundtrip.dawn.test.ts +0 -230
  588. package/src/__tests__/render-feature-zero-feature.browser.test.ts +0 -152
  589. package/src/__tests__/render-pipeline-trivial.dawn.test.ts +0 -525
  590. package/src/__tests__/shadow-csm-caster-membership.test.ts +0 -232
  591. package/src/__tests__/shadow-csm-pssm.test.ts +0 -142
  592. package/src/__tests__/shadow-csm-temporal.browser.test.ts +0 -145
  593. package/src/__tests__/shadow-csm-viewport.test.ts +0 -74
  594. package/src/__tests__/shadow-m2.dawn.test.ts +0 -394
  595. package/src/__tests__/shadow-m3-calibrate-run.dawn.test.ts +0 -248
  596. package/src/__tests__/shadow-m3-calibrate.ts +0 -203
  597. package/src/__tests__/shadow-m3.dawn.test.ts +0 -288
  598. package/src/__tests__/shadow-probe-control-flow.dawn.test.ts +0 -264
  599. package/src/__tests__/shadow-quality-metrics.dawn.test.ts +0 -324
  600. package/src/__tests__/temporal-off-path.unit.test.ts +0 -69
  601. package/src/__tests__/video-cache-regression.unit.test.ts +0 -186
  602. package/src/asset-kind.ts +0 -7
  603. package/src/errors/sprite-animation.ts +0 -5
  604. package/src/scene-asset-port.ts +0 -32
  605. package/src/scene-collect-errors.ts +0 -30
  606. package/src/shadow-m3-calibrate.ts +0 -171
@@ -26,14 +26,14 @@
26
26
  // depthWriteEnabled=false existing mechanism)
27
27
  // plan-strategy §4 risk "cross-world Overlay sort fails" countermeasure
28
28
 
29
+ import { AssetRegistry } from '@forgeax/engine-assets-runtime';
29
30
  import { World } from '@forgeax/engine-ecs';
30
- import type { RenderAssetPort } from '@forgeax/engine-render/internal';
31
- import { Camera, extractFrames, MeshFilter, MeshRenderer } from '@forgeax/engine-render/internal';
31
+ import { Camera, MeshFilter, MeshRenderer } from '@forgeax/engine-render';
32
32
  import { Transform } from '@forgeax/engine-scene';
33
33
  import { ShaderRegistry, type ShaderRegistryDevice } from '@forgeax/engine-shader';
34
34
  import type { Handle, MaterialAsset, MaterialPass, MeshAsset } from '@forgeax/engine-types';
35
35
  import { describe, expect, it } from 'vitest';
36
- import { createTestRenderAssetOwner } from './helpers/render-asset-port';
36
+ import { extractFrames } from '../../../render/src/render-system-extract';
37
37
 
38
38
  // Two-index owner shape w4-w6 introduces (see w1 for rationale).
39
39
  interface OwnerSplit {
@@ -43,7 +43,7 @@ interface OwnerSplit {
43
43
  type ExtractFramesOwnerSplit = (
44
44
  worlds: readonly World[],
45
45
  owner: OwnerSplit,
46
- assets?: RenderAssetPort | null,
46
+ assets?: AssetRegistry | null,
47
47
  ) => ReturnType<typeof extractFrames>;
48
48
  const extractFramesSplit = extractFrames as unknown as ExtractFramesOwnerSplit;
49
49
 
@@ -144,7 +144,7 @@ describe('cross-world Overlay queue merge (w2, AC-03)', () => {
144
144
  // editorWorld (index 1): the gizmo overlay renderable at queue=4000.
145
145
  const editorWorld = makeRenderableWorld(QUEUE_OVERLAY);
146
146
 
147
- const assets = createTestRenderAssetOwner(makeShaderRegistry());
147
+ const assets = new AssetRegistry(makeShaderRegistry());
148
148
  // cameraOwner=0 (scene camera), resourceOwner=0 (scene singletons); the
149
149
  // editorWorld contributes renderables that must merge into the global queue.
150
150
  const frame = extractFramesSplit(
@@ -2,7 +2,7 @@
2
2
  //
3
3
  // Regression lock for the M2.5 `pendingDispatch` + `flushPendingDispatch`
4
4
  // pairing that ships with the Stage 1 aabb restore. After M1 restored
5
- // The quad primitive's local-space aabb lets builtin quads enter the frustum-cull
5
+ // HANDLE_QUAD's local-space aabb, builtin quads enter the frustum-cull
6
6
  // three-gate branch at `render-system-extract.ts` like any user asset.
7
7
  // Before M2.5 the three `dispatch.push` sites ran BEFORE the cull `continue`
8
8
  // so a culled entity left dangling dispatch entries whose `renderableIndex`
@@ -49,21 +49,14 @@
49
49
  // cross-stage checks live in the hello-shadow-opt-out / deferred-shading
50
50
  // dawn smokes (per plan-strategy §5.5).
51
51
 
52
+ import { AssetRegistry, HANDLE_QUAD } from '@forgeax/engine-assets-runtime';
52
53
  import { World } from '@forgeax/engine-ecs';
53
- import { createPrimitiveMesh } from '@forgeax/engine-geometry';
54
- import {
55
- Camera,
56
- extractFrame,
57
- Instances,
58
- MeshFilter,
59
- MeshRenderer,
60
- prepareExtractContext,
61
- } from '@forgeax/engine-render/internal';
54
+ import { Camera, Instances, MeshFilter, MeshRenderer } from '@forgeax/engine-render';
62
55
  import { propagateTransforms, Transform } from '@forgeax/engine-scene';
63
56
  import type { MaterialAsset } from '@forgeax/engine-types';
64
57
  import { describe, expect, it } from 'vitest';
58
+ import { extractFrame, prepareExtractContext } from '../../../render/src/render-system-extract';
65
59
  import { makeMockShaderRegistry } from './helpers/mock-shader-registry';
66
- import { createTestRenderAssetOwner } from './helpers/render-asset-port';
67
60
 
68
61
  function identityTransform() {
69
62
  return {
@@ -123,10 +116,6 @@ function registerUnlitMaterial(world: World, rgb: readonly [number, number, numb
123
116
  });
124
117
  }
125
118
 
126
- function createQuadHandle(world: World) {
127
- return world.internSharedRef('MeshAsset', createPrimitiveMesh('quad').unwrap());
128
- }
129
-
130
119
  function expectSlotAlignment(
131
120
  frame: ReturnType<typeof extractFrame>,
132
121
  { requireBaseColorEquality }: { requireBaseColorEquality: boolean },
@@ -156,8 +145,7 @@ describe('render-system-extract M2.5 dispatch/renderable slot pairing (AC-06)',
156
145
  // renderable pushes into slot 0. Distinct materials make the aliasing
157
146
  // observable via paramSnapshot.baseColor equality.
158
147
  const world = new World();
159
- const quadHandle = createQuadHandle(world);
160
- const assets = createTestRenderAssetOwner(makeMockShaderRegistry());
148
+ const assets = new AssetRegistry(makeMockShaderRegistry());
161
149
  spawnFrontFacingCamera(world);
162
150
 
163
151
  const matGreen = registerUnlitMaterial(world, [0, 1, 0]);
@@ -166,14 +154,14 @@ describe('render-system-extract M2.5 dispatch/renderable slot pairing (AC-06)',
166
154
  world
167
155
  .spawn(
168
156
  { component: Transform, data: transformAtZ(100) },
169
- { component: MeshFilter, data: { assetHandle: quadHandle } },
157
+ { component: MeshFilter, data: { assetHandle: HANDLE_QUAD } },
170
158
  { component: MeshRenderer, data: { materials: [matGreen] } },
171
159
  )
172
160
  .unwrap();
173
161
  world
174
162
  .spawn(
175
163
  { component: Transform, data: identityTransform() },
176
- { component: MeshFilter, data: { assetHandle: quadHandle } },
164
+ { component: MeshFilter, data: { assetHandle: HANDLE_QUAD } },
177
165
  { component: MeshRenderer, data: { materials: [matRed] } },
178
166
  )
179
167
  .unwrap();
@@ -201,20 +189,19 @@ describe('render-system-extract M2.5 dispatch/renderable slot pairing (AC-06)',
201
189
  // at push-sites B and C. plan-strategy §D-7 explicitly names this branch
202
190
  // as part of the M2.5 fix scope (shadow-opt-out AC-13 depends on it).
203
191
  const world = new World();
204
- const quadHandle = createQuadHandle(world);
205
192
  spawnFrontFacingCamera(world);
206
193
 
207
194
  world
208
195
  .spawn(
209
196
  { component: Transform, data: transformAtZ(100) },
210
- { component: MeshFilter, data: { assetHandle: quadHandle } },
197
+ { component: MeshFilter, data: { assetHandle: HANDLE_QUAD } },
211
198
  { component: MeshRenderer, data: {} as never },
212
199
  )
213
200
  .unwrap();
214
201
  world
215
202
  .spawn(
216
203
  { component: Transform, data: identityTransform() },
217
- { component: MeshFilter, data: { assetHandle: quadHandle } },
204
+ { component: MeshFilter, data: { assetHandle: HANDLE_QUAD } },
218
205
  { component: MeshRenderer, data: {} as never },
219
206
  )
220
207
  .unwrap();
@@ -243,8 +230,7 @@ describe('render-system-extract M2.5 dispatch/renderable slot pairing (AC-06)',
243
230
  // Transform + local aabb (pre-instance transforms), so an Instances
244
231
  // entity at posZ=100 is culled the same way a plain entity is.
245
232
  const world = new World();
246
- const quadHandle = createQuadHandle(world);
247
- const assets = createTestRenderAssetOwner(makeMockShaderRegistry());
233
+ const assets = new AssetRegistry(makeMockShaderRegistry());
248
234
  spawnFrontFacingCamera(world);
249
235
 
250
236
  const matBlue = registerUnlitMaterial(world, [0, 0, 1]);
@@ -263,7 +249,7 @@ describe('render-system-extract M2.5 dispatch/renderable slot pairing (AC-06)',
263
249
  world
264
250
  .spawn(
265
251
  { component: Transform, data: transformAtZ(100) },
266
- { component: MeshFilter, data: { assetHandle: quadHandle } },
252
+ { component: MeshFilter, data: { assetHandle: HANDLE_QUAD } },
267
253
  { component: MeshRenderer, data: { materials: [matBlue] } },
268
254
  { component: Instances, data: { transforms: instanceTransforms } },
269
255
  )
@@ -271,7 +257,7 @@ describe('render-system-extract M2.5 dispatch/renderable slot pairing (AC-06)',
271
257
  world
272
258
  .spawn(
273
259
  { component: Transform, data: identityTransform() },
274
- { component: MeshFilter, data: { assetHandle: quadHandle } },
260
+ { component: MeshFilter, data: { assetHandle: HANDLE_QUAD } },
275
261
  { component: MeshRenderer, data: { materials: [matYellow] } },
276
262
  { component: Instances, data: { transforms: instanceTransforms } },
277
263
  )
@@ -289,14 +275,13 @@ describe('render-system-extract M2.5 dispatch/renderable slot pairing (AC-06)',
289
275
  expectSlotAlignment(frame, { requireBaseColorEquality: true });
290
276
  });
291
277
 
292
- it('push A + flush 3 negative path (all quad entities out of view): zero renderables and zero dispatch', () => {
293
- // Edge case from requirements §edge-cases row 4: with all quad
278
+ it('push A + flush 3 negative path (all HANDLE_QUAD entities out of view): zero renderables and zero dispatch', () => {
279
+ // Edge case from requirements §edge-cases row 4: with all HANDLE_QUAD
294
280
  // entities off-frustum, `renderables` and `dispatch` both empty; the
295
281
  // per-entity `pendingDispatch` is dropped on every cull `continue` so
296
282
  // no dangling entries leak into the shared `dispatch[]`.
297
283
  const world = new World();
298
- const quadHandle = createQuadHandle(world);
299
- const assets = createTestRenderAssetOwner(makeMockShaderRegistry());
284
+ const assets = new AssetRegistry(makeMockShaderRegistry());
300
285
  spawnFrontFacingCamera(world);
301
286
 
302
287
  const matGrey = registerUnlitMaterial(world, [0.5, 0.5, 0.5]);
@@ -304,7 +289,7 @@ describe('render-system-extract M2.5 dispatch/renderable slot pairing (AC-06)',
304
289
  world
305
290
  .spawn(
306
291
  { component: Transform, data: transformAtZ(100 + n) },
307
- { component: MeshFilter, data: { assetHandle: quadHandle } },
292
+ { component: MeshFilter, data: { assetHandle: HANDLE_QUAD } },
308
293
  { component: MeshRenderer, data: { materials: [matGrey] } },
309
294
  )
310
295
  .unwrap();
@@ -6,22 +6,18 @@
6
6
  // Each original file body sits in its own block-scope so helper names
7
7
  // cannot collide; describe() inside still registers globally with vitest.
8
8
 
9
+ import { AssetRegistry, HANDLE_CUBE, resolveAssetHandle } from '@forgeax/engine-assets-runtime';
9
10
  import { World } from '@forgeax/engine-ecs';
10
- import { createPrimitiveMesh } from '@forgeax/engine-geometry';
11
11
  import { mat4, vec3 } from '@forgeax/engine-math';
12
12
  import { AssetGuid } from '@forgeax/engine-pack/guid';
13
- import type { RenderAssetPort } from '@forgeax/engine-render/internal';
14
13
  import {
15
14
  Camera,
16
15
  DirectionalLight,
17
- extractFrame,
18
- extractFrames,
19
16
  MeshFilter,
20
17
  MeshRenderer,
21
18
  PointLight,
22
- prepareExtractContext,
23
19
  SpotLight,
24
- } from '@forgeax/engine-render/internal';
20
+ } from '@forgeax/engine-render';
25
21
  import { ChildOf, propagateTransforms, Transform } from '@forgeax/engine-scene';
26
22
  import { ShaderRegistry, type ShaderRegistryDevice } from '@forgeax/engine-shader';
27
23
  import type {
@@ -33,12 +29,12 @@ import type {
33
29
  } from '@forgeax/engine-types';
34
30
  import { srgbChannelToLinear } from '@forgeax/engine-types';
35
31
  import { describe, expect, it, vi } from 'vitest';
36
- import { makeMockShaderRegistry } from './helpers/mock-shader-registry';
37
32
  import {
38
- createTestRenderAssetOwner,
39
- createTestRenderAssetStore,
40
- type TestRenderAssetResolver,
41
- } from './helpers/render-asset-port';
33
+ extractFrame,
34
+ extractFrames,
35
+ prepareExtractContext,
36
+ } from '../../../render/src/render-system-extract';
37
+ import { makeMockShaderRegistry } from './helpers/mock-shader-registry';
42
38
 
43
39
  // ─── from render-system-extract.test.ts ───
44
40
  {
@@ -153,15 +149,11 @@ import {
153
149
  });
154
150
  }
155
151
 
156
- function registerBuiltinCube(world: World): Handle<'MeshAsset', 'shared'> {
157
- return world.internSharedRef('MeshAsset', createPrimitiveMesh('cube').unwrap());
158
- }
159
-
160
152
  describe('render-system-extract consumer migration (w9, AC-07 / AC-15)', () => {
161
153
  it('reuses one frame-local material snapshot for repeated shared handles', () => {
162
154
  const world = new World();
163
155
  spawnCamera(world);
164
- const assets = createTestRenderAssetOwner(makeMockShaderRegistry());
156
+ const assets = new AssetRegistry(makeMockShaderRegistry());
165
157
  const mesh = registerMesh(world);
166
158
  const material = registerMaterial(world);
167
159
 
@@ -188,7 +180,6 @@ import {
188
180
 
189
181
  it('mesh-walk: RenderableSnapshot.transform.world is the resolved world mat4 (parent x child), zero per-snapshot compose', () => {
190
182
  const world = new World();
191
- const cubeHandle = registerBuiltinCube(world);
192
183
  world
193
184
  .spawn(
194
185
  { component: Transform, data: { ...identity(), pos: [12, 3, 5] } },
@@ -202,7 +193,7 @@ import {
202
193
  .spawn(
203
194
  { component: Transform, data: { ...identity(), pos: [2, 3, 0] } },
204
195
  { component: ChildOf, data: { parent } },
205
- { component: MeshFilter, data: { assetHandle: cubeHandle } },
196
+ { component: MeshFilter, data: { assetHandle: HANDLE_CUBE } },
206
197
  { component: MeshRenderer, data: {} },
207
198
  )
208
199
  .unwrap();
@@ -223,7 +214,6 @@ import {
223
214
 
224
215
  it('mesh-walk: flat root world mat4 equals compose(local)', () => {
225
216
  const world = new World();
226
- const cubeHandle = registerBuiltinCube(world);
227
217
  world
228
218
  .spawn(
229
219
  { component: Transform, data: { ...identity(), pos: [5, 6, 12] } },
@@ -233,7 +223,7 @@ import {
233
223
  world
234
224
  .spawn(
235
225
  { component: Transform, data: { ...identity(), pos: [5, 6, 7], scale: [2, 1, 1] } },
236
- { component: MeshFilter, data: { assetHandle: cubeHandle } },
226
+ { component: MeshFilter, data: { assetHandle: HANDLE_CUBE } },
237
227
  { component: MeshRenderer, data: {} },
238
228
  )
239
229
  .unwrap();
@@ -380,12 +370,11 @@ import {
380
370
 
381
371
  it('AC-02: builtin MeshAsset AABB enters the same frustum path as imported meshes', () => {
382
372
  const world = new World();
383
- const cubeHandle = registerBuiltinCube(world);
384
373
  spawnCamera(world);
385
374
  world
386
375
  .spawn(
387
376
  { component: Transform, data: { ...identity(), pos: [0, 0, 200] } },
388
- { component: MeshFilter, data: { assetHandle: cubeHandle } },
377
+ { component: MeshFilter, data: { assetHandle: HANDLE_CUBE } },
389
378
  { component: MeshRenderer, data: {} },
390
379
  )
391
380
  .unwrap();
@@ -407,18 +396,17 @@ import {
407
396
  .unwrap();
408
397
 
409
398
  const sceneWorld = new World();
410
- const cubeHandle = registerBuiltinCube(sceneWorld);
411
399
  sceneWorld
412
400
  .spawn(
413
401
  { component: Transform, data: { ...identity(), pos: [0, 0, 0] } },
414
- { component: MeshFilter, data: { assetHandle: cubeHandle } },
402
+ { component: MeshFilter, data: { assetHandle: HANDLE_CUBE } },
415
403
  { component: MeshRenderer, data: {} },
416
404
  )
417
405
  .unwrap();
418
406
  sceneWorld
419
407
  .spawn(
420
408
  { component: Transform, data: { ...identity(), pos: [0, 0, 200] } },
421
- { component: MeshFilter, data: { assetHandle: cubeHandle } },
409
+ { component: MeshFilter, data: { assetHandle: HANDLE_CUBE } },
422
410
  { component: MeshRenderer, data: {} },
423
411
  )
424
412
  .unwrap();
@@ -477,12 +465,11 @@ import {
477
465
 
478
466
  it('AC-15: mesh-walk reads world via the column array view, not a per-renderable world.get materialization', () => {
479
467
  const world = new World();
480
- const cubeHandle = registerBuiltinCube(world);
481
468
  spawnCamera(world);
482
469
  world
483
470
  .spawn(
484
471
  { component: Transform, data: { ...identity(), pos: [1, 2, 3] } },
485
- { component: MeshFilter, data: { assetHandle: cubeHandle } },
472
+ { component: MeshFilter, data: { assetHandle: HANDLE_CUBE } },
486
473
  { component: MeshRenderer, data: {} },
487
474
  )
488
475
  .unwrap();
@@ -580,7 +567,7 @@ import {
580
567
  // that GUID; the returned handle is what MeshRenderer.materials carries.
581
568
  function registerMaterial(
582
569
  world: World,
583
- resolver: TestRenderAssetResolver,
570
+ assets: AssetRegistry,
584
571
  passes: MaterialPass[] | undefined,
585
572
  parentGuid?: AssetGuid,
586
573
  values?: Readonly<Record<string, unknown>>,
@@ -594,7 +581,7 @@ import {
594
581
  (asset as { parent: AssetGuid }).parent = parentGuid;
595
582
  }
596
583
  const guid = AssetGuid.random();
597
- resolver.publish(AssetGuid.format(guid), asset);
584
+ assets.catalog(guid, asset);
598
585
  const handle = world.allocSharedRef<'MaterialAsset', MaterialAsset>('MaterialAsset', asset);
599
586
  return { handle, guid };
600
587
  }
@@ -665,11 +652,11 @@ import {
665
652
  it('AC-05 core signal: child no-passes inherits passes from parent via extract', () => {
666
653
  const world = makeWorldWithComponents();
667
654
  spawnCamera(world);
668
- const { port: assets, resolver } = createTestRenderAssetStore(makeMockShaderRegistry());
655
+ const assets = new AssetRegistry(makeMockShaderRegistry());
669
656
  const mesh = registerTestMesh(world);
670
657
 
671
- const parentMat = registerMaterial(world, resolver, [FORWARD_PBR_PASS]);
672
- const childMat = registerMaterial(world, resolver, undefined, parentMat.guid);
658
+ const parentMat = registerMaterial(world, assets, [FORWARD_PBR_PASS]);
659
+ const childMat = registerMaterial(world, assets, undefined, parentMat.guid);
673
660
 
674
661
  spawnRenderable(world, mesh, childMat.handle);
675
662
 
@@ -692,14 +679,14 @@ import {
692
679
  it('AC-06 shoot-76 equivalent: N children inherit from 1 parent', () => {
693
680
  const world = makeWorldWithComponents();
694
681
  spawnCamera(world);
695
- const { port: assets, resolver } = createTestRenderAssetStore(makeMockShaderRegistry());
682
+ const assets = new AssetRegistry(makeMockShaderRegistry());
696
683
  const mesh = registerTestMesh(world);
697
684
 
698
- const parentMat = registerMaterial(world, resolver, [FORWARD_PBR_PASS]);
685
+ const parentMat = registerMaterial(world, assets, [FORWARD_PBR_PASS]);
699
686
 
700
687
  const childCount = 76;
701
688
  for (let i = 0; i < childCount; i++) {
702
- const childMat = registerMaterial(world, resolver, undefined, parentMat.guid);
689
+ const childMat = registerMaterial(world, assets, undefined, parentMat.guid);
703
690
  // Spread across Z axis (0 to -60) so all entities stay within
704
691
  // the perspective camera frustum (far=100, fov=PI/4 at (0,0,5)).
705
692
  spawnRenderable(world, mesh, childMat.handle, 0, 0, -i * 0.8);
@@ -726,14 +713,14 @@ import {
726
713
  it('AC-06 values shallow-merge: child overrides parent, parent-only key retained', () => {
727
714
  const world = makeWorldWithComponents();
728
715
  spawnCamera(world);
729
- const { port: assets, resolver } = createTestRenderAssetStore(makeMockShaderRegistry());
716
+ const assets = new AssetRegistry(makeMockShaderRegistry());
730
717
  const mesh = registerTestMesh(world);
731
718
 
732
- const parentMat = registerMaterial(world, resolver, [FORWARD_PBR_PASS], undefined, {
719
+ const parentMat = registerMaterial(world, assets, [FORWARD_PBR_PASS], undefined, {
733
720
  metallic: 0.3,
734
721
  roughness: 0.7,
735
722
  });
736
- const childMat = registerMaterial(world, resolver, undefined, parentMat.guid, {
723
+ const childMat = registerMaterial(world, assets, undefined, parentMat.guid, {
737
724
  metallic: 0.9,
738
725
  });
739
726
 
@@ -759,10 +746,10 @@ import {
759
746
  it('no-parent regression: material without parent still extracts correctly', () => {
760
747
  const world = makeWorldWithComponents();
761
748
  spawnCamera(world);
762
- const { port: assets, resolver } = createTestRenderAssetStore(makeMockShaderRegistry());
749
+ const assets = new AssetRegistry(makeMockShaderRegistry());
763
750
  const mesh = registerTestMesh(world);
764
751
 
765
- const mat = registerMaterial(world, resolver, [FORWARD_UNLIT_PASS], undefined, {
752
+ const mat = registerMaterial(world, assets, [FORWARD_UNLIT_PASS], undefined, {
766
753
  baseColor: [0.2, 0.3, 0.4],
767
754
  });
768
755
 
@@ -877,10 +864,10 @@ import {
877
864
 
878
865
  function spawnSpriteScene(values: Record<string, unknown>): {
879
866
  world: World;
880
- assets: RenderAssetPort;
867
+ assets: AssetRegistry;
881
868
  } {
882
869
  const world = new World();
883
- const assets = createTestRenderAssetOwner(makeShaderRegistryWithSprite());
870
+ const assets = new AssetRegistry(makeShaderRegistryWithSprite());
884
871
  const mesh = registerSpriteMesh(world);
885
872
  const matHandle = world.allocSharedRef<'MaterialAsset', MaterialAsset>('MaterialAsset', {
886
873
  kind: 'material',
@@ -1219,12 +1206,10 @@ import {
1219
1206
  describe('render-system-extract heightTexture (4th texture) snapshot pass-through (M2 w3)', () => {
1220
1207
  it('resolves a binary AssetGuid texture reference through the material owner path', () => {
1221
1208
  const world = new World();
1222
- const { port: assets, resolver } = createTestRenderAssetStore(
1223
- makeShaderRegistryWithParallax(),
1224
- );
1209
+ const assets = new AssetRegistry(makeShaderRegistryWithParallax());
1225
1210
  const mesh = registerQuadMesh(world);
1226
1211
  const textureGuid = AssetGuid.random();
1227
- resolver.publish(AssetGuid.format(textureGuid), {
1212
+ assets.catalog(textureGuid, {
1228
1213
  kind: 'texture',
1229
1214
  width: 1,
1230
1215
  height: 1,
@@ -1251,14 +1236,14 @@ import {
1251
1236
  const frame = extractFrame(world, prepareExtractContext(world, { assets }));
1252
1237
  const textureHandle = frame.renderables[0]?.material.textureHandles?.get('baseColorTexture');
1253
1238
  expect(textureHandle).toBeDefined();
1254
- expect(
1255
- world.sharedRefs.resolve<string, TextureAsset>(textureHandle as never).unwrap().kind,
1256
- ).toBe('texture');
1239
+ expect(resolveAssetHandle<TextureAsset>(world, textureHandle as never).unwrap().kind).toBe(
1240
+ 'texture',
1241
+ );
1257
1242
  });
1258
1243
 
1259
1244
  it('MaterialSnapshot.textureHandles carries heightTexture handle (non-undefined, matches input)', () => {
1260
1245
  const world = new World();
1261
- const assets = createTestRenderAssetOwner(makeShaderRegistryWithParallax());
1246
+ const assets = new AssetRegistry(makeShaderRegistryWithParallax());
1262
1247
  const mesh = registerQuadMesh(world);
1263
1248
 
1264
1249
  const baseColorHandle = makeTextureHandle(world);
@@ -1331,7 +1316,7 @@ import {
1331
1316
 
1332
1317
  it('keeps built-in PBR texture handles when its manifest schema is empty', () => {
1333
1318
  const world = new World();
1334
- const assets = createTestRenderAssetOwner(makeShaderRegistryWithEmptyBuiltinPbrSchema());
1319
+ const assets = new AssetRegistry(makeShaderRegistryWithEmptyBuiltinPbrSchema());
1335
1320
  const mesh = registerQuadMesh(world);
1336
1321
  const baseColorHandle = makeTextureHandle(world);
1337
1322
  const metallicRoughnessHandle = makeTextureHandle(world);