@forgeax/engine-render 0.1.21 → 0.1.24

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 (584) hide show
  1. package/README.md +281 -38
  2. package/dist/assembly/backend-contract.d.ts +13 -0
  3. package/dist/assembly/backend-contract.d.ts.map +1 -1
  4. package/dist/assembly/bundler-contract.d.ts +9 -0
  5. package/dist/assembly/bundler-contract.d.ts.map +1 -0
  6. package/dist/assembly/device-feature-admission.d.ts +8 -0
  7. package/dist/assembly/device-feature-admission.d.ts.map +1 -1
  8. package/dist/assembly/extended-lighting-fallback.d.ts +13 -0
  9. package/dist/assembly/extended-lighting-fallback.d.ts.map +1 -0
  10. package/dist/assembly/factory.d.ts +7 -235
  11. package/dist/assembly/factory.d.ts.map +1 -1
  12. package/dist/assembly/host-contract.d.ts +10 -0
  13. package/dist/assembly/host-contract.d.ts.map +1 -1
  14. package/dist/assembly/material/assembly.d.ts +3 -2
  15. package/dist/assembly/material/assembly.d.ts.map +1 -1
  16. package/dist/assembly/material/standard-layer-projection.d.ts +10 -0
  17. package/dist/assembly/material/standard-layer-projection.d.ts.map +1 -0
  18. package/dist/assembly/material-shader-policy.d.ts +168 -0
  19. package/dist/assembly/material-shader-policy.d.ts.map +1 -0
  20. package/dist/assembly/material-shader-prewarm.d.ts +21 -0
  21. package/dist/assembly/material-shader-prewarm.d.ts.map +1 -0
  22. package/dist/assembly/mesh-ssbo-grow.d.ts +88 -0
  23. package/dist/assembly/mesh-ssbo-grow.d.ts.map +1 -0
  24. package/dist/assembly/recovery/device-loss-fanout.d.ts +14 -0
  25. package/dist/assembly/recovery/device-loss-fanout.d.ts.map +1 -0
  26. package/dist/assembly/recovery/generation.d.ts +46 -0
  27. package/dist/assembly/recovery/generation.d.ts.map +1 -0
  28. package/dist/assembly/recovery/recovery-attempt.d.ts +63 -0
  29. package/dist/assembly/recovery/recovery-attempt.d.ts.map +1 -0
  30. package/dist/assembly/recovery/renderer-recover.d.ts +115 -0
  31. package/dist/assembly/recovery/renderer-recover.d.ts.map +1 -0
  32. package/dist/assembly/renderer-facade.d.ts +10 -0
  33. package/dist/assembly/renderer-facade.d.ts.map +1 -0
  34. package/dist/assembly/renderer-frame-transaction.d.ts +17 -0
  35. package/dist/assembly/renderer-frame-transaction.d.ts.map +1 -1
  36. package/dist/assembly/renderer-helpers.d.ts +19 -0
  37. package/dist/assembly/renderer-helpers.d.ts.map +1 -0
  38. package/dist/assembly/renderer-lifecycle.d.ts +34 -0
  39. package/dist/assembly/renderer-lifecycle.d.ts.map +1 -1
  40. package/dist/assembly/shader-prewarm-policy.d.ts +15 -0
  41. package/dist/assembly/shader-prewarm-policy.d.ts.map +1 -0
  42. package/dist/assembly/webgpu-ready-contract.d.ts +9 -0
  43. package/dist/assembly/webgpu-ready-contract.d.ts.map +1 -0
  44. package/dist/assembly/webgpu-ready.d.ts +55 -0
  45. package/dist/assembly/webgpu-ready.d.ts.map +1 -0
  46. package/dist/assembly/webgpu-renderer.d.ts +152 -0
  47. package/dist/assembly/webgpu-renderer.d.ts.map +1 -0
  48. package/dist/authoring.mjs +1 -1
  49. package/dist/{chunk-PCHBPYML.mjs → chunk-GE3SDD72.mjs} +37 -5
  50. package/dist/chunk-GE3SDD72.mjs.map +1 -0
  51. package/dist/chunk-KZFTK6DO.mjs +1191 -0
  52. package/dist/chunk-KZFTK6DO.mjs.map +1 -0
  53. package/dist/{chunk-FS2KNUQH.mjs → chunk-Q752SHI5.mjs} +332 -568
  54. package/dist/chunk-Q752SHI5.mjs.map +1 -0
  55. package/dist/{chunk-6OPXDQ2E.mjs → chunk-RR5L4SRS.mjs} +33 -294
  56. package/dist/chunk-RR5L4SRS.mjs.map +1 -0
  57. package/dist/chunk-TFH5I7JJ.mjs +296 -0
  58. package/dist/chunk-TFH5I7JJ.mjs.map +1 -0
  59. package/dist/chunk-UQYS7FRM.mjs +1003 -0
  60. package/dist/chunk-UQYS7FRM.mjs.map +1 -0
  61. package/dist/chunk-YKB5DQV7.mjs +345 -0
  62. package/dist/chunk-YKB5DQV7.mjs.map +1 -0
  63. package/dist/{chunk-5YADUCA7.mjs → chunk-YRUYGA4A.mjs} +1189 -1217
  64. package/dist/chunk-YRUYGA4A.mjs.map +1 -0
  65. package/dist/chunk-Z3YYH2MB.mjs +5082 -0
  66. package/dist/chunk-Z3YYH2MB.mjs.map +1 -0
  67. package/dist/cluster-binner.d.ts +5 -0
  68. package/dist/cluster-binner.d.ts.map +1 -1
  69. package/dist/components/index.d.ts +3 -0
  70. package/dist/components/index.d.ts.map +1 -1
  71. package/dist/components/light-helpers.d.ts +4 -0
  72. package/dist/components/light-helpers.d.ts.map +1 -1
  73. package/dist/components/light-probe.d.ts +9 -0
  74. package/dist/components/light-probe.d.ts.map +1 -0
  75. package/dist/components/rect-area-light.d.ts +12 -0
  76. package/dist/components/rect-area-light.d.ts.map +1 -0
  77. package/dist/components/scene-instance.d.ts +4 -0
  78. package/dist/components/scene-instance.d.ts.map +1 -1
  79. package/dist/components/spot-light.d.ts +3 -0
  80. package/dist/components/spot-light.d.ts.map +1 -1
  81. package/dist/construct-renderer.mjs +27276 -23232
  82. package/dist/construct-renderer.mjs.map +1 -1
  83. package/dist/device/device-scope.d.ts +2 -0
  84. package/dist/device/device-scope.d.ts.map +1 -1
  85. package/dist/device/gpu-residency.d.ts +32 -5
  86. package/dist/device/gpu-residency.d.ts.map +1 -1
  87. package/dist/device/lifecycle-transaction.d.ts +2 -0
  88. package/dist/device/lifecycle-transaction.d.ts.map +1 -0
  89. package/dist/environment/frame.d.ts +5 -0
  90. package/dist/environment/frame.d.ts.map +1 -1
  91. package/dist/environment/inspection.d.ts +7 -0
  92. package/dist/environment/inspection.d.ts.map +1 -1
  93. package/dist/environment/lifecycle.d.ts +20 -2
  94. package/dist/environment/lifecycle.d.ts.map +1 -1
  95. package/dist/errors/gpu-driven.d.ts +26 -0
  96. package/dist/errors/gpu-driven.d.ts.map +1 -0
  97. package/dist/errors/index.d.ts +1 -0
  98. package/dist/errors/index.d.ts.map +1 -1
  99. package/dist/errors/recover.d.ts +67 -3
  100. package/dist/errors/recover.d.ts.map +1 -1
  101. package/dist/errors/render.d.ts +39 -1
  102. package/dist/errors/render.d.ts.map +1 -1
  103. package/dist/extract/contracts.d.ts +899 -0
  104. package/dist/extract/contracts.d.ts.map +1 -0
  105. package/dist/extract/gpu-driven.d.ts +50 -0
  106. package/dist/extract/gpu-driven.d.ts.map +1 -0
  107. package/dist/extract/visibility.d.ts.map +1 -1
  108. package/dist/features/host.d.ts +2 -0
  109. package/dist/features/host.d.ts.map +1 -1
  110. package/dist/features/prepared-gpu-work.d.ts +3 -0
  111. package/dist/features/prepared-gpu-work.d.ts.map +1 -1
  112. package/dist/features/prepared-graphics-store.d.ts +2 -0
  113. package/dist/features/prepared-graphics-store.d.ts.map +1 -1
  114. package/dist/gpu-driven/batch-topology.d.ts +34 -0
  115. package/dist/gpu-driven/batch-topology.d.ts.map +1 -1
  116. package/dist/gpu-driven/prepared-draw.d.ts +63 -0
  117. package/dist/gpu-driven/prepared-draw.d.ts.map +1 -0
  118. package/dist/gpu-driven/production-raster.d.ts +126 -2
  119. package/dist/gpu-driven/production-raster.d.ts.map +1 -1
  120. package/dist/gpu-driven/view-gpu.d.ts +64 -1
  121. package/dist/gpu-driven/view-gpu.d.ts.map +1 -1
  122. package/dist/gpu-scene-schema.d.ts +14 -0
  123. package/dist/gpu-scene-schema.d.ts.map +1 -1
  124. package/dist/gpu-scene.d.ts +9 -1
  125. package/dist/gpu-scene.d.ts.map +1 -1
  126. package/dist/gpu-usage.d.ts +0 -1
  127. package/dist/gpu-usage.d.ts.map +1 -1
  128. package/dist/hdrp-buffers.d.ts +3 -3
  129. package/dist/hdrp-buffers.d.ts.map +1 -1
  130. package/dist/ibl/IblPipelineCache.d.ts +7 -6
  131. package/dist/ibl/IblPipelineCache.d.ts.map +1 -1
  132. package/dist/ibl/skylight-bind-group.d.ts +7 -1
  133. package/dist/ibl/skylight-bind-group.d.ts.map +1 -1
  134. package/dist/index.d.ts +13 -2
  135. package/dist/index.d.ts.map +1 -1
  136. package/dist/index.mjs +90 -5
  137. package/dist/index.mjs.map +1 -1
  138. package/dist/inspection-types.d.ts +163 -1
  139. package/dist/inspection-types.d.ts.map +1 -1
  140. package/dist/internal.d.ts +9 -0
  141. package/dist/internal.d.ts.map +1 -1
  142. package/dist/internal.mjs +23 -2
  143. package/dist/internal.mjs.map +1 -1
  144. package/dist/light-buffer-layout.d.ts +60 -148
  145. package/dist/light-buffer-layout.d.ts.map +1 -1
  146. package/dist/materials.d.ts +34 -10
  147. package/dist/materials.d.ts.map +1 -1
  148. package/dist/mesh-material-bindings.d.ts +56 -0
  149. package/dist/mesh-material-bindings.d.ts.map +1 -1
  150. package/dist/occlusion-proxy.d.ts +4 -0
  151. package/dist/occlusion-proxy.d.ts.map +1 -0
  152. package/dist/pbr-pipeline.d.ts +58 -21
  153. package/dist/pbr-pipeline.d.ts.map +1 -1
  154. package/dist/pipeline/standard-forward-lane.d.ts.map +1 -1
  155. package/dist/pipeline/standard-lighting/graph.d.ts.map +1 -1
  156. package/dist/pipeline/standard-lighting/light-frame.d.ts +3 -3
  157. package/dist/pipeline/standard-lighting/light-frame.d.ts.map +1 -1
  158. package/dist/pipeline/standard-lighting/topology.d.ts +1 -1
  159. package/dist/pipeline/standard-lighting/topology.d.ts.map +1 -1
  160. package/dist/pipeline/standard-lighting/transport.d.ts.map +1 -1
  161. package/dist/pipeline/standard-pipeline.d.ts.map +1 -1
  162. package/dist/pipeline-builder.d.ts +2 -0
  163. package/dist/pipeline-builder.d.ts.map +1 -1
  164. package/dist/pipeline-spec.d.ts +1 -1
  165. package/dist/pipeline-spec.d.ts.map +1 -1
  166. package/dist/plugin.d.ts.map +1 -1
  167. package/dist/points-lines/prepare.d.ts +3 -0
  168. package/dist/points-lines/prepare.d.ts.map +1 -1
  169. package/dist/points-lines/standard-owner.d.ts +33 -0
  170. package/dist/points-lines/standard-owner.d.ts.map +1 -0
  171. package/dist/prepare/extended-lighting/ltc-resources.d.ts +31 -0
  172. package/dist/prepare/extended-lighting/ltc-resources.d.ts.map +1 -0
  173. package/dist/prepare/extended-lighting/resources.d.ts +72 -0
  174. package/dist/prepare/extended-lighting/resources.d.ts.map +1 -0
  175. package/dist/prepare/extended-lighting/spot-modifiers.d.ts +42 -0
  176. package/dist/prepare/extended-lighting/spot-modifiers.d.ts.map +1 -0
  177. package/dist/prepare/extended-lighting/state.d.ts +24 -0
  178. package/dist/prepare/extended-lighting/state.d.ts.map +1 -0
  179. package/dist/record/frame-lighting.d.ts +8 -6
  180. package/dist/record/frame-lighting.d.ts.map +1 -1
  181. package/dist/record/frame-snapshot.d.ts +55 -10
  182. package/dist/record/frame-snapshot.d.ts.map +1 -1
  183. package/dist/record/frame-targets.d.ts.map +1 -1
  184. package/dist/record/frame.d.ts +21 -5
  185. package/dist/record/frame.d.ts.map +1 -1
  186. package/dist/record/gpu-timing.d.ts +19 -7
  187. package/dist/record/gpu-timing.d.ts.map +1 -1
  188. package/dist/record/helpers.d.ts +0 -20
  189. package/dist/record/helpers.d.ts.map +1 -1
  190. package/dist/record/main-pass-geometry.d.ts +20 -2
  191. package/dist/record/main-pass-geometry.d.ts.map +1 -1
  192. package/dist/record/main-pass-material.d.ts +10 -18
  193. package/dist/record/main-pass-material.d.ts.map +1 -1
  194. package/dist/record/main-pass-sprite-draws.d.ts.map +1 -1
  195. package/dist/record/main-pass.d.ts.map +1 -1
  196. package/dist/record/mesh-ssbo.d.ts +11 -3
  197. package/dist/record/mesh-ssbo.d.ts.map +1 -1
  198. package/dist/record/recovery-pipeline.d.ts +30 -0
  199. package/dist/record/recovery-pipeline.d.ts.map +1 -0
  200. package/dist/record/render-context.d.ts +82 -9
  201. package/dist/record/render-context.d.ts.map +1 -1
  202. package/dist/record/shadow-pass.d.ts.map +1 -1
  203. package/dist/record/typed-frame-graph.d.ts +49 -2
  204. package/dist/record/typed-frame-graph.d.ts.map +1 -1
  205. package/dist/record/view-ubo.d.ts +1 -2
  206. package/dist/record/view-ubo.d.ts.map +1 -1
  207. package/dist/recovery/render-system-candidate.d.ts +65 -0
  208. package/dist/recovery/render-system-candidate.d.ts.map +1 -0
  209. package/dist/reflection/inspection.d.ts +10 -0
  210. package/dist/reflection/inspection.d.ts.map +1 -0
  211. package/dist/reflection/projection.d.ts +49 -0
  212. package/dist/reflection/projection.d.ts.map +1 -1
  213. package/dist/reflection/record-owner.d.ts +60 -0
  214. package/dist/reflection/record-owner.d.ts.map +1 -0
  215. package/dist/render-contract.d.ts +78 -15
  216. package/dist/render-contract.d.ts.map +1 -1
  217. package/dist/render-pipeline.d.ts +7 -0
  218. package/dist/render-pipeline.d.ts.map +1 -1
  219. package/dist/render-system-extract-tail.d.ts +12 -0
  220. package/dist/render-system-extract-tail.d.ts.map +1 -0
  221. package/dist/render-system-extract.d.ts +252 -30
  222. package/dist/render-system-extract.d.ts.map +1 -1
  223. package/dist/render-system.d.ts +140 -5
  224. package/dist/render-system.d.ts.map +1 -1
  225. package/dist/scene/probe-blend-record.d.ts +22 -0
  226. package/dist/scene/probe-blend-record.d.ts.map +1 -0
  227. package/dist/scene/probe-blend.d.ts +142 -0
  228. package/dist/scene/probe-blend.d.ts.map +1 -0
  229. package/dist/scene/render-scene-types.d.ts +0 -6
  230. package/dist/scene/render-scene-types.d.ts.map +1 -1
  231. package/dist/scene/render-scene.d.ts +122 -9
  232. package/dist/scene/render-scene.d.ts.map +1 -1
  233. package/dist/scene/visibility/bounds.d.ts +20 -0
  234. package/dist/scene/visibility/bounds.d.ts.map +1 -0
  235. package/dist/scene/visibility/budget.d.ts +16 -0
  236. package/dist/scene/visibility/budget.d.ts.map +1 -0
  237. package/dist/scene/visibility/facet.d.ts +73 -0
  238. package/dist/scene/visibility/facet.d.ts.map +1 -0
  239. package/dist/scene/visibility/gpu-frame-timing.d.ts +41 -0
  240. package/dist/scene/visibility/gpu-frame-timing.d.ts.map +1 -0
  241. package/dist/scene/visibility/gpu-lod.d.ts +46 -0
  242. package/dist/scene/visibility/gpu-lod.d.ts.map +1 -0
  243. package/dist/scene/visibility/inspection.d.ts +132 -0
  244. package/dist/scene/visibility/inspection.d.ts.map +1 -0
  245. package/dist/scene/visibility/lod-selector.d.ts +25 -0
  246. package/dist/scene/visibility/lod-selector.d.ts.map +1 -0
  247. package/dist/scene/visibility/occlusion-confidence.d.ts +81 -0
  248. package/dist/scene/visibility/occlusion-confidence.d.ts.map +1 -0
  249. package/dist/scene/visibility/occlusion-pass.d.ts +57 -0
  250. package/dist/scene/visibility/occlusion-pass.d.ts.map +1 -0
  251. package/dist/scene/visibility/occlusion-query-pool.d.ts +57 -0
  252. package/dist/scene/visibility/occlusion-query-pool.d.ts.map +1 -0
  253. package/dist/scene/visibility/occlusion-runtime.d.ts +96 -0
  254. package/dist/scene/visibility/occlusion-runtime.d.ts.map +1 -0
  255. package/dist/scene/visibility/types.d.ts +34 -0
  256. package/dist/scene/visibility/types.d.ts.map +1 -0
  257. package/dist/ssr/admission.d.ts +122 -0
  258. package/dist/ssr/admission.d.ts.map +1 -0
  259. package/dist/ssr/composition.d.ts +32 -0
  260. package/dist/ssr/composition.d.ts.map +1 -0
  261. package/dist/ssr/errors.d.ts +39 -0
  262. package/dist/ssr/errors.d.ts.map +1 -0
  263. package/dist/ssr/identity.d.ts +13 -0
  264. package/dist/ssr/identity.d.ts.map +1 -0
  265. package/dist/systems/skin-palette-allocator.d.ts +1 -1
  266. package/dist/temporal/frame-coordinator.d.ts +13 -0
  267. package/dist/temporal/frame-coordinator.d.ts.map +1 -1
  268. package/dist/temporal/frame.d.ts +2 -0
  269. package/dist/temporal/frame.d.ts.map +1 -1
  270. package/dist/temporal/index.mjs +6 -5
  271. package/dist/temporal/taa-history-store.d.ts +15 -1
  272. package/dist/temporal/taa-history-store.d.ts.map +1 -1
  273. package/dist/temporal/transaction.d.ts +5 -0
  274. package/dist/temporal/transaction.d.ts.map +1 -1
  275. package/dist/temporal/view.d.ts +7 -0
  276. package/dist/temporal/view.d.ts.map +1 -1
  277. package/dist/tilemap-chunk-extract-system.d.ts +1 -1
  278. package/dist/typed-render-graph-primitives.d.ts +4 -0
  279. package/dist/typed-render-graph-primitives.d.ts.map +1 -1
  280. package/dist/volume/passes.d.ts +8 -4
  281. package/dist/volume/passes.d.ts.map +1 -1
  282. package/package.json +20 -20
  283. package/src/__tests__/cluster-grid-default-surface.unit.test.ts +5 -0
  284. package/src/__tests__/detached-inspection.integration.test.ts +6 -0
  285. package/src/__tests__/device-feature-admission.unit.test.ts +19 -1
  286. package/src/__tests__/device-loss-fanout.unit.test.ts +107 -0
  287. package/src/__tests__/device-scope-lifecycle.unit.test.ts +21 -0
  288. package/src/__tests__/direct-light-snapshot.unit.test.ts +59 -3
  289. package/src/__tests__/environment-generation.integration.test.ts +39 -0
  290. package/src/__tests__/evidence-identity.ts +13 -0
  291. package/src/__tests__/evidence-identity.unit.test.ts +24 -0
  292. package/src/__tests__/expose-renderer-errors.unit.test.ts +34 -0
  293. package/src/__tests__/extended-lighting-recovery.browser.test.ts +14 -0
  294. package/src/__tests__/extended-lighting-recovery.dawn.test.ts +14 -0
  295. package/src/__tests__/extended-lighting-recovery.integration.test.ts +81 -0
  296. package/src/__tests__/extended-lighting-resources.unit.test.ts +51 -0
  297. package/src/__tests__/extended-lighting-zero-feature.integration.test.ts +52 -0
  298. package/src/__tests__/factory-contract.integration.test.ts +154 -6
  299. package/src/__tests__/fallback-row-stride-surface.unit.test.ts +4 -1
  300. package/src/__tests__/frame-observation.contract.test.ts +15 -0
  301. package/src/__tests__/gpu-driven-batch-topology-pbr.unit.test.ts +146 -0
  302. package/src/__tests__/gpu-driven-indirect-raster-evidence.ts +1 -0
  303. package/src/__tests__/gpu-driven-indirect-raster.dawn.test.ts +1 -0
  304. package/src/__tests__/gpu-driven-production.integration.test.ts +572 -9
  305. package/src/__tests__/gpu-driven-scaling.unit.test.ts +66 -2
  306. package/src/__tests__/gpu-driven-view-gpu-evidence.ts +26 -1
  307. package/src/__tests__/gpu-driven-view-graph.integration.test.ts +89 -2
  308. package/src/__tests__/gpu-driven-view.browser.test.ts +3 -3
  309. package/src/__tests__/gpu-driven-view.dawn.test.ts +3 -3
  310. package/src/__tests__/gpu-driven-view.unit.test.ts +50 -0
  311. package/src/__tests__/gpu-lod-evidence.ts +188 -0
  312. package/src/__tests__/gpu-lod-fallback.integration.test.ts +10 -0
  313. package/src/__tests__/gpu-lod-indirect.integration.test.ts +40 -0
  314. package/src/__tests__/gpu-lod-parity.dawn.test.ts +29 -0
  315. package/src/__tests__/gpu-lod-readiness.integration.test.ts +52 -0
  316. package/src/__tests__/gpu-lod-schema.unit.test.ts +66 -0
  317. package/src/__tests__/gpu-lod-selector.unit.test.ts +28 -0
  318. package/src/__tests__/gpu-lod-silhouette.browser.test.ts +13 -0
  319. package/src/__tests__/gpu-resource-store-stride.unit.test.ts +66 -1
  320. package/src/__tests__/gpu-scene.dawn.test.ts +8 -1
  321. package/src/__tests__/gpu-scene.unit.test.ts +49 -3
  322. package/src/__tests__/ibl/face-uniforms.unit.test.ts +2 -0
  323. package/src/__tests__/ibl-residency-publication.unit.test.ts +113 -0
  324. package/src/__tests__/light-buffer-layout.unit.test.ts +113 -3
  325. package/src/__tests__/light-inspection.unit.test.ts +55 -0
  326. package/src/__tests__/light-resource-error.unit.test.ts +43 -0
  327. package/src/__tests__/lighting-scene-roundtrip.integration.test.ts +109 -0
  328. package/src/__tests__/lod-bounds.unit.test.ts +42 -0
  329. package/src/__tests__/lod-cpu-lane.integration.test.ts +55 -0
  330. package/src/__tests__/lod-cpu-no-change.perf.test.ts +19 -0
  331. package/src/__tests__/lod-gpu-frame-timing.unit.test.ts +49 -0
  332. package/src/__tests__/lod-multi-view.integration.test.ts +63 -0
  333. package/src/__tests__/lod-occlusion-device-loss.integration.test.ts +27 -0
  334. package/src/__tests__/lod-occlusion-final-decision.integration.test.ts +47 -0
  335. package/src/__tests__/lod-occlusion-inspection.integration.test.ts +217 -0
  336. package/src/__tests__/lod-occlusion-inspection.schema.test-d.ts +14 -0
  337. package/src/__tests__/lod-occlusion-inspection.unit.test.ts +72 -0
  338. package/src/__tests__/lod-occlusion-visual-evidence.ts +91 -0
  339. package/src/__tests__/lod-occlusion.browser.test.ts +15 -0
  340. package/src/__tests__/lod-occlusion.dawn.test.ts +20 -0
  341. package/src/__tests__/lod-selector.profile.test.ts +35 -0
  342. package/src/__tests__/lod-selector.unit.test.ts +68 -0
  343. package/src/__tests__/lod-visibility-identity.unit.test.ts +198 -0
  344. package/src/__tests__/lod-visibility-lifecycle.integration.test.ts +132 -0
  345. package/src/__tests__/ltc-resources.unit.test.ts +32 -0
  346. package/src/__tests__/material-contract-inventory.unit.test.ts +41 -9
  347. package/src/__tests__/material-cooked-projection.unit.test.ts +19 -1
  348. package/src/__tests__/material-static-dynamic-route.unit.test.ts +29 -0
  349. package/src/__tests__/material-stride-surface.unit.test.ts +7 -3
  350. package/src/__tests__/materials-standard-contract.unit.test.ts +104 -0
  351. package/src/__tests__/mesh-buffer-usage-surface.unit.test.ts +1 -1
  352. package/src/__tests__/occlusion-confidence.unit.test.ts +168 -0
  353. package/src/__tests__/occlusion-invalidation.integration.test.ts +37 -0
  354. package/src/__tests__/occlusion-pass-routing.unit.test.ts +16 -0
  355. package/src/__tests__/occlusion-pass.dawn.test.ts +20 -0
  356. package/src/__tests__/occlusion-pass.integration.test.ts +43 -0
  357. package/src/__tests__/occlusion-pass.rhi-null.test.ts +22 -0
  358. package/src/__tests__/occlusion-query-pool.rhi-null.test.ts +21 -0
  359. package/src/__tests__/occlusion-query-pool.unit.test.ts +95 -0
  360. package/src/__tests__/occlusion-query-ticket.integration.test.ts +47 -0
  361. package/src/__tests__/occlusion-query.dawn.test.ts +16 -0
  362. package/src/__tests__/occlusion-query.evidence.ts +178 -0
  363. package/src/__tests__/occlusion-query.rhi-null.test.ts +31 -0
  364. package/src/__tests__/occlusion-runtime.unit.test.ts +120 -0
  365. package/src/__tests__/physical-clearcoat.integration.test.ts +89 -0
  366. package/src/__tests__/prepared-gpu-driven-pbr.integration.test.ts +196 -0
  367. package/src/__tests__/prepared-graphics-pipeline-warmup.unit.test.ts +1 -1
  368. package/src/__tests__/probe-bindings.unit.test.ts +200 -0
  369. package/src/__tests__/probe-blend-numeric.unit.test.ts +67 -0
  370. package/src/__tests__/probe-blend-oracle.unit.test.ts +136 -0
  371. package/src/__tests__/probe-capacity.integration.test.ts +97 -0
  372. package/src/__tests__/probe-recovery.integration.test.ts +104 -0
  373. package/src/__tests__/probe-scene-dirty.integration.test.ts +211 -0
  374. package/src/__tests__/profiler-phase-catalog.test.ts +4 -1
  375. package/src/__tests__/profiler-phase-token.test.ts +1 -0
  376. package/src/__tests__/recover-error-policy-owner.unit.test.ts +6 -3
  377. package/src/__tests__/recovery-candidate-prepare.contract.test.ts +140 -0
  378. package/src/__tests__/rect-area-boundary.unit.test.ts +24 -0
  379. package/src/__tests__/reflection-fallback-graph.unit.test.ts +67 -0
  380. package/src/__tests__/reflection-fallback-inspection.unit.test.ts +77 -0
  381. package/src/__tests__/reflection-fallback-lifecycle.integration.test.ts +21 -0
  382. package/src/__tests__/reflection-fallback-projection.unit.test.ts +90 -0
  383. package/src/__tests__/reflection-fallback-source.unit.test.ts +32 -0
  384. package/src/__tests__/reflection-probe-owner-placement.unit.test.ts +39 -0
  385. package/src/__tests__/reflection-probe-record-owner.characterization.unit.test.ts +120 -0
  386. package/src/__tests__/render-error-code-owner.test-d.ts +1 -0
  387. package/src/__tests__/render-feature-docs.unit.test.ts +12 -7
  388. package/src/__tests__/render-graph-fallback.integration.test.ts +24 -0
  389. package/src/__tests__/render-perf/extended-lighting.bench.test.ts +66 -0
  390. package/src/__tests__/render-scene-projection.unit.test.ts +447 -18
  391. package/src/__tests__/renderer-factory-material-contract.unit.test.ts +160 -17
  392. package/src/__tests__/renderer-frame-generation-fence.integration.test.ts +47 -0
  393. package/src/__tests__/renderer-generation-assembly.unit.test.ts +77 -0
  394. package/src/__tests__/renderer-generation-failure.unit.test.ts +108 -0
  395. package/src/__tests__/renderer-producer-root-matrix.integration.test.ts +33 -0
  396. package/src/__tests__/renderer-recovery-capability-matrix.unit.test.ts +59 -0
  397. package/src/__tests__/renderer-recovery-contract.unit.test.ts +73 -0
  398. package/src/__tests__/renderer-recovery-lifecycle.unit.test.ts +216 -0
  399. package/src/__tests__/renderer-target-history-recovery.integration.test.ts +80 -0
  400. package/src/__tests__/shader-manifest-fixture.ts +13 -16
  401. package/src/__tests__/shader-stage-surface.unit.test.ts +1 -1
  402. package/src/__tests__/skin-motion-regression.unit.test.ts +22 -0
  403. package/src/__tests__/skinned-shadow-caster.test.ts +2 -2
  404. package/src/__tests__/spot-modifier-projection.unit.test.ts +70 -0
  405. package/src/__tests__/ssr-admission-matrix.integration.test.ts +206 -0
  406. package/src/__tests__/ssr-composition.unit.test.ts +46 -0
  407. package/src/__tests__/ssr-fallback-zero-work.bench.test.ts +94 -0
  408. package/src/__tests__/ssr-recovery-errors.unit.test.ts +58 -0
  409. package/src/__tests__/standard-cluster-variant-resolution.unit.test.ts +67 -0
  410. package/src/__tests__/standard-clustered-pipeline.unit.test.ts +7 -0
  411. package/src/__tests__/standard-layer-projection.unit.test.ts +23 -0
  412. package/src/__tests__/standard-lighting-inspection.integration.test.ts +1 -1
  413. package/src/__tests__/standard-lighting-write.unit.test.ts +66 -2
  414. package/src/__tests__/temporal-fallback-generation.integration.test.ts +16 -0
  415. package/src/__tests__/temporal-view.unit.test.ts +3 -3
  416. package/src/__tests__/transmission-prewarm.unit.test.ts +111 -32
  417. package/src/__tests__/visibility-budget.integration.test.ts +140 -0
  418. package/src/__tests__/visibility-budget.unit.test.ts +70 -0
  419. package/src/__tests__/visibility-extract.integration.test.ts +11 -6
  420. package/src/__tests__/volumetric-fog-point-spot-accumulation.integration.test.ts +6 -3
  421. package/src/__tests__/volumetric-fog-stage-readback.dawn.test.ts +31 -28
  422. package/src/__tests__/volumetric-fog-topology.unit.test.ts +3 -1
  423. package/src/assembly/backend-contract.ts +13 -0
  424. package/src/assembly/bundler-contract.ts +9 -0
  425. package/src/assembly/device-feature-admission.ts +26 -9
  426. package/src/assembly/extended-lighting-fallback.ts +216 -0
  427. package/src/assembly/factory.ts +81 -9634
  428. package/src/assembly/host-contract.ts +10 -0
  429. package/src/assembly/material/assembly.ts +18 -2
  430. package/src/assembly/material/standard-layer-projection.ts +16 -0
  431. package/src/assembly/material-shader-policy.ts +854 -0
  432. package/src/assembly/material-shader-prewarm.ts +88 -0
  433. package/src/assembly/mesh-ssbo-grow.ts +270 -0
  434. package/src/assembly/recovery/device-loss-fanout.ts +89 -0
  435. package/src/assembly/recovery/generation.ts +141 -0
  436. package/src/assembly/recovery/recovery-attempt.ts +800 -0
  437. package/src/assembly/recovery/renderer-recover.ts +906 -0
  438. package/src/assembly/renderer-facade.ts +342 -0
  439. package/src/assembly/renderer-frame-transaction.ts +45 -0
  440. package/src/assembly/renderer-helpers.ts +99 -0
  441. package/src/assembly/renderer-lifecycle.ts +159 -0
  442. package/src/assembly/shader-prewarm-policy.ts +157 -0
  443. package/src/assembly/webgpu-ready-contract.ts +14 -0
  444. package/src/assembly/webgpu-ready.ts +4079 -0
  445. package/src/assembly/webgpu-renderer.ts +4095 -0
  446. package/src/cluster-binner.ts +31 -0
  447. package/src/components/__tests__/lighting-authoring.unit.test.ts +39 -0
  448. package/src/components/__tests__/rect-area-light.unit.test.ts +33 -0
  449. package/src/components/camera.ts +1 -1
  450. package/src/components/index.ts +3 -0
  451. package/src/components/light-helpers.ts +52 -1
  452. package/src/components/light-probe.ts +13 -0
  453. package/src/components/rect-area-light.ts +15 -0
  454. package/src/components/scene-instance.ts +6 -0
  455. package/src/components/spot-light.ts +3 -0
  456. package/src/debug-draw-glue.ts +1 -1
  457. package/src/device/__tests__/extended-lighting-recovery.unit.test.ts +24 -0
  458. package/src/device/device-scope.ts +35 -6
  459. package/src/device/gpu-residency.ts +334 -35
  460. package/src/device/lifecycle-transaction.ts +12 -0
  461. package/src/environment/frame.ts +6 -0
  462. package/src/environment/inspection.ts +10 -0
  463. package/src/environment/lifecycle.ts +122 -9
  464. package/src/errors/gpu-driven.ts +92 -0
  465. package/src/errors/index.ts +1 -0
  466. package/src/errors/recover.ts +108 -5
  467. package/src/errors/render.ts +72 -1
  468. package/src/extract/camera.ts +3 -3
  469. package/src/extract/contracts.ts +974 -0
  470. package/src/extract/gpu-driven.ts +108 -0
  471. package/src/extract/visibility.ts +0 -23
  472. package/src/features/host.ts +16 -0
  473. package/src/features/prepared-gpu-work.ts +20 -2
  474. package/src/features/prepared-graphics-store.ts +17 -0
  475. package/src/gpu-driven/batch-topology.ts +206 -28
  476. package/src/gpu-driven/prepared-draw.ts +208 -0
  477. package/src/gpu-driven/production-raster.ts +1046 -39
  478. package/src/gpu-driven/view-gpu.ts +411 -29
  479. package/src/gpu-scene-schema.ts +13 -0
  480. package/src/gpu-scene.ts +137 -67
  481. package/src/gpu-usage.ts +0 -1
  482. package/src/hdrp-buffers.ts +6 -6
  483. package/src/ibl/IblPipelineCache.ts +134 -50
  484. package/src/ibl/skylight-bind-group.ts +26 -0
  485. package/src/index.ts +83 -1
  486. package/src/inspection-types.ts +220 -1
  487. package/src/internal.ts +38 -0
  488. package/src/light-buffer-layout.ts +157 -324
  489. package/src/materials.ts +278 -47
  490. package/src/mesh-material-bindings.ts +59 -0
  491. package/src/occlusion-proxy.ts +64 -0
  492. package/src/pbr-pipeline.ts +290 -60
  493. package/src/pipeline/standard-forward-lane.ts +47 -0
  494. package/src/pipeline/standard-lighting/graph.ts +2 -1
  495. package/src/pipeline/standard-lighting/light-frame.ts +3 -2
  496. package/src/pipeline/standard-lighting/topology.ts +1 -1
  497. package/src/pipeline/standard-lighting/transport.ts +2 -1
  498. package/src/pipeline/standard-pipeline.ts +2 -0
  499. package/src/pipeline-builder.ts +5 -2
  500. package/src/pipeline-spec.ts +12 -1
  501. package/src/plugin.ts +4 -0
  502. package/src/points-lines/__tests__/cache-recovery.unit.test.ts +22 -0
  503. package/src/points-lines/prepare.ts +9 -0
  504. package/src/points-lines/standard-owner.ts +403 -0
  505. package/src/prepare/__tests__/extended-lighting-capability.unit.test.ts +56 -0
  506. package/src/prepare/extended-lighting/ltc-resources.ts +136 -0
  507. package/src/prepare/extended-lighting/resources.ts +389 -0
  508. package/src/prepare/extended-lighting/spot-modifiers.ts +194 -0
  509. package/src/prepare/extended-lighting/state.ts +92 -0
  510. package/src/record/__tests__/frame-targets-recovery.unit.test.ts +60 -0
  511. package/src/record/__tests__/gpu-timing.unit.test.ts +177 -0
  512. package/src/record/__tests__/main-pass-geometry.unit.test.ts +26 -1
  513. package/src/record/__tests__/mesh-ssbo.unit.test.ts +38 -0
  514. package/src/record/__tests__/recovery-pipeline.unit.test.ts +124 -0
  515. package/src/record/__tests__/sprite-material-abi.unit.test.ts +28 -13
  516. package/src/record/__tests__/standard-pbr-ubo-layout.unit.test.ts +47 -4
  517. package/src/record/__tests__/temporal-payload.unit.test.ts +29 -28
  518. package/src/record/__tests__/typed-frame-graph-plan.unit.test.ts +21 -2
  519. package/src/record/frame-lighting.ts +252 -53
  520. package/src/record/frame-snapshot.ts +72 -12
  521. package/src/record/frame-targets.ts +11 -1
  522. package/src/record/frame.ts +416 -95
  523. package/src/record/gpu-timing.ts +108 -44
  524. package/src/record/helpers.ts +1 -59
  525. package/src/record/main-pass-geometry.ts +434 -44
  526. package/src/record/main-pass-material.ts +324 -210
  527. package/src/record/main-pass-sprite-draws.ts +58 -92
  528. package/src/record/main-pass.ts +94 -6
  529. package/src/record/mesh-ssbo.ts +79 -46
  530. package/src/record/recovery-pipeline.ts +695 -0
  531. package/src/record/render-context.ts +99 -7
  532. package/src/record/shadow-pass.ts +66 -40
  533. package/src/record/typed-frame-graph.ts +270 -84
  534. package/src/record/view-ubo.ts +17 -27
  535. package/src/recovery/render-system-candidate.ts +839 -0
  536. package/src/reflection/inspection.ts +67 -0
  537. package/src/reflection/projection.ts +196 -1
  538. package/src/reflection/record-owner.ts +1283 -0
  539. package/src/render-contract.ts +82 -12
  540. package/src/render-pipeline.ts +5 -0
  541. package/src/render-system-extract-tail.ts +2983 -0
  542. package/src/render-system-extract.ts +290 -2784
  543. package/src/render-system.ts +1597 -1192
  544. package/src/scene/__tests__/changed-block-summary.candidate.test.ts +36 -0
  545. package/src/scene/probe-blend-record.ts +54 -0
  546. package/src/scene/probe-blend.ts +813 -0
  547. package/src/scene/render-scene-types.ts +0 -7
  548. package/src/scene/render-scene.ts +972 -184
  549. package/src/scene/visibility/bounds.ts +57 -0
  550. package/src/scene/visibility/budget.ts +40 -0
  551. package/src/scene/visibility/facet.ts +400 -0
  552. package/src/scene/visibility/gpu-frame-timing.ts +101 -0
  553. package/src/scene/visibility/gpu-lod.ts +119 -0
  554. package/src/scene/visibility/inspection.ts +313 -0
  555. package/src/scene/visibility/lod-selector.ts +84 -0
  556. package/src/scene/visibility/occlusion-confidence.ts +478 -0
  557. package/src/scene/visibility/occlusion-pass.ts +165 -0
  558. package/src/scene/visibility/occlusion-query-pool.ts +178 -0
  559. package/src/scene/visibility/occlusion-runtime.ts +672 -0
  560. package/src/scene/visibility/types.ts +50 -0
  561. package/src/ssr/admission.ts +451 -0
  562. package/src/ssr/composition.ts +73 -0
  563. package/src/ssr/errors.ts +76 -0
  564. package/src/ssr/identity.ts +12 -0
  565. package/src/systems/skin-palette-allocator.ts +1 -1
  566. package/src/temporal/frame-coordinator.ts +30 -1
  567. package/src/temporal/frame.ts +14 -1
  568. package/src/temporal/taa-history-store.ts +46 -2
  569. package/src/temporal/temporal-view.ts +1 -1
  570. package/src/temporal/transaction.ts +9 -0
  571. package/src/temporal/view.ts +11 -0
  572. package/src/tilemap-chunk-extract-system.ts +5 -5
  573. package/src/transmission/__tests__/standard-transmission.dawn.test.ts +19 -12
  574. package/src/typed-render-graph-primitives.ts +48 -0
  575. package/src/volume/passes.ts +46 -49
  576. package/dist/.tsbuildinfo +0 -1
  577. package/dist/chunk-5YADUCA7.mjs.map +0 -1
  578. package/dist/chunk-6OPXDQ2E.mjs.map +0 -1
  579. package/dist/chunk-BXBQQKFQ.mjs +0 -67
  580. package/dist/chunk-BXBQQKFQ.mjs.map +0 -1
  581. package/dist/chunk-FS2KNUQH.mjs.map +0 -1
  582. package/dist/chunk-PCHBPYML.mjs.map +0 -1
  583. package/dist/chunk-VFPLTKCU.mjs +0 -192
  584. package/dist/chunk-VFPLTKCU.mjs.map +0 -1
