@forgeax/engine-render 0.1.27 → 0.1.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (655) hide show
  1. package/README.md +842 -124
  2. package/dist/assembly/atmosphere-shader-prewarm.d.ts +6 -0
  3. package/dist/assembly/atmosphere-shader-prewarm.d.ts.map +1 -0
  4. package/dist/assembly/dynamic-geometry-host.d.ts +52 -0
  5. package/dist/assembly/dynamic-geometry-host.d.ts.map +1 -0
  6. package/dist/assembly/dynamic-geometry-runtime.d.ts +20 -0
  7. package/dist/assembly/dynamic-geometry-runtime.d.ts.map +1 -0
  8. package/dist/assembly/factory.d.ts +3 -1
  9. package/dist/assembly/factory.d.ts.map +1 -1
  10. package/dist/assembly/gpu-driven-owner.d.ts +10 -0
  11. package/dist/assembly/gpu-driven-owner.d.ts.map +1 -0
  12. package/dist/assembly/host-contract.d.ts +19 -0
  13. package/dist/assembly/host-contract.d.ts.map +1 -1
  14. package/dist/assembly/material/assembly.d.ts +7 -0
  15. package/dist/assembly/material/assembly.d.ts.map +1 -1
  16. package/dist/assembly/material-shader-policy.d.ts +3 -1
  17. package/dist/assembly/material-shader-policy.d.ts.map +1 -1
  18. package/dist/assembly/recovery/failure-location.d.ts +12 -0
  19. package/dist/assembly/recovery/failure-location.d.ts.map +1 -0
  20. package/dist/assembly/recovery/renderer-recover.d.ts +6 -4
  21. package/dist/assembly/recovery/renderer-recover.d.ts.map +1 -1
  22. package/dist/assembly/renderer-facade.d.ts.map +1 -1
  23. package/dist/assembly/renderer-feature-inspection.d.ts +5 -0
  24. package/dist/assembly/renderer-feature-inspection.d.ts.map +1 -0
  25. package/dist/assembly/renderer-frame-transaction.d.ts +19 -0
  26. package/dist/assembly/renderer-frame-transaction.d.ts.map +1 -1
  27. package/dist/assembly/renderer-helpers.d.ts +3 -0
  28. package/dist/assembly/renderer-helpers.d.ts.map +1 -1
  29. package/dist/assembly/renderer-inspection.d.ts +4 -0
  30. package/dist/assembly/renderer-inspection.d.ts.map +1 -1
  31. package/dist/assembly/shader-prewarm-policy.d.ts +6 -0
  32. package/dist/assembly/shader-prewarm-policy.d.ts.map +1 -1
  33. package/dist/assembly/skin-palette-owner.d.ts +8 -0
  34. package/dist/assembly/skin-palette-owner.d.ts.map +1 -0
  35. package/dist/assembly/ssr-shader-prewarm.d.ts +6 -0
  36. package/dist/assembly/ssr-shader-prewarm.d.ts.map +1 -0
  37. package/dist/assembly/webgpu-device-loss.d.ts +15 -0
  38. package/dist/assembly/webgpu-device-loss.d.ts.map +1 -0
  39. package/dist/assembly/webgpu-pbr-ready.d.ts +38 -0
  40. package/dist/assembly/webgpu-pbr-ready.d.ts.map +1 -0
  41. package/dist/assembly/webgpu-ready-mipmap.d.ts +11 -0
  42. package/dist/assembly/webgpu-ready-mipmap.d.ts.map +1 -0
  43. package/dist/assembly/webgpu-ready.d.ts +7 -3
  44. package/dist/assembly/webgpu-ready.d.ts.map +1 -1
  45. package/dist/assembly/webgpu-renderer-bootstrap.d.ts +10 -0
  46. package/dist/assembly/webgpu-renderer-bootstrap.d.ts.map +1 -0
  47. package/dist/assembly/webgpu-renderer-contract.d.ts +62 -0
  48. package/dist/assembly/webgpu-renderer-contract.d.ts.map +1 -0
  49. package/dist/assembly/webgpu-renderer-guards.d.ts +9 -0
  50. package/dist/assembly/webgpu-renderer-guards.d.ts.map +1 -0
  51. package/dist/assembly/webgpu-renderer-observation.d.ts +6 -0
  52. package/dist/assembly/webgpu-renderer-observation.d.ts.map +1 -0
  53. package/dist/assembly/webgpu-renderer-recovery-failure.d.ts +12 -0
  54. package/dist/assembly/webgpu-renderer-recovery-failure.d.ts.map +1 -0
  55. package/dist/assembly/webgpu-renderer.d.ts +7 -141
  56. package/dist/assembly/webgpu-renderer.d.ts.map +1 -1
  57. package/dist/assembly/webgpu-vertex-layouts.d.ts +28 -84
  58. package/dist/assembly/webgpu-vertex-layouts.d.ts.map +1 -1
  59. package/dist/authoring.mjs +3 -3
  60. package/dist/{chunk-ADHHVYLW.mjs → chunk-33XZFTQU.mjs} +245 -39
  61. package/dist/chunk-33XZFTQU.mjs.map +1 -0
  62. package/dist/{chunk-GF523LHF.mjs → chunk-BLXGONR2.mjs} +30 -12
  63. package/dist/chunk-BLXGONR2.mjs.map +1 -0
  64. package/dist/{chunk-KM2NOX2I.mjs → chunk-BQVQOQJH.mjs} +958 -254
  65. package/dist/chunk-BQVQOQJH.mjs.map +1 -0
  66. package/dist/{chunk-HKXTW355.mjs → chunk-BTWH7BP4.mjs} +386 -17
  67. package/dist/chunk-BTWH7BP4.mjs.map +1 -0
  68. package/dist/{chunk-TMIASV2N.mjs → chunk-FUODTTIA.mjs} +3934 -676
  69. package/dist/chunk-FUODTTIA.mjs.map +1 -0
  70. package/dist/{chunk-FJ6P52EE.mjs → chunk-ILQ5MEZF.mjs} +3 -17
  71. package/dist/chunk-ILQ5MEZF.mjs.map +1 -0
  72. package/dist/{chunk-E34VL5VI.mjs → chunk-JQTSEI3Z.mjs} +3 -3
  73. package/dist/{chunk-E34VL5VI.mjs.map → chunk-JQTSEI3Z.mjs.map} +1 -1
  74. package/dist/{chunk-GE3SDD72.mjs → chunk-NICXSHAT.mjs} +16 -38
  75. package/dist/chunk-NICXSHAT.mjs.map +1 -0
  76. package/dist/{chunk-ZZ4YQ474.mjs → chunk-NRNXBLIJ.mjs} +577 -7
  77. package/dist/chunk-NRNXBLIJ.mjs.map +1 -0
  78. package/dist/{chunk-JDWARUOI.mjs → chunk-PA5DRJNI.mjs} +17 -3
  79. package/dist/chunk-PA5DRJNI.mjs.map +1 -0
  80. package/dist/{chunk-XDP6XE5V.mjs → chunk-S4DNKQYQ.mjs} +1118 -446
  81. package/dist/chunk-S4DNKQYQ.mjs.map +1 -0
  82. package/dist/components/camera.d.ts +62 -2
  83. package/dist/components/camera.d.ts.map +1 -1
  84. package/dist/components/index.d.ts +1 -0
  85. package/dist/components/index.d.ts.map +1 -1
  86. package/dist/components/instances.d.ts +6 -20
  87. package/dist/components/instances.d.ts.map +1 -1
  88. package/dist/components/scene-instance.d.ts +2 -1
  89. package/dist/components/scene-instance.d.ts.map +1 -1
  90. package/dist/components/screen-space-reflection.d.ts +14 -0
  91. package/dist/components/screen-space-reflection.d.ts.map +1 -0
  92. package/dist/construct-renderer.mjs +13805 -7186
  93. package/dist/construct-renderer.mjs.map +1 -1
  94. package/dist/device/gpu-residency.d.ts +11 -17
  95. package/dist/device/gpu-residency.d.ts.map +1 -1
  96. package/dist/device/mesh-residency-lifetime.d.ts +21 -0
  97. package/dist/device/mesh-residency-lifetime.d.ts.map +1 -0
  98. package/dist/dynamic-geometry.d.ts +125 -0
  99. package/dist/dynamic-geometry.d.ts.map +1 -0
  100. package/dist/environment/background.d.ts +6 -0
  101. package/dist/environment/background.d.ts.map +1 -0
  102. package/dist/errors/gpu-driven.d.ts +6 -3
  103. package/dist/errors/gpu-driven.d.ts.map +1 -1
  104. package/dist/errors/render.d.ts +7 -4
  105. package/dist/errors/render.d.ts.map +1 -1
  106. package/dist/extract/camera.d.ts.map +1 -1
  107. package/dist/extract/gpu-driven.d.ts +33 -3
  108. package/dist/extract/gpu-driven.d.ts.map +1 -1
  109. package/dist/features/host.d.ts +23 -1
  110. package/dist/features/host.d.ts.map +1 -1
  111. package/dist/features/noise-texture.d.ts +17 -0
  112. package/dist/features/noise-texture.d.ts.map +1 -0
  113. package/dist/features/plan.d.ts +83 -2
  114. package/dist/features/plan.d.ts.map +1 -1
  115. package/dist/features/prepared-gpu-work.d.ts +37 -4
  116. package/dist/features/prepared-gpu-work.d.ts.map +1 -1
  117. package/dist/features/prepared-graphics-store.d.ts.map +1 -1
  118. package/dist/features/prepared-graphics.d.ts +5 -0
  119. package/dist/features/prepared-graphics.d.ts.map +1 -1
  120. package/dist/features/render-graph-compute.d.ts +5 -3
  121. package/dist/features/render-graph-compute.d.ts.map +1 -1
  122. package/dist/features/render-graph-contribution.d.ts +11 -3
  123. package/dist/features/render-graph-contribution.d.ts.map +1 -1
  124. package/dist/features/render-graph-raster.d.ts +19 -3
  125. package/dist/features/render-graph-raster.d.ts.map +1 -1
  126. package/dist/features/types.d.ts +11 -0
  127. package/dist/features/types.d.ts.map +1 -1
  128. package/dist/fullscreen-post-process-pass.d.ts +2 -0
  129. package/dist/fullscreen-post-process-pass.d.ts.map +1 -1
  130. package/dist/gpu-driven/batch-topology.d.ts +34 -1
  131. package/dist/gpu-driven/batch-topology.d.ts.map +1 -1
  132. package/dist/gpu-driven/pbr-program.d.ts +10 -0
  133. package/dist/gpu-driven/pbr-program.d.ts.map +1 -0
  134. package/dist/gpu-driven/prepared-draw.d.ts.map +1 -1
  135. package/dist/gpu-driven/production-raster.d.ts +144 -23
  136. package/dist/gpu-driven/production-raster.d.ts.map +1 -1
  137. package/dist/gpu-driven/shadow-views.d.ts +126 -0
  138. package/dist/gpu-driven/shadow-views.d.ts.map +1 -0
  139. package/dist/gpu-driven/view-gpu.d.ts +18 -2
  140. package/dist/gpu-driven/view-gpu.d.ts.map +1 -1
  141. package/dist/gpu-scene-schema.d.ts +2 -8
  142. package/dist/gpu-scene-schema.d.ts.map +1 -1
  143. package/dist/gpu-scene.d.ts +14 -0
  144. package/dist/gpu-scene.d.ts.map +1 -1
  145. package/dist/gpu-texture-usage.d.ts +1 -0
  146. package/dist/gpu-texture-usage.d.ts.map +1 -1
  147. package/dist/hdrp-buffers.d.ts +6 -0
  148. package/dist/hdrp-buffers.d.ts.map +1 -1
  149. package/dist/ibl/frame-resources.d.ts +8 -0
  150. package/dist/ibl/frame-resources.d.ts.map +1 -0
  151. package/dist/ibl/skylight-bind-group.d.ts.map +1 -1
  152. package/dist/index.d.ts +21 -8
  153. package/dist/index.d.ts.map +1 -1
  154. package/dist/index.mjs +8 -7
  155. package/dist/index.mjs.map +1 -1
  156. package/dist/inspection-types.d.ts +164 -0
  157. package/dist/inspection-types.d.ts.map +1 -1
  158. package/dist/instances-derived-bounds.d.ts +11 -0
  159. package/dist/instances-derived-bounds.d.ts.map +1 -1
  160. package/dist/instances.d.ts +89 -44
  161. package/dist/instances.d.ts.map +1 -1
  162. package/dist/internal.d.ts +3 -0
  163. package/dist/internal.d.ts.map +1 -1
  164. package/dist/internal.mjs +118 -10
  165. package/dist/internal.mjs.map +1 -1
  166. package/dist/lifecycle.d.ts +2 -1
  167. package/dist/lifecycle.d.ts.map +1 -1
  168. package/dist/material-row.d.ts +5 -0
  169. package/dist/material-row.d.ts.map +1 -0
  170. package/dist/materials.d.ts +15 -0
  171. package/dist/materials.d.ts.map +1 -1
  172. package/dist/pbr-pipeline.d.ts +21 -5
  173. package/dist/pbr-pipeline.d.ts.map +1 -1
  174. package/dist/pipeline/standard-forward-lane.d.ts.map +1 -1
  175. package/dist/pipeline/standard-output/auto-exposure/capability.d.ts +12 -0
  176. package/dist/pipeline/standard-output/auto-exposure/capability.d.ts.map +1 -0
  177. package/dist/pipeline/standard-output/auto-exposure/gpu.d.ts +70 -0
  178. package/dist/pipeline/standard-output/auto-exposure/gpu.d.ts.map +1 -0
  179. package/dist/pipeline/standard-output/auto-exposure/graph.d.ts +75 -0
  180. package/dist/pipeline/standard-output/auto-exposure/graph.d.ts.map +1 -0
  181. package/dist/pipeline/standard-output/auto-exposure/inspection.d.ts +111 -0
  182. package/dist/pipeline/standard-output/auto-exposure/inspection.d.ts.map +1 -0
  183. package/dist/pipeline/standard-output/auto-exposure/oracle.d.ts +16 -0
  184. package/dist/pipeline/standard-output/auto-exposure/oracle.d.ts.map +1 -0
  185. package/dist/pipeline/standard-output/auto-exposure/preset.d.ts +14 -0
  186. package/dist/pipeline/standard-output/auto-exposure/preset.d.ts.map +1 -0
  187. package/dist/pipeline/standard-output/auto-exposure/state.d.ts +46 -0
  188. package/dist/pipeline/standard-output/auto-exposure/state.d.ts.map +1 -0
  189. package/dist/pipeline/standard-output/color-transform.d.ts +27 -0
  190. package/dist/pipeline/standard-output/color-transform.d.ts.map +1 -0
  191. package/dist/pipeline/standard-output/graph.d.ts +15 -0
  192. package/dist/pipeline/standard-output/graph.d.ts.map +1 -0
  193. package/dist/pipeline/standard-output/lut-admission.d.ts +29 -0
  194. package/dist/pipeline/standard-output/lut-admission.d.ts.map +1 -0
  195. package/dist/pipeline/standard-output/lut-gpu.d.ts +48 -0
  196. package/dist/pipeline/standard-output/lut-gpu.d.ts.map +1 -0
  197. package/dist/pipeline/standard-output/lut-state.d.ts +68 -0
  198. package/dist/pipeline/standard-output/lut-state.d.ts.map +1 -0
  199. package/dist/pipeline/standard-output/resources.d.ts +10 -0
  200. package/dist/pipeline/standard-output/resources.d.ts.map +1 -0
  201. package/dist/pipeline/standard-output/types.d.ts +39 -0
  202. package/dist/pipeline/standard-output/types.d.ts.map +1 -0
  203. package/dist/pipeline/standard-pipeline.d.ts.map +1 -1
  204. package/dist/pipeline/standard-post.d.ts +2 -2
  205. package/dist/pipeline/standard-post.d.ts.map +1 -1
  206. package/dist/pipeline-builder.d.ts +2 -1
  207. package/dist/pipeline-builder.d.ts.map +1 -1
  208. package/dist/pipeline-spec-types.d.ts +4 -0
  209. package/dist/pipeline-spec-types.d.ts.map +1 -1
  210. package/dist/pipeline-spec.d.ts +1 -9
  211. package/dist/pipeline-spec.d.ts.map +1 -1
  212. package/dist/points-lines/standard-owner.d.ts +1 -1
  213. package/dist/points-lines/standard-owner.d.ts.map +1 -1
  214. package/dist/prepare/prepared-graphics-resolver.d.ts +6 -1
  215. package/dist/prepare/prepared-graphics-resolver.d.ts.map +1 -1
  216. package/dist/record/dynamic-geometry-consumption.d.ts +15 -0
  217. package/dist/record/dynamic-geometry-consumption.d.ts.map +1 -0
  218. package/dist/record/frame-lighting.d.ts +3 -3
  219. package/dist/record/frame-lighting.d.ts.map +1 -1
  220. package/dist/record/frame-snapshot.d.ts +106 -5
  221. package/dist/record/frame-snapshot.d.ts.map +1 -1
  222. package/dist/record/frame-targets.d.ts.map +1 -1
  223. package/dist/record/frame.d.ts +39 -4
  224. package/dist/record/frame.d.ts.map +1 -1
  225. package/dist/record/main-pass-geometry.d.ts +7 -8
  226. package/dist/record/main-pass-geometry.d.ts.map +1 -1
  227. package/dist/record/main-pass-material.d.ts +38 -1
  228. package/dist/record/main-pass-material.d.ts.map +1 -1
  229. package/dist/record/main-pass-sprite-draws.d.ts +2 -10
  230. package/dist/record/main-pass-sprite-draws.d.ts.map +1 -1
  231. package/dist/record/main-pass.d.ts +12 -2
  232. package/dist/record/main-pass.d.ts.map +1 -1
  233. package/dist/record/mesh-ssbo.d.ts +15 -6
  234. package/dist/record/mesh-ssbo.d.ts.map +1 -1
  235. package/dist/record/prepared-material-bindings.d.ts +19 -0
  236. package/dist/record/prepared-material-bindings.d.ts.map +1 -0
  237. package/dist/record/recovery-pipeline.d.ts +2 -9
  238. package/dist/record/recovery-pipeline.d.ts.map +1 -1
  239. package/dist/record/render-context.d.ts +76 -26
  240. package/dist/record/render-context.d.ts.map +1 -1
  241. package/dist/record/shadow-pass.d.ts +62 -7
  242. package/dist/record/shadow-pass.d.ts.map +1 -1
  243. package/dist/record/skybox-post-pass.d.ts +1 -1
  244. package/dist/record/skybox-post-pass.d.ts.map +1 -1
  245. package/dist/record/typed-frame-graph.d.ts +35 -7
  246. package/dist/record/typed-frame-graph.d.ts.map +1 -1
  247. package/dist/record/view-ubo.d.ts +1 -0
  248. package/dist/record/view-ubo.d.ts.map +1 -1
  249. package/dist/recovery/render-system-candidate.d.ts +10 -2
  250. package/dist/recovery/render-system-candidate.d.ts.map +1 -1
  251. package/dist/recovery/render-system-roots.d.ts +11 -0
  252. package/dist/recovery/render-system-roots.d.ts.map +1 -0
  253. package/dist/recovery/types.d.ts +76 -0
  254. package/dist/recovery/types.d.ts.map +1 -0
  255. package/dist/reflection/record-owner.d.ts +0 -2
  256. package/dist/reflection/record-owner.d.ts.map +1 -1
  257. package/dist/render-contract.d.ts +185 -30
  258. package/dist/render-contract.d.ts.map +1 -1
  259. package/dist/render-graph-primitives.d.ts +1 -0
  260. package/dist/render-graph-primitives.d.ts.map +1 -1
  261. package/dist/render-pipeline.d.ts +64 -5
  262. package/dist/render-pipeline.d.ts.map +1 -1
  263. package/dist/render-system-extract-tail.d.ts +7 -5
  264. package/dist/render-system-extract-tail.d.ts.map +1 -1
  265. package/dist/render-system-extract.d.ts +101 -41
  266. package/dist/render-system-extract.d.ts.map +1 -1
  267. package/dist/render-system-projections.d.ts +22 -0
  268. package/dist/render-system-projections.d.ts.map +1 -0
  269. package/dist/render-system.d.ts +34 -77
  270. package/dist/render-system.d.ts.map +1 -1
  271. package/dist/scene/render-scene-types.d.ts +14 -7
  272. package/dist/scene/render-scene-types.d.ts.map +1 -1
  273. package/dist/scene/render-scene.d.ts +29 -11
  274. package/dist/scene/render-scene.d.ts.map +1 -1
  275. package/dist/scene/shadow-visibility.d.ts +5 -0
  276. package/dist/scene/shadow-visibility.d.ts.map +1 -0
  277. package/dist/ssr/admission.d.ts +70 -1
  278. package/dist/ssr/admission.d.ts.map +1 -1
  279. package/dist/ssr/compose.d.ts +13 -0
  280. package/dist/ssr/compose.d.ts.map +1 -0
  281. package/dist/ssr/errors.d.ts +35 -0
  282. package/dist/ssr/errors.d.ts.map +1 -1
  283. package/dist/ssr/graph.d.ts +60 -0
  284. package/dist/ssr/graph.d.ts.map +1 -0
  285. package/dist/ssr/history.d.ts +97 -0
  286. package/dist/ssr/history.d.ts.map +1 -0
  287. package/dist/ssr/hiz.d.ts +37 -0
  288. package/dist/ssr/hiz.d.ts.map +1 -0
  289. package/dist/ssr/inspection.d.ts +42 -0
  290. package/dist/ssr/inspection.d.ts.map +1 -0
  291. package/dist/ssr/resources.d.ts +58 -0
  292. package/dist/ssr/resources.d.ts.map +1 -0
  293. package/dist/ssr/temporal.d.ts +38 -0
  294. package/dist/ssr/temporal.d.ts.map +1 -0
  295. package/dist/systems/skin-palette-allocator.d.ts +32 -10
  296. package/dist/systems/skin-palette-allocator.d.ts.map +1 -1
  297. package/dist/systems/skin-palette-types.d.ts +15 -0
  298. package/dist/systems/skin-palette-types.d.ts.map +1 -1
  299. package/dist/systems/transparent-dispatch.d.ts +9 -0
  300. package/dist/systems/transparent-dispatch.d.ts.map +1 -0
  301. package/dist/targets/material-source.d.ts +7 -0
  302. package/dist/targets/material-source.d.ts.map +1 -1
  303. package/dist/temporal/frame-coordinator.d.ts +7 -0
  304. package/dist/temporal/frame-coordinator.d.ts.map +1 -1
  305. package/dist/temporal/gpu.d.ts +8 -0
  306. package/dist/temporal/gpu.d.ts.map +1 -1
  307. package/dist/temporal/history.d.ts.map +1 -1
  308. package/dist/temporal/index.mjs +6 -6
  309. package/dist/temporal/inspection.d.ts.map +1 -1
  310. package/dist/temporal/standard-scene-data.d.ts +2 -1
  311. package/dist/temporal/standard-scene-data.d.ts.map +1 -1
  312. package/dist/temporal/temporal-view.d.ts +2 -0
  313. package/dist/temporal/temporal-view.d.ts.map +1 -1
  314. package/dist/typed-render-graph-primitives.d.ts +35 -1
  315. package/dist/typed-render-graph-primitives.d.ts.map +1 -1
  316. package/dist/typed-shadow-passes.d.ts +3 -1
  317. package/dist/typed-shadow-passes.d.ts.map +1 -1
  318. package/dist/volume/temporal.d.ts +6 -0
  319. package/dist/volume/temporal.d.ts.map +1 -1
  320. package/package.json +21 -20
  321. package/src/__tests__/auto-exposure-gpu-evidence.ts +291 -0
  322. package/src/__tests__/auto-exposure-inspection.unit.test.ts +80 -0
  323. package/src/__tests__/auto-exposure-transaction.integration.test.ts +99 -0
  324. package/src/__tests__/auto-exposure.browser.test.ts +33 -0
  325. package/src/__tests__/auto-exposure.dawn.test.ts +33 -0
  326. package/src/__tests__/detached-inspection.integration.test.ts +5 -0
  327. package/src/__tests__/device-scope-lifecycle.unit.test.ts +18 -0
  328. package/src/__tests__/device-scope-stale-matrix.unit.test.ts +18 -0
  329. package/src/__tests__/docs-gate-green.unit.test.ts +3 -3
  330. package/src/__tests__/dynamic-geometry-host.unit.test.ts +1123 -0
  331. package/src/__tests__/dynamic-geometry.unit.test.ts +233 -0
  332. package/src/__tests__/factory-contract.integration.test.ts +73 -22
  333. package/src/__tests__/fallback-row-stride-surface.unit.test.ts +19 -0
  334. package/src/__tests__/feature-depth-input.dawn.test.ts +121 -0
  335. package/src/__tests__/feature-noise.unit.test.ts +38 -0
  336. package/src/__tests__/fixtures/taa-resolve-pinned-baseline.wgsl +301 -0
  337. package/src/__tests__/frame-camera-selection.unit.test.ts +131 -0
  338. package/src/__tests__/frame-plan-contract.unit.test.ts +24 -0
  339. package/src/__tests__/frame-targets.unit.test.ts +24 -0
  340. package/src/__tests__/fullscreen-feature-plan.unit.test.ts +3 -0
  341. package/src/__tests__/gpu-driven-baseline.characterization.test.ts +79 -0
  342. package/src/__tests__/gpu-driven-batch-topology-pbr.unit.test.ts +287 -6
  343. package/src/__tests__/gpu-driven-indirect-raster-evidence.ts +122 -142
  344. package/src/__tests__/gpu-driven-indirect-raster.browser.test.ts +10 -1
  345. package/src/__tests__/gpu-driven-lod-cache.unit.test.ts +264 -0
  346. package/src/__tests__/gpu-driven-mesh-world-identity.unit.test.ts +349 -0
  347. package/src/__tests__/gpu-driven-pbr.dawn.test.ts +1417 -0
  348. package/src/__tests__/gpu-driven-pbr.integration.test.ts +21 -0
  349. package/src/__tests__/gpu-driven-production-fixture.ts +96 -0
  350. package/src/__tests__/gpu-driven-production.integration.test.ts +1075 -93
  351. package/src/__tests__/gpu-driven-scaling.unit.test.ts +1 -3
  352. package/src/__tests__/gpu-driven-shadow-views.browser.test.ts +63 -0
  353. package/src/__tests__/gpu-driven-shadow-views.dawn.test.ts +294 -0
  354. package/src/__tests__/gpu-driven-shadow-views.integration.test.ts +97 -0
  355. package/src/__tests__/gpu-driven-shadow-views.unit.test.ts +168 -0
  356. package/src/__tests__/gpu-driven-skin-contract.test-d.ts +11 -0
  357. package/src/__tests__/gpu-driven-view-gpu-evidence.ts +72 -20
  358. package/src/__tests__/gpu-driven-view-graph.integration.test.ts +30 -9
  359. package/src/__tests__/gpu-driven-view.unit.test.ts +159 -52
  360. package/src/__tests__/gpu-pass-timing.browser.test.ts +6 -1
  361. package/src/__tests__/gpu-resource-store-stride.unit.test.ts +42 -0
  362. package/src/__tests__/gpu-scene-render-graph-gpu.ts +19 -5
  363. package/src/__tests__/gpu-scene.dawn.test.ts +40 -13
  364. package/src/__tests__/gpu-scene.unit.test.ts +559 -33
  365. package/src/__tests__/instances-culling.integration.test.ts +36 -10
  366. package/src/__tests__/instances-derived-bounds.unit.test.ts +54 -0
  367. package/src/__tests__/instances-store.unit.test.ts +242 -39
  368. package/src/__tests__/ktx2-basis-gpu-consumer.dawn.test.ts +6 -0
  369. package/src/__tests__/lighting-scene-roundtrip.integration.test.ts +13 -16
  370. package/src/__tests__/lut-lkg-transaction.integration.test.ts +122 -0
  371. package/src/__tests__/material-contract-inventory.unit.test.ts +5 -6
  372. package/src/__tests__/material-dispatch-shader-id.unit.test.ts +51 -0
  373. package/src/__tests__/material-lane-selection.unit.test.ts +60 -0
  374. package/src/__tests__/material-numeric-upload.unit.test.ts +53 -0
  375. package/src/__tests__/material-texture-handles.unit.test.ts +18 -0
  376. package/src/__tests__/material-texture-source.unit.test.ts +87 -0
  377. package/src/__tests__/materials-authoring-validation.unit.test.ts +41 -0
  378. package/src/__tests__/materials-standard-contract.unit.test.ts +52 -2
  379. package/src/__tests__/mesh-buffer-usage-surface.unit.test.ts +4 -0
  380. package/src/__tests__/mesh-submission-lifetime.unit.test.ts +53 -0
  381. package/src/__tests__/normal-fallback.dawn.test.ts +122 -0
  382. package/src/__tests__/particle-material-input-layout.unit.test.ts +104 -0
  383. package/src/__tests__/physical-clearcoat.integration.test.ts +37 -3
  384. package/src/__tests__/pipeline-texture-specialization.unit.test.ts +138 -0
  385. package/src/__tests__/point-shadow-inspection.unit.test.ts +2 -0
  386. package/src/__tests__/prepared-gpu-driven-pbr-contract.test-d.ts +31 -0
  387. package/src/__tests__/prepared-gpu-driven-pbr-contract.unit.test.ts +39 -0
  388. package/src/__tests__/prepared-gpu-driven-pbr.integration.test.ts +35 -4
  389. package/src/__tests__/prepared-graphics-capability.unit.test.ts +21 -0
  390. package/src/__tests__/prepared-graphics-pipeline-warmup.unit.test.ts +6 -2
  391. package/src/__tests__/profiler-phase-catalog.test.ts +5 -0
  392. package/src/__tests__/public-surface.test-d.ts +3 -0
  393. package/src/__tests__/recovery-candidate-prepare.contract.test.ts +30 -12
  394. package/src/__tests__/reflection-fallback-async-publication.unit.test.ts +104 -0
  395. package/src/__tests__/reflection-probe-record-owner.characterization.unit.test.ts +2 -1
  396. package/src/__tests__/render-error-code-owner.test-d.ts +4 -0
  397. package/src/__tests__/render-error-detail-ssot.test-d.ts +22 -0
  398. package/src/__tests__/render-error-exhaustive.test-d.ts +15 -0
  399. package/src/__tests__/render-feature-gpu-work.integration.test.ts +285 -2
  400. package/src/__tests__/render-feature-plan.unit.test.ts +245 -0
  401. package/src/__tests__/render-feature-shadow-order.unit.test.ts +228 -0
  402. package/src/__tests__/render-feature-zero-work.unit.test.ts +35 -1
  403. package/src/__tests__/render-graph-fallback.integration.test.ts +2 -2
  404. package/src/__tests__/render-owner-cohesion.unit.test.ts +55 -0
  405. package/src/__tests__/render-scene-mixed-updates.integration.test.ts +426 -0
  406. package/src/__tests__/render-scene-projection.unit.test.ts +914 -23
  407. package/src/__tests__/render-scene-resource-updates.integration.test.ts +214 -0
  408. package/src/__tests__/render-scene-skin-lifecycle.integration.test.ts +173 -0
  409. package/src/__tests__/render-scene-temporal-retry.unit.test.ts +133 -0
  410. package/src/__tests__/render-target-material-source.test-d.ts +27 -3
  411. package/src/__tests__/renderer-factory-material-contract.unit.test.ts +61 -1
  412. package/src/__tests__/renderer-frame-transaction.integration.test.ts +923 -5
  413. package/src/__tests__/shader-manifest-fixture.ts +39 -0
  414. package/src/__tests__/skin-motion-regression.unit.test.ts +0 -33
  415. package/src/__tests__/skin-palette-persistent.integration.test.ts +28 -0
  416. package/src/__tests__/skin-palette-persistent.unit.test.ts +247 -0
  417. package/src/__tests__/skinned-shadow-caster.test.ts +118 -14
  418. package/src/__tests__/specular-environment-scale.dawn.test.ts +156 -0
  419. package/src/__tests__/ssr-admission-matrix.integration.test.ts +7 -1
  420. package/src/__tests__/ssr-confidence-compose.unit.test.ts +84 -0
  421. package/src/__tests__/ssr-coordinate-oracle.unit.test.ts +28 -0
  422. package/src/__tests__/ssr-format-probe-gating.integration.test.ts +82 -0
  423. package/src/__tests__/ssr-gpu-dispatch.browser.test.ts +91 -0
  424. package/src/__tests__/ssr-gpu-dispatch.dawn.test.ts +112 -0
  425. package/src/__tests__/ssr-gpu-dispatch.ts +946 -0
  426. package/src/__tests__/ssr-graph-topology.unit.test.ts +104 -0
  427. package/src/__tests__/ssr-history-filter.dawn.test.ts +198 -0
  428. package/src/__tests__/ssr-hit-color.dawn.test.ts +273 -0
  429. package/src/__tests__/ssr-hiz-odd-reduction.dawn.test.ts +569 -0
  430. package/src/__tests__/ssr-hiz-rescue.dawn.test.ts +279 -0
  431. package/src/__tests__/ssr-hiz.browser.test.ts +150 -0
  432. package/src/__tests__/ssr-hiz.dawn.test.ts +150 -0
  433. package/src/__tests__/ssr-hiz.unit.test.ts +56 -0
  434. package/src/__tests__/ssr-inspection.unit.test.ts +105 -0
  435. package/src/__tests__/ssr-memory-budget.unit.test.ts +45 -0
  436. package/src/__tests__/ssr-performance-sequence-aggregation.unit.test.ts +15 -0
  437. package/src/__tests__/ssr-public-surface.test-d.ts +37 -0
  438. package/src/__tests__/ssr-receiver-coverage.dawn.test.ts +387 -0
  439. package/src/__tests__/ssr-reflection-mip-reducer.dawn.test.ts +309 -0
  440. package/src/__tests__/ssr-reprojection-probe.ts +90 -0
  441. package/src/__tests__/ssr-roughness-mip.dawn.test.ts +163 -0
  442. package/src/__tests__/ssr-shader-prewarm.unit.test.ts +59 -0
  443. package/src/__tests__/ssr-spatial.integration.test.ts +141 -0
  444. package/src/__tests__/ssr-stable-lattice.dawn.test.ts +475 -0
  445. package/src/__tests__/ssr-temporal-history.unit.test.ts +202 -0
  446. package/src/__tests__/ssr-texel-crossing.dawn.test.ts +448 -0
  447. package/src/__tests__/ssr-zero-work.integration.test.ts +87 -0
  448. package/src/__tests__/standard-cluster-variant-resolution.unit.test.ts +44 -12
  449. package/src/__tests__/standard-clustered-pipeline.unit.test.ts +29 -0
  450. package/src/__tests__/standard-output-chain-contract.unit.test.ts +99 -0
  451. package/src/__tests__/standard-output-chain.integration.test.ts +73 -0
  452. package/src/__tests__/standard-output-gpu-evidence.ts +205 -0
  453. package/src/__tests__/standard-output.browser.test.ts +15 -0
  454. package/src/__tests__/standard-output.dawn.test.ts +15 -0
  455. package/src/__tests__/standard-pbr-artifact-assembly.unit.test.ts +38 -0
  456. package/src/__tests__/standard-pipeline.integration.test.ts +320 -3
  457. package/src/__tests__/standard-profile-oracle.unit.test.ts +22 -0
  458. package/src/__tests__/standard-surface-lighting.unit.test.ts +41 -0
  459. package/src/__tests__/standard-texture-specialization.dawn.test.ts +141 -0
  460. package/src/__tests__/surface-adjacent-regressions.integration.test.ts +6 -3
  461. package/src/__tests__/taa-coverage-edge.dawn.test.ts +193 -0
  462. package/src/__tests__/taa-history-clipping.dawn.test.ts +328 -0
  463. package/src/__tests__/taa-neighborhood-equivalence.dawn.test.ts +778 -0
  464. package/src/__tests__/taa-stability-feedback.browser.test.ts +23 -0
  465. package/src/__tests__/taa-stability-feedback.dawn.test.ts +68 -0
  466. package/src/__tests__/taa-stability-feedback.ts +341 -0
  467. package/src/__tests__/temporal-history-lifecycle.unit.test.ts +49 -7
  468. package/src/__tests__/temporal-reset-matrix.unit.test.ts +9 -0
  469. package/src/__tests__/temporal-transaction.integration.test.ts +28 -0
  470. package/src/__tests__/texture-usage-surface.unit.test.ts +4 -2
  471. package/src/__tests__/typed-pipeline-topology.unit.test.ts +109 -4
  472. package/src/__tests__/typed-scene-pass-material-cache.integration.test.ts +126 -0
  473. package/src/__tests__/vertex-layouts-ssot.unit.test.ts +47 -0
  474. package/src/__tests__/visibility-extract.perf.test.ts +20 -8
  475. package/src/__tests__/visibility-instances.integration.test.ts +19 -7
  476. package/src/__tests__/visibility-producer-matrix.integration.test.ts +20 -9
  477. package/src/assembly/atmosphere-shader-prewarm.ts +38 -0
  478. package/src/assembly/dynamic-geometry-host.ts +887 -0
  479. package/src/assembly/dynamic-geometry-runtime.ts +71 -0
  480. package/src/assembly/factory.ts +4 -0
  481. package/src/assembly/gpu-driven-owner.ts +29 -0
  482. package/src/assembly/host-contract.ts +36 -0
  483. package/src/assembly/material/assembly.ts +38 -0
  484. package/src/assembly/material-shader-policy.ts +71 -28
  485. package/src/assembly/recovery/failure-location.ts +62 -0
  486. package/src/assembly/recovery/renderer-recover.ts +19 -17
  487. package/src/assembly/renderer-facade.ts +29 -0
  488. package/src/assembly/renderer-feature-inspection.ts +13 -0
  489. package/src/assembly/renderer-frame-transaction.ts +63 -0
  490. package/src/assembly/renderer-helpers.ts +26 -0
  491. package/src/assembly/renderer-inspection.ts +6 -0
  492. package/src/assembly/shader-prewarm-policy.ts +32 -0
  493. package/src/assembly/skin-palette-owner.ts +21 -0
  494. package/src/assembly/ssr-shader-prewarm.ts +41 -0
  495. package/src/assembly/webgpu-device-loss.ts +75 -0
  496. package/src/assembly/webgpu-pbr-ready.ts +232 -0
  497. package/src/assembly/webgpu-ready-mipmap.ts +26 -0
  498. package/src/assembly/webgpu-ready.ts +142 -121
  499. package/src/assembly/webgpu-renderer-bootstrap.ts +85 -0
  500. package/src/assembly/webgpu-renderer-contract.ts +69 -0
  501. package/src/assembly/webgpu-renderer-guards.ts +32 -0
  502. package/src/assembly/webgpu-renderer-observation.ts +43 -0
  503. package/src/assembly/webgpu-renderer-recovery-failure.ts +62 -0
  504. package/src/assembly/webgpu-renderer.ts +675 -614
  505. package/src/assembly/webgpu-vertex-layouts.ts +233 -87
  506. package/src/components/__tests__/camera-exposure.contract.unit.test.ts +153 -0
  507. package/src/components/camera.ts +287 -7
  508. package/src/components/index.ts +1 -0
  509. package/src/components/instances.ts +45 -18
  510. package/src/components/scene-instance.ts +2 -1
  511. package/src/components/screen-space-reflection.ts +21 -0
  512. package/src/components/sprite-animation.ts +3 -3
  513. package/src/components/sprite-instances.ts +1 -1
  514. package/src/device/gpu-residency.ts +96 -93
  515. package/src/device/mesh-residency-lifetime.ts +73 -0
  516. package/src/dynamic-geometry.ts +736 -0
  517. package/src/environment/background.ts +263 -0
  518. package/src/errors/gpu-driven.ts +39 -5
  519. package/src/errors/render.ts +27 -3
  520. package/src/extract/camera.ts +26 -1
  521. package/src/extract/gpu-driven.ts +185 -10
  522. package/src/features/host.ts +237 -19
  523. package/src/features/noise-texture.ts +91 -0
  524. package/src/features/plan.ts +553 -24
  525. package/src/features/prepared-gpu-work.ts +631 -49
  526. package/src/features/prepared-graphics-store.ts +31 -0
  527. package/src/features/prepared-graphics.ts +5 -0
  528. package/src/features/render-graph-compute.ts +41 -8
  529. package/src/features/render-graph-contribution.ts +141 -3
  530. package/src/features/render-graph-raster.ts +143 -30
  531. package/src/features/types.ts +11 -0
  532. package/src/fullscreen-post-process-pass.ts +3 -0
  533. package/src/gpu-driven/batch-topology.ts +424 -102
  534. package/src/gpu-driven/pbr-program.ts +31 -0
  535. package/src/gpu-driven/prepared-draw.ts +29 -4
  536. package/src/gpu-driven/production-raster.ts +2267 -694
  537. package/src/gpu-driven/shadow-views.ts +539 -0
  538. package/src/gpu-driven/view-gpu.ts +188 -41
  539. package/src/gpu-scene-schema.ts +52 -11
  540. package/src/gpu-scene.ts +186 -99
  541. package/src/gpu-texture-usage.ts +1 -0
  542. package/src/hdrp-buffers.ts +72 -36
  543. package/src/ibl/frame-resources.ts +38 -0
  544. package/src/ibl/skylight-bind-group.ts +5 -4
  545. package/src/index.ts +125 -1
  546. package/src/inspection-types.ts +191 -0
  547. package/src/instances-derived-bounds.ts +258 -34
  548. package/src/instances.ts +459 -150
  549. package/src/internal.ts +22 -0
  550. package/src/lifecycle.ts +2 -0
  551. package/src/material-row.ts +145 -0
  552. package/src/materials.ts +44 -8
  553. package/src/pbr-pipeline.ts +159 -17
  554. package/src/pipeline/standard-forward-lane.ts +52 -24
  555. package/src/pipeline/standard-output/__tests__/lut-admission.unit.test.ts +103 -0
  556. package/src/pipeline/standard-output/auto-exposure/__tests__/capability.unit.test.ts +40 -0
  557. package/src/pipeline/standard-output/auto-exposure/__tests__/gpu.contract.unit.test.ts +125 -0
  558. package/src/pipeline/standard-output/auto-exposure/__tests__/graph.contract.unit.test.ts +94 -0
  559. package/src/pipeline/standard-output/auto-exposure/__tests__/oracle.test.ts +108 -0
  560. package/src/pipeline/standard-output/auto-exposure/__tests__/preset.test.ts +26 -0
  561. package/src/pipeline/standard-output/auto-exposure/capability.ts +38 -0
  562. package/src/pipeline/standard-output/auto-exposure/gpu.ts +567 -0
  563. package/src/pipeline/standard-output/auto-exposure/graph.ts +221 -0
  564. package/src/pipeline/standard-output/auto-exposure/inspection.ts +231 -0
  565. package/src/pipeline/standard-output/auto-exposure/oracle.ts +291 -0
  566. package/src/pipeline/standard-output/auto-exposure/preset.ts +28 -0
  567. package/src/pipeline/standard-output/auto-exposure/state.ts +156 -0
  568. package/src/pipeline/standard-output/color-transform.ts +124 -0
  569. package/src/pipeline/standard-output/graph.ts +139 -0
  570. package/src/pipeline/standard-output/lut-admission.ts +121 -0
  571. package/src/pipeline/standard-output/lut-gpu.ts +399 -0
  572. package/src/pipeline/standard-output/lut-state.ts +176 -0
  573. package/src/pipeline/standard-output/resources.ts +121 -0
  574. package/src/pipeline/standard-output/types.ts +58 -0
  575. package/src/pipeline/standard-pipeline.ts +192 -59
  576. package/src/pipeline/standard-post.ts +186 -27
  577. package/src/pipeline-builder.ts +16 -6
  578. package/src/pipeline-spec-types.ts +4 -0
  579. package/src/pipeline-spec.ts +37 -29
  580. package/src/points-lines/standard-owner.ts +6 -14
  581. package/src/prepare/prepared-graphics-resolver.ts +9 -2
  582. package/src/record/__tests__/material-slot-plan.unit.test.ts +48 -0
  583. package/src/record/__tests__/mesh-ssbo.unit.test.ts +40 -1
  584. package/src/record/__tests__/recovery-pipeline.unit.test.ts +2 -29
  585. package/src/record/__tests__/sprite-material-abi.unit.test.ts +36 -5
  586. package/src/record/__tests__/typed-frame-graph-plan.unit.test.ts +45 -0
  587. package/src/record/__tests__/view-ubo-layout.unit.test.ts +5 -0
  588. package/src/record/dynamic-geometry-consumption.ts +59 -0
  589. package/src/record/frame-lighting.ts +12 -11
  590. package/src/record/frame-snapshot.ts +133 -23
  591. package/src/record/frame-targets.ts +9 -0
  592. package/src/record/frame.ts +727 -133
  593. package/src/record/main-pass-geometry.ts +162 -98
  594. package/src/record/main-pass-material.ts +115 -26
  595. package/src/record/main-pass-sprite-draws.ts +18 -107
  596. package/src/record/main-pass.ts +78 -8
  597. package/src/record/material-uniforms.ts +1 -1
  598. package/src/record/mesh-ssbo.ts +59 -15
  599. package/src/record/prepared-material-bindings.ts +234 -0
  600. package/src/record/recovery-pipeline.ts +59 -136
  601. package/src/record/render-context.ts +92 -22
  602. package/src/record/shadow-pass.ts +1231 -209
  603. package/src/record/skybox-post-pass.ts +14 -3
  604. package/src/record/typed-frame-graph.ts +1006 -53
  605. package/src/record/view-ubo.ts +11 -0
  606. package/src/recovery/render-system-candidate.ts +90 -66
  607. package/src/recovery/render-system-roots.ts +113 -0
  608. package/src/recovery/types.ts +77 -0
  609. package/src/reflection/record-owner.ts +26 -54
  610. package/src/render-contract.ts +219 -25
  611. package/src/render-graph-primitives.ts +6 -2
  612. package/src/render-pipeline.ts +70 -1
  613. package/src/render-system-extract-tail.ts +409 -160
  614. package/src/render-system-extract.ts +376 -102
  615. package/src/render-system-projections.ts +241 -0
  616. package/src/render-system.ts +692 -791
  617. package/src/scene/render-scene-types.ts +13 -4
  618. package/src/scene/render-scene.ts +569 -355
  619. package/src/scene/shadow-visibility.ts +21 -0
  620. package/src/ssr/admission.ts +380 -14
  621. package/src/ssr/compose.ts +144 -0
  622. package/src/ssr/errors.ts +48 -0
  623. package/src/ssr/graph.ts +777 -0
  624. package/src/ssr/history.ts +436 -0
  625. package/src/ssr/hiz.ts +124 -0
  626. package/src/ssr/inspection.ts +124 -0
  627. package/src/ssr/resources.ts +202 -0
  628. package/src/ssr/temporal.ts +164 -0
  629. package/src/systems/skin-palette-allocator.ts +495 -148
  630. package/src/systems/skin-palette-types.ts +17 -0
  631. package/src/systems/transparent-dispatch.ts +90 -0
  632. package/src/targets/material-source.ts +34 -0
  633. package/src/temporal/coverage.ts +1 -1
  634. package/src/temporal/frame-coordinator.ts +23 -2
  635. package/src/temporal/gpu.ts +74 -12
  636. package/src/temporal/history.ts +3 -1
  637. package/src/temporal/inspection.ts +2 -1
  638. package/src/temporal/standard-scene-data.ts +3 -1
  639. package/src/temporal/temporal-view.ts +3 -0
  640. package/src/transmission/__tests__/standard-transmission.dawn.test.ts +204 -139
  641. package/src/typed-render-graph-primitives.ts +266 -74
  642. package/src/typed-shadow-passes.ts +122 -12
  643. package/src/volume/temporal.ts +10 -0
  644. package/dist/chunk-ADHHVYLW.mjs.map +0 -1
  645. package/dist/chunk-FJ6P52EE.mjs.map +0 -1
  646. package/dist/chunk-GE3SDD72.mjs.map +0 -1
  647. package/dist/chunk-GF523LHF.mjs.map +0 -1
  648. package/dist/chunk-HKXTW355.mjs.map +0 -1
  649. package/dist/chunk-JDWARUOI.mjs.map +0 -1
  650. package/dist/chunk-KM2NOX2I.mjs.map +0 -1
  651. package/dist/chunk-TMIASV2N.mjs.map +0 -1
  652. package/dist/chunk-XDP6XE5V.mjs.map +0 -1
  653. package/dist/chunk-ZZ4YQ474.mjs.map +0 -1
  654. package/src/__tests__/instances-world-ownership.integration.test.ts +0 -62
  655. package/src/scene/__tests__/changed-block-summary.candidate.test.ts +0 -36
