@forgeax/engine-render 0.1.33 → 0.1.34

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 (518) hide show
  1. package/README.md +1010 -124
  2. package/dist/assembly/backend-contract.d.ts +2 -0
  3. package/dist/assembly/backend-contract.d.ts.map +1 -1
  4. package/dist/assembly/barrel-distortion-inspection.d.ts +3 -0
  5. package/dist/assembly/barrel-distortion-inspection.d.ts.map +1 -0
  6. package/dist/assembly/canvas-draw-guard.d.ts +3 -0
  7. package/dist/assembly/canvas-draw-guard.d.ts.map +1 -0
  8. package/dist/assembly/cloud-shadow-entry.d.ts +4 -0
  9. package/dist/assembly/cloud-shadow-entry.d.ts.map +1 -0
  10. package/dist/assembly/dynamic-geometry-host.d.ts +4 -1
  11. package/dist/assembly/dynamic-geometry-host.d.ts.map +1 -1
  12. package/dist/assembly/dynamic-geometry-runtime.d.ts +1 -1
  13. package/dist/assembly/dynamic-geometry-runtime.d.ts.map +1 -1
  14. package/dist/assembly/factory.d.ts +1 -1
  15. package/dist/assembly/factory.d.ts.map +1 -1
  16. package/dist/assembly/host-contract.d.ts +3 -3
  17. package/dist/assembly/host-contract.d.ts.map +1 -1
  18. package/dist/assembly/material/assembly.d.ts.map +1 -1
  19. package/dist/assembly/material/pipeline-helpers.d.ts +5 -0
  20. package/dist/assembly/material/pipeline-helpers.d.ts.map +1 -1
  21. package/dist/assembly/material-shader-policy.d.ts +16 -2
  22. package/dist/assembly/material-shader-policy.d.ts.map +1 -1
  23. package/dist/assembly/material-shader-prewarm.d.ts.map +1 -1
  24. package/dist/assembly/recovery/device-loss-fanout.d.ts.map +1 -1
  25. package/dist/assembly/recovery/renderer-recover.d.ts +2 -0
  26. package/dist/assembly/recovery/renderer-recover.d.ts.map +1 -1
  27. package/dist/assembly/render-feature-post-processes.d.ts +6 -0
  28. package/dist/assembly/render-feature-post-processes.d.ts.map +1 -0
  29. package/dist/assembly/renderer-facade.d.ts.map +1 -1
  30. package/dist/assembly/renderer-feature-inspection.d.ts +1 -1
  31. package/dist/assembly/renderer-feature-inspection.d.ts.map +1 -1
  32. package/dist/assembly/renderer-frame-transaction.d.ts +12 -0
  33. package/dist/assembly/renderer-frame-transaction.d.ts.map +1 -1
  34. package/dist/assembly/renderer-inspection.d.ts +11 -0
  35. package/dist/assembly/renderer-inspection.d.ts.map +1 -1
  36. package/dist/assembly/webgpu-pbr-ready.d.ts +1 -0
  37. package/dist/assembly/webgpu-pbr-ready.d.ts.map +1 -1
  38. package/dist/assembly/webgpu-ready-per-pass.d.ts +39 -0
  39. package/dist/assembly/webgpu-ready-per-pass.d.ts.map +1 -0
  40. package/dist/assembly/webgpu-ready.d.ts +1 -1
  41. package/dist/assembly/webgpu-ready.d.ts.map +1 -1
  42. package/dist/assembly/webgpu-renderer-bootstrap.d.ts.map +1 -1
  43. package/dist/assembly/webgpu-renderer-observation-owner.d.ts +35 -0
  44. package/dist/assembly/webgpu-renderer-observation-owner.d.ts.map +1 -0
  45. package/dist/assembly/webgpu-renderer.d.ts +1 -1
  46. package/dist/assembly/webgpu-renderer.d.ts.map +1 -1
  47. package/dist/authoring.mjs +1 -1
  48. package/dist/barrel-distortion.d.ts +47 -0
  49. package/dist/barrel-distortion.d.ts.map +1 -0
  50. package/dist/{chunk-PA5DRJNI.mjs → chunk-ELJFJ2BU.mjs} +2 -2
  51. package/dist/chunk-ELJFJ2BU.mjs.map +1 -0
  52. package/dist/{chunk-ZDQWGQW7.mjs → chunk-HEB564WF.mjs} +4 -4
  53. package/dist/{chunk-ZDQWGQW7.mjs.map → chunk-HEB564WF.mjs.map} +1 -1
  54. package/dist/{chunk-VOZWDM3L.mjs → chunk-MKDIT2EM.mjs} +1307 -188
  55. package/dist/chunk-MKDIT2EM.mjs.map +1 -0
  56. package/dist/{chunk-LEAXOMYJ.mjs → chunk-OCDLEI6I.mjs} +3 -3
  57. package/dist/{chunk-LEAXOMYJ.mjs.map → chunk-OCDLEI6I.mjs.map} +1 -1
  58. package/dist/chunk-ODZWR6JQ.mjs +4927 -0
  59. package/dist/chunk-ODZWR6JQ.mjs.map +1 -0
  60. package/dist/{chunk-3RTCJTH4.mjs → chunk-SHFUFJ5N.mjs} +184 -13
  61. package/dist/chunk-SHFUFJ5N.mjs.map +1 -0
  62. package/dist/{chunk-OO3DRYK7.mjs → chunk-UI5SFODX.mjs} +176 -96
  63. package/dist/chunk-UI5SFODX.mjs.map +1 -0
  64. package/dist/{chunk-PLAXOOX5.mjs → chunk-UINHLCZA.mjs} +561 -79
  65. package/dist/chunk-UINHLCZA.mjs.map +1 -0
  66. package/dist/{chunk-NB2S7ZRX.mjs → chunk-WEX45HKH.mjs} +127 -386
  67. package/dist/chunk-WEX45HKH.mjs.map +1 -0
  68. package/dist/cloud/density.d.ts +55 -0
  69. package/dist/cloud/density.d.ts.map +1 -0
  70. package/dist/cloud/extract.d.ts +25 -0
  71. package/dist/cloud/extract.d.ts.map +1 -0
  72. package/dist/cloud/feature.d.ts +57 -0
  73. package/dist/cloud/feature.d.ts.map +1 -0
  74. package/dist/cloud/frame-context.d.ts +8 -0
  75. package/dist/cloud/frame-context.d.ts.map +1 -0
  76. package/dist/cloud/inspection.d.ts +59 -0
  77. package/dist/cloud/inspection.d.ts.map +1 -0
  78. package/dist/cloud/optics.d.ts +56 -0
  79. package/dist/cloud/optics.d.ts.map +1 -0
  80. package/dist/cloud/parameters.d.ts +73 -0
  81. package/dist/cloud/parameters.d.ts.map +1 -0
  82. package/dist/cloud/resources.d.ts +60 -0
  83. package/dist/cloud/resources.d.ts.map +1 -0
  84. package/dist/cloud/shadow.d.ts +42 -0
  85. package/dist/cloud/shadow.d.ts.map +1 -0
  86. package/dist/cloud/temporal.d.ts +74 -0
  87. package/dist/cloud/temporal.d.ts.map +1 -0
  88. package/dist/components/barrel-distortion.d.ts +13 -0
  89. package/dist/components/barrel-distortion.d.ts.map +1 -0
  90. package/dist/components/cloud-layer.d.ts +29 -0
  91. package/dist/components/cloud-layer.d.ts.map +1 -0
  92. package/dist/components/index.d.ts +2 -0
  93. package/dist/components/index.d.ts.map +1 -1
  94. package/dist/components/instances.d.ts +20 -6
  95. package/dist/components/instances.d.ts.map +1 -1
  96. package/dist/construct-renderer.d.ts +1 -1
  97. package/dist/construct-renderer.d.ts.map +1 -1
  98. package/dist/construct-renderer.mjs +6759 -2875
  99. package/dist/construct-renderer.mjs.map +1 -1
  100. package/dist/dynamic-geometry.d.ts +5 -1
  101. package/dist/dynamic-geometry.d.ts.map +1 -1
  102. package/dist/errors/cloud.d.ts +59 -0
  103. package/dist/errors/cloud.d.ts.map +1 -0
  104. package/dist/errors/render.d.ts +18 -4
  105. package/dist/errors/render.d.ts.map +1 -1
  106. package/dist/examples/single-layer-medium-surface.d.ts +47 -0
  107. package/dist/examples/single-layer-medium-surface.d.ts.map +1 -0
  108. package/dist/extract/camera.d.ts.map +1 -1
  109. package/dist/extract/contracts.d.ts +5 -1
  110. package/dist/extract/contracts.d.ts.map +1 -1
  111. package/dist/features/barrel-distortion.d.ts +29 -0
  112. package/dist/features/barrel-distortion.d.ts.map +1 -0
  113. package/dist/features/error-reporting.d.ts +6 -2
  114. package/dist/features/error-reporting.d.ts.map +1 -1
  115. package/dist/features/host.d.ts +10 -0
  116. package/dist/features/host.d.ts.map +1 -1
  117. package/dist/features/plan.d.ts +8 -0
  118. package/dist/features/plan.d.ts.map +1 -1
  119. package/dist/features/render-graph-contribution.d.ts +5 -0
  120. package/dist/features/render-graph-contribution.d.ts.map +1 -1
  121. package/dist/features/render-graph-raster.d.ts +1 -0
  122. package/dist/features/render-graph-raster.d.ts.map +1 -1
  123. package/dist/features/targets.d.ts +2 -0
  124. package/dist/features/targets.d.ts.map +1 -1
  125. package/dist/features/types.d.ts +44 -0
  126. package/dist/features/types.d.ts.map +1 -1
  127. package/dist/fullscreen-post-process-pass.d.ts +15 -7
  128. package/dist/fullscreen-post-process-pass.d.ts.map +1 -1
  129. package/dist/gpu-dirty-ranges.d.ts +11 -0
  130. package/dist/gpu-dirty-ranges.d.ts.map +1 -0
  131. package/dist/gpu-driven/batch-topology.d.ts +17 -0
  132. package/dist/gpu-driven/batch-topology.d.ts.map +1 -1
  133. package/dist/gpu-driven/material-artifacts.d.ts +6 -0
  134. package/dist/gpu-driven/material-artifacts.d.ts.map +1 -1
  135. package/dist/gpu-driven/prepared-draw.d.ts.map +1 -1
  136. package/dist/gpu-driven/production-raster-material.d.ts +178 -0
  137. package/dist/gpu-driven/production-raster-material.d.ts.map +1 -0
  138. package/dist/gpu-driven/production-raster.d.ts +47 -3
  139. package/dist/gpu-driven/production-raster.d.ts.map +1 -1
  140. package/dist/gpu-driven/resource-allocation.d.ts +31 -0
  141. package/dist/gpu-driven/resource-allocation.d.ts.map +1 -0
  142. package/dist/gpu-driven/shadow-ownership.d.ts +14 -0
  143. package/dist/gpu-driven/shadow-ownership.d.ts.map +1 -0
  144. package/dist/gpu-driven/view-gpu.d.ts +26 -2
  145. package/dist/gpu-driven/view-gpu.d.ts.map +1 -1
  146. package/dist/gpu-scene.d.ts +5 -0
  147. package/dist/gpu-scene.d.ts.map +1 -1
  148. package/dist/hdrp-buffers.d.ts +2 -2
  149. package/dist/hdrp-buffers.d.ts.map +1 -1
  150. package/dist/ibl/skylight-bind-group.d.ts +10 -1
  151. package/dist/ibl/skylight-bind-group.d.ts.map +1 -1
  152. package/dist/index.d.ts +27 -7
  153. package/dist/index.d.ts.map +1 -1
  154. package/dist/index.mjs +258 -8
  155. package/dist/index.mjs.map +1 -1
  156. package/dist/inspection-types.d.ts +135 -1
  157. package/dist/inspection-types.d.ts.map +1 -1
  158. package/dist/instance-buffer-cache.d.ts +4 -4
  159. package/dist/instance-buffer-cache.d.ts.map +1 -1
  160. package/dist/instances.d.ts +48 -100
  161. package/dist/instances.d.ts.map +1 -1
  162. package/dist/internal.mjs +7 -7
  163. package/dist/pbr-pipeline.d.ts +19 -1
  164. package/dist/pbr-pipeline.d.ts.map +1 -1
  165. package/dist/pipeline/single-layer-medium-passes.d.ts +73 -0
  166. package/dist/pipeline/single-layer-medium-passes.d.ts.map +1 -0
  167. package/dist/pipeline/standard-forward-lane.d.ts.map +1 -1
  168. package/dist/pipeline/standard-output/graph.d.ts.map +1 -1
  169. package/dist/pipeline/standard-output/types.d.ts +4 -2
  170. package/dist/pipeline/standard-output/types.d.ts.map +1 -1
  171. package/dist/pipeline/standard-pipeline.d.ts.map +1 -1
  172. package/dist/pipeline/standard-post.d.ts.map +1 -1
  173. package/dist/pipeline-builder.d.ts +1 -1
  174. package/dist/pipeline-builder.d.ts.map +1 -1
  175. package/dist/plugin.d.ts.map +1 -1
  176. package/dist/prepare/prepared-graphics-resolver.d.ts +2 -0
  177. package/dist/prepare/prepared-graphics-resolver.d.ts.map +1 -1
  178. package/dist/record/barrel-distortion-frame.d.ts +15 -0
  179. package/dist/record/barrel-distortion-frame.d.ts.map +1 -0
  180. package/dist/record/dynamic-geometry-consumption.d.ts +10 -2
  181. package/dist/record/dynamic-geometry-consumption.d.ts.map +1 -1
  182. package/dist/record/fold-buckets.d.ts +95 -0
  183. package/dist/record/fold-buckets.d.ts.map +1 -0
  184. package/dist/record/fold-instance-buffer.d.ts +6 -0
  185. package/dist/record/fold-instance-buffer.d.ts.map +1 -0
  186. package/dist/record/frame-lighting.d.ts +1 -0
  187. package/dist/record/frame-lighting.d.ts.map +1 -1
  188. package/dist/record/frame-snapshot.d.ts +37 -3
  189. package/dist/record/frame-snapshot.d.ts.map +1 -1
  190. package/dist/record/frame.d.ts +10 -61
  191. package/dist/record/frame.d.ts.map +1 -1
  192. package/dist/record/gpu-draw-receipts.d.ts +11 -0
  193. package/dist/record/gpu-draw-receipts.d.ts.map +1 -0
  194. package/dist/record/gpu-timing.d.ts +8 -0
  195. package/dist/record/gpu-timing.d.ts.map +1 -1
  196. package/dist/record/main-pass-geometry.d.ts +21 -5
  197. package/dist/record/main-pass-geometry.d.ts.map +1 -1
  198. package/dist/record/main-pass-material.d.ts +7 -1
  199. package/dist/record/main-pass-material.d.ts.map +1 -1
  200. package/dist/record/main-pass-sprite-draws.d.ts.map +1 -1
  201. package/dist/record/main-pass.d.ts +13 -2
  202. package/dist/record/main-pass.d.ts.map +1 -1
  203. package/dist/record/motion-blur-receipt.d.ts +11 -0
  204. package/dist/record/motion-blur-receipt.d.ts.map +1 -0
  205. package/dist/record/probe-blend-buffer.d.ts +16 -0
  206. package/dist/record/probe-blend-buffer.d.ts.map +1 -0
  207. package/dist/record/recovery-pipeline.d.ts.map +1 -1
  208. package/dist/record/render-context.d.ts +22 -3
  209. package/dist/record/render-context.d.ts.map +1 -1
  210. package/dist/record/shadow-pass.d.ts +2 -0
  211. package/dist/record/shadow-pass.d.ts.map +1 -1
  212. package/dist/record/skybox-post-pass.d.ts +1 -1
  213. package/dist/record/skybox-post-pass.d.ts.map +1 -1
  214. package/dist/record/typed-frame-graph.d.ts +22 -2
  215. package/dist/record/typed-frame-graph.d.ts.map +1 -1
  216. package/dist/record/view-ubo.d.ts +11 -3
  217. package/dist/record/view-ubo.d.ts.map +1 -1
  218. package/dist/record/volume-params.d.ts +9 -0
  219. package/dist/record/volume-params.d.ts.map +1 -0
  220. package/dist/recovery/render-system-candidate.d.ts +10 -0
  221. package/dist/recovery/render-system-candidate.d.ts.map +1 -1
  222. package/dist/reflection/record-owner.d.ts.map +1 -1
  223. package/dist/render-contract.d.ts +42 -4
  224. package/dist/render-contract.d.ts.map +1 -1
  225. package/dist/render-graph-primitives.d.ts.map +1 -1
  226. package/dist/render-pipeline.d.ts +103 -2
  227. package/dist/render-pipeline.d.ts.map +1 -1
  228. package/dist/render-system-extract-tail.d.ts +3 -2
  229. package/dist/render-system-extract-tail.d.ts.map +1 -1
  230. package/dist/render-system-extract.d.ts +16 -9
  231. package/dist/render-system-extract.d.ts.map +1 -1
  232. package/dist/render-system-presentation.d.ts +23 -0
  233. package/dist/render-system-presentation.d.ts.map +1 -0
  234. package/dist/render-system-producer-roots.d.ts +10 -0
  235. package/dist/render-system-producer-roots.d.ts.map +1 -0
  236. package/dist/render-system-residency.d.ts +12 -0
  237. package/dist/render-system-residency.d.ts.map +1 -0
  238. package/dist/render-system.d.ts +19 -14
  239. package/dist/render-system.d.ts.map +1 -1
  240. package/dist/scene/probe-blend.d.ts +27 -0
  241. package/dist/scene/probe-blend.d.ts.map +1 -1
  242. package/dist/scene/render-scene.d.ts +12 -5
  243. package/dist/scene/render-scene.d.ts.map +1 -1
  244. package/dist/ssao-buffers.d.ts +9 -0
  245. package/dist/ssao-buffers.d.ts.map +1 -1
  246. package/dist/surface/dynamic-input.d.ts +133 -0
  247. package/dist/surface/dynamic-input.d.ts.map +1 -0
  248. package/dist/surface/gpu-driven.d.ts +41 -0
  249. package/dist/surface/gpu-driven.d.ts.map +1 -0
  250. package/dist/surface/submission-observation.d.ts +136 -0
  251. package/dist/surface/submission-observation.d.ts.map +1 -0
  252. package/dist/systems/skin-palette-allocator.d.ts.map +1 -1
  253. package/dist/temporal/gpu.d.ts +13 -1
  254. package/dist/temporal/gpu.d.ts.map +1 -1
  255. package/dist/temporal/index.mjs +5 -5
  256. package/dist/temporal/inspection.d.ts.map +1 -1
  257. package/dist/temporal/standard-scene-data.d.ts.map +1 -1
  258. package/dist/temporal/target-coverage-attachment.d.ts.map +1 -1
  259. package/dist/transmission/single-layer-medium.d.ts +89 -0
  260. package/dist/transmission/single-layer-medium.d.ts.map +1 -0
  261. package/dist/typed-render-graph-primitives.d.ts +14 -2
  262. package/dist/typed-render-graph-primitives.d.ts.map +1 -1
  263. package/dist/volume/component.d.ts +9 -4
  264. package/dist/volume/component.d.ts.map +1 -1
  265. package/dist/volume/extract.d.ts +1 -1
  266. package/dist/volume/extract.d.ts.map +1 -1
  267. package/dist/volume/inspection.d.ts +2 -0
  268. package/dist/volume/inspection.d.ts.map +1 -1
  269. package/dist/volume/passes.d.ts +4 -1
  270. package/dist/volume/passes.d.ts.map +1 -1
  271. package/dist/volume/resources.d.ts.map +1 -1
  272. package/package.json +22 -21
  273. package/src/__tests__/atmosphere-daylight.dawn.test.ts +72 -0
  274. package/src/__tests__/barrel-distortion-lkg.integration.test.ts +353 -0
  275. package/src/__tests__/barrel-distortion.dawn.test.ts +41 -0
  276. package/src/__tests__/barrel-distortion.unit.test.ts +364 -0
  277. package/src/__tests__/construct-renderer-identity.unit.test.ts +49 -0
  278. package/src/__tests__/detached-recovery-graph.unit.test.ts +277 -0
  279. package/src/__tests__/device-loss-fanout.unit.test.ts +36 -1
  280. package/src/__tests__/docs-gate-green.unit.test.ts +112 -1
  281. package/src/__tests__/factory-contract.integration.test.ts +295 -45
  282. package/src/__tests__/feature-depth-input.dawn.test.ts +129 -2
  283. package/src/__tests__/fullscreen-feature-plan.unit.test.ts +14 -3
  284. package/src/__tests__/gpu-dirty-ranges.unit.test.ts +22 -0
  285. package/src/__tests__/gpu-driven-baseline.characterization.test.ts +16 -3
  286. package/src/__tests__/gpu-driven-batch-topology-pbr.unit.test.ts +12 -0
  287. package/src/__tests__/gpu-driven-material-artifacts.unit.test.ts +143 -0
  288. package/src/__tests__/gpu-driven-pbr.dawn.test.ts +2 -2
  289. package/src/__tests__/gpu-driven-production.integration.test.ts +482 -3
  290. package/src/__tests__/gpu-driven-shadow-views.dawn.test.ts +6 -5
  291. package/src/__tests__/gpu-driven-view-gpu-evidence.ts +94 -6
  292. package/src/__tests__/gpu-driven-view-graph.integration.test.ts +18 -2
  293. package/src/__tests__/gpu-driven-view.browser.test.ts +5 -8
  294. package/src/__tests__/gpu-driven-view.dawn.test.ts +6 -2
  295. package/src/__tests__/gpu-driven-view.unit.test.ts +1 -1
  296. package/src/__tests__/gpu-pass-timing-lifecycle.integration.test.ts +1 -0
  297. package/src/__tests__/gpu-pass-timing.browser.test.ts +6 -4
  298. package/src/__tests__/gpu-pass-timing.rhi-null.unit.test.ts +1 -0
  299. package/src/__tests__/gpu-scene.unit.test.ts +119 -9
  300. package/src/__tests__/instance-allocation-failure.unit.test.ts +57 -0
  301. package/src/__tests__/instances-culling.integration.test.ts +10 -36
  302. package/src/__tests__/instances-store.unit.test.ts +97 -305
  303. package/src/__tests__/instances-world-ownership.integration.test.ts +62 -0
  304. package/src/__tests__/main-pass-material-medium-selection.unit.test.ts +146 -0
  305. package/src/__tests__/material-shader-prewarm.unit.test.ts +59 -0
  306. package/src/__tests__/material-snapshot-mutation.integration.test.ts +39 -1
  307. package/src/__tests__/morph-culling-reentry.dawn.test.ts +5 -5
  308. package/src/__tests__/morph-visual-evidence.integration.test.ts +8 -7
  309. package/src/__tests__/motion-blur-compute.dawn.test.ts +13 -7
  310. package/src/__tests__/motion-blur.pixel.integration.test.ts +2 -2
  311. package/src/__tests__/nineslice-handle-surface.unit.test.ts +4 -4
  312. package/src/__tests__/pbr-view-layout.unit.test.ts +9 -0
  313. package/src/__tests__/physical-clearcoat.integration.test.ts +58 -0
  314. package/src/__tests__/prepared-graphics-capability.unit.test.ts +66 -2
  315. package/src/__tests__/probe-bindings.unit.test.ts +582 -1
  316. package/src/__tests__/probe-scene-dirty.integration.test.ts +28 -1
  317. package/src/__tests__/receipt-observation-retirement.unit.test.ts +65 -0
  318. package/src/__tests__/recovery-candidate-prepare.contract.test.ts +69 -0
  319. package/src/__tests__/render-error-code-owner.test-d.ts +7 -0
  320. package/src/__tests__/render-feature-diagnostics.unit.test.ts +15 -2
  321. package/src/__tests__/render-feature-error-reporting.unit.test.ts +21 -1
  322. package/src/__tests__/render-feature-prepared-diagnostics.unit.test.ts +10 -1
  323. package/src/__tests__/render-feature-retry.unit.test.ts +12 -1
  324. package/src/__tests__/render-scene-mixed-updates.integration.test.ts +145 -19
  325. package/src/__tests__/render-scene-projection.unit.test.ts +36 -11
  326. package/src/__tests__/render-scene-temporal-retry.unit.test.ts +20 -20
  327. package/src/__tests__/render-target-probe-soak.perf.test.ts +2 -2
  328. package/src/__tests__/render-temporal-environment-consumer.browser.test.ts +3 -3
  329. package/src/__tests__/render-temporal-environment-consumer.dawn.test.ts +5 -2
  330. package/src/__tests__/renderer-factory-material-contract.unit.test.ts +41 -7
  331. package/src/__tests__/renderer-frame-generation-fence.integration.test.ts +16 -0
  332. package/src/__tests__/renderer-frame-transaction.integration.test.ts +26 -10
  333. package/src/__tests__/resource-allocation.unit.test.ts +123 -0
  334. package/src/__tests__/single-layer-medium-passes.unit.test.ts +275 -0
  335. package/src/__tests__/skin-motion-regression.unit.test.ts +70 -1
  336. package/src/__tests__/skin-palette-recycling.dawn.test.ts +97 -0
  337. package/src/__tests__/skinned-shadow-caster.test.ts +15 -0
  338. package/src/__tests__/ssr-carrier-public-contract.unit.test.ts +21 -0
  339. package/src/__tests__/ssr-gpu-dispatch.browser.test.ts +4 -4
  340. package/src/__tests__/ssr-gpu-dispatch.dawn.test.ts +2 -2
  341. package/src/__tests__/ssr-gpu-dispatch.ts +1 -1
  342. package/src/__tests__/ssr-receiver-coverage.dawn.test.ts +6 -2
  343. package/src/__tests__/standard-output-chain-contract.unit.test.ts +28 -0
  344. package/src/__tests__/standard-pbr-artifact-assembly.unit.test.ts +46 -1
  345. package/src/__tests__/standard-pipeline.integration.test.ts +182 -1
  346. package/src/__tests__/surface-dynamic-buffer-lifecycle.unit.test.ts +506 -0
  347. package/src/__tests__/surface-submission-observation.unit.test.ts +812 -0
  348. package/src/__tests__/temporal-history-lifecycle.unit.test.ts +32 -0
  349. package/src/__tests__/temporal-performance.integration.test.ts +3 -3
  350. package/src/__tests__/visibility-instances.integration.test.ts +7 -19
  351. package/src/__tests__/visibility-producer-matrix.integration.test.ts +9 -20
  352. package/src/__tests__/volume-optics-oracle.unit.test.ts +4 -2
  353. package/src/__tests__/volumetric-fog-budget-recovery.integration.test.ts +30 -20
  354. package/src/__tests__/volumetric-fog-errors.unit.test.ts +4 -3
  355. package/src/__tests__/volumetric-fog-multiple.unit.test.ts +55 -0
  356. package/src/__tests__/volumetric-fog-spot-frame-optics.integration.test.ts +1 -1
  357. package/src/__tests__/volumetric-fog-stage-readback.dawn.test.ts +113 -9
  358. package/src/__tests__/volumetric-fog-topology.unit.test.ts +5 -3
  359. package/src/assembly/backend-contract.ts +30 -0
  360. package/src/assembly/barrel-distortion-inspection.ts +22 -0
  361. package/src/assembly/canvas-draw-guard.ts +11 -0
  362. package/src/assembly/cloud-shadow-entry.ts +22 -0
  363. package/src/assembly/dynamic-geometry-host.ts +65 -37
  364. package/src/assembly/dynamic-geometry-runtime.ts +7 -1
  365. package/src/assembly/factory.ts +2 -30
  366. package/src/assembly/host-contract.ts +3 -3
  367. package/src/assembly/material/assembly.ts +25 -13
  368. package/src/assembly/material/pipeline-helpers.ts +53 -12
  369. package/src/assembly/material-shader-policy.ts +55 -0
  370. package/src/assembly/material-shader-prewarm.ts +21 -10
  371. package/src/assembly/recovery/device-loss-fanout.ts +13 -0
  372. package/src/assembly/recovery/renderer-recover.ts +41 -18
  373. package/src/assembly/render-feature-post-processes.ts +54 -0
  374. package/src/assembly/renderer-facade.ts +4 -1
  375. package/src/assembly/renderer-feature-inspection.ts +8 -2
  376. package/src/assembly/renderer-frame-transaction.ts +23 -0
  377. package/src/assembly/renderer-inspection.ts +28 -0
  378. package/src/assembly/skin-palette-owner.ts +1 -1
  379. package/src/assembly/temporal-post-process-prewarm.ts +3 -3
  380. package/src/assembly/webgpu-pbr-ready.ts +9 -1
  381. package/src/assembly/webgpu-ready-per-pass.ts +104 -0
  382. package/src/assembly/webgpu-ready.ts +115 -61
  383. package/src/assembly/webgpu-renderer-bootstrap.ts +0 -12
  384. package/src/assembly/webgpu-renderer-observation-owner.ts +222 -0
  385. package/src/assembly/webgpu-renderer.ts +214 -252
  386. package/src/assembly/webgpu-vertex-layouts.ts +1 -1
  387. package/src/barrel-distortion.ts +247 -0
  388. package/src/cloud/__tests__/cloud-density-parity.dawn.test.ts +173 -0
  389. package/src/cloud/__tests__/cloud-layer-framebuffer-y.dawn.test.ts +265 -0
  390. package/src/cloud/__tests__/cloud-layer.browser.test.ts +432 -0
  391. package/src/cloud/__tests__/cloud-layer.unit.test.ts +634 -0
  392. package/src/cloud/density.ts +600 -0
  393. package/src/cloud/extract.ts +110 -0
  394. package/src/cloud/feature.ts +1810 -0
  395. package/src/cloud/frame-context.ts +42 -0
  396. package/src/cloud/inspection.ts +130 -0
  397. package/src/cloud/optics.ts +285 -0
  398. package/src/cloud/parameters.ts +255 -0
  399. package/src/cloud/resources.ts +122 -0
  400. package/src/cloud/shadow.ts +167 -0
  401. package/src/cloud/temporal.ts +226 -0
  402. package/src/components/barrel-distortion.ts +46 -0
  403. package/src/components/cloud-layer.ts +47 -0
  404. package/src/components/index.ts +2 -0
  405. package/src/components/instances.ts +18 -45
  406. package/src/components/sprite-instances.ts +1 -1
  407. package/src/construct-renderer.ts +1 -1
  408. package/src/dynamic-geometry.ts +12 -1
  409. package/src/errors/cloud.ts +103 -0
  410. package/src/errors/render.ts +44 -7
  411. package/src/examples/single-layer-medium-surface.ts +59 -0
  412. package/src/extract/camera.ts +15 -1
  413. package/src/extract/contracts.ts +5 -0
  414. package/src/features/barrel-distortion.ts +172 -0
  415. package/src/features/error-reporting.ts +26 -6
  416. package/src/features/host.ts +115 -14
  417. package/src/features/plan.ts +8 -0
  418. package/src/features/render-graph-contribution.ts +9 -0
  419. package/src/features/render-graph-raster.ts +45 -3
  420. package/src/features/targets.ts +66 -0
  421. package/src/features/types.ts +47 -0
  422. package/src/fullscreen-post-process-pass.ts +41 -9
  423. package/src/gpu-dirty-ranges.ts +48 -0
  424. package/src/gpu-driven/batch-topology.ts +53 -0
  425. package/src/gpu-driven/material-artifacts.ts +33 -25
  426. package/src/gpu-driven/prepared-draw.ts +12 -4
  427. package/src/gpu-driven/production-raster-material.ts +1894 -0
  428. package/src/gpu-driven/production-raster.ts +825 -784
  429. package/src/gpu-driven/resource-allocation.ts +142 -0
  430. package/src/gpu-driven/shadow-ownership.ts +71 -0
  431. package/src/gpu-driven/view-gpu.ts +164 -10
  432. package/src/gpu-scene.ts +75 -84
  433. package/src/hdrp-buffers.ts +4 -3
  434. package/src/ibl/skylight-bind-group.ts +49 -7
  435. package/src/index.ts +196 -9
  436. package/src/inspection-types.ts +162 -0
  437. package/src/instance-buffer-cache.ts +4 -4
  438. package/src/instances.ts +149 -569
  439. package/src/pbr-pipeline.ts +219 -13
  440. package/src/pipeline/single-layer-medium-passes.ts +267 -0
  441. package/src/pipeline/standard-forward-lane.ts +313 -57
  442. package/src/pipeline/standard-output/graph.ts +8 -2
  443. package/src/pipeline/standard-output/types.ts +12 -1
  444. package/src/pipeline/standard-pipeline.ts +291 -18
  445. package/src/pipeline/standard-post.ts +90 -24
  446. package/src/pipeline-builder.ts +1 -1
  447. package/src/plugin.ts +4 -0
  448. package/src/points-lines/__tests__/points-lines.bench.ts +17 -8
  449. package/src/prepare/prepared-graphics-resolver.ts +2 -0
  450. package/src/record/__tests__/main-pass-geometry.unit.test.ts +30 -0
  451. package/src/record/__tests__/sprite-material-abi.unit.test.ts +1 -1
  452. package/src/record/__tests__/temporal-payload.unit.test.ts +1 -1
  453. package/src/record/__tests__/transparent-group2-selection.unit.test.ts +11 -0
  454. package/src/record/__tests__/typed-frame-graph-plan.unit.test.ts +1 -0
  455. package/src/record/__tests__/view-ubo-layout.unit.test.ts +4 -3
  456. package/src/record/barrel-distortion-frame.ts +110 -0
  457. package/src/record/dynamic-geometry-consumption.ts +39 -9
  458. package/src/record/fold-buckets.ts +852 -0
  459. package/src/record/fold-instance-buffer.ts +51 -0
  460. package/src/record/frame-lighting.ts +36 -2
  461. package/src/record/frame-snapshot.ts +39 -3
  462. package/src/record/frame.ts +217 -1084
  463. package/src/record/gpu-draw-receipts.ts +38 -0
  464. package/src/record/gpu-timing.ts +48 -5
  465. package/src/record/main-pass-geometry.ts +251 -82
  466. package/src/record/main-pass-material.ts +66 -4
  467. package/src/record/main-pass-sprite-draws.ts +7 -65
  468. package/src/record/main-pass.ts +156 -20
  469. package/src/record/motion-blur-receipt.ts +91 -0
  470. package/src/record/probe-blend-buffer.ts +180 -0
  471. package/src/record/recovery-pipeline.ts +35 -3
  472. package/src/record/render-context.ts +39 -3
  473. package/src/record/shadow-pass.ts +30 -1
  474. package/src/record/skybox-post-pass.ts +28 -4
  475. package/src/record/typed-frame-graph.ts +770 -134
  476. package/src/record/view-ubo.ts +26 -3
  477. package/src/record/volume-params.ts +225 -0
  478. package/src/recovery/render-system-candidate.ts +235 -42
  479. package/src/reflection/record-owner.ts +7 -3
  480. package/src/render-contract.ts +48 -4
  481. package/src/render-graph-primitives.ts +7 -1
  482. package/src/render-pipeline.ts +130 -0
  483. package/src/render-system-extract-tail.ts +57 -61
  484. package/src/render-system-extract.ts +74 -76
  485. package/src/render-system-presentation.ts +56 -0
  486. package/src/render-system-producer-roots.ts +96 -0
  487. package/src/render-system-residency.ts +159 -0
  488. package/src/render-system.ts +347 -363
  489. package/src/scene/probe-blend.ts +96 -4
  490. package/src/scene/render-scene.ts +349 -280
  491. package/src/ssao-buffers.ts +95 -2
  492. package/src/surface/__tests__/dynamic-input.unit.test.ts +374 -0
  493. package/src/surface/__tests__/gpu-driven.unit.test.ts +87 -0
  494. package/src/surface/dynamic-input.ts +658 -0
  495. package/src/surface/gpu-driven.ts +147 -0
  496. package/src/surface/submission-observation.ts +517 -0
  497. package/src/systems/skin-palette-allocator.ts +4 -1
  498. package/src/temporal/gpu.ts +101 -17
  499. package/src/temporal/inspection.ts +7 -1
  500. package/src/temporal/standard-scene-data.ts +5 -0
  501. package/src/temporal/target-coverage-attachment.ts +4 -0
  502. package/src/transmission/__tests__/single-layer-medium.unit.test.ts +149 -0
  503. package/src/transmission/__tests__/standard-transmission.dawn.test.ts +12 -11
  504. package/src/transmission/single-layer-medium.ts +322 -0
  505. package/src/typed-render-graph-primitives.ts +70 -2
  506. package/src/volume/component.ts +10 -9
  507. package/src/volume/extract.ts +11 -5
  508. package/src/volume/inspection.ts +3 -0
  509. package/src/volume/passes.ts +87 -4
  510. package/src/volume/resources.ts +2 -1
  511. package/dist/chunk-3RTCJTH4.mjs.map +0 -1
  512. package/dist/chunk-NB2S7ZRX.mjs.map +0 -1
  513. package/dist/chunk-NNQL7CB3.mjs +0 -1713
  514. package/dist/chunk-NNQL7CB3.mjs.map +0 -1
  515. package/dist/chunk-OO3DRYK7.mjs.map +0 -1
  516. package/dist/chunk-PA5DRJNI.mjs.map +0 -1
  517. package/dist/chunk-PLAXOOX5.mjs.map +0 -1
  518. package/dist/chunk-VOZWDM3L.mjs.map +0 -1
