@forgeax/engine-render 0.0.0-dev.8d955ade1c79

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 (891) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +647 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/__tests__/authoring-path.unit.test.d.ts +2 -0
  5. package/dist/__tests__/authoring-path.unit.test.d.ts.map +1 -0
  6. package/dist/__tests__/backend-selection-rhi-capture.test-d.d.ts +2 -0
  7. package/dist/__tests__/backend-selection-rhi-capture.test-d.d.ts.map +1 -0
  8. package/dist/__tests__/callback-inference.test-d.d.ts +2 -0
  9. package/dist/__tests__/callback-inference.test-d.d.ts.map +1 -0
  10. package/dist/__tests__/cluster-binner.test.d.ts +2 -0
  11. package/dist/__tests__/cluster-binner.test.d.ts.map +1 -0
  12. package/dist/__tests__/cluster-grid-default-surface.unit.test.d.ts +2 -0
  13. package/dist/__tests__/cluster-grid-default-surface.unit.test.d.ts.map +1 -0
  14. package/dist/__tests__/construct-renderer-identity.unit.test.d.ts +2 -0
  15. package/dist/__tests__/construct-renderer-identity.unit.test.d.ts.map +1 -0
  16. package/dist/__tests__/device-scope-lifecycle.unit.test.d.ts +2 -0
  17. package/dist/__tests__/device-scope-lifecycle.unit.test.d.ts.map +1 -0
  18. package/dist/__tests__/device-scope-stale-matrix.unit.test.d.ts +2 -0
  19. package/dist/__tests__/device-scope-stale-matrix.unit.test.d.ts.map +1 -0
  20. package/dist/__tests__/direct-extract-consumer-contract.test-d.d.ts +2 -0
  21. package/dist/__tests__/direct-extract-consumer-contract.test-d.d.ts.map +1 -0
  22. package/dist/__tests__/direct-light-snapshot.unit.test.d.ts +2 -0
  23. package/dist/__tests__/direct-light-snapshot.unit.test.d.ts.map +1 -0
  24. package/dist/__tests__/factory-contract.integration.test.d.ts +2 -0
  25. package/dist/__tests__/factory-contract.integration.test.d.ts.map +1 -0
  26. package/dist/__tests__/fallback-row-stride-surface.unit.test.d.ts +2 -0
  27. package/dist/__tests__/fallback-row-stride-surface.unit.test.d.ts.map +1 -0
  28. package/dist/__tests__/frame-observation.contract.test.d.ts +2 -0
  29. package/dist/__tests__/frame-observation.contract.test.d.ts.map +1 -0
  30. package/dist/__tests__/fullscreen-feature-plan.unit.test.d.ts +2 -0
  31. package/dist/__tests__/fullscreen-feature-plan.unit.test.d.ts.map +1 -0
  32. package/dist/__tests__/glyph-text-layout-recovery.unit.test.d.ts +2 -0
  33. package/dist/__tests__/glyph-text-layout-recovery.unit.test.d.ts.map +1 -0
  34. package/dist/__tests__/gpu-driven-indirect-raster-evidence.d.ts +6 -0
  35. package/dist/__tests__/gpu-driven-indirect-raster-evidence.d.ts.map +1 -0
  36. package/dist/__tests__/gpu-driven-indirect-raster.browser.test.d.ts +2 -0
  37. package/dist/__tests__/gpu-driven-indirect-raster.browser.test.d.ts.map +1 -0
  38. package/dist/__tests__/gpu-driven-indirect-raster.dawn.test.d.ts +2 -0
  39. package/dist/__tests__/gpu-driven-indirect-raster.dawn.test.d.ts.map +1 -0
  40. package/dist/__tests__/gpu-driven-production.integration.test.d.ts +2 -0
  41. package/dist/__tests__/gpu-driven-production.integration.test.d.ts.map +1 -0
  42. package/dist/__tests__/gpu-driven-scaling.unit.test.d.ts +2 -0
  43. package/dist/__tests__/gpu-driven-scaling.unit.test.d.ts.map +1 -0
  44. package/dist/__tests__/gpu-driven-view-gpu-evidence.d.ts +18 -0
  45. package/dist/__tests__/gpu-driven-view-gpu-evidence.d.ts.map +1 -0
  46. package/dist/__tests__/gpu-driven-view-graph.integration.test.d.ts +2 -0
  47. package/dist/__tests__/gpu-driven-view-graph.integration.test.d.ts.map +1 -0
  48. package/dist/__tests__/gpu-driven-view-reference.d.ts +15 -0
  49. package/dist/__tests__/gpu-driven-view-reference.d.ts.map +1 -0
  50. package/dist/__tests__/gpu-driven-view.browser.test.d.ts +2 -0
  51. package/dist/__tests__/gpu-driven-view.browser.test.d.ts.map +1 -0
  52. package/dist/__tests__/gpu-driven-view.dawn.test.d.ts +2 -0
  53. package/dist/__tests__/gpu-driven-view.dawn.test.d.ts.map +1 -0
  54. package/dist/__tests__/gpu-driven-view.unit.test.d.ts +2 -0
  55. package/dist/__tests__/gpu-driven-view.unit.test.d.ts.map +1 -0
  56. package/dist/__tests__/gpu-resource-store-stride.unit.test.d.ts +2 -0
  57. package/dist/__tests__/gpu-resource-store-stride.unit.test.d.ts.map +1 -0
  58. package/dist/__tests__/gpu-scene-render-graph-gpu.d.ts +7 -0
  59. package/dist/__tests__/gpu-scene-render-graph-gpu.d.ts.map +1 -0
  60. package/dist/__tests__/gpu-scene-render-graph.browser.test.d.ts +2 -0
  61. package/dist/__tests__/gpu-scene-render-graph.browser.test.d.ts.map +1 -0
  62. package/dist/__tests__/gpu-scene-render-graph.dawn.test.d.ts +2 -0
  63. package/dist/__tests__/gpu-scene-render-graph.dawn.test.d.ts.map +1 -0
  64. package/dist/__tests__/gpu-scene-schema.unit.test.d.ts +2 -0
  65. package/dist/__tests__/gpu-scene-schema.unit.test.d.ts.map +1 -0
  66. package/dist/__tests__/gpu-scene.dawn.test.d.ts +2 -0
  67. package/dist/__tests__/gpu-scene.dawn.test.d.ts.map +1 -0
  68. package/dist/__tests__/gpu-scene.unit.test.d.ts +2 -0
  69. package/dist/__tests__/gpu-scene.unit.test.d.ts.map +1 -0
  70. package/dist/__tests__/ibl/face-uniforms.unit.test.d.ts +2 -0
  71. package/dist/__tests__/ibl/face-uniforms.unit.test.d.ts.map +1 -0
  72. package/dist/__tests__/infinite-grid-no-vertex-probe.unit.test.d.ts +2 -0
  73. package/dist/__tests__/infinite-grid-no-vertex-probe.unit.test.d.ts.map +1 -0
  74. package/dist/__tests__/injection-kind-owner.test-d.d.ts +2 -0
  75. package/dist/__tests__/injection-kind-owner.test-d.d.ts.map +1 -0
  76. package/dist/__tests__/ktx2-basis-gpu-consumer.dawn.test.d.ts +2 -0
  77. package/dist/__tests__/ktx2-basis-gpu-consumer.dawn.test.d.ts.map +1 -0
  78. package/dist/__tests__/light-buffer-layout.unit.test.d.ts +2 -0
  79. package/dist/__tests__/light-buffer-layout.unit.test.d.ts.map +1 -0
  80. package/dist/__tests__/material-contract-inventory.unit.test.d.ts +2 -0
  81. package/dist/__tests__/material-contract-inventory.unit.test.d.ts.map +1 -0
  82. package/dist/__tests__/material-cooked-projection.unit.test.d.ts +2 -0
  83. package/dist/__tests__/material-cooked-projection.unit.test.d.ts.map +1 -0
  84. package/dist/__tests__/material-snapshot-mutation.integration.test.d.ts +2 -0
  85. package/dist/__tests__/material-snapshot-mutation.integration.test.d.ts.map +1 -0
  86. package/dist/__tests__/material-static-dynamic-route.unit.test.d.ts +2 -0
  87. package/dist/__tests__/material-static-dynamic-route.unit.test.d.ts.map +1 -0
  88. package/dist/__tests__/material-stride-surface.unit.test.d.ts +2 -0
  89. package/dist/__tests__/material-stride-surface.unit.test.d.ts.map +1 -0
  90. package/dist/__tests__/mesh-buffer-usage-surface.unit.test.d.ts +2 -0
  91. package/dist/__tests__/mesh-buffer-usage-surface.unit.test.d.ts.map +1 -0
  92. package/dist/__tests__/mesh-material-bindings.unit.test.d.ts +2 -0
  93. package/dist/__tests__/mesh-material-bindings.unit.test.d.ts.map +1 -0
  94. package/dist/__tests__/mesh-stride-surface.unit.test.d.ts +2 -0
  95. package/dist/__tests__/mesh-stride-surface.unit.test.d.ts.map +1 -0
  96. package/dist/__tests__/morph-culling-reentry.dawn.test.d.ts +2 -0
  97. package/dist/__tests__/morph-culling-reentry.dawn.test.d.ts.map +1 -0
  98. package/dist/__tests__/morph-feature-gpu-work.integration.test.d.ts +2 -0
  99. package/dist/__tests__/morph-feature-gpu-work.integration.test.d.ts.map +1 -0
  100. package/dist/__tests__/morph-feature-plan.unit.test.d.ts +2 -0
  101. package/dist/__tests__/morph-feature-plan.unit.test.d.ts.map +1 -0
  102. package/dist/__tests__/morph-visual-evidence.integration.test.d.ts +2 -0
  103. package/dist/__tests__/morph-visual-evidence.integration.test.d.ts.map +1 -0
  104. package/dist/__tests__/nineslice-handle-surface.unit.test.d.ts +2 -0
  105. package/dist/__tests__/nineslice-handle-surface.unit.test.d.ts.map +1 -0
  106. package/dist/__tests__/post-process-error-policy-owner.unit.test.d.ts +2 -0
  107. package/dist/__tests__/post-process-error-policy-owner.unit.test.d.ts.map +1 -0
  108. package/dist/__tests__/prepared-buffer-kind-owner.test-d.d.ts +2 -0
  109. package/dist/__tests__/prepared-buffer-kind-owner.test-d.d.ts.map +1 -0
  110. package/dist/__tests__/prepared-graphics-capability.unit.test.d.ts +2 -0
  111. package/dist/__tests__/prepared-graphics-capability.unit.test.d.ts.map +1 -0
  112. package/dist/__tests__/prepared-graphics-generation.unit.test.d.ts +2 -0
  113. package/dist/__tests__/prepared-graphics-generation.unit.test.d.ts.map +1 -0
  114. package/dist/__tests__/prepared-graphics-lifecycle.unit.test.d.ts +2 -0
  115. package/dist/__tests__/prepared-graphics-lifecycle.unit.test.d.ts.map +1 -0
  116. package/dist/__tests__/prepared-graphics-pipeline-warmup.unit.test.d.ts +2 -0
  117. package/dist/__tests__/prepared-graphics-pipeline-warmup.unit.test.d.ts.map +1 -0
  118. package/dist/__tests__/prepared-graphics-resolver.unit.test.d.ts +2 -0
  119. package/dist/__tests__/prepared-graphics-resolver.unit.test.d.ts.map +1 -0
  120. package/dist/__tests__/prepared-graphics-snapshot.unit.test.d.ts +2 -0
  121. package/dist/__tests__/prepared-graphics-snapshot.unit.test.d.ts.map +1 -0
  122. package/dist/__tests__/prepared-graphics-store.unit.test.d.ts +2 -0
  123. package/dist/__tests__/prepared-graphics-store.unit.test.d.ts.map +1 -0
  124. package/dist/__tests__/prepared-graphics-validation.unit.test.d.ts +2 -0
  125. package/dist/__tests__/prepared-graphics-validation.unit.test.d.ts.map +1 -0
  126. package/dist/__tests__/profiler-default-off.test.d.ts +2 -0
  127. package/dist/__tests__/profiler-default-off.test.d.ts.map +1 -0
  128. package/dist/__tests__/profiler-phase-catalog.test.d.ts +2 -0
  129. package/dist/__tests__/profiler-phase-catalog.test.d.ts.map +1 -0
  130. package/dist/__tests__/profiler-phase-integration.test.d.ts +2 -0
  131. package/dist/__tests__/profiler-phase-integration.test.d.ts.map +1 -0
  132. package/dist/__tests__/profiler-phase-token.test.d.ts +2 -0
  133. package/dist/__tests__/profiler-phase-token.test.d.ts.map +1 -0
  134. package/dist/__tests__/public-surface.test-d.d.ts +2 -0
  135. package/dist/__tests__/public-surface.test-d.d.ts.map +1 -0
  136. package/dist/__tests__/recover-error-policy-owner.unit.test.d.ts +2 -0
  137. package/dist/__tests__/recover-error-policy-owner.unit.test.d.ts.map +1 -0
  138. package/dist/__tests__/render-error-code-owner.test-d.d.ts +2 -0
  139. package/dist/__tests__/render-error-code-owner.test-d.d.ts.map +1 -0
  140. package/dist/__tests__/render-error-detail-ssot.test-d.d.ts +2 -0
  141. package/dist/__tests__/render-error-detail-ssot.test-d.d.ts.map +1 -0
  142. package/dist/__tests__/render-error-exhaustive.test-d.d.ts +2 -0
  143. package/dist/__tests__/render-error-exhaustive.test-d.d.ts.map +1 -0
  144. package/dist/__tests__/render-feature-assembly.test-d.d.ts +2 -0
  145. package/dist/__tests__/render-feature-assembly.test-d.d.ts.map +1 -0
  146. package/dist/__tests__/render-feature-context.test-d.d.ts +2 -0
  147. package/dist/__tests__/render-feature-context.test-d.d.ts.map +1 -0
  148. package/dist/__tests__/render-feature-contract.test-d.d.ts +2 -0
  149. package/dist/__tests__/render-feature-contract.test-d.d.ts.map +1 -0
  150. package/dist/__tests__/render-feature-diagnostics.unit.test.d.ts +2 -0
  151. package/dist/__tests__/render-feature-diagnostics.unit.test.d.ts.map +1 -0
  152. package/dist/__tests__/render-feature-docs.unit.test.d.ts +2 -0
  153. package/dist/__tests__/render-feature-docs.unit.test.d.ts.map +1 -0
  154. package/dist/__tests__/render-feature-errors.unit.test.d.ts +2 -0
  155. package/dist/__tests__/render-feature-errors.unit.test.d.ts.map +1 -0
  156. package/dist/__tests__/render-feature-gpu-work.integration.test.d.ts +2 -0
  157. package/dist/__tests__/render-feature-gpu-work.integration.test.d.ts.map +1 -0
  158. package/dist/__tests__/render-feature-plan.test-d.d.ts +2 -0
  159. package/dist/__tests__/render-feature-plan.test-d.d.ts.map +1 -0
  160. package/dist/__tests__/render-feature-plan.unit.test.d.ts +2 -0
  161. package/dist/__tests__/render-feature-plan.unit.test.d.ts.map +1 -0
  162. package/dist/__tests__/render-feature-prepared-diagnostics.unit.test.d.ts +2 -0
  163. package/dist/__tests__/render-feature-prepared-diagnostics.unit.test.d.ts.map +1 -0
  164. package/dist/__tests__/render-feature-prepared-errors.test-d.d.ts +2 -0
  165. package/dist/__tests__/render-feature-prepared-errors.test-d.d.ts.map +1 -0
  166. package/dist/__tests__/render-feature-prepared-graphics-docs.unit.test.d.ts +2 -0
  167. package/dist/__tests__/render-feature-prepared-graphics-docs.unit.test.d.ts.map +1 -0
  168. package/dist/__tests__/render-feature-prepared-graphics-isolation.unit.test.d.ts +2 -0
  169. package/dist/__tests__/render-feature-prepared-graphics-isolation.unit.test.d.ts.map +1 -0
  170. package/dist/__tests__/render-feature-prepared-graphics-negative.test-d.d.ts +2 -0
  171. package/dist/__tests__/render-feature-prepared-graphics-negative.test-d.d.ts.map +1 -0
  172. package/dist/__tests__/render-feature-prepared-graphics.test-d.d.ts +2 -0
  173. package/dist/__tests__/render-feature-prepared-graphics.test-d.d.ts.map +1 -0
  174. package/dist/__tests__/render-feature-prepared-graphics.unit.test.d.ts +2 -0
  175. package/dist/__tests__/render-feature-prepared-graphics.unit.test.d.ts.map +1 -0
  176. package/dist/__tests__/render-feature-public-surface.test-d.d.ts +2 -0
  177. package/dist/__tests__/render-feature-public-surface.test-d.d.ts.map +1 -0
  178. package/dist/__tests__/render-feature-retry.unit.test.d.ts +2 -0
  179. package/dist/__tests__/render-feature-retry.unit.test.d.ts.map +1 -0
  180. package/dist/__tests__/render-feature-scheduling.unit.test.d.ts +2 -0
  181. package/dist/__tests__/render-feature-scheduling.unit.test.d.ts.map +1 -0
  182. package/dist/__tests__/render-feature-stage-failed-policy-owner.unit.test.d.ts +2 -0
  183. package/dist/__tests__/render-feature-stage-failed-policy-owner.unit.test.d.ts.map +1 -0
  184. package/dist/__tests__/render-feature-stage-fault-recovery.unit.test.d.ts +2 -0
  185. package/dist/__tests__/render-feature-stage-fault-recovery.unit.test.d.ts.map +1 -0
  186. package/dist/__tests__/render-feature-visibility-context.test-d.d.ts +2 -0
  187. package/dist/__tests__/render-feature-visibility-context.test-d.d.ts.map +1 -0
  188. package/dist/__tests__/render-feature-visibility-context.unit.test.d.ts +2 -0
  189. package/dist/__tests__/render-feature-visibility-context.unit.test.d.ts.map +1 -0
  190. package/dist/__tests__/render-feature-zero-work.unit.test.d.ts +2 -0
  191. package/dist/__tests__/render-feature-zero-work.unit.test.d.ts.map +1 -0
  192. package/dist/__tests__/render-graph-compute-raster-gpu.d.ts +7 -0
  193. package/dist/__tests__/render-graph-compute-raster-gpu.d.ts.map +1 -0
  194. package/dist/__tests__/render-graph-compute-raster.browser.test.d.ts +2 -0
  195. package/dist/__tests__/render-graph-compute-raster.browser.test.d.ts.map +1 -0
  196. package/dist/__tests__/render-graph-compute-raster.dawn.test.d.ts +2 -0
  197. package/dist/__tests__/render-graph-compute-raster.dawn.test.d.ts.map +1 -0
  198. package/dist/__tests__/render-graph-hzb-gpu.d.ts +7 -0
  199. package/dist/__tests__/render-graph-hzb-gpu.d.ts.map +1 -0
  200. package/dist/__tests__/render-graph-hzb.browser.test.d.ts +2 -0
  201. package/dist/__tests__/render-graph-hzb.browser.test.d.ts.map +1 -0
  202. package/dist/__tests__/render-graph-hzb.dawn.test.d.ts +2 -0
  203. package/dist/__tests__/render-graph-hzb.dawn.test.d.ts.map +1 -0
  204. package/dist/__tests__/render-graph-primitives.unit.test.d.ts +2 -0
  205. package/dist/__tests__/render-graph-primitives.unit.test.d.ts.map +1 -0
  206. package/dist/__tests__/render-graph-storage-indirect-gpu.d.ts +12 -0
  207. package/dist/__tests__/render-graph-storage-indirect-gpu.d.ts.map +1 -0
  208. package/dist/__tests__/render-graph-storage-indirect.browser.test.d.ts +2 -0
  209. package/dist/__tests__/render-graph-storage-indirect.browser.test.d.ts.map +1 -0
  210. package/dist/__tests__/render-graph-storage-indirect.dawn.test.d.ts +2 -0
  211. package/dist/__tests__/render-graph-storage-indirect.dawn.test.d.ts.map +1 -0
  212. package/dist/__tests__/render-scene-projection.unit.test.d.ts +2 -0
  213. package/dist/__tests__/render-scene-projection.unit.test.d.ts.map +1 -0
  214. package/dist/__tests__/renderer-factory-material-contract.unit.test.d.ts +2 -0
  215. package/dist/__tests__/renderer-factory-material-contract.unit.test.d.ts.map +1 -0
  216. package/dist/__tests__/renderer-lifecycle.integration.test.d.ts +2 -0
  217. package/dist/__tests__/renderer-lifecycle.integration.test.d.ts.map +1 -0
  218. package/dist/__tests__/rhi-backend-package-boundary.unit.test.d.ts +2 -0
  219. package/dist/__tests__/rhi-backend-package-boundary.unit.test.d.ts.map +1 -0
  220. package/dist/__tests__/scriptable-pack-consumer.test-d.d.ts +2 -0
  221. package/dist/__tests__/scriptable-pack-consumer.test-d.d.ts.map +1 -0
  222. package/dist/__tests__/shader-stage-surface.unit.test.d.ts +2 -0
  223. package/dist/__tests__/shader-stage-surface.unit.test.d.ts.map +1 -0
  224. package/dist/__tests__/ssao-config.unit.test.d.ts +2 -0
  225. package/dist/__tests__/ssao-config.unit.test.d.ts.map +1 -0
  226. package/dist/__tests__/ssao-kernel-surface.unit.test.d.ts +2 -0
  227. package/dist/__tests__/ssao-kernel-surface.unit.test.d.ts.map +1 -0
  228. package/dist/__tests__/standard-clustered-pipeline.unit.test.d.ts +2 -0
  229. package/dist/__tests__/standard-clustered-pipeline.unit.test.d.ts.map +1 -0
  230. package/dist/__tests__/standard-descriptors.test-d.d.ts +2 -0
  231. package/dist/__tests__/standard-descriptors.test-d.d.ts.map +1 -0
  232. package/dist/__tests__/standard-pipeline.dawn.test.d.ts +2 -0
  233. package/dist/__tests__/standard-pipeline.dawn.test.d.ts.map +1 -0
  234. package/dist/__tests__/standard-pipeline.integration.test.d.ts +2 -0
  235. package/dist/__tests__/standard-pipeline.integration.test.d.ts.map +1 -0
  236. package/dist/__tests__/standard-profile-oracle.unit.test.d.ts +2 -0
  237. package/dist/__tests__/standard-profile-oracle.unit.test.d.ts.map +1 -0
  238. package/dist/__tests__/surface-configuration.unit.test.d.ts +2 -0
  239. package/dist/__tests__/surface-configuration.unit.test.d.ts.map +1 -0
  240. package/dist/__tests__/texture-usage-surface.unit.test.d.ts +2 -0
  241. package/dist/__tests__/texture-usage-surface.unit.test.d.ts.map +1 -0
  242. package/dist/__tests__/typed-pipeline-topology.unit.test.d.ts +2 -0
  243. package/dist/__tests__/typed-pipeline-topology.unit.test.d.ts.map +1 -0
  244. package/dist/__tests__/urp-pipeline-targets.unit.test.d.ts +2 -0
  245. package/dist/__tests__/urp-pipeline-targets.unit.test.d.ts.map +1 -0
  246. package/dist/__tests__/urp-pipeline.unit.test.d.ts +2 -0
  247. package/dist/__tests__/urp-pipeline.unit.test.d.ts.map +1 -0
  248. package/dist/__tests__/vertex-color-pipeline.unit.test.d.ts +2 -0
  249. package/dist/__tests__/vertex-color-pipeline.unit.test.d.ts.map +1 -0
  250. package/dist/__tests__/vertex-layout-consumer.unit.test.d.ts +2 -0
  251. package/dist/__tests__/vertex-layout-consumer.unit.test.d.ts.map +1 -0
  252. package/dist/__tests__/visibility-diagnostics.integration.test.d.ts +2 -0
  253. package/dist/__tests__/visibility-diagnostics.integration.test.d.ts.map +1 -0
  254. package/dist/__tests__/visibility-extract.integration.test.d.ts +2 -0
  255. package/dist/__tests__/visibility-extract.integration.test.d.ts.map +1 -0
  256. package/dist/__tests__/visibility-extract.perf.test.d.ts +2 -0
  257. package/dist/__tests__/visibility-extract.perf.test.d.ts.map +1 -0
  258. package/dist/__tests__/visibility-feature-dedup.integration.test.d.ts +2 -0
  259. package/dist/__tests__/visibility-feature-dedup.integration.test.d.ts.map +1 -0
  260. package/dist/__tests__/visibility-hidden-report.unit.test.d.ts +2 -0
  261. package/dist/__tests__/visibility-hidden-report.unit.test.d.ts.map +1 -0
  262. package/dist/__tests__/visibility-instances.integration.test.d.ts +2 -0
  263. package/dist/__tests__/visibility-instances.integration.test.d.ts.map +1 -0
  264. package/dist/__tests__/visibility-multi-world.integration.test.d.ts +2 -0
  265. package/dist/__tests__/visibility-multi-world.integration.test.d.ts.map +1 -0
  266. package/dist/__tests__/visibility-producer-matrix.integration.test.d.ts +2 -0
  267. package/dist/__tests__/visibility-producer-matrix.integration.test.d.ts.map +1 -0
  268. package/dist/__tests__/visibility-producer-matrix.unit.test.d.ts +2 -0
  269. package/dist/__tests__/visibility-producer-matrix.unit.test.d.ts.map +1 -0
  270. package/dist/__tests__/visibility-public-surface.test-d.d.ts +2 -0
  271. package/dist/__tests__/visibility-public-surface.test-d.d.ts.map +1 -0
  272. package/dist/__tests__/visibility-resolver.unit.test.d.ts +2 -0
  273. package/dist/__tests__/visibility-resolver.unit.test.d.ts.map +1 -0
  274. package/dist/__tests__/visibility-resource-short-circuit.unit.test.d.ts +2 -0
  275. package/dist/__tests__/visibility-resource-short-circuit.unit.test.d.ts.map +1 -0
  276. package/dist/__tests__/visibility-snapshot-contract.unit.test.d.ts +2 -0
  277. package/dist/__tests__/visibility-snapshot-contract.unit.test.d.ts.map +1 -0
  278. package/dist/__tests__/vocabulary.unit.test.d.ts +2 -0
  279. package/dist/__tests__/vocabulary.unit.test.d.ts.map +1 -0
  280. package/dist/assembly/backend-contract.d.ts +37 -0
  281. package/dist/assembly/backend-contract.d.ts.map +1 -0
  282. package/dist/assembly/factory.d.ts +207 -0
  283. package/dist/assembly/factory.d.ts.map +1 -0
  284. package/dist/assembly/host-contract.d.ts +84 -0
  285. package/dist/assembly/host-contract.d.ts.map +1 -0
  286. package/dist/assembly/material/assembly.d.ts +21 -0
  287. package/dist/assembly/material/assembly.d.ts.map +1 -0
  288. package/dist/assembly/material/pipeline-projection.d.ts +30 -0
  289. package/dist/assembly/material/pipeline-projection.d.ts.map +1 -0
  290. package/dist/assets/asset-decoders.d.ts +5 -0
  291. package/dist/assets/asset-decoders.d.ts.map +1 -0
  292. package/dist/assets/render-asset-port.d.ts +17 -0
  293. package/dist/assets/render-asset-port.d.ts.map +1 -0
  294. package/dist/assets/resolve-render-asset.d.ts +6 -0
  295. package/dist/assets/resolve-render-asset.d.ts.map +1 -0
  296. package/dist/authoring.d.ts +12 -0
  297. package/dist/authoring.d.ts.map +1 -0
  298. package/dist/authoring.mjs +27 -0
  299. package/dist/authoring.mjs.map +1 -0
  300. package/dist/chunk-CQXZC5XI.mjs +182 -0
  301. package/dist/chunk-CQXZC5XI.mjs.map +1 -0
  302. package/dist/chunk-HCOGPHKS.mjs +93 -0
  303. package/dist/chunk-HCOGPHKS.mjs.map +1 -0
  304. package/dist/chunk-YEJIUW7D.mjs +1152 -0
  305. package/dist/chunk-YEJIUW7D.mjs.map +1 -0
  306. package/dist/cluster-binner.d.ts +152 -0
  307. package/dist/cluster-binner.d.ts.map +1 -0
  308. package/dist/components/__tests__/points-lines-admission.unit.test.d.ts +2 -0
  309. package/dist/components/__tests__/points-lines-admission.unit.test.d.ts.map +1 -0
  310. package/dist/components/__tests__/points-lines-schema.unit.test.d.ts +2 -0
  311. package/dist/components/__tests__/points-lines-schema.unit.test.d.ts.map +1 -0
  312. package/dist/components/__tests__/schema-contract.unit.test.d.ts +2 -0
  313. package/dist/components/__tests__/schema-contract.unit.test.d.ts.map +1 -0
  314. package/dist/components/__tests__/schema-parity.unit.test.d.ts +2 -0
  315. package/dist/components/__tests__/schema-parity.unit.test.d.ts.map +1 -0
  316. package/dist/components/__tests__/visibility-schema.unit.test.d.ts +2 -0
  317. package/dist/components/__tests__/visibility-schema.unit.test.d.ts.map +1 -0
  318. package/dist/components/camera.d.ts +311 -0
  319. package/dist/components/camera.d.ts.map +1 -0
  320. package/dist/components/directional-light.d.ts +76 -0
  321. package/dist/components/directional-light.d.ts.map +1 -0
  322. package/dist/components/glyph-text.d.ts +26 -0
  323. package/dist/components/glyph-text.d.ts.map +1 -0
  324. package/dist/components/index.d.ts +24 -0
  325. package/dist/components/index.d.ts.map +1 -0
  326. package/dist/components/instances.d.ts +41 -0
  327. package/dist/components/instances.d.ts.map +1 -0
  328. package/dist/components/layer.d.ts +34 -0
  329. package/dist/components/layer.d.ts.map +1 -0
  330. package/dist/components/light-helpers.d.ts +53 -0
  331. package/dist/components/light-helpers.d.ts.map +1 -0
  332. package/dist/components/lines.d.ts +5 -0
  333. package/dist/components/lines.d.ts.map +1 -0
  334. package/dist/components/mesh-filter.d.ts +24 -0
  335. package/dist/components/mesh-filter.d.ts.map +1 -0
  336. package/dist/components/mesh-renderer.d.ts +33 -0
  337. package/dist/components/mesh-renderer.d.ts.map +1 -0
  338. package/dist/components/point-light-shadow.d.ts +27 -0
  339. package/dist/components/point-light-shadow.d.ts.map +1 -0
  340. package/dist/components/point-light.d.ts +35 -0
  341. package/dist/components/point-light.d.ts.map +1 -0
  342. package/dist/components/points.d.ts +15 -0
  343. package/dist/components/points.d.ts.map +1 -0
  344. package/dist/components/post-process-params.d.ts +5 -0
  345. package/dist/components/post-process-params.d.ts.map +1 -0
  346. package/dist/components/scene-instance.d.ts +140 -0
  347. package/dist/components/scene-instance.d.ts.map +1 -0
  348. package/dist/components/skybox-background.d.ts +56 -0
  349. package/dist/components/skybox-background.d.ts.map +1 -0
  350. package/dist/components/skylight.d.ts +55 -0
  351. package/dist/components/skylight.d.ts.map +1 -0
  352. package/dist/components/sort-key.d.ts +44 -0
  353. package/dist/components/sort-key.d.ts.map +1 -0
  354. package/dist/components/spot-light.d.ts +81 -0
  355. package/dist/components/spot-light.d.ts.map +1 -0
  356. package/dist/components/sprite-animation.d.ts +74 -0
  357. package/dist/components/sprite-animation.d.ts.map +1 -0
  358. package/dist/components/sprite-instances.d.ts +51 -0
  359. package/dist/components/sprite-instances.d.ts.map +1 -0
  360. package/dist/components/sprite-playback-mode.d.ts +42 -0
  361. package/dist/components/sprite-playback-mode.d.ts.map +1 -0
  362. package/dist/components/sprite-region-override.d.ts +46 -0
  363. package/dist/components/sprite-region-override.d.ts.map +1 -0
  364. package/dist/components/tile-layer.d.ts +106 -0
  365. package/dist/components/tile-layer.d.ts.map +1 -0
  366. package/dist/components/tilemap.d.ts +25 -0
  367. package/dist/components/tilemap.d.ts.map +1 -0
  368. package/dist/components/visibility.d.ts +22 -0
  369. package/dist/components/visibility.d.ts.map +1 -0
  370. package/dist/construct-renderer.d.ts +19 -0
  371. package/dist/construct-renderer.d.ts.map +1 -0
  372. package/dist/construct-renderer.mjs +27462 -0
  373. package/dist/construct-renderer.mjs.map +1 -0
  374. package/dist/debug-draw-glue.d.ts +5 -0
  375. package/dist/debug-draw-glue.d.ts.map +1 -0
  376. package/dist/device/device-scope.d.ts +83 -0
  377. package/dist/device/device-scope.d.ts.map +1 -0
  378. package/dist/device/gpu-residency.d.ts +337 -0
  379. package/dist/device/gpu-residency.d.ts.map +1 -0
  380. package/dist/device/resource-types.d.ts +8 -0
  381. package/dist/device/resource-types.d.ts.map +1 -0
  382. package/dist/engine-metrics.d.ts +23 -0
  383. package/dist/engine-metrics.d.ts.map +1 -0
  384. package/dist/errors/ecs-validation.d.ts +3 -0
  385. package/dist/errors/ecs-validation.d.ts.map +1 -0
  386. package/dist/errors/index.d.ts +4 -0
  387. package/dist/errors/index.d.ts.map +1 -0
  388. package/dist/errors/recover.d.ts +105 -0
  389. package/dist/errors/recover.d.ts.map +1 -0
  390. package/dist/errors/render.d.ts +705 -0
  391. package/dist/errors/render.d.ts.map +1 -0
  392. package/dist/extract/visibility.d.ts +26 -0
  393. package/dist/extract/visibility.d.ts.map +1 -0
  394. package/dist/features/fullscreen.d.ts +19 -0
  395. package/dist/features/fullscreen.d.ts.map +1 -0
  396. package/dist/features/host.d.ts +106 -0
  397. package/dist/features/host.d.ts.map +1 -0
  398. package/dist/features/morph/morph-feature.d.ts +79 -0
  399. package/dist/features/morph/morph-feature.d.ts.map +1 -0
  400. package/dist/features/plan.d.ts +182 -0
  401. package/dist/features/plan.d.ts.map +1 -0
  402. package/dist/features/prepared-gpu-work.d.ts +117 -0
  403. package/dist/features/prepared-gpu-work.d.ts.map +1 -0
  404. package/dist/features/prepared-graphics-store.d.ts +66 -0
  405. package/dist/features/prepared-graphics-store.d.ts.map +1 -0
  406. package/dist/features/prepared-graphics.d.ts +215 -0
  407. package/dist/features/prepared-graphics.d.ts.map +1 -0
  408. package/dist/features/render-graph-compute.d.ts +13 -0
  409. package/dist/features/render-graph-compute.d.ts.map +1 -0
  410. package/dist/features/render-graph-contribution.d.ts +12 -0
  411. package/dist/features/render-graph-contribution.d.ts.map +1 -0
  412. package/dist/features/render-graph-raster.d.ts +38 -0
  413. package/dist/features/render-graph-raster.d.ts.map +1 -0
  414. package/dist/features/render-graph-resources.d.ts +11 -0
  415. package/dist/features/render-graph-resources.d.ts.map +1 -0
  416. package/dist/features/targets.d.ts +32 -0
  417. package/dist/features/targets.d.ts.map +1 -0
  418. package/dist/features/types.d.ts +68 -0
  419. package/dist/features/types.d.ts.map +1 -0
  420. package/dist/features/vocabulary.d.ts +14 -0
  421. package/dist/features/vocabulary.d.ts.map +1 -0
  422. package/dist/fullscreen-post-process-pass.d.ts +157 -0
  423. package/dist/fullscreen-post-process-pass.d.ts.map +1 -0
  424. package/dist/glyph-text-layout-system.d.ts +19 -0
  425. package/dist/glyph-text-layout-system.d.ts.map +1 -0
  426. package/dist/gpu-driven/batch-topology.d.ts +55 -0
  427. package/dist/gpu-driven/batch-topology.d.ts.map +1 -0
  428. package/dist/gpu-driven/production-raster.d.ts +51 -0
  429. package/dist/gpu-driven/production-raster.d.ts.map +1 -0
  430. package/dist/gpu-driven/view-gpu.d.ts +85 -0
  431. package/dist/gpu-driven/view-gpu.d.ts.map +1 -0
  432. package/dist/gpu-resource.d.ts +73 -0
  433. package/dist/gpu-resource.d.ts.map +1 -0
  434. package/dist/gpu-scene-schema.d.ts +78 -0
  435. package/dist/gpu-scene-schema.d.ts.map +1 -0
  436. package/dist/gpu-scene.d.ts +55 -0
  437. package/dist/gpu-scene.d.ts.map +1 -0
  438. package/dist/gpu-stage.d.ts +4 -0
  439. package/dist/gpu-stage.d.ts.map +1 -0
  440. package/dist/gpu-texture-usage.d.ts +6 -0
  441. package/dist/gpu-texture-usage.d.ts.map +1 -0
  442. package/dist/gpu-usage.d.ts +9 -0
  443. package/dist/gpu-usage.d.ts.map +1 -0
  444. package/dist/hdrp-buffers.d.ts +163 -0
  445. package/dist/hdrp-buffers.d.ts.map +1 -0
  446. package/dist/ibl/IblPipelineCache.d.ts +168 -0
  447. package/dist/ibl/IblPipelineCache.d.ts.map +1 -0
  448. package/dist/ibl/skylight-bind-group.d.ts +130 -0
  449. package/dist/ibl/skylight-bind-group.d.ts.map +1 -0
  450. package/dist/index.d.ts +31 -0
  451. package/dist/index.d.ts.map +1 -0
  452. package/dist/index.mjs +169 -0
  453. package/dist/index.mjs.map +1 -0
  454. package/dist/inspection-types.d.ts +72 -0
  455. package/dist/inspection-types.d.ts.map +1 -0
  456. package/dist/instance-buffer-cache.d.ts +56 -0
  457. package/dist/instance-buffer-cache.d.ts.map +1 -0
  458. package/dist/internal.d.ts +2 -0
  459. package/dist/internal.d.ts.map +1 -0
  460. package/dist/internal.mjs +3 -0
  461. package/dist/internal.mjs.map +1 -0
  462. package/dist/lifecycle.d.ts +62 -0
  463. package/dist/lifecycle.d.ts.map +1 -0
  464. package/dist/light-buffer-layout.d.ts +164 -0
  465. package/dist/light-buffer-layout.d.ts.map +1 -0
  466. package/dist/materials.d.ts +47 -0
  467. package/dist/materials.d.ts.map +1 -0
  468. package/dist/mesh-material-bindings.d.ts +43 -0
  469. package/dist/mesh-material-bindings.d.ts.map +1 -0
  470. package/dist/pbr-pipeline.d.ts +301 -0
  471. package/dist/pbr-pipeline.d.ts.map +1 -0
  472. package/dist/pipeline/standard-forward-lane.d.ts +5 -0
  473. package/dist/pipeline/standard-forward-lane.d.ts.map +1 -0
  474. package/dist/pipeline/standard-pipeline.d.ts +31 -0
  475. package/dist/pipeline/standard-pipeline.d.ts.map +1 -0
  476. package/dist/pipeline/standard-profile.d.ts +40 -0
  477. package/dist/pipeline/standard-profile.d.ts.map +1 -0
  478. package/dist/pipeline-builder.d.ts +122 -0
  479. package/dist/pipeline-builder.d.ts.map +1 -0
  480. package/dist/pipeline-spec-types.d.ts +24 -0
  481. package/dist/pipeline-spec-types.d.ts.map +1 -0
  482. package/dist/pipeline-spec.d.ts +367 -0
  483. package/dist/pipeline-spec.d.ts.map +1 -0
  484. package/dist/plugin.d.ts +4 -0
  485. package/dist/plugin.d.ts.map +1 -0
  486. package/dist/points-lines/__tests__/bounds.unit.test.d.ts +2 -0
  487. package/dist/points-lines/__tests__/bounds.unit.test.d.ts.map +1 -0
  488. package/dist/points-lines/__tests__/cache-recovery.unit.test.d.ts +2 -0
  489. package/dist/points-lines/__tests__/cache-recovery.unit.test.d.ts.map +1 -0
  490. package/dist/points-lines/__tests__/inspection-lanes.integration.test.d.ts +2 -0
  491. package/dist/points-lines/__tests__/inspection-lanes.integration.test.d.ts.map +1 -0
  492. package/dist/points-lines/__tests__/inspection.unit.test.d.ts +2 -0
  493. package/dist/points-lines/__tests__/inspection.unit.test.d.ts.map +1 -0
  494. package/dist/points-lines/__tests__/lane-structural.integration.test.d.ts +2 -0
  495. package/dist/points-lines/__tests__/lane-structural.integration.test.d.ts.map +1 -0
  496. package/dist/points-lines/__tests__/points-lines.bench.d.ts +2 -0
  497. package/dist/points-lines/__tests__/points-lines.bench.d.ts.map +1 -0
  498. package/dist/points-lines/__tests__/raster-lane.integration.test.d.ts +2 -0
  499. package/dist/points-lines/__tests__/raster-lane.integration.test.d.ts.map +1 -0
  500. package/dist/points-lines/__tests__/snapshot.unit.test.d.ts +2 -0
  501. package/dist/points-lines/__tests__/snapshot.unit.test.d.ts.map +1 -0
  502. package/dist/points-lines/__tests__/view-ubo.unit.test.d.ts +2 -0
  503. package/dist/points-lines/__tests__/view-ubo.unit.test.d.ts.map +1 -0
  504. package/dist/points-lines/admission.d.ts +36 -0
  505. package/dist/points-lines/admission.d.ts.map +1 -0
  506. package/dist/points-lines/bounds.d.ts +8 -0
  507. package/dist/points-lines/bounds.d.ts.map +1 -0
  508. package/dist/points-lines/expansion-cache.d.ts +28 -0
  509. package/dist/points-lines/expansion-cache.d.ts.map +1 -0
  510. package/dist/points-lines/inspection.d.ts +53 -0
  511. package/dist/points-lines/inspection.d.ts.map +1 -0
  512. package/dist/points-lines/prepare.d.ts +67 -0
  513. package/dist/points-lines/prepare.d.ts.map +1 -0
  514. package/dist/points-lines/record.d.ts +60 -0
  515. package/dist/points-lines/record.d.ts.map +1 -0
  516. package/dist/points-lines/snapshot.d.ts +49 -0
  517. package/dist/points-lines/snapshot.d.ts.map +1 -0
  518. package/dist/post-process-errors.d.ts +182 -0
  519. package/dist/post-process-errors.d.ts.map +1 -0
  520. package/dist/prepare/prepared-graphics-resolver.d.ts +59 -0
  521. package/dist/prepare/prepared-graphics-resolver.d.ts.map +1 -0
  522. package/dist/record/__tests__/material-bg-cache.unit.test.d.ts +2 -0
  523. package/dist/record/__tests__/material-bg-cache.unit.test.d.ts.map +1 -0
  524. package/dist/record/__tests__/material-slot-plan.unit.test.d.ts +2 -0
  525. package/dist/record/__tests__/material-slot-plan.unit.test.d.ts.map +1 -0
  526. package/dist/record/__tests__/typed-frame-graph-plan.unit.test.d.ts +2 -0
  527. package/dist/record/__tests__/typed-frame-graph-plan.unit.test.d.ts.map +1 -0
  528. package/dist/record/__tests__/video-texture-view.unit.test.d.ts +2 -0
  529. package/dist/record/__tests__/video-texture-view.unit.test.d.ts.map +1 -0
  530. package/dist/record/frame-lighting.d.ts +121 -0
  531. package/dist/record/frame-lighting.d.ts.map +1 -0
  532. package/dist/record/frame-snapshot.d.ts +429 -0
  533. package/dist/record/frame-snapshot.d.ts.map +1 -0
  534. package/dist/record/frame-targets.d.ts +20 -0
  535. package/dist/record/frame-targets.d.ts.map +1 -0
  536. package/dist/record/frame.d.ts +71 -0
  537. package/dist/record/frame.d.ts.map +1 -0
  538. package/dist/record/helpers.d.ts +102 -0
  539. package/dist/record/helpers.d.ts.map +1 -0
  540. package/dist/record/main-pass-geometry.d.ts +28 -0
  541. package/dist/record/main-pass-geometry.d.ts.map +1 -0
  542. package/dist/record/main-pass-material.d.ts +204 -0
  543. package/dist/record/main-pass-material.d.ts.map +1 -0
  544. package/dist/record/main-pass-sprite-draws.d.ts +43 -0
  545. package/dist/record/main-pass-sprite-draws.d.ts.map +1 -0
  546. package/dist/record/main-pass.d.ts +20 -0
  547. package/dist/record/main-pass.d.ts.map +1 -0
  548. package/dist/record/mesh-ssbo.d.ts +446 -0
  549. package/dist/record/mesh-ssbo.d.ts.map +1 -0
  550. package/dist/record/render-context.d.ts +252 -0
  551. package/dist/record/render-context.d.ts.map +1 -0
  552. package/dist/record/shadow-pass.d.ts +52 -0
  553. package/dist/record/shadow-pass.d.ts.map +1 -0
  554. package/dist/record/skybox-post-pass.d.ts +33 -0
  555. package/dist/record/skybox-post-pass.d.ts.map +1 -0
  556. package/dist/record/typed-frame-graph.d.ts +35 -0
  557. package/dist/record/typed-frame-graph.d.ts.map +1 -0
  558. package/dist/record/view-ubo.d.ts +45 -0
  559. package/dist/record/view-ubo.d.ts.map +1 -0
  560. package/dist/render-contract.d.ts +424 -0
  561. package/dist/render-contract.d.ts.map +1 -0
  562. package/dist/render-data.d.ts +143 -0
  563. package/dist/render-data.d.ts.map +1 -0
  564. package/dist/render-graph-primitives.d.ts +76 -0
  565. package/dist/render-graph-primitives.d.ts.map +1 -0
  566. package/dist/render-pipeline.d.ts +110 -0
  567. package/dist/render-pipeline.d.ts.map +1 -0
  568. package/dist/render-system-extract.d.ts +868 -0
  569. package/dist/render-system-extract.d.ts.map +1 -0
  570. package/dist/render-system.d.ts +125 -0
  571. package/dist/render-system.d.ts.map +1 -0
  572. package/dist/scene/render-scene-types.d.ts +61 -0
  573. package/dist/scene/render-scene-types.d.ts.map +1 -0
  574. package/dist/scene/render-scene.d.ts +112 -0
  575. package/dist/scene/render-scene.d.ts.map +1 -0
  576. package/dist/scene-instances/post-spawn-resolve-joints.d.ts +30 -0
  577. package/dist/scene-instances/post-spawn-resolve-joints.d.ts.map +1 -0
  578. package/dist/shadow-atlas.d.ts +117 -0
  579. package/dist/shadow-atlas.d.ts.map +1 -0
  580. package/dist/ssao-buffers.d.ts +50 -0
  581. package/dist/ssao-buffers.d.ts.map +1 -0
  582. package/dist/ssao-config.d.ts +28 -0
  583. package/dist/ssao-config.d.ts.map +1 -0
  584. package/dist/systems/active-camera.d.ts +53 -0
  585. package/dist/systems/active-camera.d.ts.map +1 -0
  586. package/dist/systems/pass-selector.d.ts +24 -0
  587. package/dist/systems/pass-selector.d.ts.map +1 -0
  588. package/dist/systems/skin-palette-allocator.d.ts +49 -0
  589. package/dist/systems/skin-palette-allocator.d.ts.map +1 -0
  590. package/dist/systems/skin-palette-types.d.ts +14 -0
  591. package/dist/systems/skin-palette-types.d.ts.map +1 -0
  592. package/dist/systems/transparent-sort-config.d.ts +112 -0
  593. package/dist/systems/transparent-sort-config.d.ts.map +1 -0
  594. package/dist/tilemap-chunk-extract-system.d.ts +143 -0
  595. package/dist/tilemap-chunk-extract-system.d.ts.map +1 -0
  596. package/dist/typed-render-graph-primitives.d.ts +57 -0
  597. package/dist/typed-render-graph-primitives.d.ts.map +1 -0
  598. package/dist/typed-shadow-passes.d.ts +11 -0
  599. package/dist/typed-shadow-passes.d.ts.map +1 -0
  600. package/package.json +94 -0
  601. package/src/__tests__/authoring-path.unit.test.ts +23 -0
  602. package/src/__tests__/backend-selection-rhi-capture.test-d.ts +21 -0
  603. package/src/__tests__/callback-inference.test-d.ts +8 -0
  604. package/src/__tests__/cluster-binner.test.ts +272 -0
  605. package/src/__tests__/cluster-grid-default-surface.unit.test.ts +20 -0
  606. package/src/__tests__/construct-renderer-identity.unit.test.ts +23 -0
  607. package/src/__tests__/device-scope-lifecycle.unit.test.ts +151 -0
  608. package/src/__tests__/device-scope-stale-matrix.unit.test.ts +42 -0
  609. package/src/__tests__/direct-extract-consumer-contract.test-d.ts +23 -0
  610. package/src/__tests__/direct-light-snapshot.unit.test.ts +61 -0
  611. package/src/__tests__/factory-contract.integration.test.ts +280 -0
  612. package/src/__tests__/fallback-row-stride-surface.unit.test.ts +15 -0
  613. package/src/__tests__/frame-observation.contract.test.ts +112 -0
  614. package/src/__tests__/fullscreen-feature-plan.unit.test.ts +32 -0
  615. package/src/__tests__/glyph-text-layout-recovery.unit.test.ts +167 -0
  616. package/src/__tests__/gpu-driven-indirect-raster-evidence.ts +350 -0
  617. package/src/__tests__/gpu-driven-indirect-raster.browser.test.ts +12 -0
  618. package/src/__tests__/gpu-driven-indirect-raster.dawn.test.ts +16 -0
  619. package/src/__tests__/gpu-driven-production.integration.test.ts +436 -0
  620. package/src/__tests__/gpu-driven-scaling.unit.test.ts +87 -0
  621. package/src/__tests__/gpu-driven-view-gpu-evidence.ts +271 -0
  622. package/src/__tests__/gpu-driven-view-graph.integration.test.ts +290 -0
  623. package/src/__tests__/gpu-driven-view-reference.ts +111 -0
  624. package/src/__tests__/gpu-driven-view.browser.test.ts +30 -0
  625. package/src/__tests__/gpu-driven-view.dawn.test.ts +28 -0
  626. package/src/__tests__/gpu-driven-view.unit.test.ts +199 -0
  627. package/src/__tests__/gpu-resource-store-stride.unit.test.ts +59 -0
  628. package/src/__tests__/gpu-scene-render-graph-gpu.ts +308 -0
  629. package/src/__tests__/gpu-scene-render-graph.browser.test.ts +19 -0
  630. package/src/__tests__/gpu-scene-render-graph.dawn.test.ts +19 -0
  631. package/src/__tests__/gpu-scene-schema.unit.test.ts +16 -0
  632. package/src/__tests__/gpu-scene.dawn.test.ts +205 -0
  633. package/src/__tests__/gpu-scene.unit.test.ts +147 -0
  634. package/src/__tests__/ibl/face-uniforms.unit.test.ts +46 -0
  635. package/src/__tests__/infinite-grid-no-vertex-probe.unit.test.ts +92 -0
  636. package/src/__tests__/injection-kind-owner.test-d.ts +14 -0
  637. package/src/__tests__/ktx2-basis-gpu-consumer.dawn.test.ts +728 -0
  638. package/src/__tests__/light-buffer-layout.unit.test.ts +40 -0
  639. package/src/__tests__/material-contract-inventory.unit.test.ts +24 -0
  640. package/src/__tests__/material-cooked-projection.unit.test.ts +150 -0
  641. package/src/__tests__/material-snapshot-mutation.integration.test.ts +53 -0
  642. package/src/__tests__/material-static-dynamic-route.unit.test.ts +94 -0
  643. package/src/__tests__/material-stride-surface.unit.test.ts +32 -0
  644. package/src/__tests__/mesh-buffer-usage-surface.unit.test.ts +106 -0
  645. package/src/__tests__/mesh-material-bindings.unit.test.ts +89 -0
  646. package/src/__tests__/mesh-stride-surface.unit.test.ts +16 -0
  647. package/src/__tests__/morph-culling-reentry.dawn.test.ts +157 -0
  648. package/src/__tests__/morph-feature-gpu-work.integration.test.ts +80 -0
  649. package/src/__tests__/morph-feature-plan.unit.test.ts +53 -0
  650. package/src/__tests__/morph-visual-evidence.integration.test.ts +80 -0
  651. package/src/__tests__/nineslice-handle-surface.unit.test.ts +19 -0
  652. package/src/__tests__/post-process-error-policy-owner.unit.test.ts +201 -0
  653. package/src/__tests__/prepared-buffer-kind-owner.test-d.ts +29 -0
  654. package/src/__tests__/prepared-graphics-capability.unit.test.ts +65 -0
  655. package/src/__tests__/prepared-graphics-generation.unit.test.ts +161 -0
  656. package/src/__tests__/prepared-graphics-lifecycle.unit.test.ts +138 -0
  657. package/src/__tests__/prepared-graphics-pipeline-warmup.unit.test.ts +29 -0
  658. package/src/__tests__/prepared-graphics-resolver.unit.test.ts +285 -0
  659. package/src/__tests__/prepared-graphics-snapshot.unit.test.ts +105 -0
  660. package/src/__tests__/prepared-graphics-store.unit.test.ts +154 -0
  661. package/src/__tests__/prepared-graphics-validation.unit.test.ts +176 -0
  662. package/src/__tests__/profiler-default-off.test.ts +22 -0
  663. package/src/__tests__/profiler-phase-catalog.test.ts +66 -0
  664. package/src/__tests__/profiler-phase-integration.test.ts +62 -0
  665. package/src/__tests__/profiler-phase-token.test.ts +79 -0
  666. package/src/__tests__/public-surface.test-d.ts +94 -0
  667. package/src/__tests__/recover-error-policy-owner.unit.test.ts +107 -0
  668. package/src/__tests__/render-error-code-owner.test-d.ts +116 -0
  669. package/src/__tests__/render-error-detail-ssot.test-d.ts +139 -0
  670. package/src/__tests__/render-error-exhaustive.test-d.ts +110 -0
  671. package/src/__tests__/render-feature-assembly.test-d.ts +43 -0
  672. package/src/__tests__/render-feature-context.test-d.ts +57 -0
  673. package/src/__tests__/render-feature-contract.test-d.ts +49 -0
  674. package/src/__tests__/render-feature-diagnostics.unit.test.ts +149 -0
  675. package/src/__tests__/render-feature-docs.unit.test.ts +89 -0
  676. package/src/__tests__/render-feature-errors.unit.test.ts +47 -0
  677. package/src/__tests__/render-feature-gpu-work.integration.test.ts +316 -0
  678. package/src/__tests__/render-feature-plan.test-d.ts +161 -0
  679. package/src/__tests__/render-feature-plan.unit.test.ts +170 -0
  680. package/src/__tests__/render-feature-prepared-diagnostics.unit.test.ts +90 -0
  681. package/src/__tests__/render-feature-prepared-errors.test-d.ts +79 -0
  682. package/src/__tests__/render-feature-prepared-graphics-docs.unit.test.ts +80 -0
  683. package/src/__tests__/render-feature-prepared-graphics-isolation.unit.test.ts +72 -0
  684. package/src/__tests__/render-feature-prepared-graphics-negative.test-d.ts +36 -0
  685. package/src/__tests__/render-feature-prepared-graphics.test-d.ts +74 -0
  686. package/src/__tests__/render-feature-prepared-graphics.unit.test.ts +121 -0
  687. package/src/__tests__/render-feature-public-surface.test-d.ts +57 -0
  688. package/src/__tests__/render-feature-retry.unit.test.ts +87 -0
  689. package/src/__tests__/render-feature-scheduling.unit.test.ts +110 -0
  690. package/src/__tests__/render-feature-stage-failed-policy-owner.unit.test.ts +137 -0
  691. package/src/__tests__/render-feature-stage-fault-recovery.unit.test.ts +146 -0
  692. package/src/__tests__/render-feature-visibility-context.test-d.ts +33 -0
  693. package/src/__tests__/render-feature-visibility-context.unit.test.ts +37 -0
  694. package/src/__tests__/render-feature-zero-work.unit.test.ts +76 -0
  695. package/src/__tests__/render-graph-compute-raster-gpu.ts +342 -0
  696. package/src/__tests__/render-graph-compute-raster.browser.test.ts +16 -0
  697. package/src/__tests__/render-graph-compute-raster.dawn.test.ts +22 -0
  698. package/src/__tests__/render-graph-hzb-gpu.ts +239 -0
  699. package/src/__tests__/render-graph-hzb.browser.test.ts +16 -0
  700. package/src/__tests__/render-graph-hzb.dawn.test.ts +23 -0
  701. package/src/__tests__/render-graph-primitives.unit.test.ts +22 -0
  702. package/src/__tests__/render-graph-storage-indirect-gpu.ts +162 -0
  703. package/src/__tests__/render-graph-storage-indirect.browser.test.ts +21 -0
  704. package/src/__tests__/render-graph-storage-indirect.dawn.test.ts +28 -0
  705. package/src/__tests__/render-scene-projection.unit.test.ts +168 -0
  706. package/src/__tests__/renderer-factory-material-contract.unit.test.ts +121 -0
  707. package/src/__tests__/renderer-lifecycle.integration.test.ts +58 -0
  708. package/src/__tests__/rhi-backend-package-boundary.unit.test.ts +11 -0
  709. package/src/__tests__/scriptable-pack-consumer.test-d.ts +14 -0
  710. package/src/__tests__/shader-stage-surface.unit.test.ts +43 -0
  711. package/src/__tests__/ssao-config.unit.test.ts +36 -0
  712. package/src/__tests__/ssao-kernel-surface.unit.test.ts +14 -0
  713. package/src/__tests__/standard-clustered-pipeline.unit.test.ts +28 -0
  714. package/src/__tests__/standard-descriptors.test-d.ts +22 -0
  715. package/src/__tests__/standard-pipeline.dawn.test.ts +61 -0
  716. package/src/__tests__/standard-pipeline.integration.test.ts +124 -0
  717. package/src/__tests__/standard-profile-oracle.unit.test.ts +62 -0
  718. package/src/__tests__/surface-configuration.unit.test.ts +91 -0
  719. package/src/__tests__/texture-usage-surface.unit.test.ts +58 -0
  720. package/src/__tests__/typed-pipeline-topology.unit.test.ts +223 -0
  721. package/src/__tests__/urp-pipeline-targets.unit.test.ts +42 -0
  722. package/src/__tests__/urp-pipeline.unit.test.ts +14 -0
  723. package/src/__tests__/vertex-color-pipeline.unit.test.ts +132 -0
  724. package/src/__tests__/vertex-layout-consumer.unit.test.ts +25 -0
  725. package/src/__tests__/visibility-diagnostics.integration.test.ts +62 -0
  726. package/src/__tests__/visibility-extract.integration.test.ts +98 -0
  727. package/src/__tests__/visibility-extract.perf.test.ts +130 -0
  728. package/src/__tests__/visibility-feature-dedup.integration.test.ts +55 -0
  729. package/src/__tests__/visibility-hidden-report.unit.test.ts +36 -0
  730. package/src/__tests__/visibility-instances.integration.test.ts +46 -0
  731. package/src/__tests__/visibility-multi-world.integration.test.ts +86 -0
  732. package/src/__tests__/visibility-producer-matrix.integration.test.ts +168 -0
  733. package/src/__tests__/visibility-producer-matrix.unit.test.ts +96 -0
  734. package/src/__tests__/visibility-public-surface.test-d.ts +27 -0
  735. package/src/__tests__/visibility-resolver.unit.test.ts +85 -0
  736. package/src/__tests__/visibility-resource-short-circuit.unit.test.ts +80 -0
  737. package/src/__tests__/visibility-snapshot-contract.unit.test.ts +60 -0
  738. package/src/__tests__/vocabulary.unit.test.ts +21 -0
  739. package/src/assembly/backend-contract.ts +57 -0
  740. package/src/assembly/factory.ts +8130 -0
  741. package/src/assembly/host-contract.ts +101 -0
  742. package/src/assembly/material/assembly.ts +48 -0
  743. package/src/assembly/material/pipeline-projection.ts +63 -0
  744. package/src/assets/asset-decoders.ts +158 -0
  745. package/src/assets/render-asset-port.ts +44 -0
  746. package/src/assets/resolve-render-asset.ts +13 -0
  747. package/src/authoring.ts +17 -0
  748. package/src/cluster-binner.ts +700 -0
  749. package/src/components/__tests__/points-lines-admission.unit.test.ts +219 -0
  750. package/src/components/__tests__/points-lines-schema.unit.test.ts +56 -0
  751. package/src/components/__tests__/schema-contract.unit.test.ts +10 -0
  752. package/src/components/__tests__/schema-parity.unit.test.ts +25 -0
  753. package/src/components/__tests__/visibility-schema.unit.test.ts +35 -0
  754. package/src/components/camera.ts +512 -0
  755. package/src/components/directional-light.ts +120 -0
  756. package/src/components/glyph-text.ts +64 -0
  757. package/src/components/index.ts +54 -0
  758. package/src/components/instances.ts +206 -0
  759. package/src/components/layer.ts +69 -0
  760. package/src/components/light-helpers.ts +188 -0
  761. package/src/components/lines.ts +18 -0
  762. package/src/components/mesh-filter.ts +60 -0
  763. package/src/components/mesh-renderer.ts +61 -0
  764. package/src/components/point-light-shadow.ts +43 -0
  765. package/src/components/point-light.ts +65 -0
  766. package/src/components/points.ts +40 -0
  767. package/src/components/post-process-params.ts +35 -0
  768. package/src/components/scene-instance.ts +193 -0
  769. package/src/components/skybox-background.ts +103 -0
  770. package/src/components/skylight.ts +97 -0
  771. package/src/components/sort-key.ts +75 -0
  772. package/src/components/spot-light.ts +124 -0
  773. package/src/components/sprite-animation.ts +168 -0
  774. package/src/components/sprite-instances.ts +179 -0
  775. package/src/components/sprite-playback-mode.ts +79 -0
  776. package/src/components/sprite-region-override.ts +105 -0
  777. package/src/components/tile-layer.ts +167 -0
  778. package/src/components/tilemap.ts +48 -0
  779. package/src/components/visibility.ts +53 -0
  780. package/src/construct-renderer.ts +67 -0
  781. package/src/debug-draw-glue.ts +48 -0
  782. package/src/device/device-scope.ts +306 -0
  783. package/src/device/gpu-residency.ts +1822 -0
  784. package/src/device/resource-types.ts +20 -0
  785. package/src/engine-metrics.ts +82 -0
  786. package/src/errors/ecs-validation.ts +16 -0
  787. package/src/errors/index.ts +3 -0
  788. package/src/errors/recover.ts +161 -0
  789. package/src/errors/render.ts +1284 -0
  790. package/src/extract/visibility.ts +120 -0
  791. package/src/features/fullscreen.ts +46 -0
  792. package/src/features/host.ts +1363 -0
  793. package/src/features/morph/morph-feature.ts +377 -0
  794. package/src/features/plan.ts +447 -0
  795. package/src/features/prepared-gpu-work.ts +959 -0
  796. package/src/features/prepared-graphics-store.ts +449 -0
  797. package/src/features/prepared-graphics.ts +420 -0
  798. package/src/features/render-graph-compute.ts +69 -0
  799. package/src/features/render-graph-contribution.ts +75 -0
  800. package/src/features/render-graph-raster.ts +332 -0
  801. package/src/features/render-graph-resources.ts +38 -0
  802. package/src/features/targets.ts +70 -0
  803. package/src/features/types.ts +103 -0
  804. package/src/features/vocabulary.ts +24 -0
  805. package/src/fullscreen-post-process-pass.ts +363 -0
  806. package/src/glyph-text-layout-system.ts +421 -0
  807. package/src/gpu-driven/batch-topology.ts +245 -0
  808. package/src/gpu-driven/production-raster.ts +695 -0
  809. package/src/gpu-driven/view-gpu.ts +703 -0
  810. package/src/gpu-resource.ts +159 -0
  811. package/src/gpu-scene-schema.ts +136 -0
  812. package/src/gpu-scene.ts +722 -0
  813. package/src/gpu-stage.ts +9 -0
  814. package/src/gpu-texture-usage.ts +12 -0
  815. package/src/gpu-usage.ts +14 -0
  816. package/src/hdrp-buffers.ts +480 -0
  817. package/src/ibl/IblPipelineCache.ts +1006 -0
  818. package/src/ibl/skylight-bind-group.ts +513 -0
  819. package/src/index.ts +129 -0
  820. package/src/inspection-types.ts +80 -0
  821. package/src/instance-buffer-cache.ts +95 -0
  822. package/src/internal.ts +9 -0
  823. package/src/lifecycle.ts +168 -0
  824. package/src/light-buffer-layout.ts +346 -0
  825. package/src/materials.ts +214 -0
  826. package/src/mesh-material-bindings.ts +103 -0
  827. package/src/pbr-pipeline.ts +1137 -0
  828. package/src/pipeline/standard-forward-lane.ts +229 -0
  829. package/src/pipeline/standard-pipeline.ts +555 -0
  830. package/src/pipeline/standard-profile.ts +65 -0
  831. package/src/pipeline-builder.ts +382 -0
  832. package/src/pipeline-spec-types.ts +28 -0
  833. package/src/pipeline-spec.ts +1231 -0
  834. package/src/plugin.ts +69 -0
  835. package/src/points-lines/__tests__/bounds.unit.test.ts +21 -0
  836. package/src/points-lines/__tests__/cache-recovery.unit.test.ts +157 -0
  837. package/src/points-lines/__tests__/inspection-lanes.integration.test.ts +146 -0
  838. package/src/points-lines/__tests__/inspection.unit.test.ts +173 -0
  839. package/src/points-lines/__tests__/lane-structural.integration.test.ts +122 -0
  840. package/src/points-lines/__tests__/points-lines.bench.ts +400 -0
  841. package/src/points-lines/__tests__/raster-lane.integration.test.ts +44 -0
  842. package/src/points-lines/__tests__/snapshot.unit.test.ts +101 -0
  843. package/src/points-lines/__tests__/view-ubo.unit.test.ts +73 -0
  844. package/src/points-lines/admission.ts +238 -0
  845. package/src/points-lines/bounds.ts +23 -0
  846. package/src/points-lines/expansion-cache.ts +215 -0
  847. package/src/points-lines/inspection.ts +97 -0
  848. package/src/points-lines/prepare.ts +177 -0
  849. package/src/points-lines/record.ts +125 -0
  850. package/src/points-lines/snapshot.ts +130 -0
  851. package/src/post-process-errors.ts +302 -0
  852. package/src/prepare/prepared-graphics-resolver.ts +456 -0
  853. package/src/record/__tests__/material-bg-cache.unit.test.ts +41 -0
  854. package/src/record/__tests__/material-slot-plan.unit.test.ts +44 -0
  855. package/src/record/__tests__/typed-frame-graph-plan.unit.test.ts +41 -0
  856. package/src/record/__tests__/video-texture-view.unit.test.ts +90 -0
  857. package/src/record/frame-lighting.ts +1074 -0
  858. package/src/record/frame-snapshot.ts +500 -0
  859. package/src/record/frame-targets.ts +137 -0
  860. package/src/record/frame.ts +1598 -0
  861. package/src/record/helpers.ts +284 -0
  862. package/src/record/main-pass-geometry.ts +1065 -0
  863. package/src/record/main-pass-material.ts +1043 -0
  864. package/src/record/main-pass-sprite-draws.ts +1137 -0
  865. package/src/record/main-pass.ts +610 -0
  866. package/src/record/mesh-ssbo.ts +885 -0
  867. package/src/record/render-context.ts +384 -0
  868. package/src/record/shadow-pass.ts +698 -0
  869. package/src/record/skybox-post-pass.ts +593 -0
  870. package/src/record/typed-frame-graph.ts +461 -0
  871. package/src/record/view-ubo.ts +222 -0
  872. package/src/render-contract.ts +582 -0
  873. package/src/render-data.ts +385 -0
  874. package/src/render-graph-primitives.ts +811 -0
  875. package/src/render-pipeline.ts +259 -0
  876. package/src/render-system-extract.ts +4585 -0
  877. package/src/render-system.ts +1933 -0
  878. package/src/scene/render-scene-types.ts +67 -0
  879. package/src/scene/render-scene.ts +1087 -0
  880. package/src/scene-instances/post-spawn-resolve-joints.ts +165 -0
  881. package/src/shadow-atlas.ts +244 -0
  882. package/src/ssao-buffers.ts +334 -0
  883. package/src/ssao-config.ts +61 -0
  884. package/src/systems/active-camera.ts +116 -0
  885. package/src/systems/pass-selector.ts +49 -0
  886. package/src/systems/skin-palette-allocator.ts +251 -0
  887. package/src/systems/skin-palette-types.ts +14 -0
  888. package/src/systems/transparent-sort-config.ts +233 -0
  889. package/src/tilemap-chunk-extract-system.ts +1290 -0
  890. package/src/typed-render-graph-primitives.ts +541 -0
  891. package/src/typed-shadow-passes.ts +165 -0