@@ -1,15 +1,17 @@
1
- import type { ColorValueDomain, GraphAccess, GraphResourceResolver, GraphTexture, GraphTextureDescriptor, GraphTextureView, GraphTextureViewDescriptor, RenderGraphBuilder, RenderGraphError, RenderGraphFrame } from '@forgeax/engine-render-graph';
2
- import type { BindGroup, RhiCaps, RhiError, RhiRenderPassEncoder, TextureFormat } from '@forgeax/engine-rhi';
1
+ import type { ColorValueDomain, GraphAccess, GraphBuffer, GraphResourceResolver, GraphTexture, GraphTextureDescriptor, GraphTextureView, GraphTextureViewDescriptor, RenderGraphBuilder, RenderGraphError, RenderGraphFrame } from '@forgeax/engine-render-graph';
2
+ import type { BindGroup, Buffer, RhiCaps, RhiError, RhiRenderPassEncoder, TextureFormat } from '@forgeax/engine-rhi';
3
3
  import { type Result } from '@forgeax/engine-types';
4
4
  import type { Tonemap } from './components/camera';
5
5
  import type { DirectionalShadowFilterLabel } from './components/directional-shadow-filter';
6
6
  import type { RenderError } from './errors/render';
7
7
  import type { RenderFeatureTargetKind } from './features/targets';
