@forgeax/engine-render 0.1.3 → 0.1.6

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 (918) hide show
  1. package/README.md +130 -641
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/__tests__/device-scope-lifecycle.unit.test.d.ts +2 -0
  4. package/dist/__tests__/device-scope-lifecycle.unit.test.d.ts.map +1 -0
  5. package/dist/__tests__/device-scope-stale-matrix.unit.test.d.ts +2 -0
  6. package/dist/__tests__/device-scope-stale-matrix.unit.test.d.ts.map +1 -0
  7. package/dist/__tests__/fullscreen-feature-plan.unit.test.d.ts +2 -0
  8. package/dist/__tests__/fullscreen-feature-plan.unit.test.d.ts.map +1 -0
  9. package/dist/__tests__/gpu-driven-indirect-raster-evidence.d.ts.map +1 -1
  10. package/dist/__tests__/gpu-driven-view-gpu-evidence.d.ts +6 -0
  11. package/dist/__tests__/gpu-driven-view-gpu-evidence.d.ts.map +1 -1
  12. package/dist/{gpu-driven/view-reference.d.ts → __tests__/gpu-driven-view-reference.d.ts} +4 -4
  13. package/dist/__tests__/gpu-driven-view-reference.d.ts.map +1 -0
  14. package/dist/__tests__/gpu-scene-render-graph-gpu.d.ts.map +1 -1
  15. package/dist/__tests__/ibl/face-uniforms.unit.test.d.ts +2 -0
  16. package/dist/__tests__/ibl/face-uniforms.unit.test.d.ts.map +1 -0
  17. package/dist/__tests__/morph-feature-plan.unit.test.d.ts +2 -0
  18. package/dist/__tests__/morph-feature-plan.unit.test.d.ts.map +1 -0
  19. package/dist/__tests__/render-feature-plan.test-d.d.ts +2 -0
  20. package/dist/__tests__/render-feature-plan.test-d.d.ts.map +1 -0
  21. package/dist/__tests__/render-feature-plan.unit.test.d.ts +2 -0
  22. package/dist/__tests__/render-feature-plan.unit.test.d.ts.map +1 -0
  23. package/dist/__tests__/ssao-config.unit.test.d.ts +2 -0
  24. package/dist/__tests__/ssao-config.unit.test.d.ts.map +1 -0
  25. package/dist/__tests__/standard-clustered-pipeline.unit.test.d.ts +2 -0
  26. package/dist/__tests__/standard-clustered-pipeline.unit.test.d.ts.map +1 -0
  27. package/dist/__tests__/standard-descriptors.test-d.d.ts +2 -0
  28. package/dist/__tests__/standard-descriptors.test-d.d.ts.map +1 -0
  29. package/dist/__tests__/standard-pipeline.dawn.test.d.ts +2 -0
  30. package/dist/__tests__/standard-pipeline.dawn.test.d.ts.map +1 -0
  31. package/dist/__tests__/standard-pipeline.integration.test.d.ts +2 -0
  32. package/dist/__tests__/standard-pipeline.integration.test.d.ts.map +1 -0
  33. package/dist/__tests__/standard-profile-oracle.unit.test.d.ts +2 -0
  34. package/dist/__tests__/standard-profile-oracle.unit.test.d.ts.map +1 -0
  35. package/dist/__tests__/visibility-resource-short-circuit.unit.test.d.ts +2 -0
  36. package/dist/__tests__/visibility-resource-short-circuit.unit.test.d.ts.map +1 -0
  37. package/dist/{renderer/backend-selection.d.ts → assembly/backend-contract.d.ts} +15 -4
  38. package/dist/assembly/backend-contract.d.ts.map +1 -0
  39. package/dist/assembly/factory.d.ts +207 -0
  40. package/dist/assembly/factory.d.ts.map +1 -0
  41. package/dist/assembly/host-contract.d.ts +84 -0
  42. package/dist/assembly/host-contract.d.ts.map +1 -0
  43. package/dist/{renderer → assembly}/material/assembly.d.ts +1 -2
  44. package/dist/{renderer → assembly}/material/assembly.d.ts.map +1 -1
  45. package/dist/assembly/material/pipeline-projection.d.ts +30 -0
  46. package/dist/assembly/material/pipeline-projection.d.ts.map +1 -0
  47. package/dist/authoring.d.ts +10 -11
  48. package/dist/authoring.d.ts.map +1 -1
  49. package/dist/authoring.mjs +25 -3
  50. package/dist/authoring.mjs.map +1 -1
  51. package/dist/chunk-CQXZC5XI.mjs +182 -0
  52. package/dist/chunk-CQXZC5XI.mjs.map +1 -0
  53. package/dist/chunk-QC4VW3XJ.mjs +79 -0
  54. package/dist/chunk-QC4VW3XJ.mjs.map +1 -0
  55. package/dist/chunk-SCRSAK5B.mjs +480 -0
  56. package/dist/chunk-SCRSAK5B.mjs.map +1 -0
  57. package/dist/components/__tests__/schema-contract.unit.test.d.ts +2 -0
  58. package/dist/components/__tests__/schema-contract.unit.test.d.ts.map +1 -0
  59. package/dist/components/glyph-text.d.ts +1 -1
  60. package/dist/components/glyph-text.d.ts.map +1 -1
  61. package/dist/components/index.d.ts +2 -2
  62. package/dist/components/index.d.ts.map +1 -1
  63. package/dist/components/instances.d.ts +1 -1
  64. package/dist/components/instances.d.ts.map +1 -1
  65. package/dist/components/light-helpers.d.ts +1 -1
  66. package/dist/components/light-helpers.d.ts.map +1 -1
  67. package/dist/components/mesh-filter.d.ts +7 -7
  68. package/dist/components/mesh-filter.d.ts.map +1 -1
  69. package/dist/components/scene-instance.d.ts +11 -11
  70. package/dist/components/skybox-background.d.ts +56 -0
  71. package/dist/components/skybox-background.d.ts.map +1 -0
  72. package/dist/components/skylight.d.ts +55 -0
  73. package/dist/components/skylight.d.ts.map +1 -0
  74. package/dist/components/sprite-animation.d.ts +2 -3
  75. package/dist/components/sprite-animation.d.ts.map +1 -1
  76. package/dist/components/sprite-instances.d.ts +1 -1
  77. package/dist/components/sprite-playback-mode.d.ts +6 -1
  78. package/dist/components/sprite-playback-mode.d.ts.map +1 -1
  79. package/dist/components/sprite-region-override.d.ts +2 -3
  80. package/dist/components/sprite-region-override.d.ts.map +1 -1
  81. package/dist/components/tile-layer.d.ts +5 -0
  82. package/dist/components/tile-layer.d.ts.map +1 -1
  83. package/dist/construct-renderer.d.ts +18 -1
  84. package/dist/construct-renderer.d.ts.map +1 -1
  85. package/dist/construct-renderer.mjs +27008 -4
  86. package/dist/construct-renderer.mjs.map +1 -1
  87. package/dist/debug-draw-glue.d.ts +2 -53
  88. package/dist/debug-draw-glue.d.ts.map +1 -1
  89. package/dist/device/device-scope.d.ts +83 -0
  90. package/dist/device/device-scope.d.ts.map +1 -0
  91. package/dist/{gpu-resource-store.d.ts → device/gpu-residency.d.ts} +91 -48
  92. package/dist/device/gpu-residency.d.ts.map +1 -0
  93. package/dist/device/resource-types.d.ts +8 -0
  94. package/dist/device/resource-types.d.ts.map +1 -0
  95. package/dist/engine-metrics.d.ts +2 -2
  96. package/dist/engine-metrics.d.ts.map +1 -1
  97. package/dist/errors/recover.d.ts +28 -1
  98. package/dist/errors/recover.d.ts.map +1 -1
  99. package/dist/errors/render.d.ts +249 -258
  100. package/dist/errors/render.d.ts.map +1 -1
  101. package/dist/features/fullscreen.d.ts +19 -0
  102. package/dist/features/fullscreen.d.ts.map +1 -0
  103. package/dist/features/host.d.ts +32 -26
  104. package/dist/features/host.d.ts.map +1 -1
  105. package/dist/features/morph/morph-feature.d.ts +39 -5
  106. package/dist/features/morph/morph-feature.d.ts.map +1 -1
  107. package/dist/features/plan.d.ts +182 -0
  108. package/dist/features/plan.d.ts.map +1 -0
  109. package/dist/features/prepared-gpu-work.d.ts +21 -17
  110. package/dist/features/prepared-gpu-work.d.ts.map +1 -1
  111. package/dist/features/prepared-graphics-store.d.ts +2 -1
  112. package/dist/features/prepared-graphics-store.d.ts.map +1 -1
  113. package/dist/features/prepared-graphics.d.ts +11 -21
  114. package/dist/features/prepared-graphics.d.ts.map +1 -1
  115. package/dist/features/render-graph-compute.d.ts +2 -2
  116. package/dist/features/render-graph-compute.d.ts.map +1 -1
  117. package/dist/features/render-graph-contribution.d.ts +4 -7
  118. package/dist/features/render-graph-contribution.d.ts.map +1 -1
  119. package/dist/features/render-graph-raster.d.ts +2 -2
  120. package/dist/features/render-graph-raster.d.ts.map +1 -1
  121. package/dist/features/render-graph-resources.d.ts +6 -6
  122. package/dist/features/render-graph-resources.d.ts.map +1 -1
  123. package/dist/features/targets.d.ts +5 -5
  124. package/dist/features/targets.d.ts.map +1 -1
  125. package/dist/features/types.d.ts +11 -190
  126. package/dist/features/types.d.ts.map +1 -1
  127. package/dist/features/vocabulary.d.ts +14 -0
  128. package/dist/features/vocabulary.d.ts.map +1 -0
  129. package/dist/fullscreen-post-process-pass.d.ts +4 -25
  130. package/dist/fullscreen-post-process-pass.d.ts.map +1 -1
  131. package/dist/glyph-text-layout-system.d.ts +3 -2
  132. package/dist/glyph-text-layout-system.d.ts.map +1 -1
  133. package/dist/gpu-driven/batch-topology.d.ts +6 -75
  134. package/dist/gpu-driven/batch-topology.d.ts.map +1 -1
  135. package/dist/gpu-driven/production-raster.d.ts +13 -112
  136. package/dist/gpu-driven/production-raster.d.ts.map +1 -1
  137. package/dist/gpu-driven/view-gpu.d.ts +10 -66
  138. package/dist/gpu-driven/view-gpu.d.ts.map +1 -1
  139. package/dist/gpu-resource.d.ts +3 -3
  140. package/dist/gpu-scene-schema.d.ts +1 -94
  141. package/dist/gpu-scene-schema.d.ts.map +1 -1
  142. package/dist/gpu-scene.d.ts +7 -33
  143. package/dist/gpu-scene.d.ts.map +1 -1
  144. package/dist/hdrp-buffers.d.ts +3 -53
  145. package/dist/hdrp-buffers.d.ts.map +1 -1
  146. package/dist/ibl/IblPipelineCache.d.ts +74 -180
  147. package/dist/ibl/IblPipelineCache.d.ts.map +1 -1
  148. package/dist/ibl/skylight-bind-group.d.ts +1 -1
  149. package/dist/index.d.ts +13 -43
  150. package/dist/index.d.ts.map +1 -1
  151. package/dist/index.mjs +165 -3
  152. package/dist/index.mjs.map +1 -1
  153. package/dist/inspection-types.d.ts +69 -0
  154. package/dist/inspection-types.d.ts.map +1 -0
  155. package/dist/instance-buffer-cache.d.ts +1 -4
  156. package/dist/instance-buffer-cache.d.ts.map +1 -1
  157. package/dist/internal.d.ts +1 -73
  158. package/dist/internal.d.ts.map +1 -1
  159. package/dist/internal.mjs +1 -43
  160. package/dist/internal.mjs.map +1 -1
  161. package/dist/lifecycle.d.ts +36 -2
  162. package/dist/lifecycle.d.ts.map +1 -1
  163. package/dist/materials.d.ts +0 -3
  164. package/dist/materials.d.ts.map +1 -1
  165. package/dist/mesh-material-bindings.d.ts +0 -1
  166. package/dist/mesh-material-bindings.d.ts.map +1 -1
  167. package/dist/pbr-pipeline.d.ts +75 -29
  168. package/dist/pbr-pipeline.d.ts.map +1 -1
  169. package/dist/pipeline/standard-forward-lane.d.ts +5 -0
  170. package/dist/pipeline/standard-forward-lane.d.ts.map +1 -0
  171. package/dist/pipeline/standard-pipeline.d.ts +31 -0
  172. package/dist/pipeline/standard-pipeline.d.ts.map +1 -0
  173. package/dist/pipeline/standard-profile.d.ts +40 -0
  174. package/dist/pipeline/standard-profile.d.ts.map +1 -0
  175. package/dist/pipeline-builder.d.ts +3 -3
  176. package/dist/pipeline-builder.d.ts.map +1 -1
  177. package/dist/pipeline-spec-types.d.ts +24 -0
  178. package/dist/pipeline-spec-types.d.ts.map +1 -0
  179. package/dist/pipeline-spec.d.ts +16 -155
  180. package/dist/pipeline-spec.d.ts.map +1 -1
  181. package/dist/plugin.d.ts +1 -14
  182. package/dist/plugin.d.ts.map +1 -1
  183. package/dist/post-process-errors.d.ts +18 -18
  184. package/dist/post-process-errors.d.ts.map +1 -1
  185. package/dist/prepare/prepared-graphics-resolver.d.ts +2 -5
  186. package/dist/prepare/prepared-graphics-resolver.d.ts.map +1 -1
  187. package/dist/record/__tests__/typed-frame-graph-plan.unit.test.d.ts +2 -0
  188. package/dist/record/__tests__/typed-frame-graph-plan.unit.test.d.ts.map +1 -0
  189. package/dist/record/frame-lighting.d.ts +7 -73
  190. package/dist/record/frame-lighting.d.ts.map +1 -1
  191. package/dist/record/frame-snapshot.d.ts +44 -44
  192. package/dist/record/frame-snapshot.d.ts.map +1 -1
  193. package/dist/record/frame-targets.d.ts +5 -38
  194. package/dist/record/frame-targets.d.ts.map +1 -1
  195. package/dist/record/frame.d.ts +64 -52
  196. package/dist/record/frame.d.ts.map +1 -1
  197. package/dist/record/helpers.d.ts +3 -2
  198. package/dist/record/helpers.d.ts.map +1 -1
  199. package/dist/record/main-pass-geometry.d.ts +5 -4
  200. package/dist/record/main-pass-geometry.d.ts.map +1 -1
  201. package/dist/record/main-pass-material.d.ts +90 -59
  202. package/dist/record/main-pass-material.d.ts.map +1 -1
  203. package/dist/record/main-pass-sprite-draws.d.ts +28 -3
  204. package/dist/record/main-pass-sprite-draws.d.ts.map +1 -1
  205. package/dist/record/main-pass.d.ts +1 -1
  206. package/dist/record/main-pass.d.ts.map +1 -1
  207. package/dist/record/mesh-ssbo.d.ts +276 -3
  208. package/dist/record/mesh-ssbo.d.ts.map +1 -1
  209. package/dist/record/render-context.d.ts +235 -0
  210. package/dist/record/render-context.d.ts.map +1 -0
  211. package/dist/record/shadow-pass.d.ts +15 -88
  212. package/dist/record/shadow-pass.d.ts.map +1 -1
  213. package/dist/record/skybox-post-pass.d.ts +1 -1
  214. package/dist/record/skybox-post-pass.d.ts.map +1 -1
  215. package/dist/record/typed-frame-graph.d.ts +29 -7
  216. package/dist/record/typed-frame-graph.d.ts.map +1 -1
  217. package/dist/record/view-ubo.d.ts +3 -3
  218. package/dist/record/view-ubo.d.ts.map +1 -1
  219. package/dist/render-contract.d.ts +416 -0
  220. package/dist/render-contract.d.ts.map +1 -0
  221. package/dist/render-data.d.ts.map +1 -1
  222. package/dist/render-graph-primitives.d.ts +14 -362
  223. package/dist/render-graph-primitives.d.ts.map +1 -1
  224. package/dist/render-pipeline.d.ts +25 -64
  225. package/dist/render-pipeline.d.ts.map +1 -1
  226. package/dist/render-system-extract.d.ts +107 -338
  227. package/dist/render-system-extract.d.ts.map +1 -1
  228. package/dist/render-system.d.ts +21 -713
  229. package/dist/render-system.d.ts.map +1 -1
  230. package/dist/scene/render-scene-types.d.ts +58 -0
  231. package/dist/scene/render-scene-types.d.ts.map +1 -0
  232. package/dist/scene/render-scene.d.ts +105 -0
  233. package/dist/scene/render-scene.d.ts.map +1 -0
  234. package/dist/scene-instances/post-spawn-resolve-joints.d.ts +2 -5
  235. package/dist/scene-instances/post-spawn-resolve-joints.d.ts.map +1 -1
  236. package/dist/ssao-buffers.d.ts +22 -3
  237. package/dist/ssao-buffers.d.ts.map +1 -1
  238. package/dist/systems/skin-palette-allocator.d.ts +2 -4
  239. package/dist/systems/skin-palette-allocator.d.ts.map +1 -1
  240. package/dist/systems/skin-palette-types.d.ts +14 -0
  241. package/dist/systems/skin-palette-types.d.ts.map +1 -0
  242. package/dist/systems/transparent-sort-config.d.ts +23 -2
  243. package/dist/systems/transparent-sort-config.d.ts.map +1 -1
  244. package/dist/tilemap-chunk-extract-system.d.ts +4 -3
  245. package/dist/tilemap-chunk-extract-system.d.ts.map +1 -1
  246. package/dist/typed-render-graph-primitives.d.ts +2 -4
  247. package/dist/typed-render-graph-primitives.d.ts.map +1 -1
  248. package/dist/typed-shadow-passes.d.ts +3 -3
  249. package/dist/typed-shadow-passes.d.ts.map +1 -1
  250. package/package.json +23 -23
  251. package/src/__tests__/backend-selection-rhi-capture.test-d.ts +1 -1
  252. package/src/__tests__/callback-inference.test-d.ts +6 -3
  253. package/src/__tests__/cluster-grid-default-surface.unit.test.ts +7 -4
  254. package/src/__tests__/construct-renderer-identity.unit.test.ts +15 -2
  255. package/src/__tests__/device-scope-lifecycle.unit.test.ts +151 -0
  256. package/src/__tests__/device-scope-stale-matrix.unit.test.ts +42 -0
  257. package/src/__tests__/direct-extract-consumer-contract.test-d.ts +8 -19
  258. package/src/__tests__/direct-light-snapshot.unit.test.ts +3 -13
  259. package/src/__tests__/factory-contract.integration.test.ts +158 -209
  260. package/src/__tests__/fallback-row-stride-surface.unit.test.ts +1 -4
  261. package/src/__tests__/frame-observation.contract.test.ts +17 -8
  262. package/src/__tests__/fullscreen-feature-plan.unit.test.ts +32 -0
  263. package/src/__tests__/glyph-text-layout-recovery.unit.test.ts +6 -11
  264. package/src/__tests__/gpu-driven-indirect-raster-evidence.ts +9 -16
  265. package/src/__tests__/gpu-driven-production.integration.test.ts +32 -205
  266. package/src/__tests__/gpu-driven-scaling.unit.test.ts +4 -7
  267. package/src/__tests__/gpu-driven-view-gpu-evidence.ts +87 -8
  268. package/src/__tests__/gpu-driven-view-graph.integration.test.ts +170 -8
  269. package/src/{gpu-driven/view-reference.ts → __tests__/gpu-driven-view-reference.ts} +4 -3
  270. package/src/__tests__/gpu-driven-view.browser.test.ts +12 -1
  271. package/src/__tests__/gpu-driven-view.dawn.test.ts +12 -1
  272. package/src/__tests__/gpu-driven-view.unit.test.ts +11 -267
  273. package/src/__tests__/gpu-resource-store-stride.unit.test.ts +3 -3
  274. package/src/__tests__/gpu-scene-render-graph-gpu.ts +2 -3
  275. package/src/__tests__/gpu-scene.dawn.test.ts +2 -6
  276. package/src/__tests__/gpu-scene.unit.test.ts +10 -24
  277. package/src/__tests__/ibl/face-uniforms.unit.test.ts +46 -0
  278. package/src/__tests__/infinite-grid-no-vertex-probe.unit.test.ts +34 -66
  279. package/src/__tests__/ktx2-basis-gpu-consumer.dawn.test.ts +14 -5
  280. package/src/__tests__/light-buffer-layout.unit.test.ts +4 -49
  281. package/src/__tests__/material-cooked-projection.unit.test.ts +2 -51
  282. package/src/__tests__/material-snapshot-mutation.integration.test.ts +10 -15
  283. package/src/__tests__/material-static-dynamic-route.unit.test.ts +4 -23
  284. package/src/__tests__/material-stride-surface.unit.test.ts +2 -2
  285. package/src/__tests__/mesh-buffer-usage-surface.unit.test.ts +7 -8
  286. package/src/__tests__/morph-culling-reentry.dawn.test.ts +29 -38
  287. package/src/__tests__/morph-feature-gpu-work.integration.test.ts +45 -43
  288. package/src/__tests__/morph-feature-plan.unit.test.ts +53 -0
  289. package/src/__tests__/morph-visual-evidence.integration.test.ts +47 -33
  290. package/src/__tests__/nineslice-handle-surface.unit.test.ts +11 -6
  291. package/src/__tests__/post-process-error-policy-owner.unit.test.ts +6 -13
  292. package/src/__tests__/prepared-graphics-capability.unit.test.ts +6 -81
  293. package/src/__tests__/prepared-graphics-generation.unit.test.ts +3 -17
  294. package/src/__tests__/prepared-graphics-lifecycle.unit.test.ts +6 -74
  295. package/src/__tests__/prepared-graphics-resolver.unit.test.ts +1 -3
  296. package/src/__tests__/prepared-graphics-snapshot.unit.test.ts +2 -2
  297. package/src/__tests__/profiler-default-off.test.ts +1 -1
  298. package/src/__tests__/profiler-phase-catalog.test.ts +2 -2
  299. package/src/__tests__/profiler-phase-integration.test.ts +5 -13
  300. package/src/__tests__/profiler-phase-token.test.ts +3 -8
  301. package/src/__tests__/public-surface.test-d.ts +65 -3
  302. package/src/__tests__/recover-error-policy-owner.unit.test.ts +1 -21
  303. package/src/__tests__/render-error-code-owner.test-d.ts +18 -23
  304. package/src/__tests__/render-error-detail-ssot.test-d.ts +0 -95
  305. package/src/__tests__/render-error-exhaustive.test-d.ts +8 -1
  306. package/src/__tests__/render-feature-assembly.test-d.ts +8 -16
  307. package/src/__tests__/render-feature-context.test-d.ts +16 -40
  308. package/src/__tests__/render-feature-contract.test-d.ts +9 -18
  309. package/src/__tests__/render-feature-diagnostics.unit.test.ts +6 -8
  310. package/src/__tests__/render-feature-docs.unit.test.ts +8 -7
  311. package/src/__tests__/render-feature-gpu-work.integration.test.ts +14 -75
  312. package/src/__tests__/render-feature-plan.test-d.ts +161 -0
  313. package/src/__tests__/render-feature-plan.unit.test.ts +170 -0
  314. package/src/__tests__/render-feature-prepared-diagnostics.unit.test.ts +8 -19
  315. package/src/__tests__/render-feature-prepared-errors.test-d.ts +3 -6
  316. package/src/__tests__/render-feature-prepared-graphics-docs.unit.test.ts +10 -71
  317. package/src/__tests__/render-feature-prepared-graphics-isolation.unit.test.ts +11 -61
  318. package/src/__tests__/render-feature-prepared-graphics-negative.test-d.ts +20 -43
  319. package/src/__tests__/render-feature-prepared-graphics.test-d.ts +56 -78
  320. package/src/__tests__/render-feature-public-surface.test-d.ts +6 -24
  321. package/src/__tests__/render-feature-retry.unit.test.ts +7 -48
  322. package/src/__tests__/render-feature-scheduling.unit.test.ts +15 -27
  323. package/src/__tests__/render-feature-stage-failed-policy-owner.unit.test.ts +0 -9
  324. package/src/__tests__/render-feature-stage-fault-recovery.unit.test.ts +19 -109
  325. package/src/__tests__/render-feature-visibility-context.test-d.ts +1 -6
  326. package/src/__tests__/render-feature-visibility-context.unit.test.ts +1 -2
  327. package/src/__tests__/render-feature-zero-work.unit.test.ts +14 -20
  328. package/src/__tests__/render-scene-projection.unit.test.ts +73 -111
  329. package/src/__tests__/renderer-factory-material-contract.unit.test.ts +46 -50
  330. package/src/__tests__/renderer-lifecycle.integration.test.ts +49 -1
  331. package/src/__tests__/shader-stage-surface.unit.test.ts +14 -9
  332. package/src/__tests__/ssao-config.unit.test.ts +36 -0
  333. package/src/__tests__/ssao-kernel-surface.unit.test.ts +4 -5
  334. package/src/__tests__/standard-clustered-pipeline.unit.test.ts +28 -0
  335. package/src/__tests__/standard-descriptors.test-d.ts +22 -0
  336. package/src/__tests__/standard-pipeline.dawn.test.ts +61 -0
  337. package/src/__tests__/standard-pipeline.integration.test.ts +124 -0
  338. package/src/__tests__/standard-profile-oracle.unit.test.ts +62 -0
  339. package/src/__tests__/surface-configuration.unit.test.ts +1 -2
  340. package/src/__tests__/texture-usage-surface.unit.test.ts +3 -6
  341. package/src/__tests__/typed-pipeline-topology.unit.test.ts +40 -206
  342. package/src/__tests__/urp-pipeline-targets.unit.test.ts +1 -11
  343. package/src/__tests__/urp-pipeline.unit.test.ts +2 -2
  344. package/src/__tests__/vertex-color-pipeline.unit.test.ts +10 -2
  345. package/src/__tests__/vertex-layout-consumer.unit.test.ts +1 -1
  346. package/src/__tests__/visibility-diagnostics.integration.test.ts +7 -11
  347. package/src/__tests__/visibility-extract.integration.test.ts +20 -11
  348. package/src/__tests__/visibility-extract.perf.test.ts +66 -32
  349. package/src/__tests__/visibility-feature-dedup.integration.test.ts +2 -4
  350. package/src/__tests__/visibility-hidden-report.unit.test.ts +1 -2
  351. package/src/__tests__/visibility-instances.integration.test.ts +7 -11
  352. package/src/__tests__/visibility-multi-world.integration.test.ts +38 -6
  353. package/src/__tests__/visibility-producer-matrix.integration.test.ts +18 -41
  354. package/src/__tests__/visibility-public-surface.test-d.ts +10 -9
  355. package/src/__tests__/visibility-resolver.unit.test.ts +2 -1
  356. package/src/__tests__/visibility-resource-short-circuit.unit.test.ts +80 -0
  357. package/src/__tests__/visibility-snapshot-contract.unit.test.ts +2 -1
  358. package/src/__tests__/vocabulary.unit.test.ts +1 -1
  359. package/src/assembly/backend-contract.ts +57 -0
  360. package/src/{renderer/renderer-factory.ts → assembly/factory.ts} +1709 -2693
  361. package/src/assembly/host-contract.ts +101 -0
  362. package/src/{renderer → assembly}/material/assembly.ts +1 -3
  363. package/src/assembly/material/pipeline-projection.ts +63 -0
  364. package/src/authoring.ts +14 -22
  365. package/src/components/__tests__/schema-contract.unit.test.ts +10 -0
  366. package/src/components/glyph-text.ts +3 -2
  367. package/src/components/index.ts +7 -9
  368. package/src/components/instances.ts +4 -5
  369. package/src/components/light-helpers.ts +1 -1
  370. package/src/components/mesh-filter.ts +11 -10
  371. package/src/components/post-process-params.ts +3 -3
  372. package/src/components/scene-instance.ts +12 -12
  373. package/src/components/skybox-background.ts +103 -0
  374. package/src/components/{environment.ts → skylight.ts} +2 -111
  375. package/src/components/sprite-animation.ts +3 -4
  376. package/src/components/sprite-instances.ts +2 -2
  377. package/src/components/sprite-playback-mode.ts +7 -1
  378. package/src/components/sprite-region-override.ts +2 -3
  379. package/src/components/tile-layer.ts +8 -2
  380. package/src/construct-renderer.ts +67 -4
  381. package/src/debug-draw-glue.ts +8 -129
  382. package/src/device/device-scope.ts +306 -0
  383. package/src/{gpu-resource-store.ts → device/gpu-residency.ts} +540 -639
  384. package/src/device/resource-types.ts +20 -0
  385. package/src/engine-metrics.ts +12 -19
  386. package/src/errors/recover.ts +45 -3
  387. package/src/errors/render.ts +357 -460
  388. package/src/features/fullscreen.ts +46 -0
  389. package/src/features/host.ts +575 -309
  390. package/src/features/morph/morph-feature.ts +195 -105
  391. package/src/features/plan.ts +447 -0
  392. package/src/features/prepared-gpu-work.ts +72 -15
  393. package/src/features/prepared-graphics-store.ts +20 -6
  394. package/src/features/prepared-graphics.ts +12 -71
  395. package/src/features/render-graph-compute.ts +14 -5
  396. package/src/features/render-graph-contribution.ts +43 -63
  397. package/src/features/render-graph-raster.ts +11 -6
  398. package/src/features/render-graph-resources.ts +25 -23
  399. package/src/features/targets.ts +8 -21
  400. package/src/features/types.ts +39 -227
  401. package/src/features/vocabulary.ts +24 -0
  402. package/src/fullscreen-post-process-pass.ts +14 -57
  403. package/src/glyph-text-layout-system.ts +70 -96
  404. package/src/gpu-driven/batch-topology.ts +24 -202
  405. package/src/gpu-driven/production-raster.ts +93 -1108
  406. package/src/gpu-driven/view-gpu.ts +46 -192
  407. package/src/gpu-resource.ts +4 -4
  408. package/src/gpu-scene-schema.ts +11 -99
  409. package/src/gpu-scene.ts +231 -364
  410. package/src/hdrp-buffers.ts +12 -221
  411. package/src/ibl/IblPipelineCache.ts +471 -711
  412. package/src/ibl/skylight-bind-group.ts +4 -4
  413. package/src/index.ts +58 -217
  414. package/src/inspection-types.ts +76 -0
  415. package/src/instance-buffer-cache.ts +1 -29
  416. package/src/internal.ts +6 -85
  417. package/src/lifecycle.ts +64 -19
  418. package/src/materials.ts +7 -29
  419. package/src/mesh-material-bindings.ts +0 -1
  420. package/src/pbr-pipeline.ts +434 -53
  421. package/src/{urp-pipeline.ts → pipeline/standard-forward-lane.ts} +38 -149
  422. package/src/{hdrp-pipeline.ts → pipeline/standard-pipeline.ts} +221 -191
  423. package/src/pipeline/standard-profile.ts +65 -0
  424. package/src/pipeline-builder.ts +60 -64
  425. package/src/pipeline-spec-types.ts +28 -0
  426. package/src/pipeline-spec.ts +72 -609
  427. package/src/plugin.ts +3 -75
  428. package/src/post-process-errors.ts +31 -33
  429. package/src/prepare/prepared-graphics-resolver.ts +5 -4
  430. package/src/record/__tests__/material-slot-plan.unit.test.ts +1 -33
  431. package/src/record/__tests__/typed-frame-graph-plan.unit.test.ts +41 -0
  432. package/src/record/__tests__/video-texture-view.unit.test.ts +1 -1
  433. package/src/record/frame-lighting.ts +74 -195
  434. package/src/record/frame-snapshot.ts +45 -60
  435. package/src/record/frame-targets.ts +8 -243
  436. package/src/record/frame.ts +509 -796
  437. package/src/record/helpers.ts +6 -11
  438. package/src/record/main-pass-geometry.ts +106 -147
  439. package/src/record/main-pass-material.ts +517 -190
  440. package/src/record/main-pass-sprite-draws.ts +198 -117
  441. package/src/record/main-pass.ts +162 -143
  442. package/src/record/mesh-ssbo.ts +517 -38
  443. package/src/record/render-context.ts +364 -0
  444. package/src/record/shadow-pass.ts +138 -1838
  445. package/src/record/skybox-post-pass.ts +12 -14
  446. package/src/record/typed-frame-graph.ts +215 -254
  447. package/src/record/view-ubo.ts +6 -37
  448. package/src/render-contract.ts +571 -0
  449. package/src/render-data.ts +3 -3
  450. package/src/render-graph-primitives.ts +76 -851
  451. package/src/render-pipeline.ts +104 -188
  452. package/src/render-system-extract.ts +1048 -1729
  453. package/src/render-system.ts +330 -1957
  454. package/src/scene/render-scene-types.ts +64 -0
  455. package/src/scene/render-scene.ts +1032 -0
  456. package/src/scene-instances/post-spawn-resolve-joints.ts +4 -7
  457. package/src/ssao-buffers.ts +167 -8
  458. package/src/systems/skin-palette-allocator.ts +21 -64
  459. package/src/systems/skin-palette-types.ts +14 -0
  460. package/src/systems/transparent-sort-config.ts +25 -3
  461. package/src/tilemap-chunk-extract-system.ts +53 -70
  462. package/src/typed-render-graph-primitives.ts +35 -24
  463. package/src/typed-shadow-passes.ts +26 -56
  464. package/dist/__tests__/analytic-sky-contract.test.d.ts +0 -2
  465. package/dist/__tests__/analytic-sky-contract.test.d.ts.map +0 -1
  466. package/dist/__tests__/analytic-sky-falsify.test.d.ts +0 -2
  467. package/dist/__tests__/analytic-sky-falsify.test.d.ts.map +0 -1
  468. package/dist/__tests__/assets-runtime-handoff.integration.test.d.ts +0 -2
  469. package/dist/__tests__/assets-runtime-handoff.integration.test.d.ts.map +0 -1
  470. package/dist/__tests__/backend-selection.integration.test.d.ts +0 -2
  471. package/dist/__tests__/backend-selection.integration.test.d.ts.map +0 -1
  472. package/dist/__tests__/camera-temporal.test-d.d.ts +0 -2
  473. package/dist/__tests__/camera-temporal.test-d.d.ts.map +0 -1
  474. package/dist/__tests__/camera-temporal.test.d.ts +0 -2
  475. package/dist/__tests__/camera-temporal.test.d.ts.map +0 -1
  476. package/dist/__tests__/directional-shadow-probe-atlas-layout.unit.test.d.ts +0 -2
  477. package/dist/__tests__/directional-shadow-probe-atlas-layout.unit.test.d.ts.map +0 -1
  478. package/dist/__tests__/environment-inspection.test.d.ts +0 -2
  479. package/dist/__tests__/environment-inspection.test.d.ts.map +0 -1
  480. package/dist/__tests__/fog-ai-user.fixture.d.ts +0 -2
  481. package/dist/__tests__/fog-ai-user.fixture.d.ts.map +0 -1
  482. package/dist/__tests__/fog-custom-render-feature.fixture.d.ts +0 -16
  483. package/dist/__tests__/fog-custom-render-feature.fixture.d.ts.map +0 -1
  484. package/dist/__tests__/fog-custom-render-feature.integration.test.d.ts +0 -2
  485. package/dist/__tests__/fog-custom-render-feature.integration.test.d.ts.map +0 -1
  486. package/dist/__tests__/fog-inspection.integration.test.d.ts +0 -2
  487. package/dist/__tests__/fog-inspection.integration.test.d.ts.map +0 -1
  488. package/dist/__tests__/fog-owner-state.integration.test.d.ts +0 -2
  489. package/dist/__tests__/fog-owner-state.integration.test.d.ts.map +0 -1
  490. package/dist/__tests__/fog-pipeline-topology.integration.test.d.ts +0 -2
  491. package/dist/__tests__/fog-pipeline-topology.integration.test.d.ts.map +0 -1
  492. package/dist/__tests__/fog-public-surface.integration.test.d.ts +0 -2
  493. package/dist/__tests__/fog-public-surface.integration.test.d.ts.map +0 -1
  494. package/dist/__tests__/fog-ray-contract.integration.test.d.ts +0 -2
  495. package/dist/__tests__/fog-ray-contract.integration.test.d.ts.map +0 -1
  496. package/dist/__tests__/fog-source-absence.integration.test.d.ts +0 -2
  497. package/dist/__tests__/fog-source-absence.integration.test.d.ts.map +0 -1
  498. package/dist/__tests__/fog-temporal.integration.test.d.ts +0 -2
  499. package/dist/__tests__/fog-temporal.integration.test.d.ts.map +0 -1
  500. package/dist/__tests__/frame-chain.unit.test.d.ts +0 -2
  501. package/dist/__tests__/frame-chain.unit.test.d.ts.map +0 -1
  502. package/dist/__tests__/gpu-scene-field-type-owner.test-d.d.ts +0 -2
  503. package/dist/__tests__/gpu-scene-field-type-owner.test-d.d.ts.map +0 -1
  504. package/dist/__tests__/hdrp-pipeline.unit.test.d.ts +0 -2
  505. package/dist/__tests__/hdrp-pipeline.unit.test.d.ts.map +0 -1
  506. package/dist/__tests__/ibl/ibl-fallback.unit.test.d.ts +0 -2
  507. package/dist/__tests__/ibl/ibl-fallback.unit.test.d.ts.map +0 -1
  508. package/dist/__tests__/material-derived-error-stop-draw.integration.test.d.ts +0 -2
  509. package/dist/__tests__/material-derived-error-stop-draw.integration.test.d.ts.map +0 -1
  510. package/dist/__tests__/material-derived-payload.integration.test.d.ts +0 -2
  511. package/dist/__tests__/material-derived-payload.integration.test.d.ts.map +0 -1
  512. package/dist/__tests__/materials.unit.test.d.ts +0 -2
  513. package/dist/__tests__/materials.unit.test.d.ts.map +0 -1
  514. package/dist/__tests__/param-schema-projection-census.unit.test.d.ts +0 -2
  515. package/dist/__tests__/param-schema-projection-census.unit.test.d.ts.map +0 -1
  516. package/dist/__tests__/persistent-render-scene.unit.test.d.ts +0 -2
  517. package/dist/__tests__/persistent-render-scene.unit.test.d.ts.map +0 -1
  518. package/dist/__tests__/pipeline-error-policy-owner.unit.test.d.ts +0 -2
  519. package/dist/__tests__/pipeline-error-policy-owner.unit.test.d.ts.map +0 -1
  520. package/dist/__tests__/pipeline-pass-trace.test.d.ts +0 -2
  521. package/dist/__tests__/pipeline-pass-trace.test.d.ts.map +0 -1
  522. package/dist/__tests__/pipeline-stage-owner.test-d.d.ts +0 -2
  523. package/dist/__tests__/pipeline-stage-owner.test-d.d.ts.map +0 -1
  524. package/dist/__tests__/plugin.test.d.ts +0 -2
  525. package/dist/__tests__/plugin.test.d.ts.map +0 -1
  526. package/dist/__tests__/prepared-graphics-backend-matrix.unit.test.d.ts +0 -2
  527. package/dist/__tests__/prepared-graphics-backend-matrix.unit.test.d.ts.map +0 -1
  528. package/dist/__tests__/prepared-graphics-resolver-recording.unit.test.d.ts +0 -2
  529. package/dist/__tests__/prepared-graphics-resolver-recording.unit.test.d.ts.map +0 -1
  530. package/dist/__tests__/public-pipeline-id.test-d.d.ts +0 -2
  531. package/dist/__tests__/public-pipeline-id.test-d.d.ts.map +0 -1
  532. package/dist/__tests__/render-dispatch-membership.unit.test.d.ts +0 -2
  533. package/dist/__tests__/render-dispatch-membership.unit.test.d.ts.map +0 -1
  534. package/dist/__tests__/render-feature-construction.unit.test.d.ts +0 -2
  535. package/dist/__tests__/render-feature-construction.unit.test.d.ts.map +0 -1
  536. package/dist/__tests__/render-feature-error-code-owner.test-d.d.ts +0 -2
  537. package/dist/__tests__/render-feature-error-code-owner.test-d.d.ts.map +0 -1
  538. package/dist/__tests__/render-feature-gpu-buffer-usage-owner.test-d.d.ts +0 -2
  539. package/dist/__tests__/render-feature-gpu-buffer-usage-owner.test-d.d.ts.map +0 -1
  540. package/dist/__tests__/render-feature-graph.integration.test.d.ts +0 -2
  541. package/dist/__tests__/render-feature-graph.integration.test.d.ts.map +0 -1
  542. package/dist/__tests__/render-feature-graphics-staging.unit.test.d.ts +0 -2
  543. package/dist/__tests__/render-feature-graphics-staging.unit.test.d.ts.map +0 -1
  544. package/dist/__tests__/render-feature-order.unit.test.d.ts +0 -2
  545. package/dist/__tests__/render-feature-order.unit.test.d.ts.map +0 -1
  546. package/dist/__tests__/render-feature-prepared-graphics-recording.unit.test.d.ts +0 -2
  547. package/dist/__tests__/render-feature-prepared-graphics-recording.unit.test.d.ts.map +0 -1
  548. package/dist/__tests__/render-feature-staging.unit.test.d.ts +0 -2
  549. package/dist/__tests__/render-feature-staging.unit.test.d.ts.map +0 -1
  550. package/dist/__tests__/renderer-render-scene-public.test-d.d.ts +0 -2
  551. package/dist/__tests__/renderer-render-scene-public.test-d.d.ts.map +0 -1
  552. package/dist/__tests__/scene-temporal-coverage.unit.test.d.ts +0 -2
  553. package/dist/__tests__/scene-temporal-coverage.unit.test.d.ts.map +0 -1
  554. package/dist/__tests__/sun-snapshot-consumers.test.d.ts +0 -2
  555. package/dist/__tests__/sun-snapshot-consumers.test.d.ts.map +0 -1
  556. package/dist/__tests__/surface-backend-kind-owner.test-d.d.ts +0 -2
  557. package/dist/__tests__/surface-backend-kind-owner.test-d.d.ts.map +0 -1
  558. package/dist/__tests__/taa-history-store.unit.test.d.ts +0 -2
  559. package/dist/__tests__/taa-history-store.unit.test.d.ts.map +0 -1
  560. package/dist/__tests__/temporal-frame-transaction.integration.test.d.ts +0 -2
  561. package/dist/__tests__/temporal-frame-transaction.integration.test.d.ts.map +0 -1
  562. package/dist/__tests__/temporal-inspection.unit.test.d.ts +0 -2
  563. package/dist/__tests__/temporal-inspection.unit.test.d.ts.map +0 -1
  564. package/dist/assets/__tests__/asset-decoders.unit.test.d.ts +0 -2
  565. package/dist/assets/__tests__/asset-decoders.unit.test.d.ts.map +0 -1
  566. package/dist/assets/__tests__/mipmap-generator.unit.test.d.ts +0 -2
  567. package/dist/assets/__tests__/mipmap-generator.unit.test.d.ts.map +0 -1
  568. package/dist/assets/__tests__/render-asset-port.unit.test.d.ts +0 -2
  569. package/dist/assets/__tests__/render-asset-port.unit.test.d.ts.map +0 -1
  570. package/dist/assets/__tests__/resolve-render-asset.unit.test.d.ts +0 -2
  571. package/dist/assets/__tests__/resolve-render-asset.unit.test.d.ts.map +0 -1
  572. package/dist/chunk-33UF5SAO.mjs +0 -7397
  573. package/dist/chunk-33UF5SAO.mjs.map +0 -1
  574. package/dist/chunk-A5QCJSNL.mjs +0 -29913
  575. package/dist/chunk-A5QCJSNL.mjs.map +0 -1
  576. package/dist/chunk-JMSB7AR4.mjs +0 -3
  577. package/dist/chunk-JMSB7AR4.mjs.map +0 -1
  578. package/dist/chunk-LXNGO6AO.mjs +0 -569
  579. package/dist/chunk-LXNGO6AO.mjs.map +0 -1
  580. package/dist/chunk-QRXPSX4X.mjs +0 -659
  581. package/dist/chunk-QRXPSX4X.mjs.map +0 -1
  582. package/dist/chunk-YAKEQPWO.mjs +0 -1439
  583. package/dist/chunk-YAKEQPWO.mjs.map +0 -1
  584. package/dist/components/__tests__/atmosphere-red.test.d.ts +0 -2
  585. package/dist/components/__tests__/atmosphere-red.test.d.ts.map +0 -1
  586. package/dist/components/__tests__/atmosphere.test.d.ts +0 -2
  587. package/dist/components/__tests__/atmosphere.test.d.ts.map +0 -1
  588. package/dist/components/__tests__/fog.test-d.d.ts +0 -2
  589. package/dist/components/__tests__/fog.test-d.d.ts.map +0 -1
  590. package/dist/components/__tests__/fog.test.d.ts +0 -2
  591. package/dist/components/__tests__/fog.test.d.ts.map +0 -1
  592. package/dist/components/atmosphere.d.ts +0 -18
  593. package/dist/components/atmosphere.d.ts.map +0 -1
  594. package/dist/components/environment.d.ts +0 -116
  595. package/dist/components/environment.d.ts.map +0 -1
  596. package/dist/deferred-lighting.d.ts +0 -13
  597. package/dist/deferred-lighting.d.ts.map +0 -1
  598. package/dist/dynamic-texture-store.d.ts +0 -42
  599. package/dist/dynamic-texture-store.d.ts.map +0 -1
  600. package/dist/environment/__tests__/failure-injection.test.d.ts +0 -2
  601. package/dist/environment/__tests__/failure-injection.test.d.ts.map +0 -1
  602. package/dist/environment/__tests__/generation-red.test.d.ts +0 -2
  603. package/dist/environment/__tests__/generation-red.test.d.ts.map +0 -1
  604. package/dist/environment/__tests__/generation.test.d.ts +0 -2
  605. package/dist/environment/__tests__/generation.test.d.ts.map +0 -1
  606. package/dist/environment/__tests__/graph-transaction.test.d.ts +0 -2
  607. package/dist/environment/__tests__/graph-transaction.test.d.ts.map +0 -1
  608. package/dist/environment/__tests__/inspection-red.test.d.ts +0 -2
  609. package/dist/environment/__tests__/inspection-red.test.d.ts.map +0 -1
  610. package/dist/environment/__tests__/lifecycle-evidence.test.d.ts +0 -2
  611. package/dist/environment/__tests__/lifecycle-evidence.test.d.ts.map +0 -1
  612. package/dist/environment/__tests__/pipeline-topology.test.d.ts +0 -2
  613. package/dist/environment/__tests__/pipeline-topology.test.d.ts.map +0 -1
  614. package/dist/environment/__tests__/readiness.test.d.ts +0 -2
  615. package/dist/environment/__tests__/readiness.test.d.ts.map +0 -1
  616. package/dist/environment/__tests__/recovery.test.d.ts +0 -2
  617. package/dist/environment/__tests__/recovery.test.d.ts.map +0 -1
  618. package/dist/environment/__tests__/resize-dispose.test.d.ts +0 -2
  619. package/dist/environment/__tests__/resize-dispose.test.d.ts.map +0 -1
  620. package/dist/environment/__tests__/signature-red.test.d.ts +0 -2
  621. package/dist/environment/__tests__/signature-red.test.d.ts.map +0 -1
  622. package/dist/environment/__tests__/signature.test.d.ts +0 -2
  623. package/dist/environment/__tests__/signature.test.d.ts.map +0 -1
  624. package/dist/environment/descriptors.d.ts +0 -2
  625. package/dist/environment/descriptors.d.ts.map +0 -1
  626. package/dist/environment/extracted-environment.d.ts +0 -53
  627. package/dist/environment/extracted-environment.d.ts.map +0 -1
  628. package/dist/environment/generation.d.ts +0 -62
  629. package/dist/environment/generation.d.ts.map +0 -1
  630. package/dist/environment/gpu-bundle.d.ts +0 -23
  631. package/dist/environment/gpu-bundle.d.ts.map +0 -1
  632. package/dist/environment/graph.d.ts +0 -108
  633. package/dist/environment/graph.d.ts.map +0 -1
  634. package/dist/environment/inspection.d.ts +0 -48
  635. package/dist/environment/inspection.d.ts.map +0 -1
  636. package/dist/environment/lifecycle.d.ts +0 -22
  637. package/dist/environment/lifecycle.d.ts.map +0 -1
  638. package/dist/environment/readiness.d.ts +0 -29
  639. package/dist/environment/readiness.d.ts.map +0 -1
  640. package/dist/environment/signature.d.ts +0 -70
  641. package/dist/environment/signature.d.ts.map +0 -1
  642. package/dist/extract/__tests__/directional-csm-domain.unit.test.d.ts +0 -2
  643. package/dist/extract/__tests__/directional-csm-domain.unit.test.d.ts.map +0 -1
  644. package/dist/extract/__tests__/environment-source.test.d.ts +0 -2
  645. package/dist/extract/__tests__/environment-source.test.d.ts.map +0 -1
  646. package/dist/extract/__tests__/schema-readers.unit.test.d.ts +0 -2
  647. package/dist/extract/__tests__/schema-readers.unit.test.d.ts.map +0 -1
  648. package/dist/extract/directional-csm.d.ts +0 -129
  649. package/dist/extract/directional-csm.d.ts.map +0 -1
  650. package/dist/extract/index.d.ts +0 -5
  651. package/dist/extract/index.d.ts.map +0 -1
  652. package/dist/extract/material-interface.d.ts +0 -56
  653. package/dist/extract/material-interface.d.ts.map +0 -1
  654. package/dist/extract/schema-readers.d.ts +0 -20
  655. package/dist/extract/schema-readers.d.ts.map +0 -1
  656. package/dist/features/graph-contribution.d.ts +0 -64
  657. package/dist/features/graph-contribution.d.ts.map +0 -1
  658. package/dist/features/index.d.ts +0 -21
  659. package/dist/features/index.d.ts.map +0 -1
  660. package/dist/features/morph/index.d.ts +0 -3
  661. package/dist/features/morph/index.d.ts.map +0 -1
  662. package/dist/features/morph/morph-bounds.d.ts +0 -42
  663. package/dist/features/morph/morph-bounds.d.ts.map +0 -1
  664. package/dist/features/scene-temporal.d.ts +0 -45
  665. package/dist/features/scene-temporal.d.ts.map +0 -1
  666. package/dist/features/taa-resolve.d.ts +0 -21
  667. package/dist/features/taa-resolve.d.ts.map +0 -1
  668. package/dist/frame-chain.d.ts +0 -14
  669. package/dist/frame-chain.d.ts.map +0 -1
  670. package/dist/gpu-driven/view-reference.d.ts.map +0 -1
  671. package/dist/gpu-resource-store.d.ts.map +0 -1
  672. package/dist/hdrp-cluster-membership.d.ts +0 -2
  673. package/dist/hdrp-cluster-membership.d.ts.map +0 -1
  674. package/dist/hdrp-pipeline.d.ts +0 -36
  675. package/dist/hdrp-pipeline.d.ts.map +0 -1
  676. package/dist/ibl/cubemap-projection.d.ts +0 -23
  677. package/dist/ibl/cubemap-projection.d.ts.map +0 -1
  678. package/dist/ibl/face-uniforms.d.ts +0 -65
  679. package/dist/ibl/face-uniforms.d.ts.map +0 -1
  680. package/dist/mesh-update-errors.d.ts +0 -71
  681. package/dist/mesh-update-errors.d.ts.map +0 -1
  682. package/dist/mipmap-generator.d.ts +0 -39
  683. package/dist/mipmap-generator.d.ts.map +0 -1
  684. package/dist/param-schema-projection-census.d.ts +0 -18
  685. package/dist/param-schema-projection-census.d.ts.map +0 -1
  686. package/dist/persistent-render-scene.d.ts +0 -158
  687. package/dist/persistent-render-scene.d.ts.map +0 -1
  688. package/dist/pipeline/index.d.ts +0 -11
  689. package/dist/pipeline/index.d.ts.map +0 -1
  690. package/dist/pipeline-errors.d.ts +0 -110
  691. package/dist/pipeline-errors.d.ts.map +0 -1
  692. package/dist/prepare/__tests__/schema-readers.unit.test.d.ts +0 -2
  693. package/dist/prepare/__tests__/schema-readers.unit.test.d.ts.map +0 -1
  694. package/dist/prepare/index.d.ts +0 -4
  695. package/dist/prepare/index.d.ts.map +0 -1
  696. package/dist/prepare/schema-readers.d.ts +0 -11
  697. package/dist/prepare/schema-readers.d.ts.map +0 -1
  698. package/dist/record/__tests__/environment-record.test.d.ts +0 -2
  699. package/dist/record/__tests__/environment-record.test.d.ts.map +0 -1
  700. package/dist/record/__tests__/frame-targets.unit.test.d.ts +0 -2
  701. package/dist/record/__tests__/frame-targets.unit.test.d.ts.map +0 -1
  702. package/dist/record/__tests__/membership-timing.unit.test.d.ts +0 -2
  703. package/dist/record/__tests__/membership-timing.unit.test.d.ts.map +0 -1
  704. package/dist/record/__tests__/render-submission.integration.test.d.ts +0 -2
  705. package/dist/record/__tests__/render-submission.integration.test.d.ts.map +0 -1
  706. package/dist/record/__tests__/render-submission.perf.test.d.ts +0 -2
  707. package/dist/record/__tests__/render-submission.perf.test.d.ts.map +0 -1
  708. package/dist/record/__tests__/shadow-submit-mode.unit.test.d.ts +0 -2
  709. package/dist/record/__tests__/shadow-submit-mode.unit.test.d.ts.map +0 -1
  710. package/dist/record/__tests__/view-ubo-layout.unit.test.d.ts +0 -2
  711. package/dist/record/__tests__/view-ubo-layout.unit.test.d.ts.map +0 -1
  712. package/dist/record/frame-observation.d.ts +0 -38
  713. package/dist/record/frame-observation.d.ts.map +0 -1
  714. package/dist/record/index.d.ts +0 -15
  715. package/dist/record/index.d.ts.map +0 -1
  716. package/dist/record/main-pass-skin.d.ts +0 -46
  717. package/dist/record/main-pass-skin.d.ts.map +0 -1
  718. package/dist/record/main-pass-sprite.d.ts +0 -69
  719. package/dist/record/main-pass-sprite.d.ts.map +0 -1
  720. package/dist/record/material-payload.d.ts +0 -43
  721. package/dist/record/material-payload.d.ts.map +0 -1
  722. package/dist/record/material-slot-plan.d.ts +0 -26
  723. package/dist/record/material-slot-plan.d.ts.map +0 -1
  724. package/dist/record/membership-timing.d.ts +0 -232
  725. package/dist/record/membership-timing.d.ts.map +0 -1
  726. package/dist/record/shadow-caster-uniform.d.ts +0 -8
  727. package/dist/record/shadow-caster-uniform.d.ts.map +0 -1
  728. package/dist/record/shadow-submit-mode.d.ts +0 -66
  729. package/dist/record/shadow-submit-mode.d.ts.map +0 -1
  730. package/dist/render-dispatch-membership.d.ts +0 -47
  731. package/dist/render-dispatch-membership.d.ts.map +0 -1
  732. package/dist/render-pipeline-context.d.ts +0 -289
  733. package/dist/render-pipeline-context.d.ts.map +0 -1
  734. package/dist/render-pipeline-target.d.ts +0 -16
  735. package/dist/render-pipeline-target.d.ts.map +0 -1
  736. package/dist/render-scene-projection.d.ts +0 -174
  737. package/dist/render-scene-projection.d.ts.map +0 -1
  738. package/dist/render-system-fold.d.ts +0 -266
  739. package/dist/render-system-fold.d.ts.map +0 -1
  740. package/dist/renderer/asset-service.d.ts +0 -10
  741. package/dist/renderer/asset-service.d.ts.map +0 -1
  742. package/dist/renderer/backend-selection.d.ts.map +0 -1
  743. package/dist/renderer/environment-classify.d.ts +0 -6
  744. package/dist/renderer/environment-classify.d.ts.map +0 -1
  745. package/dist/renderer/environment-error.d.ts +0 -13
  746. package/dist/renderer/environment-error.d.ts.map +0 -1
  747. package/dist/renderer/material/pipeline-projection.d.ts +0 -91
  748. package/dist/renderer/material/pipeline-projection.d.ts.map +0 -1
  749. package/dist/renderer/renderer-factory.d.ts +0 -283
  750. package/dist/renderer/renderer-factory.d.ts.map +0 -1
  751. package/dist/renderer.d.ts +0 -771
  752. package/dist/renderer.d.ts.map +0 -1
  753. package/dist/scene-utils/collect-subtree.d.ts +0 -11
  754. package/dist/scene-utils/collect-subtree.d.ts.map +0 -1
  755. package/dist/ssao-data.d.ts +0 -34
  756. package/dist/ssao-data.d.ts.map +0 -1
  757. package/dist/surface-format.d.ts +0 -10
  758. package/dist/surface-format.d.ts.map +0 -1
  759. package/dist/taa-history-store.d.ts +0 -88
  760. package/dist/taa-history-store.d.ts.map +0 -1
  761. package/dist/temporal-coverage.d.ts +0 -35
  762. package/dist/temporal-coverage.d.ts.map +0 -1
  763. package/dist/temporal-frame-transaction.d.ts +0 -92
  764. package/dist/temporal-frame-transaction.d.ts.map +0 -1
  765. package/dist/temporal-inspection.d.ts +0 -57
  766. package/dist/temporal-inspection.d.ts.map +0 -1
  767. package/dist/temporal-view.d.ts +0 -43
  768. package/dist/temporal-view.d.ts.map +0 -1
  769. package/dist/tilemap/resolve-tileset-runtime.d.ts +0 -23
  770. package/dist/tilemap/resolve-tileset-runtime.d.ts.map +0 -1
  771. package/dist/urp-pipeline.d.ts +0 -4
  772. package/dist/urp-pipeline.d.ts.map +0 -1
  773. package/src/__tests__/analytic-sky-contract.test.ts +0 -27
  774. package/src/__tests__/analytic-sky-falsify-carriers.mjs +0 -43
  775. package/src/__tests__/analytic-sky-falsify.test.ts +0 -94
  776. package/src/__tests__/assets-runtime-handoff.integration.test.ts +0 -36
  777. package/src/__tests__/backend-selection.integration.test.ts +0 -11
  778. package/src/__tests__/camera-temporal.test-d.ts +0 -8
  779. package/src/__tests__/camera-temporal.test.ts +0 -188
  780. package/src/__tests__/directional-shadow-probe-atlas-layout.unit.test.ts +0 -18
  781. package/src/__tests__/environment-inspection.test.ts +0 -45
  782. package/src/__tests__/fog-ai-user.fixture.ts +0 -350
  783. package/src/__tests__/fog-custom-render-feature.fixture.ts +0 -33
  784. package/src/__tests__/fog-custom-render-feature.integration.test.ts +0 -76
  785. package/src/__tests__/fog-inspection.integration.test.ts +0 -127
  786. package/src/__tests__/fog-owner-state.integration.test.ts +0 -112
  787. package/src/__tests__/fog-pipeline-topology.integration.test.ts +0 -93
  788. package/src/__tests__/fog-public-surface.integration.test.ts +0 -60
  789. package/src/__tests__/fog-ray-contract.integration.test.ts +0 -73
  790. package/src/__tests__/fog-source-absence.integration.test.ts +0 -51
  791. package/src/__tests__/fog-temporal.integration.test.ts +0 -115
  792. package/src/__tests__/frame-chain.unit.test.ts +0 -26
  793. package/src/__tests__/gpu-scene-field-type-owner.test-d.ts +0 -27
  794. package/src/__tests__/hdrp-pipeline.unit.test.ts +0 -100
  795. package/src/__tests__/ibl/ibl-fallback.unit.test.ts +0 -23
  796. package/src/__tests__/material-derived-error-stop-draw.integration.test.ts +0 -69
  797. package/src/__tests__/material-derived-payload.integration.test.ts +0 -164
  798. package/src/__tests__/materials.unit.test.ts +0 -25
  799. package/src/__tests__/param-schema-projection-census.unit.test.ts +0 -40
  800. package/src/__tests__/persistent-render-scene.unit.test.ts +0 -1311
  801. package/src/__tests__/pipeline-error-policy-owner.unit.test.ts +0 -167
  802. package/src/__tests__/pipeline-pass-trace.test.ts +0 -92
  803. package/src/__tests__/pipeline-stage-owner.test-d.ts +0 -13
  804. package/src/__tests__/plugin.test.ts +0 -25
  805. package/src/__tests__/prepared-graphics-backend-matrix.unit.test.ts +0 -129
  806. package/src/__tests__/prepared-graphics-resolver-recording.unit.test.ts +0 -180
  807. package/src/__tests__/public-pipeline-id.test-d.ts +0 -6
  808. package/src/__tests__/render-dispatch-membership.unit.test.ts +0 -117
  809. package/src/__tests__/render-feature-construction.unit.test.ts +0 -124
  810. package/src/__tests__/render-feature-error-code-owner.test-d.ts +0 -27
  811. package/src/__tests__/render-feature-gpu-buffer-usage-owner.test-d.ts +0 -46
  812. package/src/__tests__/render-feature-graph.integration.test.ts +0 -205
  813. package/src/__tests__/render-feature-graphics-staging.unit.test.ts +0 -200
  814. package/src/__tests__/render-feature-order.unit.test.ts +0 -66
  815. package/src/__tests__/render-feature-prepared-graphics-recording.unit.test.ts +0 -107
  816. package/src/__tests__/render-feature-staging.unit.test.ts +0 -94
  817. package/src/__tests__/renderer-render-scene-public.test-d.ts +0 -27
  818. package/src/__tests__/scene-temporal-coverage.unit.test.ts +0 -259
  819. package/src/__tests__/sun-snapshot-consumers.test.ts +0 -35
  820. package/src/__tests__/surface-backend-kind-owner.test-d.ts +0 -42
  821. package/src/__tests__/taa-history-store.unit.test.ts +0 -196
  822. package/src/__tests__/temporal-frame-transaction.integration.test.ts +0 -537
  823. package/src/__tests__/temporal-inspection.unit.test.ts +0 -138
  824. package/src/assets/__tests__/asset-decoders.unit.test.ts +0 -92
  825. package/src/assets/__tests__/mipmap-generator.unit.test.ts +0 -52
  826. package/src/assets/__tests__/render-asset-port.unit.test.ts +0 -54
  827. package/src/assets/__tests__/resolve-render-asset.unit.test.ts +0 -47
  828. package/src/components/__tests__/atmosphere-red.test.ts +0 -51
  829. package/src/components/__tests__/atmosphere.test.ts +0 -79
  830. package/src/components/__tests__/fog.test-d.ts +0 -49
  831. package/src/components/__tests__/fog.test.ts +0 -60
  832. package/src/components/atmosphere.ts +0 -64
  833. package/src/deferred-lighting.ts +0 -92
  834. package/src/dynamic-texture-store.ts +0 -111
  835. package/src/environment/README.md +0 -76
  836. package/src/environment/__tests__/failure-injection.test.ts +0 -50
  837. package/src/environment/__tests__/generation-red.test.ts +0 -64
  838. package/src/environment/__tests__/generation.test.ts +0 -37
  839. package/src/environment/__tests__/graph-transaction.test.ts +0 -85
  840. package/src/environment/__tests__/inspection-red.test.ts +0 -53
  841. package/src/environment/__tests__/lifecycle-evidence.test.ts +0 -40
  842. package/src/environment/__tests__/pipeline-topology.test.ts +0 -33
  843. package/src/environment/__tests__/readiness.test.ts +0 -42
  844. package/src/environment/__tests__/recovery.test.ts +0 -62
  845. package/src/environment/__tests__/resize-dispose.test.ts +0 -30
  846. package/src/environment/__tests__/signature-red.test.ts +0 -45
  847. package/src/environment/__tests__/signature.test.ts +0 -60
  848. package/src/environment/descriptors.ts +0 -7
  849. package/src/environment/extracted-environment.ts +0 -239
  850. package/src/environment/generation.ts +0 -158
  851. package/src/environment/gpu-bundle.ts +0 -144
  852. package/src/environment/graph.ts +0 -588
  853. package/src/environment/inspection.ts +0 -107
  854. package/src/environment/lifecycle.ts +0 -124
  855. package/src/environment/readiness.ts +0 -76
  856. package/src/environment/signature.ts +0 -185
  857. package/src/extract/__tests__/directional-csm-domain.unit.test.ts +0 -391
  858. package/src/extract/__tests__/environment-source.test.ts +0 -105
  859. package/src/extract/__tests__/schema-readers.unit.test.ts +0 -16
  860. package/src/extract/directional-csm.ts +0 -959
  861. package/src/extract/index.ts +0 -10
  862. package/src/extract/material-interface.ts +0 -604
  863. package/src/extract/schema-readers.ts +0 -27
  864. package/src/features/graph-contribution.ts +0 -577
  865. package/src/features/index.ts +0 -100
  866. package/src/features/morph/index.ts +0 -24
  867. package/src/features/morph/morph-bounds.ts +0 -123
  868. package/src/features/scene-temporal.ts +0 -274
  869. package/src/features/taa-resolve.ts +0 -244
  870. package/src/frame-chain.ts +0 -21
  871. package/src/hdrp-cluster-membership.ts +0 -70
  872. package/src/ibl/cubemap-projection.ts +0 -60
  873. package/src/ibl/face-uniforms.ts +0 -150
  874. package/src/mesh-update-errors.ts +0 -113
  875. package/src/mipmap-generator.ts +0 -244
  876. package/src/param-schema-projection-census.ts +0 -73
  877. package/src/persistent-render-scene.ts +0 -1752
  878. package/src/pipeline/index.ts +0 -40
  879. package/src/pipeline-errors.ts +0 -172
  880. package/src/prepare/__tests__/schema-readers.unit.test.ts +0 -16
  881. package/src/prepare/index.ts +0 -8
  882. package/src/prepare/schema-readers.ts +0 -20
  883. package/src/record/__tests__/environment-record.test.ts +0 -35
  884. package/src/record/__tests__/frame-targets.unit.test.ts +0 -54
  885. package/src/record/__tests__/membership-timing.unit.test.ts +0 -524
  886. package/src/record/__tests__/render-submission.integration.test.ts +0 -76
  887. package/src/record/__tests__/render-submission.perf.test.ts +0 -141
  888. package/src/record/__tests__/shadow-submit-mode.unit.test.ts +0 -88
  889. package/src/record/__tests__/view-ubo-layout.unit.test.ts +0 -101
  890. package/src/record/frame-observation.ts +0 -122
  891. package/src/record/index.ts +0 -15
  892. package/src/record/main-pass-skin.ts +0 -51
  893. package/src/record/main-pass-sprite.ts +0 -166
  894. package/src/record/material-payload.ts +0 -292
  895. package/src/record/material-slot-plan.ts +0 -68
  896. package/src/record/membership-timing.ts +0 -1012
  897. package/src/record/shadow-caster-uniform.ts +0 -37
  898. package/src/record/shadow-submit-mode.ts +0 -277
  899. package/src/render-dispatch-membership.ts +0 -155
  900. package/src/render-pipeline-context.ts +0 -332
  901. package/src/render-pipeline-target.ts +0 -96
  902. package/src/render-scene-projection.ts +0 -1738
  903. package/src/render-system-fold.ts +0 -531
  904. package/src/renderer/asset-service.ts +0 -32
  905. package/src/renderer/backend-selection.ts +0 -121
  906. package/src/renderer/environment-classify.ts +0 -30
  907. package/src/renderer/environment-error.ts +0 -19
  908. package/src/renderer/material/pipeline-projection.ts +0 -140
  909. package/src/renderer.ts +0 -940
  910. package/src/scene-utils/collect-subtree.ts +0 -40
  911. package/src/ssao-data.ts +0 -106
  912. package/src/surface-format.ts +0 -37
  913. package/src/taa-history-store.ts +0 -429
  914. package/src/temporal-coverage.ts +0 -106
  915. package/src/temporal-frame-transaction.ts +0 -301
  916. package/src/temporal-inspection.ts +0 -194
  917. package/src/temporal-view.ts +0 -174
  918. package/src/tilemap/resolve-tileset-runtime.ts +0 -72