package/src/index.ts CHANGED
@@ -11,6 +11,18 @@ export {
11
11
  renderPipelineContribution,
12
12
  samplerContribution,
13
13
  } from './assets/asset-decoders.js';
14
+ export {
15
+ attachBarrelDistortionCameraFrame,
16
+ type BarrelDistortionCameraFrame,
17
+ type BarrelDistortionMapping,
18
+ createBarrelDistortionMapping,
19
+ type DisplayPoint,
20
+ freezeBarrelDistortionMapping,
21
+ mapDisplayToScene,
22
+ mapDisplayUvToSceneUv,
23
+ mapSceneToDisplay,
24
+ mapSceneUvToDisplayUv,
25
+ } from './barrel-distortion.js';
14
26
  // Runtime contract: leases, frame receipts, detached inspection, profile,
15
27
  // lifecycle state, and the single renderer event stream.
16
28
  export type {
@@ -18,7 +30,107 @@ export type {
18
30
  CubeCameraFaceViewInput,
19
31
  } from './capture/cube-views.js';
20
32
  export { buildCubeCameraFaceViews } from './capture/cube-views.js';
33
+ export {
34
+ buildCloudDensityCache,
35
+ type CloudDensityCache,
36
+ type CloudDensityCacheSnapshot,
37
+ type CloudDensitySample,
38
+ evaluateCloudDensity,
39
+ reconstructCloudDensityCache,
40
+ sampleCloudDensity,
41
+ snapshotCloudDensityCache,
42
+ } from './cloud/density.js';
43
+ export {
44
+ type CloudLayerCandidate,
45
+ type ExtractedCloudLayer,
46
+ extractCloudLayer,
47
+ selectCloudLayerFrame,
48
+ } from './cloud/extract.js';
49
+ export {
50
+ CLOUD_DENSITY_COMPUTE_WGSL,
51
+ CLOUD_HISTORY_FULLSCREEN_WGSL,
52
+ CLOUD_LAYER_DENSITY_BINDINGS,
53
+ CLOUD_LAYER_DENSITY_CACHE,
54
+ CLOUD_LAYER_DENSITY_OUTPUT,
55
+ CLOUD_LAYER_DENSITY_PROGRAM,
56
+ CLOUD_LAYER_FEATURE_IDENTITY,
57
+ CLOUD_VIEW_FULLSCREEN_WGSL,
58
+ CLOUD_VIEW_PARAMS_BYTES,
59
+ type CloudLayerFeatureFrame,
60
+ type CloudLayerFeatureOptions,
61
+ createCloudLayerFeature,
62
+ } from './cloud/feature.js';
63
+ export {
64
+ type CloudLayerBudgetObservation,
65
+ type CloudLayerInspection,
66
+ type CloudLayerInspectionInput,
67
+ type CloudLayerInspectionStatus,
68
+ type CloudLayerResourceStage,
69
+ type CloudPhysicalGpuEvidence,
70
+ cloudCapabilitiesFromRhi,
71
+ inspectCloudLayer,
72
+ } from './cloud/inspection.js';
73
+ export {
74
+ applyCloudSolarTransmittance,
75
+ type CloudInteriorLighting,
76
+ type CloudOpticalPath,
77
+ type CloudOpticalResult,
78
+ type CloudOpticsInput,
79
+ type CloudRay,
80
+ compositeCloudRadiance,
81
+ integrateCloudCameraPath,
82
+ integrateCloudInterior,
83
+ integrateCloudPath,
84
+ integrateCloudSolarColumn,
85
+ intersectCloudLayer,
86
+ } from './cloud/optics.js';
87
+ export {
88
+ CLOUD_QUALITY_PROFILES,
89
+ type CloudLayerAuthoring,
90
+ type CloudQualityProfile,
91
+ cloudLayerSourceKey,
92
+ DEFAULT_CLOUD_LAYER,
93
+ type ValidatedCloudLayer,
94
+ validateCloudLayer,
95
+ } from './cloud/parameters.js';
96
+ export {
97
+ acceptCloudLayerGeneration,
98
+ CLOUD_HISTORY_SURFACE_COUNT,
99
+ CLOUD_RGBA16FLOAT_BYTES_PER_TEXEL,
100
+ type CloudGpuResourceEvidence,
101
+ type CloudLayerGeneration,
102
+ type CloudLayerResourceFacts,
103
+ type CloudLayerResourceInputs,
104
+ inspectCloudLayerResources,
105
+ retainCloudLayerAfterFailure,
106
+ } from './cloud/resources.js';
107
+ export {
108
+ type CloudShadowProjection,
109
+ type CloudShadowSample,
110
+ createCloudShadowProjection,
111
+ projectCloudShadowUv,
112
+ sampleCloudShadow,
113
+ } from './cloud/shadow.js';
114
+ export {
115
+ type CloudHistory,
116
+ type CloudHistoryReprojection,
117
+ type CloudHistoryReprojectionInput,
118
+ CloudHistoryStore,
119
+ type CloudTemporalDecision,
120
+ type CloudTemporalFrame,
121
+ type CloudTemporalResetReason,
122
+ type CloudTemporalSignature,
123
+ cloudTemporalResetReasons,
124
+ cloudTemporalSignature,
125
+ createCloudHistory,
126
+ reprojectCloudHistory,
127
+ } from './cloud/temporal.js';
21
128
  export { Atmosphere } from './components/atmosphere.js';
129
+ export {
130
+ BarrelDistortion,
131
+ type BarrelDistortionData,
132
+ validateBarrelDistortionParameters,
133
+ } from './components/barrel-distortion.js';
22
134
  // ECS render vocabulary and grouped closed values.
23
135
  export type {
24
136
  Antialias,
@@ -71,6 +183,13 @@ export {
71
183
  validateCameraColorGrading,
72
184
  validateCameraExposure,
73
185
  } from './components/camera.js';
186
+ export {
187
+ CloudLayer,
188
+ type CloudLayerData,
189
+ type CloudQuality,
190
+ CloudQualityValue,
191
+ cloudQualityFromF32,
192
+ } from './components/cloud-layer.js';
74
193
  export {
75
194
  CUBE_CAMERA_FACE_ORDER,
76
195
  CUBE_CAMERA_UPDATE_CONTINUOUS,
@@ -174,6 +293,22 @@ export type {
174
293
  EnvironmentInspectionGeneration,
175
294
  EnvironmentInspectionStatus,
176
295
  } from './environment/inspection.js';
296
+ export type {
297
+ CloudLayerCacheInvalidDetail,
298
+ CloudLayerCapabilityMissingDetail,
299
+ CloudLayerError,
300
+ CloudLayerErrorCode,
301
+ CloudLayerInvalidParameterDetail,
302
+ CloudLayerOwnerConflictDetail,
303
+ CloudLayerResourceFailureDetail,
304
+ } from './errors/cloud.js';
305
+ export {
306
+ CloudLayerCacheInvalidError,
307
+ CloudLayerCapabilityMissingError,
308
+ CloudLayerInvalidParameterError,
309
+ CloudLayerOwnerConflictError,
310
+ CloudLayerResourceFailureError,
311
+ } from './errors/cloud.js';
177
312
  // Public structured operation failure union. Concrete error classes stay
178
313
  // behind the Renderer Result/event boundary.
179
314
  export type {
@@ -184,6 +319,7 @@ export type {
184
319
  } from './errors/gpu-driven';
185
320
  export { GpuDrivenPreparationError } from './errors/gpu-driven';
186
321
  export type {
322
+ BarrelDistortionInvalidParameterDetail,
187
323
  DynamicResolutionError,
188
324
  ReflectionProbeBudgetExceededDetail,
189
325
  RenderError,
@@ -198,6 +334,7 @@ export type {
198
334
  } from './errors/render.js';
199
335
  export {
200
336
  AtmosphereInvalidParameterError,
337
+ BarrelDistortionInvalidParameterError,
201
338
  DynamicResolutionInvalidParameterError,
202
339
  DynamicResolutionRequiresTaaError,
203
340
  DynamicResolutionTimingUnavailableError,
@@ -205,9 +342,14 @@ export {
205
342
  EnvironmentSourceConflictError,
206
343
  FogCardinalityError,
207
344
  OwnerStageFailedError,
345
+ RendererOperationError,
208
346
  SceneDataUnavailableError,
209
347
  TaaCapsInsufficientError,
210
348
  } from './errors/render.js';
349
+ export {
350
+ SINGLE_LAYER_MEDIUM_SURFACE_EXAMPLE,
351
+ SINGLE_LAYER_MEDIUM_SURFACE_EXAMPLES,
352
+ } from './examples/single-layer-medium-surface.js';
211
353
  export type {
212
354
  EnvironmentFrame,
213
355
  EnvironmentSource,
@@ -219,6 +361,14 @@ export {
219
361
  type VisibilityResolution,
220
362
  type VisibilitySnapshot,
221
363
  } from './extract/visibility.js';
364
+ export {
365
+ BARREL_DISTORTION_FEATURE_IDENTITY,
366
+ BARREL_DISTORTION_POST_PROCESS_ID,
367
+ BARREL_DISTORTION_WGSL,
368
+ BARREL_DISTORTION_WGSL_COORDINATE,
369
+ type BarrelDistortionFeatureFrame,
370
+ createBarrelDistortionRenderFeature,
371
+ } from './features/barrel-distortion.js';
222
372
  export {
223
373
  DEFAULT_DEPTH_OF_FIELD_PARAMS,
224
374
  DEPTH_OF_FIELD_PARAMS_BYTE_SIZE,
@@ -271,10 +421,13 @@ export type {
271
421
  RenderFeatureDiagnostics,
272
422
  RenderFeatureErrorDescriptor,
273
423
  RenderFeatureExtractContext,
424
+ RenderFeatureFrameContext,
274
425
  RenderFeatureHiddenEntityReport,
426
+ RenderFeaturePlacement,
275
427
  RenderFeatureShaderModuleMode,
276
428
  RenderFeatureStatus,
277
429
  RenderFeatureSubmission,
430
+ RenderFeatureViewContext,
278
431
  RenderFeatureWorldVisibilitySnapshot,
279
432
  } from './features/types.js';
280
433
  export {
@@ -290,6 +443,7 @@ export {
290
443
  resetIblKernelCaches,
291
444
  } from './ibl/kernel-cache.js';
292
445
  export type {
446
+ BarrelDistortionInspection,
293
447
  BloomInspection,
294
448
  DepthOfFieldInspection,
295
449
  DepthOfFieldInspectionStatus,
@@ -320,22 +474,14 @@ export type {
320
474
  } from './inspection-types.js';
321
475
  export {
322
476
  type InstanceBackendKind,
323
- type InstanceCollectionCreateInput,
324
- type InstanceCollectionData,
325
- InstanceCollectionError,
326
- type InstanceCollectionErrorCode,
327
477
  type InstanceCollectionFailureCode,
328
478
  type InstanceCollectionFailureFacts,
329
479
  type InstanceCollectionId,
330
480
  type InstanceCollectionInfo,
331
481
  type InstanceCollectionInspection,
332
- type InstanceCollectionInvalidDetail,
333
- type InstanceCollectionResult,
334
- type InstanceCollectionSnapshot,
335
- InstanceCollectionStore,
336
- type InstanceCollectionUpdateInput,
337
482
  type InstanceDirtyRange,
338
483
  type InstanceSubmissionLane,
484
+ InstanceTransformsError,
339
485
  } from './instances';
340
486
  export {
341
487
  MaterialAuthoringContractError,
@@ -483,6 +629,7 @@ export type {
483
629
  FrameCamera,
484
630
  FrameEnvironment,
485
631
  FrameObservationRequest,
632
+ FramePresentation,
486
633
  FrameReceipt,
487
634
  FrameReceiptObservation,
488
635
  Renderer,
@@ -592,6 +739,31 @@ export {
592
739
  projectSsrSpatialInspection,
593
740
  serializeSsrSpatialInspection,
594
741
  } from './ssr/inspection.js';
742
+ export {
743
+ type DynamicInputConsumptionReceipt,
744
+ type DynamicInputDirtyRange,
745
+ DynamicInputError,
746
+ type DynamicInputErrorCode,
747
+ type DynamicInputErrorDetail,
748
+ type DynamicInputRange,
749
+ type DynamicInputResult,
750
+ type DynamicInputUploadReceipt,
751
+ type DynamicInputValue,
752
+ ReadonlyDynamicInputPage,
753
+ type SurfaceDynamicInputFrame,
754
+ type SurfaceDynamicInputMemberIdentity,
755
+ } from './surface/dynamic-input.js';
756
+ export {
757
+ admitSingleLayerMediumSubmission,
758
+ type SurfaceGpuCapability,
759
+ type SurfaceGpuFallbackReason,
760
+ type SurfaceGpuPassAdmission,
761
+ type SurfaceGpuSubmissionAdmission,
762
+ type SurfaceGpuSubmissionError,
763
+ type SurfaceGpuSubmissionErrorCode,
764
+ type SurfaceGpuSubmissionInput,
765
+ } from './surface/gpu-driven.js';
766
+ export type { SurfaceGpuIndirectParameters } from './surface/submission-observation.js';
595
767
  export { getActiveCamera, setActiveCamera } from './systems/active-camera.js';
596
768
  export type {
597
769
  RenderTarget,
@@ -626,6 +798,19 @@ export {
626
798
  type SceneDataInspection,
627
799
  } from './temporal/scene-data-catalog.js';
628
800
  export type { TemporalView } from './temporal/view.js';
801
+ export {
802
+ composeSingleLayerMediumColor,
803
+ estimateSingleLayerPathLength,
804
+ integrateSingleLayerMedium,
805
+ type MediumVector3,
806
+ resolveSingleLayerMediumBackground,
807
+ type SingleLayerMediumBackgroundCandidate,
808
+ type SingleLayerMediumBackgroundInput,
809
+ type SingleLayerMediumBackgroundReason,
810
+ type SingleLayerMediumBackgroundResolution,
811
+ type SingleLayerMediumCoefficients,
812
+ type SingleLayerMediumOptics,
813
+ } from './transmission/single-layer-medium.js';
629
814
  export {
630
815
  hasVolumetricFogCapability,
631
816
  type IntegratedVolumeResource,
@@ -638,12 +823,14 @@ export {
638
823
  type VolumetricFogLightResolution,
639
824
  } from './volume/capability.js';
640
825
  export {
826
+ MAX_VOLUMETRIC_FOG_OWNERS,
641
827
  type ValidatedVolumetricFog,
642
828
  type VolumeBounds,
643
829
  type VolumeDensityBinding,
644
830
  VolumetricFog,
645
831
  type VolumetricFogAuthoring,
646
832
  type VolumetricFogLightSelection,
833
+ VolumetricFogSamplingValue,
647
834
  validateVolumetricFog,
648
835
  } from './volume/component.js';
649
836
  export { extractVolumetricFog, type VolumetricFogExtract } from './volume/extract.js';
@@ -4,6 +4,7 @@
4
4
  * extract/record dependency graph.
5
5
  */
6
6
 
7
+ import { type BarrelDistortionMapping, freezeBarrelDistortionMapping } from './barrel-distortion';
7
8
  import type { DirectionalShadowFilterLabel } from './components/directional-shadow-filter';
8
9
  import type {
9
10
  GpuDrivenPreparationErrorCode,
@@ -13,6 +14,7 @@ import type { DepthOfFieldRequestFailure } from './features/depth-of-field/depth
13
14
  import type { PointsLinesInspection } from './points-lines/inspection';
14
15
  import type { LodOcclusionInspection } from './scene/visibility/inspection';
15
16
  import type { SsrAdmissionIdentity } from './ssr/identity';
17
+ import type { SurfaceGpuIndirectParameters } from './surface/submission-observation';
16
18
 
17
19
  export type {
18
20
  LodOcclusionInspection,
@@ -144,6 +146,31 @@ export interface BatchTopologyInspection {
144
146
  readonly membershipAllocations?: number;
145
147
  readonly candidateAdds?: number;
146
148
  readonly candidateRemoves?: number;
149
+ /** Distinct resource classes represented by this topology. */
150
+ readonly resourceClassCount?: number;
151
+ /** Resource-class groups; range/page changes do not create a new class. */
152
+ readonly resourceClassSplits?: readonly {
153
+ readonly resourceIdentity: string;
154
+ readonly batchIds: readonly number[];
155
+ readonly candidateCount: number;
156
+ }[];
157
+ /** Reasons emitted only when more than one resource class is present. */
158
+ readonly resourceClassSplitReasons?: readonly string[];
159
+ }
160
+
161
+ /** Logical Engine allocation facts; physical VRAM residency is intentionally unknown. */
162
+ export interface GpuResourceAllocationInspection {
163
+ readonly unit: 'engine-allocation-bytes';
164
+ readonly physicalResidency: 'unknown';
165
+ readonly liveBytes: number;
166
+ readonly pendingRetirementBytes: number;
167
+ readonly peakBytes: number;
168
+ readonly successfulAllocationCount: number;
169
+ readonly successfulAllocationBytes: number;
170
+ readonly pendingRetirementCount: number;
171
+ readonly retiredBytes: number;
172
+ readonly failedAllocationRollbacks: number;
173
+ readonly failedAllocationRollbackBytes: number;
147
174
  }
148
175
 
149
176
  /**
@@ -203,6 +230,49 @@ export interface RenderFeatureGraphInspection {
203
230
  };
204
231
  }
205
232
 
233
+ /**
234
+ * Detached output-space barrel facts for the most recently accepted picture.
235
+ * The mapping, extent, and generation fields are one context; consumers must
236
+ * discard the whole projection when its device or frame is retired.
237
+ */
238
+ export interface BarrelDistortionInspection {
239
+ readonly effectiveMapping: BarrelDistortionMapping | undefined;
240
+ readonly extent: { readonly width: number; readonly height: number } | undefined;
241
+ readonly frameId: number;
242
+ readonly deviceGeneration: number;
243
+ readonly graphGeneration: number;
244
+ readonly lastKnownGood: boolean;
245
+ }
246
+
247
+ export interface BarrelDistortionInspectionInput {
248
+ readonly effectiveMapping: BarrelDistortionMapping | undefined;
249
+ readonly frameId: number;
250
+ readonly deviceGeneration: number;
251
+ readonly graphGeneration: number;
252
+ readonly lastKnownGood: boolean;
253
+ }
254
+
255
+ /** Project one immutable, public barrel frame context. */
256
+ export function projectBarrelDistortionInspection(
257
+ input: BarrelDistortionInspectionInput,
258
+ ): BarrelDistortionInspection {
259
+ const effectiveMapping =
260
+ input.effectiveMapping === undefined
261
+ ? undefined
262
+ : freezeBarrelDistortionMapping(input.effectiveMapping);
263
+ return Object.freeze({
264
+ effectiveMapping,
265
+ extent:
266
+ effectiveMapping === undefined
267
+ ? undefined
268
+ : Object.freeze({ width: effectiveMapping.width, height: effectiveMapping.height }),
269
+ frameId: input.frameId,
270
+ deviceGeneration: input.deviceGeneration,
271
+ graphGeneration: input.graphGeneration,
272
+ lastKnownGood: input.lastKnownGood,
273
+ });
274
+ }
275
+
206
276
  /** Detached material texture-source probe accounting for the last extract. */
207
277
  export interface MaterialTextureSourceInspection {
208
278
  readonly sourceFieldsVisited: number;
@@ -299,6 +369,7 @@ export type GpuDrivenLane = 'gpu' | 'cpu-semantic' | 'cpu-deformation' | 'blocke
299
369
  /** Closed, machine-readable reasons for a lane decision or recovery state. */
300
370
  export type GpuDrivenLaneReason =
301
371
  | 'none'
372
+ | 'reflection-fallback-mrt'
302
373
  | 'capability'
303
374
  | 'unsupported'
304
375
  | 'resource-not-ready'
@@ -354,6 +425,25 @@ export interface GpuDrivenStructureMetrics {
354
425
  }
355
426
 
356
427
  export interface GpuDrivenProductionInspection {
428
+ /** Exact producer-selected Surface artifact prepared for the last candidate. */
429
+ readonly surfaceArtifact?: {
430
+ readonly material: string;
431
+ readonly specializationKey: string | undefined;
432
+ readonly variantSet: string | undefined;
433
+ readonly layoutIdentity: string;
434
+ readonly receiptIdentity: string;
435
+ readonly receiptGeneration: number;
436
+ readonly directEntry: string;
437
+ readonly sceneIndexEntry: string;
438
+ };
439
+ /** Lifetime count of Surface member-to-frame projections rebuilt after a topology change. */
440
+ readonly surfaceFrameRangeBuilds: number;
441
+ /** Lifetime count of admitted Surface members visited while rebuilding that projection. */
442
+ readonly surfaceFrameMemberScans: number;
443
+ /** Lifetime count of 48-byte Surface frame rows materialized for an actual GPU write. */
444
+ readonly surfaceFrameRowAllocations: number;
445
+ /** Lifetime count of writes to the one renderer-owned shared Surface frame-time value. */
446
+ readonly surfaceFrameTimeWrites: number;
357
447
  /** Lifetime count of successful producer-side residency validation scans. */
358
448
  readonly residencyValidationScans: number;
359
449
  /** Lifetime count of validation rows reused without a CPU residency walk. */
@@ -408,6 +498,22 @@ export interface GpuDrivenProductionInspection {
408
498
  readonly retryCount: number;
409
499
  /** Generation of the last fully submitted GPU candidate, if any. */
410
500
  readonly lastKnownGoodGeneration: number | undefined;
501
+ /** Aggregate logical allocation facts from available GPU-driven owners. */
502
+ readonly resourceAllocation?: GpuResourceAllocationInspection;
503
+ /** Per-owner facts; absent owners remain unavailable rather than zero-filled. */
504
+ readonly resourceAllocationOwners?: {
505
+ readonly gpuDrivenView?: GpuResourceAllocationInspection;
506
+ readonly materialRaster?: GpuResourceAllocationInspection;
507
+ readonly skinRaster?: GpuResourceAllocationInspection;
508
+ };
509
+ /** Resource-class split facts derived from batch.key.resourceIdentity. */
510
+ readonly resourceClassCount?: number;
511
+ readonly resourceClassSplitReasons?: readonly string[];
512
+ readonly resourceClassSplits?: readonly {
513
+ readonly resourceIdentity: string;
514
+ readonly batchIds: readonly number[];
515
+ readonly candidateCount: number;
516
+ }[];
411
517
  }
412
518
 
413
519
  export type DirectionalShadowEffectiveProfile =
@@ -698,6 +804,62 @@ export interface PersistentRenderSceneInspection {
698
804
  | { readonly status: 'error' };
699
805
  /** Bounded retained authoring observations; no graph or backend handles. */
700
806
  readonly pointsLines: readonly PointsLinesInspection[];
807
+ /** Last actually encoded Surface work, fenced by the renderer submission owner. */
808
+ readonly submission?: {
809
+ readonly sequence: number;
810
+ readonly frameId: number;
811
+ readonly requestedLane: 'direct' | 'gpu-driven';
812
+ readonly actualLane: 'direct' | 'gpu-driven';
813
+ /** Current-frame topology fact when a normal GPU lane was intentionally bypassed. */
814
+ readonly actualLaneReason?: GpuDrivenLaneReason;
815
+ readonly deviceGeneration: number;
816
+ readonly graphGeneration: number;
817
+ readonly viewIdentity: 'main:0';
818
+ readonly resourceGeneration: number | undefined;
819
+ readonly status: 'submitted' | 'completed';
820
+ readonly passes: readonly {
821
+ readonly pass: 'nearest-layer' | 'color';
822
+ /** Total commands actually encoded, including rows beyond the bounded sample. */
823
+ readonly commandCount: number;
824
+ readonly totalCommandCount: number;
825
+ readonly savedCommandCount: number;
826
+ readonly droppedCommandCount: number;
827
+ readonly truncated: boolean;
828
+ readonly memberEvidence:
829
+ | 'direct-command-members'
830
+ | 'direct-command-members-truncated'
831
+ | 'indirect-readback-required'
832
+ | 'indirect-visible-readback'
833
+ | 'indirect-visible-readback-truncated';
834
+ readonly memberIds?: readonly string[];
835
+ /** Decoded GPU command words bound to this submission/readback fence. */
836
+ readonly indirectParameters?: readonly SurfaceGpuIndirectParameters[];
837
+ readonly commands: readonly (
838
+ | {
839
+ readonly kind: 'draw' | 'draw-indexed';
840
+ readonly count: number;
841
+ readonly first: number;
842
+ readonly instanceCount: number;
843
+ readonly firstInstance: number;
844
+ readonly surfaceFrameBase: number;
845
+ readonly memberIds: readonly string[];
846
+ readonly pipelineIdentity: number;
847
+ readonly programEvidence: 'producer-receipt' | 'missing';
848
+ readonly receiptIdentity?: string;
849
+ readonly receiptGeneration?: number;
850
+ }
851
+ | {
852
+ readonly kind: 'draw-indirect' | 'draw-indexed-indirect';
853
+ readonly indirectBufferIdentity: number;
854
+ readonly indirectOffset: number;
855
+ readonly pipelineIdentity: number;
856
+ readonly programEvidence: 'producer-receipt' | 'missing';
857
+ readonly receiptIdentity?: string;
858
+ readonly receiptGeneration?: number;
859
+ }
860
+ )[];
861
+ }[];
862
+ };
701
863
  }
702
864
 
703
865
  export type RenderSceneInspection = PersistentRenderSceneInspection & {
@@ -23,15 +23,15 @@ import type { GpuBuffer } from './gpu-resource';
23
23
  * and routes dispose through the RHI shim's destroy bookkeeping SSOT. The
24
24
  * two `uploaded*` fields are the cache invalidation fingerprint -- when the
25
25
  * archetype version bumps or the byte length changes, the record stage
26
- * allocates a fresh GpuBuffer and replaces the entry. Explicit collection
27
- * entries are keyed by renderer-owned collection id at the outer map; the
28
- * legacy entity key remains only for sprite/fold snapshots.
26
+ * allocates a fresh GpuBuffer and replaces the entry. World-authored Instances
27
+ * use renderer-private projection identity; sprite/fold snapshots use entity
28
+ * identity. Neither cache key is an authoring handle.
29
29
  */
30
30
  export interface InstanceBufferCacheEntry {
31
31
  readonly buffer: GpuBuffer;
32
32
  readonly uploadedByteLength: number;
33
33
  readonly uploadedArchVersion: number;
34
- /** Renderer-owned collection revision uploaded into this buffer. */
34
+ /** Accepted instance-projection revision uploaded into this buffer. */
35
35
  readonly uploadedRevision?: number;
36
36
  }
37
37