@@ -1,238 +1,10 @@
1
- import { MeshSsboCapacityExceededError, MeshSsboCeilingReachedError } from '@forgeax/engine-assets-runtime';
2
- import type { Buffer, PipelineLayout, RhiDevice } from '@forgeax/engine-rhi';
3
- import { type MaterialShaderManifestEntry } from '@forgeax/engine-shader';
4
- import type { ImportTransport, ParamSchemaEntry } from '@forgeax/engine-types';
5
- export type { MaterialShaderManifestEntry } from '@forgeax/engine-shader';
6
- import type { RenderFeatureMaterialShaderBindingContract } from '../features/plan';
7
- import type { Renderer, RendererOptions } from '../render-contract';
1
+ import type { RendererOptions } from '../render-contract';
8
2
  import { type RhiBackendPack } from './backend-contract';
9
- import type { RendererAssemblyImplementation, RendererHostImplementation } from './host-contract';
10
- export { assembleMaterialProjection } from './material/assembly';
11
- export { projectMaterialPipeline, routeMaterialPipeline, updateMaterialRuntimeValues, } from './material/pipeline-projection';
12
- /**
13
- * Bundler-layer injection accepted by `createRenderer` (and proxied by
14
- * `createApp`) as the optional third argument.
15
- *
16
- * feat-20260608-create-app-param-surface-trim / M2 / D-3: aggregates the two
17
- * host-injected build-tool channels:
18
- *
19
- * - shaderManifestUrl: the URL the host's vite-plugin-shader emit step
20
- * wrote `manifest.json` to. When this field is omitted (or `bundler`
21
- * itself is omitted), createRenderer falls back to
22
- * '/shaders/manifest.json' (D-2 q5-A) so the LO 1.1 zero-config takeoff
23
- * path keeps working without explicit injection. Tests can inject via a
24
- * `data:application/json,...` URL to bypass fetch.
25
- *
26
- * - importTransport: dev-only ImportTransport forwarded verbatim to the
27
- * AssetRegistry third ctor slot so DDC-miss assets can lazy-import.
28
- * Absent => shipped form (a DDC miss fails fast with `asset-not-imported`).
29
- *
30
- * The interface is duplicated structurally in `@forgeax/engine-app`
31
- * (BundlerOptions exported from packages/app); demos consume through the app
32
- * package, the engine accepts via this local minimal shape so packages/runtime
33
- * does NOT depend on packages/app (charter P4 + reverse-coupling deny-list).
34
- * TypeScript structural typing makes the two interchangeable at every call
35
- * site (M3 forgeaxBundlerAdapter() returns the same shape).
36
- */
37
- export interface BundlerOptions {
38
- readonly importTransport?: ImportTransport | undefined;
39
- readonly shaderManifestUrl?: string | undefined;
40
- }
41
- /** Build a Renderer from the backend pack supplied by the Runtime host. */
42
- /**
43
- * Per-variant PipelineLayout selector (M4.5 / D-10 option A).
44
- *
45
- * The resolved HDRP group(2) contract needs the 7-slot BGL chain
46
- * (`hdrpPbrPipelineLayout`); ordinary material contracts keep the 1-slot
47
- * mesh-array BGL chain (`pbrPipelineLayout`). Variant keys select source
48
- * artifacts only and never override this contract.
49
- *
50
- * Returns `null` when the selected layout is unavailable. An HDRP variant
51
- * never falls back to the URP layout: its clustered WGSL and group(2) ABI
52
- * must be admitted together or the draw fails closed.
53
- *
54
- * Pure function — exported for unit-test access (M4.5 / w35).
55
- */
56
- /**
57
- * Closed enum of pipeline-layout kinds the selector can dispatch to.
58
- *
59
- * `pbr` — standard PBR (1-entry mesh-array BGL).
60
- * `pbr-skin` — bug-20260611-skin-pipeline-layout: 3-entry mesh-array BGL
61
- * (binding 0 meshes + binding 1 current palette + binding 2 previous
62
- * palette) for the `forgeax::pbr-skin`
63
- * material shader.
64
- * `hdrp-pbr` — feat-20260609 HDRP cluster-forward variant (7-slot group(2)
65
- * BGL substituted at slot 2).
66
- * `sprite-urp` — bug-20260708 M2 (c): sprite / sprite-lit shaders reuse
67
- * the URP 1-slot mesh-array BGL (they don't declare
68
- * CLUSTER_FORWARD_AVAILABLE) but their canonical all-true variant key
69
- * `''` (`SPRITE_PASS_PER_INSTANCE_REGION_VARIANT_SET`) MUST NOT trigger
70
- * the `variantSet===''` → HDRP branch of the selector. Callers
71
- * (`buildPipelineContext`) resolve `sprite-urp` from the sprite
72
- * `materialShaderId` and pass it through; the selector short-circuits
73
- * to `pbrPipelineLayout` before the HDRP check.
74
- *
75
- * AC-09 grep gate: the selector body (`selectPipelineLayoutForVariant`)
76
- * **MUST NOT** contain literal `'forgeax::pbr-skin'` (or another
77
- * shader-id literal). The caller resolves `LayoutKind` upstream and passes
78
- * the structured value through (charter P4 consistent abstraction). New
79
- * material-shader layouts add a `LayoutKind` member + a PipelineState slot
80
- * + a switch arm here in one cut (charter P3 extensibility).
81
- */
82
- export type LayoutKind = 'pbr' | 'pbr-skin' | 'hdrp-pbr' | 'hdrp-skin' | 'sprite-urp' | 'unlit-urp';
83
- /** The closed group(2) contract resolved from the selected WGSL artifact. */
84
- export type { PipelineGroup2Contract } from '../pbr-pipeline';
85
- export { resolvePipelineGroup2Contract } from '../pbr-pipeline';
86
- /**
87
- * Return every device-capability HDRP PBR variant that needs a lazy module
88
- * label seeded during renderer boot. Color availability is intentionally not
89
- * filtered: colored and no-color meshes use distinct composed WGSL modules.
90
- * Transmission is filtered by the same sampled-texture capability gate as
91
- * Standard transmission because HDRP shares the material texture ABI.
92
- */
93
- export declare function selectHdrpPbrPrewarmVariants(manifestEntry: MaterialShaderManifestEntry | undefined, storageBufferCapable: boolean, transmissionCapable: boolean, directionalPcssAvailable?: boolean, projectorAvailable?: boolean): readonly MaterialShaderManifestEntry['variants'][number][];
94
- /** Return every active-capability pbr-skin variant used by URP and HDRP draws. */
95
- export declare function selectSkinPrewarmVariants(manifestEntry: MaterialShaderManifestEntry | undefined, storageBufferCapable: boolean): readonly MaterialShaderManifestEntry['variants'][number][];
96
- /**
97
- * Select both Standard transmission states from the manifest for exact-label
98
- * prewarming. The requested keys come from declared variants; no key is
99
- * synthesized and no source fallback is permitted.
100
- */
101
- export declare function selectStandardPbrTransmissionPrewarmVariants(manifestEntry: MaterialShaderManifestEntry | undefined, storageBufferCapable: boolean, directionalPcssAvailable?: boolean, projectorAvailable?: boolean): readonly MaterialShaderManifestEntry['variants'][number][];
102
- /**
103
- * Select the PBR variant that matches a fallback mesh with no COLOR_0 input.
104
- * Unknown/custom material IDs may still use the legacy PBR fallback, so that
105
- * path must obey the same geometry-owned vertex-color axis as registered PBR.
106
- */
107
- export declare function selectNoColorPbrVariant(manifestEntry: MaterialShaderManifestEntry | undefined, storageBufferCapable: boolean, variantSet: string | undefined, directionalPcssAvailable?: boolean, projectorAvailable?: boolean): MaterialShaderManifestEntry['variants'][number] | undefined;
108
- export type MaterialShaderBindingContract = RenderFeatureMaterialShaderBindingContract;
109
- export type MaterialShaderVertexInputContract = 'none' | 'render-material';
110
- export declare function resolveMaterialShaderBindingContract(source: string): MaterialShaderBindingContract;
111
- export declare function resolveMaterialShaderVertexInputContract(source: string): MaterialShaderVertexInputContract;
112
- /**
113
- * Decide whether a custom material's user-region can use the shared PBR
114
- * bind-group layout. Resource names are not part of a WebGPU layout contract:
115
- * the only safe reuse test is that every derived binding in the custom schema
116
- * is an identical prefix of the canonical user-region descriptor, including
117
- * binding kind and its full shape (sample type, view dimension, sampler mode,
118
- * dynamic-offset flags, and visibility). A texture3d/array or comparison /
119
- * storage resource must therefore take the per-shader layout path even when
120
- * its field count is small.
121
- */
122
- export declare function isSharedMaterialUserRegionCompatible(paramSchema: readonly ParamSchemaEntry[]): boolean;
123
- export declare function allowsUnlitPreparedFallback(depthFormatOverride: GPUTextureFormat | null | undefined, vertexLayout: string | undefined, materialShaderId?: string): boolean;
124
- /**
125
- * Prepared VFX draws own their vertex inputs and bind groups. A missing
126
- * authored material shader is therefore retryable, but it is never safe to
127
- * substitute the built-in PBR module: PBR declares mesh/instance groups that
128
- * the VFX draw does not bind. Returning true keeps the feature on its
129
- * structured next-frame recovery path instead of creating an invalid PSO.
130
- */
131
- export declare function shouldDeferMissingPreparedMaterialShader(vertexLayout: string | undefined): boolean;
132
- export declare function selectPipelineLayoutForVariant(state: {
133
- readonly pbrPipelineLayout: PipelineLayout | null;
134
- readonly hdrpPbrPipelineLayout: PipelineLayout | null;
135
- readonly pbrSkinPipelineLayout: PipelineLayout | null;
136
- readonly hdrpSkinPipelineLayout?: PipelineLayout | null;
137
- } | null, _variantSet: string | undefined, layoutKind?: LayoutKind): PipelineLayout | null;
138
- /**
139
- * Resolve a requested material variant against the actual backend capabilities.
140
- * Record callers use the native-capability request; the backend-owned axes
141
- * must be rewritten before the request reaches shader lookup and PSO layout
142
- * selection.
143
- */
144
- export declare function resolveMaterialShaderVariantSet(requestedVariantSet: string | undefined, variants: ReadonlyArray<{
145
- readonly defines: Readonly<Record<string, boolean>>;
146
- }>, backendKind: RhiDevice['caps']['backendKind'], storageBuffer: boolean, projectorAvailable?: boolean): string | undefined;
147
- /**
148
- * Keep a single-source material on its canonical module identity. A manifest
149
- * entry with no variants cannot consume a synthesized capability or geometry
150
- * axis, so carrying one into the pipeline cache only creates an uncached lazy
151
- * compile beside the prewarmed source module.
152
- */
153
- export declare function normalizeMaterialShaderVariantSet(requestedVariantSet: string | undefined, manifestEntry: MaterialShaderManifestEntry | undefined): string | undefined;
3
+ import type { BundlerOptions } from './bundler-contract';
4
+ import type { RendererAssemblyImplementation } from './host-contract';
5
+ export type { BundlerOptions } from './bundler-contract';
6
+ export type { LayoutKind, MaterialShaderBindingContract, MaterialShaderManifestEntry, MaterialShaderVertexInputContract, MeshSsboBufferWrapper, MeshSsboGrowController, MeshSsboGrowControllerInit, MeshSsboGrowDevice, MeshSsboGrowErrorRegistry, MeshSsboGrowResult, MeshSsboState, } from './webgpu-renderer';
7
+ export { allowsUnlitPreparedFallback, assembleMaterialProjection, createMeshSsboGrowController, deriveStorageBufferCeiling, exposeRenderer, isSharedMaterialUserRegionCompatible, normalizeMaterialShaderVariantSet, projectMaterialPipeline, resolveMaterialShaderBindingContract, resolveMaterialShaderVariantSet, resolveMaterialShaderVertexInputContract, routeMaterialPipeline, selectHdrpPbrPrewarmVariants, selectNoColorPbrVariant, selectPipelineLayoutForVariant, selectProbePrewarmVariants, selectSkinPrewarmVariants, selectStandardPbrTransmissionPrewarmVariants, shouldDeferMissingPreparedMaterialShader, updateMaterialRuntimeValues, } from './webgpu-renderer';
8
+ /** Build a renderer after selecting the host-supplied backend pack. */
154
9
  export declare function createRenderer(canvas: unknown, options?: RendererOptions, bundler?: BundlerOptions, backend?: RhiBackendPack): Promise<RendererAssemblyImplementation>;