@@ -0,0 +1,101 @@
1
+ import type { AssetRegistry } from '@forgeax/engine-assets-runtime';
2
+ import type { World } from '@forgeax/engine-ecs';
3
+ import type { Result, RhiDevice, RhiError, ShaderModule } from '@forgeax/engine-rhi';
4
+ import type { RecoverFailure } from '../errors/recover';
5
+ import type { ObservationUnavailableError, RenderError } from '../errors/render';
6
+ import type { RenderFeature, RenderFeatureDiagnostics } from '../features/types';
7
+ import type { MeshMaterialBindingObservation } from '../mesh-material-bindings';
8
+ import type { FrameObservation, FrameObservationOptions } from '../record/frame';
9
+ import type {
10
+ DrawOwnerOptions,
11
+ FrameObservationRequest,
12
+ FrameReceipt,
13
+ FrameReceiptObservation,
14
+ HealthSnapshot,
15
+ RenderDebugOverlay,
16
+ RendererError,
17
+ RendererErrorListener,
18
+ RendererLostListener,
19
+ RenderFrameInput,
20
+ RenderInspection,
21
+ RenderProfile,
22
+ RenderResult,
23
+ RenderWorldLease,
24
+ } from '../render-contract';
25
+ import type { RenderSceneInspection } from '../render-system';
26
+
27
+ type RenderShaderModuleFactory = (
28
+ device: RhiDevice,
29
+ desc: { readonly label?: string | undefined; readonly code: string },
30
+ ) => Promise<Result<ShaderModule, RhiError>>;
31
+
32
+ /** Package-local source projected to the sole public Renderer.subscribe channel. */
33
+ export type RendererHostEvent =
34
+ | { readonly kind: 'error'; readonly error: RendererError }
35
+ | { readonly kind: 'health'; readonly health: HealthSnapshot };
36
+
37
+ export type RendererHostEventListener = (event: RendererHostEvent) => void;
38
+
39
+ /**
40
+ * Narrow assembly contract consumed by exposeRenderer and constructRendererHost.
41
+ * Legacy diagnostics remain on RendererLegacyHostAdapter and cannot leak into
42
+ * the public Renderer type.
43
+ */
44
+ export interface RendererHostImplementation {
45
+ attach(world: World): RenderResult<RenderWorldLease, RenderError>;
46
+ setProfile(profile: RenderProfile): RenderResult<void, RenderError>;
47
+ inspect(): RenderInspection;
48
+ drawFrame(request: RenderFrameInput): RenderResult<FrameReceipt, RhiError | RenderError>;
49
+ observe(
50
+ receipt: FrameReceipt,
51
+ request: FrameObservationRequest,
52
+ ): Promise<RenderResult<FrameReceiptObservation, RenderError>>;
53
+ releaseSurface(): RenderResult<void, RhiError>;
54
+ restoreSurface(): RenderResult<void, RhiError>;
55
+ recover(): Promise<Result<void, RecoverFailure>>;
56
+ dispose(): RenderResult<void, RenderError>;
57
+ /** @internal Single event source used to construct public Renderer.subscribe. */
58
+ subscribeHostEvents(listener: RendererHostEventListener): () => void;
59
+
60
+ readonly device: RhiDevice;
61
+ /** @internal */
62
+ readonly _internal_createShaderModule: RenderShaderModuleFactory;
63
+ /** @internal */
64
+ readonly _internal_setRenderOverlay: (overlay: RenderDebugOverlay | undefined) => void;
65
+ readonly assetRegistry: AssetRegistry;
66
+ readonly initialization: Promise<RenderResult<void, RhiError>>;
67
+ }
68
+
69
+ /**
70
+ * @internal
71
+ * Temporary package-local compatibility surface for unmigrated render tests
72
+ * and producers. It is intentionally absent from RendererHostImplementation.
73
+ */
74
+ export interface RendererLegacyHostAdapter {
75
+ attachScene(world: World): RenderResult<void, RhiError>;
76
+ detachScene(world: World): void;
77
+ draw(
78
+ worldsOrRequest: readonly World[] | RenderFrameInput,
79
+ options?: DrawOwnerOptions,
80
+ ): RenderResult<void | FrameReceipt, RhiError | RenderError>;
81
+ observeCurrentFrame(
82
+ options: FrameObservationOptions,
83
+ ): Promise<RenderResult<FrameObservation, ObservationUnavailableError>>;
84
+ onLost(listener: RendererLostListener): () => void;
85
+ onError(listener: RendererErrorListener): () => void;
86
+ health(): HealthSnapshot;
87
+ readonly frustumStats: { readonly culled: number; readonly total: number };
88
+ readonly visibilityStats: { readonly explicitlyHidden: number };
89
+ readonly renderScene: RenderSceneInspection;
90
+ readonly meshMaterialBindings: readonly MeshMaterialBindingObservation[];
91
+ readonly perFramePassNames: readonly string[];
92
+ renderFeatureDiagnostics(): readonly RenderFeatureDiagnostics[];
93
+ installRenderFeature(feature: RenderFeature<unknown>): Promise<RenderResult<void, RenderError>>;
94
+ uninstallRenderFeature(feature: RenderFeature<unknown>): Promise<RenderResult<void, RenderError>>;
95
+ readonly bindGroupCounts: { readonly createBindGroup: number; readonly keys: readonly string[] };
96
+ }
97
+
98
+ /** @internal Concrete factory object before it is narrowed by exposeRenderer. */
99
+ export interface RendererAssemblyImplementation
100
+ extends RendererHostImplementation,
101
+ RendererLegacyHostAdapter {}
@@ -1,4 +1,4 @@
1
- import type { CookedMaterialRecord } from '@forgeax/engine-pack';
1
+ import type { CookedMaterialRecord } from '@forgeax/engine-pack/material-cook';
2
2
  import type { MaterialValue } from '@forgeax/engine-types';