@@ -0,0 +1,424 @@
1
+ import type { AssetRuntimeError } from '@forgeax/engine-assets-runtime';
2
+ import type { World } from '@forgeax/engine-ecs';
3
+ import type { RenderReadLease } from '@forgeax/engine-ecs/projection';
4
+ import type { Vec3 } from '@forgeax/engine-math';
5
+ import type { ProfileFrameToken, Profiler } from '@forgeax/engine-profiler';
6
+ import type { RenderGraphError } from '@forgeax/engine-render-graph';
7
+ import type { BindGroupLayout, Buffer, Result, RhiCaps, RhiCommandEncoder, RhiDevice, RhiError, RhiInstance, RhiRenderPassEncoder, RenderPipeline as RhiRenderPipeline, Texture, TextureFormat, TextureView } from '@forgeax/engine-rhi';
8
+ import type { SkinError } from '@forgeax/engine-skinning';
9
+ import type { ImageError } from '@forgeax/engine-types';
10
+ import type { RhiBackendInstrumentation } from './assembly/backend-contract';
11
+ import type { Antialias, BloomEnabled, Tonemap } from './components/camera';
12
+ import type { RenderError } from './errors/render';
13
+ import type { RenderFeature, RenderFeatureDiagnostics } from './features/types';
14
+ import type { PostProcessShaderEntry } from './fullscreen-post-process-pass';
15
+ import type { RenderSceneInspection } from './inspection-types';
16
+ export type { PointsLinesInspection } from './points-lines/inspection';
17
+ import type { MeshMaterialBindingObservation } from './mesh-material-bindings';
18
+ import type { StandardProfile } from './pipeline/standard-profile';
19
+ import type { PostProcessError } from './post-process-errors';
20
+ export type RenderResult<T, E> = {
21
+ readonly ok: true;
22
+ readonly value: T;
23
+ } | {
24
+ readonly ok: false;
25
+ readonly error: E;
26
+ };
27
+ /** The only World data boundary accepted by the M6 renderer contract. */
28
+ export type RenderWorldLease = RenderReadLease;
29
+ /**
30
+ * Camera facts shared by extract, record, and scene owners.
31
+ *
32
+ * The extract stage resolves ECS camera state once and publishes this closed
33
+ * POD contract. Keeping it beside the render lifecycle contracts prevents
34
+ * extract from depending on the record implementation owner.
35
+ */
36
+ export interface CameraSnapshot {
37
+ /** Stable ECS identity used by the frame plan's camera authority fact. */
38
+ readonly entityKey?: number;
39
+ /** World-space camera translation (mat4.getTranslation of Transform.world). */
40
+ readonly position: Vec3;
41
+ /** Resolved world-space camera mat4, copied from Transform.world. */
42
+ readonly world: Float32Array;
43
+ readonly fov: number;
44
+ readonly aspect: number;
45
+ readonly near: number;
46
+ readonly far: number;
47
+ /** Camera projection variant used by view and shadow matrix builders. */
48
+ readonly projection: 'perspective' | 'orthographic';
49
+ readonly orthoLeft: number;
50
+ readonly orthoRight: number;
51
+ readonly orthoBottom: number;
52
+ readonly orthoTop: number;
53
+ readonly tonemap: Tonemap;
54
+ readonly exposure: number;
55
+ readonly whitePoint: number;
56
+ readonly antialias: Antialias;
57
+ readonly bloom: BloomEnabled;
58
+ readonly bloomThreshold: number;
59
+ readonly bloomIntensity: number;
60
+ readonly bloomBlurRadius: number;
61
+ readonly clearColor: readonly [number, number, number, number];
62
+ }
63
+ /** Stable identity owned by the Standard feature host for built-in tonemap. */
64
+ export declare const STANDARD_TONEMAP_FEATURE_ID = "forgeax::standard::tonemap";
65
+ /**
66
+ * Render-graph state exposed to pipeline declarations. Concrete pipeline
67
+ * caches stay in the assembly owner; graph code only needs the two target
68
+ * formats that affect fullscreen descriptors.
69
+ */
70
+ interface RenderPipelineStateView {
71
+ readonly format: TextureFormat;
72
+ readonly colorAttachmentFormat: TextureFormat;
73
+ }
74
+ /**
75
+ * Narrow runtime capability consumed by typed graph primitives. The concrete
76
+ * RenderSystemRuntime structurally satisfies this contract, but the public
77
+ * frame surface does not depend on that assembly owner.
78
+ */
79
+ interface RenderPipelineRuntime {
80
+ readonly device: RhiDevice;
81
+ readonly errorRegistry: {
82
+ fire(error: RendererError): void;
83
+ };
84
+ readonly debugOverlay?: RenderDebugOverlay | undefined;
85
+ readonly lookupPostProcess?: (id: string) => PostProcessShaderEntry | undefined;
86
+ readonly getPostProcessParamsBuffer?: (id: string) => Buffer | undefined;
87
+ readonly getPostProcessPipeline?: (id: string, bgl: BindGroupLayout, colorFormat: GPUTextureFormat) => RhiRenderPipeline | null;
88
+ }
89
+ /**
90
+ * Render-owned declaration for an app-provided debug overlay. App owns the
91
+ * concrete DebugDraw instance and its GPU lifecycle; Render only records this
92
+ * capability in the typed graph.
93
+ */
94
+ export interface RenderDebugOverlay {
95
+ encode(pass: RhiRenderPassEncoder, viewProj: import('@forgeax/engine-math').Mat4): Result<void, unknown>;
96
+ }
97
+ /**
98
+ * The leaf frame context consumed by RenderPipeline and graph primitives.
99
+ * Concrete assembly data is added only by the internal record extension in
100
+ * render-system.ts, so this contract never imports the RenderSystem owner.
101
+ */
102
+ export interface RenderPipelineContext {
103
+ readonly pipelineState: RenderPipelineStateView;
104
+ readonly runtime: RenderPipelineRuntime;
105
+ readonly encoder: RhiCommandEncoder;
106
+ readonly view: TextureView;
107
+ readonly clear: readonly [number, number, number, number] | number[];
108
+ readonly targetW: number;
109
+ readonly targetH: number;
110
+ readonly currentTexture: Texture;
111
+ readonly camera: CameraSnapshot;
112
+ /** Per-frame post-process parameter bytes keyed by shader id. */
113
+ readonly postProcessParams: ReadonlyMap<string, Uint8Array>;
114
+ readonly msaaActive: boolean;
115
+ readonly geometryColorResolveView: TextureView | null;
116
+ readonly ldrSpriteColorView: TextureView | null;
117
+ }
118
+ /**
119
+ * The sole public renderer contract. Concrete assembly stays behind the host;
120
+ * callers retain only leases, receipts, inspection PODs, and recovery Result.
121
+ */
122
+ export interface Renderer {
123
+ attach(world: World): RenderResult<RenderWorldLease, RenderError>;
124
+ draw(input: RenderFrameInput): RenderResult<FrameReceipt, RenderError>;
125
+ setProfile(profile: RenderProfile): RenderResult<void, RenderError>;
126
+ state(): RendererState;
127
+ inspect(): RenderInspection;
128
+ observe(receipt: FrameReceipt, request: FrameObservationRequest): Promise<RenderResult<FrameReceiptObservation, RenderError>>;
129
+ subscribe(listener: (event: RendererEvent) => void): () => void;
130
+ releaseSurface(): RenderResult<void, RenderError>;
131
+ restoreSurface(): RenderResult<void, RenderError>;
132
+ recover(): Promise<RenderResult<void, RenderError>>;
133
+ dispose(): Promise<RenderResult<void, RenderError>>;
134
+ }
135
+ /** The single public renderer lifecycle authority. */
136
+ export type RendererState = 'alive' | 'device-lost' | 'recovering' | 'faulted' | 'disposed';
137
+ /** Immutable, inspectable quality and budget policy for the Standard pipeline. */
138
+ export type RenderProfile = StandardProfile;
139
+ /** Ordered events projected from renderer state and expected-operation failures. */
140
+ export type RendererEvent = {
141
+ readonly kind: 'state-changed';
142
+ readonly previous: RendererState;
143
+ readonly current: RendererState;
144
+ } | {
145
+ readonly kind: 'error';
146
+ readonly error: RenderError;
147
+ }
148
+ /** Emitted only after the renderer's sole submit path returns a receipt. */
149
+ | {
150
+ readonly kind: 'frame-submitted';
151
+ readonly frameId: number;
152
+ readonly deviceGeneration: number;
153
+ };
154
+ /** Package-local listener alias used by the renderer assembly implementation. */
155
+ export type RendererEventListener = (event: RendererEvent) => void;
156
+ /**
157
+ * Camera authority supplied for one frame; Render owns the lease contract and
158
+ * the host releases it with the frame lifecycle. It is intentionally bound to
159
+ * the attached scene lease and never accepts a backend object.
160
+ */
161
+ export interface FrameCamera {
162
+ readonly lease: RenderWorldLease;
163
+ readonly entityKey?: number;
164
+ }
165
+ /**
166
+ * Environment authority supplied for one frame. The scene/environment owner
167
+ * supplies the identity; the host validates it against the attached lease.
168
+ */
169
+ export interface FrameEnvironment {
170
+ readonly lease: RenderWorldLease;
171
+ readonly identity?: string;
172
+ }
173
+ /**
174
+ * Receipt-bound observation selection. The request is consumed by `observe`
175
+ * only with the matching FrameReceipt and returns a structured Result error
176
+ * when the generation or frame identity is stale.
177
+ */
178
+ export interface FrameObservationRequest {
179
+ readonly include: readonly ('timings' | 'draws' | 'bindings')[];
180
+ }
181
+ /**
182
+ * Immutable synchronous proof that the sole host-owned submit reached the
183
+ * queue. It is the only successful synchronous draw signal and is required by
184
+ * every observation request.
185
+ */
186
+ export interface FrameReceipt {
187
+ readonly frameId: number;
188
+ readonly deviceGeneration: number;
189
+ readonly completed: Promise<RenderResult<void, RenderError>>;
190
+ }
191
+ /**
192
+ * The sole public draw input; World objects never cross this boundary. Render
193
+ * owns extraction and graph interpretation, while the host owns encoding,
194
+ * finish, submit, and recovery of the attached lease generation.
195
+ */
196
+ export interface RenderFrameInput {
197
+ readonly leases: readonly RenderWorldLease[];
198
+ readonly camera: FrameCamera;
199
+ readonly environment: FrameEnvironment;
200
+ /** Optional profiler correlation token owned by App and consumed by Render. */
201
+ readonly profileFrame?: ProfileFrameToken;
202
+ }
203
+ /** Detached, bounded observation metadata tied to one FrameReceipt and request. */
204
+ export interface FrameReceiptObservation {
205
+ readonly frameId: number;
206
+ readonly deviceGeneration: number;
207
+ readonly include: readonly ('timings' | 'draws' | 'bindings')[];
208
+ }
209
+ /**
210
+ * Detached renderer facts for host diagnostics and capability selection.
211
+ *
212
+ * The snapshot contains only POD values. It never exposes a device, queue,
213
+ * registry, encoder, or live renderer-owned collection.
214
+ */
215
+ export interface RenderInspection {
216
+ readonly state: RendererState;
217
+ readonly surface: 'available' | 'released';
218
+ readonly profile: RenderProfile;
219
+ readonly capabilities: Readonly<RhiCaps>;
220
+ readonly frame: {
221
+ readonly frameId: number;
222
+ readonly deviceGeneration: number;
223
+ };
224
+ readonly features: readonly string[];
225
+ /** Truthful lifecycle facts for every registered declarative feature. */
226
+ readonly featureDiagnostics: readonly RenderFeatureDiagnostics[];
227
+ readonly frustumStats: {
228
+ readonly culled: number;
229
+ readonly total: number;
230
+ };
231
+ readonly visibilityStats: {
232
+ readonly explicitlyHidden: number;
233
+ };
234
+ readonly renderScene: RenderSceneInspection;
235
+ readonly meshMaterialBindings: readonly MeshMaterialBindingObservation[];
236
+ readonly perFramePassNames: readonly string[];
237
+ readonly bindGroupCounts: {
238
+ readonly createBindGroup: number;
239
+ readonly keys: readonly string[];
240
+ };
241
+ }
242
+ /** Backend marker — single-element union preserved for future extensibility (D-2). */
243
+ /**
244
+ * `renderer.draw(worlds, options)` owner options
245
+ * (feat-20260709-editor-world-partition M1 / w6, plan-strategy §2 D-3).
246
+ *
247
+ * The single `owner` index that previously served BOTH the surfaced cameras
248
+ * and the singleton render resources (skylight / skybox / postProcessParams) is
249
+ * split into two independent indices:
250
+ * - `cameraOwner` — the world whose cameras are surfaced.
251
+ * - `resourceOwner` — the world whose skylight / skybox / postProcessParams
252
+ * are surfaced.
253
+ *
254
+ * Both owners are always explicit. Single-world callers pass zero for both;
255
+ * composite callers may select different worlds.
256
+ */
257
+ export type DrawOwnerOptions = {
258
+ readonly cameraOwner: number;
259
+ readonly resourceOwner: number;
260
+ readonly profileFrame?: ProfileFrameToken;
261
+ };
262
+ /** Information attached to a device-loss notification. */
263
+ export interface RendererLostInfo {
264
+ /** Concise machine-readable cause, mapped to a single vocabulary. */
265
+ reason: string;
266
+ /** Free-form description (UA / extension / driver text). */
267
+ message: string;
268
+ }
269
+ /** Listener registered through `Renderer.onLost`. */
270
+ export type RendererLostListener = (info: RendererLostInfo) => void;
271
+ /**
272
+ * Composite error type retained for package-local renderer diagnostics. The
273
+ * public Renderer projects expected operation failures through the single
274
+ * `subscribe` event stream and its `error` event; this type does NOT define a
275
+ * error; it only references the cluster unions whose members can arrive here.
276
+ * As such it is an external wire alias (AGENTS.md Change stance add-only wire
277
+ * exception), NOT the eliminated cross-cluster `RuntimeError` SSOT (D-3).
278
+ *
279
+ * Composition = `RhiError | RenderError | AssetRuntimeError | SkinError |
280
+ * PostProcessError`. This equals the pre-decomposition
281
+ * `RhiError | RuntimeError | PostProcessError` exactly: `RuntimeError` was
282
+ * `RenderError | AssetRuntimeError | SkinError` (27 classes). `RecoverError`
283
+ * and `EngineEnvironmentError` are intentionally excluded — neither is ever
284
+ * emitted through the Renderer event stream (`RecoverError` returns from `recover()`,
285
+ * `EngineEnvironmentError` throws at construction), matching the original
286
+ * `RuntimeError` union which excluded both (OOS-3 behavior equivalence).
287
+ *
288
+ * AI consumers do `switch (err.code)` over the union: the disjoint
289
+ * `RhiErrorCode` / `RenderErrorCode` / `AssetRuntimeErrorCode` / `SkinErrorCode`
290
+ * / `PostProcessErrorCode` literal sets let TS narrow each arm to the concrete
291
+ * class (charter P3 union discoverability — every fan-out member is reachable
292
+ * in an exhaustive switch, no untyped escape). Example:
293
+ *
294
+ * ```ts
295
+ * renderer.subscribe((event) => {
296
+ * if (event.kind !== 'error') return;
297
+ * switch (event.error.code) {
298
+ * case 'asset-not-registered': // AssetRuntimeError arm, err narrowed here
299
+ * return report(err.hint);
300
+ * // ...one arm per RhiErrorCode | RenderErrorCode | AssetRuntimeErrorCode
301
+ * // | SkinErrorCode | PostProcessErrorCode member; no default needed,
302
+ * // TS flags every unhandled code at compile time.
303
+ * }
304
+ * });
305
+ * ```
306
+ */
307
+ export type RendererError = RhiError | RenderGraphError | ImageError | RenderError | AssetRuntimeError | SkinError | PostProcessError;
308
+ /**
309
+ * Package-local error listener retained for host assembly. Public consumers
310
+ * use `Renderer.subscribe` and receive `RendererEvent` instead.
311
+ */
312
+ export type RendererErrorListener = (error: RendererError) => void;
313
+ /**
314
+ * Built-in graph pass owners used as nested children of `record/graph-execute`.
315
+ * Unknown extension pass names use the explicit `other` bucket so custom
316
+ * pipelines retain a bounded catalog while the default render workload gets
317
+ * actionable owner attribution.
318
+ */
319
+ export declare const RENDER_GRAPH_EXECUTION_PHASE_CATALOG: readonly ["record/graph-execute/point-shadow", "record/graph-execute/cluster-binner-upload", "record/graph-execute/g-buffer", "record/graph-execute/g-buffer/geometry-loop", "record/graph-execute/g-buffer/material-bind-groups", "record/graph-execute/g-buffer/pipeline-selection", "record/graph-execute/g-buffer/draw-submit", "record/graph-execute/ssao-calc", "record/graph-execute/ssao-blur", "record/graph-execute/lighting", "record/graph-execute/forward", "record/graph-execute/forward/geometry-loop", "record/graph-execute/forward/material-bind-groups", "record/graph-execute/forward/pipeline-selection", "record/graph-execute/forward/draw-submit", "record/graph-execute/tonemap", "record/graph-execute/debug-overlay", "record/graph-execute/shadow", "record/graph-execute/spot-shadow", "record/graph-execute/skybox", "record/graph-execute/main", "record/graph-execute/fxaa", "record/graph-execute/bloom-bright", "record/graph-execute/bloom-blur-h", "record/graph-execute/bloom-blur-v", "record/graph-execute/bloom-composite", "record/graph-execute/other"];
320
+ export type RenderGraphExecutionPhase = (typeof RENDER_GRAPH_EXECUTION_PHASE_CATALOG)[number];
321
+ /** Bounded producer-owned children of the scene-state record owner. */
322
+ export declare const RENDER_HDRP_BINNER_PHASE_CATALOG: readonly ["record/scene-state/hdrp-cluster/binner/light-bounds-and-occupancy", "record/scene-state/hdrp-cluster/binner/light-bounds-and-occupancy/light-aabb", "record/scene-state/hdrp-cluster/binner/light-bounds-and-occupancy/cluster-occupancy", "record/scene-state/hdrp-cluster/binner/cluster-reserve", "record/scene-state/hdrp-cluster/binner/input-preparation", "record/scene-state/hdrp-cluster/binner/bin-core", "record/scene-state/hdrp-cluster/binner/light-index-write", "record/scene-state/hdrp-cluster/binner/light-index-write/bounds-read", "record/scene-state/hdrp-cluster/binner/light-index-write/cluster-write"];
323
+ export declare const RENDER_HDRP_CLUSTER_PHASE_CATALOG: readonly ["record/scene-state/hdrp-cluster/binner", "record/scene-state/hdrp-cluster/binner/light-bounds-and-occupancy", "record/scene-state/hdrp-cluster/binner/light-bounds-and-occupancy/light-aabb", "record/scene-state/hdrp-cluster/binner/light-bounds-and-occupancy/cluster-occupancy", "record/scene-state/hdrp-cluster/binner/cluster-reserve", "record/scene-state/hdrp-cluster/binner/input-preparation", "record/scene-state/hdrp-cluster/binner/bin-core", "record/scene-state/hdrp-cluster/binner/light-index-write", "record/scene-state/hdrp-cluster/binner/light-index-write/bounds-read", "record/scene-state/hdrp-cluster/binner/light-index-write/cluster-write", "record/scene-state/hdrp-cluster/payload-packing", "record/scene-state/hdrp-cluster/buffer-upload"];
324
+ export type RenderHdrpClusterPhase = (typeof RENDER_HDRP_CLUSTER_PHASE_CATALOG)[number];
325
+ export declare const RENDER_SCENE_STATE_PHASE_CATALOG: readonly ["record/scene-state/fold-buckets", "record/scene-state/lighting-prep", "record/scene-state/ambient-resolution", "record/scene-state/directional-shadow-cache", "record/scene-state/hdrp-cluster", "record/scene-state/hdrp-cluster/binner", "record/scene-state/hdrp-cluster/binner/light-bounds-and-occupancy", "record/scene-state/hdrp-cluster/binner/light-bounds-and-occupancy/light-aabb", "record/scene-state/hdrp-cluster/binner/light-bounds-and-occupancy/cluster-occupancy", "record/scene-state/hdrp-cluster/binner/cluster-reserve", "record/scene-state/hdrp-cluster/binner/input-preparation", "record/scene-state/hdrp-cluster/binner/bin-core", "record/scene-state/hdrp-cluster/binner/light-index-write", "record/scene-state/hdrp-cluster/binner/light-index-write/bounds-read", "record/scene-state/hdrp-cluster/binner/light-index-write/cluster-write", "record/scene-state/hdrp-cluster/payload-packing", "record/scene-state/hdrp-cluster/buffer-upload"];
326
+ /**
327
+ * Opt-in boundaries inside one `Renderer.draw` call. The observer is a
328
+ * diagnostics seam only: it receives wall-time boundaries and must never be
329
+ * required for rendering correctness. The stage names mirror the existing
330
+ * engine-owned Extract / Prepare / Record orchestration so a host can measure
331
+ * attribution without guessing from RHI command counts.
332
+ */
333
+ export declare const RENDER_RECORD_PHASE_CATALOG: readonly ["record/scene-state", "record/scene-state/fold-buckets", "record/scene-state/lighting-prep", "record/scene-state/ambient-resolution", "record/scene-state/directional-shadow-cache", "record/scene-state/hdrp-cluster", "record/scene-state/hdrp-cluster/binner", "record/scene-state/hdrp-cluster/binner/light-bounds-and-occupancy", "record/scene-state/hdrp-cluster/binner/light-bounds-and-occupancy/light-aabb", "record/scene-state/hdrp-cluster/binner/light-bounds-and-occupancy/cluster-occupancy", "record/scene-state/hdrp-cluster/binner/cluster-reserve", "record/scene-state/hdrp-cluster/binner/input-preparation", "record/scene-state/hdrp-cluster/binner/bin-core", "record/scene-state/hdrp-cluster/binner/light-index-write", "record/scene-state/hdrp-cluster/binner/light-index-write/bounds-read", "record/scene-state/hdrp-cluster/binner/light-index-write/cluster-write", "record/scene-state/hdrp-cluster/payload-packing", "record/scene-state/hdrp-cluster/buffer-upload", "record/swapchain", "record/render-graph", "record/target-views", "record/validation", "record/dispatch-plan", "record/uploads", "record/bind-groups", "record/graph-execute", "record/graph-execute/point-shadow", "record/graph-execute/cluster-binner-upload", "record/graph-execute/g-buffer", "record/graph-execute/g-buffer/geometry-loop", "record/graph-execute/g-buffer/material-bind-groups", "record/graph-execute/g-buffer/pipeline-selection", "record/graph-execute/g-buffer/draw-submit", "record/graph-execute/ssao-calc", "record/graph-execute/ssao-blur", "record/graph-execute/lighting", "record/graph-execute/forward", "record/graph-execute/forward/geometry-loop", "record/graph-execute/forward/material-bind-groups", "record/graph-execute/forward/pipeline-selection", "record/graph-execute/forward/draw-submit", "record/graph-execute/tonemap", "record/graph-execute/debug-overlay", "record/graph-execute/shadow", "record/graph-execute/spot-shadow", "record/graph-execute/skybox", "record/graph-execute/main", "record/graph-execute/fxaa", "record/graph-execute/bloom-bright", "record/graph-execute/bloom-blur-h", "record/graph-execute/bloom-blur-v", "record/graph-execute/bloom-composite", "record/graph-execute/other"];
334
+ export type RenderRecordPhase = (typeof RENDER_RECORD_PHASE_CATALOG)[number];
335
+ export declare const RENDER_PHASE_CATALOG: readonly ["extract", "bind-groups", "features", "sort", "record", "record/scene-state", "record/scene-state/fold-buckets", "record/scene-state/lighting-prep", "record/scene-state/ambient-resolution", "record/scene-state/directional-shadow-cache", "record/scene-state/hdrp-cluster", "record/scene-state/hdrp-cluster/binner", "record/scene-state/hdrp-cluster/binner/light-bounds-and-occupancy", "record/scene-state/hdrp-cluster/binner/light-bounds-and-occupancy/light-aabb", "record/scene-state/hdrp-cluster/binner/light-bounds-and-occupancy/cluster-occupancy", "record/scene-state/hdrp-cluster/binner/cluster-reserve", "record/scene-state/hdrp-cluster/binner/input-preparation", "record/scene-state/hdrp-cluster/binner/bin-core", "record/scene-state/hdrp-cluster/binner/light-index-write", "record/scene-state/hdrp-cluster/binner/light-index-write/bounds-read", "record/scene-state/hdrp-cluster/binner/light-index-write/cluster-write", "record/scene-state/hdrp-cluster/payload-packing", "record/scene-state/hdrp-cluster/buffer-upload", "record/swapchain", "record/render-graph", "record/target-views", "record/validation", "record/dispatch-plan", "record/uploads", "record/bind-groups", "record/graph-execute", "record/graph-execute/point-shadow", "record/graph-execute/cluster-binner-upload", "record/graph-execute/g-buffer", "record/graph-execute/g-buffer/geometry-loop", "record/graph-execute/g-buffer/material-bind-groups", "record/graph-execute/g-buffer/pipeline-selection", "record/graph-execute/g-buffer/draw-submit", "record/graph-execute/ssao-calc", "record/graph-execute/ssao-blur", "record/graph-execute/lighting", "record/graph-execute/forward", "record/graph-execute/forward/geometry-loop", "record/graph-execute/forward/material-bind-groups", "record/graph-execute/forward/pipeline-selection", "record/graph-execute/forward/draw-submit", "record/graph-execute/tonemap", "record/graph-execute/debug-overlay", "record/graph-execute/shadow", "record/graph-execute/spot-shadow", "record/graph-execute/skybox", "record/graph-execute/main", "record/graph-execute/fxaa", "record/graph-execute/bloom-bright", "record/graph-execute/bloom-blur-h", "record/graph-execute/bloom-blur-v", "record/graph-execute/bloom-composite", "record/graph-execute/other"];
336
+ export type RenderPhase = (typeof RENDER_PHASE_CATALOG)[number];
337
+ export type RenderPhaseSkipReason = 'feature-host-unavailable' | 'feature-host-empty' | 'pipeline-state-unavailable' | 'camera-unavailable';
338
+ /** First-version options bag (intentionally empty; reserved for v0.1). */
339
+ export interface RendererOptions {
340
+ /** Producer-owned features installed by the renderer host. */
341
+ readonly features?: readonly RenderFeature<unknown>[] | undefined;
342
+ /** Standard profile consumed by the single renderer-owned pipeline. */
343
+ readonly standardProfile?: RenderProfile | undefined;
344
+ /** Explicit profiler capability shared by App and Render. */
345
+ readonly profiler?: Profiler | undefined;
346
+ /** Optional host-owned RHI lifecycle instrumentation, such as recording. */
347
+ readonly rhiInstrumentation?: RhiBackendInstrumentation | undefined;
348
+ /**
349
+ * M3 D-P4 escape hatch (feat-20260511-rhi-wgpu-impl): explicit
350
+ * `RhiInstance` injection bypasses the dynamic-import auto-select
351
+ * facade. When set, `createRenderer` uses this instance verbatim and
352
+ * neither concrete backend adapter is imported dynamically (charter
353
+ * proposition 5 discoverable opt-in /
354
+ * plan-strategy §6 M3 + §7.4 escape hatch + Bevy
355
+ * `RenderCreation::Manual` partial equivalent).
356
+ *
357
+ * Typical use cases:
358
+ * - Testing / debugging — inject a deterministic stub.
359
+ * - Pinning a specific backend even when the browser adapter is present,
360
+ * for cross-shim regression tests.
361
+ * - Advanced AI users implementing their own `RhiInstance` shim.
362
+ *
363
+ * AI users who want the default behaviour leave this field omitted;
364
+ * `navigator.gpu` presence/absence drives the dynamic import (see the
365
+ * `createRenderer` JSDoc for the full auto-select decision tree).
366
+ */
367
+ readonly rhi?: RhiInstance | undefined;
368
+ }
369
+ /**
370
+ * Closed union of renderer health states.
371
+ *
372
+ * 3 members per plan-strategy D-1:
373
+ * - `'alive'` — healthy baseline (registry not yet fired)
374
+ * - `'device-lost'` — device loss detected
375
+ * - `'internal-fault'` — internal renderer fault
376
+ *
377
+ * AI users exhaustively switch on `HealthReason` without default; TS guards
378
+ * completeness.
379
+ */
380
+ export type HealthReason = 'alive' | 'device-lost' | 'internal-fault';
381
+ /** Detail for `HealthReason 'device-lost'`. */
382
+ export interface HealthDetailDeviceLost {
383
+ readonly lostReason: 'unknown' | 'destroyed';
384
+ readonly message: string;
385
+ }
386
+ /** Detail for `HealthReason 'internal-fault'`. */
387
+ export interface HealthDetailInternalFault {
388
+ readonly message: string;
389
+ }
390
+ /**
391
+ * Pull-style health snapshot — discriminated union by `reason`.
392
+ *
393
+ * Per plan-strategy D-2: `switch(snap.reason)` narrows `snap.detail` to the
394
+ * per-reason detail type automatically, with zero `as` casts. `alive` has no
395
+ * `.detail` field; `device-lost` / `internal-fault` have a required `.detail`
396
+ * of the respective variant.
397
+ *
398
+ * - `recoverable` — explicit snapshot data owned by the lifecycle authority
399
+ */
400
+ export type HealthSnapshot = {
401
+ readonly reason: 'alive';
402
+ readonly recoverable: boolean;
403
+ } | {
404
+ readonly reason: 'device-lost';
405
+ readonly detail: HealthDetailDeviceLost;
406
+ readonly recoverable: boolean;
407
+ } | {
408
+ readonly reason: 'internal-fault';
409
+ readonly detail: HealthDetailInternalFault;
410
+ readonly recoverable: boolean;
411
+ };
412
+ /**
413
+ * Maps `HealthReason` to recoverable boolean per the derive table
414
+ * (requirements section "range"):
415
+ *
416
+ * | reason | recoverable |
417
+ * |:---------------|:-----------|
418
+ * | `'alive'` | false |
419
+ * | `'device-lost'`| true |
420
+ * | `'internal-fault'` | false |
421
+ */
422
+ /** Callback type for `Renderer.onHealthChange`. */
423
+ export type HealthChangeListener = (snapshot: HealthSnapshot) => void;
424
+ //# sourceMappingURL=render-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-contract.d.ts","sourceRoot":"","sources":["../src/render-contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,143 @@
1
+ import { type VertexLayoutProjection } from '@forgeax/engine-geometry';
2
+ import { type Result } from '@forgeax/engine-rhi';
3
+ import { type AssetError, type MeshAsset, type Submesh, type TextureAsset } from '@forgeax/engine-types';
4
+ /** Descriptor for a mesh's GPU vertex + index buffers (projected from POD). */
5
+ export interface MeshRenderData {
6
+ readonly vertexByteLength: number;
7
+ /** Geometry-owned immutable layout facts used by all GPU consumers. */
8
+ readonly layoutProjection: VertexLayoutProjection;
9
+ /** Index byte length padded up to a 4-byte multiple (writeBuffer alignment). */
10
+ readonly indexByteLength: number;
11
+ readonly indexCount: number;
12
+ readonly indexFormat: 'uint16' | 'uint32';
13
+ readonly vertexUsage: number;
14
+ readonly indexUsage: number;
15
+ /**
16
+ * Submeshes from the source MeshAsset, projected verbatim to the GPU store
17
+ * so the record stage can iterate per-submesh draw calls (feat-20260608 M4 / w16).
18
+ * Mirrors MeshAsset.submeshes (readonly Submesh[]) 1:1.
19
+ */
20
+ readonly submeshes: readonly Submesh[];
21
+ }
22
+ /** Descriptor for a 2D texture's GPU resource (projected from POD). */
23
+ export interface TextureRenderData {
24
+ /** Logical width retained for existing projection consumers. */
25
+ readonly width: number;
26
+ /** Logical height retained for existing projection consumers. */
27
+ readonly height: number;
28
+ /** Authored content extent; TextureAsset remains the logical asset SSOT. */
29
+ readonly logicalExtent: TextureExtent;
30
+ /** GPU allocation extent, derived from format + logicalExtent. */
31
+ readonly physicalExtent: TextureExtent;
32
+ /** Maps logical UVs away from block padding. */
33
+ readonly uvScale: readonly [number, number];
34
+ readonly format: GPUTextureFormat;
35
+ readonly mipLevelCount: number;
36
+ readonly usage: number;
37
+ /**
38
+ * Row pitch for the BASE mip (level 0) the store passes to `writeTexture`.
39
+ * Uncompressed: `width * 4` (RGBA8). Block-compressed: the block-padded
40
+ * `ceil(width / blockW) * bytesPerBlock` (feat-20260707 M5 / w35, AC-08).
41
+ * The per-mip layout for a multi-level compressed upload comes from
42
+ * {@link deriveMipUploadLayout}.
43
+ */
44
+ readonly bytesPerRow: number;
45
+ /** True iff `format` is a block-compressed format (drives the store's upload arm). */
46
+ readonly compressed: boolean;
47
+ }
48
+ export interface TextureExtent {
49
+ readonly width: number;
50
+ readonly height: number;
51
+ }
52
+ /**
53
+ * The sole logical-content to physical-storage projection for a texture.
54
+ * Block sizes come from codec's format table; no physical dimensions are
55
+ * authored or serialized with TextureAsset.
56
+ */
57
+ export declare function deriveTextureExtent(format: GPUTextureFormat, width: number, height: number): {
58
+ readonly logicalExtent: TextureExtent;
59
+ readonly physicalExtent: TextureExtent;
60
+ readonly uvScale: readonly [number, number];
61
+ };
62
+ /** One mip level's GPU-upload layout (feat-20260707 M5 / w35, AC-08). */
63
+ export interface MipUploadLevel {
64
+ /** Mip level index (0 = base / largest). */
65
+ readonly level: number;
66
+ /** Logical pixel width of this level (`baseWidth >> level`, min 1). */
67
+ readonly width: number;
68
+ /** Logical pixel height of this level (`baseHeight >> level`, min 1). */
69
+ readonly height: number;
70
+ /** Block-aligned storage dimensions for this logical mip. */
71
+ readonly physicalWidth: number;
72
+ readonly physicalHeight: number;
73
+ /** Logical `writeTexture` copy width; full-subresource copies may end mid-block. */
74
+ readonly copyWidth: number;
75
+ /** Logical `writeTexture` copy height; full-subresource copies may end mid-block. */
76
+ readonly copyHeight: number;
77
+ /** Bytes per compressed row: `ceil(width / blockW) * bytesPerBlock`. */
78
+ readonly bytesPerRow: number;
79
+ /** Block rows: `ceil(height / blockH)` (the writeTexture `rowsPerImage`). */
80
+ readonly rowsPerImage: number;
81
+ /** Byte offset of this level in the mip-major payload (sum of prior levels). */
82
+ readonly byteOffset: number;
83
+ /** Byte length of this level (`bytesPerRow * rowsPerImage`). */
84
+ readonly byteLength: number;
85
+ }
86
+ /**
87
+ * Derive the per-mip GPU-upload layout for a block-compressed texture
88
+ * (feat-20260707 M5 / w35, AC-08). Each level pads the pixel width up to a full
89
+ * block (`ceil(width / blockW) * bytesPerBlock`) and counts block rows
90
+ * (`ceil(height / blockH)`); `byteOffset` accumulates the prior levels' byte
91
+ * lengths (mip-major layout). The GPU samples only the valid texel region, so a
92
+ * non-4-multiple size or a 1x1 / 2x2 mip tail pads up to a block without image
93
+ * corruption (t5). Block math is sourced from the codec block table (SSOT --
94
+ * Derive, Don't Duplicate); TextureAsset carries no block fields (F-6).
95
+ *
96
+ * `format` must be a block-compressed format; callers branch on the projection's
97
+ * `compressed` flag first (the uncompressed path uses the linear `width * 4`
98
+ * pitch). Level dimensions floor-halve per mip, clamped to a 1-pixel minimum.
99
+ */
100
+ export declare function deriveMipUploadLayout(format: GPUTextureFormat, baseWidth: number, baseHeight: number, mipLevelCount: number): readonly MipUploadLevel[];
101
+ /** Descriptor for a cubemap built from an equirect source (projected from POD). */
102
+ export interface CubeRenderData {
103
+ /** Square cube face edge length (== source equirect height). */
104
+ readonly cubeFaceSize: number;
105
+ /** Filterable output format the IBL pipeline BGL expects. */
106
+ readonly outputFormat: 'rgba16float';
107
+ /** True when the source is rgba32float and the store must pack to rgba16float. */
108
+ readonly needsHalfConversion: boolean;
109
+ readonly cubeUsage: number;
110
+ }
111
+ /**
112
+ * Project a `MeshAsset` POD into its GPU vertex / index buffer descriptor.
113
+ * Pure: computes byte lengths, the 4-byte-aligned index size, index format,
114
+ * and the buffer usage flags the store's `createBuffer` calls need.
115
+ */
116
+ export declare function deriveRenderDataMesh(mesh: MeshAsset): Result<MeshRenderData, AssetError>;
117
+ /**
118
+ * Project a `TextureAsset` POD into its GPU texture descriptor. Pure: derives
119
+ * the mip-level count (when `mipmap`), the row pitch, and the usage flags, and
120
+ * fails fast if the POD's `format` and `colorSpace` are internally
121
+ * inconsistent (a `-srgb` format requires an `srgb` colorSpace and vice versa).
122
+ */
123
+ export declare function deriveRenderDataTexture(tex: TextureAsset): Result<TextureRenderData, AssetError>;
124
+ /**
125
+ * Project an equirectangular HDR `TextureAsset` source into its cubemap
126
+ * descriptor. Pure: validates the source is a linear HDR format, computes the
127
+ * square cube face size (== source height), narrows the output to the filterable
128
+ * `rgba16float` the IBL pipeline expects, and flags whether the store must pack
129
+ * an rgba32float source down to rgba16float. The store keeps the resource build
130
+ * (createTexture / cube + face views / IBL precompute) and the rgba32f->rgba16f
131
+ * byte conversion.
132
+ *
133
+ * feat-20260707 M5 fix: the accepted-format whitelist is `rgba16float |
134
+ * rgba32float` only -- a block-compressed HDR format (`bc6h-rgb-ufloat`) is NOT
135
+ * accepted here. An equirect cube source drives equirect-to-cube / irradiance /
136
+ * prefilter RENDER passes, and a BC6H texture is sample-only, never a color-
137
+ * renderable render target ("BC6HRGBUfloat is not color renderable"). The
138
+ * equirect is therefore always delivered uncompressed rgba16float; this
139
+ * fail-fast whitelist is the projection-layer guard that rejects a non-
140
+ * renderable cube source rather than letting it blow up at GPU createTexture.
141
+ */
142
+ export declare function deriveRenderDataCubemap(source: TextureAsset): Result<CubeRenderData, AssetError>;
143
+ //# sourceMappingURL=render-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-data.d.ts","sourceRoot":"","sources":["../src/render-data.ts"],"names":[],"mappings":"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"}