@forgeax/engine-render 0.1.20 → 0.1.23

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 (645) hide show
  1. package/README.md +365 -29
  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/device-feature-admission.d.ts +18 -0
  5. package/dist/assembly/device-feature-admission.d.ts.map +1 -0
  6. package/dist/assembly/directional-shadow-inspection.d.ts +38 -0
  7. package/dist/assembly/directional-shadow-inspection.d.ts.map +1 -0
  8. package/dist/assembly/factory.d.ts +30 -19
  9. package/dist/assembly/factory.d.ts.map +1 -1
  10. package/dist/assembly/host-contract.d.ts +19 -0
  11. package/dist/assembly/host-contract.d.ts.map +1 -1
  12. package/dist/assembly/render-target-host.d.ts +46 -0
  13. package/dist/assembly/render-target-host.d.ts.map +1 -0
  14. package/dist/assets/render-asset-port.d.ts.map +1 -1
  15. package/dist/authoring.mjs +4 -1
  16. package/dist/authoring.mjs.map +1 -1
  17. package/dist/capture/cube-views.d.ts +21 -0
  18. package/dist/capture/cube-views.d.ts.map +1 -0
  19. package/dist/capture/scheduler.d.ts +54 -0
  20. package/dist/capture/scheduler.d.ts.map +1 -0
  21. package/dist/{chunk-PCHBPYML.mjs → chunk-4L3P6DT5.mjs} +2 -2
  22. package/dist/chunk-4L3P6DT5.mjs.map +1 -0
  23. package/dist/{chunk-VFPLTKCU.mjs → chunk-4NPUASZR.mjs} +15 -4
  24. package/dist/chunk-4NPUASZR.mjs.map +1 -0
  25. package/dist/chunk-DIYW3M5D.mjs +5085 -0
  26. package/dist/chunk-DIYW3M5D.mjs.map +1 -0
  27. package/dist/chunk-FBC4R44J.mjs +1003 -0
  28. package/dist/chunk-FBC4R44J.mjs.map +1 -0
  29. package/dist/{chunk-CDTWTHZR.mjs → chunk-FF7K3FSO.mjs} +474 -168
  30. package/dist/chunk-FF7K3FSO.mjs.map +1 -0
  31. package/dist/chunk-HZUPSYW7.mjs +1104 -0
  32. package/dist/chunk-HZUPSYW7.mjs.map +1 -0
  33. package/dist/{chunk-TBQJOK2L.mjs → chunk-QODA5UKU.mjs} +321 -269
  34. package/dist/chunk-QODA5UKU.mjs.map +1 -0
  35. package/dist/chunk-YALPS44A.mjs +296 -0
  36. package/dist/chunk-YALPS44A.mjs.map +1 -0
  37. package/dist/{chunk-4XINDLAY.mjs → chunk-ZUWKAZ2I.mjs} +1963 -2178
  38. package/dist/chunk-ZUWKAZ2I.mjs.map +1 -0
  39. package/dist/cluster-binner.d.ts +5 -0
  40. package/dist/cluster-binner.d.ts.map +1 -1
  41. package/dist/components/camera.d.ts +1 -0
  42. package/dist/components/camera.d.ts.map +1 -1
  43. package/dist/components/cube-camera.d.ts +20 -0
  44. package/dist/components/cube-camera.d.ts.map +1 -0
  45. package/dist/components/directional-light.d.ts +11 -2
  46. package/dist/components/directional-light.d.ts.map +1 -1
  47. package/dist/components/directional-shadow-filter.d.ts +25 -0
  48. package/dist/components/directional-shadow-filter.d.ts.map +1 -0
  49. package/dist/components/index.d.ts +5 -0
  50. package/dist/components/index.d.ts.map +1 -1
  51. package/dist/components/light-helpers.d.ts +4 -0
  52. package/dist/components/light-helpers.d.ts.map +1 -1
  53. package/dist/components/light-probe.d.ts +9 -0
  54. package/dist/components/light-probe.d.ts.map +1 -0
  55. package/dist/components/rect-area-light.d.ts +12 -0
  56. package/dist/components/rect-area-light.d.ts.map +1 -0
  57. package/dist/components/reflection-probe.d.ts +17 -0
  58. package/dist/components/reflection-probe.d.ts.map +1 -0
  59. package/dist/components/scene-instance.d.ts +4 -0
  60. package/dist/components/scene-instance.d.ts.map +1 -1
  61. package/dist/components/spot-light.d.ts +3 -0
  62. package/dist/components/spot-light.d.ts.map +1 -1
  63. package/dist/construct-renderer.mjs +14836 -9620
  64. package/dist/construct-renderer.mjs.map +1 -1
  65. package/dist/device/gpu-residency.d.ts +8 -1
  66. package/dist/device/gpu-residency.d.ts.map +1 -1
  67. package/dist/device/lifecycle-transaction.d.ts +2 -0
  68. package/dist/device/lifecycle-transaction.d.ts.map +1 -0
  69. package/dist/environment/frame.d.ts.map +1 -1
  70. package/dist/environment/lifecycle.d.ts +5 -0
  71. package/dist/environment/lifecycle.d.ts.map +1 -1
  72. package/dist/errors/gpu-driven.d.ts +26 -0
  73. package/dist/errors/gpu-driven.d.ts.map +1 -0
  74. package/dist/errors/index.d.ts +1 -0
  75. package/dist/errors/index.d.ts.map +1 -1
  76. package/dist/errors/recover.d.ts +9 -1
  77. package/dist/errors/recover.d.ts.map +1 -1
  78. package/dist/errors/render.d.ts +166 -93
  79. package/dist/errors/render.d.ts.map +1 -1
  80. package/dist/extract/directional-shadow-projection.d.ts +23 -0
  81. package/dist/extract/directional-shadow-projection.d.ts.map +1 -0
  82. package/dist/extract/environment.d.ts +14 -0
  83. package/dist/extract/environment.d.ts.map +1 -1
  84. package/dist/extract/gpu-driven.d.ts +50 -0
  85. package/dist/extract/gpu-driven.d.ts.map +1 -0
  86. package/dist/extract/visibility.d.ts.map +1 -1
  87. package/dist/features/fullscreen.d.ts.map +1 -1
  88. package/dist/features/targets.d.ts.map +1 -1
  89. package/dist/features/types.d.ts +10 -0
  90. package/dist/features/types.d.ts.map +1 -1
  91. package/dist/fullscreen-post-process-pass.d.ts +13 -2
  92. package/dist/fullscreen-post-process-pass.d.ts.map +1 -1
  93. package/dist/gpu-driven/batch-topology.d.ts +34 -0
  94. package/dist/gpu-driven/batch-topology.d.ts.map +1 -1
  95. package/dist/gpu-driven/prepared-draw.d.ts +63 -0
  96. package/dist/gpu-driven/prepared-draw.d.ts.map +1 -0
  97. package/dist/gpu-driven/production-raster.d.ts +97 -2
  98. package/dist/gpu-driven/production-raster.d.ts.map +1 -1
  99. package/dist/gpu-driven/view-gpu.d.ts +64 -1
  100. package/dist/gpu-driven/view-gpu.d.ts.map +1 -1
  101. package/dist/gpu-scene-schema.d.ts +14 -0
  102. package/dist/gpu-scene-schema.d.ts.map +1 -1
  103. package/dist/gpu-scene.d.ts +8 -1
  104. package/dist/gpu-scene.d.ts.map +1 -1
  105. package/dist/gpu-usage.d.ts +0 -1
  106. package/dist/gpu-usage.d.ts.map +1 -1
  107. package/dist/hdrp-buffers.d.ts +21 -19
  108. package/dist/hdrp-buffers.d.ts.map +1 -1
  109. package/dist/ibl/IblPipelineCache.d.ts +4 -0
  110. package/dist/ibl/IblPipelineCache.d.ts.map +1 -1
  111. package/dist/ibl/kernel-cache.d.ts +36 -0
  112. package/dist/ibl/kernel-cache.d.ts.map +1 -0
  113. package/dist/index.d.ts +39 -3
  114. package/dist/index.d.ts.map +1 -1
  115. package/dist/index.mjs +91 -6
  116. package/dist/index.mjs.map +1 -1
  117. package/dist/inspection-types.d.ts +214 -1
  118. package/dist/inspection-types.d.ts.map +1 -1
  119. package/dist/instances-derived-bounds.d.ts +50 -0
  120. package/dist/instances-derived-bounds.d.ts.map +1 -0
  121. package/dist/internal.d.ts +9 -0
  122. package/dist/internal.d.ts.map +1 -1
  123. package/dist/internal.mjs +23 -2
  124. package/dist/internal.mjs.map +1 -1
  125. package/dist/light-buffer-layout.d.ts +58 -140
  126. package/dist/light-buffer-layout.d.ts.map +1 -1
  127. package/dist/materials.d.ts.map +1 -1
  128. package/dist/mesh-material-bindings.d.ts +54 -0
  129. package/dist/mesh-material-bindings.d.ts.map +1 -1
  130. package/dist/pbr-pipeline.d.ts +38 -14
  131. package/dist/pbr-pipeline.d.ts.map +1 -1
  132. package/dist/pipeline/standard-forward-lane.d.ts +2 -1
  133. package/dist/pipeline/standard-forward-lane.d.ts.map +1 -1
  134. package/dist/pipeline/standard-lighting/errors.d.ts +4 -0
  135. package/dist/pipeline/standard-lighting/errors.d.ts.map +1 -0
  136. package/dist/pipeline/standard-lighting/graph.d.ts +24 -0
  137. package/dist/pipeline/standard-lighting/graph.d.ts.map +1 -0
  138. package/dist/pipeline/standard-lighting/inspection.d.ts +38 -0
  139. package/dist/pipeline/standard-lighting/inspection.d.ts.map +1 -0
  140. package/dist/pipeline/standard-lighting/layout.d.ts +28 -0
  141. package/dist/pipeline/standard-lighting/layout.d.ts.map +1 -0
  142. package/dist/pipeline/standard-lighting/light-frame.d.ts +33 -0
  143. package/dist/pipeline/standard-lighting/light-frame.d.ts.map +1 -0
  144. package/dist/pipeline/standard-lighting/membership.d.ts +14 -0
  145. package/dist/pipeline/standard-lighting/membership.d.ts.map +1 -0
  146. package/dist/pipeline/standard-lighting/prepare.d.ts +16 -0
  147. package/dist/pipeline/standard-lighting/prepare.d.ts.map +1 -0
  148. package/dist/pipeline/standard-lighting/topology.d.ts +45 -0
  149. package/dist/pipeline/standard-lighting/topology.d.ts.map +1 -0
  150. package/dist/pipeline/standard-lighting/transport.d.ts +36 -0
  151. package/dist/pipeline/standard-lighting/transport.d.ts.map +1 -0
  152. package/dist/pipeline/standard-pipeline.d.ts +4 -13
  153. package/dist/pipeline/standard-pipeline.d.ts.map +1 -1
  154. package/dist/pipeline/standard-post.d.ts.map +1 -1
  155. package/dist/pipeline/standard-profile.d.ts +5 -26
  156. package/dist/pipeline/standard-profile.d.ts.map +1 -1
  157. package/dist/pipeline-builder.d.ts +2 -0
  158. package/dist/pipeline-builder.d.ts.map +1 -1
  159. package/dist/pipeline-spec.d.ts +40 -7
  160. package/dist/pipeline-spec.d.ts.map +1 -1
  161. package/dist/plugin.d.ts.map +1 -1
  162. package/dist/point-shadow-inspection.d.ts +21 -0
  163. package/dist/point-shadow-inspection.d.ts.map +1 -0
  164. package/dist/prepare/extended-lighting/ltc-resources.d.ts +31 -0
  165. package/dist/prepare/extended-lighting/ltc-resources.d.ts.map +1 -0
  166. package/dist/prepare/extended-lighting/resources.d.ts +72 -0
  167. package/dist/prepare/extended-lighting/resources.d.ts.map +1 -0
  168. package/dist/prepare/extended-lighting/spot-modifiers.d.ts +42 -0
  169. package/dist/prepare/extended-lighting/spot-modifiers.d.ts.map +1 -0
  170. package/dist/prepare/extended-lighting/state.d.ts +24 -0
  171. package/dist/prepare/extended-lighting/state.d.ts.map +1 -0
  172. package/dist/record/frame-lighting.d.ts +33 -36
  173. package/dist/record/frame-lighting.d.ts.map +1 -1
  174. package/dist/record/frame-snapshot.d.ts +78 -24
  175. package/dist/record/frame-snapshot.d.ts.map +1 -1
  176. package/dist/record/frame-targets.d.ts +5 -0
  177. package/dist/record/frame-targets.d.ts.map +1 -1
  178. package/dist/record/frame.d.ts +16 -6
  179. package/dist/record/frame.d.ts.map +1 -1
  180. package/dist/record/gpu-pass-timing/contract.d.ts +96 -0
  181. package/dist/record/gpu-pass-timing/contract.d.ts.map +1 -0
  182. package/dist/record/gpu-pass-timing/errors.d.ts +18 -0
  183. package/dist/record/gpu-pass-timing/errors.d.ts.map +1 -0
  184. package/dist/record/gpu-pass-timing/index.d.ts +8 -0
  185. package/dist/record/gpu-pass-timing/index.d.ts.map +1 -0
  186. package/dist/record/gpu-pass-timing/parser.d.ts +11 -0
  187. package/dist/record/gpu-pass-timing/parser.d.ts.map +1 -0
  188. package/dist/record/gpu-pass-timing/session.d.ts +43 -0
  189. package/dist/record/gpu-pass-timing/session.d.ts.map +1 -0
  190. package/dist/record/gpu-timing.d.ts +20 -3
  191. package/dist/record/gpu-timing.d.ts.map +1 -1
  192. package/dist/record/helpers.d.ts +0 -20
  193. package/dist/record/helpers.d.ts.map +1 -1
  194. package/dist/record/main-pass-geometry.d.ts +6 -1
  195. package/dist/record/main-pass-geometry.d.ts.map +1 -1
  196. package/dist/record/main-pass-material.d.ts +25 -2
  197. package/dist/record/main-pass-material.d.ts.map +1 -1
  198. package/dist/record/main-pass-sprite-draws.d.ts.map +1 -1
  199. package/dist/record/main-pass.d.ts +2 -0
  200. package/dist/record/main-pass.d.ts.map +1 -1
  201. package/dist/record/mesh-ssbo.d.ts.map +1 -1
  202. package/dist/record/render-context.d.ts +98 -6
  203. package/dist/record/render-context.d.ts.map +1 -1
  204. package/dist/record/shadow-pass.d.ts.map +1 -1
  205. package/dist/record/skybox-post-pass.d.ts.map +1 -1
  206. package/dist/record/typed-frame-graph.d.ts +119 -4
  207. package/dist/record/typed-frame-graph.d.ts.map +1 -1
  208. package/dist/record/view-ubo.d.ts +7 -5
  209. package/dist/record/view-ubo.d.ts.map +1 -1
  210. package/dist/reflection/filter.d.ts +22 -0
  211. package/dist/reflection/filter.d.ts.map +1 -0
  212. package/dist/reflection/gpu-table.d.ts +25 -0
  213. package/dist/reflection/gpu-table.d.ts.map +1 -0
  214. package/dist/reflection/inspection.d.ts +10 -0
  215. package/dist/reflection/inspection.d.ts.map +1 -0
  216. package/dist/reflection/projection.d.ts +140 -0
  217. package/dist/reflection/projection.d.ts.map +1 -0
  218. package/dist/reflection/record-owner.d.ts +60 -0
  219. package/dist/reflection/record-owner.d.ts.map +1 -0
  220. package/dist/render-contract.d.ts +62 -14
  221. package/dist/render-contract.d.ts.map +1 -1
  222. package/dist/render-graph-primitives.d.ts +1 -0
  223. package/dist/render-graph-primitives.d.ts.map +1 -1
  224. package/dist/render-pipeline.d.ts +49 -2
  225. package/dist/render-pipeline.d.ts.map +1 -1
  226. package/dist/render-system-extract.d.ts +160 -31
  227. package/dist/render-system-extract.d.ts.map +1 -1
  228. package/dist/render-system.d.ts +28 -2
  229. package/dist/render-system.d.ts.map +1 -1
  230. package/dist/renderer.d.ts +43 -0
  231. package/dist/renderer.d.ts.map +1 -0
  232. package/dist/scene/probe-blend-record.d.ts +22 -0
  233. package/dist/scene/probe-blend-record.d.ts.map +1 -0
  234. package/dist/scene/probe-blend.d.ts +142 -0
  235. package/dist/scene/probe-blend.d.ts.map +1 -0
  236. package/dist/scene/render-scene-types.d.ts +0 -6
  237. package/dist/scene/render-scene-types.d.ts.map +1 -1
  238. package/dist/scene/render-scene.d.ts +117 -9
  239. package/dist/scene/render-scene.d.ts.map +1 -1
  240. package/dist/scene/visibility/bounds.d.ts +20 -0
  241. package/dist/scene/visibility/bounds.d.ts.map +1 -0
  242. package/dist/scene/visibility/budget.d.ts +16 -0
  243. package/dist/scene/visibility/budget.d.ts.map +1 -0
  244. package/dist/scene/visibility/facet.d.ts +73 -0
  245. package/dist/scene/visibility/facet.d.ts.map +1 -0
  246. package/dist/scene/visibility/gpu-frame-timing.d.ts +41 -0
  247. package/dist/scene/visibility/gpu-frame-timing.d.ts.map +1 -0
  248. package/dist/scene/visibility/gpu-lod.d.ts +46 -0
  249. package/dist/scene/visibility/gpu-lod.d.ts.map +1 -0
  250. package/dist/scene/visibility/inspection.d.ts +132 -0
  251. package/dist/scene/visibility/inspection.d.ts.map +1 -0
  252. package/dist/scene/visibility/lod-selector.d.ts +25 -0
  253. package/dist/scene/visibility/lod-selector.d.ts.map +1 -0
  254. package/dist/scene/visibility/occlusion-confidence.d.ts +81 -0
  255. package/dist/scene/visibility/occlusion-confidence.d.ts.map +1 -0
  256. package/dist/scene/visibility/occlusion-pass.d.ts +57 -0
  257. package/dist/scene/visibility/occlusion-pass.d.ts.map +1 -0
  258. package/dist/scene/visibility/occlusion-query-pool.d.ts +57 -0
  259. package/dist/scene/visibility/occlusion-query-pool.d.ts.map +1 -0
  260. package/dist/scene/visibility/occlusion-runtime.d.ts +96 -0
  261. package/dist/scene/visibility/occlusion-runtime.d.ts.map +1 -0
  262. package/dist/scene/visibility/types.d.ts +34 -0
  263. package/dist/scene/visibility/types.d.ts.map +1 -0
  264. package/dist/shadow-atlas.d.ts +3 -3
  265. package/dist/shadow-atlas.d.ts.map +1 -1
  266. package/dist/ssao-buffers.d.ts +3 -0
  267. package/dist/ssao-buffers.d.ts.map +1 -1
  268. package/dist/ssr/admission.d.ts +122 -0
  269. package/dist/ssr/admission.d.ts.map +1 -0
  270. package/dist/ssr/composition.d.ts +32 -0
  271. package/dist/ssr/composition.d.ts.map +1 -0
  272. package/dist/ssr/errors.d.ts +39 -0
  273. package/dist/ssr/errors.d.ts.map +1 -0
  274. package/dist/ssr/identity.d.ts +13 -0
  275. package/dist/ssr/identity.d.ts.map +1 -0
  276. package/dist/systems/skin-palette-allocator.d.ts +1 -1
  277. package/dist/targets/contracts.d.ts +66 -0
  278. package/dist/targets/contracts.d.ts.map +1 -0
  279. package/dist/targets/graph-projection.d.ts +29 -0
  280. package/dist/targets/graph-projection.d.ts.map +1 -0
  281. package/dist/targets/material-source.d.ts +34 -0
  282. package/dist/targets/material-source.d.ts.map +1 -0
  283. package/dist/targets/owner.d.ts +32 -0
  284. package/dist/targets/owner.d.ts.map +1 -0
  285. package/dist/targets/physical.d.ts +18 -0
  286. package/dist/targets/physical.d.ts.map +1 -0
  287. package/dist/targets/readback.d.ts +39 -0
  288. package/dist/targets/readback.d.ts.map +1 -0
  289. package/dist/temporal/frame-coordinator.d.ts +13 -0
  290. package/dist/temporal/frame-coordinator.d.ts.map +1 -1
  291. package/dist/temporal/frame.d.ts +2 -0
  292. package/dist/temporal/frame.d.ts.map +1 -1
  293. package/dist/temporal/index.mjs +6 -5
  294. package/dist/temporal/view.d.ts +7 -0
  295. package/dist/temporal/view.d.ts.map +1 -1
  296. package/dist/tilemap-chunk-extract-system.d.ts +1 -1
  297. package/dist/typed-render-graph-primitives.d.ts +5 -1
  298. package/dist/typed-render-graph-primitives.d.ts.map +1 -1
  299. package/dist/typed-shadow-passes.d.ts +1 -1
  300. package/dist/typed-shadow-passes.d.ts.map +1 -1
  301. package/dist/volume/passes.d.ts +9 -5
  302. package/dist/volume/passes.d.ts.map +1 -1
  303. package/package.json +20 -20
  304. package/src/__tests__/bloom-exact-zero.unit.test.ts +48 -19
  305. package/src/__tests__/bloom-lifecycle.integration.test.ts +41 -13
  306. package/src/__tests__/camera-target-consumption.unit.test.ts +53 -0
  307. package/src/__tests__/cluster-binner.unit.test.ts +35 -0
  308. package/src/__tests__/cluster-grid-default-surface.unit.test.ts +12 -2
  309. package/src/__tests__/cube-camera-scheduler.unit.test.ts +70 -0
  310. package/src/__tests__/cube-camera-single-submit.perf.test.ts +75 -0
  311. package/src/__tests__/cube-camera-view-matrices.unit.test.ts +41 -0
  312. package/src/__tests__/cube-camera-vocabulary.unit.test.ts +47 -0
  313. package/src/__tests__/cube-camera.integration.test.ts +42 -0
  314. package/src/__tests__/detached-inspection.integration.test.ts +6 -0
  315. package/src/__tests__/device-feature-admission.unit.test.ts +85 -0
  316. package/src/__tests__/direct-light-snapshot.unit.test.ts +62 -6
  317. package/src/__tests__/docs-gate-green.unit.test.ts +38 -0
  318. package/src/__tests__/environment-generation.integration.test.ts +16 -0
  319. package/src/__tests__/evidence-identity.ts +13 -0
  320. package/src/__tests__/evidence-identity.unit.test.ts +24 -0
  321. package/src/__tests__/extended-lighting-recovery.browser.test.ts +14 -0
  322. package/src/__tests__/extended-lighting-recovery.dawn.test.ts +14 -0
  323. package/src/__tests__/extended-lighting-recovery.integration.test.ts +81 -0
  324. package/src/__tests__/extended-lighting-resources.unit.test.ts +51 -0
  325. package/src/__tests__/extended-lighting-zero-feature.integration.test.ts +52 -0
  326. package/src/__tests__/factory-contract.integration.test.ts +288 -29
  327. package/src/__tests__/fog-component.unit.test.ts +67 -0
  328. package/src/__tests__/fog.integration.test.ts +86 -0
  329. package/src/__tests__/frame-observation.contract.test.ts +15 -0
  330. package/src/__tests__/fullscreen-feature-plan.unit.test.ts +37 -0
  331. package/src/__tests__/gpu-driven-batch-topology-pbr.unit.test.ts +146 -0
  332. package/src/__tests__/gpu-driven-indirect-raster-evidence.ts +10 -8
  333. package/src/__tests__/gpu-driven-indirect-raster.dawn.test.ts +18 -1
  334. package/src/__tests__/gpu-driven-production.integration.test.ts +579 -17
  335. package/src/__tests__/gpu-driven-scaling.unit.test.ts +66 -2
  336. package/src/__tests__/gpu-driven-view-gpu-evidence.ts +26 -1
  337. package/src/__tests__/gpu-driven-view-graph.integration.test.ts +101 -6
  338. package/src/__tests__/gpu-driven-view.browser.test.ts +3 -3
  339. package/src/__tests__/gpu-driven-view.dawn.test.ts +3 -3
  340. package/src/__tests__/gpu-driven-view.unit.test.ts +50 -0
  341. package/src/__tests__/gpu-lod-evidence.ts +188 -0
  342. package/src/__tests__/gpu-lod-fallback.integration.test.ts +10 -0
  343. package/src/__tests__/gpu-lod-indirect.integration.test.ts +40 -0
  344. package/src/__tests__/gpu-lod-parity.dawn.test.ts +29 -0
  345. package/src/__tests__/gpu-lod-readiness.integration.test.ts +52 -0
  346. package/src/__tests__/gpu-lod-schema.unit.test.ts +66 -0
  347. package/src/__tests__/gpu-lod-selector.unit.test.ts +28 -0
  348. package/src/__tests__/gpu-lod-silhouette.browser.test.ts +13 -0
  349. package/src/__tests__/gpu-pass-timing-browser-runner.ts +281 -0
  350. package/src/__tests__/gpu-pass-timing-coexistence.integration.test.ts +80 -0
  351. package/src/__tests__/gpu-pass-timing-contract.unit.test.ts +243 -0
  352. package/src/__tests__/gpu-pass-timing-exact-zero.unit.test.ts +131 -0
  353. package/src/__tests__/gpu-pass-timing-lifecycle.integration.test.ts +230 -0
  354. package/src/__tests__/gpu-pass-timing-observation.unit.test.ts +233 -0
  355. package/src/__tests__/gpu-pass-timing-session.unit.test.ts +438 -0
  356. package/src/__tests__/gpu-pass-timing.browser.test.ts +26 -0
  357. package/src/__tests__/gpu-pass-timing.rhi-null.unit.test.ts +125 -0
  358. package/src/__tests__/gpu-resource-store-stride.unit.test.ts +66 -1
  359. package/src/__tests__/gpu-scene.dawn.test.ts +8 -1
  360. package/src/__tests__/gpu-scene.unit.test.ts +49 -3
  361. package/src/__tests__/hdrp-group2-visibility.unit.test.ts +24 -0
  362. package/src/__tests__/instances-culling.integration.test.ts +94 -0
  363. package/src/__tests__/instances-derived-bounds.unit.test.ts +118 -0
  364. package/src/__tests__/light-buffer-layout.unit.test.ts +113 -3
  365. package/src/__tests__/light-inspection.unit.test.ts +55 -0
  366. package/src/__tests__/light-resource-error.unit.test.ts +43 -0
  367. package/src/__tests__/lighting-scene-roundtrip.integration.test.ts +109 -0
  368. package/src/__tests__/lod-bounds.unit.test.ts +42 -0
  369. package/src/__tests__/lod-cpu-lane.integration.test.ts +55 -0
  370. package/src/__tests__/lod-cpu-no-change.perf.test.ts +19 -0
  371. package/src/__tests__/lod-gpu-frame-timing.unit.test.ts +49 -0
  372. package/src/__tests__/lod-multi-view.integration.test.ts +63 -0
  373. package/src/__tests__/lod-occlusion-device-loss.integration.test.ts +27 -0
  374. package/src/__tests__/lod-occlusion-final-decision.integration.test.ts +47 -0
  375. package/src/__tests__/lod-occlusion-inspection.integration.test.ts +217 -0
  376. package/src/__tests__/lod-occlusion-inspection.schema.test-d.ts +14 -0
  377. package/src/__tests__/lod-occlusion-inspection.unit.test.ts +72 -0
  378. package/src/__tests__/lod-occlusion-visual-evidence.ts +91 -0
  379. package/src/__tests__/lod-occlusion.browser.test.ts +15 -0
  380. package/src/__tests__/lod-occlusion.dawn.test.ts +20 -0
  381. package/src/__tests__/lod-selector.profile.test.ts +35 -0
  382. package/src/__tests__/lod-selector.unit.test.ts +68 -0
  383. package/src/__tests__/lod-visibility-identity.unit.test.ts +198 -0
  384. package/src/__tests__/lod-visibility-lifecycle.integration.test.ts +132 -0
  385. package/src/__tests__/ltc-resources.unit.test.ts +32 -0
  386. package/src/__tests__/material-contract-inventory.unit.test.ts +17 -0
  387. package/src/__tests__/material-observation.integration.test.ts +101 -0
  388. package/src/__tests__/occlusion-confidence.unit.test.ts +168 -0
  389. package/src/__tests__/occlusion-invalidation.integration.test.ts +37 -0
  390. package/src/__tests__/occlusion-pass-routing.unit.test.ts +16 -0
  391. package/src/__tests__/occlusion-pass.dawn.test.ts +20 -0
  392. package/src/__tests__/occlusion-pass.integration.test.ts +43 -0
  393. package/src/__tests__/occlusion-pass.rhi-null.test.ts +22 -0
  394. package/src/__tests__/occlusion-query-pool.rhi-null.test.ts +21 -0
  395. package/src/__tests__/occlusion-query-pool.unit.test.ts +95 -0
  396. package/src/__tests__/occlusion-query-ticket.integration.test.ts +47 -0
  397. package/src/__tests__/occlusion-query.dawn.test.ts +16 -0
  398. package/src/__tests__/occlusion-query.evidence.ts +178 -0
  399. package/src/__tests__/occlusion-query.rhi-null.test.ts +31 -0
  400. package/src/__tests__/occlusion-runtime.unit.test.ts +120 -0
  401. package/src/__tests__/pbr-view-layout.unit.test.ts +16 -0
  402. package/src/__tests__/point-shadow-inspection.unit.test.ts +60 -0
  403. package/src/__tests__/prepared-gpu-driven-pbr.integration.test.ts +196 -0
  404. package/src/__tests__/probe-bindings.unit.test.ts +200 -0
  405. package/src/__tests__/probe-blend-numeric.unit.test.ts +67 -0
  406. package/src/__tests__/probe-blend-oracle.unit.test.ts +136 -0
  407. package/src/__tests__/probe-capacity.integration.test.ts +97 -0
  408. package/src/__tests__/probe-recovery.integration.test.ts +104 -0
  409. package/src/__tests__/probe-scene-dirty.integration.test.ts +211 -0
  410. package/src/__tests__/profiler-phase-catalog.test.ts +4 -1
  411. package/src/__tests__/profiler-phase-token.test.ts +1 -0
  412. package/src/__tests__/public-surface.test-d.ts +10 -0
  413. package/src/__tests__/rect-area-boundary.unit.test.ts +24 -0
  414. package/src/__tests__/reflection-fallback-graph.unit.test.ts +67 -0
  415. package/src/__tests__/reflection-fallback-inspection.unit.test.ts +77 -0
  416. package/src/__tests__/reflection-fallback-lifecycle.integration.test.ts +21 -0
  417. package/src/__tests__/reflection-fallback-projection.unit.test.ts +90 -0
  418. package/src/__tests__/reflection-fallback-source.unit.test.ts +32 -0
  419. package/src/__tests__/reflection-probe-authoring.unit.test.ts +71 -0
  420. package/src/__tests__/reflection-probe-filter.unit.test.ts +54 -0
  421. package/src/__tests__/reflection-probe-ibl-topology.unit.test.ts +45 -0
  422. package/src/__tests__/reflection-probe-owner-placement.unit.test.ts +39 -0
  423. package/src/__tests__/reflection-probe-pass-encode.integration.test.ts +101 -0
  424. package/src/__tests__/reflection-probe-performance.perf.test.ts +60 -0
  425. package/src/__tests__/reflection-probe-record-owner.characterization.unit.test.ts +120 -0
  426. package/src/__tests__/reflection-probe-recovery.integration.test.ts +55 -0
  427. package/src/__tests__/reflection-probe-selection.unit.test.ts +46 -0
  428. package/src/__tests__/render-error-code-owner.test-d.ts +19 -3
  429. package/src/__tests__/render-feature-docs.unit.test.ts +12 -7
  430. package/src/__tests__/render-graph-fallback.integration.test.ts +24 -0
  431. package/src/__tests__/render-perf/extended-lighting.bench.test.ts +66 -0
  432. package/src/__tests__/render-scene-projection.unit.test.ts +447 -18
  433. package/src/__tests__/render-target-admission.unit.test.ts +80 -0
  434. package/src/__tests__/render-target-graph-projection.unit.test.ts +102 -0
  435. package/src/__tests__/render-target-inspection.unit.test.ts +52 -0
  436. package/src/__tests__/render-target-material-source.test-d.ts +30 -0
  437. package/src/__tests__/render-target-material-source.unit.test.ts +97 -0
  438. package/src/__tests__/render-target-owner-placement.unit.test.ts +203 -0
  439. package/src/__tests__/render-target-owner.unit.test.ts +122 -0
  440. package/src/__tests__/render-target-probe-soak.perf.test.ts +94 -0
  441. package/src/__tests__/render-target-public-schema.json +107 -0
  442. package/src/__tests__/render-target-public-schema.unit.test.ts +91 -0
  443. package/src/__tests__/render-target-public-surface.test-d.ts +83 -0
  444. package/src/__tests__/render-target-readback.integration.test.ts +90 -0
  445. package/src/__tests__/render-target-recovery.integration.test.ts +85 -0
  446. package/src/__tests__/renderer-factory-material-contract.unit.test.ts +124 -0
  447. package/src/__tests__/renderer-lifecycle.integration.test.ts +14 -0
  448. package/src/__tests__/shader-stage-surface.unit.test.ts +19 -4
  449. package/src/__tests__/skin-motion-regression.unit.test.ts +154 -0
  450. package/src/__tests__/skinned-shadow-caster.test.ts +13 -4
  451. package/src/__tests__/spot-modifier-projection.unit.test.ts +70 -0
  452. package/src/__tests__/ssr-admission-matrix.integration.test.ts +206 -0
  453. package/src/__tests__/ssr-composition.unit.test.ts +46 -0
  454. package/src/__tests__/ssr-fallback-zero-work.bench.test.ts +94 -0
  455. package/src/__tests__/ssr-recovery-errors.unit.test.ts +58 -0
  456. package/src/__tests__/standard-cluster-capability.integration.test.ts +63 -0
  457. package/src/__tests__/standard-cluster-transport.unit.test.ts +121 -0
  458. package/src/__tests__/standard-cluster-variant-resolution.unit.test.ts +299 -0
  459. package/src/__tests__/standard-clustered-pipeline.unit.test.ts +15 -5
  460. package/src/__tests__/standard-lighting-inspection.integration.test.ts +138 -0
  461. package/src/__tests__/standard-lighting-ssot.unit.test.ts +18 -0
  462. package/src/__tests__/standard-lighting-write.unit.test.ts +441 -0
  463. package/src/__tests__/standard-lighting.integration.test.ts +67 -0
  464. package/src/__tests__/standard-pipeline.dawn.test.ts +206 -5
  465. package/src/__tests__/standard-pipeline.integration.test.ts +181 -150
  466. package/src/__tests__/standard-probe-binding.unit.test.ts +25 -0
  467. package/src/__tests__/standard-profile-oracle.unit.test.ts +23 -38
  468. package/src/__tests__/temporal-fallback-generation.integration.test.ts +16 -0
  469. package/src/__tests__/temporal-view.unit.test.ts +3 -3
  470. package/src/__tests__/transmission-prewarm.unit.test.ts +69 -0
  471. package/src/__tests__/typed-pipeline-topology.unit.test.ts +395 -14
  472. package/src/__tests__/urp-pipeline-targets.unit.test.ts +2 -2
  473. package/src/__tests__/visibility-budget.integration.test.ts +140 -0
  474. package/src/__tests__/visibility-budget.unit.test.ts +70 -0
  475. package/src/__tests__/visibility-extract.integration.test.ts +11 -6
  476. package/src/__tests__/visibility-resolver.unit.test.ts +15 -0
  477. package/src/__tests__/volumetric-fog-point-spot-accumulation.integration.test.ts +6 -3
  478. package/src/__tests__/volumetric-fog-stage-readback.dawn.test.ts +31 -28
  479. package/src/assembly/backend-contract.ts +13 -0
  480. package/src/assembly/device-feature-admission.ts +80 -0
  481. package/src/assembly/directional-shadow-inspection.ts +122 -0
  482. package/src/assembly/factory.ts +1411 -366
  483. package/src/assembly/host-contract.ts +35 -0
  484. package/src/assembly/render-target-host.ts +847 -0
  485. package/src/assets/asset-decoders.ts +1 -1
  486. package/src/assets/render-asset-port.ts +7 -1
  487. package/src/capture/cube-views.ts +69 -0
  488. package/src/capture/scheduler.ts +265 -0
  489. package/src/cluster-binner.ts +31 -0
  490. package/src/components/__tests__/lighting-authoring.unit.test.ts +39 -0
  491. package/src/components/__tests__/rect-area-light.unit.test.ts +33 -0
  492. package/src/components/__tests__/schema-contract.unit.test.ts +12 -0
  493. package/src/components/__tests__/schema-parity.unit.test.ts +9 -0
  494. package/src/components/camera.ts +4 -0
  495. package/src/components/cube-camera.ts +52 -0
  496. package/src/components/directional-light.ts +22 -2
  497. package/src/components/directional-shadow-filter.ts +57 -0
  498. package/src/components/index.ts +5 -0
  499. package/src/components/light-helpers.ts +133 -8
  500. package/src/components/light-probe.ts +13 -0
  501. package/src/components/rect-area-light.ts +15 -0
  502. package/src/components/reflection-probe.ts +49 -0
  503. package/src/components/scene-instance.ts +6 -0
  504. package/src/components/spot-light.ts +3 -0
  505. package/src/device/__tests__/extended-lighting-recovery.unit.test.ts +24 -0
  506. package/src/device/gpu-residency.ts +140 -9
  507. package/src/device/lifecycle-transaction.ts +12 -0
  508. package/src/environment/frame.ts +6 -24
  509. package/src/environment/lifecycle.ts +20 -1
  510. package/src/errors/gpu-driven.ts +92 -0
  511. package/src/errors/index.ts +1 -0
  512. package/src/errors/recover.ts +32 -0
  513. package/src/errors/render.ts +341 -143
  514. package/src/extract/camera.ts +3 -3
  515. package/src/extract/directional-shadow-projection.ts +61 -0
  516. package/src/extract/environment.ts +57 -0
  517. package/src/extract/gpu-driven.ts +108 -0
  518. package/src/extract/visibility.ts +2 -1
  519. package/src/features/fullscreen.ts +3 -0
  520. package/src/features/targets.ts +4 -1
  521. package/src/features/types.ts +10 -0
  522. package/src/fullscreen-post-process-pass.ts +43 -2
  523. package/src/gpu-driven/batch-topology.ts +207 -28
  524. package/src/gpu-driven/prepared-draw.ts +208 -0
  525. package/src/gpu-driven/production-raster.ts +953 -43
  526. package/src/gpu-driven/view-gpu.ts +411 -29
  527. package/src/gpu-scene-schema.ts +13 -0
  528. package/src/gpu-scene.ts +140 -64
  529. package/src/gpu-usage.ts +0 -1
  530. package/src/hdrp-buffers.ts +169 -63
  531. package/src/ibl/IblPipelineCache.ts +11 -0
  532. package/src/ibl/kernel-cache.ts +88 -0
  533. package/src/index.ts +222 -0
  534. package/src/inspection-types.ts +276 -1
  535. package/src/instances-derived-bounds.ts +171 -0
  536. package/src/internal.ts +38 -0
  537. package/src/light-buffer-layout.ts +155 -310
  538. package/src/materials.ts +16 -2
  539. package/src/mesh-material-bindings.ts +132 -0
  540. package/src/pbr-pipeline.ts +255 -60
  541. package/src/pipeline/standard-forward-lane.ts +93 -16
  542. package/src/pipeline/standard-lighting/errors.ts +6 -0
  543. package/src/pipeline/standard-lighting/graph.ts +158 -0
  544. package/src/pipeline/standard-lighting/inspection.ts +88 -0
  545. package/src/pipeline/standard-lighting/layout.ts +31 -0
  546. package/src/pipeline/standard-lighting/light-frame.ts +35 -0
  547. package/src/pipeline/standard-lighting/membership.ts +43 -0
  548. package/src/pipeline/standard-lighting/prepare.ts +37 -0
  549. package/src/pipeline/standard-lighting/topology.ts +120 -0
  550. package/src/pipeline/standard-lighting/transport.ts +78 -0
  551. package/src/pipeline/standard-pipeline.ts +124 -193
  552. package/src/pipeline/standard-post.ts +26 -7
  553. package/src/pipeline/standard-profile.ts +17 -47
  554. package/src/pipeline-builder.ts +5 -2
  555. package/src/pipeline-spec.ts +95 -21
  556. package/src/plugin.ts +4 -0
  557. package/src/point-shadow-inspection.ts +55 -0
  558. package/src/prepare/__tests__/extended-lighting-capability.unit.test.ts +56 -0
  559. package/src/prepare/extended-lighting/ltc-resources.ts +136 -0
  560. package/src/prepare/extended-lighting/resources.ts +389 -0
  561. package/src/prepare/extended-lighting/spot-modifiers.ts +194 -0
  562. package/src/prepare/extended-lighting/state.ts +92 -0
  563. package/src/record/__tests__/gpu-timing.unit.test.ts +177 -0
  564. package/src/record/__tests__/temporal-payload.unit.test.ts +64 -1
  565. package/src/record/__tests__/transparent-group2-selection.unit.test.ts +73 -0
  566. package/src/record/__tests__/typed-frame-graph-plan.unit.test.ts +20 -1
  567. package/src/record/__tests__/view-ubo-layout.unit.test.ts +40 -0
  568. package/src/record/frame-lighting.ts +591 -452
  569. package/src/record/frame-snapshot.ts +92 -39
  570. package/src/record/frame-targets.ts +17 -0
  571. package/src/record/frame.ts +662 -158
  572. package/src/record/gpu-pass-timing/contract.ts +180 -0
  573. package/src/record/gpu-pass-timing/errors.ts +34 -0
  574. package/src/record/gpu-pass-timing/index.ts +37 -0
  575. package/src/record/gpu-pass-timing/parser.ts +97 -0
  576. package/src/record/gpu-pass-timing/session.ts +938 -0
  577. package/src/record/gpu-timing.ts +112 -39
  578. package/src/record/helpers.ts +0 -58
  579. package/src/record/main-pass-geometry.ts +324 -119
  580. package/src/record/main-pass-material.ts +103 -10
  581. package/src/record/main-pass-sprite-draws.ts +99 -103
  582. package/src/record/main-pass.ts +71 -15
  583. package/src/record/mesh-ssbo.ts +47 -36
  584. package/src/record/render-context.ts +136 -3
  585. package/src/record/shadow-pass.ts +83 -68
  586. package/src/record/skybox-post-pass.ts +20 -4
  587. package/src/record/typed-frame-graph.ts +1034 -43
  588. package/src/record/view-ubo.ts +72 -47
  589. package/src/reflection/filter.ts +81 -0
  590. package/src/reflection/gpu-table.ts +44 -0
  591. package/src/reflection/inspection.ts +67 -0
  592. package/src/reflection/projection.ts +476 -0
  593. package/src/reflection/record-owner.ts +1283 -0
  594. package/src/render-contract.ts +93 -10
  595. package/src/render-graph-primitives.ts +9 -4
  596. package/src/render-pipeline.ts +122 -2
  597. package/src/render-system-extract.ts +1041 -225
  598. package/src/render-system.ts +1310 -85
  599. package/src/renderer.ts +222 -0
  600. package/src/scene/__tests__/changed-block-summary.candidate.test.ts +36 -0
  601. package/src/scene/probe-blend-record.ts +54 -0
  602. package/src/scene/probe-blend.ts +813 -0
  603. package/src/scene/render-scene-types.ts +0 -7
  604. package/src/scene/render-scene.ts +942 -171
  605. package/src/scene/visibility/bounds.ts +57 -0
  606. package/src/scene/visibility/budget.ts +40 -0
  607. package/src/scene/visibility/facet.ts +400 -0
  608. package/src/scene/visibility/gpu-frame-timing.ts +101 -0
  609. package/src/scene/visibility/gpu-lod.ts +119 -0
  610. package/src/scene/visibility/inspection.ts +313 -0
  611. package/src/scene/visibility/lod-selector.ts +84 -0
  612. package/src/scene/visibility/occlusion-confidence.ts +478 -0
  613. package/src/scene/visibility/occlusion-pass.ts +165 -0
  614. package/src/scene/visibility/occlusion-query-pool.ts +178 -0
  615. package/src/scene/visibility/occlusion-runtime.ts +672 -0
  616. package/src/scene/visibility/types.ts +50 -0
  617. package/src/shadow-atlas.ts +5 -5
  618. package/src/ssao-buffers.ts +9 -2
  619. package/src/ssr/admission.ts +451 -0
  620. package/src/ssr/composition.ts +73 -0
  621. package/src/ssr/errors.ts +76 -0
  622. package/src/ssr/identity.ts +12 -0
  623. package/src/systems/skin-palette-allocator.ts +1 -1
  624. package/src/targets/contracts.ts +182 -0
  625. package/src/targets/graph-projection.ts +169 -0
  626. package/src/targets/material-source.ts +143 -0
  627. package/src/targets/owner.ts +214 -0
  628. package/src/targets/physical.ts +18 -0
  629. package/src/targets/readback.ts +153 -0
  630. package/src/temporal/frame-coordinator.ts +26 -0
  631. package/src/temporal/frame.ts +14 -1
  632. package/src/temporal/view.ts +11 -0
  633. package/src/tilemap-chunk-extract-system.ts +4 -4
  634. package/src/transmission/__tests__/standard-transmission.dawn.test.ts +59 -20
  635. package/src/typed-render-graph-primitives.ts +53 -3
  636. package/src/typed-shadow-passes.ts +46 -40
  637. package/src/volume/passes.ts +61 -58
  638. package/dist/.tsbuildinfo +0 -1
  639. package/dist/chunk-4XINDLAY.mjs.map +0 -1
  640. package/dist/chunk-CDTWTHZR.mjs.map +0 -1
  641. package/dist/chunk-M2MP4ZOU.mjs +0 -73
  642. package/dist/chunk-M2MP4ZOU.mjs.map +0 -1
  643. package/dist/chunk-PCHBPYML.mjs.map +0 -1
  644. package/dist/chunk-TBQJOK2L.mjs.map +0 -1
  645. package/dist/chunk-VFPLTKCU.mjs.map +0 -1