3
3
 
4
4
  export interface MaterialRenderPassProjection {
@@ -15,7 +15,6 @@ export interface MaterialRenderProjection {
15
15
  readonly materialGuid: string;
16
16
  readonly specializationKey: string;
17
17
  readonly artifactHash: string;
18
- readonly layoutIdentity: string;
19
18
  readonly passes: readonly MaterialRenderPassProjection[];
20
19
  readonly runtimeValues: Readonly<Record<string, MaterialValue | null>>;
21
20
  readonly staticSelection: readonly string[];
@@ -42,7 +41,6 @@ export function assembleMaterialProjection(record: CookedMaterialRecord): Materi
42
41
  materialGuid: record.guid,
43
42
  specializationKey: record.receipt.inputDigest,
44
43
  artifactHash: record.artifact.digest,
45
- layoutIdentity: record.receipt.layoutIdentity,
46
44
  passes: record.resolved.passes.map((pass) => projectPass(record, pass)),
47
45
  runtimeValues: record.resolved.values,
48
46
  staticSelection: record.resolved.parameters
@@ -0,0 +1,63 @@
1
+ import type { MaterialRuntimeArtifact } from '@forgeax/engine-shader';
2
+ import type { MaterialValue } from '@forgeax/engine-types';
3
+ import type { MaterialRenderProjection } from './assembly.js';
4
+
5
+ export interface MaterialPipelineProjection {
6
+ readonly specializationKey: string;
7
+ readonly artifactHash: string;
8
+ readonly passes: MaterialRenderProjection['passes'];
9
+ }
10
+
11
+ export interface MaterialPipelineReady extends MaterialPipelineProjection {
12
+ readonly kind: 'ready';
13
+ readonly artifact: MaterialRuntimeArtifact;
14
+ }
15
+
16
+ export interface MaterialPipelineMiss {
17
+ readonly kind: 'error';
18
+ readonly error: {
19
+ readonly code: 'material-specialization-not-cooked';
20
+ readonly expected: string;
21
+ readonly hint: string;
22
+ readonly detail: { readonly specializationKey: string };
23
+ };
24
+ }
25
+
26
+ export function projectMaterialPipeline(
27
+ projection: MaterialRenderProjection,
28
+ ): MaterialPipelineProjection {
29
+ return {
30
+ specializationKey: projection.specializationKey,
31
+ artifactHash: projection.artifactHash,
32
+ passes: projection.passes,
33
+ };
34
+ }
35
+
36
+ export function updateMaterialRuntimeValues(
37
+ projection: MaterialRenderProjection,
38
+ values: Readonly<Record<string, MaterialValue | null>>,
39
+ ): MaterialRenderProjection {
40
+ return {
41
+ ...projection,
42
+ runtimeValues: { ...projection.runtimeValues, ...values },
43
+ };
44
+ }
45
+
46
+ export function routeMaterialPipeline(args: {
47
+ readonly projection: MaterialRenderProjection;
48
+ readonly lookupArtifact: (key: string) => MaterialRuntimeArtifact | undefined;
49
+ }): MaterialPipelineReady | MaterialPipelineMiss {
50
+ const artifact = args.lookupArtifact(args.projection.specializationKey);
51
+ if (artifact === undefined || artifact.digest !== args.projection.artifactHash) {
52
+ return {
53
+ kind: 'error',
54
+ error: {
55
+ code: 'material-specialization-not-cooked',
56
+ expected: 'a published artifact for the cooked specialization key',
57
+ hint: 'cook and publish the material specialization before rendering it',
58
+ detail: { specializationKey: args.projection.specializationKey },
59
+ },
60
+ };
61
+ }
62
+ return { kind: 'ready', ...projectMaterialPipeline(args.projection), artifact };
63
+ }
package/src/authoring.ts CHANGED
@@ -1,24 +1,16 @@
1
1
  // Optional authoring features intentionally live outside the base render vocabulary.
2
- export * from './components/glyph-text';
3
- export * from './components/sprite-animation';
4
- export * from './components/sprite-instances';
5
- export * from './components/sprite-playback-mode';
6
- export * from './components/sprite-region-override';
7
- export * from './components/tile-layer';
8
- export * from './components/tilemap';
9
- export { glyphTextLayoutSystem, resetGlyphBakeCache } from './glyph-text-layout-system';
2
+ // Systems, asset resolution, and registry details remain owner-local.
3
+
4
+ export { GlyphText } from './components/glyph-text';
5
+ export { SpriteAnimation } from './components/sprite-animation';
6
+ export { SpriteInstances, type SpriteInstancesData } from './components/sprite-instances';
7
+ export { SpritePlayback, spritePlaybackModeFromU32 } from './components/sprite-playback-mode';
8
+ export { SpriteRegionOverride } from './components/sprite-region-override';
9
+ export { TileLayer, TilemapSort } from './components/tile-layer';
10
+ export { Tilemap } from './components/tilemap';
10
11
  export {
11
- Materials,
12
- materialTextureValue,
13
- SPRITE_PREMULTIPLIED_ALPHA_BLEND,
14
- } from './materials';
15
- export {
16
- getTransparentSortConfig,
17
- setTransparentSortConfig,
18
- TRANSPARENT_SORT_MODE_DISTANCE,
19
- TRANSPARENT_SORT_MODE_LAYER_Y,
20
- TRANSPARENT_SORT_MODE_LAYER_YZ,
21
- TRANSPARENT_SORT_MODE_LAYER_Z,
22
- type TransparentSortConfig,
23
- } from './systems/transparent-sort-config';
24
- export { tilemapChunkExtractSystem } from './tilemap-chunk-extract-system';
12
+ createFullscreenRenderFeature,
13
+ type FullscreenRenderFeatureOptions,
14
+ } from './features/fullscreen';
15
+ export { SPRITE_PREMULTIPLIED_ALPHA_BLEND } from './materials';
16
+ export { TransparentSort } from './systems/transparent-sort-config';
@@ -0,0 +1,10 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { Camera, DirectionalLight, MeshFilter } from '../index';
3
+
4
+ describe('canonical render schema owners', () => {
5
+ it('keeps mesh, light, and camera facts on their component owners', () => {
6
+ expect(MeshFilter.fields.assetHandle.type).toBe('shared<MeshAsset>');
7
+ expect(DirectionalLight.fields.direction.type).toBe('array<f32, 3>');
8
+ expect(Camera.fields.projection.default).toBe(0);
9
+ });
10
+ });
@@ -13,7 +13,7 @@
13
13
  // Schema vocab:
14
14
  // - `fontHandle: 'shared<FontAsset>'` -> `Handle<'FontAsset', 'shared'>`
15
15
  // (u32-stored; AssetRegistry owns the FontAsset lifecycle). AI users
16
- // obtain the handle via `assets.load(guid, fontAssetKind)`.
16
+ // obtain the handle via `assets.loadByGuid<FontAsset>(guid)`.
17
17
  // - `text: 'string'` -> native JS string (UniqueRefStore-backed, same
18
18
  // dispatch as `Name.value`).
19
19
  // - `fontSize: 'f32'` -> layout scale applied to the FontAsset metrics.
@@ -41,7 +41,7 @@ import { defineComponent } from '@forgeax/engine-ecs';
41
41
  *
42
42
  * @example Spawn a world-space label:
43
43
  * import { GlyphText } from '@forgeax/engine-render/authoring';
44
- * const font = (await assets.load(fontGuid, fontAssetKind)).unwrap();
44
+ * const font = (await assets.loadByGuid(fontGuid)).unwrap();
45
45
  * world.spawn({
46
46
  * component: GlyphText,
47
47
  * data: { fontHandle: font, text: 'Hello', fontSize: 32,
@@ -54,6 +54,7 @@ export const GlyphText = defineComponent('GlyphText', {
54
54
  fontHandle: {
55
55
  type: 'shared<FontAsset>',
56
56
  default: 0 as never,
57
+ simulationTransient: true,
57
58
  },
58
59
  text: { type: 'string', default: '' },
59
60
  fontSize: { type: 'f32', default: 16 },
@@ -1,14 +1,5 @@
1
- export { Atmosphere } from './atmosphere';
2
1
  export * from './camera';
3
2
  export * from './directional-light';
4
- export {
5
- Fog,
6
- SKYBOX_MODE_CUBEMAP,
7
- SkyboxBackground,
8
- type SkyboxMode,
9
- Skylight,
10
- skyboxModeFromF32,
11
- } from './environment';
12
3
  export { Instances, type InstancesData } from './instances';
13
4
  export { Layer } from './layer';
14
5
  export * from './mesh-filter';
@@ -21,6 +12,13 @@ export {
21
12
  type SceneInstanceOverrideRecord,
22
13
  type SceneInstanceState,
23
14
  } from './scene-instance';
15
+ export {
16
+ SKYBOX_MODE_CUBEMAP,
17
+ SkyboxBackground,
18
+ type SkyboxMode,
19
+ skyboxModeFromF32,
20
+ } from './skybox-background';
21
+ export { Skylight } from './skylight';
24
22
  export { SortKey } from './sort-key';
25
23
  export { SpotLight } from './spot-light';
26
24
  export { SpriteAnimation } from './sprite-animation';
@@ -55,7 +55,7 @@
55
55
  // responsibility migration): the legacy component-level
56
56
  // stride-declaration option (`{ transforms: 16 }` keyed on the retired
57
57
  // per-component stride defineComponent option key) was retired because:
58
- // - The ECS layer no longer carries any per-component stride schema (M2 /
58
+ // - The ECS layer no longer carries a per-component stride schema (M2 /
59
59
  // w9 dropped the option from `DefineComponentOptions` -- the SSOT
60
60
  // moved to the RenderSystem entry + AI user set site).
61
61
  // - Centralising the check at the consumer (RenderSystem extract) rather
@@ -98,8 +98,7 @@
98
98
  // ===== (a) single-component import + spawn example =====
99
99
  //
100
100
  // import {
101
- // createRenderer,
102
- // createPrimitiveMesh,
101
+ // createRenderer, HANDLE_CUBE,
103
102
  // MeshFilter, MeshRenderer, Transform,
104
103
  // Instances, type InstancesData,
105
104
  // } from '@forgeax/engine-render';
@@ -108,7 +107,7 @@
108
107
  // const transforms = new Float32Array(N * 16);
109
108
  // // ... fill column-major mat4 columns per instance ...
110
109
  // world.spawn(
111
- // { component: MeshFilter, data: { assetHandle: cubeMesh } },
110
+ // { component: MeshFilter, data: { assetHandle: HANDLE_CUBE } },
112
111
  // { component: MeshRenderer, data: {} },
113
112
  // { component: Instances, data: { transforms } },
114
113
  // );
@@ -181,7 +180,7 @@ import { defineComponent } from '@forgeax/engine-ecs';
181
180
  * const transforms = new Float32Array(10000 * 16);
182
181
  * // ... fill column-major mat4 columns ...
183
182
  * world.spawn(
184
- * { component: MeshFilter, data: { assetHandle: cubeMesh } },
183
+ * { component: MeshFilter, data: { assetHandle: HANDLE_CUBE } },
185
184
  * { component: MeshRenderer, data: { ... } },
186
185
  * { component: Instances, data: { transforms } },
187
186
  * );
@@ -15,7 +15,7 @@
15
15
  // invRangeSquared = 1e8 protects the 0 * Infinity = NaN intermediate).
16
16
 
17
17
  import { err, ok, type Result } from '@forgeax/engine-types';
18
- import { SpawnLightInvalidBoundsError } from '../errors';
18
+ import { SpawnLightInvalidBoundsError } from '../errors/ecs-validation';
19
19
  import { ShadowInvalidConfigError } from '../errors/render';
20
20
 
21
21
  export type LightValidationError = SpawnLightInvalidBoundsError | ShadowInvalidConfigError;
@@ -8,9 +8,10 @@
8
8
  // The brand prevents cross-asset assignment at compile time (e.g.
9
9
  // `Handle<'TextureAsset','shared'>` is not assignable to `assetHandle`).
10
10
  //
11
- // AI users create one `MeshAsset` payload through geometry's primitive
12
- // factory and intern it in the owning World; the returned shared reference
13
- // matches the schema-derived `Handle<'MeshAsset', 'shared'>` shape.
11
+ // AI users spawn with the assets-runtime constants `HANDLE_CUBE` /
12
+ // `HANDLE_TRIANGLE` (now branded `Handle<'MeshAsset','shared'>` to
13
+ // match the schema-derived shape); custom mesh registration is owned by
14
+ // feat-future-asset-system (this MVP only exposes builtin handles).
14
15
  //
15
16
  // Naming flavor: unity-style "MeshFilter / MeshRenderer" pair, but the forgeax
16
17
  // pair does NOT mirror Unity's filter-toggle semantics - MeshFilter only
@@ -38,9 +39,10 @@ import { defineComponent } from '@forgeax/engine-ecs';
38
39
  * Mesh filter (geometry asset reference).
39
40
  *
40
41
  * `assetHandle` carries a `Handle<'MeshAsset', 'shared'>` (u32-stored)
41
- * pointing to a mesh interned by the owning World. Create that reference
42
- * with `world.internSharedRef(createPrimitiveMesh('cube').unwrap())` or
43
- * with a payload loaded from the App asset registry.
42
+ * pointing into `engine.assets: AssetRegistry`. Use the predefined
43
+ * constants `HANDLE_CUBE` / `HANDLE_TRIANGLE` exported from
44
+ * `@forgeax/engine-render`; custom-mesh registration is OOS in MVP (see
45
+ * feat-future-asset-system).
44
46
  *
45
47
  * Error path: if the handle is not registered at draw time, RenderSystem
46
48
  * fires `Renderer.onError` with
@@ -48,11 +50,10 @@ import { defineComponent } from '@forgeax/engine-ecs';
48
50
  * and skips this entity (other entities continue rendering; charter
49
51
  * proposition 9 graceful degradation).
50
52
  *
51
- * @example Spawn an entity referencing a geometry-owned cube mesh:
53
+ * @example Spawn an entity referencing the builtin cube mesh:
52
54
  * import { MeshFilter } from '@forgeax/engine-render';
53
- * import { createPrimitiveMesh } from '@forgeax/engine-geometry';
54
- * const cube = world.internSharedRef(createPrimitiveMesh('cube').unwrap());
55
- * world.spawn({ component: MeshFilter, data: { assetHandle: cube } });
55
+ * import { HANDLE_CUBE } from '@forgeax/engine-assets-runtime';
56
+ * world.spawn({ component: MeshFilter, data: { assetHandle: HANDLE_CUBE } });
56
57
  */
57
58
  export const MeshFilter = defineComponent('MeshFilter', {
58
59
  assetHandle: { type: 'shared<MeshAsset>' },
@@ -3,10 +3,10 @@
3
3
  // Schema: { shader: 'string', data: 'buffer' }.
4
4
  //
5
5
  // `shader` identifies the fullscreen post-process shader (the same id as passed to
6
- // `renderer.postProcess.register(id, entry)`). `data` carries the per-frame params
6
+ // the feature host registers for `id`). `data` carries the per-frame params
7
7
  // bytes as a variable-byte ECS managed buffer slot. The write side (world.spawn /
8
- // world.set) accepts any AllowSharedBufferSource (Float32Array / ArrayBuffer /
9
- // Uint8Array / any TypedArray) and the ECS normalizes it to Uint8Array bytes
8
+ // world.set) accepts every AllowSharedBufferSource (Float32Array / ArrayBuffer /
9
+ // Uint8Array / typed array) and the ECS normalizes it to Uint8Array bytes
10
10
  // (feat-20260621 V2 / AC-A4); the read side (world.get) returns Uint8Array, which
11
11
  // satisfies AllowSharedBufferSource for GPU queue.writeBuffer ingestion.
12
12
  //
@@ -34,7 +34,7 @@
34
34
  // - charter P3 (machine-readable schema: 3 closed fields)
35
35
  // - charter P4 (consistent abstraction: instance == entity carrying
36
36
  // SceneInstance — same `world.query({ read: [SceneInstance] })` /
37
- // `world.get(root, SceneInstance)` path as any other component)
37
+ // `world.get(root, SceneInstance)` path as another component)
38
38
 
39
39
  import { defineComponent, type EntityHandle } from '@forgeax/engine-ecs';
40
40
  import type { LocalEntityId, MountOverride } from '@forgeax/engine-types';
@@ -52,8 +52,8 @@ import type { LocalEntityId, MountOverride } from '@forgeax/engine-types';
52
52
  * mismatch'` (plan-strategy §D-9) catches type drift on the apply path.
53
53
  *
54
54
  * @internal Surface from `state.overrides` only; AI users never construct a
55
- * record directly. Use `worldSetSceneOverride(world, root, member, comp,
56
- * field, value)` to write and `worldRemoveSceneOverride(world, root, member,
55
+ * record directly. Use `world.setSceneOverride(root, member, comp,
56
+ * field, value)` to write and `world.removeSceneOverride(root, member,
57
57
  * comp, field)` to roll back to the source SceneAsset value.
58
58
  */
59
59
  export interface SceneInstanceOverrideRecord {
@@ -75,11 +75,11 @@ export interface SceneInstanceOverrideRecord {
75
75
  * AI users can iterate without indirection.
76
76
  *
77
77
  * Lifecycle:
78
- * - allocated by `worldInstantiateScene(world, handle, parent?)` — the W in
78
+ * - allocated by `world.instantiateScene(handle, parent?)` — the W in
79
79
  * `world.allocUniqueRef('SceneInstanceState', state)` returns the u32
80
80
  * slot id stored in the SceneInstance.state column;
81
81
  * - released by `world.despawn(root)` (the standard `ref<T>` release loop)
82
- * or explicitly via `worldDespawnScene(world, root)` / `worldDespawnDescendants(world, root)`.
82
+ * or explicitly via `world.despawnScene(root)` / `world.despawnDescendants(root)`.
83
83
  *
84
84
  * AI users typically reach this struct only through the read path
85
85
  * `world.get(root, SceneInstance).state.overrides.get(<comp>:<field>)` for
@@ -96,17 +96,17 @@ export interface SceneInstanceState {
96
96
 
97
97
  /**
98
98
  * Reverse mapping (live `Entity` -> source `LocalEntityId`). Used by
99
- * `worldSetSceneOverride` to validate the member entity belongs to this
100
- * instance + by `worldDetachSceneMember` / `worldReattachSceneMember`
99
+ * `world.setSceneOverride` to validate the member entity belongs to this
100
+ * instance + by `world.detachSceneMember` / `world.reattachSceneMember`
101
101
  * to translate caller-side Entity values back to their authored localId.
102
102
  */
103
103
  readonly entityToLocalId: Map<EntityHandle, LocalEntityId>;
104
104
 
105
105
  /**
106
106
  * LocalEntityIds of members the AI user marked detached via
107
- * `worldDetachSceneMember(world, root, member)`. The member entities stay
107
+ * `world.detachSceneMember(root, member)`. The member entities stay
108
108
  * alive in the World; only the bookkeeping marker moves so
109
- * `worldDespawnDescendants(world, root, { keepDetached: true })` can skip them.
109
+ * `world.despawnDescendants(root, { keepDetached: true })` can skip them.
110
110
  * Detach is idempotent (set semantics).
111
111
  */
112
112
  readonly detachedLocalIds: Set<LocalEntityId>;
@@ -134,7 +134,7 @@ export interface SceneInstanceState {
134
134
  /**
135
135
  * Total slot count `entities.length + sum(mounts[].memberCount)` —
136
136
  * captured at instantiate-time so cycle / count consistency checks
137
- * (e.g. `worldGetSceneAssetForInstance(world, root)` symmetry) can compare
137
+ * (e.g. `world.getSceneAssetForInstance(root)` symmetry) can compare
138
138
  * against the live SceneInstance.mapping column without re-reading the
139
139
  * SceneAsset.
140
140
  */
@@ -142,7 +142,7 @@ export interface SceneInstanceState {
142
142
 
143
143
  /**
144
144
  * Mount-time override authored on the parent SceneAsset's `mounts[]`
145
- * record. Captured at instantiate-time so `worldRemoveSceneOverride`
145
+ * record. Captured at instantiate-time so `world.removeSceneOverride`
146
146
  * can fall back to the mount-time value before going to the source
147
147
  * SceneAsset value (plan-strategy §D-2).
148
148
  */
@@ -174,7 +174,7 @@ export interface SceneInstanceState {
174
174
  * apply unchanged (plan-strategy §D-5).
175
175
  *
176
176
  * @example Materialise + inspect a SceneAsset:
177
- * const { root, diagnostics } = worldInstantiateScene(world, handle).value;
177
+ * const { root, diagnostics } = world.instantiateScene(handle).value;
178
178
  * const inst = world.get(root, SceneInstance).value;
179
179
  * // inst.source === handle, inst.mapping is Uint32Array(totalSlots)
180
180
  * // inst.state holds entityToLocalId / detachedLocalIds / overrides /
@@ -0,0 +1,103 @@
1
+ // @forgeax/engine-runtime - SkyboxBackground (environment cubemap render background).
2
+ //
3
+ // Schema: 3 fields -- equirect (Handle<EquirectAsset>, u32-stored handle)
4
+ // + mode (f32 enum column, discriminator) + rotation (quaternion xyzw,
5
+ // default identity). Naming convention follows the
6
+ // single-semantic component rule: no Component suffix (AGENTS.md rule #1).
7
+ //
8
+ // feat-20260630-equirect-kind-internalized-ibl-declarative-skyligh M3 / w16:
9
+ // the field is `equirect: shared<EquirectAsset>` (the retired
10
+ // `cubemap: shared<CubeTextureAsset>` is gone). The skybox reuses the same
11
+ // equirect handle as the Skylight; the cubemap projection is internal and
12
+ // driven by the render-system record arm (no user upload call).
13
+ //
14
+ // Plan-strategy D-5: mode is a f32 enum column (ECS columns are POD, no
15
+ // string unions in archetype storage). Consumer-facing type safety is
16
+ // provided by the `SkyboxMode` literal union + `skyboxModeFromF32` mapper
17
+ // (same pattern as cameraProjectionFromF32 in camera.ts:51,105,145,221-237).
18
+ //
19
+ // OOS-1: `mode: 'atmosphere'` implementation is deferred -- the union
20
+ // shape leaves room for additive growth without breaking the f32 enum
21
+ // encoding.
22
+ //
23
+ // AI user minimum spawn (charter P4):
24
+ // world.spawn({ component: SkyboxBackground, data: { equirect, mode: 0 } });
25
+ //
26
+ // Single component activates the skybox render pass transparently when a
27
+ // Skylight + tonemap active camera is present (skybox reuses the same
28
+ // equirect handle as Skylight).
29
+
30
+ import { defineComponent } from '@forgeax/engine-ecs';
31
+
32
+ /**
33
+ * Skybox mode literal union (AC-02 narrowing surface).
34
+ * Currently only 'cubemap' -- future 'atmosphere' deferred per OOS-1.
35
+ */
36
+ export type SkyboxMode = 'cubemap';
37
+
38
+ /** Numeric encoding of cubemap skybox mode (schema value for `mode`). */
39
+ export const SKYBOX_MODE_CUBEMAP = 0;
40
+
41
+ /**
42
+ * Map a `SkyboxBackground.mode` numeric value to the closed `SkyboxMode`
43
+ * string-literal union. Only member currently is 'cubemap'; the exhaustive
44
+ * switch is ready for future mode additions (e.g. 'atmosphere', OOS-1).
45
+ */
46
+ export function skyboxModeFromF32(value: number): SkyboxMode {
47
+ switch (value) {
48
+ case SKYBOX_MODE_CUBEMAP:
49
+ return 'cubemap';
50
+ // Future: case SKYBOX_MODE_ATMOSPHERE: return 'atmosphere';
51
+ }
52
+ // Unrecognised value: fall back to 'cubemap' (charter P3 -- no silent
53
+ // exception; the fallback preserves rendering on stale numerics while
54
+ // the exhaustive switch shape ensures AI users catch new members at
55
+ // compile time when a mode is added).
56
+ return 'cubemap';
57
+ }
58
+
59
+ /**
60
+ * SkyboxBackground: full-screen environment cubemap background.
61
+ *
62
+ * Renders a fullscreen triangle that reconstructs world-space view
63
+ * direction from the camera's inverseViewProj matrix (View UBO),
64
+ * samples a cubemap with the view direction, and writes an HDR color
65
+ * to the hdrColor render target (before the main geometry pass).
66
+ *
67
+ * The skybox pass is automatically activated when a SkyboxBackground
68
+ * entity exists, a Skylight entity provides the equirect source, and the
69
+ * active Camera has tonemap active. The skybox reuses the same equirect
70
+ * handle as the Skylight entity -- two independent components sharing the
71
+ * same GPU resource (the internally-projected cubemap).
72
+ *
73
+ * `equirect` is a `Handle<EquirectAsset>` resolved from a vite pack-index
74
+ * GUID via `engine.assets.loadByGuid<EquirectAsset>(guid)`. The cubemap
75
+ * projection is internal and driven by the render-system record arm; there
76
+ * is no user upload call.
77
+ *
78
+ * `mode` is a numeric discriminator column (`'f32'`). Use
79
+ * `SKYBOX_MODE_CUBEMAP` for the cubemap render path.
80
+ *
81
+ * `rotation` is an environment-space quaternion in `[x, y, z, w]` order.
82
+ * It rotates the sampled cubemap without changing the camera or rebaking the
83
+ * source equirectangular asset.
84
+ *
85
+ * @example Minimum spawn (defaults mode=0):
86
+ * // equirectHandle resolved from loadByGuid<EquirectAsset> (same handle as
87
+ * // the Skylight).
88
+ * world.spawn({ component: SkyboxBackground, data: { equirect: equirectHandle } });
89
+ *
90
+ * @example Single handle shared between Skylight (IBL) and SkyboxBackground:
91
+ * const hdrRes = await engine.assets.loadByGuid<EquirectAsset>(guid);
92
+ * if (!hdrRes.ok) throw hdrRes.error;
93
+ * world.spawn({ component: Skylight, data: { equirect: hdrRes.value } });
94
+ * world.spawn({ component: SkyboxBackground, data: { equirect: hdrRes.value } });
95
+ */
96
+ export const SkyboxBackground = defineComponent('SkyboxBackground', {
97
+ // The GPU skybox projection is render-owned presentation state; restore
98
+ // keeps the portable mode/rotation controls and lets the owner re-resolve
99
+ // the environment asset on the target world.
100
+ equirect: { type: 'shared<EquirectAsset>', simulationTransient: true },
101
+ mode: { type: 'f32', default: SKYBOX_MODE_CUBEMAP },
102
+ rotation: { type: 'array<f32, 4>', default: new Float32Array([0, 0, 0, 1]) },
103
+ });