@forgeax/engine-render 0.1.28 → 0.1.30

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 (768) hide show
  1. package/README.md +856 -126
  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/device-feature-admission.d.ts +4 -3
  5. package/dist/assembly/device-feature-admission.d.ts.map +1 -1
  6. package/dist/assembly/dynamic-geometry-host.d.ts +27 -0
  7. package/dist/assembly/dynamic-geometry-host.d.ts.map +1 -1
  8. package/dist/assembly/dynamic-geometry-runtime.d.ts +20 -0
  9. package/dist/assembly/dynamic-geometry-runtime.d.ts.map +1 -0
  10. package/dist/assembly/factory.d.ts +3 -1
  11. package/dist/assembly/factory.d.ts.map +1 -1
  12. package/dist/assembly/gpu-driven-owner.d.ts +10 -0
  13. package/dist/assembly/gpu-driven-owner.d.ts.map +1 -0
  14. package/dist/assembly/host-contract.d.ts +14 -0
  15. package/dist/assembly/host-contract.d.ts.map +1 -1
  16. package/dist/assembly/material/assembly.d.ts +31 -1
  17. package/dist/assembly/material/assembly.d.ts.map +1 -1
  18. package/dist/assembly/material/pipeline-helpers.d.ts +24 -0
  19. package/dist/assembly/material/pipeline-helpers.d.ts.map +1 -0
  20. package/dist/assembly/material-shader-policy.d.ts +3 -1
  21. package/dist/assembly/material-shader-policy.d.ts.map +1 -1
  22. package/dist/assembly/recovery/device-loss-fanout.d.ts.map +1 -1
  23. package/dist/assembly/recovery/failure-location.d.ts +12 -0
  24. package/dist/assembly/recovery/failure-location.d.ts.map +1 -0
  25. package/dist/assembly/recovery/recovery-attempt.d.ts +1 -6
  26. package/dist/assembly/recovery/recovery-attempt.d.ts.map +1 -1
  27. package/dist/assembly/recovery/renderer-recover.d.ts +7 -4
  28. package/dist/assembly/recovery/renderer-recover.d.ts.map +1 -1
  29. package/dist/assembly/renderer-facade.d.ts.map +1 -1
  30. package/dist/assembly/renderer-feature-inspection.d.ts +5 -0
  31. package/dist/assembly/renderer-feature-inspection.d.ts.map +1 -0
  32. package/dist/assembly/renderer-frame-transaction.d.ts +19 -0
  33. package/dist/assembly/renderer-frame-transaction.d.ts.map +1 -1
  34. package/dist/assembly/renderer-helpers.d.ts +3 -0
  35. package/dist/assembly/renderer-helpers.d.ts.map +1 -1
  36. package/dist/assembly/renderer-inspection.d.ts +4 -0
  37. package/dist/assembly/renderer-inspection.d.ts.map +1 -1
  38. package/dist/assembly/shader-prewarm-policy.d.ts +7 -1
  39. package/dist/assembly/shader-prewarm-policy.d.ts.map +1 -1
  40. package/dist/assembly/skin-palette-owner.d.ts +8 -0
  41. package/dist/assembly/skin-palette-owner.d.ts.map +1 -0
  42. package/dist/assembly/ssr-shader-prewarm.d.ts +6 -0
  43. package/dist/assembly/ssr-shader-prewarm.d.ts.map +1 -0
  44. package/dist/assembly/webgpu-device-loss.d.ts +15 -0
  45. package/dist/assembly/webgpu-device-loss.d.ts.map +1 -0
  46. package/dist/assembly/webgpu-pbr-ready.d.ts +38 -0
  47. package/dist/assembly/webgpu-pbr-ready.d.ts.map +1 -0
  48. package/dist/assembly/webgpu-ready-mipmap.d.ts +11 -0
  49. package/dist/assembly/webgpu-ready-mipmap.d.ts.map +1 -0
  50. package/dist/assembly/webgpu-ready.d.ts +7 -3
  51. package/dist/assembly/webgpu-ready.d.ts.map +1 -1
  52. package/dist/assembly/webgpu-renderer-bootstrap.d.ts +10 -0
  53. package/dist/assembly/webgpu-renderer-bootstrap.d.ts.map +1 -0
  54. package/dist/assembly/webgpu-renderer-contract.d.ts +62 -0
  55. package/dist/assembly/webgpu-renderer-contract.d.ts.map +1 -0
  56. package/dist/assembly/webgpu-renderer-guards.d.ts +9 -0
  57. package/dist/assembly/webgpu-renderer-guards.d.ts.map +1 -0
  58. package/dist/assembly/webgpu-renderer-observation.d.ts +6 -0
  59. package/dist/assembly/webgpu-renderer-observation.d.ts.map +1 -0
  60. package/dist/assembly/webgpu-renderer-recovery-failure.d.ts +12 -0
  61. package/dist/assembly/webgpu-renderer-recovery-failure.d.ts.map +1 -0
  62. package/dist/assembly/webgpu-renderer.d.ts +7 -141
  63. package/dist/assembly/webgpu-renderer.d.ts.map +1 -1
  64. package/dist/assembly/webgpu-vertex-layouts.d.ts +28 -84
  65. package/dist/assembly/webgpu-vertex-layouts.d.ts.map +1 -1
  66. package/dist/authoring.mjs +2 -2
  67. package/dist/capture/scene-projection.d.ts +41 -0
  68. package/dist/capture/scene-projection.d.ts.map +1 -0
  69. package/dist/{chunk-J52NMQKR.mjs → chunk-7MQ3XBSP.mjs} +1098 -844
  70. package/dist/chunk-7MQ3XBSP.mjs.map +1 -0
  71. package/dist/{chunk-GF523LHF.mjs → chunk-BLXGONR2.mjs} +30 -12
  72. package/dist/chunk-BLXGONR2.mjs.map +1 -0
  73. package/dist/{chunk-VSL23LZE.mjs → chunk-C3DDSXYK.mjs} +1188 -463
  74. package/dist/chunk-C3DDSXYK.mjs.map +1 -0
  75. package/dist/{chunk-IQMKJLNU.mjs → chunk-FUUO4UND.mjs} +443 -30
  76. package/dist/chunk-FUUO4UND.mjs.map +1 -0
  77. package/dist/{chunk-J6KACNOH.mjs → chunk-JRBDO2KB.mjs} +617 -7
  78. package/dist/chunk-JRBDO2KB.mjs.map +1 -0
  79. package/dist/{chunk-GE3SDD72.mjs → chunk-MDQJPY3T.mjs} +20 -40
  80. package/dist/chunk-MDQJPY3T.mjs.map +1 -0
  81. package/dist/{chunk-MYJ5RPJO.mjs → chunk-NO4WZCAH.mjs} +3 -3
  82. package/dist/chunk-NO4WZCAH.mjs.map +1 -0
  83. package/dist/{chunk-RBDBZ5R7.mjs → chunk-PA5DRJNI.mjs} +2 -2
  84. package/dist/chunk-PA5DRJNI.mjs.map +1 -0
  85. package/dist/{chunk-MBU4ZVE7.mjs → chunk-PSEQ6QPH.mjs} +4655 -892
  86. package/dist/chunk-PSEQ6QPH.mjs.map +1 -0
  87. package/dist/{chunk-JAASCMXA.mjs → chunk-S5UE2T5P.mjs} +289 -41
  88. package/dist/chunk-S5UE2T5P.mjs.map +1 -0
  89. package/dist/components/camera.d.ts +62 -2
  90. package/dist/components/camera.d.ts.map +1 -1
  91. package/dist/components/directional-light.d.ts +2 -2
  92. package/dist/components/dynamic-resolution.d.ts +15 -0
  93. package/dist/components/dynamic-resolution.d.ts.map +1 -0
  94. package/dist/components/index.d.ts +2 -0
  95. package/dist/components/index.d.ts.map +1 -1
  96. package/dist/components/instances.d.ts +6 -20
  97. package/dist/components/instances.d.ts.map +1 -1
  98. package/dist/components/light-helpers.d.ts.map +1 -1
  99. package/dist/components/reflection-probe.d.ts +1 -0
  100. package/dist/components/reflection-probe.d.ts.map +1 -1
  101. package/dist/components/scene-instance.d.ts +2 -1
  102. package/dist/components/scene-instance.d.ts.map +1 -1
  103. package/dist/components/screen-space-reflection.d.ts +14 -0
  104. package/dist/components/screen-space-reflection.d.ts.map +1 -0
  105. package/dist/components/skylight.d.ts +4 -1
  106. package/dist/components/skylight.d.ts.map +1 -1
  107. package/dist/construct-renderer.mjs +14809 -7570
  108. package/dist/construct-renderer.mjs.map +1 -1
  109. package/dist/device/device-scope.d.ts +2 -0
  110. package/dist/device/device-scope.d.ts.map +1 -1
  111. package/dist/device/gpu-residency.d.ts +3 -14
  112. package/dist/device/gpu-residency.d.ts.map +1 -1
  113. package/dist/dynamic-geometry.d.ts.map +1 -1
  114. package/dist/environment/background.d.ts +7 -0
  115. package/dist/environment/background.d.ts.map +1 -0
  116. package/dist/environment/ibl.d.ts +11 -0
  117. package/dist/environment/ibl.d.ts.map +1 -0
  118. package/dist/environment/storage.d.ts +14 -0
  119. package/dist/environment/storage.d.ts.map +1 -0
  120. package/dist/errors/gpu-driven.d.ts +6 -3
  121. package/dist/errors/gpu-driven.d.ts.map +1 -1
  122. package/dist/errors/render.d.ts +41 -4
  123. package/dist/errors/render.d.ts.map +1 -1
  124. package/dist/extract/camera.d.ts.map +1 -1
  125. package/dist/extract/contracts.d.ts +7 -0
  126. package/dist/extract/contracts.d.ts.map +1 -1
  127. package/dist/extract/gpu-driven.d.ts +50 -3
  128. package/dist/extract/gpu-driven.d.ts.map +1 -1
  129. package/dist/features/host.d.ts +23 -1
  130. package/dist/features/host.d.ts.map +1 -1
  131. package/dist/features/noise-texture.d.ts +17 -0
  132. package/dist/features/noise-texture.d.ts.map +1 -0
  133. package/dist/features/plan.d.ts +83 -2
  134. package/dist/features/plan.d.ts.map +1 -1
  135. package/dist/features/prepared-gpu-work.d.ts +37 -4
  136. package/dist/features/prepared-gpu-work.d.ts.map +1 -1
  137. package/dist/features/prepared-graphics-store.d.ts.map +1 -1
  138. package/dist/features/prepared-graphics.d.ts +5 -0
  139. package/dist/features/prepared-graphics.d.ts.map +1 -1
  140. package/dist/features/render-graph-compute.d.ts +5 -3
  141. package/dist/features/render-graph-compute.d.ts.map +1 -1
  142. package/dist/features/render-graph-contribution.d.ts +11 -3
  143. package/dist/features/render-graph-contribution.d.ts.map +1 -1
  144. package/dist/features/render-graph-raster.d.ts +19 -3
  145. package/dist/features/render-graph-raster.d.ts.map +1 -1
  146. package/dist/features/types.d.ts +11 -0
  147. package/dist/features/types.d.ts.map +1 -1
  148. package/dist/fullscreen-post-process-pass.d.ts +2 -0
  149. package/dist/fullscreen-post-process-pass.d.ts.map +1 -1
  150. package/dist/gpu-driven/batch-topology.d.ts +34 -1
  151. package/dist/gpu-driven/batch-topology.d.ts.map +1 -1
  152. package/dist/gpu-driven/material-artifacts.d.ts +24 -0
  153. package/dist/gpu-driven/material-artifacts.d.ts.map +1 -0
  154. package/dist/gpu-driven/material-bindings.d.ts +7 -0
  155. package/dist/gpu-driven/material-bindings.d.ts.map +1 -0
  156. package/dist/gpu-driven/pbr-program.d.ts +10 -0
  157. package/dist/gpu-driven/pbr-program.d.ts.map +1 -0
  158. package/dist/gpu-driven/prepared-draw.d.ts +2 -0
  159. package/dist/gpu-driven/prepared-draw.d.ts.map +1 -1
  160. package/dist/gpu-driven/production-raster.d.ts +169 -27
  161. package/dist/gpu-driven/production-raster.d.ts.map +1 -1
  162. package/dist/gpu-driven/shadow-views.d.ts +126 -0
  163. package/dist/gpu-driven/shadow-views.d.ts.map +1 -0
  164. package/dist/gpu-driven/view-gpu.d.ts +18 -2
  165. package/dist/gpu-driven/view-gpu.d.ts.map +1 -1
  166. package/dist/gpu-resource.d.ts +5 -2
  167. package/dist/gpu-resource.d.ts.map +1 -1
  168. package/dist/gpu-scene-schema.d.ts +2 -8
  169. package/dist/gpu-scene-schema.d.ts.map +1 -1
  170. package/dist/gpu-scene.d.ts +14 -0
  171. package/dist/gpu-scene.d.ts.map +1 -1
  172. package/dist/gpu-texture-usage.d.ts +1 -0
  173. package/dist/gpu-texture-usage.d.ts.map +1 -1
  174. package/dist/hdrp-buffers.d.ts +9 -0
  175. package/dist/hdrp-buffers.d.ts.map +1 -1
  176. package/dist/ibl/IblPipelineCache.d.ts +2 -0
  177. package/dist/ibl/IblPipelineCache.d.ts.map +1 -1
  178. package/dist/ibl/frame-resources.d.ts +8 -0
  179. package/dist/ibl/frame-resources.d.ts.map +1 -0
  180. package/dist/ibl/skylight-bind-group.d.ts +3 -1
  181. package/dist/ibl/skylight-bind-group.d.ts.map +1 -1
  182. package/dist/index.d.ts +87 -75
  183. package/dist/index.d.ts.map +1 -1
  184. package/dist/index.mjs +10 -8
  185. package/dist/index.mjs.map +1 -1
  186. package/dist/inspection-types.d.ts +180 -1
  187. package/dist/inspection-types.d.ts.map +1 -1
  188. package/dist/instances-derived-bounds.d.ts +11 -0
  189. package/dist/instances-derived-bounds.d.ts.map +1 -1
  190. package/dist/instances.d.ts +89 -44
  191. package/dist/instances.d.ts.map +1 -1
  192. package/dist/internal.d.ts +3 -0
  193. package/dist/internal.d.ts.map +1 -1
  194. package/dist/internal.mjs +117 -9
  195. package/dist/internal.mjs.map +1 -1
  196. package/dist/lifecycle.d.ts +2 -1
  197. package/dist/lifecycle.d.ts.map +1 -1
  198. package/dist/material-row.d.ts +15 -0
  199. package/dist/material-row.d.ts.map +1 -0
  200. package/dist/materials.d.ts +15 -0
  201. package/dist/materials.d.ts.map +1 -1
  202. package/dist/pbr-pipeline.d.ts +23 -5
  203. package/dist/pbr-pipeline.d.ts.map +1 -1
  204. package/dist/pipeline/render-extent.d.ts +51 -0
  205. package/dist/pipeline/render-extent.d.ts.map +1 -0
  206. package/dist/pipeline/standard-build-context.d.ts +7 -0
  207. package/dist/pipeline/standard-build-context.d.ts.map +1 -0
  208. package/dist/pipeline/standard-forward-lane.d.ts +3 -2
  209. package/dist/pipeline/standard-forward-lane.d.ts.map +1 -1
  210. package/dist/pipeline/standard-output/auto-exposure/capability.d.ts +12 -0
  211. package/dist/pipeline/standard-output/auto-exposure/capability.d.ts.map +1 -0
  212. package/dist/pipeline/standard-output/auto-exposure/gpu.d.ts +70 -0
  213. package/dist/pipeline/standard-output/auto-exposure/gpu.d.ts.map +1 -0
  214. package/dist/pipeline/standard-output/auto-exposure/graph.d.ts +75 -0
  215. package/dist/pipeline/standard-output/auto-exposure/graph.d.ts.map +1 -0
  216. package/dist/pipeline/standard-output/auto-exposure/inspection.d.ts +111 -0
  217. package/dist/pipeline/standard-output/auto-exposure/inspection.d.ts.map +1 -0
  218. package/dist/pipeline/standard-output/auto-exposure/oracle.d.ts +16 -0
  219. package/dist/pipeline/standard-output/auto-exposure/oracle.d.ts.map +1 -0
  220. package/dist/pipeline/standard-output/auto-exposure/preset.d.ts +14 -0
  221. package/dist/pipeline/standard-output/auto-exposure/preset.d.ts.map +1 -0
  222. package/dist/pipeline/standard-output/auto-exposure/state.d.ts +46 -0
  223. package/dist/pipeline/standard-output/auto-exposure/state.d.ts.map +1 -0
  224. package/dist/pipeline/standard-output/color-transform.d.ts +27 -0
  225. package/dist/pipeline/standard-output/color-transform.d.ts.map +1 -0
  226. package/dist/pipeline/standard-output/graph.d.ts +15 -0
  227. package/dist/pipeline/standard-output/graph.d.ts.map +1 -0
  228. package/dist/pipeline/standard-output/lut-admission.d.ts +29 -0
  229. package/dist/pipeline/standard-output/lut-admission.d.ts.map +1 -0
  230. package/dist/pipeline/standard-output/lut-gpu.d.ts +48 -0
  231. package/dist/pipeline/standard-output/lut-gpu.d.ts.map +1 -0
  232. package/dist/pipeline/standard-output/lut-state.d.ts +68 -0
  233. package/dist/pipeline/standard-output/lut-state.d.ts.map +1 -0
  234. package/dist/pipeline/standard-output/resources.d.ts +10 -0
  235. package/dist/pipeline/standard-output/resources.d.ts.map +1 -0
  236. package/dist/pipeline/standard-output/types.d.ts +39 -0
  237. package/dist/pipeline/standard-output/types.d.ts.map +1 -0
  238. package/dist/pipeline/standard-pipeline.d.ts.map +1 -1
  239. package/dist/pipeline/standard-post.d.ts +2 -2
  240. package/dist/pipeline/standard-post.d.ts.map +1 -1
  241. package/dist/pipeline/standard-profile.d.ts +2 -1
  242. package/dist/pipeline/standard-profile.d.ts.map +1 -1
  243. package/dist/pipeline-builder.d.ts +5 -2
  244. package/dist/pipeline-builder.d.ts.map +1 -1
  245. package/dist/pipeline-spec-types.d.ts +4 -0
  246. package/dist/pipeline-spec-types.d.ts.map +1 -1
  247. package/dist/pipeline-spec.d.ts +1 -9
  248. package/dist/pipeline-spec.d.ts.map +1 -1
  249. package/dist/plugin.d.ts.map +1 -1
  250. package/dist/points-lines/standard-owner.d.ts +1 -1
  251. package/dist/points-lines/standard-owner.d.ts.map +1 -1
  252. package/dist/post-process-errors.d.ts +9 -2
  253. package/dist/post-process-errors.d.ts.map +1 -1
  254. package/dist/prepare/extended-lighting/resources.d.ts +3 -3
  255. package/dist/prepare/prepared-graphics-resolver.d.ts +6 -1
  256. package/dist/prepare/prepared-graphics-resolver.d.ts.map +1 -1
  257. package/dist/record/dynamic-geometry-consumption.d.ts +15 -0
  258. package/dist/record/dynamic-geometry-consumption.d.ts.map +1 -0
  259. package/dist/record/frame-lighting.d.ts +3 -3
  260. package/dist/record/frame-lighting.d.ts.map +1 -1
  261. package/dist/record/frame-snapshot.d.ts +109 -13
  262. package/dist/record/frame-snapshot.d.ts.map +1 -1
  263. package/dist/record/frame-targets.d.ts.map +1 -1
  264. package/dist/record/frame.d.ts +41 -5
  265. package/dist/record/frame.d.ts.map +1 -1
  266. package/dist/record/main-pass-geometry.d.ts +13 -9
  267. package/dist/record/main-pass-geometry.d.ts.map +1 -1
  268. package/dist/record/main-pass-material.d.ts +43 -3
  269. package/dist/record/main-pass-material.d.ts.map +1 -1
  270. package/dist/record/main-pass-sprite-draws.d.ts +2 -10
  271. package/dist/record/main-pass-sprite-draws.d.ts.map +1 -1
  272. package/dist/record/main-pass.d.ts +14 -2
  273. package/dist/record/main-pass.d.ts.map +1 -1
  274. package/dist/record/mesh-ssbo.d.ts +15 -6
  275. package/dist/record/mesh-ssbo.d.ts.map +1 -1
  276. package/dist/record/prepared-material-bindings.d.ts +19 -0
  277. package/dist/record/prepared-material-bindings.d.ts.map +1 -0
  278. package/dist/record/recovery-pipeline.d.ts +1 -0
  279. package/dist/record/recovery-pipeline.d.ts.map +1 -1
  280. package/dist/record/render-context.d.ts +101 -22
  281. package/dist/record/render-context.d.ts.map +1 -1
  282. package/dist/record/shadow-pass.d.ts +62 -7
  283. package/dist/record/shadow-pass.d.ts.map +1 -1
  284. package/dist/record/skybox-post-pass.d.ts +1 -1
  285. package/dist/record/skybox-post-pass.d.ts.map +1 -1
  286. package/dist/record/typed-frame-graph.d.ts +39 -8
  287. package/dist/record/typed-frame-graph.d.ts.map +1 -1
  288. package/dist/record/view-ubo.d.ts +1 -0
  289. package/dist/record/view-ubo.d.ts.map +1 -1
  290. package/dist/recovery/render-system-candidate.d.ts +10 -2
  291. package/dist/recovery/render-system-candidate.d.ts.map +1 -1
  292. package/dist/recovery/render-system-roots.d.ts +11 -0
  293. package/dist/recovery/render-system-roots.d.ts.map +1 -0
  294. package/dist/recovery/types.d.ts +76 -0
  295. package/dist/recovery/types.d.ts.map +1 -0
  296. package/dist/reflection/background.d.ts +14 -0
  297. package/dist/reflection/background.d.ts.map +1 -0
  298. package/dist/reflection/filter.d.ts.map +1 -1
  299. package/dist/reflection/projection.d.ts +1 -0
  300. package/dist/reflection/projection.d.ts.map +1 -1
  301. package/dist/reflection/record-owner.d.ts +4 -4
  302. package/dist/reflection/record-owner.d.ts.map +1 -1
  303. package/dist/render-contract.d.ts +211 -53
  304. package/dist/render-contract.d.ts.map +1 -1
  305. package/dist/render-graph-primitives.d.ts +1 -0
  306. package/dist/render-graph-primitives.d.ts.map +1 -1
  307. package/dist/render-pipeline.d.ts +81 -6
  308. package/dist/render-pipeline.d.ts.map +1 -1
  309. package/dist/render-system-extract-tail.d.ts +15 -6
  310. package/dist/render-system-extract-tail.d.ts.map +1 -1
  311. package/dist/render-system-extract.d.ts +128 -41
  312. package/dist/render-system-extract.d.ts.map +1 -1
  313. package/dist/render-system-projections.d.ts +22 -0
  314. package/dist/render-system-projections.d.ts.map +1 -0
  315. package/dist/render-system.d.ts +27 -77
  316. package/dist/render-system.d.ts.map +1 -1
  317. package/dist/scene/render-scene-types.d.ts +14 -7
  318. package/dist/scene/render-scene-types.d.ts.map +1 -1
  319. package/dist/scene/render-scene.d.ts +31 -11
  320. package/dist/scene/render-scene.d.ts.map +1 -1
  321. package/dist/scene/shadow-visibility.d.ts +5 -0
  322. package/dist/scene/shadow-visibility.d.ts.map +1 -0
  323. package/dist/ssao-config.d.ts +8 -6
  324. package/dist/ssao-config.d.ts.map +1 -1
  325. package/dist/ssr/admission.d.ts +70 -1
  326. package/dist/ssr/admission.d.ts.map +1 -1
  327. package/dist/ssr/compose.d.ts +13 -0
  328. package/dist/ssr/compose.d.ts.map +1 -0
  329. package/dist/ssr/errors.d.ts +35 -0
  330. package/dist/ssr/errors.d.ts.map +1 -1
  331. package/dist/ssr/graph.d.ts +60 -0
  332. package/dist/ssr/graph.d.ts.map +1 -0
  333. package/dist/ssr/history.d.ts +97 -0
  334. package/dist/ssr/history.d.ts.map +1 -0
  335. package/dist/ssr/hiz.d.ts +37 -0
  336. package/dist/ssr/hiz.d.ts.map +1 -0
  337. package/dist/ssr/inspection.d.ts +42 -0
  338. package/dist/ssr/inspection.d.ts.map +1 -0
  339. package/dist/ssr/resources.d.ts +58 -0
  340. package/dist/ssr/resources.d.ts.map +1 -0
  341. package/dist/ssr/temporal.d.ts +38 -0
  342. package/dist/ssr/temporal.d.ts.map +1 -0
  343. package/dist/systems/skin-palette-allocator.d.ts +32 -10
  344. package/dist/systems/skin-palette-allocator.d.ts.map +1 -1
  345. package/dist/systems/skin-palette-types.d.ts +15 -0
  346. package/dist/systems/skin-palette-types.d.ts.map +1 -1
  347. package/dist/systems/transparent-dispatch.d.ts +9 -0
  348. package/dist/systems/transparent-dispatch.d.ts.map +1 -0
  349. package/dist/targets/material-source.d.ts +7 -0
  350. package/dist/targets/material-source.d.ts.map +1 -1
  351. package/dist/temporal/frame-coordinator.d.ts +7 -0
  352. package/dist/temporal/frame-coordinator.d.ts.map +1 -1
  353. package/dist/temporal/gpu.d.ts +8 -0
  354. package/dist/temporal/gpu.d.ts.map +1 -1
  355. package/dist/temporal/history.d.ts.map +1 -1
  356. package/dist/temporal/index.mjs +6 -6
  357. package/dist/temporal/inspection.d.ts.map +1 -1
  358. package/dist/temporal/standard-scene-data.d.ts +4 -2
  359. package/dist/temporal/standard-scene-data.d.ts.map +1 -1
  360. package/dist/temporal/target-coverage-attachment.d.ts +15 -0
  361. package/dist/temporal/target-coverage-attachment.d.ts.map +1 -0
  362. package/dist/temporal/temporal-view.d.ts +6 -0
  363. package/dist/temporal/temporal-view.d.ts.map +1 -1
  364. package/dist/temporal/view.d.ts +6 -0
  365. package/dist/temporal/view.d.ts.map +1 -1
  366. package/dist/typed-render-graph-primitives.d.ts +41 -1
  367. package/dist/typed-render-graph-primitives.d.ts.map +1 -1
  368. package/dist/typed-shadow-passes.d.ts +3 -1
  369. package/dist/typed-shadow-passes.d.ts.map +1 -1
  370. package/dist/volume/component.d.ts +1 -0
  371. package/dist/volume/component.d.ts.map +1 -1
  372. package/dist/volume/temporal.d.ts +6 -0
  373. package/dist/volume/temporal.d.ts.map +1 -1
  374. package/package.json +21 -20
  375. package/src/__tests__/auto-exposure-gpu-evidence.ts +291 -0
  376. package/src/__tests__/auto-exposure-inspection.unit.test.ts +80 -0
  377. package/src/__tests__/auto-exposure-transaction.integration.test.ts +99 -0
  378. package/src/__tests__/auto-exposure.browser.test.ts +33 -0
  379. package/src/__tests__/auto-exposure.dawn.test.ts +33 -0
  380. package/src/__tests__/capture-scene-projection.unit.test.ts +24 -0
  381. package/src/__tests__/detached-inspection.integration.test.ts +5 -0
  382. package/src/__tests__/device-feature-admission.unit.test.ts +15 -24
  383. package/src/__tests__/device-loss-fanout.unit.test.ts +43 -0
  384. package/src/__tests__/device-scope-lifecycle.unit.test.ts +18 -0
  385. package/src/__tests__/device-scope-stale-matrix.unit.test.ts +18 -0
  386. package/src/__tests__/docs-gate-green.unit.test.ts +3 -3
  387. package/src/__tests__/dynamic-geometry-batch.unit.test.ts +157 -0
  388. package/src/__tests__/dynamic-geometry.unit.test.ts +36 -0
  389. package/src/__tests__/dynamic-resolution-plugin.integration.test.ts +81 -0
  390. package/src/__tests__/factory-contract.integration.test.ts +231 -9
  391. package/src/__tests__/fallback-row-stride-surface.unit.test.ts +19 -0
  392. package/src/__tests__/feature-depth-input.dawn.test.ts +121 -0
  393. package/src/__tests__/feature-noise.unit.test.ts +38 -0
  394. package/src/__tests__/fixtures/taa-resolve-pinned-baseline.wgsl +301 -0
  395. package/src/__tests__/frame-camera-selection.unit.test.ts +131 -0
  396. package/src/__tests__/frame-observation.contract.test.ts +21 -0
  397. package/src/__tests__/frame-plan-contract.unit.test.ts +24 -0
  398. package/src/__tests__/frame-targets.unit.test.ts +24 -0
  399. package/src/__tests__/fullscreen-feature-plan.unit.test.ts +3 -0
  400. package/src/__tests__/gpu-driven-baseline.characterization.test.ts +79 -0
  401. package/src/__tests__/gpu-driven-batch-topology-pbr.unit.test.ts +307 -7
  402. package/src/__tests__/gpu-driven-indirect-raster-evidence.ts +122 -142
  403. package/src/__tests__/gpu-driven-indirect-raster.browser.test.ts +10 -1
  404. package/src/__tests__/gpu-driven-lod-cache.unit.test.ts +261 -0
  405. package/src/__tests__/gpu-driven-mesh-world-identity.unit.test.ts +346 -0
  406. package/src/__tests__/gpu-driven-pbr.dawn.test.ts +1422 -0
  407. package/src/__tests__/gpu-driven-pbr.integration.test.ts +21 -0
  408. package/src/__tests__/gpu-driven-production-fixture.ts +96 -0
  409. package/src/__tests__/gpu-driven-production.integration.test.ts +1076 -106
  410. package/src/__tests__/gpu-driven-scaling.unit.test.ts +1 -3
  411. package/src/__tests__/gpu-driven-shadow-views.browser.test.ts +63 -0
  412. package/src/__tests__/gpu-driven-shadow-views.dawn.test.ts +294 -0
  413. package/src/__tests__/gpu-driven-shadow-views.integration.test.ts +97 -0
  414. package/src/__tests__/gpu-driven-shadow-views.unit.test.ts +168 -0
  415. package/src/__tests__/gpu-driven-skin-contract.test-d.ts +11 -0
  416. package/src/__tests__/gpu-driven-view-gpu-evidence.ts +72 -20
  417. package/src/__tests__/gpu-driven-view-graph.integration.test.ts +30 -9
  418. package/src/__tests__/gpu-driven-view.unit.test.ts +160 -52
  419. package/src/__tests__/gpu-pass-timing-browser-runner.ts +15 -0
  420. package/src/__tests__/gpu-pass-timing.browser.test.ts +20 -2
  421. package/src/__tests__/gpu-resource-scope.unit.test.ts +71 -0
  422. package/src/__tests__/gpu-resource-store-stride.unit.test.ts +42 -0
  423. package/src/__tests__/gpu-scene-render-graph-gpu.ts +19 -5
  424. package/src/__tests__/gpu-scene.dawn.test.ts +40 -13
  425. package/src/__tests__/gpu-scene.unit.test.ts +613 -33
  426. package/src/__tests__/instances-culling.integration.test.ts +36 -10
  427. package/src/__tests__/instances-derived-bounds.unit.test.ts +54 -0
  428. package/src/__tests__/instances-store.unit.test.ts +242 -39
  429. package/src/__tests__/ktx2-basis-gpu-consumer.dawn.test.ts +6 -0
  430. package/src/__tests__/lighting-scene-roundtrip.integration.test.ts +13 -16
  431. package/src/__tests__/lut-lkg-transaction.integration.test.ts +122 -0
  432. package/src/__tests__/material-contract-inventory.unit.test.ts +5 -6
  433. package/src/__tests__/material-dispatch-shader-id.unit.test.ts +51 -0
  434. package/src/__tests__/material-lane-selection.unit.test.ts +60 -0
  435. package/src/__tests__/material-numeric-upload.unit.test.ts +53 -0
  436. package/src/__tests__/material-texture-handles.unit.test.ts +18 -0
  437. package/src/__tests__/material-texture-source.unit.test.ts +87 -0
  438. package/src/__tests__/materials-authoring-validation.unit.test.ts +41 -0
  439. package/src/__tests__/materials-standard-contract.unit.test.ts +57 -3
  440. package/src/__tests__/mesh-buffer-usage-surface.unit.test.ts +4 -0
  441. package/src/__tests__/mesh-submission-lifetime.unit.test.ts +8 -0
  442. package/src/__tests__/morph-neutral-admission.unit.test.ts +19 -0
  443. package/src/__tests__/normal-fallback.dawn.test.ts +122 -0
  444. package/src/__tests__/particle-material-input-layout.unit.test.ts +104 -0
  445. package/src/__tests__/physical-clearcoat.integration.test.ts +42 -3
  446. package/src/__tests__/pipeline-texture-specialization.unit.test.ts +138 -0
  447. package/src/__tests__/point-shadow-inspection.unit.test.ts +2 -0
  448. package/src/__tests__/post-process-error-policy-owner.unit.test.ts +6 -5
  449. package/src/__tests__/prepared-gpu-driven-pbr-contract.test-d.ts +31 -0
  450. package/src/__tests__/prepared-gpu-driven-pbr-contract.unit.test.ts +39 -0
  451. package/src/__tests__/prepared-gpu-driven-pbr.integration.test.ts +251 -9
  452. package/src/__tests__/prepared-graphics-capability.unit.test.ts +21 -0
  453. package/src/__tests__/prepared-graphics-pipeline-warmup.unit.test.ts +6 -2
  454. package/src/__tests__/profiler-phase-catalog.test.ts +5 -0
  455. package/src/__tests__/public-surface.test-d.ts +3 -0
  456. package/src/__tests__/recovery-candidate-prepare.contract.test.ts +30 -12
  457. package/src/__tests__/reflection-fallback-async-publication.unit.test.ts +171 -0
  458. package/src/__tests__/reflection-probe-authoring.unit.test.ts +12 -10
  459. package/src/__tests__/reflection-probe-box.dawn.test.ts +71 -0
  460. package/src/__tests__/reflection-probe-filter.unit.test.ts +9 -0
  461. package/src/__tests__/reflection-probe-orientation.dawn.test.ts +294 -0
  462. package/src/__tests__/reflection-probe-record-owner.characterization.unit.test.ts +5 -14
  463. package/src/__tests__/reflection-probe-updates.unit.test.ts +129 -0
  464. package/src/__tests__/render-error-code-owner.test-d.ts +7 -0
  465. package/src/__tests__/render-error-detail-ssot.test-d.ts +27 -1
  466. package/src/__tests__/render-error-exhaustive.test-d.ts +15 -0
  467. package/src/__tests__/render-extent.unit.test.ts +63 -0
  468. package/src/__tests__/render-feature-gpu-work.integration.test.ts +285 -2
  469. package/src/__tests__/render-feature-plan.unit.test.ts +245 -0
  470. package/src/__tests__/render-feature-shadow-order.unit.test.ts +228 -0
  471. package/src/__tests__/render-feature-zero-work.unit.test.ts +35 -1
  472. package/src/__tests__/render-graph-fallback.integration.test.ts +2 -2
  473. package/src/__tests__/render-owner-cohesion.unit.test.ts +55 -0
  474. package/src/__tests__/render-scene-mixed-updates.integration.test.ts +426 -0
  475. package/src/__tests__/render-scene-projection.unit.test.ts +915 -23
  476. package/src/__tests__/render-scene-resource-updates.integration.test.ts +214 -0
  477. package/src/__tests__/render-scene-skin-lifecycle.integration.test.ts +173 -0
  478. package/src/__tests__/render-scene-temporal-retry.unit.test.ts +133 -0
  479. package/src/__tests__/render-target-material-source.test-d.ts +27 -3
  480. package/src/__tests__/renderer-factory-material-contract.unit.test.ts +233 -9
  481. package/src/__tests__/renderer-frame-transaction.integration.test.ts +923 -5
  482. package/src/__tests__/shader-manifest-fixture.ts +45 -0
  483. package/src/__tests__/skin-motion-regression.unit.test.ts +0 -33
  484. package/src/__tests__/skin-palette-persistent.integration.test.ts +28 -0
  485. package/src/__tests__/skin-palette-persistent.unit.test.ts +247 -0
  486. package/src/__tests__/skinned-shadow-caster.test.ts +125 -14
  487. package/src/__tests__/specular-environment-scale.dawn.test.ts +158 -0
  488. package/src/__tests__/ssao-config.unit.test.ts +7 -0
  489. package/src/__tests__/ssao-surface.dawn.test.ts +252 -0
  490. package/src/__tests__/ssr-admission-matrix.integration.test.ts +7 -1
  491. package/src/__tests__/ssr-confidence-compose.unit.test.ts +84 -0
  492. package/src/__tests__/ssr-coordinate-oracle.unit.test.ts +28 -0
  493. package/src/__tests__/ssr-cube-silhouette.dawn.test.ts +270 -0
  494. package/src/__tests__/ssr-format-probe-gating.integration.test.ts +82 -0
  495. package/src/__tests__/ssr-gpu-dispatch.browser.test.ts +99 -0
  496. package/src/__tests__/ssr-gpu-dispatch.dawn.test.ts +116 -0
  497. package/src/__tests__/ssr-gpu-dispatch.ts +951 -0
  498. package/src/__tests__/ssr-graph-topology.unit.test.ts +104 -0
  499. package/src/__tests__/ssr-history-filter.dawn.test.ts +198 -0
  500. package/src/__tests__/ssr-hit-color.dawn.test.ts +273 -0
  501. package/src/__tests__/ssr-hiz-odd-reduction.dawn.test.ts +569 -0
  502. package/src/__tests__/ssr-hiz-rescue.dawn.test.ts +279 -0
  503. package/src/__tests__/ssr-hiz.browser.test.ts +150 -0
  504. package/src/__tests__/ssr-hiz.dawn.test.ts +150 -0
  505. package/src/__tests__/ssr-hiz.unit.test.ts +56 -0
  506. package/src/__tests__/ssr-inspection.unit.test.ts +105 -0
  507. package/src/__tests__/ssr-memory-budget.unit.test.ts +45 -0
  508. package/src/__tests__/ssr-performance-sequence-aggregation.unit.test.ts +15 -0
  509. package/src/__tests__/ssr-public-surface.test-d.ts +37 -0
  510. package/src/__tests__/ssr-receiver-coverage.dawn.test.ts +387 -0
  511. package/src/__tests__/ssr-reflection-mip-reducer.dawn.test.ts +309 -0
  512. package/src/__tests__/ssr-reprojection-probe.ts +90 -0
  513. package/src/__tests__/ssr-roughness-mip.dawn.test.ts +163 -0
  514. package/src/__tests__/ssr-shader-prewarm.unit.test.ts +59 -0
  515. package/src/__tests__/ssr-spatial.integration.test.ts +141 -0
  516. package/src/__tests__/ssr-stable-lattice.dawn.test.ts +475 -0
  517. package/src/__tests__/ssr-temporal-history.unit.test.ts +202 -0
  518. package/src/__tests__/ssr-texel-crossing.dawn.test.ts +448 -0
  519. package/src/__tests__/ssr-zero-work.integration.test.ts +87 -0
  520. package/src/__tests__/standard-cluster-variant-resolution.unit.test.ts +84 -12
  521. package/src/__tests__/standard-clustered-pipeline.unit.test.ts +29 -0
  522. package/src/__tests__/standard-output-chain-contract.unit.test.ts +99 -0
  523. package/src/__tests__/standard-output-chain.integration.test.ts +73 -0
  524. package/src/__tests__/standard-output-gpu-evidence.ts +205 -0
  525. package/src/__tests__/standard-output.browser.test.ts +15 -0
  526. package/src/__tests__/standard-output.dawn.test.ts +15 -0
  527. package/src/__tests__/standard-pbr-artifact-assembly.unit.test.ts +275 -0
  528. package/src/__tests__/standard-pipeline.integration.test.ts +320 -3
  529. package/src/__tests__/standard-profile-oracle.unit.test.ts +49 -0
  530. package/src/__tests__/standard-surface-lighting.unit.test.ts +41 -0
  531. package/src/__tests__/standard-texture-specialization.dawn.test.ts +141 -0
  532. package/src/__tests__/surface-adjacent-regressions.integration.test.ts +6 -3
  533. package/src/__tests__/taa-coverage-edge.dawn.test.ts +199 -0
  534. package/src/__tests__/taa-history-clipping.dawn.test.ts +328 -0
  535. package/src/__tests__/taa-neighborhood-equivalence.dawn.test.ts +782 -0
  536. package/src/__tests__/taa-stability-feedback.browser.test.ts +23 -0
  537. package/src/__tests__/taa-stability-feedback.dawn.test.ts +68 -0
  538. package/src/__tests__/taa-stability-feedback.ts +342 -0
  539. package/src/__tests__/temporal-history-lifecycle.unit.test.ts +49 -7
  540. package/src/__tests__/temporal-reset-matrix.unit.test.ts +9 -0
  541. package/src/__tests__/temporal-transaction.integration.test.ts +28 -0
  542. package/src/__tests__/temporal-view.unit.test.ts +17 -0
  543. package/src/__tests__/texture-usage-surface.unit.test.ts +4 -2
  544. package/src/__tests__/transmission-prewarm.unit.test.ts +57 -0
  545. package/src/__tests__/typed-pipeline-topology.unit.test.ts +109 -4
  546. package/src/__tests__/typed-scene-pass-material-cache.integration.test.ts +126 -0
  547. package/src/__tests__/vertex-layouts-ssot.unit.test.ts +47 -0
  548. package/src/__tests__/visibility-extract.perf.test.ts +20 -8
  549. package/src/__tests__/visibility-instances.integration.test.ts +19 -7
  550. package/src/__tests__/visibility-producer-matrix.integration.test.ts +20 -9
  551. package/src/__tests__/volumetric-fog-stage-readback.dawn.test.ts +62 -13
  552. package/src/__tests__/volumetric-fog-topology.unit.test.ts +7 -7
  553. package/src/assembly/atmosphere-shader-prewarm.ts +39 -0
  554. package/src/assembly/device-feature-admission.ts +9 -4
  555. package/src/assembly/dynamic-geometry-host.ts +284 -163
  556. package/src/assembly/dynamic-geometry-runtime.ts +71 -0
  557. package/src/assembly/factory.ts +4 -0
  558. package/src/assembly/gpu-driven-owner.ts +29 -0
  559. package/src/assembly/host-contract.ts +19 -0
  560. package/src/assembly/material/assembly.ts +383 -1
  561. package/src/assembly/material/pipeline-helpers.ts +100 -0
  562. package/src/assembly/material-shader-policy.ts +110 -46
  563. package/src/assembly/recovery/device-loss-fanout.ts +5 -0
  564. package/src/assembly/recovery/failure-location.ts +62 -0
  565. package/src/assembly/recovery/recovery-attempt.ts +2 -29
  566. package/src/assembly/recovery/renderer-recover.ts +16 -17
  567. package/src/assembly/renderer-facade.ts +34 -1
  568. package/src/assembly/renderer-feature-inspection.ts +13 -0
  569. package/src/assembly/renderer-frame-transaction.ts +63 -0
  570. package/src/assembly/renderer-helpers.ts +26 -0
  571. package/src/assembly/renderer-inspection.ts +6 -0
  572. package/src/assembly/shader-prewarm-policy.ts +46 -1
  573. package/src/assembly/skin-palette-owner.ts +21 -0
  574. package/src/assembly/ssr-shader-prewarm.ts +41 -0
  575. package/src/assembly/webgpu-device-loss.ts +75 -0
  576. package/src/assembly/webgpu-pbr-ready.ts +232 -0
  577. package/src/assembly/webgpu-ready-mipmap.ts +26 -0
  578. package/src/assembly/webgpu-ready.ts +161 -131
  579. package/src/assembly/webgpu-renderer-bootstrap.ts +85 -0
  580. package/src/assembly/webgpu-renderer-contract.ts +69 -0
  581. package/src/assembly/webgpu-renderer-guards.ts +32 -0
  582. package/src/assembly/webgpu-renderer-observation.ts +43 -0
  583. package/src/assembly/webgpu-renderer-recovery-failure.ts +62 -0
  584. package/src/assembly/webgpu-renderer.ts +744 -730
  585. package/src/assembly/webgpu-vertex-layouts.ts +233 -87
  586. package/src/capture/scene-projection.ts +37 -0
  587. package/src/components/__tests__/camera-exposure.contract.unit.test.ts +153 -0
  588. package/src/components/__tests__/dynamic-resolution-schema.unit.test.ts +65 -0
  589. package/src/components/__tests__/light-radius.integration.test.ts +59 -0
  590. package/src/components/camera.ts +287 -7
  591. package/src/components/directional-light.ts +3 -3
  592. package/src/components/dynamic-resolution.ts +67 -0
  593. package/src/components/index.ts +2 -0
  594. package/src/components/instances.ts +45 -18
  595. package/src/components/light-helpers.ts +6 -1
  596. package/src/components/reflection-probe.ts +1 -0
  597. package/src/components/scene-instance.ts +2 -1
  598. package/src/components/screen-space-reflection.ts +21 -0
  599. package/src/components/skylight.ts +4 -1
  600. package/src/components/sprite-animation.ts +2 -2
  601. package/src/components/sprite-instances.ts +1 -1
  602. package/src/device/device-scope.ts +13 -7
  603. package/src/device/gpu-residency.ts +45 -42
  604. package/src/dynamic-geometry.ts +13 -8
  605. package/src/environment/background.ts +281 -0
  606. package/src/environment/ibl.ts +211 -0
  607. package/src/environment/storage.ts +63 -0
  608. package/src/errors/gpu-driven.ts +49 -8
  609. package/src/errors/render.ts +91 -3
  610. package/src/extract/camera.ts +37 -1
  611. package/src/extract/contracts.ts +10 -0
  612. package/src/extract/gpu-driven.ts +240 -10
  613. package/src/features/host.ts +237 -19
  614. package/src/features/noise-texture.ts +91 -0
  615. package/src/features/plan.ts +553 -24
  616. package/src/features/prepared-gpu-work.ts +631 -49
  617. package/src/features/prepared-graphics-store.ts +31 -0
  618. package/src/features/prepared-graphics.ts +5 -0
  619. package/src/features/render-graph-compute.ts +41 -8
  620. package/src/features/render-graph-contribution.ts +141 -3
  621. package/src/features/render-graph-raster.ts +143 -30
  622. package/src/features/types.ts +11 -0
  623. package/src/fullscreen-post-process-pass.ts +3 -0
  624. package/src/gpu-driven/batch-topology.ts +452 -108
  625. package/src/gpu-driven/material-artifacts.ts +179 -0
  626. package/src/gpu-driven/material-bindings.ts +41 -0
  627. package/src/gpu-driven/pbr-program.ts +31 -0
  628. package/src/gpu-driven/prepared-draw.ts +42 -6
  629. package/src/gpu-driven/production-raster.ts +2806 -716
  630. package/src/gpu-driven/shadow-views.ts +539 -0
  631. package/src/gpu-driven/view-gpu.ts +188 -41
  632. package/src/gpu-resource.ts +21 -2
  633. package/src/gpu-scene-schema.ts +61 -11
  634. package/src/gpu-scene.ts +197 -99
  635. package/src/gpu-texture-usage.ts +1 -0
  636. package/src/hdrp-buffers.ts +141 -36
  637. package/src/ibl/IblPipelineCache.ts +5 -0
  638. package/src/ibl/frame-resources.ts +38 -0
  639. package/src/ibl/skylight-bind-group.ts +32 -21
  640. package/src/index.ts +194 -75
  641. package/src/inspection-types.ts +207 -1
  642. package/src/instances-derived-bounds.ts +258 -34
  643. package/src/instances.ts +459 -150
  644. package/src/internal.ts +22 -0
  645. package/src/lifecycle.ts +2 -0
  646. package/src/material-row.ts +194 -0
  647. package/src/materials.ts +44 -8
  648. package/src/pbr-pipeline.ts +172 -19
  649. package/src/pipeline/render-extent.ts +111 -0
  650. package/src/pipeline/standard-build-context.ts +7 -0
  651. package/src/pipeline/standard-forward-lane.ts +74 -29
  652. package/src/pipeline/standard-output/__tests__/lut-admission.unit.test.ts +103 -0
  653. package/src/pipeline/standard-output/auto-exposure/__tests__/capability.unit.test.ts +40 -0
  654. package/src/pipeline/standard-output/auto-exposure/__tests__/gpu.contract.unit.test.ts +125 -0
  655. package/src/pipeline/standard-output/auto-exposure/__tests__/graph.contract.unit.test.ts +94 -0
  656. package/src/pipeline/standard-output/auto-exposure/__tests__/oracle.test.ts +108 -0
  657. package/src/pipeline/standard-output/auto-exposure/__tests__/preset.test.ts +26 -0
  658. package/src/pipeline/standard-output/auto-exposure/capability.ts +38 -0
  659. package/src/pipeline/standard-output/auto-exposure/gpu.ts +567 -0
  660. package/src/pipeline/standard-output/auto-exposure/graph.ts +221 -0
  661. package/src/pipeline/standard-output/auto-exposure/inspection.ts +231 -0
  662. package/src/pipeline/standard-output/auto-exposure/oracle.ts +291 -0
  663. package/src/pipeline/standard-output/auto-exposure/preset.ts +28 -0
  664. package/src/pipeline/standard-output/auto-exposure/state.ts +156 -0
  665. package/src/pipeline/standard-output/color-transform.ts +124 -0
  666. package/src/pipeline/standard-output/graph.ts +139 -0
  667. package/src/pipeline/standard-output/lut-admission.ts +121 -0
  668. package/src/pipeline/standard-output/lut-gpu.ts +399 -0
  669. package/src/pipeline/standard-output/lut-state.ts +176 -0
  670. package/src/pipeline/standard-output/resources.ts +121 -0
  671. package/src/pipeline/standard-output/types.ts +58 -0
  672. package/src/pipeline/standard-pipeline.ts +232 -70
  673. package/src/pipeline/standard-post.ts +190 -27
  674. package/src/pipeline/standard-profile.ts +2 -1
  675. package/src/pipeline-builder.ts +28 -9
  676. package/src/pipeline-spec-types.ts +4 -0
  677. package/src/pipeline-spec.ts +37 -29
  678. package/src/plugin.ts +4 -0
  679. package/src/points-lines/standard-owner.ts +6 -14
  680. package/src/post-process-errors.ts +26 -18
  681. package/src/prepare/__tests__/extended-lighting-capability.unit.test.ts +2 -2
  682. package/src/prepare/extended-lighting/resources.ts +3 -3
  683. package/src/prepare/prepared-graphics-resolver.ts +9 -2
  684. package/src/record/__tests__/main-pass-geometry.unit.test.ts +68 -0
  685. package/src/record/__tests__/material-bg-cache.unit.test.ts +45 -0
  686. package/src/record/__tests__/material-slot-plan.unit.test.ts +57 -0
  687. package/src/record/__tests__/mesh-ssbo.unit.test.ts +40 -1
  688. package/src/record/__tests__/recovery-pipeline.unit.test.ts +20 -1
  689. package/src/record/__tests__/sprite-material-abi.unit.test.ts +41 -6
  690. package/src/record/__tests__/temporal-payload.unit.test.ts +2 -0
  691. package/src/record/__tests__/typed-frame-graph-plan.unit.test.ts +45 -0
  692. package/src/record/__tests__/view-ubo-layout.unit.test.ts +5 -0
  693. package/src/record/dynamic-geometry-consumption.ts +59 -0
  694. package/src/record/frame-lighting.ts +15 -12
  695. package/src/record/frame-snapshot.ts +146 -34
  696. package/src/record/frame-targets.ts +9 -0
  697. package/src/record/frame.ts +838 -170
  698. package/src/record/main-pass-geometry.ts +209 -103
  699. package/src/record/main-pass-material.ts +157 -40
  700. package/src/record/main-pass-sprite-draws.ts +16 -107
  701. package/src/record/main-pass.ts +141 -12
  702. package/src/record/material-uniforms.ts +1 -1
  703. package/src/record/mesh-ssbo.ts +59 -15
  704. package/src/record/prepared-material-bindings.ts +238 -0
  705. package/src/record/recovery-pipeline.ts +69 -90
  706. package/src/record/render-context.ts +123 -24
  707. package/src/record/shadow-pass.ts +1389 -230
  708. package/src/record/skybox-post-pass.ts +14 -3
  709. package/src/record/typed-frame-graph.ts +1064 -47
  710. package/src/record/view-ubo.ts +12 -1
  711. package/src/recovery/render-system-candidate.ts +135 -68
  712. package/src/recovery/render-system-roots.ts +113 -0
  713. package/src/recovery/types.ts +77 -0
  714. package/src/reflection/background.ts +151 -0
  715. package/src/reflection/filter.ts +3 -0
  716. package/src/reflection/projection.ts +16 -6
  717. package/src/reflection/record-owner.ts +308 -140
  718. package/src/render-contract.ts +237 -49
  719. package/src/render-graph-primitives.ts +34 -5
  720. package/src/render-pipeline.ts +90 -2
  721. package/src/render-system-extract-tail.ts +431 -162
  722. package/src/render-system-extract.ts +478 -119
  723. package/src/render-system-projections.ts +241 -0
  724. package/src/render-system.ts +715 -828
  725. package/src/scene/render-scene-types.ts +13 -4
  726. package/src/scene/render-scene.ts +577 -355
  727. package/src/scene/shadow-visibility.ts +21 -0
  728. package/src/ssao-config.ts +25 -8
  729. package/src/ssr/admission.ts +380 -14
  730. package/src/ssr/compose.ts +144 -0
  731. package/src/ssr/errors.ts +48 -0
  732. package/src/ssr/graph.ts +797 -0
  733. package/src/ssr/history.ts +436 -0
  734. package/src/ssr/hiz.ts +124 -0
  735. package/src/ssr/inspection.ts +124 -0
  736. package/src/ssr/resources.ts +202 -0
  737. package/src/ssr/temporal.ts +164 -0
  738. package/src/systems/skin-palette-allocator.ts +495 -148
  739. package/src/systems/skin-palette-types.ts +17 -0
  740. package/src/systems/transparent-dispatch.ts +90 -0
  741. package/src/targets/material-source.ts +34 -0
  742. package/src/temporal/coverage.ts +1 -1
  743. package/src/temporal/frame-coordinator.ts +23 -2
  744. package/src/temporal/gpu.ts +79 -12
  745. package/src/temporal/history.ts +3 -1
  746. package/src/temporal/inspection.ts +2 -1
  747. package/src/temporal/standard-scene-data.ts +10 -2
  748. package/src/temporal/target-coverage-attachment.ts +72 -0
  749. package/src/temporal/temporal-view.ts +11 -2
  750. package/src/temporal/view.ts +12 -2
  751. package/src/transmission/__tests__/standard-transmission.dawn.test.ts +219 -139
  752. package/src/typed-render-graph-primitives.ts +304 -74
  753. package/src/typed-shadow-passes.ts +122 -12
  754. package/src/volume/component.ts +1 -0
  755. package/src/volume/passes.ts +3 -3
  756. package/src/volume/temporal.ts +10 -0
  757. package/dist/chunk-GE3SDD72.mjs.map +0 -1
  758. package/dist/chunk-GF523LHF.mjs.map +0 -1
  759. package/dist/chunk-IQMKJLNU.mjs.map +0 -1
  760. package/dist/chunk-J52NMQKR.mjs.map +0 -1
  761. package/dist/chunk-J6KACNOH.mjs.map +0 -1
  762. package/dist/chunk-JAASCMXA.mjs.map +0 -1
  763. package/dist/chunk-MBU4ZVE7.mjs.map +0 -1
  764. package/dist/chunk-MYJ5RPJO.mjs.map +0 -1
  765. package/dist/chunk-RBDBZ5R7.mjs.map +0 -1
  766. package/dist/chunk-VSL23LZE.mjs.map +0 -1
  767. package/src/__tests__/instances-world-ownership.integration.test.ts +0 -62
  768. package/src/scene/__tests__/changed-block-summary.candidate.test.ts +0 -36