8
+ import type { ShadowViewIdentity, ShadowViewProjection } from './gpu-driven/shadow-views';
8
9
  import type { StandardTopologyInputValue } from './pipeline/standard-lighting/topology';
9
10
  import { STANDARD_POST_STAGE_NAMES, type StandardProfile } from './pipeline/standard-profile';
10
11
  import type { SurfaceProfile } from './record/render-context';
11
- import type { RenderPipelineContext } from './render-contract';
12
+ import type { FrameObservationDomain, RenderPipelineContext } from './render-contract';
12
13
  import type { OcclusionFrameProjection } from './scene/visibility/occlusion-runtime';
14
+ import type { SsrSpatialAdmission } from './ssr/admission';
13
15
  import type { TransmissionDemand } from './transmission/projection';
14
16
  export type { RenderPipelineContext } from './render-contract';
15
17
  export type RenderColorDomain = 'linearHdr' | 'linearLdr' | 'displayEncoded';
@@ -73,6 +75,8 @@ export interface RenderPipelineTopology {
73
75
  * clear directly to the surface.
74
76
  */
75
77
  readonly clearOnly?: boolean | undefined;
78
+ /** Selected atmosphere requires the graph-owned sky producer and background. */
79
+ readonly atmosphere?: boolean | undefined;
76
80
  /** Whether Standard main draws carry the producer-owned fallback MRT. */
77
81
  readonly reflectionFallback?: {
78
82
  readonly enabled: boolean;
@@ -85,6 +89,19 @@ export interface RenderPipelineTopology {
85
89
  readonly profile?: SurfaceProfile | undefined;
86
90
  };
87
91
  readonly camera: Pick<RenderPipelineContext['camera'], 'tonemap' | 'antialias' | 'bloom'>;
92
+ /** Frame-stable Standard output policy; no raw RHI handles enter topology. */
93
+ readonly output?: {
94
+ readonly autoExposure: boolean;
95
+ /** Camera-owned Bradford white balance is part of the same output pass. */
96
+ readonly whiteBalance?: boolean;
97
+ readonly temperature?: number;
98
+ readonly tint?: number;
99
+ readonly colorLut: boolean;
100
+ readonly colorLutStrength: number;
101
+ readonly lutSourceKey?: string;
102
+ };
103
+ /** Detached spatial SSR admission; graph resources remain renderer-owned. */
104
+ readonly ssr?: SsrSpatialAdmission | undefined;
88
105
  readonly temporal?: {
89
106
  readonly taa: boolean;
90
107
  readonly motionBlur: boolean;
@@ -175,10 +192,22 @@ export interface RenderPipelineFeatureTarget {
175
192
  }
176
193
  export interface RenderPipelineGpuDrivenProjection {
177
194
  readonly accesses: readonly GraphAccess[];
178
- encode(viewBindGroup: BindGroup, pass: RhiRenderPassEncoder, resources: GraphResourceResolver): void;
195
+ encode(viewBindGroup: BindGroup, pass: RhiRenderPassEncoder, resources: GraphResourceResolver, frameResources: GpuDrivenStandardPbrFrameResources): void;
196
+ }
197
+ /** Producer-owned Standard PBR resources resolved during graph execution. */
198
+ export interface GpuDrivenStandardPbrFrameResources {
199
+ readonly materialBindGroups: (BindGroup | undefined)[];
200
+ /** Frame-global material slots keyed by the retained scene entity identity. */
201
+ readonly materialSlotIndicesByEntity: Map<number, readonly number[]>;
202
+ readonly instancesBindGroup: BindGroup;
203
+ readonly materialStride: number;
204
+ /** Exact producer-owned numeric Material table consumed by scene-index PBR. */
205
+ readonly sceneMaterialBuffer: Buffer;
179
206
  }
180
207
  export interface RenderPipelineBuildContext<FrameCtx extends RenderPipelineFrame> {
181
208
  readonly graph: RenderGraphBuilder<FrameCtx>;
209
+ /** Explicit receipt-bound color domains requested for this frame. */
210
+ readonly observationCaptureDomains?: readonly FrameObservationDomain[] | undefined;
182
211
  /**
183
212
  * The single prepared Standard lighting projection for this frame. The
184
213
  * Forward and Deferred adapters consume this value; they never inspect raw
@@ -191,6 +220,23 @@ export interface RenderPipelineBuildContext<FrameCtx extends RenderPipelineFrame
191
220
  * inferring rgba16float support from the selected surface format.
192
221
  */
193
222
  readonly capabilities?: Pick<RhiCaps, 'rgba16floatRenderable'>;
223
+ /** Prepared typed graph resources owned by RenderSystem/RenderFrameState. */
224
+ readonly standardOutput?: {
225
+ readonly autoExposure?: {
226
+ readonly histogram: GraphBuffer;
227
+ readonly state: GraphBuffer;
228
+ readonly candidate: GraphBuffer;
229
+ /** Authored camera/time parameters consumed by the GPU adapt stage. */
230
+ readonly parameters: GraphBuffer;
231
+ };
232
+ readonly colorLut?: {
233
+ readonly view: GraphTextureView;
234
+ readonly sampler: import('@forgeax/engine-rhi').Sampler;
235
+ readonly strength: number;
236
+ readonly bindGroupLayout: import('@forgeax/engine-rhi').BindGroupLayout;
237
+ readonly bindGroup: BindGroup;
238
+ };
239
+ };
194
240
  /**
195
241
  * Renderer-owned TAA history targets. The graph sees only imported typed
196
242
  * targets; opaque RHI handles remain inside RenderFrameState.
@@ -200,6 +246,16 @@ export interface RenderPipelineBuildContext<FrameCtx extends RenderPipelineFrame
200
246
  readonly previousColor: RenderPipelineTarget;
201
247
  readonly currentTemporal: RenderPipelineTarget;
202
248
  readonly previousTemporal: RenderPipelineTarget;
249
+ readonly currentStability: RenderPipelineTarget;
250
+ readonly previousStability: RenderPipelineTarget;
251
+ };
252
+ /** Renderer-owned SSR temporal history targets for the admitted spatial chain. */
253
+ readonly ssrHistory?: {
254
+ readonly previous: RenderPipelineTarget;
255
+ readonly output: RenderPipelineTarget;
256
+ readonly previousSurface: RenderPipelineTarget;
257
+ readonly outputSurface: RenderPipelineTarget;
258
+ readonly params: GraphBuffer;
203
259
  };
204
260
  /** Renderer-owned, prewarmed encoder for one graph mip level. */
205
261
  readonly encodeTransmissionMip?: (input: {
@@ -216,7 +272,10 @@ export interface RenderPipelineBuildContext<FrameCtx extends RenderPipelineFrame
216
272
  readonly format: TextureFormat;
217
273
  readonly sampleCount: 1 | 4;
218
274
  }): Result<RenderPipelineGpuDrivenProjection | undefined, RenderPipelineBuildError>;
219
- contributeFeatures(targets: readonly RenderPipelineFeatureTarget[], semanticTargets?: readonly RenderPipelineTarget[], namedTargets?: Readonly<Record<string, RenderPipelineTarget>>): Result<void, RenderPipelineBuildError>;
275
+ projectGpuDrivenShadow?(identity: ShadowViewIdentity): Result<ShadowViewProjection | undefined, RenderGraphError>;
276
+ contributeFeatures(targets: readonly RenderPipelineFeatureTarget[], semanticTargets?: readonly RenderPipelineTarget[], namedTargets?: Readonly<Record<string, RenderPipelineTarget>>, standardSurfaceAccesses?: readonly GraphAccess[]): Result<void, RenderPipelineBuildError>;
277
+ /** Prepare feature-owned shadow draws and their early compute producers once. */
278
+ contributeShadowFeatures?(): Result<import('./features/render-graph-raster').RenderFeatureShadowDraws<FrameCtx> | undefined, RenderPipelineBuildError>;
220
279
  /** Add renderer-owned cube capture work to the active pipeline graph. */
221
280
  contributeCubeCaptures?(): Result<void, RenderPipelineBuildError>;
222
281
  /** Whether a producer-owned feature is installed for this graph build. */
@@ -1 +1 @@
1
- {"version":3,"file":"render-pipeline.d.ts","sourceRoot":"","sources":["../src/render-pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render-pipeline.d.ts","sourceRoot":"","sources":["../src/render-pipeline.ts"],"names":[],"mappings":"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"}
@@ -2,16 +2,18 @@ import type { AssetRegistry } from '@forgeax/engine-assets-runtime';
2
2
  import type { World } from '@forgeax/engine-ecs';
3
3
  import type { MaterialCookProgramContext } from '@forgeax/engine-pack/material-cook';
4
4
  import type { MaterialShaderArtifact } from '@forgeax/engine-shader';
5
- import type { InstanceProjectionStore } from './instances';
5
+ import { type InstanceCollectionStore } from './instances';
6
6
  import type { ExtractedFrame, ExtractFramesOwner, ExtractPipelineSurface, MaterialSnapshot, MaterialSnapshotCachesByWorld, PreparedExtractContext } from './render-system-extract';
7
7
  export declare function extractFrames(worlds: readonly World[], owner: number | ExtractFramesOwner, assets?: AssetRegistry | null, pipelineState?: ExtractPipelineSurface | null, materialSnapshotCachesByWorld?: MaterialSnapshotCachesByWorld, options?: {
8
8
  readonly materialContext?: MaterialCookProgramContext;
9
9
  readonly cull?: 'normal' | 'none';
10
- readonly renderables?: 'full' | 'none';
11
- readonly renderableEntitiesByWorld?: readonly (ReadonlySet<number> | undefined)[];
10
+ readonly renderables?: 'full' | 'none' | {
11
+ readonly kind: 'partial';
12
+ readonly entitiesByWorld: readonly (ReadonlySet<number> | undefined)[];
13
+ };
12
14
  readonly retainHidden?: boolean;
13
- readonly getMaterialShaderArtifact?: (materialShaderId: string) => MaterialShaderArtifact | undefined;
14
- readonly instanceCollections?: InstanceProjectionStore;
15
+ readonly getMaterialShaderArtifact?: (materialShaderId: string, vertexColorAvailable?: boolean) => MaterialShaderArtifact | undefined;
16
+ readonly instanceCollections?: InstanceCollectionStore;
15
17
  }): ExtractedFrame;
16
18
  export declare function extractFrame(world: World, context: PreparedExtractContext): ExtractedFrame;
17
19
  export declare function defaultMaterialSnapshot(materialHandle?: number): MaterialSnapshot;
@@ -1 +1 @@
1
- {"version":3,"file":"render-system-extract-tail.d.ts","sourceRoot":"","sources":["../src/render-system-extract-tail.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAKpE,OAAO,KAAK,EAAgB,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAY/D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAGrF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAuErE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAa3D,OAAO,KAAK,EAKV,cAAc,EAEd,kBAAkB,EAClB,sBAAsB,EAGtB,gBAAgB,EAEhB,6BAA6B,EAI7B,sBAAsB,EAQvB,MAAM,yBAAyB,CAAC;AA0CjC,wBAAgB,aAAa,CAC3B,MAAM,EAAE,SAAS,KAAK,EAAE,EACxB,KAAK,EAAE,MAAM,GAAG,kBAAkB,EAClC,MAAM,CAAC,EAAE,aAAa,GAAG,IAAI,EAC7B,aAAa,CAAC,EAAE,sBAAsB,GAAG,IAAI,EAC7C,6BAA6B,CAAC,EAAE,6BAA6B,EAC7D,OAAO,GAAE;IACP,QAAQ,CAAC,eAAe,CAAC,EAAE,0BAA0B,CAAC;IACtD,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC;IAClF,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CACnC,gBAAgB,EAAE,MAAM,KACrB,sBAAsB,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,uBAAuB,CAAC;CACnD,GACL,cAAc,CAyXhB;AAsED,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,sBAAsB,GAAG,cAAc,CAs3E1F;AAED,wBAAgB,uBAAuB,CAAC,cAAc,SAAI,GAAG,gBAAgB,CAW5E"}
1
+ {"version":3,"file":"render-system-extract-tail.d.ts","sourceRoot":"","sources":["../src/render-system-extract-tail.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAKpE,OAAO,KAAK,EAAgB,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAU/D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAGrF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AA2ErE,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,aAAa,CAAC;AAcrB,OAAO,KAAK,EAKV,cAAc,EAEd,kBAAkB,EAClB,sBAAsB,EAGtB,gBAAgB,EAEhB,6BAA6B,EAM7B,sBAAsB,EASvB,MAAM,yBAAyB,CAAC;AAqDjC,wBAAgB,aAAa,CAC3B,MAAM,EAAE,SAAS,KAAK,EAAE,EACxB,KAAK,EAAE,MAAM,GAAG,kBAAkB,EAClC,MAAM,CAAC,EAAE,aAAa,GAAG,IAAI,EAC7B,aAAa,CAAC,EAAE,sBAAsB,GAAG,IAAI,EAC7C,6BAA6B,CAAC,EAAE,6BAA6B,EAC7D,OAAO,GAAE;IACP,QAAQ,CAAC,eAAe,CAAC,EAAE,0BAA0B,CAAC;IACtD,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAClC,QAAQ,CAAC,WAAW,CAAC,EACjB,MAAM,GACN,MAAM,GACN;QACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;QACzB,QAAQ,CAAC,eAAe,EAAE,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC;KACxE,CAAC;IACN,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CACnC,gBAAgB,EAAE,MAAM,EACxB,oBAAoB,CAAC,EAAE,OAAO,KAC3B,sBAAsB,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,uBAAuB,CAAC;CACnD,GACL,cAAc,CA8ahB;AAsED,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,sBAAsB,GAAG,cAAc,CA8hF1F;AAUD,wBAAgB,uBAAuB,CAAC,cAAc,SAAI,GAAG,gBAAgB,CAI5E"}
@@ -4,19 +4,20 @@ import type { Component, ComponentSchema, EntityHandle, World } from '@forgeax/e
4
4
  import { type Mat4, type Vec3 } from '@forgeax/engine-math';
5
5
  import { type AssetGuid as AssetGuidBytes } from '@forgeax/engine-pack/guid';
6
6
  import { type MaterialShaderArtifact } from '@forgeax/engine-shader';
7
- import type { Handle, MaterialAsset, MaterialColorParameterSchema, MaterialParameter, MaterialPass, MaterialRenderState, MaterialTextureCoordinates, MaterialTextureValue, MeshLodLevel, ParamSchemaEntry, PrimitiveTopology, TextureAsset } from '@forgeax/engine-types';
7
+ import type { Handle, MaterialAsset, MaterialColorParameterSchema, MaterialParameter, MaterialPass, MaterialRenderState, MaterialTextureCoordinates, MaterialTextureValue, MeshLodLevel, ParamSchemaEntry, TextureAsset } from '@forgeax/engine-types';
8
8
  import type { DirectionalShadowQuality } from './components/directional-shadow-filter';
9
9
  import type { LightValidationError } from './components/light-helpers';
10
10
  import type { EnvironmentFrame, FogFrame, FogSelectionFailure } from './extract/environment';
11
+ import type { GpuDrivenDrawSnapshot } from './extract/gpu-driven';
11
12
  import { type VisibilitySnapshot } from './extract/visibility';
12
13
  import type { RenderFeatureHiddenEntityReport, RenderFeatureWorldVisibilitySnapshot } from './features/types';
13
- import type { InstanceCollectionId, InstanceProjectionStore } from './instances';
14
+ import type { InstanceCollectionId, InstanceCollectionStore } from './instances';
14
15
  import type { MeshMaterialBindingDiagnostic, MeshMaterialBindingSource } from './mesh-material-bindings';
15
16
  import type { PointsLinesRetainedSnapshot } from './points-lines/snapshot';
16
17
  import type { ReflectionProbeFact } from './reflection/projection';
17
18
  import type { CameraSnapshot, CubeCameraSnapshot } from './render-contract';
18
19
  import type { SkinPaletteAllocator } from './systems/skin-palette-allocator';
19
- import type { SkinPaletteSlice } from './systems/skin-palette-types';
20
+ import type { SkinPaletteReceipt } from './systems/skin-palette-types';
20
21
  import type { RenderTarget, RenderTargetTextureSource } from './targets/contracts';
21
22
  import { type ValidatedVolumetricFog } from './volume/component';
22
23
  import type { VolumeProjectorTuple } from './volume/temporal';
@@ -45,6 +46,8 @@ export interface DirectionalLightSnapshot {
45
46
  export interface PointLightSnapshot {
46
47
  readonly kind: 'point';
47
48
  readonly entity?: EntityHandle | number;
49
+ /** World identity stamped by the composited extract owner. */
50
+ readonly worldId?: number;
48
51
  readonly position: Vec3;
49
52
  readonly color: Vec3;
50
53
  readonly intensity: number;
@@ -97,12 +100,16 @@ export interface PointLightSnapshot {
97
100
  export interface PointShadowSnapshot {
98
101
  /** Spawning entity index (joins PointLight + PointLightShadow + Transform). */
99
102
  readonly entity: number;
103
+ /** World identity stamped by the composited extract owner. */
104
+ readonly worldId?: number;
100
105
  /** World-space light position (sourced from companion Transform). */
101
106
  readonly position: Vec3;
102
107
  /** PointLightShadow.mapSize (per-face cube square dimension; 512 default). */
103
108
  readonly mapSize: number;
104
109
  readonly nearPlane: number;
105
110
  readonly farPlane: number;
111
+ readonly depthBias: number;
112
+ readonly normalBias: number;
106
113
  /**
107
114
  * Atlas layer assigned by extract in spawn order while capacity remains.
108
115
  * Sentinel -1 is used for a request that cannot be admitted and is
@@ -137,6 +144,8 @@ export interface SpotLightSnapshot {
137
144
  readonly kind: 'spot';
138
145
  /** Entity identity is branded in extracted frames; numeric fixtures remain compatible. */
139
146
  readonly entity?: EntityHandle | number;
147
+ /** World identity stamped by the composited extract owner. */
148
+ readonly worldId?: number;
140
149
  readonly position: Vec3;
141
150
  readonly direction: Vec3;
142
151
  readonly color: Vec3;
@@ -357,6 +366,8 @@ export interface SkylightSnapshot {
357
366
  /** Local diffuse probe facts; specular remains owned by Skylight/ReflectionProbe. */
358
367
  export interface LightProbeSnapshot {
359
368
  readonly identity: string;
369
+ /** World identity stamped by the composited extract owner. */
370
+ readonly worldId?: number;
360
371
  readonly position: readonly [number, number, number];
361
372
  readonly radius: number;
362
373
  readonly irradiance: Float32Array;
@@ -411,6 +422,8 @@ export interface ExtractedVolumetricFog {
411
422
  readonly projectorAsset?: TextureAsset;
412
423
  }
413
424
  export interface RenderableSnapshot {
425
+ /** Authored hierarchical visibility; retained hidden rows remain addressable. */
426
+ readonly authorVisible?: boolean;
414
427
  readonly assetHandle: number;
415
428
  readonly transform: TransformSnapshot;
416
429
  /** Producer-authored lower-detail references projected from MeshAsset. */
@@ -448,8 +461,6 @@ export interface RenderableSnapshot {
448
461
  readonly materialBindingSources: readonly MeshMaterialBindingSource[];
449
462
  /** Active structured override diagnostics for this renderable. */
450
463
  readonly materialBindingDiagnostics?: readonly MeshMaterialBindingDiagnostic[];
451
- /** Effective authored visibility retained by the persistent scene owner. */
452
- readonly authorVisible?: boolean;
453
464
  /**
454
465
  * feat-20260708-composited-multi-world-rendering M1 / D-1: the worldId
455
466
  * of the world this renderable was extracted from. Defaults to 0 in
@@ -514,9 +525,11 @@ export interface RenderableSnapshot {
514
525
  * draw to `forgeax::pbr-skin` pipeline + set the palette dynamic offset.
515
526
  * Absent (`undefined`) means the entity is not skinned.
516
527
  */
517
- readonly skin?: SkinPaletteSlice;
518
- /** Joint entity identities used by the persistent skin dependency index. */
528
+ readonly skin?: SkinPaletteReceipt;
529
+ /** Joint identities consumed by the retained scene dependency index. */
519
530
  readonly skinJointEntities?: readonly number[];
531
+ /** Source pass ownership retained with the scene record across view changes. */
532
+ readonly shadowCasterPasses?: readonly Omit<ShadowCasterMembership, 'worldEntity' | 'renderableIndex'>[];
520
533
  /**
521
534
  * ECS-owned morph weights. Presence selects the Standard Pipeline CPU
522
535
  * specialized deformation lane; the asset remains the source of target
@@ -539,33 +552,14 @@ export interface RenderableTemporalSnapshot {
539
552
  readonly reactiveReasons: readonly RenderableReactiveReason[];
540
553
  readonly previousTransform: TransformSnapshot;
541
554
  readonly previousInstances: InstancesSnapshot | undefined;
542
- readonly previousSkin: SkinPaletteSlice | undefined;
555
+ readonly previousSkin: SkinPaletteReceipt | undefined;
543
556
  readonly previousMorphWeights: Float32Array | undefined;
544
557
  }
545
558
  export interface MorphSnapshot {
546
559
  readonly weights: Float32Array;
547
560
  readonly targetCount: number;
548
561
  }
549
- export interface GpuDrivenDrawSnapshot {
550
- readonly kind: 'indexed' | 'non-indexed';
551
- readonly first: number;
552
- readonly count: number;
553
- readonly baseVertex: number;
554
- readonly materialSlot: number;
555
- readonly topology: PrimitiveTopology;
556
- readonly pipelineClass: string;
557
- readonly materialResourceClass: string;
558
- /** Producer-owned prepared ABI facts used by the Standard PBR GPU lane. */
559
- readonly prepared?: import('./gpu-driven/prepared-draw').PreparedGpuDrivenDraw;
560
- /** Optional projected height supplied by direct GPU-view evidence/tests. */
561
- readonly projectedHeight?: number;
562
- /** Root plus lower-detail index/vertex ranges, in LOD order. */
563
- readonly lodRanges?: readonly {
564
- readonly first: number;
565
- readonly count: number;
566
- readonly baseVertex: number;
567
- }[];
568
- }
562
+ export type { GpuDrivenDrawSnapshot } from './extract/gpu-driven';
569
563
  export interface InstancesSnapshot {
570
564
  /** Renderer-owned collection identity. */
571
565
  readonly collectionId?: InstanceCollectionId;
@@ -575,6 +569,13 @@ export interface InstancesSnapshot {
575
569
  readonly instanceCount: number;
576
570
  /** Collection revision captured by this detached frame snapshot. */
577
571
  readonly revision?: number;
572
+ /** Logical collection capacity at snapshot time. */
573
+ readonly capacity?: number;
574
+ /** Coalesced matrix ordinals dirtied since the previous authoring update. */
575
+ readonly dirtyRanges?: readonly {
576
+ readonly start: number;
577
+ readonly end: number;
578
+ }[];
578
579
  /** Stable per-entity GPU buffer cache key (the packed Entity u32). */
579
580
  readonly cacheKey: number;
580
581
  /**
@@ -686,6 +687,8 @@ export interface MaterialSnapshot {
686
687
  readonly paramSnapshot?: Readonly<Record<string, number | number[] | string>> | undefined;
687
688
  /** Effective MaterialAsset parameter contract used to lay out this snapshot. */
688
689
  readonly materialParamSchema?: readonly ParamSchemaEntry[] | undefined;
690
+ /** Authored texture presence, separate from the shared GPU layout schema. */
691
+ readonly standardTextureMask?: number | undefined;
689
692
  /** Authored per-slot UV set and KHR texture transform metadata. */
690
693
  readonly textureCoordinates?: ReadonlyMap<string, MaterialTextureCoordinates> | undefined;
691
694
  /**
@@ -705,6 +708,8 @@ export interface MaterialSnapshot {
705
708
  * them in a lightmap injection region.
706
709
  */
707
710
  readonly textureHandles?: ReadonlyMap<string, Handle<'TextureAsset', 'shared'>> | undefined;
711
+ /** Explicitly authored texture fields that must resolve before GPU admission. */
712
+ readonly authoredTextureFields?: ReadonlySet<string> | undefined;
708
713
  /** Renderer-local target sources; never projected as TextureAsset handles. */
709
714
  readonly textureSources?: ReadonlyMap<string, RenderTargetTextureSource> | undefined;
710
715
  /**
@@ -725,6 +730,8 @@ export interface MaterialSnapshot {
725
730
  readonly videoTextureFields?: ReadonlyMap<string, Handle<'VideoAsset', 'shared'>> | undefined;
726
731
  /** Authored sampler handles keyed by their matching texture parameter. */
727
732
  readonly samplerHandles?: ReadonlyMap<string, Handle<'SamplerAsset', 'shared'>> | undefined;
733
+ /** Explicitly authored sampler fields that must resolve before GPU admission. */
734
+ readonly authoredSamplerFields?: ReadonlySet<string> | undefined;
728
735
  readonly baseColorTexture?: Handle<'TextureAsset', 'shared'> | undefined;
729
736
  /**
730
737
  * PBR metallic-roughness texture handle (present for PBR/sprite/skin
@@ -857,6 +864,11 @@ export interface ExtractedFrame {
857
864
  * three-bucket model per plan-strategy D-3.
858
865
  */
859
866
  readonly dispatch: DispatchEntry[];
867
+ readonly shadowCasterEntityKeys: ReadonlySet<number>;
868
+ /** ShadowCaster ownership keyed by concrete draw item and pass. */
869
+ readonly shadowCasterDrawKeys: ReadonlySet<string>;
870
+ /** Structured ShadowCaster ownership facts retained for exact residual routing. */
871
+ readonly shadowCasterMembership?: readonly ShadowCasterMembership[];
860
872
  readonly skylight: SkylightSnapshot | undefined;
861
873
  readonly skylightCount: number;
862
874
  /** World-local diffuse probe candidates; never a direct-light slot. */
@@ -881,6 +893,8 @@ export interface ExtractedFrame {
881
893
  readonly visibilityStats: {
882
894
  readonly explicitlyHidden: number;
883
895
  };
896
+ /** Detached material-source probe accounting for this extraction. */
897
+ readonly materialTextureSources?: MaterialTextureSourceStats;
884
898
  /**
885
899
  * Per-frame post-process params snapshot collected from PostProcessParams
886
900
  * entities (D-1: data-driven params channel). Maps shader id to the
@@ -896,6 +910,19 @@ export interface ExtractedFrame {
896
910
  /** Built-in hidden candidates, retained for host-side producer deduplication. */
897
911
  readonly hiddenEntityReports: readonly RenderFeatureHiddenEntityReport[];
898
912
  }
913
+ /** Extracted ownership fact for one concrete ShadowCaster pass. */
914
+ export interface ShadowCasterMembership {
915
+ readonly worldEntity: number;
916
+ readonly renderableIndex: number;
917
+ readonly drawItemIndex: number;
918
+ readonly materialHandle: number;
919
+ readonly passIndex: number;
920
+ readonly materialShaderId?: string;
921
+ readonly renderState?: MaterialRenderState;
922
+ readonly cpuReason?: ShadowCasterCpuReason;
923
+ }
924
+ /** Producer evidence for a concrete ShadowCaster pass that remains on CPU. */
925
+ export type ShadowCasterCpuReason = 'transparent' | 'morph' | 'unsupported-shader' | 'unsupported-render-state' | 'missing-skin-bounds' | 'missing-gpu-draw' | 'unprepared' | 'prepared-contract' | 'multi-pass';
899
926
  export type CameraTargetUpdate = 'once' | 'on-demand' | 'continuous';
900
927
  export interface CameraTargetCandidate {
901
928
  readonly worldId: number;
@@ -953,6 +980,10 @@ export declare function resolveCameraTarget(world: World, raw: number | undefine
953
980
  */
954
981
  export declare const BUILTIN_USER_REGION_TEXTURE_FIELDS: readonly string[];
955
982
  export declare function materialTextureFields(shaderId: string | undefined, fields: ReadonlySet<string> | undefined): ReadonlySet<string> | undefined;
983
+ /** Preserve authored-vs-default intent for the GPU resource readiness gate. */
984
+ export declare function collectAuthoredMaterialTextureFields(values: Readonly<Record<string, unknown>>, shaderId: string | undefined, paramSchema: readonly ParamSchemaEntry[] | undefined, assets: AssetRegistry): ReadonlySet<string> | undefined;
985
+ /** Preserve explicit sampler intent; omitted samplers use the default sampler. */
986
+ export declare function collectAuthoredMaterialSamplerFields(values: Readonly<Record<string, unknown>>, textureFields: ReadonlySet<string> | undefined): ReadonlySet<string> | undefined;
956
987
  /**
957
988
  * The authored material surface uses the module IDs declared by built-in WGSL
958
989
  * sources. Runtime pipeline caches still use the existing engine registration
@@ -972,6 +1003,7 @@ export declare function pipelineRenderState(renderState: (MaterialRenderState &
972
1003
  readonly queue?: number;
973
1004
  readonly stencilReference?: number;
974
1005
  }) | undefined): MaterialRenderState | undefined;
1006
+ export declare function shadowCasterCpuReason(material: MaterialSnapshot, draw: GpuDrivenDrawSnapshot | undefined, shadowEntries: readonly DispatchEntry[], morph: MorphSnapshot | undefined, skin: SkinPaletteReceipt | undefined): ShadowCasterCpuReason | undefined;
975
1007
  export declare function internSharedRefFromGuid<B extends string>(world: World, assetsRef: AssetRegistry, guid: string, brand: B): Handle<B, 'shared'> | undefined;
976
1008
  /**
977
1009
  * feat-20260623-world-space-video-asset M4 / w14 (D-5): if a user-region
@@ -998,7 +1030,27 @@ export declare function isAssetGuidBytes(value: Uint8Array): value is AssetGuidB
998
1030
  export declare function materialNormalScale(values: Readonly<Record<string, unknown>>): number;
999
1031
  export declare function materialTextureRef(value: unknown): unknown;
1000
1032
  export declare function collectMaterialTextureCoordinates(values: Readonly<Record<string, unknown>>): Map<string, MaterialTextureCoordinates>;
1001
- export declare function collectMaterialTextureSources(values: Readonly<Record<string, unknown>>, world: World): Map<string, RenderTargetTextureSource>;
1033
+ /**
1034
+ * Return the schema-owned fields that may carry a texture source handle.
1035
+ * Numeric material values are otherwise scalar parameters (roughness,
1036
+ * metallic, custom steps, ...), so probing them through SharedRefStore is
1037
+ * both wasted work and an accidental dependency on slot-number collisions.
1038
+ */
1039
+ export declare function materialTextureSourceFields(schema: readonly ParamSchemaEntry[] | undefined): ReadonlySet<string> | undefined;
1040
+ export interface MaterialTextureSourceStats {
1041
+ sourceFieldsVisited: number;
1042
+ numericSharedRefProbes: number;
1043
+ sourceCacheHits: number;
1044
+ sourceCacheMisses: number;
1045
+ producerRoutes: Record<string, number>;
1046
+ }
1047
+ /**
1048
+ * Extract-local cache for numeric shared references. `null` is a deliberate
1049
+ * negative entry: a handle that is not a render-target source must not be
1050
+ * resolved repeatedly for every material field in the same frame.
1051
+ */
1052
+ export type MaterialTextureSourceCache = Map<number, RenderTargetTextureSource | null>;
1053
+ export declare function collectMaterialTextureSources(values: Readonly<Record<string, unknown>>, world: World, textureFields?: ReadonlySet<string>, stats?: MaterialTextureSourceStats, cache?: MaterialTextureSourceCache): Map<string, RenderTargetTextureSource>;
1002
1054
  export declare function collectMaterialTextureSamplers(values: Readonly<Record<string, unknown>>, resolveSampler: (value: unknown) => Handle<'SamplerAsset', 'shared'> | undefined): Map<string, Handle<'SamplerAsset', 'shared'>>;
1003
1055
  /**
1004
1056
  * feat-20260621-learn-render-5-5-parallax M2 / w7 (D-3): collect the
@@ -1023,6 +1075,7 @@ export declare function collectMaterialTextureSamplers(values: Readonly<Record<s
1023
1075
  */
1024
1076
  export declare function collectUserRegionTextureHandles(pv: Readonly<Record<string, unknown>>, shaderId: string | undefined, paramSchema: readonly ParamSchemaEntry[] | undefined, assetsRef: AssetRegistry, world: World, resolveTex: (value: unknown, brand: 'TextureAsset') => Handle<'TextureAsset', 'shared'> | undefined, videoOut: Map<string, Handle<'VideoAsset', 'shared'>>): Map<string, Handle<'TextureAsset', 'shared'>>;
1025
1077
  export declare function isEngineInjectedTextureField(shaderId: string | undefined, fieldName: string): boolean;
1078
+ export declare function materialStandardTextureMask(parameters: readonly MaterialParameter[] | undefined, shaderId: string | undefined, values: Readonly<Record<string, unknown>>): number | undefined;
1026
1079
  /**
1027
1080
  * Project one material's authoring parameters into the runtime ABI.
1028
1081
  *
@@ -1078,7 +1131,7 @@ export declare function storeMaterialSnapshot(cache: MaterialSnapshotCache, hand
1078
1131
  * the resolvable submeshes; the count-mismatch validator already filtered
1079
1132
  * the count-disagreement case earlier).
1080
1133
  */
1081
- export declare function resolveMaterialSnapshot(handleRaw: number, world: World, assetsRef: AssetRegistry, materialSnapshotCache?: MaterialSnapshotCache, persistentMaterialSnapshotCache?: MaterialSnapshotCache, materialContext?: MaterialCookProgramContext): MaterialSnapshot;
1134
+ export declare function resolveMaterialSnapshot(handleRaw: number, world: World, assetsRef: AssetRegistry, materialSnapshotCache?: MaterialSnapshotCache, persistentMaterialSnapshotCache?: MaterialSnapshotCache, materialContext?: MaterialCookProgramContext, materialTextureSourceStats?: MaterialTextureSourceStats, materialTextureSourceCache?: MaterialTextureSourceCache): MaterialSnapshot;
1082
1135
  /**
1083
1136
  * feat-20260612-skin-palette-per-frame-upload M2 / m2-6: narrow per-frame
1084
1137
  * pipeline surface consumed by `extractFrame`. Today only `skinPaletteAllocator`
@@ -1095,11 +1148,12 @@ export declare function pssmSplit(nearPlane: number, farPlane: number, cascadeCo
1095
1148
  /**
1096
1149
  * Build 6 face view-proj matrices for an omnidirectional shadow caster
1097
1150
  * (point-light cube map). Returns 6 mat4 (column-major 16-float each) in face
1098
- * order [+X, -X, +Y, -Y, +Z, -Z] matching WebGPU cube layer convention.
1151
+ * order [+X, -X, +Y, -Y, +Z, -Z] matching the WebGPU cube-camera layer
1152
+ * convention.
1099
1153
  *
1100
- * Each matrix is `proj * view` where:
1101
- * - `view = lookAt(lightPos, lightPos + faceLook[i], faceUp[i])`
1102
- * - `proj = perspective(PI/2, 1, near, far)` (WebGPU [0, 1] NDC short name)
1154
+ * Derive face directions from the shared CubeCamera owner, then reflect clip X
1155
+ * to match WebGPU cubemap texel orientation. The point-shadow raster lane
1156
+ * mirrors authored front-face winding when it uses these reflected matrices.
1103
1157
  *
1104
1158
  * The returned `Mat4[]` length is always exactly 6. Caller can flatten into a
1105
1159
  * 96-float (6 mat4) Float32Array for UBO upload (T-M1-7).
@@ -1191,6 +1245,8 @@ export declare function computeDirectionalCsm(direction: Vec3, config: Direction
1191
1245
  export interface ExtractFramesOwner {
1192
1246
  readonly cameraOwner: number;
1193
1247
  readonly resourceOwner: number;
1248
+ /** Explicit display-camera entity selected by the frame owner. */
1249
+ readonly cameraEntityKey?: number;
1194
1250
  }
1195
1251
  export interface PreparedExtractContext {
1196
1252
  readonly materialContext?: MaterialCookProgramContext | undefined;
@@ -1202,16 +1258,18 @@ export interface PreparedExtractContext {
1202
1258
  readonly resourceOwnerFog: FogFrame | null | undefined;
1203
1259
  readonly cull: 'self' | 'none' | 'external';
1204
1260
  readonly cullCameras: readonly CameraSnapshot[] | undefined;
1261
+ /** Explicit display-camera entity for this world's camera-owner extract. */
1262
+ readonly cameraEntityKey?: number;
1205
1263
  readonly renderables: 'full' | 'none';
1206
- /** Restrict renderable extraction to these entities while still reading frame resources. */
1207
1264
  readonly renderableEntities: ReadonlySet<number> | undefined;
1208
- /** Keep authored-hidden renderables in the persistent source projection. */
1209
1265
  readonly retainHidden: boolean;
1266
+ /** World identity used to form cross-world producer ownership keys. */
1267
+ readonly worldId: number;
1210
1268
  readonly visibility: VisibilitySnapshot;
1211
1269
  /** Producer-owned artifact lookup; extraction only, never record-time asset reads. */
1212
- readonly getMaterialShaderArtifact: ((materialShaderId: string) => MaterialShaderArtifact | undefined) | undefined;
1270
+ readonly getMaterialShaderArtifact: ((materialShaderId: string, vertexColorAvailable?: boolean) => MaterialShaderArtifact | undefined) | undefined;
1213
1271
  /** Renderer-owned canonical source for explicit large instance collections. */
1214
- readonly instanceCollections: InstanceProjectionStore | undefined;
1272
+ readonly instanceCollections: InstanceCollectionStore | undefined;
1215
1273
  }
1216
1274
  export declare function collectCubeCameraSnapshots(world: World): CubeCameraSnapshot[];
1217
1275
  export declare function collectReflectionProbeFacts(world: World): ReflectionProbeFact[];
@@ -1219,7 +1277,7 @@ interface CameraRoleSelection {
1219
1277
  readonly display: readonly CameraSnapshot[];
1220
1278
  readonly auxiliary: readonly CameraSnapshot[];
1221
1279
  }
1222
- export declare function selectCameraRoles(world: World): CameraRoleSelection;
1280
+ export declare function selectCameraRoles(world: World, requestedEntityKey?: number): CameraRoleSelection;
1223
1281
  export declare function extractCameraSnapshots(world: World): CameraSnapshot[];
1224
1282
  export declare function extractCameraTargetSnapshots(world: World): readonly CameraSnapshot[];
1225
1283
  export declare function tonemapParams(camera: CameraSnapshot): Uint8Array;
@@ -1231,11 +1289,13 @@ export declare function prepareExtractContext(world: World, options?: {
1231
1289
  readonly resourceOwnerFog?: FogFrame | null;
1232
1290
  readonly cull?: 'self' | 'none' | 'external';
1233
1291
  readonly cullCameras?: readonly CameraSnapshot[];
1292
+ readonly cameraEntityKey?: number;
1234
1293
  readonly renderables?: 'full' | 'none';
1235
1294
  readonly renderableEntities?: ReadonlySet<number>;
1236
1295
  readonly retainHidden?: boolean;
1237
- readonly getMaterialShaderArtifact?: (materialShaderId: string) => MaterialShaderArtifact | undefined;
1238
- readonly instanceCollections?: InstanceProjectionStore;
1296
+ readonly worldId?: number;
1297
+ readonly getMaterialShaderArtifact?: (materialShaderId: string, vertexColorAvailable?: boolean) => MaterialShaderArtifact | undefined;
1298
+ readonly instanceCollections?: InstanceCollectionStore;
1239
1299
  }): PreparedExtractContext;
1240
1300
  export declare function fogState(world: World): {
1241
1301
  lkg: FogFrame | undefined;