@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
@@ -1,13 +1,9 @@
1
1
  import {
2
+ DEFAULT_VERTEX_ATTRIBUTE_MAP,
2
3
  deriveVertexLayoutProjection,
3
4
  type VertexLayoutProjection,
4
5
  } from '@forgeax/engine-geometry';
5
- import type {
6
- MaterialRenderState,
7
- PassKind,
8
- PrimitiveTopology,
9
- VertexAttributeMap,
10
- } from '@forgeax/engine-types';
6
+ import type { MaterialRenderState, PassKind, PrimitiveTopology } from '@forgeax/engine-types';
11
7
  import { SPRITE_PREMULTIPLIED_ALPHA_BLEND } from '../materials';
12
8
  import {
13
9
  isStandardPbrMaterialShader,
@@ -42,6 +38,7 @@ import type {
42
38
  export interface RecoveryPipelineReadiness {
43
39
  readonly pipelineSpecs: readonly PipelineSpec[];
44
40
  /** Re-resolve every candidate request and assert a stable cache hit. */
41
+ readonly assertPreparedCache: () => void;
45
42
  readonly assertFirstRecoveryFrame: () => void;
46
43
  }
47
44
 
@@ -53,6 +50,7 @@ export interface RecoveryPipelineReadiness {
53
50
  */
54
51
  export function createRecoveryColdWorkGuard(): RecoveryColdWorkGuard {
55
52
  let armed = false;
53
+ let recording = false;
56
54
  let finished = false;
57
55
  let pipelineColdWork = 0;
58
56
  let uploadColdWork = 0;
@@ -71,11 +69,17 @@ export function createRecoveryColdWorkGuard(): RecoveryColdWorkGuard {
71
69
  pipelineColdWork = 0;
72
70
  uploadColdWork = 0;
73
71
  },
72
+ beginFrame(): void {
73
+ recording = true;
74
+ },
75
+ endFrame(): void {
76
+ recording = false;
77
+ },
74
78
  notePipelineColdWork(): void {
75
- if (armed && !finished) fail('pipeline');
79
+ if (armed && recording && !finished) fail('pipeline');
76
80
  },
77
81
  noteUploadColdWork(): void {
78
- if (armed && !finished) fail('upload');
82
+ if (armed && recording && !finished) fail('upload');
79
83
  },
80
84
  finish(): void {
81
85
  if (!armed || finished) return;
@@ -96,13 +100,6 @@ interface RecoveryPipelineRequest {
96
100
  readonly resolve: () => MaterialShaderPipelineEntry | null;
97
101
  }
98
102
 
99
- const DEFAULT_VERTEX_ATTRIBUTES: VertexAttributeMap = {
100
- position: new Float32Array(0),
101
- normal: new Float32Array(0),
102
- uv: new Float32Array(0),
103
- tangent: new Float32Array(0),
104
- };
105
-
106
103
  function optionalRenderState(
107
104
  state: MaterialRenderState | undefined,
108
105
  ): { readonly renderState: MaterialRenderState } | Record<string, never> {
@@ -174,6 +171,9 @@ function addRequest(input: {
174
171
  readonly additionalColorFormats?: readonly GPUTextureFormat[];
175
172
  readonly depthFormatOverride?: GPUTextureFormat | null;
176
173
  readonly vertexLayoutProjection?: VertexLayoutProjection;
174
+ readonly vertexEntry?: string;
175
+ readonly fragmentEntry?: string;
176
+ readonly layoutKindOverride?: 'pbr' | 'pbr-skin';
177
177
  readonly preserveUndefinedVariant?: boolean;
178
178
  readonly variantAlreadyResolved?: boolean;
179
179
  }): void {
@@ -204,6 +204,8 @@ function addRequest(input: {
204
204
  id: input.materialShaderId,
205
205
  passKind,
206
206
  variantSet: resolvedVariantSet,
207
+ ...(input.vertexEntry === undefined ? {} : { vertexEntry: input.vertexEntry }),
208
+ ...(input.fragmentEntry === undefined ? {} : { fragmentEntry: input.fragmentEntry }),
207
209
  }),
208
210
  attachments: Object.freeze({
209
211
  colorFormats: Object.freeze([...colorFormats]),
@@ -213,7 +215,7 @@ function addRequest(input: {
213
215
  geometry: Object.freeze({
214
216
  topology: input.topology ?? 'triangle-list',
215
217
  stripIndexFormat: input.indexFormat,
216
- vertexLayout: DEFAULT_VERTEX_ATTRIBUTES,
218
+ vertexLayout: DEFAULT_VERTEX_ATTRIBUTE_MAP,
217
219
  ...(projection === undefined ? {} : { vertexLayoutProjection: projection }),
218
220
  ...(shaderUvSetCount !== undefined && shaderUvSetCount > 1
219
221
  ? {
@@ -243,8 +245,11 @@ function addRequest(input: {
243
245
  undefined,
244
246
  projection,
245
247
  undefined,
248
+ input.layoutKindOverride,
246
249
  undefined,
247
250
  input.additionalColorFormats,
251
+ input.vertexEntry,
252
+ input.fragmentEntry,
248
253
  ) ?? null;
249
254
  input.requests.push({ spec, resolve });
250
255
  }
@@ -261,12 +266,7 @@ function addStandardMaterialRequests(input: {
261
266
  readonly colorFormatOverride?: GPUTextureFormat;
262
267
  readonly reflectionFallbackAvailable: boolean;
263
268
  }): void {
264
- const pointsLinesProjection = deriveVertexLayoutProjection({
265
- position: new Float32Array(0),
266
- normal: new Float32Array(0),
267
- uv: new Float32Array(0),
268
- tangent: new Float32Array(0),
269
- });
269
+ const pointsLinesProjection = deriveVertexLayoutProjection(DEFAULT_VERTEX_ATTRIBUTE_MAP);
270
270
  for (const entry of input.validated) {
271
271
  if (entry.source.pointsLines !== undefined) {
272
272
  const pointsLinesMaterial = entry.source.material;
@@ -299,7 +299,7 @@ function addStandardMaterialRequests(input: {
299
299
  // The probe record is an object-level ABI extension of the built-in
300
300
  // Standard PBR family. Recovery must request the same variant that the
301
301
  // live record path will select, otherwise the first post-recovery draw
302
- // discovers a cold PSO and the cold-work guard correctly rejects it.
302
+ // discovers avoidable cold PSO work.
303
303
  const probeBlendRecordAvailable =
304
304
  input.internals.device.caps.storageBuffer && entry.source.probeBlendRecord !== undefined;
305
305
  const standardPbrCapabilityVariantSet = standardTopologyVariantSet(
@@ -376,9 +376,7 @@ function addStandardMaterialRequests(input: {
376
376
  : undefined
377
377
  : entry.variantSet === undefined
378
378
  ? materialCapabilityVariantSet
379
- : materialCapabilityVariantSet === ''
380
- ? entry.variantSet
381
- : `${materialCapabilityVariantSet}+${entry.variantSet}`;
379
+ : `${materialCapabilityVariantSet}+${entry.variantSet}`;
382
380
  const reflectionFallbackVariant =
383
381
  input.reflectionFallbackAvailable && materialShaderId === 'forgeax::default-standard-pbr'
384
382
  ? (() => {
@@ -527,80 +525,60 @@ function addShadowRequests(input: {
527
525
  readonly validated: readonly ValidatedRenderable[];
528
526
  readonly dispatch: readonly DispatchEntry[];
529
527
  }): void {
530
- addRequest({
531
- requests: input.requests,
532
- requestKeys: input.requestKeys,
533
- internals: input.internals,
534
- pipelineState: input.pipelineState,
535
- materialShaderId: SHADOW_CASTER_SHADER_ID,
536
- isHdrTarget: false,
537
- topology: 'triangle-list',
538
- variantSet: shadowCasterVariantSet(input.internals.device.caps.storageBuffer, false),
539
- passKind: 'shadow-caster',
540
- sampleCount: 1,
541
- variantAlreadyResolved: true,
542
- });
543
- const customByRenderable = new Map<
544
- number,
545
- Map<number, { id: string; state: MaterialRenderState | undefined }>
546
- >();
547
- for (const dispatch of input.dispatch) {
548
- if (dispatch.tags.LightMode !== 'ShadowCaster' || dispatch.materialShaderId === undefined)
528
+ // Recovery has no record context, so it cannot use the context-backed
529
+ // shadowShaderMap. Group the producer dispatch facts directly and warm every
530
+ // authored ShadowCaster pass for the matching renderable/material pair.
531
+ const dispatches = new Map<number, Map<number, DispatchEntry[]>>();
532
+ for (const candidate of input.dispatch) {
533
+ if (candidate.tags.LightMode !== 'ShadowCaster' || candidate.materialShaderId === undefined)
549
534
  continue;
550
- let materials = customByRenderable.get(dispatch.renderableIndex);
551
- if (materials === undefined) {
552
- materials = new Map();
553
- customByRenderable.set(dispatch.renderableIndex, materials);
535
+ const byMaterial = dispatches.get(candidate.renderableIndex);
536
+ if (byMaterial === undefined) {
537
+ dispatches.set(candidate.renderableIndex, new Map([[candidate.materialHandle, [candidate]]]));
538
+ } else {
539
+ const entries = byMaterial.get(candidate.materialHandle);
540
+ if (entries === undefined) byMaterial.set(candidate.materialHandle, [candidate]);
541
+ else entries.push(candidate);
554
542
  }
555
- materials.set(dispatch.materialHandle, {
556
- id: dispatch.materialShaderId,
557
- state: dispatch.renderState,
558
- });
559
543
  }
560
544
  for (const entry of input.validated) {
561
- const triangles = entry.mesh.submeshes.filter(
562
- (submesh) => submesh.topology === 'triangle-list' || submesh.topology === 'triangle-strip',
563
- );
564
- if (triangles.length === 0) continue;
565
- if (entry.source.skin !== undefined) {
566
- addRequest({
567
- requests: input.requests,
568
- requestKeys: input.requestKeys,
569
- internals: input.internals,
570
- pipelineState: input.pipelineState,
571
- materialShaderId: SHADOW_CASTER_SHADER_ID,
572
- isHdrTarget: false,
573
- topology: entry.mesh.submeshes[0]?.topology ?? 'triangle-list',
574
- indexFormat: entry.mesh.indexFormat,
575
- variantSet: shadowCasterVariantSet(input.internals.device.caps.storageBuffer, true),
576
- passKind: 'shadow-caster',
577
- sampleCount: 1,
578
- vertexLayoutProjection: entry.mesh.layoutProjection,
579
- variantAlreadyResolved: true,
580
- });
581
- }
582
- for (const submesh of triangles) {
545
+ for (const submesh of entry.mesh.submeshes) {
546
+ if (submesh.topology !== 'triangle-list' && submesh.topology !== 'triangle-strip') continue;
583
547
  const material = entry.source.materials[submesh.materialSlot] ?? entry.source.material;
584
- const custom = customByRenderable
585
- .get(entry.renderableIndex)
586
- ?.get(material.materialHandle ?? 0);
587
- if (
588
- entry.source.skin === undefined &&
589
- custom !== undefined &&
590
- (custom.id !== 'forgeax::default-shadow-caster' || custom.state !== undefined)
591
- ) {
548
+ const shadowDispatches =
549
+ dispatches.get(entry.renderableIndex)?.get(material.materialHandle ?? 0) ?? [];
550
+ for (const dispatch of shadowDispatches.length === 0 ? [undefined] : shadowDispatches) {
551
+ const materialShaderId =
552
+ dispatch?.materialShaderId === 'forgeax::default-standard-pbr' ||
553
+ dispatch?.materialShaderId === undefined
554
+ ? SHADOW_CASTER_SHADER_ID
555
+ : dispatch.materialShaderId;
592
556
  addRequest({
593
557
  requests: input.requests,
594
558
  requestKeys: input.requestKeys,
595
559
  internals: input.internals,
596
560
  pipelineState: input.pipelineState,
597
- materialShaderId: custom.id,
561
+ materialShaderId,
598
562
  isHdrTarget: false,
599
- ...optionalRenderState(custom.state),
600
- topology: 'triangle-list',
563
+ ...optionalRenderState(dispatch?.renderState),
564
+ topology: submesh.topology,
565
+ indexFormat: entry.mesh.indexFormat,
566
+ ...optionalVariant(
567
+ materialShaderId === SHADOW_CASTER_SHADER_ID
568
+ ? shadowCasterVariantSet(
569
+ input.internals.device.caps.storageBuffer,
570
+ entry.source.skin !== undefined,
571
+ )
572
+ : undefined,
573
+ ),
601
574
  passKind: 'shadow-caster',
602
575
  sampleCount: 1,
603
- preserveUndefinedVariant: true,
576
+ vertexLayoutProjection: entry.mesh.layoutProjection,
577
+ layoutKindOverride: entry.source.skin === undefined ? 'pbr' : 'pbr-skin',
578
+ ...(dispatch?.vertexEntry === undefined ? {} : { vertexEntry: dispatch.vertexEntry }),
579
+ ...(dispatch?.fragmentEntry === undefined
580
+ ? {}
581
+ : { fragmentEntry: dispatch.fragmentEntry }),
604
582
  variantAlreadyResolved: true,
605
583
  });
606
584
  }
@@ -671,7 +649,7 @@ export function prepareRecoveryPipelineReadiness(input: {
671
649
  dispatch: input.dispatch,
672
650
  });
673
651
  }
674
- const assertFirstRecoveryFrame = (): void => {
652
+ const assertPreparedCache = (): void => {
675
653
  for (const request of requests) {
676
654
  const first = request.resolve();
677
655
  const second = request.resolve();
@@ -687,9 +665,10 @@ export function prepareRecoveryPipelineReadiness(input: {
687
665
  }
688
666
  }
689
667
  };
690
- assertFirstRecoveryFrame();
668
+ assertPreparedCache();
691
669
  return {
692
670
  pipelineSpecs: Object.freeze(requests.map((request) => request.spec)),
693
- assertFirstRecoveryFrame,
671
+ assertPreparedCache,
672
+ assertFirstRecoveryFrame: assertPreparedCache,
694
673
  };
695
674
  }
@@ -15,6 +15,7 @@ import type {
15
15
  RhiDevice,
16
16
  RenderPipeline as RhiRenderPipeline,
17
17
  Sampler,
18
+ ShaderModule,
18
19
  Texture,
19
20
  TextureFormat,
20
21
  TextureView,
@@ -40,6 +41,9 @@ import type { MeshGpuHandles } from '../device/gpu-residency';
40
41
  import type { EngineMetrics } from '../engine-metrics';
41
42
  import type { RenderFeatureHost } from '../features/host';
42
43
  import type { RenderFeatureShaderModuleMode } from '../features/types';
44
+ import type { GpuDrivenPbrProgram } from '../gpu-driven/pbr-program';
45
+ import type { GpuDrivenShadowBatchProjection } from '../gpu-driven/production-raster';
46
+ import type { ShadowViewStatePool } from '../gpu-driven/shadow-views';
43
47
  import {
44
48
  GPU_TEXTURE_USAGE_COPY_SRC,
45
49
  GPU_TEXTURE_USAGE_RENDER_ATTACHMENT,
@@ -56,7 +60,9 @@ import type { PointsLinesInspection } from '../points-lines/inspection';
56
60
  import type { PointsLinesRecordPlan } from '../points-lines/record';
57
61
  import type { ReflectionProbeTable } from '../reflection/gpu-table';
58
62
  import type { ReflectionProbeSelectionResult } from '../reflection/projection';
63
+ import type { FrameObservationDomain } from '../render-contract';
59
64
  import type { SsrAdmissionIdentity } from '../ssr/identity';
65
+ import type { TypedFrameObservationCapture } from '../typed-render-graph-primitives';
60
66
  import type { GpuPassTimingReason } from './gpu-pass-timing/errors';
61
67
  import type {
62
68
  GpuPassTimingCapture,
@@ -82,7 +88,7 @@ export interface ReflectionProbeRecordState {
82
88
  >;
83
89
  /** Demand is derived from this frame's renderable/source selection. */
84
90
  readonly fallbackDemand?: boolean;
85
- /** True when at least one selected row must prove a non-zero readback. */
91
+ /** Non-neutral sources require a nonzero diagnostic sample when capture is enabled. */
86
92
  readonly fallbackHasNonNeutral?: boolean;
87
93
  readonly completeSubmission: (
88
94
  submitted: boolean,
@@ -109,27 +115,19 @@ export interface MaterialShaderPipelineEntry {
109
115
  readonly group2Contract: PipelineGroup2Contract;
110
116
  }
111
117
 
112
- /**
113
- * Armed only for the first published recovery frame. Candidate preparation
114
- * must make every pipeline and static residency lookup a cache hit before this
115
- * guard is armed; a miss is a hard failure before queue submission.
116
- */
117
- export interface RecoveryColdWorkGuard {
118
- arm(): void;
119
- notePipelineColdWork(): void;
120
- noteUploadColdWork(): void;
121
- finish(): void;
122
- }
123
-
124
118
  import type {
119
+ AtmosphereShaderSources,
125
120
  RenderDebugOverlay,
126
121
  RenderPipelineContext,
127
122
  RenderRecordPhase,
123
+ SsrShaderSources,
128
124
  VolumetricFogShaderSources,
129
125
  } from '../render-contract';
126
+ import type { GpuDrivenStandardPbrFrameResources } from '../render-pipeline';
130
127
  import type {
131
128
  DispatchEntry,
132
129
  MaterialSnapshot,
130
+ ShadowCasterMembership,
133
131
  SkyboxSnapshot,
134
132
  SkylightSnapshot,
135
133
  } from '../render-system-extract';
@@ -146,11 +144,43 @@ import type {
146
144
  } from './frame-snapshot';
147
145
  import type { FoldDispatchPlan } from './mesh-ssbo';
148
146
 
147
+ /**
148
+ * Armed only for the first published recovery frame. Candidate preparation
149
+ * must make every pipeline and static residency lookup a cache hit before this
150
+ * guard is armed; a miss during draw is a hard failure before queue submission.
151
+ * Explicit preparation between draws remains allowed, including new geometry
152
+ * admitted on the first fixed step after device recovery.
153
+ */
154
+ export interface RecoveryColdWorkGuard {
155
+ arm(): void;
156
+ beginFrame(): void;
157
+ endFrame(): void;
158
+ notePipelineColdWork(): void;
159
+ noteUploadColdWork(): void;
160
+ finish(): void;
161
+ }
162
+
149
163
  export interface RenderSystemRuntime {
150
164
  readonly device: RhiDevice;
165
+ /** Current renderer device generation used to fence receipt-bound captures. */
166
+ readonly deviceGeneration?: number;
167
+ /** Public receipt identity reserved before graph encoding. */
168
+ readonly observationFrameId?: number | undefined;
169
+ /** Graph identity written by the typed graph for the current receipt. */
170
+ observationGraphGeneration?: number | undefined;
171
+ /** Renderer-owned capture bridge consumed after queue submission. */
172
+ readonly observationCaptureOwner?:
173
+ | {
174
+ register(capture: TypedFrameObservationCapture): void;
175
+ consume(frameNumber: number): readonly TypedFrameObservationCapture[];
176
+ drain(): readonly TypedFrameObservationCapture[];
177
+ }
178
+ | undefined;
151
179
  /** Internal backend-fixture hook evaluated at the submit transaction edge. */
152
180
  readonly beforeSubmit?: ((device: RhiDevice) => RhiError | undefined) | undefined;
153
181
  readonly deviceScope: DeviceScope;
182
+ /** Domains explicitly armed for the frame being encoded. */
183
+ readonly observationCaptureDomains?: readonly FrameObservationDomain[] | undefined;
154
184
  /** Resolve a recorder/backend wrapper before configuring the native surface. */
155
185
  readonly resolveSurfaceDevice?: (device: RhiDevice) => Result<RhiDevice, RhiError>;
156
186
  readonly errorRegistry: RhiErrorListenerRegistry;
@@ -164,6 +194,16 @@ export interface RenderSystemRuntime {
164
194
  /** Producer-owned cooked Standard PBR artifact used by GPU-driven projection. */
165
195
  readonly getMaterialShaderArtifact?: (
166
196
  materialShaderId: string,
197
+ request?:
198
+ | {
199
+ readonly vertexColorAvailable?: boolean;
200
+ readonly deformation?: 'rigid' | 'skin';
201
+ readonly clustered?: boolean;
202
+ readonly reflectionFallback?: boolean;
203
+ readonly pass?: 'forward' | 'shadow' | 'depth';
204
+ readonly address?: 'direct' | 'scene-index';
205
+ }
206
+ | boolean,
167
207
  ) => MaterialShaderArtifact | undefined;
168
208
  readonly getMaterialShaderPipeline?: (
169
209
  materialShaderId: string,
@@ -181,10 +221,14 @@ export interface RenderSystemRuntime {
181
221
  vertexLayout?: string,
182
222
  vertexLayoutProjection?: VertexLayoutProjection,
183
223
  shaderModuleMode?: RenderFeatureShaderModuleMode,
184
- layoutKindOverride?: 'pbr' | 'pbr-skin',
224
+ layoutKindOverride?: 'pbr' | 'pbr-skin' | 'gpu-driven-pbr' | 'gpu-driven-skin',
225
+ /** Optional vertex entry override for receipt-owned scene-index passes. */
226
+ vertexEntryPoint?: string,
185
227
  additionalColorFormats?: readonly GPUTextureFormat[],
186
228
  vertexEntry?: string,
187
229
  fragmentEntry?: string,
230
+ particleInputLanes?: number,
231
+ fragmentConstants?: Readonly<Record<string, number>>,
188
232
  ) => RhiRenderPipeline | null;
189
233
  readonly getMaterialShaderPipelineEntry?: (
190
234
  materialShaderId: string,
@@ -202,22 +246,36 @@ export interface RenderSystemRuntime {
202
246
  vertexLayout?: string,
203
247
  vertexLayoutProjection?: VertexLayoutProjection,
204
248
  shaderModuleMode?: RenderFeatureShaderModuleMode,
205
- layoutKindOverride?: 'pbr' | 'pbr-skin',
249
+ layoutKindOverride?: 'pbr' | 'pbr-skin' | 'gpu-driven-pbr' | 'gpu-driven-skin',
250
+ /** Optional vertex entry override for receipt-owned scene-index passes. */
251
+ vertexEntryPoint?: string,
206
252
  additionalColorFormats?: readonly GPUTextureFormat[],
207
253
  vertexEntry?: string,
208
254
  fragmentEntry?: string,
255
+ particleInputLanes?: number,
256
+ fragmentConstants?: Readonly<Record<string, number>>,
209
257
  ) => MaterialShaderPipelineEntry | null;
210
258
  /** Reflection-derived UV count included in the material PipelineSpec cache key. */
211
259
  readonly getMaterialShaderUvSetCount?: (materialShaderId: string) => number | undefined;
212
260
  readonly getMaterialShaderBindingContract?: (
213
261
  materialShaderId: string,
214
- ) => 'group-0' | 'group-0-resource' | 'view-only' | 'view-and-scene-depth' | 'render-material';
262
+ ) =>
263
+ | 'group-0'
264
+ | 'group-0-resource'
265
+ | 'view-only'
266
+ | 'view-and-scene-depth'
267
+ | 'render-material-with-scene-depth'
268
+ | 'render-material-and-scene-depth'
269
+ | 'render-material';
215
270
  readonly getParamSchema?: (materialShaderId: string) => readonly ParamSchemaEntry[] | undefined;
216
271
  readonly getMaterialBindGroupLayout?: (
217
272
  materialShaderId: string,
218
273
  materialParamSchema?: readonly ParamSchemaEntry[],
219
274
  ) => BindGroupLayout | undefined;
220
- recoveryColdWorkGuard?: RecoveryColdWorkGuard | undefined;
275
+ /** Handle-first factory for built-in same-frame GPU producers. */
276
+ readonly immediateShaderModuleFactory?: PipelineBuilderShaderModuleFactory;
277
+ /** Optional guard for the first recovery frame's cold-work boundary. */
278
+ readonly recoveryColdWorkGuard?: RecoveryColdWorkGuard | undefined;
221
279
  readonly metrics: EngineMetrics;
222
280
  readonly lookupPostProcess?: (
223
281
  id: string,
@@ -226,7 +284,7 @@ export interface RenderSystemRuntime {
226
284
  readonly getPostProcessPipeline?: (
227
285
  id: string,
228
286
  bgl: BindGroupLayout,
229
- colorFormat: GPUTextureFormat,
287
+ colorFormats: readonly GPUTextureFormat[],
230
288
  entry?: import('../fullscreen-post-process-pass').PostProcessShaderEntry,
231
289
  ) => RhiRenderPipeline | null;
232
290
  /** Candidate-owned post-process pipelines transferred at publication. */
@@ -371,15 +429,27 @@ export interface PipelineState {
371
429
  readonly probeInstancesBindGroupLayout?: BindGroupLayout;
372
430
  readonly identityInstanceBuffer: Buffer;
373
431
  readonly defaultSampler: Sampler;
374
- readonly nearestSampler: Sampler;
375
432
  readonly fallbackTextureView: TextureView;
376
433
  readonly unlitPipeline: RhiRenderPipeline | null;
377
434
  readonly standardPipeline: RhiRenderPipeline | null;
435
+ /** Producer-owned Standard PBR module for this device generation. */
436
+ readonly standardPbrShaderModule: ShaderModule | null;
437
+ /** Producer-owned skinned Standard PBR module for this device generation. */
438
+ readonly pbrSkinShaderModule: ShaderModule | null;
439
+ /** Producer-resolved Standard PBR UV ABI count for geometry projection. */
440
+ readonly standardPbrShaderUvSetCount: number;
378
441
  readonly unlitPipelineMsaa: RhiRenderPipeline | null;
379
442
  readonly unlitPipelineHdrMsaa: RhiRenderPipeline | null;
380
443
  readonly pbrPipelineLayout: PipelineLayout | null;
444
+ /** Dedicated slot-3 layout for scene-index GPU-driven Standard PBR draws. */
445
+ readonly gpuDrivenInstancesBindGroupLayout?: BindGroupLayout | null;
446
+ readonly gpuDrivenPbrPipelineLayout?: PipelineLayout | null;
447
+ /** Device-owned shader modules paired with their exact Standard PBR receipts. */
448
+ readonly gpuDrivenPbrPrograms?: ReadonlyMap<string, GpuDrivenPbrProgram>;
449
+ readonly gpuDrivenPbrSkinPipelineLayout?: PipelineLayout | null;
381
450
  readonly pbrProbePipelineLayout?: PipelineLayout | null;
382
451
  readonly hdrpPbrPipelineLayout: PipelineLayout | null;
452
+ readonly hdrpMeshBindGroupLayout?: BindGroupLayout | null;
383
453
  readonly hdrpProbePbrPipelineLayout?: PipelineLayout | null;
384
454
  readonly hdrpClusterMembershipPipeline: ComputePipeline | null;
385
455
  readonly hdrpClusterMembershipBindGroupLayout: BindGroupLayout | null;
@@ -420,6 +490,7 @@ export interface RenderSystemInternals extends RenderSystemRuntime {
420
490
  readonly build?: string | undefined;
421
491
  /** Host identity binding for the renderer-owned SSR dependency seam. */
422
492
  readonly ssrIdentity?: SsrAdmissionIdentity | undefined;
493
+ readonly captureReflectionFallbackReadback?: boolean | undefined;
423
494
  readonly standardProfile?: StandardProfile | undefined;
424
495
  readonly standardPipeline: RenderFrameState['activePipeline'];
425
496
  readonly featureHost?: RenderFeatureHost | undefined;
@@ -453,7 +524,7 @@ export interface RenderSystemInternals extends RenderSystemRuntime {
453
524
  | ((
454
525
  entry: import('../fullscreen-post-process-pass').PostProcessShaderEntry,
455
526
  bgl: BindGroupLayout,
456
- colorFormat: GPUTextureFormat,
527
+ colorFormats: readonly GPUTextureFormat[],
457
528
  label: string,
458
529
  ) => RhiRenderPipeline | null)
459
530
  | undefined;
@@ -469,9 +540,15 @@ export interface RenderSystemInternals extends RenderSystemRuntime {
469
540
  ) => void;
470
541
  /** Composed renderer utility sources installed atomically at build-ready. */
471
542
  volumetricFogShaders?: VolumetricFogShaderSources | undefined;
543
+ /** Composed renderer utility sources installed atomically at build-ready. */
544
+ ssrShaders?: SsrShaderSources | undefined;
545
+ /** Composed renderer utility sources installed atomically at build-ready. */
546
+ atmosphereShaders?: AtmosphereShaderSources | undefined;
472
547
  }
473
548
 
474
549
  export interface _StandardForwardSceneView {
550
+ readonly environmentIbl?: { readonly irradiance: TextureView; readonly prefilter: TextureView };
551
+ readonly captureDispatch?: readonly DispatchEntry[];
475
552
  readonly assets: AssetRegistry;
476
553
  readonly store: import('../device/gpu-residency').GpuResidencyCache;
477
554
  readonly pipelineState: PipelineState;
@@ -492,9 +569,6 @@ export interface _StandardForwardSceneView {
492
569
  readonly profilePhase?: <T>(phase: RenderRecordPhase, action: () => T) => T;
493
570
  readonly directionalShadowCacheReuse: boolean;
494
571
  readonly world: World;
495
- readonly gpuDrivenEntityKeys: ReadonlySet<number>;
496
- /** Renderer-local world namespace paired with gpuDrivenEntityKeys. */
497
- readonly gpuDrivenWorldKeys?: readonly number[];
498
572
  readonly tonemapActive: boolean;
499
573
  readonly geometryColorView: TextureView | null;
500
574
  readonly geometryDepthView: TextureView | null;
@@ -513,8 +587,33 @@ export interface _StandardForwardSceneView {
513
587
  readonly foldDispatchPlan: FoldDispatchPlan | null;
514
588
  readonly materialSlotIndices: readonly (readonly number[])[];
515
589
  readonly materialSlots: readonly MaterialSnapshot[];
516
- readonly materialSlotOwners: readonly number[];
590
+ readonly materialSlotOwners: readonly ValidatedRenderable[];
517
591
  readonly materialSlotCount: number;
592
+ /** Filled by main-pass material producers before the GPU-driven raster tail. */
593
+ readonly gpuDrivenStandardPbrFrameResources?: GpuDrivenStandardPbrFrameResources;
594
+ /** Scene table retained by the renderer even when no draw is GPU-admitted. */
595
+ readonly gpuDrivenSceneMaterialBuffer?: Buffer;
596
+ /** Concrete main-pass draw identities already claimed by the capable GPU lane. */
597
+ readonly gpuDrivenDrawKeys?: ReadonlySet<string>;
598
+ readonly gpuDrivenShadowViews?: ShadowViewStatePool;
599
+ readonly gpuDrivenShadowBatchProjections?: ReadonlyMap<
600
+ string,
601
+ ReadonlyMap<number, GpuDrivenShadowBatchProjection>
602
+ >;
603
+ /** Concrete ShadowCaster keys already claimed by the capable GPU subset. */
604
+ readonly gpuDrivenShadowDrawKeys?: ReadonlySet<string>;
605
+ /** View-scoped ShadowCaster claims for exact CPU residual routing. */
606
+ readonly gpuDrivenShadowDrawKeysByView?: ReadonlyMap<string, ReadonlySet<string>>;
607
+ /** Extracted structured ShadowCaster ownership facts. */
608
+ readonly shadowCasterMembership?: readonly ShadowCasterMembership[];
609
+ /** Complete retained ShadowCaster rows, including camera-culled casters. */
610
+ readonly shadowValidatedOrdered?: readonly ValidatedRenderable[];
611
+ /** Dispatch entries remapped to the complete retained ShadowCaster rows. */
612
+ readonly shadowDispatch?: readonly DispatchEntry[];
613
+ /** Mesh-SSBO slot base reserved for the retained ShadowCaster rows. */
614
+ readonly shadowMeshSsboBase?: number;
615
+ /** Renderer-stable world keys used by ShadowCaster ownership identities. */
616
+ readonly shadowCasterWorldKeys?: readonly number[];
518
617
  readonly pointsLines: PointsLinesRecordOwner | undefined;
519
618
  readonly materialBgAssemblyCache: Map<string, MaterialBgAssemblyCacheEntry>;
520
619
  /** Record-stage proof callback; invoked only after a real draw command is encoded. */