@@ -23,13 +23,16 @@ import type {
23
23
  } from '@forgeax/engine-rhi';
24
24
  import type { SkinError } from '@forgeax/engine-skinning';
25
25
  import type { ImageError } from '@forgeax/engine-types';
26
- import type { RhiBackendInstrumentation } from './assembly/backend-contract';
27
- import type { Antialias, BloomEnabled, Tonemap } from './components/camera';
28
- import type { EnvironmentInspection } from './environment/inspection';
29
- import type { RecoveryOutcome, RecoveryPhase } from './errors/recover';
30
- import type { RenderError } from './errors/render';
31
- import type { RenderFeature, RenderFeatureDiagnostics } from './features/types';
32
- import type { PostProcessShaderEntry } from './fullscreen-post-process-pass';
26
+ import type { RhiBackendInstrumentation } from './assembly/backend-contract.js';
27
+ import type { Antialias, BloomEnabled, CameraExposure, Tonemap } from './components/camera.js';
28
+ import type { DynamicResolutionData } from './components/dynamic-resolution.js';
29
+ import type { ScreenSpaceReflectionData } from './components/screen-space-reflection.js';
30
+ import type { EnvironmentInspection } from './environment/inspection.js';
31
+ import type { GpuDrivenPreparationError } from './errors/gpu-driven.js';
32
+ import type { RecoveryOutcome, RecoveryPhase } from './errors/recover.js';
33
+ import type { RenderError } from './errors/render.js';
34
+ import type { RenderFeature, RenderFeatureDiagnostics } from './features/types.js';
35
+ import type { PostProcessShaderEntry } from './fullscreen-post-process-pass.js';
33
36
  import type {
34
37
  BloomInspection,
35
38
  DirectionalShadowInspection,
@@ -37,13 +40,18 @@ import type {
37
40
  LodOcclusionInspection,
38
41
  MotionBlurInspection,
39
42
  ReflectionProbeInspection,
43
+ RenderFeatureGraphInspection,
44
+ RenderFeatureHostInspection,
40
45
  RenderSceneInspection,
41
46
  SsrDependenciesInspection,
47
+ SsrSpatialInspection,
42
48
  TemporalTargetInspection,
43
49
  TransmissionInspection,
44
- } from './inspection-types';
45
- import type { InstanceCollectionInspection } from './instances';
46
- import type { SsrAdmissionIdentity } from './ssr/identity';
50
+ } from './inspection-types.js';
51
+ import type { InstanceCollectionInspection, InstanceCollectionStore } from './instances.js';
52
+ import type { RenderExtent } from './pipeline/render-extent.js';
53
+ import type { RenderSceneBounds } from './scene/render-scene-types.js';
54
+ import type { SsrAdmissionIdentity } from './ssr/identity.js';
47
55
  import type {
48
56
  RenderTarget,
49
57
  RenderTargetDescriptor,
@@ -52,11 +60,11 @@ import type {
52
60
  RenderTargetReadbackTicket,
53
61
  RenderTargetTextureSource,
54
62
  RenderTargetTextureSourceOptions,
55
- } from './targets/contracts';
56
- import type { TemporalInspection } from './temporal/inspection';
63
+ } from './targets/contracts.js';
64
+ import type { TemporalInspection } from './temporal/inspection.js';
57
65
 