@@ -0,0 +1,4 @@
1
+ import type { ClusterBinError } from '../../cluster-binner';
2
+ import { StandardClusterIndexOverflowError } from '../../errors/render';
3
+ export declare function fromClusterBinError(error: ClusterBinError): StandardClusterIndexOverflowError;
4
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/pipeline/standard-lighting/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,iCAAiC,EAAE,MAAM,qBAAqB,CAAC;AAExE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,eAAe,GAAG,iCAAiC,CAE7F"}
@@ -0,0 +1,24 @@
1
+ import type { GraphAccess, GraphBuffer, RenderGraphBuilder, RenderGraphError } from '@forgeax/engine-render-graph';
2
+ import { type Result } from '@forgeax/engine-types';
3
+ import type { RenderPipelineFrame } from '../../render-pipeline';
4
+ import type { StandardTopologyInputValue } from './topology';
5
+ /** Graph resources projected from one Standard lighting topology input. */
6
+ export interface StandardClusterGraphBuffers {
7
+ readonly lightData: GraphBuffer;
8
+ readonly clusterGrid: GraphBuffer;
9
+ readonly lightIndexList: GraphBuffer;
10
+ readonly clusterUniform: GraphBuffer;
11
+ readonly lightBounds: GraphBuffer;
12
+ }
13
+ /** Resolve membership execution from the frame's current prepared payload. */
14
+ export declare function shouldExecuteStandardClusterMembershipPass(frame: RenderPipelineFrame): boolean;
15
+ /** Import the shared Standard Cluster buffers with sizes derived from layout. */
16
+ export declare function importStandardClusterBuffers(graph: RenderGraphBuilder<RenderPipelineFrame>, input: StandardTopologyInputValue): Result<StandardClusterGraphBuffers | null, RenderGraphError>;
17
+ /** Accesses used by raster consumers of the shared Cluster payload. */
18
+ export declare function standardClusterReadAccesses(buffers: StandardClusterGraphBuffers): readonly GraphAccess[];
19
+ /**
20
+ * Add the sole GPU membership producer. CPU membership is already materialized
21
+ * in PreparedStandardLighting and therefore contributes no second pass.
22
+ */
23
+ export declare function addStandardClusterMembershipPass(graph: RenderGraphBuilder<RenderPipelineFrame>, input: StandardTopologyInputValue, buffers: StandardClusterGraphBuffers): Result<void, RenderGraphError>;
24
+ //# sourceMappingURL=graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../../src/pipeline/standard-lighting/graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAM,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AASxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAE7D,2EAA2E;AAC3E,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC;IACrC,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;CACnC;AAsBD,8EAA8E;AAC9E,wBAAgB,0CAA0C,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAO9F;AAED,iFAAiF;AACjF,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,kBAAkB,CAAC,mBAAmB,CAAC,EAC9C,KAAK,EAAE,0BAA0B,GAChC,MAAM,CAAC,2BAA2B,GAAG,IAAI,EAAE,gBAAgB,CAAC,CA0C9D;AAED,uEAAuE;AACvE,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,2BAA2B,GACnC,SAAS,WAAW,EAAE,CAOxB;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,kBAAkB,CAAC,mBAAmB,CAAC,EAC9C,KAAK,EAAE,0BAA0B,EACjC,OAAO,EAAE,2BAA2B,GACnC,MAAM,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAgChC"}
@@ -0,0 +1,38 @@
1
+ import type { StandardTopologyInputValue } from './topology';
2
+ import type { StandardClusterTransport } from './transport';
3
+ export interface StandardClusterTransportInspection {
4
+ readonly renderPath: 'forward' | 'deferred';
5
+ readonly transport: StandardClusterTransport['kind'];
6
+ readonly producer: StandardClusterTransport['producer'];
7
+ readonly requested: StandardClusterTransport['requestedLightCount'];
8
+ readonly admitted: StandardClusterTransport['admittedLightCount'];
9
+ readonly shadowed: number;
10
+ readonly maxLights: number;
11
+ readonly indexCount: StandardClusterTransport['membershipEntryCount'];
12
+ readonly occupied: StandardClusterTransport['occupiedClusterCount'];
13
+ readonly clusterGridBytes: number;
14
+ readonly lightIndexListBytes: number;
15
+ readonly lightDataBytes: number;
16
+ readonly lightBoundsBytes: number;
17
+ readonly grid: StandardClusterTransport['layout']['grid'];
18
+ }
19
+ export interface StandardNoLocalLightingInspection {
20
+ readonly renderPath: 'forward' | 'deferred';
21
+ readonly transport: 'not-required';
22
+ readonly producer: 'none';
23
+ readonly requested: 0;
24
+ readonly admitted: 0;
25
+ readonly shadowed: 0;
26
+ readonly maxLights: number;
27
+ readonly indexCount: 0;
28
+ readonly occupied: 0;
29
+ readonly clusterGridBytes: 0;
30
+ readonly lightIndexListBytes: 0;
31
+ readonly lightDataBytes: 0;
32
+ readonly lightBoundsBytes: 0;
33
+ readonly grid: StandardTopologyInputValue['prepared']['layout']['grid'];
34
+ }
35
+ export type StandardLightingInspection = StandardClusterTransportInspection | StandardNoLocalLightingInspection;
36
+ export declare function inspectStandardClusterTransport(transport: StandardClusterTransport, prepared: StandardTopologyInputValue['prepared']): StandardClusterTransportInspection;
37
+ export declare function inspectStandardLighting(input: StandardTopologyInputValue): StandardLightingInspection;
38
+ //# sourceMappingURL=inspection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspection.d.ts","sourceRoot":"","sources":["../../../src/pipeline/standard-lighting/inspection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAE5D,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,UAAU,EAAE,SAAS,GAAG,UAAU,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACrD,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,CAAC,UAAU,CAAC,CAAC;IACxD,QAAQ,CAAC,SAAS,EAAE,wBAAwB,CAAC,qBAAqB,CAAC,CAAC;IACpE,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,CAAC,oBAAoB,CAAC,CAAC;IAClE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,wBAAwB,CAAC,sBAAsB,CAAC,CAAC;IACtE,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,CAAC,sBAAsB,CAAC,CAAC;IACpE,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,UAAU,EAAE,SAAS,GAAG,UAAU,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrB,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC7B,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC;IAC3B,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,0BAA0B,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;CACzE;AAED,MAAM,MAAM,0BAA0B,GAClC,kCAAkC,GAClC,iCAAiC,CAAC;AAEtC,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,wBAAwB,EACnC,QAAQ,EAAE,0BAA0B,CAAC,UAAU,CAAC,GAC/C,kCAAkC,CAmBpC;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,0BAA0B,GAChC,0BAA0B,CAoB5B"}
@@ -0,0 +1,28 @@
1
+ export declare const DEFAULT_CLUSTER_GRID: {
2
+ readonly x: 16;
3
+ readonly y: 9;
4
+ readonly z: 24;
5
+ };
6
+ export declare const CLUSTER_GRID_STRIDE_U32: 2;
7
+ export declare const LIGHT_INDEX_LIST_CAPACITY: 1048576;
8
+ export declare const MAX_LIGHTS: 256;
9
+ export interface StandardClusterLayout {
10
+ readonly grid: {
11
+ readonly x: number;
12
+ readonly y: number;
13
+ readonly z: number;
14
+ };
15
+ readonly clusterCount: number;
16
+ readonly clusterGridStrideU32: typeof CLUSTER_GRID_STRIDE_U32;
17
+ readonly clusterGridU32Length: number;
18
+ readonly lightIndexListCapacity: typeof LIGHT_INDEX_LIST_CAPACITY;
19
+ readonly lightDataSlotCount: typeof MAX_LIGHTS;
20
+ readonly lightBoundsInt32Length: number;
21
+ }
22
+ export declare function createStandardClusterLayout(grid?: {
23
+ readonly x: number;
24
+ readonly y: number;
25
+ readonly z: number;
26
+ }): StandardClusterLayout;
27
+ export declare const STANDARD_CLUSTER_LAYOUT: StandardClusterLayout;
28
+ //# sourceMappingURL=layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../src/pipeline/standard-lighting/layout.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB;;;;CAAkC,CAAC;AACpE,eAAO,MAAM,uBAAuB,EAAG,CAAU,CAAC;AAClD,eAAO,MAAM,yBAAyB,EAAG,OAAgB,CAAC;AAC1D,eAAO,MAAM,UAAU,EAAG,GAAY,CAAC;AAEvC,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9E,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,oBAAoB,EAAE,OAAO,uBAAuB,CAAC;IAC9D,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,sBAAsB,EAAE,OAAO,yBAAyB,CAAC;IAClE,QAAQ,CAAC,kBAAkB,EAAE,OAAO,UAAU,CAAC;IAC/C,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;CACzC;AAED,wBAAgB,2BAA2B,CACzC,IAAI,GAAE;IAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;CAAyB,GAC1F,qBAAqB,CAWvB;AAED,eAAO,MAAM,uBAAuB,uBAAgC,CAAC"}
@@ -0,0 +1,33 @@
1
+ import type { Mat4, Vec3 } from '@forgeax/engine-math';
2
+ import type { DirectionalLightSnapshot, PointLightSnapshot, RectAreaDirectLightSnapshot, SpotLightSnapshot } from '../../render-system-extract';
3
+ import type { StandardLightCount } from '../standard-profile';
4
+ export interface StandardLocalLightInput {
5
+ readonly kind: 'point' | 'spot' | 'rect-area';
6
+ readonly position: Vec3;
7
+ readonly range: number;
8
+ /** Whether the shadow producer admitted this local light to its atlas. */
9
+ readonly shadowed: boolean;
10
+ /**
11
+ * The immutable extract snapshot used by the record payload packer. Keeping
12
+ * it on the POD frame prevents Forward/Deferred from rebuilding a second
13
+ * light list while leaving hand-authored unit fixtures source-free.
14
+ */
15
+ readonly source?: PointLightSnapshot | SpotLightSnapshot | RectAreaDirectLightSnapshot;
16
+ }
17
+ export interface StandardLightFrame {
18
+ readonly directional: DirectionalLightSnapshot | undefined;
19
+ readonly local: readonly StandardLocalLightInput[];
20
+ readonly view: Mat4;
21
+ readonly projection: Mat4;
22
+ readonly near: number;
23
+ readonly far: number;
24
+ readonly grid: {
25
+ readonly x: number;
26
+ readonly y: number;
27
+ readonly z: number;
28
+ };
29
+ readonly lightCount: StandardLightCount;
30
+ /** Graph path carried into inspection from the active Standard profile. */
31
+ readonly renderPath: 'forward' | 'deferred';
32
+ }
33
+ //# sourceMappingURL=light-frame.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"light-frame.d.ts","sourceRoot":"","sources":["../../../src/pipeline/standard-lighting/light-frame.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EACV,wBAAwB,EACxB,kBAAkB,EAClB,2BAA2B,EAC3B,iBAAiB,EAClB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,WAAW,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,0EAA0E;IAC1E,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,iBAAiB,GAAG,2BAA2B,CAAC;CACxF;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,WAAW,EAAE,wBAAwB,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,KAAK,EAAE,SAAS,uBAAuB,EAAE,CAAC;IACnD,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9E,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxC,2EAA2E;IAC3E,QAAQ,CAAC,UAAU,EAAE,SAAS,GAAG,UAAU,CAAC;CAC7C"}
@@ -0,0 +1,14 @@
1
+ import { type Result } from '@forgeax/engine-types';
2
+ import { type ClusterBinScratch } from '../../cluster-binner';
3
+ import type { RenderError } from '../../errors/render';
4
+ import type { StandardClusterLayout } from './layout';
5
+ import type { StandardLightFrame } from './light-frame';
6
+ export interface StandardClusterMembership {
7
+ readonly clusterGrid: Uint32Array;
8
+ readonly lightIndexList: Uint32Array;
9
+ readonly lightBounds: Int32Array;
10
+ readonly membershipEntryCount: number;
11
+ readonly scratch: ClusterBinScratch;
12
+ }
13
+ export declare function deriveStandardMembership(frame: StandardLightFrame, layout: StandardClusterLayout, scratch?: ClusterBinScratch): Result<StandardClusterMembership, RenderError>;
14
+ //# sourceMappingURL=membership.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"membership.d.ts","sourceRoot":"","sources":["../../../src/pipeline/standard-lighting/membership.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAO,KAAK,iBAAiB,EAA2B,MAAM,sBAAsB,CAAC;AAC5F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC;IACjC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;CACrC;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,kBAAkB,EACzB,MAAM,EAAE,qBAAqB,EAC7B,OAAO,oBAA4B,GAClC,MAAM,CAAC,yBAAyB,EAAE,WAAW,CAAC,CAuBhD"}
@@ -0,0 +1,16 @@
1
+ import { type Result } from '@forgeax/engine-types';
2
+ import { type RenderError } from '../../errors/render';
3
+ import { type StandardClusterLayout } from './layout';
4
+ import type { StandardLightFrame } from './light-frame';
5
+ import { type StandardClusterMembership } from './membership';
6
+ export type { StandardLightFrame } from './light-frame';
7
+ export interface PreparedStandardLighting extends StandardClusterMembership {
8
+ readonly directional: StandardLightFrame['directional'];
9
+ readonly local: StandardLightFrame['local'];
10
+ readonly layout: StandardClusterLayout;
11
+ readonly membershipLightCount: number;
12
+ readonly renderPath: NonNullable<StandardLightFrame['renderPath']>;
13
+ readonly maxLights: StandardLightFrame['lightCount'];
14
+ }
15
+ export declare function prepareStandardLighting(frame: StandardLightFrame): Result<PreparedStandardLighting, RenderError>;
16
+ //# sourceMappingURL=prepare.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare.d.ts","sourceRoot":"","sources":["../../../src/pipeline/standard-lighting/prepare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,KAAK,WAAW,EAAoC,MAAM,qBAAqB,CAAC;AAEzF,OAAO,EAA+B,KAAK,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACnF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAA4B,KAAK,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAExF,YAAY,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,MAAM,WAAW,wBAAyB,SAAQ,yBAAyB;IACzE,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;IACxD,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IACvC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC;IACnE,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC,YAAY,CAAC,CAAC;CACtD;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,kBAAkB,GACxB,MAAM,CAAC,wBAAwB,EAAE,WAAW,CAAC,CAgB/C"}
@@ -0,0 +1,45 @@
1
+ import { type Result } from '@forgeax/engine-types';
2
+ import type { PreparedStandardLighting } from './prepare';
3
+ import type { StandardClusterTransport } from './transport';
4
+ /** A prepared frame with no local lights on a non-storage backend. */
5
+ export interface StandardNoLocalTopologyInput {
6
+ readonly kind: 'no-local-lights';
7
+ readonly prepared: PreparedStandardLighting;
8
+ }
9
+ /** A prepared frame whose Standard surface uses one proven Cluster transport. */
10
+ export interface StandardClusteredTopologyInput {
11
+ readonly kind: 'clustered';
12
+ readonly prepared: PreparedStandardLighting;
13
+ readonly transport: StandardClusterTransport;
14
+ }
15
+ /**
16
+ * The only lighting value accepted by a Standard topology adapter. It is a
17
+ * projection of one prepared frame, not a second light/config/capability
18
+ * input. Both Forward and Deferred keep the same object identity for a frame.
19
+ */
20
+ export type StandardTopologyInput = StandardNoLocalTopologyInput | StandardClusteredTopologyInput;
21
+ export type StandardTopologyInputValue = StandardTopologyInput;
22
+ /**
23
+ * Stable identity for the graph-facing Standard lighting declaration.
24
+ *
25
+ * The prepared light payload itself is frame-local and must never be retained
26
+ * by a compiled graph. These are the only facts that affect the Cluster graph
27
+ * shape and persistent buffer contract, so the record owner can reject an old
28
+ * graph before uploading a payload derived from a different declaration.
29
+ */
30
+ export declare function standardLightingTopologySignature(input: StandardTopologyInputValue | undefined): string;
31
+ export interface StandardTopologyInputError {
32
+ readonly code: 'topology-input-invalid';
33
+ readonly expected: 'prepared Standard lighting topology input';
34
+ readonly hint: 'derive topology from prepared Standard lighting';
35
+ readonly detail: {
36
+ readonly field: 'kind' | 'prepared' | 'transport' | 'lights' | 'capabilities';
37
+ };
38
+ }
39
+ /**
40
+ * Validate that transport and prepared membership are the same derivation.
41
+ * The identity checks make it impossible for an adapter to silently combine
42
+ * one path's layout/counts with another path's prepared light corpus.
43
+ */
44
+ export declare function deriveStandardTopologyInput(input: StandardTopologyInput): Result<StandardTopologyInputValue, StandardTopologyInputError>;
45
+ //# sourceMappingURL=topology.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"topology.d.ts","sourceRoot":"","sources":["../../../src/pipeline/standard-lighting/topology.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAE5D,sEAAsE;AACtE,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,CAAC;CAC7C;AAED,iFAAiF;AACjF,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,wBAAwB,CAAC;CAC9C;AAED;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG,4BAA4B,GAAG,8BAA8B,CAAC;AAElG,MAAM,MAAM,0BAA0B,GAAG,qBAAqB,CAAC;AAE/D;;;;;;;GAOG;AACH,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,0BAA0B,GAAG,SAAS,GAC5C,MAAM,CAaR;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,2CAA2C,CAAC;IAC/D,QAAQ,CAAC,IAAI,EAAE,iDAAiD,CAAC;IACjE,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,cAAc,CAAC;KAC/E,CAAC;CACH;AAaD;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,qBAAqB,GAC3B,MAAM,CAAC,0BAA0B,EAAE,0BAA0B,CAAC,CAyChE"}
@@ -0,0 +1,36 @@
1
+ import { type Result } from '@forgeax/engine-types';
2
+ import { type RenderError } from '../../errors/render';
3
+ import type { PreparedStandardLighting } from './prepare';
4
+ export interface StandardClusterCapabilities {
5
+ readonly compute: boolean;
6
+ readonly storageBuffer: boolean;
7
+ /**
8
+ * The graph producer is ready to encode the selected compute lane. The
9
+ * renderer supplies this from the actual pipeline + bind-group layout; it is
10
+ * required so capability admission cannot forge a GPU producer from
11
+ * `compute` alone.
12
+ */
13
+ readonly membershipPipelineReady: boolean;
14
+ }
15
+ /** Only transports with storage-backed membership representation exist. */
16
+ export type StandardClusterTransportKind = 'compute-storage' | 'cpu-storage';
17
+ export type StandardClusterMembershipProducer = 'cpu' | 'gpu';
18
+ export interface StandardClusterTransport {
19
+ readonly kind: StandardClusterTransportKind;
20
+ readonly producer: StandardClusterMembershipProducer;
21
+ readonly layout: PreparedStandardLighting['layout'];
22
+ readonly requestedLightCount: number;
23
+ readonly admittedLightCount: number;
24
+ readonly membershipEntryCount: number;
25
+ readonly occupiedClusterCount: number;
26
+ readonly clusterGridBytes: number;
27
+ readonly lightIndexListBytes: number;
28
+ readonly lightDataBytes: number;
29
+ readonly lightBoundsBytes: number;
30
+ }
31
+ /**
32
+ * Select a transport from one prepared frame. Capability facts choose only a
33
+ * producer/storage pair; all counts and byte sizes come from that frame.
34
+ */
35
+ export declare function selectStandardClusterTransport(capabilities: StandardClusterCapabilities, prepared: PreparedStandardLighting): Result<StandardClusterTransport, RenderError>;
36
+ //# sourceMappingURL=transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/pipeline/standard-lighting/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,KAAK,WAAW,EAA4C,MAAM,qBAAqB,CAAC;AAEjG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAE1D,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC;;;;;OAKG;IACH,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAC;CAC3C;AAED,2EAA2E;AAC3E,MAAM,MAAM,4BAA4B,GAAG,iBAAiB,GAAG,aAAa,CAAC;AAC7E,MAAM,MAAM,iCAAiC,GAAG,KAAK,GAAG,KAAK,CAAC;AAE9D,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,4BAA4B,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,iCAAiC,CAAC;IACrD,QAAQ,CAAC,MAAM,EAAE,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IACpD,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAUD;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,YAAY,EAAE,2BAA2B,EACzC,QAAQ,EAAE,wBAAwB,GACjC,MAAM,CAAC,wBAAwB,EAAE,WAAW,CAAC,CA2B/C"}
@@ -1,20 +1,10 @@
1
1
  import { type Result } from '@forgeax/engine-types';