155
- /** Narrow the concrete host to the lease/receipt-only public contract. */
156
- export declare function exposeRenderer(renderer: RendererHostImplementation): Renderer;
157
- /**
158
- * Derive a usable storage-buffer ceiling from device limits.
159
- *
160
- * Mirrors the `SKIN_PALETTE_MAX_BINDING_BYTES` 0/undefined floor pattern
161
- * (createRenderer.ts:4070-4073): when `maxStorageBufferBindingSize` is 0 or
162
- * undefined (WebKit `downlevel_webgl2_defaults`), climb the fallback chain —
163
- * `maxBufferSize` → `maxUniformBufferBindingSize` → WebGPU spec floor
164
- * 134217728 (128 MiB).
165
- *
166
- * Pure helper — no device dependency, directly testable in node.
167
- */
168
- export declare function deriveStorageBufferCeiling(limits: Readonly<{
169
- maxStorageBufferBindingSize?: number;
170
- maxBufferSize?: number;
171
- maxUniformBufferBindingSize?: number;
172
- }>): number;
173
- /**
174
- * Mesh + material buffer wrapper carrying the inner `Buffer` handle plus
175
- * the byte-size at the time of allocation. The wrapper-object identity is
176
- * stable across grow events — only `.buffer` and `.sizeInBytes` are mutated
177
- * in place — so `PipelineState.meshStorageBuffer` / `materialUniformBuffer`
178
- * fields capture the wrapper once and survive grow events without a re-bind
179
- * cycle through the public Renderer surface (research §F8 R1).
180
- */
181
- export interface MeshSsboBufferWrapper {
182
- buffer: Buffer | null;
183
- sizeInBytes: number;
184
- }
185
- /** Closure-local grow state surfaced for spy assertions in unit tests. */
186
- export interface MeshSsboState {
187
- slotCount: number;
188
- mesh: MeshSsboBufferWrapper;
189
- material: MeshSsboBufferWrapper;
190
- }
191
- /** `growMeshSsbo` return shape (D-5: Result-like, never throws). */
192
- export type MeshSsboGrowResult = {
193
- readonly ok: true;
194
- } | {
195
- readonly ok: false;
196
- readonly code: 'mesh-ssbo-ceiling-reached' | 'mesh-ssbo-capacity-exceeded';
197
- /** Pre-grow slotCount — the caller can render up to this many slots (degraded subset). */
198
- readonly degradedToSlotCount: number;
199
- };
200
- /** Minimal device surface the grow controller needs (mocked in unit tests). */
201
- export interface MeshSsboGrowDevice {
202
- readonly limits: {
203
- readonly maxStorageBufferBindingSize: number;
204
- };
205
- readonly createBuffer: (descriptor: {
206
- readonly label?: string;
207
- readonly size: number;
208
- readonly usage: number;
209
- readonly mappedAtCreation?: boolean;
210
- }) => Buffer;
211
- }
212
- /** Minimal error-registry surface (just `fire` — `RhiErrorListenerRegistry` matches). */
213
- export interface MeshSsboGrowErrorRegistry {
214
- fire: (e: MeshSsboCeilingReachedError | MeshSsboCapacityExceededError) => void;
215
- }
216
- export interface MeshSsboGrowControllerInit {
217
- readonly device: MeshSsboGrowDevice;
218
- readonly errorRegistry: MeshSsboGrowErrorRegistry;
219
- readonly initialSlotCount: number;
220
- readonly perEntityStride: number;
221
- readonly meshUsage: number;
222
- readonly materialUsage: number;
223
- }
224
- export interface MeshSsboGrowController {
225
- readonly state: MeshSsboState;
226
- /** Allocate the initial mesh + material buffer pair at `initialSlotCount`. */
227
- readonly initialBuild: () => void;
228
- /** Grow to satisfy `neededSlots`; idempotent + ceiling-aware. */
229
- readonly growMeshSsbo: (neededSlots: number) => MeshSsboGrowResult;
230
- }
231
- /**
232
- * Build a closure-scoped mesh-SSBO grow controller. Module-scope so unit
233
- * tests (`__tests__/mesh-ssbo-grow.test.ts`) can construct it with a fake
234
- * device + spy errorRegistry without spinning up the full WebGPU renderer
235
- * (charter F2 minimal surface — the controller is the testable seam).
236
- */
237
- export declare function createMeshSsboGrowController(init: MeshSsboGrowControllerInit): MeshSsboGrowController;
238
10
  //# sourceMappingURL=factory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/assembly/factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/assembly/factory.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAA0B,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,iBAAiB,CAAC;AAqCtE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,YAAY,EACV,UAAU,EACV,6BAA6B,EAC7B,2BAA2B,EAC3B,iCAAiC,EACjC,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,aAAa,GACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,2BAA2B,EAC3B,0BAA0B,EAC1B,4BAA4B,EAC5B,0BAA0B,EAC1B,cAAc,EACd,oCAAoC,EACpC,iCAAiC,EACjC,uBAAuB,EACvB,oCAAoC,EACpC,+BAA+B,EAC/B,wCAAwC,EACxC,qBAAqB,EACrB,4BAA4B,EAC5B,uBAAuB,EACvB,8BAA8B,EAC9B,0BAA0B,EAC1B,yBAAyB,EACzB,4CAA4C,EAC5C,wCAAwC,EACxC,2BAA2B,GAC5B,MAAM,mBAAmB,CAAC;AAqD3B,uEAAuE;AACvE,wBAAsB,cAAc,CAClC,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,eAAe,EACzB,OAAO,CAAC,EAAE,cAAc,EACxB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,8BAA8B,CAAC,CAqBzC"}