58
- export type { TransmissionInspection } from './inspection-types';
59
- export type { PointsLinesInspection } from './points-lines/inspection';
66
+ export type { TransmissionInspection } from './inspection-types.js';
67
+ export type { PointsLinesInspection } from './points-lines/inspection.js';
60
68
 
61
69
  import type {
62
70
  DynamicGeometryCandidate,
@@ -65,27 +73,29 @@ import type {
65
73
  DynamicGeometryOrdering,
66
74
  DynamicGeometryPrepareInput,
67
75
  DynamicGeometryReceipt,
68
- } from './dynamic-geometry';
76
+ } from './dynamic-geometry.js';
69
77
  import type {
70
78
  IblBindingInspection,
71
79
  MeshMaterialBindingObservation,
72
- } from './mesh-material-bindings';
73
- import type { StandardLightingInspection } from './pipeline/standard-lighting/inspection';
74
- import type { StandardProfile } from './pipeline/standard-profile';
75
- import type { PointShadowInspection } from './point-shadow-inspection';
76
- import type { PostProcessError } from './post-process-errors';
80
+ } from './mesh-material-bindings.js';
81
+ import type { StandardLightingInspection } from './pipeline/standard-lighting/inspection.js';
82
+ import type { AutoExposureInspection } from './pipeline/standard-output/auto-exposure/inspection.js';
83
+ import type { StandardLutInspection } from './pipeline/standard-output/lut-state.js';
84
+ import type { StandardProfile } from './pipeline/standard-profile.js';
85
+ import type { PointShadowInspection } from './point-shadow-inspection.js';
86
+ import type { PostProcessError } from './post-process-errors.js';
77
87
  import type {
78
88
  GpuPassTimingObservation,
79
89
  GpuPassTimingOptions,
80
90
  } from './record/gpu-pass-timing/index.js';
