@forgeax/engine-render 0.1.28 → 0.1.29

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 (642) hide show
  1. package/README.md +627 -124
  2. package/dist/assembly/atmosphere-shader-prewarm.d.ts +6 -0
  3. package/dist/assembly/atmosphere-shader-prewarm.d.ts.map +1 -0
  4. package/dist/assembly/dynamic-geometry-host.d.ts +21 -0
  5. package/dist/assembly/dynamic-geometry-host.d.ts.map +1 -1
  6. package/dist/assembly/dynamic-geometry-runtime.d.ts +20 -0
  7. package/dist/assembly/dynamic-geometry-runtime.d.ts.map +1 -0
  8. package/dist/assembly/factory.d.ts +3 -1
  9. package/dist/assembly/factory.d.ts.map +1 -1
  10. package/dist/assembly/gpu-driven-owner.d.ts +10 -0
  11. package/dist/assembly/gpu-driven-owner.d.ts.map +1 -0
  12. package/dist/assembly/host-contract.d.ts +8 -0
  13. package/dist/assembly/host-contract.d.ts.map +1 -1
  14. package/dist/assembly/material/assembly.d.ts +7 -0
  15. package/dist/assembly/material/assembly.d.ts.map +1 -1
  16. package/dist/assembly/material-shader-policy.d.ts +3 -1
  17. package/dist/assembly/material-shader-policy.d.ts.map +1 -1
  18. package/dist/assembly/recovery/failure-location.d.ts +12 -0
  19. package/dist/assembly/recovery/failure-location.d.ts.map +1 -0
  20. package/dist/assembly/recovery/renderer-recover.d.ts +6 -4
  21. package/dist/assembly/recovery/renderer-recover.d.ts.map +1 -1
  22. package/dist/assembly/renderer-facade.d.ts.map +1 -1
  23. package/dist/assembly/renderer-feature-inspection.d.ts +5 -0
  24. package/dist/assembly/renderer-feature-inspection.d.ts.map +1 -0
  25. package/dist/assembly/renderer-frame-transaction.d.ts +19 -0
  26. package/dist/assembly/renderer-frame-transaction.d.ts.map +1 -1
  27. package/dist/assembly/renderer-helpers.d.ts +3 -0
  28. package/dist/assembly/renderer-helpers.d.ts.map +1 -1
  29. package/dist/assembly/renderer-inspection.d.ts +4 -0
  30. package/dist/assembly/renderer-inspection.d.ts.map +1 -1
  31. package/dist/assembly/shader-prewarm-policy.d.ts +6 -0
  32. package/dist/assembly/shader-prewarm-policy.d.ts.map +1 -1
  33. package/dist/assembly/skin-palette-owner.d.ts +8 -0
  34. package/dist/assembly/skin-palette-owner.d.ts.map +1 -0
  35. package/dist/assembly/ssr-shader-prewarm.d.ts +6 -0
  36. package/dist/assembly/ssr-shader-prewarm.d.ts.map +1 -0
  37. package/dist/assembly/webgpu-device-loss.d.ts +15 -0
  38. package/dist/assembly/webgpu-device-loss.d.ts.map +1 -0
  39. package/dist/assembly/webgpu-pbr-ready.d.ts +38 -0
  40. package/dist/assembly/webgpu-pbr-ready.d.ts.map +1 -0
  41. package/dist/assembly/webgpu-ready-mipmap.d.ts +11 -0
  42. package/dist/assembly/webgpu-ready-mipmap.d.ts.map +1 -0
  43. package/dist/assembly/webgpu-ready.d.ts +7 -3
  44. package/dist/assembly/webgpu-ready.d.ts.map +1 -1
  45. package/dist/assembly/webgpu-renderer-bootstrap.d.ts +10 -0
  46. package/dist/assembly/webgpu-renderer-bootstrap.d.ts.map +1 -0
  47. package/dist/assembly/webgpu-renderer-contract.d.ts +62 -0
  48. package/dist/assembly/webgpu-renderer-contract.d.ts.map +1 -0
  49. package/dist/assembly/webgpu-renderer-guards.d.ts +9 -0
  50. package/dist/assembly/webgpu-renderer-guards.d.ts.map +1 -0
  51. package/dist/assembly/webgpu-renderer-observation.d.ts +6 -0
  52. package/dist/assembly/webgpu-renderer-observation.d.ts.map +1 -0
  53. package/dist/assembly/webgpu-renderer-recovery-failure.d.ts +12 -0
  54. package/dist/assembly/webgpu-renderer-recovery-failure.d.ts.map +1 -0
  55. package/dist/assembly/webgpu-renderer.d.ts +7 -141
  56. package/dist/assembly/webgpu-renderer.d.ts.map +1 -1
  57. package/dist/assembly/webgpu-vertex-layouts.d.ts +28 -84
  58. package/dist/assembly/webgpu-vertex-layouts.d.ts.map +1 -1
  59. package/dist/authoring.mjs +2 -2
  60. package/dist/{chunk-JAASCMXA.mjs → chunk-33XZFTQU.mjs} +245 -39
  61. package/dist/chunk-33XZFTQU.mjs.map +1 -0
  62. package/dist/{chunk-GF523LHF.mjs → chunk-BLXGONR2.mjs} +30 -12
  63. package/dist/chunk-BLXGONR2.mjs.map +1 -0
  64. package/dist/{chunk-J52NMQKR.mjs → chunk-BQVQOQJH.mjs} +1086 -838
  65. package/dist/chunk-BQVQOQJH.mjs.map +1 -0
  66. package/dist/{chunk-IQMKJLNU.mjs → chunk-BTWH7BP4.mjs} +386 -17
  67. package/dist/chunk-BTWH7BP4.mjs.map +1 -0
  68. package/dist/{chunk-MBU4ZVE7.mjs → chunk-FUODTTIA.mjs} +3921 -671
  69. package/dist/chunk-FUODTTIA.mjs.map +1 -0
  70. package/dist/{chunk-MYJ5RPJO.mjs → chunk-JQTSEI3Z.mjs} +3 -3
  71. package/dist/{chunk-MYJ5RPJO.mjs.map → chunk-JQTSEI3Z.mjs.map} +1 -1
  72. package/dist/{chunk-GE3SDD72.mjs → chunk-NICXSHAT.mjs} +16 -38
  73. package/dist/chunk-NICXSHAT.mjs.map +1 -0
  74. package/dist/{chunk-J6KACNOH.mjs → chunk-NRNXBLIJ.mjs} +577 -7
  75. package/dist/chunk-NRNXBLIJ.mjs.map +1 -0
  76. package/dist/{chunk-RBDBZ5R7.mjs → chunk-PA5DRJNI.mjs} +2 -2
  77. package/dist/chunk-PA5DRJNI.mjs.map +1 -0
  78. package/dist/{chunk-VSL23LZE.mjs → chunk-S4DNKQYQ.mjs} +1117 -445
  79. package/dist/chunk-S4DNKQYQ.mjs.map +1 -0
  80. package/dist/components/camera.d.ts +62 -2
  81. package/dist/components/camera.d.ts.map +1 -1
  82. package/dist/components/index.d.ts +1 -0
  83. package/dist/components/index.d.ts.map +1 -1
  84. package/dist/components/instances.d.ts +6 -20
  85. package/dist/components/instances.d.ts.map +1 -1
  86. package/dist/components/scene-instance.d.ts +2 -1
  87. package/dist/components/scene-instance.d.ts.map +1 -1
  88. package/dist/components/screen-space-reflection.d.ts +14 -0
  89. package/dist/components/screen-space-reflection.d.ts.map +1 -0
  90. package/dist/construct-renderer.mjs +12888 -7025
  91. package/dist/construct-renderer.mjs.map +1 -1
  92. package/dist/device/gpu-residency.d.ts +1 -12
  93. package/dist/device/gpu-residency.d.ts.map +1 -1
  94. package/dist/environment/background.d.ts +6 -0
  95. package/dist/environment/background.d.ts.map +1 -0
  96. package/dist/errors/gpu-driven.d.ts +6 -3
  97. package/dist/errors/gpu-driven.d.ts.map +1 -1
  98. package/dist/errors/render.d.ts +7 -4
  99. package/dist/errors/render.d.ts.map +1 -1
  100. package/dist/extract/camera.d.ts.map +1 -1
  101. package/dist/extract/gpu-driven.d.ts +33 -3
  102. package/dist/extract/gpu-driven.d.ts.map +1 -1
  103. package/dist/features/host.d.ts +23 -1
  104. package/dist/features/host.d.ts.map +1 -1
  105. package/dist/features/noise-texture.d.ts +17 -0
  106. package/dist/features/noise-texture.d.ts.map +1 -0
  107. package/dist/features/plan.d.ts +83 -2
  108. package/dist/features/plan.d.ts.map +1 -1
  109. package/dist/features/prepared-gpu-work.d.ts +37 -4
  110. package/dist/features/prepared-gpu-work.d.ts.map +1 -1
  111. package/dist/features/prepared-graphics-store.d.ts.map +1 -1
  112. package/dist/features/prepared-graphics.d.ts +5 -0
  113. package/dist/features/prepared-graphics.d.ts.map +1 -1
  114. package/dist/features/render-graph-compute.d.ts +5 -3
  115. package/dist/features/render-graph-compute.d.ts.map +1 -1
  116. package/dist/features/render-graph-contribution.d.ts +11 -3
  117. package/dist/features/render-graph-contribution.d.ts.map +1 -1
  118. package/dist/features/render-graph-raster.d.ts +19 -3
  119. package/dist/features/render-graph-raster.d.ts.map +1 -1
  120. package/dist/features/types.d.ts +11 -0
  121. package/dist/features/types.d.ts.map +1 -1
  122. package/dist/fullscreen-post-process-pass.d.ts +2 -0
  123. package/dist/fullscreen-post-process-pass.d.ts.map +1 -1
  124. package/dist/gpu-driven/batch-topology.d.ts +34 -1
  125. package/dist/gpu-driven/batch-topology.d.ts.map +1 -1
  126. package/dist/gpu-driven/pbr-program.d.ts +10 -0
  127. package/dist/gpu-driven/pbr-program.d.ts.map +1 -0
  128. package/dist/gpu-driven/prepared-draw.d.ts.map +1 -1
  129. package/dist/gpu-driven/production-raster.d.ts +144 -23
  130. package/dist/gpu-driven/production-raster.d.ts.map +1 -1
  131. package/dist/gpu-driven/shadow-views.d.ts +126 -0
  132. package/dist/gpu-driven/shadow-views.d.ts.map +1 -0
  133. package/dist/gpu-driven/view-gpu.d.ts +18 -2
  134. package/dist/gpu-driven/view-gpu.d.ts.map +1 -1
  135. package/dist/gpu-scene-schema.d.ts +2 -8
  136. package/dist/gpu-scene-schema.d.ts.map +1 -1
  137. package/dist/gpu-scene.d.ts +14 -0
  138. package/dist/gpu-scene.d.ts.map +1 -1
  139. package/dist/gpu-texture-usage.d.ts +1 -0
  140. package/dist/gpu-texture-usage.d.ts.map +1 -1
  141. package/dist/hdrp-buffers.d.ts +6 -0
  142. package/dist/hdrp-buffers.d.ts.map +1 -1
  143. package/dist/ibl/frame-resources.d.ts +8 -0
  144. package/dist/ibl/frame-resources.d.ts.map +1 -0
  145. package/dist/ibl/skylight-bind-group.d.ts.map +1 -1
  146. package/dist/index.d.ts +18 -8
  147. package/dist/index.d.ts.map +1 -1
  148. package/dist/index.mjs +8 -8
  149. package/dist/inspection-types.d.ts +164 -0
  150. package/dist/inspection-types.d.ts.map +1 -1
  151. package/dist/instances-derived-bounds.d.ts +11 -0
  152. package/dist/instances-derived-bounds.d.ts.map +1 -1
  153. package/dist/instances.d.ts +89 -44
  154. package/dist/instances.d.ts.map +1 -1
  155. package/dist/internal.d.ts +3 -0
  156. package/dist/internal.d.ts.map +1 -1
  157. package/dist/internal.mjs +117 -9
  158. package/dist/internal.mjs.map +1 -1
  159. package/dist/lifecycle.d.ts +2 -1
  160. package/dist/lifecycle.d.ts.map +1 -1
  161. package/dist/material-row.d.ts +5 -0
  162. package/dist/material-row.d.ts.map +1 -0
  163. package/dist/materials.d.ts +15 -0
  164. package/dist/materials.d.ts.map +1 -1
  165. package/dist/pbr-pipeline.d.ts +21 -5
  166. package/dist/pbr-pipeline.d.ts.map +1 -1
  167. package/dist/pipeline/standard-forward-lane.d.ts.map +1 -1
  168. package/dist/pipeline/standard-output/auto-exposure/capability.d.ts +12 -0
  169. package/dist/pipeline/standard-output/auto-exposure/capability.d.ts.map +1 -0
  170. package/dist/pipeline/standard-output/auto-exposure/gpu.d.ts +70 -0
  171. package/dist/pipeline/standard-output/auto-exposure/gpu.d.ts.map +1 -0
  172. package/dist/pipeline/standard-output/auto-exposure/graph.d.ts +75 -0
  173. package/dist/pipeline/standard-output/auto-exposure/graph.d.ts.map +1 -0
  174. package/dist/pipeline/standard-output/auto-exposure/inspection.d.ts +111 -0
  175. package/dist/pipeline/standard-output/auto-exposure/inspection.d.ts.map +1 -0
  176. package/dist/pipeline/standard-output/auto-exposure/oracle.d.ts +16 -0
  177. package/dist/pipeline/standard-output/auto-exposure/oracle.d.ts.map +1 -0
  178. package/dist/pipeline/standard-output/auto-exposure/preset.d.ts +14 -0
  179. package/dist/pipeline/standard-output/auto-exposure/preset.d.ts.map +1 -0
  180. package/dist/pipeline/standard-output/auto-exposure/state.d.ts +46 -0
  181. package/dist/pipeline/standard-output/auto-exposure/state.d.ts.map +1 -0
  182. package/dist/pipeline/standard-output/color-transform.d.ts +27 -0
  183. package/dist/pipeline/standard-output/color-transform.d.ts.map +1 -0
  184. package/dist/pipeline/standard-output/graph.d.ts +15 -0
  185. package/dist/pipeline/standard-output/graph.d.ts.map +1 -0
  186. package/dist/pipeline/standard-output/lut-admission.d.ts +29 -0
  187. package/dist/pipeline/standard-output/lut-admission.d.ts.map +1 -0
  188. package/dist/pipeline/standard-output/lut-gpu.d.ts +48 -0
  189. package/dist/pipeline/standard-output/lut-gpu.d.ts.map +1 -0
  190. package/dist/pipeline/standard-output/lut-state.d.ts +68 -0
  191. package/dist/pipeline/standard-output/lut-state.d.ts.map +1 -0
  192. package/dist/pipeline/standard-output/resources.d.ts +10 -0
  193. package/dist/pipeline/standard-output/resources.d.ts.map +1 -0
  194. package/dist/pipeline/standard-output/types.d.ts +39 -0
  195. package/dist/pipeline/standard-output/types.d.ts.map +1 -0
  196. package/dist/pipeline/standard-pipeline.d.ts.map +1 -1
  197. package/dist/pipeline/standard-post.d.ts +2 -2
  198. package/dist/pipeline/standard-post.d.ts.map +1 -1
  199. package/dist/pipeline-builder.d.ts +2 -1
  200. package/dist/pipeline-builder.d.ts.map +1 -1
  201. package/dist/pipeline-spec-types.d.ts +4 -0
  202. package/dist/pipeline-spec-types.d.ts.map +1 -1
  203. package/dist/pipeline-spec.d.ts +1 -9
  204. package/dist/pipeline-spec.d.ts.map +1 -1
  205. package/dist/points-lines/standard-owner.d.ts +1 -1
  206. package/dist/points-lines/standard-owner.d.ts.map +1 -1
  207. package/dist/prepare/prepared-graphics-resolver.d.ts +6 -1
  208. package/dist/prepare/prepared-graphics-resolver.d.ts.map +1 -1
  209. package/dist/record/dynamic-geometry-consumption.d.ts +15 -0
  210. package/dist/record/dynamic-geometry-consumption.d.ts.map +1 -0
  211. package/dist/record/frame-lighting.d.ts +3 -3
  212. package/dist/record/frame-lighting.d.ts.map +1 -1
  213. package/dist/record/frame-snapshot.d.ts +106 -5
  214. package/dist/record/frame-snapshot.d.ts.map +1 -1
  215. package/dist/record/frame-targets.d.ts.map +1 -1
  216. package/dist/record/frame.d.ts +39 -4
  217. package/dist/record/frame.d.ts.map +1 -1
  218. package/dist/record/main-pass-geometry.d.ts +7 -8
  219. package/dist/record/main-pass-geometry.d.ts.map +1 -1
  220. package/dist/record/main-pass-material.d.ts +38 -1
  221. package/dist/record/main-pass-material.d.ts.map +1 -1
  222. package/dist/record/main-pass-sprite-draws.d.ts +2 -10
  223. package/dist/record/main-pass-sprite-draws.d.ts.map +1 -1
  224. package/dist/record/main-pass.d.ts +12 -2
  225. package/dist/record/main-pass.d.ts.map +1 -1
  226. package/dist/record/mesh-ssbo.d.ts +15 -6
  227. package/dist/record/mesh-ssbo.d.ts.map +1 -1
  228. package/dist/record/prepared-material-bindings.d.ts +19 -0
  229. package/dist/record/prepared-material-bindings.d.ts.map +1 -0
  230. package/dist/record/recovery-pipeline.d.ts +2 -9
  231. package/dist/record/recovery-pipeline.d.ts.map +1 -1
  232. package/dist/record/render-context.d.ts +74 -26
  233. package/dist/record/render-context.d.ts.map +1 -1
  234. package/dist/record/shadow-pass.d.ts +62 -7
  235. package/dist/record/shadow-pass.d.ts.map +1 -1
  236. package/dist/record/skybox-post-pass.d.ts +1 -1
  237. package/dist/record/skybox-post-pass.d.ts.map +1 -1
  238. package/dist/record/typed-frame-graph.d.ts +35 -7
  239. package/dist/record/typed-frame-graph.d.ts.map +1 -1
  240. package/dist/record/view-ubo.d.ts +1 -0
  241. package/dist/record/view-ubo.d.ts.map +1 -1
  242. package/dist/recovery/render-system-candidate.d.ts +10 -2
  243. package/dist/recovery/render-system-candidate.d.ts.map +1 -1
  244. package/dist/recovery/render-system-roots.d.ts +11 -0
  245. package/dist/recovery/render-system-roots.d.ts.map +1 -0
  246. package/dist/recovery/types.d.ts +76 -0
  247. package/dist/recovery/types.d.ts.map +1 -0
  248. package/dist/reflection/record-owner.d.ts +0 -2
  249. package/dist/reflection/record-owner.d.ts.map +1 -1
  250. package/dist/render-contract.d.ts +173 -30
  251. package/dist/render-contract.d.ts.map +1 -1
  252. package/dist/render-graph-primitives.d.ts +1 -0
  253. package/dist/render-graph-primitives.d.ts.map +1 -1
  254. package/dist/render-pipeline.d.ts +64 -5
  255. package/dist/render-pipeline.d.ts.map +1 -1
  256. package/dist/render-system-extract-tail.d.ts +7 -5
  257. package/dist/render-system-extract-tail.d.ts.map +1 -1
  258. package/dist/render-system-extract.d.ts +101 -41
  259. package/dist/render-system-extract.d.ts.map +1 -1
  260. package/dist/render-system-projections.d.ts +22 -0
  261. package/dist/render-system-projections.d.ts.map +1 -0
  262. package/dist/render-system.d.ts +27 -77
  263. package/dist/render-system.d.ts.map +1 -1
  264. package/dist/scene/render-scene-types.d.ts +14 -7
  265. package/dist/scene/render-scene-types.d.ts.map +1 -1
  266. package/dist/scene/render-scene.d.ts +29 -11
  267. package/dist/scene/render-scene.d.ts.map +1 -1
  268. package/dist/scene/shadow-visibility.d.ts +5 -0
  269. package/dist/scene/shadow-visibility.d.ts.map +1 -0
  270. package/dist/ssr/admission.d.ts +70 -1
  271. package/dist/ssr/admission.d.ts.map +1 -1
  272. package/dist/ssr/compose.d.ts +13 -0
  273. package/dist/ssr/compose.d.ts.map +1 -0
  274. package/dist/ssr/errors.d.ts +35 -0
  275. package/dist/ssr/errors.d.ts.map +1 -1
  276. package/dist/ssr/graph.d.ts +60 -0
  277. package/dist/ssr/graph.d.ts.map +1 -0
  278. package/dist/ssr/history.d.ts +97 -0
  279. package/dist/ssr/history.d.ts.map +1 -0
  280. package/dist/ssr/hiz.d.ts +37 -0
  281. package/dist/ssr/hiz.d.ts.map +1 -0
  282. package/dist/ssr/inspection.d.ts +42 -0
  283. package/dist/ssr/inspection.d.ts.map +1 -0
  284. package/dist/ssr/resources.d.ts +58 -0
  285. package/dist/ssr/resources.d.ts.map +1 -0
  286. package/dist/ssr/temporal.d.ts +38 -0
  287. package/dist/ssr/temporal.d.ts.map +1 -0
  288. package/dist/systems/skin-palette-allocator.d.ts +32 -10
  289. package/dist/systems/skin-palette-allocator.d.ts.map +1 -1
  290. package/dist/systems/skin-palette-types.d.ts +15 -0
  291. package/dist/systems/skin-palette-types.d.ts.map +1 -1
  292. package/dist/systems/transparent-dispatch.d.ts +9 -0
  293. package/dist/systems/transparent-dispatch.d.ts.map +1 -0
  294. package/dist/targets/material-source.d.ts +7 -0
  295. package/dist/targets/material-source.d.ts.map +1 -1
  296. package/dist/temporal/frame-coordinator.d.ts +7 -0
  297. package/dist/temporal/frame-coordinator.d.ts.map +1 -1
  298. package/dist/temporal/gpu.d.ts +8 -0
  299. package/dist/temporal/gpu.d.ts.map +1 -1
  300. package/dist/temporal/history.d.ts.map +1 -1
  301. package/dist/temporal/index.mjs +6 -6
  302. package/dist/temporal/inspection.d.ts.map +1 -1
  303. package/dist/temporal/standard-scene-data.d.ts +2 -1
  304. package/dist/temporal/standard-scene-data.d.ts.map +1 -1
  305. package/dist/temporal/temporal-view.d.ts +2 -0
  306. package/dist/temporal/temporal-view.d.ts.map +1 -1
  307. package/dist/typed-render-graph-primitives.d.ts +35 -1
  308. package/dist/typed-render-graph-primitives.d.ts.map +1 -1
  309. package/dist/typed-shadow-passes.d.ts +3 -1
  310. package/dist/typed-shadow-passes.d.ts.map +1 -1
  311. package/dist/volume/temporal.d.ts +6 -0
  312. package/dist/volume/temporal.d.ts.map +1 -1
  313. package/package.json +21 -20
  314. package/src/__tests__/auto-exposure-gpu-evidence.ts +291 -0
  315. package/src/__tests__/auto-exposure-inspection.unit.test.ts +80 -0
  316. package/src/__tests__/auto-exposure-transaction.integration.test.ts +99 -0
  317. package/src/__tests__/auto-exposure.browser.test.ts +33 -0
  318. package/src/__tests__/auto-exposure.dawn.test.ts +33 -0
  319. package/src/__tests__/detached-inspection.integration.test.ts +5 -0
  320. package/src/__tests__/device-scope-lifecycle.unit.test.ts +18 -0
  321. package/src/__tests__/device-scope-stale-matrix.unit.test.ts +18 -0
  322. package/src/__tests__/docs-gate-green.unit.test.ts +3 -3
  323. package/src/__tests__/factory-contract.integration.test.ts +67 -8
  324. package/src/__tests__/fallback-row-stride-surface.unit.test.ts +19 -0
  325. package/src/__tests__/feature-depth-input.dawn.test.ts +121 -0
  326. package/src/__tests__/feature-noise.unit.test.ts +38 -0
  327. package/src/__tests__/fixtures/taa-resolve-pinned-baseline.wgsl +301 -0
  328. package/src/__tests__/frame-camera-selection.unit.test.ts +131 -0
  329. package/src/__tests__/frame-plan-contract.unit.test.ts +24 -0
  330. package/src/__tests__/frame-targets.unit.test.ts +24 -0
  331. package/src/__tests__/fullscreen-feature-plan.unit.test.ts +3 -0
  332. package/src/__tests__/gpu-driven-baseline.characterization.test.ts +79 -0
  333. package/src/__tests__/gpu-driven-batch-topology-pbr.unit.test.ts +287 -6
  334. package/src/__tests__/gpu-driven-indirect-raster-evidence.ts +122 -142
  335. package/src/__tests__/gpu-driven-indirect-raster.browser.test.ts +10 -1
  336. package/src/__tests__/gpu-driven-lod-cache.unit.test.ts +264 -0
  337. package/src/__tests__/gpu-driven-mesh-world-identity.unit.test.ts +349 -0
  338. package/src/__tests__/gpu-driven-pbr.dawn.test.ts +1417 -0
  339. package/src/__tests__/gpu-driven-pbr.integration.test.ts +21 -0
  340. package/src/__tests__/gpu-driven-production-fixture.ts +96 -0
  341. package/src/__tests__/gpu-driven-production.integration.test.ts +1075 -93
  342. package/src/__tests__/gpu-driven-scaling.unit.test.ts +1 -3
  343. package/src/__tests__/gpu-driven-shadow-views.browser.test.ts +63 -0
  344. package/src/__tests__/gpu-driven-shadow-views.dawn.test.ts +294 -0
  345. package/src/__tests__/gpu-driven-shadow-views.integration.test.ts +97 -0
  346. package/src/__tests__/gpu-driven-shadow-views.unit.test.ts +168 -0
  347. package/src/__tests__/gpu-driven-skin-contract.test-d.ts +11 -0
  348. package/src/__tests__/gpu-driven-view-gpu-evidence.ts +72 -20
  349. package/src/__tests__/gpu-driven-view-graph.integration.test.ts +30 -9
  350. package/src/__tests__/gpu-driven-view.unit.test.ts +159 -52
  351. package/src/__tests__/gpu-pass-timing.browser.test.ts +6 -1
  352. package/src/__tests__/gpu-resource-store-stride.unit.test.ts +42 -0
  353. package/src/__tests__/gpu-scene-render-graph-gpu.ts +19 -5
  354. package/src/__tests__/gpu-scene.dawn.test.ts +40 -13
  355. package/src/__tests__/gpu-scene.unit.test.ts +559 -33
  356. package/src/__tests__/instances-culling.integration.test.ts +36 -10
  357. package/src/__tests__/instances-derived-bounds.unit.test.ts +54 -0
  358. package/src/__tests__/instances-store.unit.test.ts +242 -39
  359. package/src/__tests__/ktx2-basis-gpu-consumer.dawn.test.ts +6 -0
  360. package/src/__tests__/lighting-scene-roundtrip.integration.test.ts +13 -16
  361. package/src/__tests__/lut-lkg-transaction.integration.test.ts +122 -0
  362. package/src/__tests__/material-contract-inventory.unit.test.ts +5 -6
  363. package/src/__tests__/material-dispatch-shader-id.unit.test.ts +51 -0
  364. package/src/__tests__/material-lane-selection.unit.test.ts +60 -0
  365. package/src/__tests__/material-numeric-upload.unit.test.ts +53 -0
  366. package/src/__tests__/material-texture-handles.unit.test.ts +18 -0
  367. package/src/__tests__/material-texture-source.unit.test.ts +87 -0
  368. package/src/__tests__/materials-authoring-validation.unit.test.ts +41 -0
  369. package/src/__tests__/materials-standard-contract.unit.test.ts +52 -2
  370. package/src/__tests__/mesh-buffer-usage-surface.unit.test.ts +4 -0
  371. package/src/__tests__/normal-fallback.dawn.test.ts +122 -0
  372. package/src/__tests__/particle-material-input-layout.unit.test.ts +104 -0
  373. package/src/__tests__/physical-clearcoat.integration.test.ts +37 -3
  374. package/src/__tests__/pipeline-texture-specialization.unit.test.ts +138 -0
  375. package/src/__tests__/point-shadow-inspection.unit.test.ts +2 -0
  376. package/src/__tests__/prepared-gpu-driven-pbr-contract.test-d.ts +31 -0
  377. package/src/__tests__/prepared-gpu-driven-pbr-contract.unit.test.ts +39 -0
  378. package/src/__tests__/prepared-gpu-driven-pbr.integration.test.ts +35 -4
  379. package/src/__tests__/prepared-graphics-capability.unit.test.ts +21 -0
  380. package/src/__tests__/prepared-graphics-pipeline-warmup.unit.test.ts +6 -2
  381. package/src/__tests__/profiler-phase-catalog.test.ts +5 -0
  382. package/src/__tests__/public-surface.test-d.ts +3 -0
  383. package/src/__tests__/recovery-candidate-prepare.contract.test.ts +30 -12
  384. package/src/__tests__/reflection-fallback-async-publication.unit.test.ts +104 -0
  385. package/src/__tests__/reflection-probe-record-owner.characterization.unit.test.ts +2 -1
  386. package/src/__tests__/render-error-code-owner.test-d.ts +4 -0
  387. package/src/__tests__/render-error-detail-ssot.test-d.ts +22 -0
  388. package/src/__tests__/render-error-exhaustive.test-d.ts +15 -0
  389. package/src/__tests__/render-feature-gpu-work.integration.test.ts +285 -2
  390. package/src/__tests__/render-feature-plan.unit.test.ts +245 -0
  391. package/src/__tests__/render-feature-shadow-order.unit.test.ts +228 -0
  392. package/src/__tests__/render-feature-zero-work.unit.test.ts +35 -1
  393. package/src/__tests__/render-graph-fallback.integration.test.ts +2 -2
  394. package/src/__tests__/render-owner-cohesion.unit.test.ts +55 -0
  395. package/src/__tests__/render-scene-mixed-updates.integration.test.ts +426 -0
  396. package/src/__tests__/render-scene-projection.unit.test.ts +914 -23
  397. package/src/__tests__/render-scene-resource-updates.integration.test.ts +214 -0
  398. package/src/__tests__/render-scene-skin-lifecycle.integration.test.ts +173 -0
  399. package/src/__tests__/render-scene-temporal-retry.unit.test.ts +133 -0
  400. package/src/__tests__/render-target-material-source.test-d.ts +27 -3
  401. package/src/__tests__/renderer-factory-material-contract.unit.test.ts +60 -0
  402. package/src/__tests__/renderer-frame-transaction.integration.test.ts +923 -5
  403. package/src/__tests__/shader-manifest-fixture.ts +39 -0
  404. package/src/__tests__/skin-motion-regression.unit.test.ts +0 -33
  405. package/src/__tests__/skin-palette-persistent.integration.test.ts +28 -0
  406. package/src/__tests__/skin-palette-persistent.unit.test.ts +247 -0
  407. package/src/__tests__/skinned-shadow-caster.test.ts +118 -14
  408. package/src/__tests__/specular-environment-scale.dawn.test.ts +156 -0
  409. package/src/__tests__/ssr-admission-matrix.integration.test.ts +7 -1
  410. package/src/__tests__/ssr-confidence-compose.unit.test.ts +84 -0
  411. package/src/__tests__/ssr-coordinate-oracle.unit.test.ts +28 -0
  412. package/src/__tests__/ssr-format-probe-gating.integration.test.ts +82 -0
  413. package/src/__tests__/ssr-gpu-dispatch.browser.test.ts +91 -0
  414. package/src/__tests__/ssr-gpu-dispatch.dawn.test.ts +112 -0
  415. package/src/__tests__/ssr-gpu-dispatch.ts +946 -0
  416. package/src/__tests__/ssr-graph-topology.unit.test.ts +104 -0
  417. package/src/__tests__/ssr-history-filter.dawn.test.ts +198 -0
  418. package/src/__tests__/ssr-hit-color.dawn.test.ts +273 -0
  419. package/src/__tests__/ssr-hiz-odd-reduction.dawn.test.ts +569 -0
  420. package/src/__tests__/ssr-hiz-rescue.dawn.test.ts +279 -0
  421. package/src/__tests__/ssr-hiz.browser.test.ts +150 -0
  422. package/src/__tests__/ssr-hiz.dawn.test.ts +150 -0
  423. package/src/__tests__/ssr-hiz.unit.test.ts +56 -0
  424. package/src/__tests__/ssr-inspection.unit.test.ts +105 -0
  425. package/src/__tests__/ssr-memory-budget.unit.test.ts +45 -0
  426. package/src/__tests__/ssr-performance-sequence-aggregation.unit.test.ts +15 -0
  427. package/src/__tests__/ssr-public-surface.test-d.ts +37 -0
  428. package/src/__tests__/ssr-receiver-coverage.dawn.test.ts +387 -0
  429. package/src/__tests__/ssr-reflection-mip-reducer.dawn.test.ts +309 -0
  430. package/src/__tests__/ssr-reprojection-probe.ts +90 -0
  431. package/src/__tests__/ssr-roughness-mip.dawn.test.ts +163 -0
  432. package/src/__tests__/ssr-shader-prewarm.unit.test.ts +59 -0
  433. package/src/__tests__/ssr-spatial.integration.test.ts +141 -0
  434. package/src/__tests__/ssr-stable-lattice.dawn.test.ts +475 -0
  435. package/src/__tests__/ssr-temporal-history.unit.test.ts +202 -0
  436. package/src/__tests__/ssr-texel-crossing.dawn.test.ts +448 -0
  437. package/src/__tests__/ssr-zero-work.integration.test.ts +87 -0
  438. package/src/__tests__/standard-cluster-variant-resolution.unit.test.ts +44 -12
  439. package/src/__tests__/standard-clustered-pipeline.unit.test.ts +29 -0
  440. package/src/__tests__/standard-output-chain-contract.unit.test.ts +99 -0
  441. package/src/__tests__/standard-output-chain.integration.test.ts +73 -0
  442. package/src/__tests__/standard-output-gpu-evidence.ts +205 -0
  443. package/src/__tests__/standard-output.browser.test.ts +15 -0
  444. package/src/__tests__/standard-output.dawn.test.ts +15 -0
  445. package/src/__tests__/standard-pbr-artifact-assembly.unit.test.ts +38 -0
  446. package/src/__tests__/standard-pipeline.integration.test.ts +320 -3
  447. package/src/__tests__/standard-profile-oracle.unit.test.ts +22 -0
  448. package/src/__tests__/standard-surface-lighting.unit.test.ts +41 -0
  449. package/src/__tests__/standard-texture-specialization.dawn.test.ts +141 -0
  450. package/src/__tests__/surface-adjacent-regressions.integration.test.ts +6 -3
  451. package/src/__tests__/taa-coverage-edge.dawn.test.ts +193 -0
  452. package/src/__tests__/taa-history-clipping.dawn.test.ts +328 -0
  453. package/src/__tests__/taa-neighborhood-equivalence.dawn.test.ts +778 -0
  454. package/src/__tests__/taa-stability-feedback.browser.test.ts +23 -0
  455. package/src/__tests__/taa-stability-feedback.dawn.test.ts +68 -0
  456. package/src/__tests__/taa-stability-feedback.ts +341 -0
  457. package/src/__tests__/temporal-history-lifecycle.unit.test.ts +49 -7
  458. package/src/__tests__/temporal-reset-matrix.unit.test.ts +9 -0
  459. package/src/__tests__/temporal-transaction.integration.test.ts +28 -0
  460. package/src/__tests__/texture-usage-surface.unit.test.ts +4 -2
  461. package/src/__tests__/typed-pipeline-topology.unit.test.ts +109 -4
  462. package/src/__tests__/typed-scene-pass-material-cache.integration.test.ts +126 -0
  463. package/src/__tests__/vertex-layouts-ssot.unit.test.ts +47 -0
  464. package/src/__tests__/visibility-extract.perf.test.ts +20 -8
  465. package/src/__tests__/visibility-instances.integration.test.ts +19 -7
  466. package/src/__tests__/visibility-producer-matrix.integration.test.ts +20 -9
  467. package/src/assembly/atmosphere-shader-prewarm.ts +38 -0
  468. package/src/assembly/dynamic-geometry-host.ts +48 -0
  469. package/src/assembly/dynamic-geometry-runtime.ts +71 -0
  470. package/src/assembly/factory.ts +4 -0
  471. package/src/assembly/gpu-driven-owner.ts +29 -0
  472. package/src/assembly/host-contract.ts +10 -0
  473. package/src/assembly/material/assembly.ts +38 -0
  474. package/src/assembly/material-shader-policy.ts +71 -28
  475. package/src/assembly/recovery/failure-location.ts +62 -0
  476. package/src/assembly/recovery/renderer-recover.ts +19 -17
  477. package/src/assembly/renderer-facade.ts +12 -0
  478. package/src/assembly/renderer-feature-inspection.ts +13 -0
  479. package/src/assembly/renderer-frame-transaction.ts +63 -0
  480. package/src/assembly/renderer-helpers.ts +26 -0
  481. package/src/assembly/renderer-inspection.ts +6 -0
  482. package/src/assembly/shader-prewarm-policy.ts +32 -0
  483. package/src/assembly/skin-palette-owner.ts +21 -0
  484. package/src/assembly/ssr-shader-prewarm.ts +41 -0
  485. package/src/assembly/webgpu-device-loss.ts +75 -0
  486. package/src/assembly/webgpu-pbr-ready.ts +232 -0
  487. package/src/assembly/webgpu-ready-mipmap.ts +26 -0
  488. package/src/assembly/webgpu-ready.ts +142 -121
  489. package/src/assembly/webgpu-renderer-bootstrap.ts +85 -0
  490. package/src/assembly/webgpu-renderer-contract.ts +69 -0
  491. package/src/assembly/webgpu-renderer-guards.ts +32 -0
  492. package/src/assembly/webgpu-renderer-observation.ts +43 -0
  493. package/src/assembly/webgpu-renderer-recovery-failure.ts +62 -0
  494. package/src/assembly/webgpu-renderer.ts +666 -652
  495. package/src/assembly/webgpu-vertex-layouts.ts +233 -87
  496. package/src/components/__tests__/camera-exposure.contract.unit.test.ts +153 -0
  497. package/src/components/camera.ts +287 -7
  498. package/src/components/index.ts +1 -0
  499. package/src/components/instances.ts +45 -18
  500. package/src/components/scene-instance.ts +2 -1
  501. package/src/components/screen-space-reflection.ts +21 -0
  502. package/src/components/sprite-animation.ts +2 -2
  503. package/src/components/sprite-instances.ts +1 -1
  504. package/src/device/gpu-residency.ts +34 -31
  505. package/src/environment/background.ts +263 -0
  506. package/src/errors/gpu-driven.ts +39 -5
  507. package/src/errors/render.ts +27 -3
  508. package/src/extract/camera.ts +26 -1
  509. package/src/extract/gpu-driven.ts +185 -10
  510. package/src/features/host.ts +237 -19
  511. package/src/features/noise-texture.ts +91 -0
  512. package/src/features/plan.ts +553 -24
  513. package/src/features/prepared-gpu-work.ts +631 -49
  514. package/src/features/prepared-graphics-store.ts +31 -0
  515. package/src/features/prepared-graphics.ts +5 -0
  516. package/src/features/render-graph-compute.ts +41 -8
  517. package/src/features/render-graph-contribution.ts +141 -3
  518. package/src/features/render-graph-raster.ts +143 -30
  519. package/src/features/types.ts +11 -0
  520. package/src/fullscreen-post-process-pass.ts +3 -0
  521. package/src/gpu-driven/batch-topology.ts +424 -102
  522. package/src/gpu-driven/pbr-program.ts +31 -0
  523. package/src/gpu-driven/prepared-draw.ts +29 -4
  524. package/src/gpu-driven/production-raster.ts +2267 -694
  525. package/src/gpu-driven/shadow-views.ts +539 -0
  526. package/src/gpu-driven/view-gpu.ts +188 -41
  527. package/src/gpu-scene-schema.ts +52 -11
  528. package/src/gpu-scene.ts +186 -99
  529. package/src/gpu-texture-usage.ts +1 -0
  530. package/src/hdrp-buffers.ts +72 -36
  531. package/src/ibl/frame-resources.ts +38 -0
  532. package/src/ibl/skylight-bind-group.ts +5 -4
  533. package/src/index.ts +109 -1
  534. package/src/inspection-types.ts +191 -0
  535. package/src/instances-derived-bounds.ts +258 -34
  536. package/src/instances.ts +459 -150
  537. package/src/internal.ts +22 -0
  538. package/src/lifecycle.ts +2 -0
  539. package/src/material-row.ts +145 -0
  540. package/src/materials.ts +44 -8
  541. package/src/pbr-pipeline.ts +159 -17
  542. package/src/pipeline/standard-forward-lane.ts +52 -24
  543. package/src/pipeline/standard-output/__tests__/lut-admission.unit.test.ts +103 -0
  544. package/src/pipeline/standard-output/auto-exposure/__tests__/capability.unit.test.ts +40 -0
  545. package/src/pipeline/standard-output/auto-exposure/__tests__/gpu.contract.unit.test.ts +125 -0
  546. package/src/pipeline/standard-output/auto-exposure/__tests__/graph.contract.unit.test.ts +94 -0
  547. package/src/pipeline/standard-output/auto-exposure/__tests__/oracle.test.ts +108 -0
  548. package/src/pipeline/standard-output/auto-exposure/__tests__/preset.test.ts +26 -0
  549. package/src/pipeline/standard-output/auto-exposure/capability.ts +38 -0
  550. package/src/pipeline/standard-output/auto-exposure/gpu.ts +567 -0
  551. package/src/pipeline/standard-output/auto-exposure/graph.ts +221 -0
  552. package/src/pipeline/standard-output/auto-exposure/inspection.ts +231 -0
  553. package/src/pipeline/standard-output/auto-exposure/oracle.ts +291 -0
  554. package/src/pipeline/standard-output/auto-exposure/preset.ts +28 -0
  555. package/src/pipeline/standard-output/auto-exposure/state.ts +156 -0
  556. package/src/pipeline/standard-output/color-transform.ts +124 -0
  557. package/src/pipeline/standard-output/graph.ts +139 -0
  558. package/src/pipeline/standard-output/lut-admission.ts +121 -0
  559. package/src/pipeline/standard-output/lut-gpu.ts +399 -0
  560. package/src/pipeline/standard-output/lut-state.ts +176 -0
  561. package/src/pipeline/standard-output/resources.ts +121 -0
  562. package/src/pipeline/standard-output/types.ts +58 -0
  563. package/src/pipeline/standard-pipeline.ts +192 -59
  564. package/src/pipeline/standard-post.ts +186 -27
  565. package/src/pipeline-builder.ts +16 -6
  566. package/src/pipeline-spec-types.ts +4 -0
  567. package/src/pipeline-spec.ts +37 -29
  568. package/src/points-lines/standard-owner.ts +6 -14
  569. package/src/prepare/prepared-graphics-resolver.ts +9 -2
  570. package/src/record/__tests__/material-slot-plan.unit.test.ts +48 -0
  571. package/src/record/__tests__/mesh-ssbo.unit.test.ts +40 -1
  572. package/src/record/__tests__/recovery-pipeline.unit.test.ts +2 -29
  573. package/src/record/__tests__/sprite-material-abi.unit.test.ts +36 -5
  574. package/src/record/__tests__/typed-frame-graph-plan.unit.test.ts +45 -0
  575. package/src/record/__tests__/view-ubo-layout.unit.test.ts +5 -0
  576. package/src/record/dynamic-geometry-consumption.ts +59 -0
  577. package/src/record/frame-lighting.ts +12 -11
  578. package/src/record/frame-snapshot.ts +133 -23
  579. package/src/record/frame-targets.ts +9 -0
  580. package/src/record/frame.ts +725 -133
  581. package/src/record/main-pass-geometry.ts +149 -94
  582. package/src/record/main-pass-material.ts +115 -26
  583. package/src/record/main-pass-sprite-draws.ts +16 -107
  584. package/src/record/main-pass.ts +78 -8
  585. package/src/record/material-uniforms.ts +1 -1
  586. package/src/record/mesh-ssbo.ts +59 -15
  587. package/src/record/prepared-material-bindings.ts +234 -0
  588. package/src/record/recovery-pipeline.ts +59 -136
  589. package/src/record/render-context.ts +90 -22
  590. package/src/record/shadow-pass.ts +1231 -209
  591. package/src/record/skybox-post-pass.ts +14 -3
  592. package/src/record/typed-frame-graph.ts +1004 -44
  593. package/src/record/view-ubo.ts +11 -0
  594. package/src/recovery/render-system-candidate.ts +90 -66
  595. package/src/recovery/render-system-roots.ts +113 -0
  596. package/src/recovery/types.ts +77 -0
  597. package/src/reflection/record-owner.ts +26 -54
  598. package/src/render-contract.ts +195 -25
  599. package/src/render-graph-primitives.ts +6 -2
  600. package/src/render-pipeline.ts +70 -1
  601. package/src/render-system-extract-tail.ts +409 -160
  602. package/src/render-system-extract.ts +376 -102
  603. package/src/render-system-projections.ts +241 -0
  604. package/src/render-system.ts +681 -822
  605. package/src/scene/render-scene-types.ts +13 -4
  606. package/src/scene/render-scene.ts +569 -355
  607. package/src/scene/shadow-visibility.ts +21 -0
  608. package/src/ssr/admission.ts +380 -14
  609. package/src/ssr/compose.ts +144 -0
  610. package/src/ssr/errors.ts +48 -0
  611. package/src/ssr/graph.ts +777 -0
  612. package/src/ssr/history.ts +436 -0
  613. package/src/ssr/hiz.ts +124 -0
  614. package/src/ssr/inspection.ts +124 -0
  615. package/src/ssr/resources.ts +202 -0
  616. package/src/ssr/temporal.ts +164 -0
  617. package/src/systems/skin-palette-allocator.ts +495 -148
  618. package/src/systems/skin-palette-types.ts +17 -0
  619. package/src/systems/transparent-dispatch.ts +90 -0
  620. package/src/targets/material-source.ts +34 -0
  621. package/src/temporal/coverage.ts +1 -1
  622. package/src/temporal/frame-coordinator.ts +23 -2
  623. package/src/temporal/gpu.ts +74 -12
  624. package/src/temporal/history.ts +3 -1
  625. package/src/temporal/inspection.ts +2 -1
  626. package/src/temporal/standard-scene-data.ts +3 -1
  627. package/src/temporal/temporal-view.ts +3 -0
  628. package/src/transmission/__tests__/standard-transmission.dawn.test.ts +204 -139
  629. package/src/typed-render-graph-primitives.ts +266 -74
  630. package/src/typed-shadow-passes.ts +122 -12
  631. package/src/volume/temporal.ts +10 -0
  632. package/dist/chunk-GE3SDD72.mjs.map +0 -1
  633. package/dist/chunk-GF523LHF.mjs.map +0 -1
  634. package/dist/chunk-IQMKJLNU.mjs.map +0 -1
  635. package/dist/chunk-J52NMQKR.mjs.map +0 -1
  636. package/dist/chunk-J6KACNOH.mjs.map +0 -1
  637. package/dist/chunk-JAASCMXA.mjs.map +0 -1
  638. package/dist/chunk-MBU4ZVE7.mjs.map +0 -1
  639. package/dist/chunk-RBDBZ5R7.mjs.map +0 -1
  640. package/dist/chunk-VSL23LZE.mjs.map +0 -1
  641. package/src/__tests__/instances-world-ownership.integration.test.ts +0 -62
  642. package/src/scene/__tests__/changed-block-summary.candidate.test.ts +0 -36