2
+ import { StandardProfileInvalidError } from '../errors/render';
2
3
  import type { FramePlan } from '../extract/environment';
3
4
  import type { RenderPipeline } from '../render-pipeline';
4
- import { STANDARD_PIPELINE_ID } from './standard-profile';
5
+ import { STANDARD_PIPELINE_ID, type StandardProfile } from './standard-profile';
5
6
  /** WGSL owner for the Standard clustered membership producer. */
6
7
  export declare const STANDARD_CLUSTER_MEMBERSHIP_WGSL = "\nstruct ClusterUniform {\n grid : vec4<u32>,\n near_far_log : vec4<f32>,\n};\n\n@group(0) @binding(0) var<storage, read> cluster_grid : array<u32>;\n@group(0) @binding(1) var<storage, read_write> light_index_list : array<u32>;\n@group(0) @binding(2) var<uniform> cluster_uniform : ClusterUniform;\n@group(0) @binding(3) var<storage, read> light_bounds : array<i32>;\n\n@compute @workgroup_size(64)\nfn cs_cluster_membership(@builtin(global_invocation_id) global_id : vec3<u32>) {\n let cluster_index = global_id.x;\n let grid_x = cluster_uniform.grid.x;\n let grid_y = cluster_uniform.grid.y;\n let grid_z = cluster_uniform.grid.z;\n let cluster_count = grid_x * grid_y * grid_z;\n if (cluster_index >= cluster_count) {\n return;\n }\n\n let cluster_x = cluster_index % grid_x;\n let cluster_yz = cluster_index / grid_x;\n let cluster_y = cluster_yz % grid_y;\n let cluster_z = cluster_yz / grid_y;\n let grid_offset = cluster_index * 2u;\n let output_offset = cluster_grid[grid_offset];\n let output_count = cluster_grid[grid_offset + 1u];\n let cluster_x_i = i32(cluster_x);\n let cluster_y_i = i32(cluster_y);\n let cluster_z_i = i32(cluster_z);\n var output_index = output_offset;\n\n var light_index = 0u;\n loop {\n if (light_index >= cluster_uniform.grid.w || light_index >= 256u) {\n break;\n }\n let bounds_offset = light_index * 6u;\n let min_x = light_bounds[bounds_offset];\n if (min_x >= 0) {\n let min_y = light_bounds[bounds_offset + 1u];\n let min_z = light_bounds[bounds_offset + 2u];\n let max_x = light_bounds[bounds_offset + 3u];\n let max_y = light_bounds[bounds_offset + 4u];\n let max_z = light_bounds[bounds_offset + 5u];\n if (\n cluster_x_i >= min_x && cluster_x_i <= max_x &&\n cluster_y_i >= min_y && cluster_y_i <= max_y &&\n cluster_z_i >= min_z && cluster_z_i <= max_z\n ) {\n if (output_index < output_offset + output_count) {\n light_index_list[output_index] = light_index;\n output_index += 1u;\n }\n }\n }\n light_index += 1u;\n }\n}\n";