@@ -5,6 +5,7 @@ import type { RenderPipelineAsset } from '@forgeax/engine-types';
5
5
  import type { RecoverFailure } from '../errors/recover';
6
6
  import type { ObservationUnavailableError, RenderError } from '../errors/render';
7
7
  import type { RenderFeature, RenderFeatureDiagnostics } from '../features/types';
8
+ import type { GpuDrivenProductionInspection, LodOcclusionInspection } from '../inspection-types';
8
9
  import type { MeshMaterialBindingObservation } from '../mesh-material-bindings';
9
10
  import type { FrameObservation, FrameObservationOptions } from '../record/frame';
10
11
  import type { CurrentGraphTarget, GraphTargetCaptureRequest } from '../record/frame-snapshot';
@@ -38,6 +39,15 @@ export interface RendererHostImplementation {
38
39
  destroyRenderTarget(target: RenderTarget): RenderResult<void, RenderError>;
39
40
  setProfile(profile: RenderProfile): RenderResult<void, RenderError>;
40
41
  inspect(): RenderInspection;
42
+ /**
43
+ * Internal bounded inspection for high-cardinality producers. The public
44
+ * snapshot also carries the full persistent render-scene record table, which
45
+ * is intentionally not materialized for per-frame performance evidence.
46
+ */
47
+ inspectLodOcclusion(): {
48
+ readonly lodOcclusion: LodOcclusionInspection | undefined;
49
+ readonly gpuDriven: GpuDrivenProductionInspection;
50
+ };
41
51
  drawFrame(request: RenderFrameInput): RenderResult<FrameReceipt, RhiError | RenderError>;
42
52
  observe(receipt: FrameReceipt, request: FrameObservationRequest): Promise<RenderResult<FrameReceiptObservation, RenderError>>;
43
53
  releaseSurface(): RenderResult<void, RhiError>;
@@ -1 +1 @@
1
- {"version":3,"file":"host-contract.d.ts","sourceRoot":"","sources":["../../src/assembly/host-contract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"host-contract.d.ts","sourceRoot":"","sources":["../../src/assembly/host-contract.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { CookedMaterialRecord } from '@forgeax/engine-pack/material-cook';
2
- import type { MaterialValue } from '@forgeax/engine-types';
1
+ import { type CookedMaterialRecord } from '@forgeax/engine-pack/material-cook';
2
+ import type { MaterialValue, StandardLayerPlan } from '@forgeax/engine-types';
3
3
  export interface MaterialRenderPassProjection {
4
4
  readonly name: string;
5
5
  readonly module: string;
@@ -16,6 +16,7 @@ export interface MaterialRenderProjection {
16
16
  readonly passes: readonly MaterialRenderPassProjection[];
17
17
  readonly runtimeValues: Readonly<Record<string, MaterialValue | null>>;
18
18
  readonly staticSelection: readonly string[];
19
+ readonly layerPlan: StandardLayerPlan;
19
20
  }
20
21
  export declare function assembleMaterialProjection(record: CookedMaterialRecord): MaterialRenderProjection;
21
22
  //# sourceMappingURL=assembly.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"assembly.d.ts","sourceRoot":"","sources":["../../../src/assembly/material/assembly.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACzD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,SAAS,4BAA4B,EAAE,CAAC;IACzD,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC;IACvE,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7C;AAkBD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,oBAAoB,GAAG,wBAAwB,CASjG"}
1
+ {"version":3,"file":"assembly.d.ts","sourceRoot":"","sources":["../../../src/assembly/material/assembly.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,oBAAoB,EAE1B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG9E,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACzD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,SAAS,4BAA4B,EAAE,CAAC;IACzD,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC;IACvE,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;CACvC;AAkBD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,oBAAoB,GAAG,wBAAwB,CAoBjG"}
@@ -0,0 +1,10 @@
1
+ import type { MaterialParameter, MaterialPass, StandardLayerPlan } from '@forgeax/engine-types';
2
+ /**
3
+ * Renderer projection of the compiler-owned Standard layer contract.
4
+ *
5
+ * The renderer receives the prepared parameter/pass snapshot and never keeps
6
+ * a second parameter-name inventory. This function is intentionally pure so
7
+ * assembly and tests observe the same mode and pass family as cooking.
8
+ */
9
+ export declare function projectStandardLayerPlan(parameters: readonly MaterialParameter[], passes: readonly MaterialPass[]): StandardLayerPlan;
10
+ //# sourceMappingURL=standard-layer-projection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standard-layer-projection.d.ts","sourceRoot":"","sources":["../../../src/assembly/material/standard-layer-projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAGhG;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,SAAS,iBAAiB,EAAE,EACxC,MAAM,EAAE,SAAS,YAAY,EAAE,GAC9B,iBAAiB,CAEnB"}
@@ -0,0 +1,168 @@
1
+ import type { AssetRegistry } from '@forgeax/engine-assets-runtime';
2
+ import type { PipelineLayout, Result, RhiDevice, ShaderModule } from '@forgeax/engine-rhi';
3
+ import { RhiError } from '@forgeax/engine-rhi';
4
+ import { type MaterialShaderManifestEntry, type ShaderCatalog, type ShaderCatalogDevice } from '@forgeax/engine-shader';
5
+ import type { ParamSchemaEntry } from '@forgeax/engine-types';
6
+ import type { RenderFeatureMaterialShaderBindingContract } from '../features/plan';
7
+ import type { RhiErrorListenerRegistry } from '../lifecycle';
8
+ /**
9
+ * Sync-shaped `ShaderCatalogDevice` adapter wrapping the backend pack's
10
+ * async `createShaderModule(rhiDevice, desc)`.
11
+ *
12
+ * Shape: fire-and-forget pre-bake — the first call for hash X returns
13
+ * `Result.err(RhiError)` (a pending signal) while kicking off the async
14
+ * createShaderModule + cache write; subsequent calls for the same hash hit
15
+ * the cache and return `Result.ok(ShaderModule)` (charter proposition 9
16
+ * graceful degradation).
17
+ *
18
+ * @placeholder M3 scope limit: the full async pre-bake wiring is delivered
19
+ * by the ECS-driven render pipeline (later closure). The current shape is
20
+ * already enough to support MVP-2.2 instance-per-engine + AI consumer
21
+ * onboarding (charter proposition 1 progressive disclosure / proposition 4
22
+ * explicit failure with retry guidance in the error hint).
23
+ */
24
+ /**
25
+ * Extended ShaderCatalogDevice contract for engine internals: adds a
26
+ * `seedModule(label, module)` to populate the lazy adapter cache from an
27
+ * already-compiled module, so eager-built modules (PBR / unlit / shadow
28
+ * caster) and the lazy MaterialShader pipeline cache share one cache and
29
+ * the lazy path is hit-on-first-call (no 1-frame warmup) for engine-shipped
30
+ * shaders. Externally still typed as ShaderCatalogDevice (see callers in
31
+ * ShaderCatalog).
32
+ */
33
+ export interface ShaderDeviceAdapterInternal extends ShaderCatalogDevice {
34
+ /**
35
+ * feat-20260609 R3-fixup: seed the adapter's moduleCache with an
36
+ * already-compiled ShaderModule under `label`. Used by the eager
37
+ * shadow_caster pre-bake so the lazy PSO build hit on
38
+ * `module-forgeax::default-shadow-caster` returns OK on frame 1.
39
+ */
40
+ seedModule(label: string, module: ShaderModule): void;
41
+ invalidateModule(label: string): void;
42
+ }
43
+ type ShaderModuleAdapterMode = 'validated' | 'immediate';
44
+ export declare function makeShaderDeviceAdapter(rhiDevice: RhiDevice, _errorRegistry: RhiErrorListenerRegistry, asyncCreateShaderModule: ((device: RhiDevice, desc: {
45
+ code: string;
46
+ label?: string | undefined;
47
+ }) => Promise<Result<ShaderModule, RhiError>>) | undefined, immediateCreateShaderModule: ((device: RhiDevice, desc: {
48
+ code: string;
49
+ label?: string | undefined;
50
+ }) => Result<ShaderModule, RhiError>) | undefined, mode?: ShaderModuleAdapterMode): ShaderDeviceAdapterInternal;
51
+ /**
52
+ * Fallback path for the M3 D-P4 auto-select facade when the backend pack
53
+ * does not supply a top-level async `createShaderModule` (e.g. the rhi-wgpu
54
+ * path which routes through the synchronous `device.createShaderModule`
55
+ * entry, or an explicit escape-hatch instance that omits the async
56
+ * factory). The forgeax `RhiDevice` interface intentionally does not expose
57
+ * a sync `createShaderModule` (fix-f3; see packages/rhi/src/index.ts line
58
+ * 1164), so this helper performs a structural probe + returns a structured
59
+ * error when neither the async factory nor a structural sync entry exists
60
+ * (charter proposition 4 explicit failure baseline).
61
+ */
62
+ export declare function invokeDeviceCreateShaderModule(rhiDevice: RhiDevice, desc: {
63
+ code: string;
64
+ label?: string | undefined;
65
+ }): Promise<Result<ShaderModule, RhiError>>;
66
+ /**
67
+ * bug-20260601-hello-tonemap-material-register M1: prepare engine-shipped
68
+ * material shaders (cap gate + manifest load + registration) before the
69
+ * renderer is returned so that `register<MaterialAsset>` referencing an
70
+ * engine shader (e.g. `forgeax::default-standard-pbr`) succeeds without
71
+ * waiting for `renderer.initialization` (plan-strategy D-1/D-2/D-5).
72
+ *
73
+ * Failures (cap-gate insufficient, manifest-malformed, shader-not-found)
74
+ * throw structured `RhiError` / `ShaderError` which propagate through
75
+ * `createRenderer`'s synchronous reject path (D-2 structured reject).
76
+ */
77
+ export declare function prepareMaterialShaders(rhiDevice: RhiDevice, getShader: () => ShaderCatalog, assets: AssetRegistry, materialShaderUvSetCounts: Map<string, number>): Promise<void>;
78
+ /**
79
+ * Per-variant PipelineLayout selector (M4.5 / D-10 option A).
80
+ *
81
+ * The HDRP variant (`CLUSTER_FORWARD_AVAILABLE=true` or canonical `''`
82
+ * all-true when the shader declares the cluster axis) needs the 7-slot
83
+ * group(2) BGL chain (`hdrpPbrPipelineLayout`); URP variants
84
+ * (`CLUSTER_FORWARD_AVAILABLE=false` / undefined / no axis) keep the
85
+ * 1-slot mesh-array BGL chain (`pbrPipelineLayout`).
86
+ *
87
+ * Returns `null` only when the URP fallback layout itself is null
88
+ * (Camera-only / empty-manifest path). When the HDRP layout is null but
89
+ * URP exists, the HDRP variant gracefully falls back to URP — the WGSL
90
+ * resolved upstream by `findVariantByKey` is the URP variant in that
91
+ * case (manifest entry with all-true definesKey === '' was registered
92
+ * with isHdrpActive=false at boot when storage-buffer caps are absent).
93
+ *
94
+ * Pure function — exported for unit-test access (M4.5 / w35).
95
+ */
96
+ /**
97
+ * Closed enum of pipeline-layout kinds the selector can dispatch to.
98
+ *
99
+ * `pbr` — standard PBR (1-entry mesh-array BGL).
100
+ * `pbr-skin` — bug-20260611-skin-pipeline-layout: 2-entry mesh-array BGL
101
+ * (binding 0 meshes + binding 1 palette) for the `forgeax::pbr-skin`
102
+ * material shader.
103
+ * `hdrp-pbr` — feat-20260609 HDRP cluster-forward variant (7-slot group(2)
104
+ * BGL substituted at slot 2).
105
+ * `sprite-urp` — bug-20260708 M2 (c): sprite / sprite-lit shaders reuse
106
+ * the URP 1-slot mesh-array BGL (they don't declare
107
+ * CLUSTER_FORWARD_AVAILABLE) but their canonical all-true variant key
108
+ * `''` (`SPRITE_PASS_PER_INSTANCE_REGION_VARIANT_SET`) MUST NOT trigger
109
+ * the `variantSet===''` → HDRP branch of the selector. Callers
110
+ * (`buildPipelineContext`) resolve `sprite-urp` from the sprite
111
+ * `materialShaderId` and pass it through; the selector short-circuits
112
+ * to `pbrPipelineLayout` before the HDRP check.
113
+ *
114
+ * AC-09 grep gate: the selector body (`selectPipelineLayoutForVariant`)
115
+ * **MUST NOT** contain literal `'forgeax::pbr-skin'` (or another
116
+ * shader-id literal). The caller resolves `LayoutKind` upstream and passes
117
+ * the structured value through (charter P4 consistent abstraction). New
118
+ * material-shader layouts add a `LayoutKind` member + a PipelineState slot
119
+ * + a switch arm here in one cut (charter P3 extensibility).
120
+ */
121
+ export type LayoutKind = 'pbr' | 'pbr-skin' | 'hdrp-pbr' | 'hdrp-skin' | 'sprite-urp' | 'unlit-urp';
122
+ export declare function isSharedMaterialUserRegionCompatible(paramSchema: readonly ParamSchemaEntry[]): boolean;
123
+ /**
124
+ * Select the PBR variant that matches a fallback mesh with no COLOR_0 input.
125
+ * Unknown/custom material IDs may still use the legacy PBR fallback, so that
126
+ * path must obey the same geometry-owned vertex-color axis as registered PBR.
127
+ */
128
+ export declare function selectNoColorPbrVariant(manifestEntry: MaterialShaderManifestEntry | undefined, storageBufferCapable: boolean, variantSet: string | undefined, extendedLightingShaderAvailable?: boolean, directionalPcssAvailable?: boolean, projectorAvailable?: boolean): MaterialShaderManifestEntry['variants'][number] | undefined;
129
+ export type MaterialShaderBindingContract = RenderFeatureMaterialShaderBindingContract;
130
+ export type MaterialShaderVertexInputContract = 'none' | 'render-material';
131
+ export declare function resolveMaterialShaderBindingContract(source: string): MaterialShaderBindingContract;
132
+ export declare function resolveMaterialShaderVertexInputContract(source: string): MaterialShaderVertexInputContract;
133
+ export declare function allowsUnlitPreparedFallback(depthFormatOverride: GPUTextureFormat | null | undefined, vertexLayout: string | undefined, materialShaderId?: string): boolean;
134
+ /**
135
+ * Prepared VFX draws own their vertex inputs and bind groups. A missing
136
+ * authored material shader is therefore retryable, but it is never safe to
137
+ * substitute the built-in PBR module: PBR declares mesh/instance groups that
138
+ * the VFX draw does not bind. Returning true keeps the feature on its
139
+ * structured next-frame recovery path instead of creating an invalid PSO.
140
+ */
141
+ export declare function shouldDeferMissingPreparedMaterialShader(vertexLayout: string | undefined): boolean;
142
+ export declare function selectPipelineLayoutForVariant(state: {
143
+ readonly pbrPipelineLayout: PipelineLayout | null;
144
+ readonly pbrProbePipelineLayout?: PipelineLayout | null;
145
+ readonly hdrpPbrPipelineLayout: PipelineLayout | null;
146
+ readonly hdrpProbePbrPipelineLayout?: PipelineLayout | null;
147
+ readonly pbrSkinPipelineLayout: PipelineLayout | null;
148
+ readonly pbrSkinProbePipelineLayout?: PipelineLayout | null;
149
+ readonly hdrpSkinPipelineLayout?: PipelineLayout | null;
150
+ } | null, variantSet: string | undefined, layoutKind?: LayoutKind): PipelineLayout | null;
151
+ /**
152
+ * Resolve a requested material variant against the actual backend capabilities.
153
+ * Record callers use the native-capability request; the backend-owned axes
154
+ * must be rewritten before the request reaches shader lookup and PSO layout
155
+ * selection.
156
+ */
157
+ export declare function resolveMaterialShaderVariantSet(requestedVariantSet: string | undefined, variants: ReadonlyArray<{
158
+ readonly defines: Readonly<Record<string, boolean>>;
159
+ }>, backendKind: RhiDevice['caps']['backendKind'], storageBuffer: boolean, maxSampledTexturesPerShaderStageOrProjectorAvailable?: number | boolean): string | undefined;
160
+ /**
161
+ * Keep a single-source material on its canonical module identity. A manifest
162
+ * entry with no variants cannot consume a synthesized capability or geometry
163
+ * axis, so carrying one into the pipeline cache only creates an uncached lazy
164
+ * compile beside the prewarmed source module.
165
+ */
166
+ export declare function normalizeMaterialShaderVariantSet(requestedVariantSet: string | undefined, manifestEntry: MaterialShaderManifestEntry | undefined): string | undefined;
167
+ export {};
168
+ //# sourceMappingURL=material-shader-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"material-shader-policy.d.ts","sourceRoot":"","sources":["../../src/assembly/material-shader-policy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { Result, RhiDevice, ShaderModule } from '@forgeax/engine-rhi';
2
+ import { RhiError } from '@forgeax/engine-rhi';
3
+ import type { ShaderCatalog } from '@forgeax/engine-shader';
4
+ type AsyncCreateShaderModule = (device: RhiDevice, desc: {
5
+ code: string;
6
+ label?: string | undefined;
7
+ }) => Promise<Result<ShaderModule, RhiError>>;
8
+ /**
9
+ * Prewarm producer-declared material shaders and all published capability
10
+ * variants before the first prepared frame. Variant labels mirror the lazy
11
+ * material pipeline adapter's module lookup contract.
12
+ */
13
+ export declare function prewarmRequiredMaterialShaders({ rhiDevice, registry, asyncCreateShaderModule, requiredMaterialShaders, seedShaderModule, }: {
14
+ readonly rhiDevice: RhiDevice;
15
+ readonly registry: ShaderCatalog;
16
+ readonly asyncCreateShaderModule: AsyncCreateShaderModule | undefined;
17
+ readonly requiredMaterialShaders: readonly string[];
18
+ readonly seedShaderModule: (label: string, module: ShaderModule) => void;
19
+ }): Promise<void>;
20
+ export {};
21
+ //# sourceMappingURL=material-shader-prewarm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"material-shader-prewarm.d.ts","sourceRoot":"","sources":["../../src/assembly/material-shader-prewarm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAK5D,KAAK,uBAAuB,GAAG,CAC7B,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,KAC/C,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;AAE7C;;;;GAIG;AACH,wBAAsB,8BAA8B,CAAC,EACnD,SAAS,EACT,QAAQ,EACR,uBAAuB,EACvB,uBAAuB,EACvB,gBAAgB,GACjB,EAAE;IACD,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,uBAAuB,EAAE,uBAAuB,GAAG,SAAS,CAAC;IACtE,QAAQ,CAAC,uBAAuB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpD,QAAQ,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;CAC1E,GAAG,OAAO,CAAC,IAAI,CAAC,CA0DhB"}