@@ -10,9 +10,9 @@ import type { PipelineBuilderShaderModuleFactory } from '../pipeline-builder';
10
10
  import type { PreparedGraphicsResolver } from '../prepare/prepared-graphics-resolver';
11
11
  import type { RenderFrameState, ValidatedRenderable } from '../record/frame-snapshot';
12
12
  import type { PointsLinesRecordOwner, RenderSystemInternals } from '../record/render-context';
13
- import type { RecoveryGraphCandidate, RecoveryGraphCandidatePreparation, RecoveryGraphCandidateRuntime, RecoveryGraphSetupSubmission, RecoveryPointsLinesCandidate } from '../render-system';
14
13
  import type { ExtractedFrame, MaterialSnapshot } from '../render-system-extract';
15
14
  import type { PersistentRenderScene } from '../scene/render-scene';
15
+ import type { RecoveryGraphCandidate, RecoveryGraphCandidatePreparation, RecoveryGraphCandidateRuntime, RecoveryGraphSetupSubmission, RecoveryPointsLinesCandidate } from './types';
16
16
  export interface PreparedResolverCaches {
17
17
  readonly preparedPipelineIds: WeakMap<object, string>;
18
18
  readonly preparedMaterialPipelineShaders: WeakMap<object, string>;
@@ -54,11 +54,19 @@ export interface RenderSystemRecoveryDependencies {
54
54
  }
55
55
  export interface RenderSystemRecoveryOwner {
56
56
  setLastSuccessfulFrameSeed(seed: RecoveryFrameSeed): void;
57
- prepareRecoveryGraphCandidate(runtime: RecoveryGraphCandidateRuntime): Promise<RecoveryGraphCandidatePreparation>;
57
+ prepareRecoveryGraphCandidate(runtime: RecoveryGraphCandidateRuntime): RecoveryGraphCandidatePreparation;
58
58
  submitCandidateSetup(candidate: RecoveryGraphCandidate, isValid: () => boolean): Result<RecoveryGraphSetupSubmission, RhiError>;
59
59
  publishRecoveryGraphCandidate(candidate: RecoveryGraphCandidate): void;
60
60
  discardRecoveryGraphCandidate(candidate: RecoveryGraphCandidate): void;
61
61
  }
62
+ /**
63
+ * Keep the missing-texture sentinel out of residency preparation. A zero
64
+ * handle is the same absent-reference value used by materialHandle; resolving
65
+ * it as a real TextureAsset would otherwise pass an undefined pod to the GPU
66
+ * store and fail before the renderer can produce a structured readiness
67
+ * result.
68
+ */
69
+ export declare function materialTextureHandlesForResidency(candidates: Iterable<Handle<'TextureAsset', 'shared'> | undefined>): readonly Handle<'TextureAsset', 'shared'>[];
62
70
  export declare function materialTextureHandles(material: MaterialSnapshot): readonly Handle<'TextureAsset', 'shared'>[];
63
71
  export declare function materialSamplerHandles(material: MaterialSnapshot): readonly Handle<'SamplerAsset', 'shared'>[];
64
72
  export declare function createRenderSystemRecovery(deps: RenderSystemRecoveryDependencies): RenderSystemRecoveryOwner;
@@ -1 +1 @@
1
- {"version":3,"file":"render-system-candidate.d.ts","sourceRoot":"","sources":["../../src/recovery/render-system-candidate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render-system-candidate.d.ts","sourceRoot":"","sources":["../../src/recovery/render-system-candidate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { EnvironmentLifecycle } from '../environment/lifecycle';
2
+ import type { RenderFrameState } from '../record/frame-snapshot';
3
+ import type { RecoveryRootBundle, RecoveryRootRuntime } from '../render-system';
4
+ /**
5
+ * Assemble replacement-device roots without letting candidate construction
6
+ * publish through the active RenderSystem owner. The caller supplies the
7
+ * small state handoff explicitly so this recovery seam remains independent
8
+ * from frame orchestration.
9
+ */
10
+ export declare function prepareRenderSystemRecoveryRoots(runtime: RecoveryRootRuntime, environmentLifecycle: EnvironmentLifecycle, frameState: RenderFrameState, publishEnvironmentLifecycle: (lifecycle: EnvironmentLifecycle) => void): RecoveryRootBundle;
11
+ //# sourceMappingURL=render-system-roots.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-system-roots.d.ts","sourceRoot":"","sources":["../../src/recovery/render-system-roots.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEhF;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,mBAAmB,EAC5B,oBAAoB,EAAE,oBAAoB,EAC1C,UAAU,EAAE,gBAAgB,EAC5B,2BAA2B,EAAE,CAAC,SAAS,EAAE,oBAAoB,KAAK,IAAI,GACrE,kBAAkB,CA+FpB"}
@@ -0,0 +1,76 @@
1
+ import type { MipmapEncoderWork } from '@forgeax/engine-assets-runtime';
2
+ import type { Buffer, RenderPipeline, RhiDevice } from '@forgeax/engine-rhi';
3
+ import type { DeviceScope, LifecycleResourceSpec } from '../device/device-scope';
4
+ import type { GpuResidencyCache } from '../device/gpu-residency';
5
+ import type { RenderFeatureHost } from '../features/host';
6
+ import type { RenderFeatureGpuWorkOwner } from '../features/prepared-gpu-work';
7
+ import type { GpuDrivenProduction } from '../gpu-driven/production-raster';
8
+ import type { RenderFrameState } from '../record/frame-snapshot';
9
+ import type { RecoveryPipelineReadiness } from '../record/recovery-pipeline';
10
+ import type { PipelineState, RenderSystemInternals } from '../record/render-context';
11
+ import type { RenderFeatureGraphCandidate } from '../record/typed-frame-graph';
12
+ import type { PersistentGpuDrivenCandidate } from '../scene/render-scene';
13
+ /** The single Points/Lines owner's staged device-generation handoff. */
14
+ export interface RecoveryPointsLinesCandidate {
15
+ createRecoveryRoot(scope: DeviceScope): LifecycleResourceSpec<unknown>;
16
+ publish(): void;
17
+ release(): void;
18
+ }
19
+ /** Candidate-only device/runtime inputs used by the recovery prepare seam. */
20
+ export interface RecoveryGraphCandidateRuntime {
21
+ readonly internals: RenderSystemInternals;
22
+ readonly pipelineState: PipelineState;
23
+ }
24
+ /** Detached graph state prepared on a replacement device, before publication. */
25
+ export interface RecoveryGraphCandidate {
26
+ readonly frameState: RenderFrameState;
27
+ readonly setupWorks: readonly MipmapEncoderWork[];
28
+ readonly device: RhiDevice;
29
+ readonly generation: number;
30
+ readonly gpuDrivenProduction?: GpuDrivenProduction;
31
+ readonly gpuDrivenScene?: PersistentGpuDrivenCandidate;
32
+ /** Staged CPU-expanded Points/Lines buffers owned by the same RenderSystem. */
33
+ readonly pointsLines?: RecoveryPointsLinesCandidate;
34
+ readonly featureHost?: RenderFeatureHost;
35
+ readonly featureGpuWork?: RenderFeatureGpuWorkOwner;
36
+ readonly featureGraphCandidate?: RenderFeatureGraphCandidate;
37
+ readonly postProcessPipelines?: ReadonlyMap<string, RenderPipeline>;
38
+ readonly recoveryReadiness: RecoveryPipelineReadiness;
39
+ /** Release all candidate roots before publication; safe to call repeatedly. */
40
+ readonly release: () => void;
41
+ /** Transfer candidate-root ownership to the published RenderSystem. */
42
+ readonly markPublished: () => void;
43
+ }
44
+ /** Candidate setup completion; completion is bounded by the recovery owner. */
45
+ export interface RecoveryGraphSetupSubmission {
46
+ readonly completion?: PromiseLike<unknown>;
47
+ }
48
+ export type RecoveryGraphCandidatePreparation = {
49
+ readonly kind: 'no-seed';
50
+ } | {
51
+ readonly kind: 'ready';
52
+ readonly candidate: RecoveryGraphCandidate;
53
+ } | {
54
+ readonly kind: 'failed';
55
+ readonly reason: string;
56
+ readonly cause?: unknown;
57
+ };
58
+ /** Explicit candidate-owned inputs for lifecycle-root preparation. */
59
+ export interface RecoveryRootRuntime {
60
+ readonly scope: DeviceScope;
61
+ readonly device: RhiDevice;
62
+ readonly gpuStore: GpuResidencyCache;
63
+ readonly graphCandidate?: RecoveryGraphCandidate | undefined;
64
+ }
65
+ /** Candidate roots plus the one synchronous owner switch at publication. */
66
+ export interface RecoveryRootBundle {
67
+ readonly roots: readonly LifecycleResourceSpec<unknown>[];
68
+ publish(): void;
69
+ discard(): void;
70
+ }
71
+ /** Device-bound post-process resources prepared off to the side of the active renderer. */
72
+ export interface RecoveryPostProcessResources {
73
+ readonly device: RhiDevice;
74
+ readonly paramsBuffers: Map<string, Buffer>;
75
+ }
76
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/recovery/types.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,6 @@ export declare class ReflectionProbeRecordOwner {
19
19
  private outputFormat;
20
20
  private fallbackFormatAvailable;
21
21
  private nextFallbackTicket;
22
- private pendingFallback;
23
22
  private latestFallbackTickets;
24
23
  private fallbackRetiredFrames;
25
24
  private fallbackCommittedFrames;
@@ -43,7 +42,6 @@ export declare class ReflectionProbeRecordOwner {
43
42
  private completeSubmission;
44
43
  private stageFallbackProjections;
45
44
  private selectFallbackReceiptKey;
46
- private discardFallbackTickets;
47
45
  /** Commit exact-zero neutral rows even when a non-neutral MRT readback fails. */
48
46
  private commitNeutralFallbacks;
49
47
  private commitFallbackProjection;
@@ -1 +1 @@
1
- {"version":3,"file":"record-owner.d.ts","sourceRoot":"","sources":["../../src/reflection/record-owner.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAGV,yBAAyB,EAE1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAGlG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AASjE,OAAO,EAKL,KAAK,mBAAmB,EACxB,KAAK,8BAA8B,EAKpC,MAAM,cAAc,CAAC;AAqDtB,4EAA4E;AAC5E,qBAAa,0BAA0B;IAiCzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAhCtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuC;IACjE,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,qBAAqB,CAAqB;IAClD,OAAO,CAAC,sBAAsB,CAAK;IACnC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,qBAAqB,CAAK;IAClC,OAAO,CAAC,0BAA0B,CAAK;IACvC,OAAO,CAAC,aAAa,CAA4D;IACjF,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,uBAAuB,CAAU;IACzC,OAAO,CAAC,kBAAkB,CAAK;IAK/B,OAAO,CAAC,eAAe,CAAsC;IAC7D,OAAO,CAAC,qBAAqB,CAA6B;IAC1D,OAAO,CAAC,qBAAqB,CAA6B;IAC1D,OAAO,CAAC,uBAAuB,CAA6B;IAC5D,OAAO,CAAC,mBAAmB,CAGvB;IACJ,OAAO,CAAC,kBAAkB,CAA6B;IACvD,OAAO,CAAC,gBAAgB,CAAgD;IACxE,OAAO,CAAC,gBAAgB,CAAgD;IACxE,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,eAAe,CAA6C;IACpE,OAAO,CAAC,eAAe,CAA4B;gBAEtB,SAAS,EAAE,qBAAqB;IAQ7D,OAAO,IAAI,yBAAyB;IA0CpC,OAAO,CAAC,qBAAqB;IAoB7B,OAAO,CAAC,sBAAsB;IAwB9B,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,2BAA2B;IA4BnC,OAAO,CAAC,mBAAmB;IAmB3B,OAAO,CAAC,oBAAoB;IAmC5B,OAAO,CACL,KAAK,EAAE,SAAS,mBAAmB,EAAE,EACrC,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,8BAA8B,CAAC,EAC/D,aAAa,EAAE,cAAc,GAAG,SAAS,EACzC,OAAO,SAA8B,EACrC,QAAQ,GAAE,gBAAgB,GAAG,SAAqB,GACjD,0BAA0B;YAmMf,kBAAkB;IAoEhC,OAAO,CAAC,wBAAwB;IAkIhC,OAAO,CAAC,wBAAwB;IA2ChC,OAAO,CAAC,sBAAsB;IAM9B,iFAAiF;IACjF,OAAO,CAAC,sBAAsB;IAe9B,OAAO,CAAC,wBAAwB;IAoChC,4EAA4E;IAC5E,OAAO,CAAC,mBAAmB;YA2Bb,0BAA0B;IA6LxC,OAAO,IAAI,IAAI;IA0Bf,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,WAAW;IAuEnB,OAAO,CAAC,qBAAqB;IAgD7B,OAAO,CAAC,aAAa;CAqEtB"}
1
+ {"version":3,"file":"record-owner.d.ts","sourceRoot":"","sources":["../../src/reflection/record-owner.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAGV,yBAAyB,EAE1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAGlG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AASjE,OAAO,EAKL,KAAK,mBAAmB,EACxB,KAAK,8BAA8B,EAKpC,MAAM,cAAc,CAAC;AAqDtB,4EAA4E;AAC5E,qBAAa,0BAA0B;IA+BzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IA9BtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuC;IACjE,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,qBAAqB,CAAqB;IAClD,OAAO,CAAC,sBAAsB,CAAK;IACnC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,qBAAqB,CAAK;IAClC,OAAO,CAAC,0BAA0B,CAAK;IACvC,OAAO,CAAC,aAAa,CAA4D;IACjF,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,uBAAuB,CAAU;IACzC,OAAO,CAAC,kBAAkB,CAAK;IAI/B,OAAO,CAAC,qBAAqB,CAAsC;IACnE,OAAO,CAAC,qBAAqB,CAA6B;IAC1D,OAAO,CAAC,uBAAuB,CAA6B;IAC5D,OAAO,CAAC,mBAAmB,CAGvB;IACJ,OAAO,CAAC,kBAAkB,CAA6B;IACvD,OAAO,CAAC,gBAAgB,CAAgD;IACxE,OAAO,CAAC,gBAAgB,CAAgD;IACxE,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,eAAe,CAA6C;IACpE,OAAO,CAAC,eAAe,CAA4B;gBAEtB,SAAS,EAAE,qBAAqB;IAQ7D,OAAO,IAAI,yBAAyB;IA0CpC,OAAO,CAAC,qBAAqB;IAoB7B,OAAO,CAAC,sBAAsB;IAwB9B,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,2BAA2B;IA4BnC,OAAO,CAAC,mBAAmB;IAkB3B,OAAO,CAAC,oBAAoB;IAmC5B,OAAO,CACL,KAAK,EAAE,SAAS,mBAAmB,EAAE,EACrC,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,8BAA8B,CAAC,EAC/D,aAAa,EAAE,cAAc,GAAG,SAAS,EACzC,OAAO,SAA8B,EACrC,QAAQ,GAAE,gBAAgB,GAAG,SAAqB,GACjD,0BAA0B;YAmMf,kBAAkB;IAmEhC,OAAO,CAAC,wBAAwB;IAwHhC,OAAO,CAAC,wBAAwB;IA2ChC,iFAAiF;IACjF,OAAO,CAAC,sBAAsB;IAe9B,OAAO,CAAC,wBAAwB;IAoChC,4EAA4E;IAC5E,OAAO,CAAC,mBAAmB;YA2Bb,0BAA0B;IAsLxC,OAAO,IAAI,IAAI;IAyBf,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,WAAW;IAuEnB,OAAO,CAAC,qBAAqB;IAgD7B,OAAO,CAAC,aAAa;CAqEtB"}
@@ -8,14 +8,17 @@ import type { BindGroupLayout, Buffer, Result, RhiCanvasSurfacePresentationProof
8
8
  import type { SkinError } from '@forgeax/engine-skinning';
9
9
  import type { ImageError } from '@forgeax/engine-types';
10
10
  import type { RhiBackendInstrumentation } from './assembly/backend-contract';
11
- import type { Antialias, BloomEnabled, Tonemap } from './components/camera';
11
+ import type { Antialias, BloomEnabled, CameraExposure, Tonemap } from './components/camera';
12
+ import type { ScreenSpaceReflectionData } from './components/screen-space-reflection';
12
13
  import type { EnvironmentInspection } from './environment/inspection';
14
+ import type { GpuDrivenPreparationError } from './errors/gpu-driven';
13
15
  import type { RecoveryOutcome, RecoveryPhase } from './errors/recover';
14
16
  import type { RenderError } from './errors/render';
15
17
  import type { RenderFeature, RenderFeatureDiagnostics } from './features/types';
16
18
  import type { PostProcessShaderEntry } from './fullscreen-post-process-pass';
17
- import type { BloomInspection, DirectionalShadowInspection, LightInspection, LodOcclusionInspection, MotionBlurInspection, ReflectionProbeInspection, RenderSceneInspection, SsrDependenciesInspection, TemporalTargetInspection, TransmissionInspection } from './inspection-types';
18
- import type { InstanceCollectionInspection } from './instances';
19
+ import type { BloomInspection, DirectionalShadowInspection, LightInspection, LodOcclusionInspection, MotionBlurInspection, ReflectionProbeInspection, RenderFeatureGraphInspection, RenderFeatureHostInspection, RenderSceneInspection, SsrDependenciesInspection, SsrSpatialInspection, TemporalTargetInspection, TransmissionInspection } from './inspection-types';
20
+ import type { InstanceCollectionInspection, InstanceCollectionStore } from './instances';
21
+ import type { RenderSceneBounds } from './scene/render-scene-types';
19
22
  import type { SsrAdmissionIdentity } from './ssr/identity';
20
23
  import type { RenderTarget, RenderTargetDescriptor, RenderTargetReadbackData, RenderTargetReadbackRequest, RenderTargetReadbackTicket, RenderTargetTextureSource, RenderTargetTextureSourceOptions } from './targets/contracts';
21
24
  import type { TemporalInspection } from './temporal/inspection';
@@ -24,6 +27,8 @@ export type { PointsLinesInspection } from './points-lines/inspection';
24
27
  import type { DynamicGeometryCandidate, DynamicGeometryError, DynamicGeometryInspection, DynamicGeometryOrdering, DynamicGeometryPrepareInput, DynamicGeometryReceipt } from './dynamic-geometry';
25
28
  import type { IblBindingInspection, MeshMaterialBindingObservation } from './mesh-material-bindings';
26
29
  import type { StandardLightingInspection } from './pipeline/standard-lighting/inspection';
30
+ import type { AutoExposureInspection } from './pipeline/standard-output/auto-exposure/inspection';
31
+ import type { StandardLutInspection } from './pipeline/standard-output/lut-state';
27
32
  import type { StandardProfile } from './pipeline/standard-profile';
28
33
  import type { PointShadowInspection } from './point-shadow-inspection';
29
34
  import type { PostProcessError } from './post-process-errors';
@@ -51,6 +56,14 @@ export type RenderResult<T, E> = {
51
56
  };
52
57
  /** The only World data boundary accepted by the M6 renderer contract. */
53
58
  export type RenderWorldLease = RenderReadLease;
59
+ /** Camera-owned color/exposure facts projected once at the frame boundary. */
60
+ export interface CameraOutputSnapshot {
61
+ readonly exposure: CameraExposure;
62
+ readonly temperature: number;
63
+ readonly tint: number;
64
+ readonly colorLut: number;
65
+ readonly colorLutStrength: number;
66
+ }
54
67
  /**
55
68
  * Camera facts shared by extract, record, and scene owners.
56
69
  *
@@ -84,12 +97,16 @@ export interface CameraSnapshot {
84
97
  readonly tonemap: Tonemap;
85
98
  readonly exposure: number;
86
99
  readonly whitePoint: number;
100
+ /** Camera schema output projection consumed by Standard prepare/inspection. */
101
+ readonly output?: CameraOutputSnapshot;
87
102
  readonly antialias: Antialias;
88
103
  readonly bloom: BloomEnabled;
89
104
  readonly bloomThreshold: number;
90
105
  readonly bloomIntensity: number;
91
106
  readonly bloomBlurRadius: number;
92
107
  readonly clearColor: readonly [number, number, number, number];
108
+ /** Optional active-camera SSR authoring fact, copied from the ECS schema. */
109
+ readonly screenSpaceReflection?: ScreenSpaceReflectionData;
93
110
  /** Renderer-owned temporal projection used by Standard's TAA producer. */
94
111
  readonly temporal?: TemporalView;
95
112
  /** Active-camera motion blur parameters, present only when demanded. */
@@ -124,8 +141,41 @@ interface RenderPipelineStateView {
124
141
  * RenderSystemRuntime structurally satisfies this contract, but the public
125
142
  * frame surface does not depend on that assembly owner.
126
143
  */
144
+ interface RenderPipelineObservationCapture {
145
+ readonly domain: 'linear-hdr' | 'linear-ldr' | 'final-srgb';
146
+ readonly format: TextureFormat;
147
+ readonly device: RhiDevice;
148
+ readonly texture: Texture;
149
+ readonly buffer: Buffer;
150
+ readonly frameNumber: number;
151
+ readonly deviceGeneration: number;
152
+ readonly graphGeneration: number;
153
+ readonly backendId: string;
154
+ readonly width: number;
155
+ readonly height: number;
156
+ readonly bytesPerRow: number;
157
+ }
158
+ interface RenderPipelineObservationCaptureOwner {
159
+ readonly register: (capture: RenderPipelineObservationCapture) => void;
160
+ readonly consume: (frameNumber: number) => readonly RenderPipelineObservationCapture[];
161
+ readonly drain: () => readonly RenderPipelineObservationCapture[];
162
+ }
127
163
  interface RenderPipelineRuntime {
128
164
  readonly device: RhiDevice;
165
+ /** Current renderer device generation used to fence graph captures. */
166
+ readonly deviceGeneration?: number | undefined;
167
+ /** Public receipt identity reserved for the frame currently being encoded. */
168
+ readonly observationFrameId?: number | undefined;
169
+ /** Renderer-issued graph fence populated by the graph owner during encoding. */
170
+ observationGraphGeneration?: number | undefined;
171
+ /** Per-renderer bridge for receipt-bound graph color captures. */
172
+ readonly observationCaptureOwner?: RenderPipelineObservationCaptureOwner | undefined;
173
+ /**
174
+ * Domains armed for the frame currently being encoded. An absent or empty
175
+ * set is the normal zero-cost path; typed graph capture passes remain
176
+ * declared for topology inspection but do not allocate or copy anything.
177
+ */
178
+ readonly observationCaptureDomains?: readonly FrameObservationDomain[] | undefined;
129
179
  /** Runtime-owned shader module factory used by built-in graph producers. */
130
180
  readonly shaderModuleFactory?: {
131
181
  createShaderModule(input: {
@@ -133,13 +183,20 @@ interface RenderPipelineRuntime {
133
183
  readonly label?: string | undefined;
134
184
  }): import('@forgeax/engine-types').Result<import('@forgeax/engine-rhi').ShaderModule, RhiError>;
135
185
  };
186
+ /** Immediate factory used by same-frame built-in producers after runtime warm-up. */
187
+ readonly immediateShaderModuleFactory?: {
188
+ createShaderModule(input: {
189
+ readonly code: string;
190
+ readonly label?: string | undefined;
191
+ }): import('@forgeax/engine-types').Result<import('@forgeax/engine-rhi').ShaderModule, RhiError>;
192
+ };
136
193
  readonly errorRegistry: {
137
194
  fire(error: RendererError): void;
138
195
  };
139
196
  readonly debugOverlay?: RenderDebugOverlay | undefined;
140
197
  readonly lookupPostProcess?: (id: string) => PostProcessShaderEntry | undefined;
141
198
  readonly getPostProcessParamsBuffer?: (id: string) => Buffer | undefined;
142
- readonly getPostProcessPipeline?: (id: string, bgl: BindGroupLayout, colorFormat: GPUTextureFormat, entry?: PostProcessShaderEntry) => RhiRenderPipeline | null;
199
+ readonly getPostProcessPipeline?: (id: string, bgl: BindGroupLayout, colorFormats: readonly GPUTextureFormat[], entry?: PostProcessShaderEntry) => RhiRenderPipeline | null;
143
200
  }
144
201
  /**
145
202
  * Render-owned declaration for an app-provided debug overlay. App owns the
@@ -175,6 +232,10 @@ export interface RenderPipelineContext {
175
232
  readonly spotLightProjector?: SpotLightProjectorFrameContext;
176
233
  /** Build-time composed utility sources for the renderer-owned volume passes. */
177
234
  readonly volumetricFogShaders?: VolumetricFogShaderSources;
235
+ /** Build-time composed utility sources for the renderer-owned SSR passes. */
236
+ readonly ssrShaders?: SsrShaderSources;
237
+ /** Build-time composed utility sources for the renderer-owned atmosphere passes. */
238
+ readonly atmosphereShaders?: AtmosphereShaderSources;
178
239
  }
179
240
  /** Stable utility entry-point sources emitted by the shader manifest. */
180
241
  export interface VolumetricFogShaderSources {
@@ -183,6 +244,19 @@ export interface VolumetricFogShaderSources {
183
244
  readonly integrate: string;
184
245
  readonly composite: string;
185
246
  }
247
+ /** Stable utility entry-point sources emitted by the shader manifest. */
248
+ export interface SsrShaderSources {
249
+ readonly hiz: string;
250
+ readonly hizReduce: string;
251
+ readonly trace: string;
252
+ readonly temporal: string;
253
+ readonly compose: string;
254
+ }
255
+ /** Stable analytic-atmosphere entry-point sources emitted by the shader manifest. */
256
+ export interface AtmosphereShaderSources {
257
+ readonly cube: string;
258
+ readonly background: string;
259
+ }
186
260
  /**
187
261
  * GPU resources for one validated volumetric-fog candidate. The record stage
188
262
  * owns residency and parameter uploads; graph passes consume this narrow view
@@ -225,6 +299,7 @@ export interface SpotLightProjectorFrameContext {
225
299
  */
226
300
  export interface Renderer {
227
301
  /** Renderer-owned authoring and update path for large instance collections. */
302
+ readonly instances: InstanceCollectionStore;
228
303
  attach(world: World): RenderResult<RenderWorldLease, RenderError>;
229
304
  /** Prepare a standard MeshAsset for the active device generation. */
230
305
  prepareDynamicGeometry(input: DynamicGeometryPrepareInput): Result<DynamicGeometryCandidate, DynamicGeometryError>;
@@ -234,6 +309,16 @@ export interface Renderer {
234
309
  cancelDynamicGeometry(candidate: DynamicGeometryCandidate): Result<void, DynamicGeometryError>;
235
310
  retireDynamicGeometry(candidate: DynamicGeometryCandidate): Result<void, DynamicGeometryError>;
236
311
  draw(input: RenderFrameInput): RenderResult<FrameReceipt, RenderError>;
312
+ /**
313
+ * Arm one upcoming submitted frame for explicit color-domain observation.
314
+ * Observation buffers are not created, copied, mapped, or retained until a
315
+ * host calls this method before `draw()`. The demand is consumed only by a
316
+ * successful submit; a failed frame keeps it armed for a retry.
317
+ *
318
+ * This optional extension keeps older injected Renderer test doubles source
319
+ * compatible while concrete Engine renderers always implement it.
320
+ */
321
+ requestObservation?: (domains: readonly FrameObservationDomain[]) => RenderResult<void, RenderError>;
237
322
  createRenderTarget(descriptor: RenderTargetDescriptor): RenderResult<RenderTarget, RenderError>;
238
323
  resizeRenderTarget(target: RenderTarget, descriptor: RenderTargetDescriptor): RenderResult<void, RenderError>;
239
324
  createRenderTargetTextureSource(target: RenderTarget, options: RenderTargetTextureSourceOptions): RenderResult<RenderTargetTextureSource, RenderError>;
@@ -241,6 +326,8 @@ export interface Renderer {
241
326
  destroyRenderTarget(target: RenderTarget): RenderResult<void, RenderError>;
242
327
  setProfile(profile: RenderProfile): RenderResult<void, RenderError>;
243
328
  state(): RendererState;
329
+ /** Detached world bounds for one record in the last extracted World; undefined if unavailable. */
330
+ bounds(world: World, entity: number): RenderSceneBounds | undefined;
244
331
  inspect(): RenderInspection;
245
332
  observe(receipt: FrameReceipt, request: FrameObservationRequest): Promise<RenderResult<FrameReceiptObservation, RenderError>>;
246
333
  subscribe(listener: (event: RendererEvent) => void): () => void;
@@ -273,6 +360,8 @@ export type RendererEvent = {
273
360
  readonly kind: 'frame-submitted';
274
361
  readonly frameId: number;
275
362
  readonly deviceGeneration: number;
363
+ /** The exact receipt returned by the renderer's submit boundary. */
364
+ readonly receipt: FrameReceipt;
276
365
  };
277
366
  /** Package-local listener alias used by the renderer assembly implementation. */
278
367
  export type RendererEventListener = (event: RendererEvent) => void;
@@ -298,8 +387,10 @@ export interface FrameEnvironment {
298
387
  * only with the matching FrameReceipt after `receipt.completed` and returns a
299
388
  * structured Result error when the generation or frame identity is stale.
300
389
  */
390
+ export type FrameObservationDomain = 'linear-hdr' | 'linear-ldr' | 'final-srgb';
391
+ export type FrameObservationInclude = 'timings' | 'draws' | 'bindings' | 'target-readbacks' | FrameObservationDomain;
301
392
  export interface FrameObservationRequest {
302
- readonly include: readonly ('timings' | 'draws' | 'bindings' | 'target-readbacks')[];
393
+ readonly include: readonly FrameObservationInclude[];
303
394
  readonly targetReadbacks?: readonly RenderTargetReadbackTicket[];
304
395
  }
305
396
  /**
@@ -311,6 +402,10 @@ export interface FrameObservationRequest {
311
402
  export interface FrameReceipt {
312
403
  readonly frameId: number;
313
404
  readonly deviceGeneration: number;
405
+ /** Backend identity captured at submit and checked before observation. */
406
+ readonly backendId?: RhiCaps['backendKind'];
407
+ /** Monotonic compiled graph identity used by renderer-issued observations. */
408
+ readonly graphGeneration?: number;
314
409
  readonly completed: Promise<RenderResult<void, RenderError>>;
315
410
  }
316
411
  /**
@@ -331,15 +426,42 @@ export interface RenderFrameInput {
331
426
  export interface FrameReceiptObservation {
332
427
  readonly frameId: number;
333
428
  readonly deviceGeneration: number;
334
- readonly include: readonly ('timings' | 'draws' | 'bindings' | 'target-readbacks')[];
429
+ readonly include: readonly FrameObservationInclude[];
335
430
  /** Receipt-bound Render-owned GPU pass facts; absent when not requested. */
336
431
  readonly timings?: GpuPassTimingObservation | undefined;
337
432
  /** Receipt-bound volume GPU timing facts; absent when not requested. */
338
433
  readonly volumeTimings?: VolumeTimingObservation | undefined;
339
434
  readonly targetReadbacks?: readonly RenderTargetReadbackData[];
435
+ /** Independent raw bytes captured from the requested linear/display domains. */
436
+ readonly observations?: readonly FrameDomainObservation[] | undefined;
437
+ }
438
+ export interface FrameDomainObservation {
439
+ readonly domain: FrameObservationDomain;
440
+ readonly bytes: Uint8Array;
441
+ readonly metadata: {
442
+ readonly frameId: number;
443
+ readonly deviceGeneration: number;
444
+ readonly backendId?: RhiCaps['backendKind'];
445
+ /** Native texture format of the copied attachment, including BGRA order. */
446
+ readonly format: TextureFormat;
447
+ readonly graphGeneration: number;
448
+ readonly textureIdentity: number;
449
+ readonly readbackIdentity: number;
450
+ readonly width: number;
451
+ readonly height: number;
452
+ readonly bytesPerRow: number;
453
+ readonly footprint: {
454
+ readonly resourceCount: number;
455
+ readonly bindGroupCount: number;
456
+ };
457
+ };
340
458
  }
341
459
  /** Stable backend facts for the Standard output transform projection. */
342
460
  export interface RenderOutputInspection {
461
+ /** Camera-owned auto-exposure facts, detached from GPU state when available. */
462
+ readonly autoExposure?: AutoExposureInspection;
463
+ /** Renderer-owned detached LUT residency and receipt facts. */
464
+ readonly standardLut?: StandardLutInspection;
343
465
  readonly outputTransform?: typeof STANDARD_OUTPUT_TRANSFORM_FEATURE_ID;
344
466
  readonly displayEncoded: boolean;
345
467
  readonly intermediateFormat?: TextureFormat;
@@ -383,6 +505,15 @@ export interface RenderObservationInspection {
383
505
  /** Exact pass names and target descriptor from the committed graph. */
384
506
  readonly passNames: readonly string[];
385
507
  readonly standardOutputColor?: RenderStandardOutputColorInspection;
508
+ /** Monotonic, renderer-owned observation resource facts; no GPU handles. */
509
+ readonly resourceStats?: {
510
+ readonly allocationCount: number;
511
+ readonly liveCount: number;
512
+ readonly peakLiveCount: number;
513
+ readonly mapCount: number;
514
+ readonly readbackCount: number;
515
+ readonly liveByteLength: number;
516
+ };
386
517
  }
387
518
  /**
388
519
  * Detached renderer facts for host diagnostics and capability selection.
@@ -420,6 +551,12 @@ export interface RenderInspection {
420
551
  readonly features: readonly string[];
421
552
  /** Truthful lifecycle facts for every registered declarative feature. */
422
553
  readonly featureDiagnostics: readonly RenderFeatureDiagnostics[];
554
+ /** Detached signature and prepared-resource counters for feature planning. */
555
+ readonly featureHost?: RenderFeatureHostInspection;
556
+ /** Detached typed-graph compile/reuse and candidate lifecycle counters. */
557
+ readonly featureGraph?: RenderFeatureGraphInspection;
558
+ /** Detached material texture-source probe counters from the last extract. */
559
+ readonly materialTextureSources?: import('./inspection-types').MaterialTextureSourceInspection;
423
560
  readonly frustumStats: {
424
561
  readonly culled: number;
425
562
  readonly total: number;
@@ -435,6 +572,8 @@ export interface RenderInspection {
435
572
  readonly reflectionProbes: ReflectionProbeInspection;
436
573
  /** Renderer-owned SSR dependency seam; consumer facts are projected from live owners. */
437
574
  readonly ssrDependencies: SsrDependenciesInspection;
575
+ /** Renderer-owned SSR spatial status and bounded execution facts. */
576
+ readonly ssr: SsrSpatialInspection;
438
577
  /** Last completed transmission candidate facts, detached from GPU handles. */
439
578
  readonly transmission?: TransmissionInspection;
440
579
  /** Last prepared Standard transport facts, detached from GPU handles. */
@@ -479,16 +618,12 @@ export interface RenderInspection {
479
618
  readonly lastGeneration: number | undefined;
480
619
  };
481
620
  };
482
- /** Output transform facts; never includes fixture metrics or pixel bytes. */
483
- readonly outputTransform?: typeof STANDARD_OUTPUT_TRANSFORM_FEATURE_ID;
484
- readonly displayEncoded: boolean;
485
- readonly intermediateFormat?: TextureFormat;
486
- readonly surfaceStorage: TextureFormat;
487
- readonly surfaceDisplay: TextureFormat;
488
- readonly endpoint: 'surface.storage.raw';
489
- readonly capability: RenderOutputInspection['capability'];
490
- readonly presentationProof?: RhiCanvasSurfacePresentationProof;
491
- readonly error: RenderOutputInspection['error'];
621
+ /**
622
+ * Output-transform facts from the same committed graph and physical surface.
623
+ * Keep this as one named subtree so AI consumers do not have to guess which
624
+ * detached fields belong to the output contract versus renderer lifecycle.
625
+ */
626
+ readonly output: RenderOutputInspection;
492
627
  readonly observation: RenderObservationInspection;
493
628
  readonly environment: EnvironmentInspection;
494
629
  readonly temporal: TemporalInspection;
@@ -521,6 +656,8 @@ export interface RenderInspection {
521
656
  export type DrawOwnerOptions = {
522
657
  readonly cameraOwner: number;
523
658
  readonly resourceOwner: number;
659
+ /** Optional FrameCamera entity selection; absent preserves ActiveCamera semantics. */
660
+ readonly cameraEntityKey?: number;
524
661
  readonly profileFrame?: ProfileFrameToken;
525
662
  };
526
663
  /** Information attached to a device-loss notification. */
@@ -541,17 +678,18 @@ export type RendererLostListener = (info: RendererLostInfo) => void;
541
678
  * exception), NOT the eliminated cross-cluster `RuntimeError` SSOT (D-3).
542
679
  *
543
680
  * Composition = `RhiError | RenderError | AssetRuntimeError | SkinError |
544
- * PostProcessError`. This equals the pre-decomposition
545
- * `RhiError | RuntimeError | PostProcessError` exactly: `RuntimeError` was
546
- * `RenderError | AssetRuntimeError | SkinError` (27 classes). `RecoverError`
547
- * and `EngineEnvironmentError` are intentionally excluded neither is ever
548
- * emitted through the Renderer event stream (`RecoverError` returns from `recover()`,
549
- * `EngineEnvironmentError` throws at construction), matching the original
550
- * `RuntimeError` union which excluded both (OOS-3 behavior equivalence).
681
+ * GpuDrivenPreparationError | PostProcessError`. The GPU preparation arm is
682
+ * the renderer-owned producer contract: its closed `code` and typed `detail`
683
+ * identify the material, geometry, skin, generation, or shadow owner without making
684
+ * RHI errors carry render policy. `RecoverError` and `EngineEnvironmentError`
685
+ * are intentionally excluded neither is ever emitted through the Renderer
686
+ * event stream (`RecoverError` returns from `recover()`,
687
+ * `EngineEnvironmentError` throws at construction).
551
688
  *
552
689
  * AI consumers do `switch (err.code)` over the union: the disjoint
553
690
  * `RhiErrorCode` / `RenderErrorCode` / `AssetRuntimeErrorCode` / `SkinErrorCode`
554
- * / `PostProcessErrorCode` literal sets let TS narrow each arm to the concrete
691
+ * / `GpuDrivenPreparationErrorCode` / `PostProcessErrorCode` literal sets let
692
+ * TS narrow each arm to the concrete
555
693
  * class (charter P3 union discoverability — every fan-out member is reachable
556
694
  * in an exhaustive switch, no untyped escape). Example:
557
695
  *
@@ -562,13 +700,14 @@ export type RendererLostListener = (info: RendererLostInfo) => void;
562
700
  * case 'asset-not-registered': // AssetRuntimeError arm, err narrowed here
563
701
  * return report(err.hint);
564
702
  * // ...one arm per RhiErrorCode | RenderErrorCode | AssetRuntimeErrorCode
565
- * // | SkinErrorCode | PostProcessErrorCode member; no default needed,
703
+ * // | SkinErrorCode | GpuDrivenPreparationErrorCode |
704
+ * // PostProcessErrorCode member; no default needed,
566
705
  * // TS flags every unhandled code at compile time.
567
706
  * }
568
707
  * });
569
708
  * ```
570
709
  */
571
- export type RendererError = RhiError | RenderGraphError | ImageError | RenderError | AssetRuntimeError | SkinError | PostProcessError;
710
+ export type RendererError = RhiError | RenderGraphError | ImageError | RenderError | GpuDrivenPreparationError | AssetRuntimeError | SkinError | PostProcessError;
572
711
  /**
573
712
  * Package-local error listener retained for host assembly. Public consumers
574
713
  * use `Renderer.subscribe` and receive `RendererEvent` instead.
@@ -580,7 +719,7 @@ export type RendererErrorListener = (error: RendererError) => void;
580
719
  * pipelines retain a bounded catalog while the default render workload gets
581
720
  * actionable owner attribution.
582
721
  */
583
- 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/output-transform", "record/graph-execute/present", "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"];
722
+ 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/output-transform", "record/graph-execute/present", "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/ssr-hiz", "record/graph-execute/ssr-trace", "record/graph-execute/ssr-temporal", "record/graph-execute/ssr-reflection-mip", "record/graph-execute/ssr-compose", "record/graph-execute/other"];
584
723
  export type RenderGraphExecutionPhase = (typeof RENDER_GRAPH_EXECUTION_PHASE_CATALOG)[number];
585
724
  /** Bounded producer-owned children of the scene-state record owner. */
586
725
  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"];
@@ -594,9 +733,9 @@ export declare const RENDER_SCENE_STATE_PHASE_CATALOG: readonly ["record/scene-s
594
733
  * engine-owned Extract / Prepare / Record orchestration so a host can measure
595
734
  * attribution without guessing from RHI command counts.
596
735
  */
597
- export declare const RENDER_RECORD_PHASE_CATALOG: readonly ["record/occlusion-query-submit", "record/occlusion-global-advance", "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/output-transform", "record/graph-execute/present", "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"];
736
+ export declare const RENDER_RECORD_PHASE_CATALOG: readonly ["record/occlusion-query-submit", "record/occlusion-global-advance", "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/output-transform", "record/graph-execute/present", "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/ssr-hiz", "record/graph-execute/ssr-trace", "record/graph-execute/ssr-temporal", "record/graph-execute/ssr-reflection-mip", "record/graph-execute/ssr-compose", "record/graph-execute/other"];
598
737
  export type RenderRecordPhase = (typeof RENDER_RECORD_PHASE_CATALOG)[number];
599
- export declare const RENDER_PHASE_CATALOG: readonly ["extract", "occlusion-prepare", "bind-groups", "features", "sort", "record", "record/occlusion-query-submit", "record/occlusion-global-advance", "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/output-transform", "record/graph-execute/present", "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"];
738
+ export declare const RENDER_PHASE_CATALOG: readonly ["extract", "occlusion-prepare", "bind-groups", "features", "sort", "record", "record/occlusion-query-submit", "record/occlusion-global-advance", "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/output-transform", "record/graph-execute/present", "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/ssr-hiz", "record/graph-execute/ssr-trace", "record/graph-execute/ssr-temporal", "record/graph-execute/ssr-reflection-mip", "record/graph-execute/ssr-compose", "record/graph-execute/other"];
600
739
  export type RenderPhase = (typeof RENDER_PHASE_CATALOG)[number];
601
740
  export type RenderPhaseSkipReason = 'feature-host-unavailable' | 'feature-host-empty' | 'pipeline-state-unavailable' | 'camera-unavailable';
602
741
  /** First-version options bag (intentionally empty; reserved for v0.1). */
@@ -613,7 +752,11 @@ export interface RendererOptions {
613
752
  readonly rhiInstrumentation?: RhiBackendInstrumentation | undefined;
614
753
  /** Optional bounded GPU pass timing facts; this is not frame latency. */
615
754
  readonly gpuPassTiming?: GpuPassTimingOptions | undefined;
616
- /** Exact source/tree/lock/build identity binding for the renderer-owned SSR seam. */
755
+ /**
756
+ * Exact source/tree/lock/build identity binding for the renderer-owned SSR seam.
757
+ * Opts into one format-capability probe during device-generation initialization;
758
+ * camera ScreenSpaceReflection still controls all per-frame SSR work.
759
+ */
617
760
  readonly ssrIdentity?: SsrAdmissionIdentity | undefined;
618
761
  /**
619
762
  * M3 D-P4 escape hatch (feat-20260511-rhi-wgpu-impl): explicit