7
- export declare class HdrpInstallError extends Error {
8
- readonly code: "hdrp-grid-invalid";
9
- readonly expected = "clusterGrid.{x,y,z} each integer in [1, 64]";
10
- readonly hint: string;
11
- readonly detail: {
12
- readonly x: number;
13
- readonly y: number;
14
- readonly z: number;
15
- };
16
- constructor(x: number, y: number, z: number);
17
- }
18
8
  export declare function validateClusterGrid(grid: {
19
9
  x: number;
20
10
  y: number;
@@ -23,10 +13,11 @@ export declare function validateClusterGrid(grid: {
23
13
  x: number;
24
14
  y: number;
25
15
  z: number;
26
- }, HdrpInstallError>;
16
+ }, StandardProfileInvalidError>;
27
17
  export interface StandardPipeline extends RenderPipeline {
28
18
  readonly identity: typeof STANDARD_PIPELINE_ID;
29
19
  }
20
+ export declare function standardProfileSupportsReflectionProbes(_profile: StandardProfile): boolean;
30
21
  /** Standard graph inputs are derived once from the immutable frame plan. */
31
22
  export type StandardFramePlan = FramePlan;
32
23
  export declare const standardPipeline: StandardPipeline;
@@ -1 +1 @@
1
- {"version":3,"file":"standard-pipeline.d.ts","sourceRoot":"","sources":["../../src/pipeline/standard-pipeline.ts"],"names":[],"mappings":"AAOA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AASxD,OAAO,KAAK,EACV,cAAc,EAIf,MAAM,oBAAoB,CAAC;AA8B5B,OAAO,EAOL,oBAAoB,EAErB,MAAM,oBAAoB,CAAC;AAE5B,iEAAiE;AACjE,eAAO,MAAM,gCAAgC,ykEA6D5C,CAAC;AACF,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,IAAI,EAAG,mBAAmB,CAAU;IAC7C,QAAQ,CAAC,QAAQ,iDAAiD;IAClE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;gBAEpE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;CAO5C;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,GAAG,MAAM,CAAC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,gBAAgB,CAAC,CAahE;AA2ZD,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACtD,QAAQ,CAAC,QAAQ,EAAE,OAAO,oBAAoB,CAAC;CAChD;AAED,4EAA4E;AAC5E,MAAM,MAAM,iBAAiB,GAAG,SAAS,CAAC;AA6C1C,eAAO,MAAM,gBAAgB,EAAE,gBAG7B,CAAC;AAEH,OAAO,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"standard-pipeline.d.ts","sourceRoot":"","sources":["../../src/pipeline/standard-pipeline.ts"],"names":[],"mappings":"AAMA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAA6B,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC1F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,KAAK,EACV,cAAc,EAIf,MAAM,oBAAoB,CAAC;AAsC5B,OAAO,EAGL,oBAAoB,EACpB,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;AAE5B,iEAAiE;AACjE,eAAO,MAAM,gCAAgC,ykEA6D5C,CAAC;AACF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,GAAG,MAAM,CAAC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,2BAA2B,CAAC,CAkB3E;AA4SD,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACtD,QAAQ,CAAC,QAAQ,EAAE,OAAO,oBAAoB,CAAC;CAChD;AAED,wBAAgB,uCAAuC,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAE1F;AAED,4EAA4E;AAC5E,MAAM,MAAM,iBAAiB,GAAG,SAAS,CAAC;AAiG1C,eAAO,MAAM,gBAAgB,EAAE,gBAG7B,CAAC;AAEH,OAAO,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"standard-post.d.ts","sourceRoot":"","sources":["../../src/pipeline/standard-post.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAA0B,MAAM,8BAA8B,CAAC;AAEpG,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAK7D,OAAO,KAAK,EACV,0BAA0B,EAC1B,wBAAwB,EACxB,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAA8B,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAW3F,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;CACxC;AAED,oFAAoF;AACpF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;CAQtC,CAAC;AAEF,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAyCD,8EAA8E;AAC9E,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,uBAAuB,GAAG,SAAS,GACzC,4BAA4B,CA8B9B;AAyBD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,0BAA0B,CAAC,mBAAmB,CAAC,EACxD,QAAQ,EAAE,sBAAsB,EAChC,KAAK,EAAE,oBAAoB,EAC3B,KAAK,EAAE,oBAAoB,EAC3B,OAAO,EAAE,mBAAmB,EAC5B,aAAa,CAAC,EAAE,oBAAoB,GACnC,MAAM,CAAC,IAAI,EAAE,wBAAwB,CAAC,CAuNxC"}
1
+ {"version":3,"file":"standard-post.d.ts","sourceRoot":"","sources":["../../src/pipeline/standard-post.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAA0B,MAAM,8BAA8B,CAAC;AAEpG,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAK7D,OAAO,KAAK,EACV,0BAA0B,EAC1B,wBAAwB,EACxB,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEL,KAAK,oBAAoB,EAE1B,MAAM,oBAAoB,CAAC;AAW5B,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;CACxC;AAED,oFAAoF;AACpF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;CAQtC,CAAC;AAEF,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAyCD,8EAA8E;AAC9E,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,uBAAuB,GAAG,SAAS,GACzC,4BAA4B,CA8B9B;AAyBD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,0BAA0B,CAAC,mBAAmB,CAAC,EACxD,QAAQ,EAAE,sBAAsB,EAChC,KAAK,EAAE,oBAAoB,EAC3B,KAAK,EAAE,oBAAoB,EAC3B,OAAO,EAAE,mBAAmB,EAC5B,aAAa,CAAC,EAAE,oBAAoB,GACnC,MAAM,CAAC,IAAI,EAAE,wBAAwB,CAAC,CAsOxC"}
@@ -1,50 +1,29 @@
1
1
  export declare const STANDARD_PIPELINE_ID: "forgeax::standard";
2
2
  export declare const STANDARD_LIGHT_COUNTS: readonly [1, 32, 256];
3
- /** Shared clustered-lighting facts consumed by pipeline, record, and buffers. */
4
- export declare const DEFAULT_CLUSTER_GRID: {
5
- readonly x: 16;
6
- readonly y: 9;
7
- readonly z: 24;
8
- };
9
- export declare const CLUSTER_GRID_STRIDE_U32 = 2;
10
- export declare const LIGHT_INDEX_LIST_CAPACITY = 1048576;
11
- export declare const MAX_LIGHTS = 256;
3
+ export { CLUSTER_GRID_STRIDE_U32, DEFAULT_CLUSTER_GRID, LIGHT_INDEX_LIST_CAPACITY, MAX_LIGHTS, } from './standard-lighting/layout';
12
4
  export type StandardLightCount = (typeof STANDARD_LIGHT_COUNTS)[number];
13
- export type StandardLightingLane = 'direct' | 'clustered';
14
- export type StandardFallbackLane = 'native' | 'cpu-webgl2';
15
5
  export type StandardShadowMode = 'off' | 'hard' | 'filtered';
16
- export type StandardTone = 'none' | 'aces-filmic' | 'agx' | 'cineon' | 'linear' | 'neutral' | 'reinhard' | 'reinhard-extended';
17
- export type StandardAntialias = 'none' | 'fxaa' | 'msaa';
18
- export declare const STANDARD_POST_STAGE_NAMES: readonly ["transparent-blend", "bloom", "output-transform", "fxaa", "post-effect", "present"];
19
- export type StandardPostStage = (typeof STANDARD_POST_STAGE_NAMES)[number];
20
6
  export type StandardVolumetricFogQuality = 'low' | 'high';
21
7
  export interface StandardVolumetricFogProfile {
22
8
  readonly quality: StandardVolumetricFogQuality;
23
9
  readonly depth: 48 | 64;
24
10
  readonly tileSize: 4 | 16;
25
11
  }
12
+ export declare const STANDARD_POST_STAGE_NAMES: readonly ["transparent-blend", "bloom", "output-transform", "fxaa", "post-effect", "present"];
13
+ export type StandardPostStage = (typeof STANDARD_POST_STAGE_NAMES)[number];
26
14
  export interface StandardProfile {
27
15
  readonly pipelineId: typeof STANDARD_PIPELINE_ID;
28
16
  readonly lightCount: StandardLightCount;
29
- readonly lighting: StandardLightingLane;
17
+ /** Graph topology selector; all local lights use the shared Cluster path. */
18
+ readonly renderPath: 'forward' | 'deferred';
30
19
  readonly shadows: StandardShadowMode;
31
20
  readonly pbr: boolean;
32
21
  readonly ibl: boolean;
33
22
  readonly ssao: boolean;
34
- readonly bloom: boolean;
35
- readonly tone: StandardTone;
36
- readonly antialias: StandardAntialias;
37
- readonly sky: boolean;
38
23
  /** Renderer-owned 1080p volume profile; tile width/height remain surface-derived. */
39
24
  readonly volumetricFog?: StandardVolumetricFogProfile | undefined;
40
- readonly fallback: StandardFallbackLane;
41
25
  readonly postStages: typeof STANDARD_POST_STAGE_NAMES;
42
26
  }
43
27
  export declare const DEFAULT_STANDARD_PROFILE: StandardProfile;
44
28
  export declare function resolveVolumetricFogProfile(profile: Pick<StandardProfile, 'volumetricFog'>): StandardVolumetricFogProfile;
45
- export type StandardLane = StandardLightingLane | 'cpu-webgl2';
46
- export declare function resolveStandardLane(profile: Pick<StandardProfile, 'lighting'>, capabilities: {
47
- readonly compute: boolean;
48
- readonly storageBuffer: boolean;
49
- }): StandardLane;
50
29
  //# sourceMappingURL=standard-profile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"standard-profile.d.ts","sourceRoot":"","sources":["../../src/pipeline/standard-profile.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,EAAG,mBAA4B,CAAC;AACjE,eAAO,MAAM,qBAAqB,uBAAwB,CAAC;AAC3D,iFAAiF;AACjF,eAAO,MAAM,oBAAoB;;;;CAAkC,CAAC;AACpE,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,yBAAyB,UAAU,CAAC;AACjD,eAAO,MAAM,UAAU,MAAM,CAAC;AAE9B,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AACxE,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,WAAW,CAAC;AAC1D,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,YAAY,CAAC;AAC3D,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,MAAM,GAAG,UAAU,CAAC;AAC7D,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,aAAa,GACb,KAAK,GACL,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,UAAU,GACV,mBAAmB,CAAC;AACxB,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AACzD,eAAO,MAAM,yBAAyB,+FAO5B,CAAC;AACX,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC3E,MAAM,MAAM,4BAA4B,GAAG,KAAK,GAAG,MAAM,CAAC;AAE1D,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,OAAO,EAAE,4BAA4B,CAAC;IAC/C,QAAQ,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,UAAU,EAAE,OAAO,oBAAoB,CAAC;IACjD,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,qFAAqF;IACrF,QAAQ,CAAC,aAAa,CAAC,EAAE,4BAA4B,GAAG,SAAS,CAAC;IAClE,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,OAAO,yBAAyB,CAAC;CACvD;AAED,eAAO,MAAM,wBAAwB,EAAE,eAcrC,CAAC;AAEH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC,GAC9C,4BAA4B,CAE9B;AAED,MAAM,MAAM,YAAY,GAAG,oBAAoB,GAAG,YAAY,CAAC;AAE/D,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,EAC1C,YAAY,EAAE;IAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAA;CAAE,GAC3E,YAAY,CAGd"}
1
+ {"version":3,"file":"standard-profile.d.ts","sourceRoot":"","sources":["../../src/pipeline/standard-profile.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,EAAG,mBAA4B,CAAC;AACjE,eAAO,MAAM,qBAAqB,uBAAwB,CAAC;AAC3D,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,yBAAyB,EACzB,UAAU,GACX,MAAM,4BAA4B,CAAC;AAEpC,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AACxE,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,MAAM,GAAG,UAAU,CAAC;AAC7D,MAAM,MAAM,4BAA4B,GAAG,KAAK,GAAG,MAAM,CAAC;AAE1D,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,OAAO,EAAE,4BAA4B,CAAC;IAC/C,QAAQ,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC;CAC3B;AAED,eAAO,MAAM,yBAAyB,+FAO5B,CAAC;AACX,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC3E,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,UAAU,EAAE,OAAO,oBAAoB,CAAC;IACjD,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxC,6EAA6E;IAC7E,QAAQ,CAAC,UAAU,EAAE,SAAS,GAAG,UAAU,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,qFAAqF;IACrF,QAAQ,CAAC,aAAa,CAAC,EAAE,4BAA4B,GAAG,SAAS,CAAC;IAClE,QAAQ,CAAC,UAAU,EAAE,OAAO,yBAAyB,CAAC;CACvD;AAED,eAAO,MAAM,wBAAwB,EAAE,eASrC,CAAC;AAEH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC,GAC9C,4BAA4B,CAE9B"}
@@ -65,6 +65,8 @@ export interface PipelineBuilderContext {
65
65
  * tonemap field (M9 keeps the LDR shape; HDR variants are OOS-M9).
66
66
  */
67
67
  readonly colorFormat: GPUTextureFormat;
68
+ /** Additional color targets for an MRT pass; the first target is colorFormat. */
69
+ readonly colorFormats?: readonly GPUTextureFormat[] | undefined;
68
70
  /** Depth attachment format, or `undefined` for a color-only pass. */
69
71
  readonly depthFormat: GPUTextureFormat | undefined;
70
72
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline-builder.d.ts","sourceRoot":"","sources":["../src/pipeline-builder.ts"],"names":[],"mappings":"AA2CA,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,cAAc,EAEnB,KAAK,MAAM,EACX,KAAK,SAAS,EACd,QAAQ,EACR,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG9F;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,uFAAuF;IACvF,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IACtC;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CACjD;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,kCAAkC;IACjD,kBAAkB,CAAC,IAAI,EAAE;QACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KACrC,GAAG,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;CACpC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAsB;IACrC,oDAAoD;IACpD,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,mBAAmB,EAAE,kCAAkC,CAAC;IACjE;;;;OAIG;IACH,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;IACvC,qEAAqE;IACrE,QAAQ,CAAC,WAAW,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACnD;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACzD,gEAAgE;IAChE,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAC7C,iFAAiF;IACjF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,2EAA2E;IAC3E,QAAQ,CAAC,YAAY,CAAC,EAAE;QACtB,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;QAChC,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;KACzC,CAAC;CACH;AAED;;;;;;;;;GASG;AACH,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,IAAI,CAAC,sBAAsB,EAAE,aAAa,GAAG,aAAa,GAAG,cAAc,CAAC,GAChF,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAmDxB;AAMD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,8BAA8B,CAC5C,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,mBAAmB,EAC1B,GAAG,EAAE,sBAAsB,EAC3B,WAAW,CAAC,EAAE,mBAAmB,EACjC,QAAQ,CAAC,EAAE,gBAAgB,EAC3B,WAAW,CAAC,EAAE,MAAM,EACpB,aAAa,CAAC,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,QAAQ,GAAE,QAAoB,EAO9B,WAAW,GAAE,MAAU,GACtB,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,CAuMlC"}
1
+ {"version":3,"file":"pipeline-builder.d.ts","sourceRoot":"","sources":["../src/pipeline-builder.ts"],"names":[],"mappings":"AA2CA,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,cAAc,EAEnB,KAAK,MAAM,EACX,KAAK,SAAS,EACd,QAAQ,EACR,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG9F;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,uFAAuF;IACvF,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IACtC;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CACjD;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,kCAAkC;IACjD,kBAAkB,CAAC,IAAI,EAAE;QACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KACrC,GAAG,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;CACpC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAsB;IACrC,oDAAoD;IACpD,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,mBAAmB,EAAE,kCAAkC,CAAC;IACjE;;;;OAIG;IACH,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;IACvC,iFAAiF;IACjF,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,gBAAgB,EAAE,GAAG,SAAS,CAAC;IAChE,qEAAqE;IACrE,QAAQ,CAAC,WAAW,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACnD;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACzD,gEAAgE;IAChE,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAC7C,iFAAiF;IACjF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,2EAA2E;IAC3E,QAAQ,CAAC,YAAY,CAAC,EAAE;QACtB,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;QAChC,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;KACzC,CAAC;CACH;AAED;;;;;;;;;GASG;AACH,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,IAAI,CAAC,sBAAsB,EAAE,aAAa,GAAG,aAAa,GAAG,cAAc,CAAC,GAChF,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAmDxB;AAMD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,8BAA8B,CAC5C,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,mBAAmB,EAC1B,GAAG,EAAE,sBAAsB,EAC3B,WAAW,CAAC,EAAE,mBAAmB,EACjC,QAAQ,CAAC,EAAE,gBAAgB,EAC3B,WAAW,CAAC,EAAE,MAAM,EACpB,aAAa,CAAC,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,QAAQ,GAAE,QAAoB,EAO9B,WAAW,GAAE,MAAU,GACtB,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,CAwMlC"}
@@ -99,6 +99,39 @@ export declare function cacheKeyOf(spec: PipelineSpec): string;
99
99
  * by a material variant.
100
100
  */
101
101
  export declare function variantSetFromVertexLayoutProjection(projection: VertexLayoutProjection, authoredVariantSet: string | undefined): Result<string, VertexColorVariantConflictError>;
102
+ /**
103
+ * Derive the capability axes shared by every Standard PBR draw owner.
104
+ *
105
+ * The all-true key is the canonical empty key used by the shader manifest;
106
+ * every other capability pair stays explicit so a no-local-light frame on a
107
+ * device without storage buffers cannot accidentally select a storage-backed
108
+ * PSO. Vertex-color is supplied here because the empty-key rule is only valid
109
+ * when that geometry-owned axis is also true.
110
+ */
111
+ export declare function standardCapabilityVariantSet(clustered: boolean, storageBuffer: boolean, vertexColorAvailable: boolean): string;
112
+ /**
113
+ * Project the frame-owned Standard topology onto its material variant axes.
114
+ *
115
+ * `StandardTopologyInputValue.kind` is the only runtime authority for the
116
+ * cluster axis: a frame with local lights must request the clustered artifact,
117
+ * while the no-local-light topology requests the direct artifact. Keeping
118
+ * this projection beside the canonical key builder prevents PBR, skin, and
119
+ * sprite-lit record owners from independently inferring the active lane from
120
+ * whichever bind group happened to be constructed first.
121
+ */
122
+ export declare function standardTopologyVariantSet(topology: {
123
+ readonly kind: 'no-local-lights' | 'clustered';
124
+ } | undefined, storageBuffer: boolean, vertexColorAvailable: boolean, probeBlendAvailable?: boolean): string;
125
+ /**
126
+ * Keep a clustered frame fail-closed when its unified group(2) resource is
127
+ * unavailable. A missing group is not evidence that the frame is direct; it
128
+ * is an invalid prepared resource state.
129
+ */
130
+ export declare function standardTopologyBindGroupReady(topology: {
131
+ readonly kind: 'no-local-lights' | 'clustered';
132
+ } | undefined, clusterBindGroup: unknown): boolean;
133
+ /** Derive the storage axis for Standard-compatible unlit material draws. */
134
+ export declare function standardStorageVariantSet(storageBuffer: boolean, vertexColorAvailable: boolean): string;
102
135
  /**
103
136
  * Build a `GPURenderPipelineDescriptor` from a PipelineSpec + shader modules.
104
137
  *
@@ -312,22 +345,22 @@ export declare function getOrBuildPipeline(spec: PipelineSpec, deviceProvider: P
312
345
  *
313
346
  * Matrix:
314
347
  * - 8 base material variants — {unlit, standard-pbr} x {LDR, HDR} x {S1, S4}
315
- * - 4 URP-variant standard-pbr — standard-pbr (variantSet=URP_PBR_VARIANT_SET)
316
- * x {LDR, HDR} x {S1, S4}; URP record path requests these specs by
348
+ * - 4 non-clustered standard-pbr — standard-pbr (variantSet=STANDARD_BOOT_VARIANT_SET)
349
+ * x {LDR, HDR} x {S1, S4}; the default record path requests these specs by
317
350
  * `getMaterialShaderPipeline` keying off `cacheKeyOf` so the boot-time
318
351
  * prewarm seeds `materialShaderPipelineCache` and avoids a 1-frame
319
- * async-compile skip-draw (M6 fix-up; see render-system-record.ts §URP)
352
+ * async-compile skip-draw (M6 fix-up; see render-system-record.ts)
320
353
  * - 3 fullscreen-post — tonemap (LDR S1) + skybox (HDR S1, HDR S4)
321
354
  *
322
- * Total: 15. The URP variant is PBR-only because:
323
- * - unlit URP record path passes `variantSet=undefined` (the no-variant
355
+ * Total: 15. The non-clustered variant is PBR-only because:
356
+ * - unlit record path passes `variantSet=undefined` (the no-variant
324
357
  * boot-default entries already cover it; createRenderer.ts §unlitRsp)
325
358
  * - sprite goes through `getMaterialShaderPipeline('forgeax::sprite', ...)`
326
359
  * lazily at first transparent-LDR-split draw — no boot-time pre-warm.
327
- * - HDRP variant (`variantSet=''` or compound `=true` form) is registered
360
+ * - clustered variant (`variantSet=''` or compound `=true` form) is registered
328
361
  * lazily when the clustered Standard profile activates, not at boot — adding clustered
329
362
  * prewarm here would build PSOs against the URP layout (the boot-time
330
- * `pbrModule` is the URP variant when `isHdrpActive=false`)
363
+ * `pbrModule` is the non-clustered variant before a frame admits local lights)
331
364
  *
332
365
  * `ldrViewFormat` parameterises the LDR color attachment format. Callers
333
366
  * pass the runtime-resolved swap-chain view format (Channel 2 typically
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline-spec.d.ts","sourceRoot":"","sources":["../src/pipeline-spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipeline-spec.d.ts","sourceRoot":"","sources":["../src/pipeline-spec.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AA4DrD,+DAA+D;AAC/D,wBAAgB,sBAAsB,IAAI,MAAM,CAQ/C"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAgErD,+DAA+D;AAC/D,wBAAgB,sBAAsB,IAAI,MAAM,CAQ/C"}
@@ -0,0 +1,21 @@
1
+ import type { PointShadowSnapshot } from './render-system-extract';
2
+ /**
3
+ * Detached point-shadow budget facts from one completed extract/record frame.
4
+ *
5
+ * `requested` is the number of PointLight + PointLightShadow pairs. The
6
+ * renderer owns the bounded cube-array atlas, so `admitted`, `shadowed`, and
7
+ * `shadowAtlasOccupancy` are all derived from the layer sentinel emitted by
8
+ * the same extract owner. No consumer needs to maintain a second budget
9
+ * ledger.
10
+ */
11
+ export interface PointShadowInspection {
12
+ readonly status: 'inactive' | 'ready' | 'over-budget';
13
+ readonly requested: number;
14
+ readonly admitted: number;
15
+ readonly shadowed: number;
16
+ readonly shadowAtlasOccupancy: number;
17
+ readonly shadowAtlasCapacity: number;
18
+ }
19
+ /** Project point-shadow snapshots to the public, JSON-safe inspection shape. */
20
+ export declare function inspectPointShadow(snapshots: readonly PointShadowSnapshot[], shadowAtlasCapacity: number): PointShadowInspection;
21
+ //# sourceMappingURL=point-shadow-inspection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"point-shadow-inspection.d.ts","sourceRoot":"","sources":["../src/point-shadow-inspection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE;;;;;;;;GAQG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,GAAG,aAAa,CAAC;IACtD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC;AAED,gFAAgF;AAChF,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,SAAS,mBAAmB,EAAE,EACzC,mBAAmB,EAAE,MAAM,GAC1B,qBAAqB,CA8BvB"}
@@ -0,0 +1,31 @@
1
+ import type { Result, RhiDevice, RhiError, Texture } from '@forgeax/engine-rhi';
2
+ import { type DeviceScope } from '../../device/device-scope';
3
+ import { EXTENDED_LIGHTING_TOPOLOGY } from './resources';
4
+ export interface LtcResourcePlanInput {
5
+ readonly scope: DeviceScope;
6
+ readonly ltcAvailable: boolean;
7
+ readonly residentGeneration?: number;
8
+ }
9
+ export interface LtcResourcePlan {
10
+ readonly topology: typeof EXTENDED_LIGHTING_TOPOLOGY;
11
+ readonly generation: number;
12
+ readonly rectAdmission: 'admitted' | 'omitted';
13
+ readonly tableCount: number;
14
+ readonly uploadCount: number;
15
+ }
16
+ export interface LtcResourceCandidate {
17
+ readonly topology: typeof EXTENDED_LIGHTING_TOPOLOGY;
18
+ readonly generation: number;
19
+ readonly scope: DeviceScope;
20
+ readonly lambertTexture: Texture;
21
+ readonly ggxTexture: Texture;
22
+ readonly tableCount: 2;
23
+ readonly uploadCount: 2;
24
+ }
25
+ export declare function deriveLtcResourcePlan(input: LtcResourcePlanInput): LtcResourcePlan;
26
+ /** Create both tracked tables atomically; unavailable LTC only omits Rect. */
27
+ export declare function createLtcResourceCandidate(input: {
28
+ readonly device: RhiDevice | undefined;
29
+ readonly scope: DeviceScope;
30
+ }): Promise<Result<LtcResourceCandidate | undefined, RhiError>>;
31
+ //# sourceMappingURL=ltc-resources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ltc-resources.d.ts","sourceRoot":"","sources":["../../../src/prepare/extended-lighting/ltc-resources.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAGhF,OAAO,EAAE,KAAK,WAAW,EAAwB,MAAM,2BAA2B,CAAC;AAKnF,OAAO,EAAoC,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAE3F,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,OAAO,0BAA0B,CAAC;IACrD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,UAAU,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,OAAO,0BAA0B,CAAC;IACrD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;CACzB;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,oBAAoB,GAAG,eAAe,CASlF;AAeD,8EAA8E;AAC9E,wBAAsB,0BAA0B,CAAC,KAAK,EAAE;IACtD,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;CAC7B,GAAG,OAAO,CAAC,MAAM,CAAC,oBAAoB,GAAG,SAAS,EAAE,QAAQ,CAAC,CAAC,CAuE9D"}