81
- import type { VolumeTimingObservation } from './record/gpu-timing';
82
- import type { TemporalView } from './temporal/view';
83
- import type { VolumetricFogInspection } from './volume/inspection';
91
+ import type { VolumeTimingObservation } from './record/gpu-timing.js';
92
+ import type { TemporalView } from './temporal/view.js';
93
+ import type { VolumetricFogInspection } from './volume/inspection.js';
84
94
 
85
95
  export type {
86
96
  CubeCameraFace,
87
97
  CubeCameraUpdateIntent,
88
- } from './components/cube-camera';
98
+ } from './components/cube-camera.js';
89
99
 
90
100
  export interface CubeCameraSnapshot {
91
101
  readonly entityKey?: number;
@@ -105,6 +115,15 @@ export type RenderResult<T, E> =
105
115
  /** The only World data boundary accepted by the M6 renderer contract. */
106
116
  export type RenderWorldLease = RenderReadLease;
107
117
 
118
+ /** Camera-owned color/exposure facts projected once at the frame boundary. */
119
+ export interface CameraOutputSnapshot {
120
+ readonly exposure: CameraExposure;
121
+ readonly temperature: number;
122
+ readonly tint: number;
123
+ readonly colorLut: number;
124
+ readonly colorLutStrength: number;
125
+ }
126
+
108
127
  /**
109
128
  * Camera facts shared by extract, record, and scene owners.
110
129
  *
@@ -138,12 +157,18 @@ export interface CameraSnapshot {
138
157
  readonly tonemap: Tonemap;
139
158
  readonly exposure: number;
140
159
  readonly whitePoint: number;
160
+ /** Camera schema output projection consumed by Standard prepare/inspection. */
161
+ readonly output?: CameraOutputSnapshot;
141
162
  readonly antialias: Antialias;
163
+ /** Optional detached Camera companion for fixed or adaptive scaling. */
164
+ readonly dynamicResolution?: DynamicResolutionData;
142
165
  readonly bloom: BloomEnabled;
143
166
  readonly bloomThreshold: number;
144
167
  readonly bloomIntensity: number;
145
168
  readonly bloomBlurRadius: number;
146
169
  readonly clearColor: readonly [number, number, number, number];
170
+ /** Optional active-camera SSR authoring fact, copied from the ECS schema. */
171
+ readonly screenSpaceReflection?: ScreenSpaceReflectionData;
147
172
  /** Renderer-owned temporal projection used by Standard's TAA producer. */
148
173
  readonly temporal?: TemporalView;
149
174
  /** Active-camera motion blur parameters, present only when demanded. */
@@ -165,8 +190,8 @@ export type {
165
190
  EnvironmentSource,
166
191
  FogFrame,
167
192
  FramePlan,
168
- } from './extract/environment';
169
- export type { TemporalView } from './temporal/view';
193
+ } from './extract/environment.js';
194
+ export type { TemporalView } from './temporal/view.js';
170
195
 
