@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
@@ -5,7 +5,13 @@ import { RhiError } from '@forgeax/engine-rhi';
5
5
  import type { GpuScene } from '../gpu-scene';
6
6
  import type { PipelineBuilderShaderModuleFactory } from '../pipeline-builder';
7
7
  import type { SubmissionPlan } from './batch-topology';
8
- export declare const GPU_DRIVEN_VIEW_WGSL = "\nstruct PrimitiveRecord {\n generation: u32,\n flags: u32,\n transformIndex: u32,\n materialIndex: u32,\n drawTemplateIndex: u32,\n instanceStart: u32,\n instanceCount: u32,\n assetHandle: u32,\n localBoundsMin: vec4<f32>,\n localBoundsMax: vec4<f32>,\n};\n\nstruct TransformRecord {\n currentWorld: mat4x4<f32>,\n previousWorld: mat4x4<f32>,\n};\n\nstruct CandidateRecord {\n primitiveIndex: u32,\n generation: u32,\n instanceOrdinal: u32,\n materialSlot: u32,\n batchIndex: u32,\n visibleBase: u32,\n visibleCapacity: u32,\n};\n\nstruct InstanceRecord {\n primitiveIndex: u32,\n transformIndex: u32,\n customDataStart: u32,\n flags: u32,\n};\n\nstruct BatchRecord {\n visibleBase: u32,\n visibleCapacity: u32,\n count: u32,\n first: u32,\n baseVertex: i32,\n indirectIndex: u32,\n indexed: u32,\n};\n\nstruct ViewConstants {\n planes: array<vec4<f32>, 6>,\n candidateCount: u32,\n batchCount: u32,\n pad0: u32,\n pad1: u32,\n};\n\n@group(0) @binding(0) var<storage, read> primitives: array<PrimitiveRecord>;\n@group(0) @binding(1) var<storage, read> instances: array<InstanceRecord>;\n@group(0) @binding(2) var<storage, read> transforms: array<TransformRecord>;\n@group(0) @binding(3) var<storage, read> candidates: array<CandidateRecord>;\n@group(0) @binding(4) var<storage, read> batches: array<BatchRecord>;\n@group(0) @binding(5) var<uniform> view: ViewConstants;\n@group(0) @binding(6) var<storage, read_write> counters: array<atomic<u32>>;\n@group(0) @binding(7) var<storage, read_write> visibleIndices: array<vec2<u32>>;\n@group(0) @binding(8) var<storage, read_write> indirectArgs: array<u32>;\n\nfn counterIndex(batchIndex: u32) -> u32 { return batchIndex * 2u; }\nfn overflowIndex(batchIndex: u32) -> u32 { return batchIndex * 2u + 1u; }\n\nfn isVisible(primitive: PrimitiveRecord, world: mat4x4<f32>) -> bool {\n if ((primitive.flags & 7u) != 7u) { return false; }\n let localCenter = (primitive.localBoundsMin.xyz + primitive.localBoundsMax.xyz) * 0.5;\n let localExtent = (primitive.localBoundsMax.xyz - primitive.localBoundsMin.xyz) * 0.5;\n let worldCenter = (world * vec4<f32>(localCenter, 1.0)).xyz;\n let worldExtent =\n abs(world[0].xyz) * localExtent.x +\n abs(world[1].xyz) * localExtent.y +\n abs(world[2].xyz) * localExtent.z;\n for (var planeIndex = 0u; planeIndex < 6u; planeIndex += 1u) {\n let plane = view.planes[planeIndex];\n let radius = dot(abs(plane.xyz), worldExtent);\n if (dot(plane.xyz, worldCenter) + plane.w < -radius) { return false; }\n }\n return true;\n}\n\n@compute @workgroup_size(64)\nfn resetView(@builtin(global_invocation_id) id: vec3<u32>) {\n let batchIndex = id.x;\n if (batchIndex >= view.batchCount) { return; }\n atomicStore(&counters[counterIndex(batchIndex)], 0u);\n atomicStore(&counters[overflowIndex(batchIndex)], 0u);\n}\n\n@compute @workgroup_size(64)\nfn cullView(@builtin(global_invocation_id) id: vec3<u32>) {\n let candidateIndex = id.x;\n if (candidateIndex >= view.candidateCount) { return; }\n let candidate = candidates[candidateIndex];\n let primitive = primitives[candidate.primitiveIndex];\n if (primitive.generation != candidate.generation) { return; }\n if (candidate.instanceOrdinal >= primitive.instanceCount) { return; }\n let instanceIndex = primitive.instanceStart + candidate.instanceOrdinal;\n let instance = instances[instanceIndex];\n let world = transforms[primitive.transformIndex].currentWorld * transforms[instance.transformIndex].currentWorld;\n if (!isVisible(primitive, world)) { return; }\n let localVisible = atomicAdd(&counters[counterIndex(candidate.batchIndex)], 1u);\n if (localVisible >= candidate.visibleCapacity) {\n atomicStore(&counters[overflowIndex(candidate.batchIndex)], 1u);\n return;\n }\n visibleIndices[candidate.visibleBase + localVisible] = vec2<u32>(\n instanceIndex,\n primitive.materialIndex + candidate.materialSlot,\n );\n}\n\n@compute @workgroup_size(64)\nfn finalizeView(@builtin(global_invocation_id) id: vec3<u32>) {\n let batchIndex = id.x;\n if (batchIndex >= view.batchCount) { return; }\n let batch = batches[batchIndex];\n let visibleCount = min(\n atomicLoad(&counters[counterIndex(batchIndex)]),\n batch.visibleCapacity,\n );\n let args = batch.indirectIndex * 5u;\n indirectArgs[args] = batch.count;\n indirectArgs[args + 1u] = visibleCount;\n indirectArgs[args + 2u] = batch.first;\n indirectArgs[args + 3u] = select(0u, bitcast<u32>(batch.baseVertex), batch.indexed != 0u);\n indirectArgs[args + 4u] = 0u;\n}\n";
8
+ export type GpuLodLane = 'gpu' | 'cpu';
9
+ export declare function selectGpuLodLane(caps: {
10
+ readonly compute: boolean;
11
+ readonly storageBuffer: boolean;
12
+ readonly indirectDrawing: boolean;
13
+ }): GpuLodLane;
14
+ export declare const GPU_DRIVEN_VIEW_WGSL = "\nstruct PrimitiveRecord {\n generation: u32,\n flags: u32,\n transformIndex: u32,\n materialIndex: u32,\n drawTemplateIndex: u32,\n instanceStart: u32,\n instanceCount: u32,\n assetHandle: u32,\n localBoundsMin: vec4<f32>,\n localBoundsMax: vec4<f32>,\n};\n\nstruct TransformRecord {\n currentWorld: mat4x4<f32>,\n previousWorld: mat4x4<f32>,\n};\n\nstruct LodRecord {\n generation: u32,\n level: u32,\n firstIndex: u32,\n indexCount: u32,\n baseVertex: i32,\n screenCoverage: f32,\n hysteresis: f32,\n ready: u32,\n};\n\nstruct CandidateRecord {\n primitiveIndex: u32,\n generation: u32,\n instanceOrdinal: u32,\n materialSlot: u32,\n batchIndex: u32,\n visibleBase: u32,\n visibleCapacity: u32,\n // Admission is separate from selector membership: suppressed candidates\n // still contribute to the all-candidate LOD histogram, but never enter the\n // compacted visible stream.\n submitAdmission: u32,\n projectedHeight: f32,\n previousLevel: u32,\n historyValid: u32,\n lodCount: u32,\n lodRows: array<LodRecord, 8>,\n};\n\nstruct InstanceRecord {\n primitiveIndex: u32,\n transformIndex: u32,\n customDataStart: u32,\n flags: u32,\n};\n\nstruct BatchRecord {\n visibleBase: u32,\n visibleCapacity: u32,\n count: u32,\n first: u32,\n baseVertex: i32,\n indirectIndex: u32,\n indexed: u32,\n candidateBase: u32,\n};\n\nstruct ViewConstants {\n planes: array<vec4<f32>, 6>,\n candidateCount: u32,\n batchCount: u32,\n pad0: u32,\n pad1: u32,\n};\n\nfn selectLodLevel(\n projectedHeight: f32,\n previousLevel: u32,\n historyValid: bool,\n rows: array<LodRecord, 8>,\n levelCount: u32,\n) -> u32 {\n // Row zero is the implicit root and has no transition threshold. Lower\n // levels carry the absolute boundary that introduces the preceding row.\n // This mirrors the CPU selector: height >= rows[1] selects root, height\n // between rows[2] and rows[1] selects level 1, and so on.\n var selected = levelCount - 1u;\n for (var level = 1u; level < levelCount; level += 1u) {\n if (projectedHeight >= rows[level].screenCoverage) {\n selected = level - 1u;\n break;\n }\n }\n if (historyValid && previousLevel < levelCount && selected != previousLevel) {\n var boundary = rows[previousLevel + 1u].screenCoverage;\n if (selected < previousLevel) { boundary = rows[previousLevel].screenCoverage; }\n let band = boundary * rows[previousLevel].hysteresis;\n if (abs(projectedHeight - boundary) <= band) { selected = previousLevel; }\n }\n if (selected >= levelCount || rows[selected].ready == 0u) { return 0u; }\n return selected;\n}\n\n@group(0) @binding(0) var<storage, read> primitives: array<PrimitiveRecord>;\n@group(0) @binding(1) var<storage, read> instances: array<InstanceRecord>;\n@group(0) @binding(2) var<storage, read> transforms: array<TransformRecord>;\n@group(0) @binding(3) var<storage, read> candidates: array<CandidateRecord>;\n@group(0) @binding(4) var<storage, read> batches: array<BatchRecord>;\n@group(0) @binding(5) var<uniform> view: ViewConstants;\n@group(0) @binding(6) var<storage, read_write> counters: array<atomic<u32>>;\n@group(0) @binding(7) var<storage, read_write> visibleIndices: array<vec2<u32>>;\n@group(0) @binding(8) var<storage, read_write> indirectArgs: array<u32>;\n\nfn counterIndex(batchIndex: u32) -> u32 { return batchIndex * 12u; }\nfn overflowIndex(batchIndex: u32) -> u32 { return counterIndex(batchIndex) + 1u; }\nfn lodCounterIndex(batchIndex: u32, level: u32) -> u32 {\n return counterIndex(batchIndex) + 2u + level;\n}\n\nfn isVisible(primitive: PrimitiveRecord, world: mat4x4<f32>) -> bool {\n // GPU Scene bounds are optional. A producer that has not published local\n // bounds still belongs in the GPU lane; keep it conservatively visible\n // instead of silently dropping a valid draw.\n if ((primitive.flags & 5u) != 5u) { return false; }\n if ((primitive.flags & 2u) == 0u) { return true; }\n let localCenter = (primitive.localBoundsMin.xyz + primitive.localBoundsMax.xyz) * 0.5;\n let localExtent = (primitive.localBoundsMax.xyz - primitive.localBoundsMin.xyz) * 0.5;\n let worldCenter = (world * vec4<f32>(localCenter, 1.0)).xyz;\n let worldExtent =\n abs(world[0].xyz) * localExtent.x +\n abs(world[1].xyz) * localExtent.y +\n abs(world[2].xyz) * localExtent.z;\n for (var planeIndex = 0u; planeIndex < 6u; planeIndex += 1u) {\n let plane = view.planes[planeIndex];\n let radius = dot(abs(plane.xyz), worldExtent);\n if (dot(plane.xyz, worldCenter) + plane.w < -radius) { return false; }\n }\n return true;\n}\n\n@compute @workgroup_size(64)\nfn resetView(@builtin(global_invocation_id) id: vec3<u32>) {\n let batchIndex = id.x;\n if (batchIndex >= view.batchCount) { return; }\n atomicStore(&counters[counterIndex(batchIndex)], 0u);\n atomicStore(&counters[overflowIndex(batchIndex)], 0u);\n for (var level = 0u; level < 8u; level += 1u) {\n atomicStore(&counters[lodCounterIndex(batchIndex, level)], 0u);\n }\n atomicStore(&counters[counterIndex(batchIndex) + 10u], 0u);\n atomicStore(&counters[counterIndex(batchIndex) + 11u], 0u);\n}\n\n@compute @workgroup_size(64)\nfn cullView(@builtin(global_invocation_id) id: vec3<u32>) {\n let candidateIndex = id.x;\n if (candidateIndex >= view.candidateCount) { return; }\n let candidate = candidates[candidateIndex];\n let primitive = primitives[candidate.primitiveIndex];\n if (primitive.generation != candidate.generation) { return; }\n if (candidate.instanceOrdinal >= primitive.instanceCount) { return; }\n let instanceIndex = primitive.instanceStart + candidate.instanceOrdinal;\n let instance = instances[instanceIndex];\n let world = transforms[primitive.transformIndex].currentWorld * transforms[instance.transformIndex].currentWorld;\n let selectedLod = selectLodLevel(\n candidate.projectedHeight,\n candidate.previousLevel,\n candidate.historyValid != 0u,\n candidate.lodRows,\n candidate.lodCount,\n );\n if (candidate.lodRows[selectedLod].ready == 0u) { return; }\n // Selector counters describe the complete LOD population, including\n // candidates outside the frustum and candidates suppressed by the CPU\n // visibility facet. Submission counters below remain compacted draw facts.\n atomicAdd(&counters[lodCounterIndex(candidate.batchIndex, selectedLod)], 1u);\n if (candidate.submitAdmission == 0u) { return; }\n if (!isVisible(primitive, world)) { return; }\n atomicAdd(\n &counters[counterIndex(candidate.batchIndex) + 10u],\n candidate.lodRows[selectedLod].indexCount,\n );\n atomicAdd(\n &counters[counterIndex(candidate.batchIndex) + 11u],\n candidate.lodRows[0u].indexCount,\n );\n let localVisible = atomicAdd(&counters[counterIndex(candidate.batchIndex)], 1u);\n if (localVisible >= candidate.visibleCapacity) {\n atomicStore(&counters[overflowIndex(candidate.batchIndex)], 1u);\n return;\n }\n visibleIndices[candidate.visibleBase + localVisible] = vec2<u32>(\n instanceIndex,\n primitive.materialIndex + candidate.materialSlot,\n );\n}\n\n@compute @workgroup_size(64)\nfn finalizeView(@builtin(global_invocation_id) id: vec3<u32>) {\n let batchIndex = id.x;\n if (batchIndex >= view.batchCount) { return; }\n let batch = batches[batchIndex];\n let visibleCount = min(\n atomicLoad(&counters[counterIndex(batchIndex)]),\n batch.visibleCapacity,\n );\n let args = batch.indirectIndex * 5u;\n let candidate = candidates[batch.candidateBase];\n let selectedLod = selectLodLevel(candidate.projectedHeight, candidate.previousLevel, candidate.historyValid != 0u, candidate.lodRows, candidate.lodCount);\n let lod = candidate.lodRows[selectedLod];\n indirectArgs[args] = select(batch.count, lod.indexCount, candidate.lodCount > 0u);\n indirectArgs[args + 1u] = visibleCount;\n indirectArgs[args + 2u] = select(batch.first, lod.firstIndex, candidate.lodCount > 0u && batch.indexed != 0u);\n indirectArgs[args + 3u] = select(0u, bitcast<u32>(lod.baseVertex), candidate.lodCount > 0u && batch.indexed != 0u);\n indirectArgs[args + 4u] = 0u;\n}\n";
9
15
  export interface GpuDrivenViewGraphResources {
10
16
  readonly primitive: GraphBuffer;
11
17
  readonly instance: GraphBuffer;
@@ -21,6 +27,8 @@ export interface GpuDrivenViewInspection {
21
27
  readonly batchCount: number;
22
28
  readonly visibleCapacity: number;
23
29
  readonly candidateCapacity: number;
30
+ /** Allocated visible-index capacity; distinct from logical candidates. */
31
+ readonly visibleBufferCapacity: number;
24
32
  readonly batchCapacity: number;
25
33
  readonly indirectCapacity: number;
26
34
  readonly updateCount: number;
@@ -32,6 +40,55 @@ export interface GpuDrivenViewInspection {
32
40
  readonly bufferRebuilds: number;
33
41
  readonly resourceGeneration: number;
34
42
  }
43
+ export interface GpuDrivenViewBufferCapacities {
44
+ readonly candidate: number;
45
+ readonly visible: number;
46
+ readonly batch: number;
47
+ readonly indirect: number;
48
+ }
49
+ export interface GpuDrivenLodSelectionInspection {
50
+ readonly candidateCount: number;
51
+ readonly batchCount: number;
52
+ readonly indirectDrawCount: number;
53
+ readonly visible: number;
54
+ readonly occluded: number;
55
+ readonly lodHistogram: readonly {
56
+ readonly level: number;
57
+ readonly count: number;
58
+ }[];
59
+ readonly batches: readonly {
60
+ readonly batchId: number;
61
+ readonly candidateCount: number;
62
+ readonly visible: number;
63
+ readonly occluded: number;
64
+ readonly lodHistogram: readonly {
65
+ readonly level: number;
66
+ readonly count: number;
67
+ }[];
68
+ }[];
69
+ readonly worldSelections?: readonly {
70
+ readonly worldKey: number;
71
+ readonly primitiveSlot: number;
72
+ readonly slotGeneration: number;
73
+ readonly candidateCount: number;
74
+ readonly visible: number;
75
+ readonly occluded: number;
76
+ readonly lodHistogram: readonly {
77
+ readonly level: number;
78
+ readonly count: number;
79
+ }[];
80
+ }[];
81
+ readonly geometryWork: number;
82
+ readonly rootGeometryWork: number;
83
+ }
84
+ /**
85
+ * Derive each GPU-driven allocation from its own logical capacity domain.
86
+ * Candidate records are dense; visible indices use the sparse, 64-entry
87
+ * aligned ranges assigned by BatchTopology. Keeping these values separate is
88
+ * what makes a large LOD candidate set bounded instead of multiplying the
89
+ * candidate record and inline LOD-row buffers by the visible address space.
90
+ */
91
+ export declare function deriveGpuDrivenViewBufferCapacities(plan: Pick<SubmissionPlan, 'candidateCount' | 'visibleCapacity' | 'batches'>): GpuDrivenViewBufferCapacities;
35
92
  export declare class GpuDrivenView {
36
93
  private readonly device;
37
94
  private readonly bindGroupLayout;
@@ -43,6 +100,7 @@ export declare class GpuDrivenView {
43
100
  private supersededBuffers;
44
101
  private bindGroup;
45
102
  private candidateCapacity;
103
+ private visibleBufferCapacity;
46
104
  private batchCapacity;
47
105
  private indirectCapacity;
48
106
  private plan;
@@ -59,6 +117,8 @@ export declare class GpuDrivenView {
59
117
  private bindGroupCreates;
60
118
  private bufferRebuilds;
61
119
  private resourceGeneration;
120
+ private telemetryPending;
121
+ private lodSelection;
62
122
  private constructor();
63
123
  static create(input: {
64
124
  readonly device: RhiDevice;
@@ -70,6 +130,8 @@ export declare class GpuDrivenView {
70
130
  get indirectBuffer(): Buffer | undefined;
71
131
  get overflowBuffer(): Buffer | undefined;
72
132
  get overflowByteOffset(): number;
133
+ /** Read selected levels written by the GPU cull pass for the last submit. */
134
+ readLodSelection(): Promise<GpuDrivenLodSelectionInspection | undefined>;
73
135
  addPasses<FrameCtx extends RenderGraphFrame>(builder: RenderGraphBuilder<FrameCtx>): Result<GpuDrivenViewGraphResources, RenderGraphError>;
74
136
  dispose(): void;
75
137
  /**
@@ -82,4 +144,5 @@ export declare class GpuDrivenView {
82
144
  private rebuildBuffers;
83
145
  private destroyAfterSubmittedWork;
84
146
  }
147
+ export { decideVisibility } from '../scene/visibility/occlusion-confidence';
85
148
  //# sourceMappingURL=view-gpu.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"view-gpu.d.ts","sourceRoot":"","sources":["../../src/gpu-driven/view-gpu.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"view-gpu.d.ts","sourceRoot":"","sources":["../../src/gpu-driven/view-gpu.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,19 @@ export declare function deriveGpuSceneTableLayout(schema: GpuSceneTableSchema):
22
22
  export declare function gpuSceneFieldOffset(layout: GpuSceneTableLayout, name: string): number;
23
23
  export declare function gpuSceneWgsl(layout: GpuSceneTableLayout): string;
24
24
  export declare const GPU_SCENE_SCHEMAS: Readonly<{
25
+ lod: {
26
+ name: string;
27
+ fields: ({
28
+ name: string;
29
+ type: "u32";
30
+ } | {
31
+ name: string;
32
+ type: "i32";
33
+ } | {
34
+ name: string;
35
+ type: "f32";
36
+ })[];
37
+ };
25
38
  primitive: {
26
39
  name: string;
27
40
  fields: ({
@@ -68,6 +81,7 @@ export declare const GPU_SCENE_SCHEMAS: Readonly<{
68
81
  };
69
82
  }>;
70
83
  export declare const GPU_SCENE_LAYOUTS: Readonly<{
84
+ readonly lod: GpuSceneTableLayout;
71
85
  readonly primitive: GpuSceneTableLayout;
72
86
  readonly instance: GpuSceneTableLayout;
73
87
  readonly transform: GpuSceneTableLayout;
@@ -1 +1 @@
1
- {"version":3,"file":"gpu-scene-schema.d.ts","sourceRoot":"","sources":["../src/gpu-scene-schema.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AACnD,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG,WAAW,GAAG,aAAa,CAAC;AAE7E,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;CAClC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,mBAAoB,SAAQ,aAAa;IACxD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACjD;AAgBD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,mBAAmB,GAAG,mBAAmB,CAY1F;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAIrF;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAGhE;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0D4B,CAAC;AAE3D,eAAO,MAAM,iBAAiB;;;;;;EAS7B,CAAC;AAEF,eAAO,MAAM,cAAc,QAAkE,CAAC"}
1
+ {"version":3,"file":"gpu-scene-schema.d.ts","sourceRoot":"","sources":["../src/gpu-scene-schema.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AACnD,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG,WAAW,GAAG,aAAa,CAAC;AAE7E,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;CAClC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,mBAAoB,SAAQ,aAAa;IACxD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACjD;AAgBD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,mBAAmB,GAAG,mBAAmB,CAY1F;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAIrF;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAGhE;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuE4B,CAAC;AAE3D,eAAO,MAAM,iBAAiB;;;;;;;EAS7B,CAAC;AAEF,eAAO,MAAM,cAAc,QAAkE,CAAC"}
@@ -20,7 +20,10 @@ export type GpuSceneAvailability = {
20
20
  export declare class GpuScene {
21
21
  private readonly device;
22
22
  private capacity;
23
+ private disposed;
23
24
  private tableBytes;
25
+ private transformBytes;
26
+ private transformView;
24
27
  private buffers;
25
28
  private uploadRanges;
26
29
  private uploadBytes;
@@ -28,11 +31,13 @@ export declare class GpuScene {
28
31
  private fullRebuilds;
29
32
  private clearedSlots;
30
33
  private noChangeFrames;
34
+ private identityUploaded;
31
35
  private readonly allocations;
32
36
  private readonly instances;
33
37
  private readonly transforms;
34
38
  private readonly draws;
35
39
  private readonly materials;
40
+ private readonly writesByTable;
36
41
  private constructor();
37
42
  static create(device: RhiDevice, initialCapacity?: number): Result<GpuSceneAvailability, RhiError>;
38
43
  get primitiveBuffer(): Buffer;
@@ -42,16 +47,19 @@ export declare class GpuScene {
42
47
  get materialBuffer(): Buffer;
43
48
  sync(delta: RenderSceneApplyResult): Result<GpuSceneSyncResult, RhiError>;
44
49
  /** Publish current transforms as previous only after a successful submit. */
45
- commitTemporalFrame(): Result<void, RhiError>;
50
+ commitTemporalFrame(enabled?: boolean): Result<void, RhiError>;
46
51
  rebuild(slots: readonly RenderSceneSlot[]): Result<GpuSceneSyncResult, RhiError>;
47
52
  inspect(): GpuSceneInspection;
48
53
  dispose(): void;
49
54
  private writeSlot;
55
+ private writeRootTransform;
50
56
  private clearSlot;
51
57
  private uploadRows;
52
58
  private ensureAllocation;
53
59
  private clearAllocation;
54
60
  private grow;
55
61
  private allocateCpuTables;
62
+ private refreshTransformViews;
63
+ private writeIdentityTransform;
56
64
  }
57
65
  //# sourceMappingURL=gpu-scene.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gpu-scene.d.ts","sourceRoot":"","sources":["../src/gpu-scene.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAW,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAWxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE1F,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AA0F7D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,oBAAoB,GAC5B;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,GAC1D;IAAE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAA;CAAE,CAAC;AA8EtF,yEAAyE;AACzE,qBAAa,QAAQ;IAgBjB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ;IAhBlB,OAAO,CAAC,UAAU,CAAyC;IAC3D,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0C;IACtE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8B;IACxD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;IACzD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA8B;IACpD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8B;IAExD,OAAO;IASP,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,eAAe,SAAM,GAAG,MAAM,CAAC,oBAAoB,EAAE,QAAQ,CAAC;IAa/F,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAAC,kBAAkB,EAAE,QAAQ,CAAC;IA8CzE,6EAA6E;IAC7E,mBAAmB,IAAI,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC;IAuB7C,OAAO,CAAC,KAAK,EAAE,SAAS,eAAe,EAAE,GAAG,MAAM,CAAC,kBAAkB,EAAE,QAAQ,CAAC;IA2ChF,OAAO,IAAI,kBAAkB;IAkC7B,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,SAAS;IAgMjB,OAAO,CAAC,SAAS;IAYjB,OAAO,CAAC,UAAU;IA0BlB,OAAO,CAAC,gBAAgB;IAmCxB,OAAO,CAAC,eAAe;IA8CvB,OAAO,CAAC,IAAI;IA+BZ,OAAO,CAAC,iBAAiB;CAS1B"}
1
+ {"version":3,"file":"gpu-scene.d.ts","sourceRoot":"","sources":["../src/gpu-scene.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,5 @@ export declare const GPU_BUFFER_USAGE_UNIFORM = 64;
6
6
  export declare const GPU_BUFFER_USAGE_STORAGE = 128;
7
7
  export declare const GPU_BUFFER_USAGE_INDIRECT = 256;
8
8
  export declare const GPU_BUFFER_USAGE_MAP_READ = 1;
9
- /** GPUBufferUsage.QUERY_RESOLVE, used by optional timestamp captures. */
10
9
  export declare const GPU_BUFFER_USAGE_QUERY_RESOLVE = 512;
11
10
  //# sourceMappingURL=gpu-usage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gpu-usage.d.ts","sourceRoot":"","sources":["../src/gpu-usage.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,uBAAuB,KAAO,CAAC;AAC5C,eAAO,MAAM,sBAAsB,KAAO,CAAC;AAC3C,eAAO,MAAM,yBAAyB,IAAO,CAAC;AAC9C,eAAO,MAAM,yBAAyB,IAAO,CAAC;AAC9C,eAAO,MAAM,wBAAwB,KAAO,CAAC;AAC7C,eAAO,MAAM,wBAAwB,MAAO,CAAC;AAC7C,eAAO,MAAM,yBAAyB,MAAQ,CAAC;AAC/C,eAAO,MAAM,yBAAyB,IAAO,CAAC;AAC9C,yEAAyE;AACzE,eAAO,MAAM,8BAA8B,MAAQ,CAAC"}
1
+ {"version":3,"file":"gpu-usage.d.ts","sourceRoot":"","sources":["../src/gpu-usage.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,uBAAuB,KAAO,CAAC;AAC5C,eAAO,MAAM,sBAAsB,KAAO,CAAC;AAC3C,eAAO,MAAM,yBAAyB,IAAO,CAAC;AAC9C,eAAO,MAAM,yBAAyB,IAAO,CAAC;AAC9C,eAAO,MAAM,wBAAwB,KAAO,CAAC;AAC7C,eAAO,MAAM,wBAAwB,MAAO,CAAC;AAC7C,eAAO,MAAM,yBAAyB,MAAQ,CAAC;AAC/C,eAAO,MAAM,yBAAyB,IAAO,CAAC;AAC9C,eAAO,MAAM,8BAA8B,MAAQ,CAAC"}
@@ -7,8 +7,8 @@ export declare function createHdrpClusterMembershipBindGroupLayoutDescriptor():
7
7
  * The persistent HDRP GPU buffers (plan D-1, BGL slot 3..6) plus the unified
8
8
  * BGL layout for group(2) (plan D-6, feat-20260609-hdrp-cluster-fragment-ggx M3).
9
9
  *
10
- * AC-11: light_data stride = `BYTES_PER_LIGHT_SLOT` = 64 (double-sided lock with
11
- * WGSL hdrp-cluster-forward.wgsl LightSlot).
10
+ * AC-11: light_data stride = `BYTES_PER_DIRECT_LIGHT_SLOT` = 80 (double-sided
11
+ * lock with WGSL hdrp-cluster-forward.wgsl DirectLightSlot).
12
12
  * AC-13: 4 distinct RHI Buffer handles, ready for slot-3..6 BGL binding.
13
13
  * AC-14: clusterUniform is a uniform buffer (not storage); runtime grid change
14
14
  * is a writeBuffer field update, not a PSO rebuild.
@@ -18,7 +18,7 @@ export declare function createHdrpClusterMembershipBindGroupLayoutDescriptor():
18
18
  export interface HdrpBuffers {
19
19
  /** Device identity that owns every handle in this bundle. */
20
20
  readonly device: RenderSystemRuntime['device'];
21
- /** light_data -- the full 256 x 64 B Standard light budget. */
21
+ /** light_data -- the full 256 x 80 B DirectLightSlot budget. */
22
22
  readonly lightDataBuffer: Buffer;
23
23
  readonly lightDataBytes: number;
24
24
  /** cluster_grid SSBO -- gridX*gridY*gridZ * 2 u32, BGL slot 4. */
@@ -1 +1 @@
1
- {"version":3,"file":"hdrp-buffers.d.ts","sourceRoot":"","sources":["../src/hdrp-buffers.ts"],"names":[],"mappings":"AAkCA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,yBAAyB,EAC9B,KAAK,MAAM,EACX,QAAQ,EAER,KAAK,WAAW,EACjB,MAAM,qBAAqB,CAAC;AAiB7B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAGnE,OAAO,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAC;AAEhE,6EAA6E;AAC7E,wBAAgB,oDAAoD,IAAI,yBAAyB,CA0BhG;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,WAAW;IAC1B,6DAA6D;IAC7D,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC/C,+DAA+D;IAC/D,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,kEAAkE;IAClE,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,gEAAgE;IAChE,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,+DAA+D;IAC/D,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,gFAAgF;IAChF,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,uFAAuF;IACvF,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,uCAAuC;IACvC,QAAQ,CAAC,sBAAsB,EAAE,eAAe,CAAC;CAClD;AAID;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,mBAAmB,EAC5B,IAAI,GAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAyB,GAC/D,WAAW,GAAG,IAAI,CA8HpB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAKnE;AA4BD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EACzC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,aAAa,GAAE,MAAU,EACzB,UAAU,GAAE,MAAU,GACrB,WAAW,CAgBb;AAED;;;;GAIG;AACH;;;;;;;;;;;;;;;;;GAiBG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,MAAM,eAAe,GACvB;IACE,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACvB,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC;CACvC,GACD;IAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAA;CAAE,CAAC;AAEhC,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,mBAAmB,EAC5B,WAAW,EAAE,WAAW,EACxB,iBAAiB,EAAE,MAAM,EACzB,WAAW,GAAE,eAAoC,GAChD,SAAS,GAAG,IAAI,CAmElB;AAED,mFAAmF;AACnF,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,mBAAmB,EAC5B,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,eAAe,EACvB,iBAAiB,EAAE,MAAM,EACzB,aAAa,EAAE,MAAM,EACrB,yBAAyB,EAAE,MAAM,EACjC,WAAW,GAAE,eAAoC,GAChD,SAAS,GAAG,IAAI,CA0ClB;AAED;;;;;;GAMG;AACH,wBAAgB,oCAAoC,CAClD,OAAO,EAAE,mBAAmB,EAC5B,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,eAAe,GACtB,SAAS,GAAG,IAAI,CA4BlB;AAED,yEAAyE;AACzE,OAAO,EAAE,QAAQ,IAAI,oBAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"hdrp-buffers.d.ts","sourceRoot":"","sources":["../src/hdrp-buffers.ts"],"names":[],"mappings":"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"}
@@ -36,9 +36,8 @@ export interface IblPipelineError {
36
36
  * Per-DeviceScope-generation IBL pipeline cache instance.
37
37
  *
38
38
  * M3.5 (round-2 t52): the 4 pipeline slots are mutable so createIblPipelines
39
- * can fill them after construction. The 4 textures + their views are also
40
- * cached here so runIblPrecompute targets are stable across calls
41
- * (idempotent).
39
+ * can fill them after construction. The output textures and views are
40
+ * promoted here only after a completed precompute submission.
42
41
  */
43
42
  export interface IblPipelineCache {
44
43
  /** Reusable generation-scoped kernel state; per-probe outputs stay elsewhere. */
@@ -154,7 +153,9 @@ export interface IblPrecomputeError {
154
153
  }
155
154
  /**
156
155
  * Execute the 4 IBL precompute passes (equirect-to-cube / irradiance /
157
- * prefilter / brdf-lut) in a single CommandEncoder and submit.
156
+ * prefilter / brdf-lut) as ordered, stage-bounded submissions. Outputs stay
157
+ * candidate-local until every queue completion fence and generation check
158
+ * pass.
158
159
  *
159
160
  * Counter invariant (AC-20, plan D-7 / N-3): the
160
161
  * `irradiance/prefilter/brdfLut BakeCount` counters are incremented
@@ -166,7 +167,7 @@ export interface IblPrecomputeError {
166
167
  * underlying device lacks queue.submit or one of the 4 pipelines was not
167
168
  * created (createIblPipelines must run first).
168
169
  */
169
- export declare function runIblPrecompute(opts: RunIblPrecomputeOptions): Result<{
170
+ export declare function runIblPrecompute(opts: RunIblPrecomputeOptions): Promise<Result<{
170
171
  submitted: boolean;
171
- }, IblPrecomputeError>;
172
+ }, IblPrecomputeError>>;
172
173
  //# sourceMappingURL=IblPipelineCache.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IblPipelineCache.d.ts","sourceRoot":"","sources":["../../src/ibl/IblPipelineCache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IblPipelineCache.d.ts","sourceRoot":"","sources":["../../src/ibl/IblPipelineCache.ts"],"names":[],"mappings":"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"}
@@ -102,7 +102,13 @@ export interface TransmissionBindGroupResources {
102
102
  readonly sampler: Sampler;
103
103
  readonly backdropView?: TextureView | null;
104
104
  }
105
- export declare function assembleMaterialWithSkylightEntries(materialEntries: readonly BindGroupEntry[], skylight: SkylightBindGroupResources, transmission?: TransmissionBindGroupResources | undefined): BindGroupEntry[];
105
+ /** Engine-owned texture injection resources derived from material parameters. */
106
+ export interface TextureInjectionResource {
107
+ readonly slot: number;
108
+ readonly sampler: Sampler;
109
+ readonly view: TextureView;
110
+ }
111
+ export declare function assembleMaterialWithSkylightEntries(materialEntries: readonly BindGroupEntry[], skylight: SkylightBindGroupResources, transmission?: TransmissionBindGroupResources | undefined, textureInjections?: readonly TextureInjectionResource[]): BindGroupEntry[];
106
112
  /**
107
113
  * Allocate the fallback Skylight resource bundle: 1x1 WHITE rgba16float
108
114
  * irradiance/prefilter texture_cube pair + 1x1 rg16float BRDF approximation
@@ -1 +1 @@
1
- {"version":3,"file":"skylight-bind-group.d.ts","sourceRoot":"","sources":["../../src/ibl/skylight-bind-group.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skylight-bind-group.d.ts","sourceRoot":"","sources":["../../src/ibl/skylight-bind-group.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -9,6 +9,8 @@ export * from './components/directional-light';
9
9
  export { Fog } from './components/fog';
10
10
  export { Instances, type InstancesData } from './components/instances';
11
11
  export { Layer } from './components/layer';
12
+ export * from './components/light-helpers';
13
+ export { LightProbe } from './components/light-probe';
12
14
  export { Lines } from './components/lines';
13
15
  export * from './components/mesh-filter';
14
16
  export * from './components/mesh-renderer';
@@ -17,6 +19,7 @@ export { PointLight } from './components/point-light';
17
19
  export { PointLightShadow } from './components/point-light-shadow';
18
20
  export { type PointShape, PointShapeValue, Points, pointShapeFromU32, } from './components/points';
19
21
  export { PostProcessParams } from './components/post-process-params';
22
+ export { RectAreaLight } from './components/rect-area-light';
20
23
  export { REFLECTION_PROBE_UPDATE_CONTINUOUS, REFLECTION_PROBE_UPDATE_ON_CHANGE, REFLECTION_PROBE_UPDATE_ONCE, ReflectionProbe, type ReflectionProbeData, type ReflectionProbeUpdateIntent, reflectionProbeUpdateIntentFromF32, reflectionProbeUpdateIntentToF32, } from './components/reflection-probe';
21
24
  export { SceneInstance } from './components/scene-instance';
22
25
  export { SKYBOX_MODE_CUBEMAP, SkyboxBackground, type SkyboxMode, } from './components/skybox-background';
@@ -33,8 +36,8 @@ export { resolveVisibility, type VisibilityResolution, type VisibilitySnapshot,
33
36
  export type { RenderFeatureLogicalTarget, RenderFeatureMaterialShaderBindingContract, RenderFeaturePassDeclaration, RenderFeaturePlan, RenderFeaturePlanContext, RenderFeatureResourceDeclaration, } from './features/plan';
34
37
  export type { RenderFeature, RenderFeatureCapabilityKey, RenderFeatureDiagnostics, RenderFeatureErrorDescriptor, RenderFeatureExtractContext, RenderFeatureHiddenEntityReport, RenderFeatureShaderModuleMode, RenderFeatureStatus, RenderFeatureWorldVisibilitySnapshot, } from './features/types';
35
38
  export { beginProbeIblUpdate, createIblKernelCache, createProbeIblOutput, type IblKernelCache, type ProbeIblOutput, type ProbeIblUpdate, publishProbeIblOutput, REFLECTION_PROBE_IBL_STAGES, type ReflectionProbeIblStage, resetIblKernelCaches, } from './ibl/kernel-cache';
36
- export type { BloomInspection, MotionBlurInspection, MotionBlurInspectionStatus, ReflectionProbeInspection, ReflectionProbeSelectionInspection, TransmissionInspection, } from './inspection-types';
37
- export { Materials, MaterialTransmissionContractError } from './materials';
39
+ export type { BloomInspection, LightInspection, LodOcclusionInspection, MotionBlurInspection, MotionBlurInspectionStatus, ReflectionFallbackFailureStage, ReflectionFallbackInspection, ReflectionFallbackReadbackReceipt, ReflectionFallbackReceipt, ReflectionFallbackRecoveryAction, ReflectionProbeInspection, ReflectionProbeSelectionInspection, TransmissionInspection, } from './inspection-types';
40
+ export { type MaterialColorInput3, type MaterialColorInput4, type MaterialColorTuple3, type MaterialColorTuple4, Materials, MaterialTransmissionContractError, srgb, } from './materials';
38
41
  export { type MeshMaterialBindingObservation, type MeshMaterialBindingPreparationFailure, type MeshMaterialBindingReadiness, type MeshMaterialBindingResidency, type MeshMaterialBindingSamplerObservation, type MeshMaterialBindingSummary, type MeshMaterialBindingTextureObservation, projectMeshMaterialBindingObservation, summarizeMeshMaterialBindings, } from './mesh-material-bindings';
39
42
  export type { StandardClusterTransportInspection, StandardLightingInspection, StandardNoLocalLightingInspection, } from './pipeline/standard-lighting/inspection';
40
43
  export { DEFAULT_STANDARD_PROFILE, type StandardVolumetricFogProfile, type StandardVolumetricFogQuality, } from './pipeline/standard-profile';
@@ -56,11 +59,19 @@ export type { PointsLinesInspection } from './points-lines/inspection';
56
59
  export type { GpuPassTimingCapability, GpuPassTimingEntry, GpuPassTimingError, GpuPassTimingErrorCode, GpuPassTimingFrame, GpuPassTimingMeasuredEntry, GpuPassTimingMeasurementSource, GpuPassTimingObservation, GpuPassTimingOptions, GpuPassTimingPassIdentity, GpuPassTimingReason, GpuPassTimingReasonCode, GpuPassTimingRef, GpuPassTimingUnmeasuredEntry, } from './record/gpu-pass-timing/index.js';
57
60
  export { advanceProbeFilter, boxProjectReflectionDirection, commitProbeFilterStep, createProbeFilterState, type ProbeFilterState, probeFilterIsSteady, } from './reflection/filter';
58
61
  export { buildReflectionProbeTable, type ReflectionProbeTable, type ReflectionProbeTableRow, reflectionProbeTableBytes, } from './reflection/gpu-table';
62
+ export { inspectReflectionFallback, type ReflectionFallbackFailureInput, } from './reflection/inspection';
59
63
  export { admitReflectionProbe, DEFAULT_REFLECTION_PROBE_LIMITS, estimateReflectionProbeBytes, type ReflectionProbeAdmission, type ReflectionProbeAdmissionLimits, type ReflectionProbeFact, type ReflectionProbeInput, ReflectionProbeProjection, type ReflectionProbeProjectionSnapshot, type ReflectionProbeSelection, type ReflectionProbeSelectionResult, type SkylightSelection, selectReflectionProbe, validateReflectionProbeInput, } from './reflection/projection';
60
64
  export type { CubeCameraSnapshot, FrameCamera, FrameEnvironment, FrameObservationRequest, FrameReceipt, FrameReceiptObservation, Renderer, RendererEvent, RendererOptions, RendererState, RenderFrameInput, RenderInspection, RenderProfile, RenderResult, RenderWorldLease, } from './render-contract';
61
65
  export { RENDER_PHASE_CATALOG } from './render-contract';
62
66
  export type { TemporalInspectionInput, TemporalInspectionStatus, } from './renderer-inspect';
67
+ export type { GpuFrameTiming, GpuFrameTimingProtocol, GpuFrameTimingRecord, GpuFrameTimingSample, GpuFrameTimingSummary, } from './scene/visibility/gpu-frame-timing';
68
+ export { createGpuFrameTiming, recordGpuFrameTiming, summarizeGpuFrameTiming, } from './scene/visibility/gpu-frame-timing';
69
+ export type { LodOcclusionDegradation, LodOcclusionFallback, LodOcclusionInspectionAction, LodOcclusionInspectionBudget, LodOcclusionInspectionError, LodOcclusionInspectionInput, LodOcclusionInspectionRow, LodOcclusionInspectionSample, LodOcclusionInspectionSubmit, LodOcclusionWorldAttribution, LodOcclusionWorldInspection, LodOcclusionWorldInspectionInput, } from './scene/visibility/inspection';
70
+ export { consumeLodOcclusionInspection, inspectLodOcclusion, LOD_OCCLUSION_INSPECTION_MAX_BYTES, LOD_OCCLUSION_INSPECTION_SCHEMA, serializeLodOcclusionInspection, } from './scene/visibility/inspection';
63
71
  export { SHADOW_ATLAS_DEFAULT_FACE_SIZE, SHADOW_ATLAS_DEFAULT_LAYERS, ShadowAtlas, } from './shadow-atlas';
72
+ export type { SsrAdmissionBudget, SsrAdmissionFailure, SsrAdmissionIdentity, SsrAdmissionInput, SsrAdmissionResult, SsrAdmissionWork, SsrDependenciesInspection, SsrFormatReceipt, SsrReflectionFallbackReceipt, SsrTemporalReceipt, } from './ssr/admission';
73
+ export { admitSsrM0, projectSsrDependencies, resolveSsrAdmissionGeneration, SSR_FORMAT_PROFILE, SSR_FORMAT_STAGES, zeroSsrAdmissionWork, } from './ssr/admission';
74
+ export { composeSsrReflection, type SsrCompositionInput, type SsrCompositionInputError, type SsrCompositionResult, type SsrReflectionColor, } from './ssr/composition';
64
75
  export type { RenderTarget, RenderTargetAdmissionLimits, RenderTargetDepthFormat, RenderTargetDescriptor, RenderTargetFormat, RenderTargetMipLevels, RenderTargetReadbackData, RenderTargetReadbackRequest, RenderTargetReadbackTicket, RenderTargetSampleCount, RenderTargetShape, RenderTargetTextureAspect, RenderTargetTextureSource, RenderTargetTextureSourceOptions, } from './targets/contracts';
65
76
  export type { TemporalInspection, TemporalResourceInspection } from './temporal/inspection';
66
77
  export { SCENE_DATA_TEMPORAL_V1_DESCRIPTOR, SCENE_DATA_TEMPORAL_V1_SCHEMA, type SceneDataLane, type SceneDataSchemaId, type SceneDataTarget, type SceneDataTemporalV1Descriptor, } from './temporal/scene-data';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -1,8 +1,10 @@
1
- import { Atmosphere, Camera, DirectionalLight, Instances, Layer, MeshFilter, MeshRenderer, PointLight, PointLightShadow, Points, Lines, PostProcessParams, SceneInstance, SkyboxBackground, Skylight, SortKey, SpotLight, Visibility } from './chunk-FS2KNUQH.mjs';
2
- export { ANTIALIAS_FXAA, ANTIALIAS_MSAA, ANTIALIAS_NONE, ANTIALIAS_TAA, Atmosphere, BLOOM_DISABLED, BLOOM_ENABLED, CAMERA_PROJECTION_ORTHOGRAPHIC, CAMERA_PROJECTION_PERSPECTIVE, CUBE_CAMERA_FACE_ORDER, CUBE_CAMERA_UPDATE_CONTINUOUS, CUBE_CAMERA_UPDATE_ONCE, CUBE_CAMERA_UPDATE_ON_DEMAND, Camera, CubeCamera, DEFAULT_REFLECTION_PROBE_LIMITS, DirectionalLight, DirectionalShadowFilterValue, Fog, Instances, Layer, Lines, MeshFilter, MeshRenderer, MotionBlur, PointLight, PointLightShadow, PointShapeValue, Points, PostProcessParams, REFLECTION_PROBE_UPDATE_CONTINUOUS, REFLECTION_PROBE_UPDATE_ONCE, REFLECTION_PROBE_UPDATE_ON_CHANGE, ReflectionProbe, ReflectionProbeProjection, SKYBOX_MODE_CUBEMAP, SceneInstance, SkyboxBackground, Skylight, SortKey, SpotLight, TONEMAP_ACES_FILMIC, TONEMAP_AGX, TONEMAP_CINEON, TONEMAP_LINEAR, TONEMAP_NEUTRAL, TONEMAP_NONE, TONEMAP_REINHARD, TONEMAP_REINHARD_EXTENDED, Visibility, VisibilityStateValue, VolumetricFog, admitPointsLines, admitReflectionProbe, advanceProbeFilter, boxProjectReflectionDirection, buildCubeCameraFaceViews, buildReflectionProbeTable, cameraProjectionFromF32, commitProbeFilterStep, createProbeFilterState, cubeCameraUpdateIntentFromF32, cubeCameraUpdateIntentToF32, directionalShadowQualityFromF32, estimateReflectionProbeBytes, extractVolumetricFog, hasVolumetricFogCapability, inspectPointShadow, inspectVolumetricFog, orthographic, perspective, pointShapeFromU32, probeFilterIsSteady, projectMeshMaterialBindingObservation, reflectionProbeTableBytes, reflectionProbeUpdateIntentFromF32, reflectionProbeUpdateIntentToF32, resolveIntegratedVolumeConsumer, resolveSelectedVolumetricLight, resolveVisibility, resolveVolumetricFogLightPair, selectReflectionProbe, summarizeMeshMaterialBindings, validateReflectionProbeInput, validateVolumetricFog, visibilityStateFromU32 } from './chunk-FS2KNUQH.mjs';
1
+ export { DEFAULT_REFLECTION_PROBE_LIMITS, LOD_OCCLUSION_INSPECTION_MAX_BYTES, LOD_OCCLUSION_INSPECTION_SCHEMA, ReflectionProbeProjection, SSR_FORMAT_PROFILE, SSR_FORMAT_STAGES, admitPointsLines, admitReflectionProbe, admitSsrM0, advanceProbeFilter, boxProjectReflectionDirection, buildCubeCameraFaceViews, buildReflectionProbeTable, commitProbeFilterStep, consumeLodOcclusionInspection, createProbeFilterState, estimateReflectionProbeBytes, inspectLodOcclusion, inspectPointShadow, inspectReflectionFallback, inspectVolumetricFog, probeFilterIsSteady, projectSsrDependencies, reflectionProbeTableBytes, resolveSsrAdmissionGeneration, selectReflectionProbe, serializeLodOcclusionInspection, validateReflectionProbeInput, zeroSsrAdmissionWork } from './chunk-UQYS7FRM.mjs';
2
+ import { Atmosphere, Camera, DirectionalLight, Instances, Layer, LightProbe, MeshFilter, MeshRenderer, PointLight, PointLightShadow, Points, Lines, PostProcessParams, RectAreaLight, SceneInstance, SkyboxBackground, Skylight, SortKey, SpotLight, Visibility } from './chunk-Q752SHI5.mjs';
3
+ export { ANTIALIAS_FXAA, ANTIALIAS_MSAA, ANTIALIAS_NONE, ANTIALIAS_TAA, Atmosphere, BLOOM_DISABLED, BLOOM_ENABLED, CAMERA_PROJECTION_ORTHOGRAPHIC, CAMERA_PROJECTION_PERSPECTIVE, CUBE_CAMERA_FACE_ORDER, CUBE_CAMERA_UPDATE_CONTINUOUS, CUBE_CAMERA_UPDATE_ONCE, CUBE_CAMERA_UPDATE_ON_DEMAND, Camera, CubeCamera, DirectionalLight, DirectionalShadowFilterValue, Fog, Instances, Layer, LightProbe, Lines, MeshFilter, MeshRenderer, MotionBlur, PointLight, PointLightShadow, PointShapeValue, Points, PostProcessParams, REFLECTION_PROBE_UPDATE_CONTINUOUS, REFLECTION_PROBE_UPDATE_ONCE, REFLECTION_PROBE_UPDATE_ON_CHANGE, RectAreaLight, ReflectionProbe, SKYBOX_MODE_CUBEMAP, SceneInstance, SkyboxBackground, Skylight, SortKey, SpotLight, TONEMAP_ACES_FILMIC, TONEMAP_AGX, TONEMAP_CINEON, TONEMAP_LINEAR, TONEMAP_NEUTRAL, TONEMAP_NONE, TONEMAP_REINHARD, TONEMAP_REINHARD_EXTENDED, Visibility, VisibilityStateValue, VolumetricFog, cameraProjectionFromF32, computeInvRangeSquared, cubeCameraUpdateIntentFromF32, cubeCameraUpdateIntentToF32, degToCos, directionalShadowQualityFromF32, extractVolumetricFog, hasVolumetricFogCapability, orthographic, perspective, pointShapeFromU32, projectMeshMaterialBindingObservation, reflectionProbeUpdateIntentFromF32, reflectionProbeUpdateIntentToF32, resolveIntegratedVolumeConsumer, resolveSelectedVolumetricLight, resolveVisibility, resolveVolumetricFogLightPair, summarizeMeshMaterialBindings, validateDirection, validateDirectionalLightData, validateLightProbeData, validatePointLightData, validatePointLightShadowData, validateRectAreaLightData, validateSpotLightData, validateVolumetricFog, visibilityStateFromU32 } from './chunk-Q752SHI5.mjs';
3
4
  import { SpriteAnimation, SpriteInstances, SpriteRegionOverride, TileLayer, Tilemap } from './chunk-JDWARUOI.mjs';
4
- export { AtmosphereInvalidParameterError, DEFAULT_STANDARD_PROFILE, EnvironmentGenerationFailedError, EnvironmentSourceConflictError, FogCardinalityError, OwnerStageFailedError, REFLECTION_PROBE_IBL_STAGES, RENDER_PHASE_CATALOG, SCENE_DATA_TEMPORAL_V1_DESCRIPTOR, SCENE_DATA_TEMPORAL_V1_SCHEMA, SHADOW_ATLAS_DEFAULT_FACE_SIZE, SHADOW_ATLAS_DEFAULT_LAYERS, SceneDataUnavailableError, ShadowAtlas, TaaCapsInsufficientError, beginProbeIblUpdate, createIblKernelCache, createProbeIblOutput, createSceneDataCatalog, publishProbeIblOutput, resetIblKernelCaches } from './chunk-6OPXDQ2E.mjs';
5
- export { MaterialTransmissionContractError, Materials } from './chunk-VFPLTKCU.mjs';
5
+ export { DEFAULT_STANDARD_PROFILE, REFLECTION_PROBE_IBL_STAGES, SCENE_DATA_TEMPORAL_V1_DESCRIPTOR, SCENE_DATA_TEMPORAL_V1_SCHEMA, beginProbeIblUpdate, createIblKernelCache, createProbeIblOutput, createSceneDataCatalog, publishProbeIblOutput, resetIblKernelCaches } from './chunk-TFH5I7JJ.mjs';
6
+ export { MaterialTransmissionContractError, Materials, srgb } from './chunk-YKB5DQV7.mjs';
7
+ export { AtmosphereInvalidParameterError, EnvironmentGenerationFailedError, EnvironmentSourceConflictError, FogCardinalityError, OwnerStageFailedError, RENDER_PHASE_CATALOG, SHADOW_ATLAS_DEFAULT_FACE_SIZE, SHADOW_ATLAS_DEFAULT_LAYERS, SceneDataUnavailableError, ShadowAtlas, TaaCapsInsufficientError } from './chunk-RR5L4SRS.mjs';
6
8
  import { validateCookedMaterialRecord } from '@forgeax/engine-pack';
7
9
  import { ok, err, MATERIAL_TEXTURE_SLOTS } from '@forgeax/engine-types';
8
10
 
@@ -129,6 +131,7 @@ var RENDER_COMPONENTS = [
129
131
  DirectionalLight,
130
132
  Instances,
131
133
  Layer,
134
+ LightProbe,
132
135
  MeshFilter,
133
136
  MeshRenderer,
134
137
  PointLight,
@@ -136,6 +139,7 @@ var RENDER_COMPONENTS = [
136
139
  Points,
137
140
  Lines,
138
141
  PostProcessParams,
142
+ RectAreaLight,
139
143
  SceneInstance,
140
144
  SkyboxBackground,
141
145
  Skylight,
@@ -166,6 +170,87 @@ function renderComponentsPlugin() {
166
170
  };
167
171
  }
168
172
 
169
- export { materialContribution, renderComponentsPlugin, renderPipelineContribution, samplerContribution };
173
+ // src/scene/visibility/gpu-frame-timing.ts
174
+ var PROTOCOL = Object.freeze({
175
+ firstMarker: "frame.first-pass",
176
+ terminalMarker: "occlusion.resolve-copy",
177
+ sameGraph: true,
178
+ sameSubmit: true
179
+ });
180
+ function createGpuFrameTiming(input) {
181
+ return { ...input, protocol: PROTOCOL, aborted: false, submitId: void 0 };
182
+ }
183
+ function recordGpuFrameTiming(timing, record2) {
184
+ if (!record2.submitted) {
185
+ timing.aborted = true;
186
+ throw new Error("GPU frame timing requires a submitted frame");
187
+ }
188
+ if (timing.aborted) throw new Error("GPU frame timing cannot cross a failed submit");
189
+ if (timing.submitId !== void 0 && timing.submitId !== record2.submitId) {
190
+ throw new Error("GPU frame timing markers must share one submit");
191
+ }
192
+ if (!Number.isFinite(record2.firstPassTimestampNs) || !Number.isFinite(record2.occlusionResolveTimestampNs)) {
193
+ throw new Error("GPU frame timing requires finite timestamps");
194
+ }
195
+ if (record2.occlusionResolveTimestampNs < record2.firstPassTimestampNs) {
196
+ throw new Error("GPU frame timing terminal marker precedes first marker");
197
+ }
198
+ timing.submitId = record2.submitId;
199
+ return Object.freeze({
200
+ frameId: timing.frameId,
201
+ deviceGeneration: timing.deviceGeneration,
202
+ durationUs: (record2.occlusionResolveTimestampNs - record2.firstPassTimestampNs) / 1e3,
203
+ protocol: PROTOCOL,
204
+ graphGeneration: record2.graphGeneration,
205
+ submitId: record2.submitId
206
+ });
207
+ }
208
+ function nearestRank(values, percentile) {
209
+ const sorted = [...values].sort((left, right) => left - right);
210
+ return sorted[Math.max(0, Math.ceil(percentile * sorted.length) - 1)] ?? 0;
211
+ }
212
+ function summarizeGpuFrameTiming(samples) {
213
+ const values = samples.map((sample) => sample.durationUs);
214
+ return Object.freeze({
215
+ medianUs: nearestRank(values, 0.5),
216
+ p95Us: nearestRank(values, 0.95),
217
+ samples: values.length
218
+ });
219
+ }
220
+ function finiteColor(value) {
221
+ return value.length === 3 && value.every(Number.isFinite);
222
+ }
223
+ function invalid2(field, expected) {
224
+ return err({
225
+ code: "ssr-composition-input-invalid",
226
+ expected,
227
+ hint: "preserve linear HDR and the bounded SSR confidence before composing",
228
+ detail: Object.freeze({ field })
229
+ });
230
+ }
231
+ function composeSsrReflection(input) {
232
+ if (!Number.isFinite(input.c) || input.c < 0 || input.c > 1) {
233
+ return invalid2("c", "a finite confidence in the inclusive range 0..1");
234
+ }
235
+ for (const [field, value] of [
236
+ ["baseSpecular", input.baseSpecular],
237
+ ["screenSpecular", input.screenSpecular],
238
+ ["fallbackSpecular", input.fallbackSpecular]
239
+ ]) {
240
+ if (!finiteColor(value)) {
241
+ return invalid2(field, "three finite linear HDR RGB channels");
242
+ }
243
+ }
244
+ const c = input.c;
245
+ return ok(
246
+ Object.freeze([
247
+ input.baseSpecular[0] + c * (input.screenSpecular[0] - input.fallbackSpecular[0]),
248
+ input.baseSpecular[1] + c * (input.screenSpecular[1] - input.fallbackSpecular[1]),
249
+ input.baseSpecular[2] + c * (input.screenSpecular[2] - input.fallbackSpecular[2])
250
+ ])
251
+ );
252
+ }
253
+
254
+ export { composeSsrReflection, createGpuFrameTiming, materialContribution, recordGpuFrameTiming, renderComponentsPlugin, renderPipelineContribution, samplerContribution, summarizeGpuFrameTiming };
170
255
  //# sourceMappingURL=index.mjs.map
171
256
  //# sourceMappingURL=index.mjs.map