171
196
  /**
172
197
  * Render-graph state exposed to pipeline declarations. Concrete pipeline
@@ -188,8 +213,43 @@ interface RenderPipelineStateView {
188
213
  * RenderSystemRuntime structurally satisfies this contract, but the public
189
214
  * frame surface does not depend on that assembly owner.
190
215
  */
216
+ interface RenderPipelineObservationCapture {
217
+ readonly domain: 'linear-hdr' | 'linear-ldr' | 'final-srgb';
218
+ readonly format: TextureFormat;
219
+ readonly device: RhiDevice;
220
+ readonly texture: Texture;
221
+ readonly buffer: Buffer;
222
+ readonly frameNumber: number;
223
+ readonly deviceGeneration: number;
224
+ readonly graphGeneration: number;
225
+ readonly backendId: string;
226
+ readonly width: number;
227
+ readonly height: number;
228
+ readonly bytesPerRow: number;
229
+ }
230
+
231
+ interface RenderPipelineObservationCaptureOwner {
232
+ readonly register: (capture: RenderPipelineObservationCapture) => void;
233
+ readonly consume: (frameNumber: number) => readonly RenderPipelineObservationCapture[];
234
+ readonly drain: () => readonly RenderPipelineObservationCapture[];
235
+ }
236
+
191
237
  interface RenderPipelineRuntime {
192
238
  readonly device: RhiDevice;
239
+ /** Current renderer device generation used to fence graph captures. */
240
+ readonly deviceGeneration?: number | undefined;
241
+ /** Public receipt identity reserved for the frame currently being encoded. */
242
+ readonly observationFrameId?: number | undefined;
243
+ /** Renderer-issued graph fence populated by the graph owner during encoding. */
244
+ observationGraphGeneration?: number | undefined;
245
+ /** Per-renderer bridge for receipt-bound graph color captures. */
246
+ readonly observationCaptureOwner?: RenderPipelineObservationCaptureOwner | undefined;
247
+ /**
248
+ * Domains armed for the frame currently being encoded. An absent or empty
249
+ * set is the normal zero-cost path; typed graph capture passes remain
250
+ * declared for topology inspection but do not allocate or copy anything.
251
+ */
252
+ readonly observationCaptureDomains?: readonly FrameObservationDomain[] | undefined;
193
253
  /** Runtime-owned shader module factory used by built-in graph producers. */
194
254
  readonly shaderModuleFactory?: {
195
255
  createShaderModule(input: {
@@ -200,6 +260,16 @@ interface RenderPipelineRuntime {
200
260
  RhiError
201
261
  >;
202
262
  };
263
+ /** Immediate factory used by same-frame built-in producers after runtime warm-up. */
264
+ readonly immediateShaderModuleFactory?: {
265
+ createShaderModule(input: {
266
+ readonly code: string;
267
+ readonly label?: string | undefined;
268
+ }): import('@forgeax/engine-types').Result<
269
+ import('@forgeax/engine-rhi').ShaderModule,
270
+ RhiError
271
+ >;
272
+ };
203
273
  readonly errorRegistry: { fire(error: RendererError): void };
204
274
  readonly debugOverlay?: RenderDebugOverlay | undefined;
205
275
  readonly lookupPostProcess?: (id: string) => PostProcessShaderEntry | undefined;
@@ -207,7 +277,7 @@ interface RenderPipelineRuntime {
207
277
  readonly getPostProcessPipeline?: (
208
278
  id: string,
209
279
  bgl: BindGroupLayout,
210
- colorFormat: GPUTextureFormat,
280
+ colorFormats: readonly GPUTextureFormat[],
211
281
  entry?: PostProcessShaderEntry,
212
282
  ) => RhiRenderPipeline | null;
213
283
  }
@@ -237,6 +307,8 @@ export interface RenderPipelineContext {
237
307
  readonly clear: readonly [number, number, number, number] | number[];
238
308
  readonly targetW: number;
239
309
  readonly targetH: number;
310
+ /** Renderer-owned output/internal dimensions shared by Standard consumers. */
311
+ readonly extent?: RenderExtent;
240
312
  readonly currentTexture: Texture;
241
313
  readonly camera: CameraSnapshot;
242
314
  /** Per-frame post-process parameter bytes keyed by shader id. */
@@ -250,6 +322,10 @@ export interface RenderPipelineContext {
250
322
  readonly spotLightProjector?: SpotLightProjectorFrameContext;
251
323
  /** Build-time composed utility sources for the renderer-owned volume passes. */
252
324
  readonly volumetricFogShaders?: VolumetricFogShaderSources;
325
+ /** Build-time composed utility sources for the renderer-owned SSR passes. */
326
+ readonly ssrShaders?: SsrShaderSources;
327
+ /** Build-time composed utility sources for the renderer-owned atmosphere passes. */
328
+ readonly atmosphereShaders?: AtmosphereShaderSources;
253
329
  }
254
330
 
255
331
  /** Stable utility entry-point sources emitted by the shader manifest. */
@@ -260,6 +336,22 @@ export interface VolumetricFogShaderSources {
260
336
  readonly composite: string;
261
337
  }
262
338
 
339
+ /** Stable utility entry-point sources emitted by the shader manifest. */
340
+ export interface SsrShaderSources {
341
+ readonly hiz: string;
342
+ readonly hizReduce: string;
343
+ readonly trace: string;
344
+ readonly temporal: string;
345
+ readonly compose: string;
346
+ }
347
+
348
+ /** Stable analytic-atmosphere entry-point sources emitted by the shader manifest. */
349
+ export interface AtmosphereShaderSources {
350
+ readonly ibl: string;
351
+ readonly cube: string;
352
+ readonly background: string;
353
+ }
354
+
263
355
  /**
264
356
  * GPU resources for one validated volumetric-fog candidate. The record stage
265
357
  * owns residency and parameter uploads; graph passes consume this narrow view
@@ -304,6 +396,7 @@ export interface SpotLightProjectorFrameContext {
304
396
  */
305
397
  export interface Renderer {
306
398
  /** Renderer-owned authoring and update path for large instance collections. */
399
+ readonly instances: InstanceCollectionStore;
307
400
  attach(world: World): RenderResult<RenderWorldLease, RenderError>;
308
401
  /** Prepare a standard MeshAsset for the active device generation. */
309
402
  prepareDynamicGeometry(
@@ -314,10 +407,31 @@ export interface Renderer {
314
407
  candidate: DynamicGeometryCandidate,
315
408
  ordering: DynamicGeometryOrdering,
316
409
  ): Result<DynamicGeometryCandidate, DynamicGeometryError>;
410
+ /**
411
+ * Atomically swap distinct entities in one attached World. Returned failures
412
+ * retain old bindings; an uncertain rollback throws to require paired rebuild.
413
+ * Invoke inside PhysicsWorld.admitDerivedShapeCandidates commitGeometry.
414
+ */
415
+ acceptDynamicGeometryCandidates(
416
+ candidates: readonly DynamicGeometryCandidate[],
417
+ ordering: DynamicGeometryOrdering,
418
+ ): Result<readonly DynamicGeometryCandidate[], DynamicGeometryError>;
317
419
  dynamicGeometryReceipt(candidate: DynamicGeometryCandidate): DynamicGeometryReceipt | undefined;
318
420
  cancelDynamicGeometry(candidate: DynamicGeometryCandidate): Result<void, DynamicGeometryError>;
319
421
  retireDynamicGeometry(candidate: DynamicGeometryCandidate): Result<void, DynamicGeometryError>;
320
422
  draw(input: RenderFrameInput): RenderResult<FrameReceipt, RenderError>;
423
+ /**
424
+ * Arm one upcoming submitted frame for explicit color-domain observation.
425
+ * Observation buffers are not created, copied, mapped, or retained until a
426
+ * host calls this method before `draw()`. The demand is consumed only by a
427
+ * successful submit; a failed frame keeps it armed for a retry.
428
+ *
429
+ * This optional extension keeps older injected Renderer test doubles source
430
+ * compatible while concrete Engine renderers always implement it.
431
+ */
432
+ requestObservation?: (
433
+ domains: readonly FrameObservationDomain[],
434
+ ) => RenderResult<void, RenderError>;
321
435
  createRenderTarget(descriptor: RenderTargetDescriptor): RenderResult<RenderTarget, RenderError>;
322
436
  resizeRenderTarget(
323
437
  target: RenderTarget,
@@ -334,6 +448,8 @@ export interface Renderer {
334
448
  destroyRenderTarget(target: RenderTarget): RenderResult<void, RenderError>;
335
449
  setProfile(profile: RenderProfile): RenderResult<void, RenderError>;
336
450
  state(): RendererState;
451
+ /** Detached world bounds for one record in the last extracted World; undefined if unavailable. */
452
+ bounds(world: World, entity: number): RenderSceneBounds | undefined;
337
453
  inspect(): RenderInspection;
338
454
  observe(
339
455
  receipt: FrameReceipt,
@@ -371,6 +487,8 @@ export type RendererEvent =
371
487
  readonly kind: 'frame-submitted';
372
488
  readonly frameId: number;
373
489
  readonly deviceGeneration: number;
490
+ /** The exact draw receipt, for observation when App owns the draw loop. */
491
+ readonly receipt: FrameReceipt;
374
492
  };
375
493
 
376
494
  /** Package-local listener alias used by the renderer assembly implementation. */
@@ -400,8 +518,17 @@ export interface FrameEnvironment {
400
518
  * only with the matching FrameReceipt after `receipt.completed` and returns a
401
519
  * structured Result error when the generation or frame identity is stale.
402
520
  */
521
+ export type FrameObservationDomain = 'linear-hdr' | 'linear-ldr' | 'final-srgb';
522
+
523
+ export type FrameObservationInclude =
524
+ | 'timings'
525
+ | 'draws'
526
+ | 'bindings'
527
+ | 'target-readbacks'
528
+ | FrameObservationDomain;
529
+
403
530
  export interface FrameObservationRequest {
404
- readonly include: readonly ('timings' | 'draws' | 'bindings' | 'target-readbacks')[];
531
+ readonly include: readonly FrameObservationInclude[];
405
532
  readonly targetReadbacks?: readonly RenderTargetReadbackTicket[];
406
533
  }
407
534
 
@@ -414,6 +541,10 @@ export interface FrameObservationRequest {
414
541
  export interface FrameReceipt {
415
542
  readonly frameId: number;
416
543
  readonly deviceGeneration: number;
544
+ /** Backend identity captured at submit and checked before observation. */
545
+ readonly backendId?: RhiCaps['backendKind'];
546
+ /** Monotonic compiled graph identity used by renderer-issued observations. */
547
+ readonly graphGeneration?: number;
417
548
  readonly completed: Promise<RenderResult<void, RenderError>>;
418
549
  }
419
550
 
@@ -436,16 +567,44 @@ export interface RenderFrameInput {
436
567
  export interface FrameReceiptObservation {
437
568
  readonly frameId: number;
438
569
  readonly deviceGeneration: number;
439
- readonly include: readonly ('timings' | 'draws' | 'bindings' | 'target-readbacks')[];
570
+ readonly include: readonly FrameObservationInclude[];
440
571
  /** Receipt-bound Render-owned GPU pass facts; absent when not requested. */
441
572
  readonly timings?: GpuPassTimingObservation | undefined;
442
573
  /** Receipt-bound volume GPU timing facts; absent when not requested. */
443
574
  readonly volumeTimings?: VolumeTimingObservation | undefined;
444
575
  readonly targetReadbacks?: readonly RenderTargetReadbackData[];
576
+ /** Independent raw bytes captured from the requested linear/display domains. */
577
+ readonly observations?: readonly FrameDomainObservation[] | undefined;
578
+ }
579
+
580
+ export interface FrameDomainObservation {
581
+ readonly domain: FrameObservationDomain;
582
+ readonly bytes: Uint8Array;
583
+ readonly metadata: {
584
+ readonly frameId: number;
585
+ readonly deviceGeneration: number;
586
+ readonly backendId?: RhiCaps['backendKind'];
587
+ /** Native texture format of the copied attachment, including BGRA order. */
588
+ readonly format: TextureFormat;
589
+ readonly graphGeneration: number;
590
+ readonly textureIdentity: number;
591
+ readonly readbackIdentity: number;
592
+ readonly width: number;
593
+ readonly height: number;
594
+ readonly bytesPerRow: number;
595
+ readonly footprint: {
596
+ readonly resourceCount: number;
597
+ readonly bindGroupCount: number;
598
+ };
599
+ };
445
600
  }
446
601
 
447
602
  /** Stable backend facts for the Standard output transform projection. */
448
603
  export interface RenderOutputInspection {
604
+ /** Camera-owned auto-exposure facts, detached from GPU state when available. */
605
+ readonly autoExposure?: AutoExposureInspection;
606
+ /** Renderer-owned detached LUT residency and receipt facts. */
607
+ readonly standardLut?: StandardLutInspection;
449
608
  readonly outputTransform?: typeof STANDARD_OUTPUT_TRANSFORM_FEATURE_ID;
450
609
  readonly displayEncoded: boolean;
451
610
  readonly intermediateFormat?: TextureFormat;
@@ -493,6 +652,15 @@ export interface RenderObservationInspection {
493
652
  /** Exact pass names and target descriptor from the committed graph. */
494
653
  readonly passNames: readonly string[];
495
654
  readonly standardOutputColor?: RenderStandardOutputColorInspection;
655
+ /** Monotonic, renderer-owned observation resource facts; no GPU handles. */
656
+ readonly resourceStats?: {
657
+ readonly allocationCount: number;
658
+ readonly liveCount: number;
659
+ readonly peakLiveCount: number;
660
+ readonly mapCount: number;
661
+ readonly readbackCount: number;
662
+ readonly liveByteLength: number;
663
+ };
496
664
  }
497
665
 
498
666
  /**
@@ -531,6 +699,12 @@ export interface RenderInspection {
531
699
  readonly features: readonly string[];
532
700
  /** Truthful lifecycle facts for every registered declarative feature. */
533
701
  readonly featureDiagnostics: readonly RenderFeatureDiagnostics[];
702
+ /** Detached signature and prepared-resource counters for feature planning. */
703
+ readonly featureHost?: RenderFeatureHostInspection;
704
+ /** Detached typed-graph compile/reuse and candidate lifecycle counters. */
705
+ readonly featureGraph?: RenderFeatureGraphInspection;
706
+ /** Detached material texture-source probe counters from the last extract. */
707
+ readonly materialTextureSources?: import('./inspection-types').MaterialTextureSourceInspection;
534
708
  readonly frustumStats: { readonly culled: number; readonly total: number };
535
709
  readonly visibilityStats: { readonly explicitlyHidden: number };
536
710
  /** Renderer-owned large-instance residency and upload facts. */
@@ -541,6 +715,8 @@ export interface RenderInspection {
541
715
  readonly reflectionProbes: ReflectionProbeInspection;
542
716
  /** Renderer-owned SSR dependency seam; consumer facts are projected from live owners. */
543
717
  readonly ssrDependencies: SsrDependenciesInspection;
718
+ /** Renderer-owned SSR spatial status and bounded execution facts. */
719
+ readonly ssr: SsrSpatialInspection;
544
720
  /** Last completed transmission candidate facts, detached from GPU handles. */
545
721
  readonly transmission?: TransmissionInspection;
546
722
  /** Last prepared Standard transport facts, detached from GPU handles. */
@@ -583,16 +759,12 @@ export interface RenderInspection {
583
759
  readonly lastGeneration: number | undefined;
584
760
  };
585
761
  };
586
- /** Output transform facts; never includes fixture metrics or pixel bytes. */
587
- readonly outputTransform?: typeof STANDARD_OUTPUT_TRANSFORM_FEATURE_ID;
588
- readonly displayEncoded: boolean;
589
- readonly intermediateFormat?: TextureFormat;
590
- readonly surfaceStorage: TextureFormat;
591
- readonly surfaceDisplay: TextureFormat;
592
- readonly endpoint: 'surface.storage.raw';
593
- readonly capability: RenderOutputInspection['capability'];
594
- readonly presentationProof?: RhiCanvasSurfacePresentationProof;
595
- readonly error: RenderOutputInspection['error'];
762
+ /**
763
+ * Output-transform facts from the same committed graph and physical surface.
764
+ * Keep this as one named subtree so AI consumers do not have to guess which
765
+ * detached fields belong to the output contract versus renderer lifecycle.
766
+ */
767
+ readonly output: RenderOutputInspection;
596
768
  readonly observation: RenderObservationInspection;
597
769
  readonly environment: EnvironmentInspection;
598
770
  readonly temporal: TemporalInspection;
@@ -626,6 +798,8 @@ export interface RenderInspection {
626
798
  export type DrawOwnerOptions = {
627
799
  readonly cameraOwner: number;
628
800
  readonly resourceOwner: number;
801
+ /** Optional FrameCamera entity selection; absent preserves ActiveCamera semantics. */
802
+ readonly cameraEntityKey?: number;
629
803
  readonly profileFrame?: ProfileFrameToken;
630
804
  };
631
805
 
@@ -649,17 +823,18 @@ export type RendererLostListener = (info: RendererLostInfo) => void;
649
823
  * exception), NOT the eliminated cross-cluster `RuntimeError` SSOT (D-3).
650
824
  *
651
825
  * Composition = `RhiError | RenderError | AssetRuntimeError | SkinError |
652
- * PostProcessError`. This equals the pre-decomposition
653
- * `RhiError | RuntimeError | PostProcessError` exactly: `RuntimeError` was
654
- * `RenderError | AssetRuntimeError | SkinError` (27 classes). `RecoverError`
655
- * and `EngineEnvironmentError` are intentionally excluded neither is ever
656
- * emitted through the Renderer event stream (`RecoverError` returns from `recover()`,
657
- * `EngineEnvironmentError` throws at construction), matching the original
658
- * `RuntimeError` union which excluded both (OOS-3 behavior equivalence).
826
+ * GpuDrivenPreparationError | PostProcessError`. The GPU preparation arm is
827
+ * the renderer-owned producer contract: its closed `code` and typed `detail`
828
+ * identify the material, geometry, skin, generation, or shadow owner without making
829
+ * RHI errors carry render policy. `RecoverError` and `EngineEnvironmentError`
830
+ * are intentionally excluded neither is ever emitted through the Renderer
831
+ * event stream (`RecoverError` returns from `recover()`,
832
+ * `EngineEnvironmentError` throws at construction).
659
833
  *
660
834
  * AI consumers do `switch (err.code)` over the union: the disjoint
661
835
  * `RhiErrorCode` / `RenderErrorCode` / `AssetRuntimeErrorCode` / `SkinErrorCode`
662
- * / `PostProcessErrorCode` literal sets let TS narrow each arm to the concrete
836
+ * / `GpuDrivenPreparationErrorCode` / `PostProcessErrorCode` literal sets let
837
+ * TS narrow each arm to the concrete
663
838
  * class (charter P3 union discoverability — every fan-out member is reachable
664
839
  * in an exhaustive switch, no untyped escape). Example:
665
840
  *
@@ -670,7 +845,8 @@ export type RendererLostListener = (info: RendererLostInfo) => void;
670
845
  * case 'asset-not-registered': // AssetRuntimeError arm, err narrowed here
671
846
  * return report(err.hint);
672
847
  * // ...one arm per RhiErrorCode | RenderErrorCode | AssetRuntimeErrorCode
673
- * // | SkinErrorCode | PostProcessErrorCode member; no default needed,
848
+ * // | SkinErrorCode | GpuDrivenPreparationErrorCode |
849
+ * // PostProcessErrorCode member; no default needed,
674
850
  * // TS flags every unhandled code at compile time.
675
851
  * }
676
852
  * });
@@ -681,6 +857,7 @@ export type RendererError =
681
857
  | RenderGraphError
682
858
  | ImageError
683
859
  | RenderError
860
+ | GpuDrivenPreparationError
684
861
  | AssetRuntimeError
685
862
  | SkinError
686
863
  | PostProcessError;
@@ -725,6 +902,11 @@ export const RENDER_GRAPH_EXECUTION_PHASE_CATALOG = [
725
902
  'record/graph-execute/bloom-blur-h',
726
903
  'record/graph-execute/bloom-blur-v',
727
904
  'record/graph-execute/bloom-composite',
905
+ 'record/graph-execute/ssr-hiz',
906
+ 'record/graph-execute/ssr-trace',
907
+ 'record/graph-execute/ssr-temporal',
908
+ 'record/graph-execute/ssr-reflection-mip',
909
+ 'record/graph-execute/ssr-compose',
728
910
  'record/graph-execute/other',
729
911
  ] as const;
730
912
 
@@ -814,11 +996,17 @@ export interface RendererOptions {
814
996
  readonly profiler?: Profiler | undefined;
815
997
  /** Explicitly request timestamp-query for receipt-bound GPU profiling. */
816
998
  readonly captureGpuTimings?: boolean | undefined;
999
+ /** Opt into full-frame reflection fallback pixel readback and hashing for diagnostics. */
1000
+ readonly captureReflectionFallbackReadback?: boolean | undefined;
817
1001
  /** Optional host-owned RHI lifecycle instrumentation, such as recording. */
818
1002
  readonly rhiInstrumentation?: RhiBackendInstrumentation | undefined;
819
1003
  /** Optional bounded GPU pass timing facts; this is not frame latency. */
820
1004
  readonly gpuPassTiming?: GpuPassTimingOptions | undefined;
821
- /** Exact source/tree/lock/build identity binding for the renderer-owned SSR seam. */
1005
+ /**
1006
+ * Exact source/tree/lock/build identity binding for the renderer-owned SSR seam.
1007
+ * Opts into one format-capability probe during device-generation initialization;
1008
+ * camera ScreenSpaceReflection still controls all per-frame SSR work.
1009
+ */
822
1010
  readonly ssrIdentity?: SsrAdmissionIdentity | undefined;
823
1011
  // feat-20260608-create-app-param-surface-trim / M1 / AC-02: `clearColor`
824
1012
  // was deleted as a one-cut breaking change (AGENTS.md Change stance +
@@ -15,6 +15,7 @@ import type {
15
15
  TextureFormat,
16
16
  TextureView,
17
17
  } from '@forgeax/engine-rhi';
18
+ import { RhiError } from '@forgeax/engine-rhi';
18
19
  import {
19
20
  buildFullscreenPostProcessPass,
20
21
  createFullscreenBindGroup,
@@ -28,7 +29,7 @@ import type { _InternalRenderPipelineContext } from './record/render-context';
28
29
  import { recordFxaaPass } from './record/skybox-post-pass';
29
30
  import type { RenderPipelineContext } from './render-contract';
30
31
  import { getOrCreateSsaoBuffers, getOrCreateSsaoFallbackTexture } from './ssao-buffers';
31
- import { getSsaoParameters } from './ssao-config';
32
+ import { getSsaoParameters, SSAO_SAMPLE_COUNTS } from './ssao-config';
32
33
 
33
34
  type DepthResolutionContext = Pick<_InternalRenderPipelineContext, 'runtime'> & {
34
35
  readonly frameState: {
@@ -198,6 +199,12 @@ function ensureSsaoRecordCompanions(internals: _InternalRenderPipelineContext):
198
199
  function buildSsaoUniformPayload(internals: _InternalRenderPipelineContext): Float32Array {
199
200
  const { camera, frameState } = internals;
200
201
  const sProj = computeProjectionMatrix(camera);
202
+ if (camera.temporal?.currentJitterUv !== undefined) {
203
+ const jitter = mat4.identity(mat4.create());
204
+ jitter[12] = camera.temporal.currentJitterUv[0] * 2;
205
+ jitter[13] = camera.temporal.currentJitterUv[1] * -2;
206
+ mat4.multiply(sProj, jitter, sProj);
207
+ }
201
208
  const sView = computeViewMatrix(camera);
202
209
  const invProj = mat4.create();
203
210
  mat4.invert(invProj, sProj);
@@ -214,6 +221,7 @@ function buildSsaoUniformPayload(internals: _InternalRenderPipelineContext): Flo
214
221
  out[48] = parameters.intensity;
215
222
  out[49] = parameters.radius;
216
223
  out[50] = parameters.bias;
224
+ out[51] = SSAO_SAMPLE_COUNTS[parameters.quality];
217
225
  return out;
218
226
  }
219
227
 
@@ -256,7 +264,19 @@ export function recordSsaoCalcPass(
256
264
  const { runtime, pipelineState, encoder } = _c;
257
265
  const pp = pipelineState.perPassResources;
258
266
 
259
- if (pp.ssaoCalcPipeline === null || pp.ssaoBgl === null) return;
267
+ if (runtime.device.caps.backendKind === 'wgpu-webgl2') {
268
+ throw new RhiError({
269
+ code: 'feature-not-enabled',
270
+ expected: 'SSAO raw depth sampling on a WebGPU-capable backend',
271
+ hint: 'use WebGPU for SSAO or disable StandardProfile.ssao on the GLES fallback',
272
+ });
273
+ }
274
+ if (pp.ssaoCalcPipeline === null || pp.ssaoBgl === null) {
275
+ throw new PostProcessError({
276
+ code: 'post-process-not-found',
277
+ detail: { id: 'forgeax::post::ssao-calc' },
278
+ });
279
+ }
260
280
  if (graphViews === undefined && (resolveCtx === undefined || ssaoRawKey === undefined)) return;
261
281
 
262
282
  const ssaoRawView =
@@ -392,7 +412,12 @@ export function recordSsaoBlurPass(
392
412
  const { runtime, pipelineState, encoder } = _c;
393
413
  const pp = pipelineState.perPassResources;
394
414
 
395
- if (pp.ssaoBlurPipeline === null || pp.ssaoBgl === null) return;
415
+ if (pp.ssaoBlurPipeline === null || pp.ssaoBgl === null) {
416
+ throw new PostProcessError({
417
+ code: 'post-process-not-found',
418
+ detail: { id: 'forgeax::post::ssao-blur' },
419
+ });
420
+ }
396
421
  if (
397
422
  graphViews === undefined &&
398
423
  (resolveCtx === undefined || ssaoBlurredKey === undefined || ssaoRawKey === undefined)
@@ -551,6 +576,7 @@ function dispatchFullscreenPass(
551
576
  graphOutputFormat?: GPUTextureFormat,
552
577
  graphDepthView?: TextureView,
553
578
  paramsOverride?: Uint8Array,
579
+ fragmentEntryPoint?: string,
554
580
  ): void {
555
581
  if (shader === 'fxaa') {
556
582
  if (resolveCtx === undefined) {
@@ -559,7 +585,7 @@ function dispatchFullscreenPass(
559
585
  detail: { readsKey: reads[0] ?? 'ldrColor', passName: name },
560
586
  });
561
587
  }
562
- recordFxaaPass(requireRenderGraphRecordContext(ctx), resolveCtx, graphPass);
588
+ recordFxaaPass(requireRenderGraphRecordContext(ctx), resolveCtx, graphPass, paramsOverride);
563
589
  return;
564
590
  }
565
591
  const lookup = ctx.runtime.lookupPostProcess;
@@ -773,7 +799,8 @@ function dispatchFullscreenPass(
773
799
  const lookupPipeline = ctx.runtime.getPostProcessPipeline;
774
800
  if (lookupPipeline === undefined) return;
775
801
  const postColorFormat = writeFormat;
776
- const pipeline = lookupPipeline(shader, built.bindGroupLayout, postColorFormat);
802
+ const pipelineEntry = fragmentEntryPoint === undefined ? entry : { ...entry, fragmentEntryPoint };
803
+ const pipeline = lookupPipeline(shader, built.bindGroupLayout, [postColorFormat], pipelineEntry);
777
804
  if (pipeline === null) return;
778
805
  const handle = built.createHandle(name, pipeline, paramsBuffer);
779
806
 
@@ -814,6 +841,7 @@ export function encodeFullscreenPass(
814
841
  readonly rawSwapchainOutput?: boolean | undefined;
815
842
  readonly depthView?: TextureView | undefined;
816
843
  readonly paramsOverride?: Uint8Array | undefined;
844
+ readonly fragmentEntryPoint?: string | undefined;
817
845
  },
818
846
  ): void {
819
847
  dispatchFullscreenPass(
@@ -829,5 +857,6 @@ export function encodeFullscreenPass(
829
857
  input.outputFormat,
830
858
  input.depthView,
831
859
  input.paramsOverride,
860
+ input.fragmentEntryPoint,
832
861
  );
833
862
  }