@forgeax/engine-render 0.1.33 → 0.1.35

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 (624) hide show
  1. package/README.md +1062 -127
  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/device-feature-admission.d.ts +2 -2
  11. package/dist/assembly/dynamic-geometry-host.d.ts +4 -1
  12. package/dist/assembly/dynamic-geometry-host.d.ts.map +1 -1
  13. package/dist/assembly/dynamic-geometry-runtime.d.ts +1 -1
  14. package/dist/assembly/dynamic-geometry-runtime.d.ts.map +1 -1
  15. package/dist/assembly/factory.d.ts +1 -1
  16. package/dist/assembly/factory.d.ts.map +1 -1
  17. package/dist/assembly/host-contract.d.ts +6 -5
  18. package/dist/assembly/host-contract.d.ts.map +1 -1
  19. package/dist/assembly/material/assembly.d.ts.map +1 -1
  20. package/dist/assembly/material/pipeline-helpers.d.ts +5 -0
  21. package/dist/assembly/material/pipeline-helpers.d.ts.map +1 -1
  22. package/dist/assembly/material-shader-policy.d.ts +16 -2
  23. package/dist/assembly/material-shader-policy.d.ts.map +1 -1
  24. package/dist/assembly/material-shader-prewarm.d.ts.map +1 -1
  25. package/dist/assembly/recovery/device-loss-fanout.d.ts.map +1 -1
  26. package/dist/assembly/recovery/renderer-recover.d.ts +2 -0
  27. package/dist/assembly/recovery/renderer-recover.d.ts.map +1 -1
  28. package/dist/assembly/render-feature-post-processes.d.ts +6 -0
  29. package/dist/assembly/render-feature-post-processes.d.ts.map +1 -0
  30. package/dist/assembly/render-target-host.d.ts +5 -0
  31. package/dist/assembly/render-target-host.d.ts.map +1 -1
  32. package/dist/assembly/renderer-facade.d.ts.map +1 -1
  33. package/dist/assembly/renderer-feature-inspection.d.ts +1 -1
  34. package/dist/assembly/renderer-feature-inspection.d.ts.map +1 -1
  35. package/dist/assembly/renderer-frame-transaction.d.ts +12 -0
  36. package/dist/assembly/renderer-frame-transaction.d.ts.map +1 -1
  37. package/dist/assembly/renderer-inspection.d.ts +11 -0
  38. package/dist/assembly/renderer-inspection.d.ts.map +1 -1
  39. package/dist/assembly/webgpu-pbr-ready.d.ts +1 -0
  40. package/dist/assembly/webgpu-pbr-ready.d.ts.map +1 -1
  41. package/dist/assembly/webgpu-ready-per-pass.d.ts +39 -0
  42. package/dist/assembly/webgpu-ready-per-pass.d.ts.map +1 -0
  43. package/dist/assembly/webgpu-ready.d.ts +1 -1
  44. package/dist/assembly/webgpu-ready.d.ts.map +1 -1
  45. package/dist/assembly/webgpu-renderer-bootstrap.d.ts.map +1 -1
  46. package/dist/assembly/webgpu-renderer-observation-owner.d.ts +35 -0
  47. package/dist/assembly/webgpu-renderer-observation-owner.d.ts.map +1 -0
  48. package/dist/assembly/webgpu-renderer.d.ts +2 -1
  49. package/dist/assembly/webgpu-renderer.d.ts.map +1 -1
  50. package/dist/authoring.mjs +2 -4
  51. package/dist/authoring.mjs.map +1 -1
  52. package/dist/barrel-distortion.d.ts +47 -0
  53. package/dist/barrel-distortion.d.ts.map +1 -0
  54. package/dist/chunk-3XUBWRY2.mjs +1842 -0
  55. package/dist/chunk-3XUBWRY2.mjs.map +1 -0
  56. package/dist/{chunk-OO3DRYK7.mjs → chunk-G6HDNGY7.mjs} +2400 -1767
  57. package/dist/chunk-G6HDNGY7.mjs.map +1 -0
  58. package/dist/{chunk-ZDQWGQW7.mjs → chunk-LM5IE7GF.mjs} +4 -4
  59. package/dist/{chunk-ZDQWGQW7.mjs.map → chunk-LM5IE7GF.mjs.map} +1 -1
  60. package/dist/{chunk-VOZWDM3L.mjs → chunk-LNIUIKQ7.mjs} +1514 -498
  61. package/dist/chunk-LNIUIKQ7.mjs.map +1 -0
  62. package/dist/chunk-MXTWKZO4.mjs +3268 -0
  63. package/dist/chunk-MXTWKZO4.mjs.map +1 -0
  64. package/dist/chunk-MZ4C7EHF.mjs +6942 -0
  65. package/dist/chunk-MZ4C7EHF.mjs.map +1 -0
  66. package/dist/chunk-RIPAEGI6.mjs +48 -0
  67. package/dist/chunk-RIPAEGI6.mjs.map +1 -0
  68. package/dist/{chunk-LEAXOMYJ.mjs → chunk-SGPUJW3F.mjs} +117 -5
  69. package/dist/chunk-SGPUJW3F.mjs.map +1 -0
  70. package/dist/{chunk-PA5DRJNI.mjs → chunk-X2KA6WHM.mjs} +29 -4
  71. package/dist/chunk-X2KA6WHM.mjs.map +1 -0
  72. package/dist/{chunk-BLXGONR2.mjs → chunk-XSFB7XXQ.mjs} +51 -4
  73. package/dist/chunk-XSFB7XXQ.mjs.map +1 -0
  74. package/dist/cloud/density.d.ts +55 -0
  75. package/dist/cloud/density.d.ts.map +1 -0
  76. package/dist/cloud/extract.d.ts +25 -0
  77. package/dist/cloud/extract.d.ts.map +1 -0
  78. package/dist/cloud/feature.d.ts +57 -0
  79. package/dist/cloud/feature.d.ts.map +1 -0
  80. package/dist/cloud/frame-context.d.ts +8 -0
  81. package/dist/cloud/frame-context.d.ts.map +1 -0
  82. package/dist/cloud/inspection.d.ts +59 -0
  83. package/dist/cloud/inspection.d.ts.map +1 -0
  84. package/dist/cloud/optics.d.ts +56 -0
  85. package/dist/cloud/optics.d.ts.map +1 -0
  86. package/dist/cloud/parameters.d.ts +73 -0
  87. package/dist/cloud/parameters.d.ts.map +1 -0
  88. package/dist/cloud/resources.d.ts +60 -0
  89. package/dist/cloud/resources.d.ts.map +1 -0
  90. package/dist/cloud/shadow.d.ts +42 -0
  91. package/dist/cloud/shadow.d.ts.map +1 -0
  92. package/dist/cloud/temporal.d.ts +74 -0
  93. package/dist/cloud/temporal.d.ts.map +1 -0
  94. package/dist/components/barrel-distortion.d.ts +13 -0
  95. package/dist/components/barrel-distortion.d.ts.map +1 -0
  96. package/dist/components/cloud-layer.d.ts +29 -0
  97. package/dist/components/cloud-layer.d.ts.map +1 -0
  98. package/dist/components/index.d.ts +2 -0
  99. package/dist/components/index.d.ts.map +1 -1
  100. package/dist/components/instances.d.ts +20 -6
  101. package/dist/components/instances.d.ts.map +1 -1
  102. package/dist/construct-renderer.d.ts +1 -1
  103. package/dist/construct-renderer.d.ts.map +1 -1
  104. package/dist/construct-renderer.mjs +8406 -5785
  105. package/dist/construct-renderer.mjs.map +1 -1
  106. package/dist/device/gpu-residency.d.ts +19 -19
  107. package/dist/device/gpu-residency.d.ts.map +1 -1
  108. package/dist/dynamic-geometry.d.ts +5 -1
  109. package/dist/dynamic-geometry.d.ts.map +1 -1
  110. package/dist/errors/cloud.d.ts +59 -0
  111. package/dist/errors/cloud.d.ts.map +1 -0
  112. package/dist/errors/render.d.ts +20 -5
  113. package/dist/errors/render.d.ts.map +1 -1
  114. package/dist/examples/single-layer-medium-surface.d.ts +47 -0
  115. package/dist/examples/single-layer-medium-surface.d.ts.map +1 -0
  116. package/dist/extract/camera.d.ts.map +1 -1
  117. package/dist/extract/contracts.d.ts +5 -1
  118. package/dist/extract/contracts.d.ts.map +1 -1
  119. package/dist/extract/material-context.d.ts +7 -0
  120. package/dist/extract/material-context.d.ts.map +1 -0
  121. package/dist/features/barrel-distortion.d.ts +29 -0
  122. package/dist/features/barrel-distortion.d.ts.map +1 -0
  123. package/dist/features/error-reporting.d.ts +6 -2
  124. package/dist/features/error-reporting.d.ts.map +1 -1
  125. package/dist/features/host.d.ts +15 -0
  126. package/dist/features/host.d.ts.map +1 -1
  127. package/dist/features/plan.d.ts +10 -0
  128. package/dist/features/plan.d.ts.map +1 -1
  129. package/dist/features/render-graph-contribution.d.ts +5 -0
  130. package/dist/features/render-graph-contribution.d.ts.map +1 -1
  131. package/dist/features/render-graph-raster.d.ts +1 -0
  132. package/dist/features/render-graph-raster.d.ts.map +1 -1
  133. package/dist/features/targets.d.ts +2 -0
  134. package/dist/features/targets.d.ts.map +1 -1
  135. package/dist/features/types.d.ts +48 -0
  136. package/dist/features/types.d.ts.map +1 -1
  137. package/dist/fullscreen-post-process-pass.d.ts +15 -7
  138. package/dist/fullscreen-post-process-pass.d.ts.map +1 -1
  139. package/dist/glyph-text-layout-system.d.ts +1 -1
  140. package/dist/glyph-text-layout-system.d.ts.map +1 -1
  141. package/dist/gpu-dirty-ranges.d.ts +11 -0
  142. package/dist/gpu-dirty-ranges.d.ts.map +1 -0
  143. package/dist/gpu-driven/batch-topology.d.ts +17 -0
  144. package/dist/gpu-driven/batch-topology.d.ts.map +1 -1
  145. package/dist/gpu-driven/material-artifacts.d.ts +6 -0
  146. package/dist/gpu-driven/material-artifacts.d.ts.map +1 -1
  147. package/dist/gpu-driven/prepared-draw.d.ts.map +1 -1
  148. package/dist/gpu-driven/production-raster-material.d.ts +178 -0
  149. package/dist/gpu-driven/production-raster-material.d.ts.map +1 -0
  150. package/dist/gpu-driven/production-raster.d.ts +47 -3
  151. package/dist/gpu-driven/production-raster.d.ts.map +1 -1
  152. package/dist/gpu-driven/resource-allocation.d.ts +31 -0
  153. package/dist/gpu-driven/resource-allocation.d.ts.map +1 -0
  154. package/dist/gpu-driven/shadow-ownership.d.ts +14 -0
  155. package/dist/gpu-driven/shadow-ownership.d.ts.map +1 -0
  156. package/dist/gpu-driven/view-gpu.d.ts +26 -2
  157. package/dist/gpu-driven/view-gpu.d.ts.map +1 -1
  158. package/dist/gpu-scene.d.ts +5 -0
  159. package/dist/gpu-scene.d.ts.map +1 -1
  160. package/dist/hdrp-buffers.d.ts +2 -2
  161. package/dist/hdrp-buffers.d.ts.map +1 -1
  162. package/dist/ibl/frame-resources.d.ts.map +1 -1
  163. package/dist/ibl/skylight-bind-group.d.ts +14 -5
  164. package/dist/ibl/skylight-bind-group.d.ts.map +1 -1
  165. package/dist/index.d.ts +30 -7
  166. package/dist/index.d.ts.map +1 -1
  167. package/dist/index.mjs +780 -9
  168. package/dist/index.mjs.map +1 -1
  169. package/dist/inspection-types.d.ts +135 -1
  170. package/dist/inspection-types.d.ts.map +1 -1
  171. package/dist/instance-buffer-cache.d.ts +4 -4
  172. package/dist/instance-buffer-cache.d.ts.map +1 -1
  173. package/dist/instances.d.ts +47 -100
  174. package/dist/instances.d.ts.map +1 -1
  175. package/dist/internal.mjs +7 -8
  176. package/dist/internal.mjs.map +1 -1
  177. package/dist/pbr-pipeline.d.ts +22 -4
  178. package/dist/pbr-pipeline.d.ts.map +1 -1
  179. package/dist/pipeline/single-layer-medium-passes.d.ts +73 -0
  180. package/dist/pipeline/single-layer-medium-passes.d.ts.map +1 -0
  181. package/dist/pipeline/standard-forward-lane.d.ts.map +1 -1
  182. package/dist/pipeline/standard-output/graph.d.ts.map +1 -1
  183. package/dist/pipeline/standard-output/lut-gpu.d.ts +2 -2
  184. package/dist/pipeline/standard-output/lut-gpu.d.ts.map +1 -1
  185. package/dist/pipeline/standard-output/resources.d.ts +2 -2
  186. package/dist/pipeline/standard-output/resources.d.ts.map +1 -1
  187. package/dist/pipeline/standard-output/types.d.ts +4 -2
  188. package/dist/pipeline/standard-output/types.d.ts.map +1 -1
  189. package/dist/pipeline/standard-pipeline.d.ts.map +1 -1
  190. package/dist/pipeline/standard-post.d.ts.map +1 -1
  191. package/dist/pipeline-builder.d.ts +1 -1
  192. package/dist/pipeline-builder.d.ts.map +1 -1
  193. package/dist/plugin.d.ts.map +1 -1
  194. package/dist/prepare/prepared-graphics-resolver.d.ts +2 -0
  195. package/dist/prepare/prepared-graphics-resolver.d.ts.map +1 -1
  196. package/dist/publication/contract.d.ts +77 -0
  197. package/dist/publication/contract.d.ts.map +1 -0
  198. package/dist/publication/dependencies.d.ts +7 -0
  199. package/dist/publication/dependencies.d.ts.map +1 -0
  200. package/dist/publication/prepare-geometry.d.ts +9 -0
  201. package/dist/publication/prepare-geometry.d.ts.map +1 -0
  202. package/dist/publication/programs.d.ts +5 -0
  203. package/dist/publication/programs.d.ts.map +1 -0
  204. package/dist/publication/publisher.d.ts +33 -0
  205. package/dist/publication/publisher.d.ts.map +1 -0
  206. package/dist/publication/receiver.d.ts +29 -0
  207. package/dist/publication/receiver.d.ts.map +1 -0
  208. package/dist/publication/resource-scope.d.ts +18 -0
  209. package/dist/publication/resource-scope.d.ts.map +1 -0
  210. package/dist/publication/targets.d.ts +33 -0
  211. package/dist/publication/targets.d.ts.map +1 -0
  212. package/dist/publication/video.d.ts +5 -0
  213. package/dist/publication/video.d.ts.map +1 -0
  214. package/dist/record/barrel-distortion-frame.d.ts +15 -0
  215. package/dist/record/barrel-distortion-frame.d.ts.map +1 -0
  216. package/dist/record/dynamic-geometry-consumption.d.ts +10 -2
  217. package/dist/record/dynamic-geometry-consumption.d.ts.map +1 -1
  218. package/dist/record/fold-buckets.d.ts +95 -0
  219. package/dist/record/fold-buckets.d.ts.map +1 -0
  220. package/dist/record/fold-instance-buffer.d.ts +6 -0
  221. package/dist/record/fold-instance-buffer.d.ts.map +1 -0
  222. package/dist/record/frame-lighting.d.ts +1 -0
  223. package/dist/record/frame-lighting.d.ts.map +1 -1
  224. package/dist/record/frame-snapshot.d.ts +43 -9
  225. package/dist/record/frame-snapshot.d.ts.map +1 -1
  226. package/dist/record/frame.d.ts +15 -65
  227. package/dist/record/frame.d.ts.map +1 -1
  228. package/dist/record/gpu-draw-receipts.d.ts +11 -0
  229. package/dist/record/gpu-draw-receipts.d.ts.map +1 -0
  230. package/dist/record/gpu-timing.d.ts +8 -0
  231. package/dist/record/gpu-timing.d.ts.map +1 -1
  232. package/dist/record/helpers.d.ts +2 -2
  233. package/dist/record/helpers.d.ts.map +1 -1
  234. package/dist/record/main-pass-geometry.d.ts +22 -6
  235. package/dist/record/main-pass-geometry.d.ts.map +1 -1
  236. package/dist/record/main-pass-material.d.ts +14 -10
  237. package/dist/record/main-pass-material.d.ts.map +1 -1
  238. package/dist/record/main-pass-sprite-draws.d.ts +3 -16
  239. package/dist/record/main-pass-sprite-draws.d.ts.map +1 -1
  240. package/dist/record/main-pass.d.ts +13 -2
  241. package/dist/record/main-pass.d.ts.map +1 -1
  242. package/dist/record/motion-blur-receipt.d.ts +11 -0
  243. package/dist/record/motion-blur-receipt.d.ts.map +1 -0
  244. package/dist/record/prepared-material-bindings.d.ts +3 -3
  245. package/dist/record/prepared-material-bindings.d.ts.map +1 -1
  246. package/dist/record/probe-blend-buffer.d.ts +16 -0
  247. package/dist/record/probe-blend-buffer.d.ts.map +1 -0
  248. package/dist/record/recovery-pipeline.d.ts.map +1 -1
  249. package/dist/record/render-context.d.ts +24 -5
  250. package/dist/record/render-context.d.ts.map +1 -1
  251. package/dist/record/shadow-pass.d.ts +2 -0
  252. package/dist/record/shadow-pass.d.ts.map +1 -1
  253. package/dist/record/skybox-post-pass.d.ts +1 -1
  254. package/dist/record/skybox-post-pass.d.ts.map +1 -1
  255. package/dist/record/sprite-instance-buffer.d.ts +31 -0
  256. package/dist/record/sprite-instance-buffer.d.ts.map +1 -0
  257. package/dist/record/target-capture-graph.d.ts +19 -0
  258. package/dist/record/target-capture-graph.d.ts.map +1 -0
  259. package/dist/record/typed-frame-graph.d.ts +24 -15
  260. package/dist/record/typed-frame-graph.d.ts.map +1 -1
  261. package/dist/record/view-ubo.d.ts +11 -3
  262. package/dist/record/view-ubo.d.ts.map +1 -1
  263. package/dist/record/volume-params.d.ts +9 -0
  264. package/dist/record/volume-params.d.ts.map +1 -0
  265. package/dist/recovery/render-system-candidate.d.ts +14 -4
  266. package/dist/recovery/render-system-candidate.d.ts.map +1 -1
  267. package/dist/reflection/record-owner.d.ts.map +1 -1
  268. package/dist/render-contract.d.ts +46 -5
  269. package/dist/render-contract.d.ts.map +1 -1
  270. package/dist/render-graph-primitives.d.ts.map +1 -1
  271. package/dist/render-pipeline.d.ts +103 -2
  272. package/dist/render-pipeline.d.ts.map +1 -1
  273. package/dist/render-system-extract-tail.d.ts +3 -2
  274. package/dist/render-system-extract-tail.d.ts.map +1 -1
  275. package/dist/render-system-extract.d.ts +18 -9
  276. package/dist/render-system-extract.d.ts.map +1 -1
  277. package/dist/render-system-presentation.d.ts +23 -0
  278. package/dist/render-system-presentation.d.ts.map +1 -0
  279. package/dist/render-system-producer-roots.d.ts +10 -0
  280. package/dist/render-system-producer-roots.d.ts.map +1 -0
  281. package/dist/render-system-projections.d.ts +3 -2
  282. package/dist/render-system-projections.d.ts.map +1 -1
  283. package/dist/render-system-residency.d.ts +12 -0
  284. package/dist/render-system-residency.d.ts.map +1 -0
  285. package/dist/render-system.d.ts +22 -21
  286. package/dist/render-system.d.ts.map +1 -1
  287. package/dist/scene/probe-blend.d.ts +27 -0
  288. package/dist/scene/probe-blend.d.ts.map +1 -1
  289. package/dist/scene/render-scene.d.ts +18 -7
  290. package/dist/scene/render-scene.d.ts.map +1 -1
  291. package/dist/scene/render-source.d.ts +42 -0
  292. package/dist/scene/render-source.d.ts.map +1 -0
  293. package/dist/scene/source-systems.d.ts +6 -0
  294. package/dist/scene/source-systems.d.ts.map +1 -0
  295. package/dist/ssao-buffers.d.ts +9 -0
  296. package/dist/ssao-buffers.d.ts.map +1 -1
  297. package/dist/surface/dynamic-input.d.ts +133 -0
  298. package/dist/surface/dynamic-input.d.ts.map +1 -0
  299. package/dist/surface/gpu-driven.d.ts +41 -0
  300. package/dist/surface/gpu-driven.d.ts.map +1 -0
  301. package/dist/surface/submission-observation.d.ts +136 -0
  302. package/dist/surface/submission-observation.d.ts.map +1 -0
  303. package/dist/systems/skin-palette-allocator.d.ts.map +1 -1
  304. package/dist/systems/skin-palette-types.d.ts +10 -0
  305. package/dist/systems/skin-palette-types.d.ts.map +1 -1
  306. package/dist/systems/transparent-dispatch.d.ts +2 -2
  307. package/dist/systems/transparent-dispatch.d.ts.map +1 -1
  308. package/dist/systems/transparent-sort-config.d.ts +2 -1
  309. package/dist/systems/transparent-sort-config.d.ts.map +1 -1
  310. package/dist/temporal/gpu.d.ts +13 -1
  311. package/dist/temporal/gpu.d.ts.map +1 -1
  312. package/dist/temporal/index.mjs +6 -7
  313. package/dist/temporal/inspection.d.ts.map +1 -1
  314. package/dist/temporal/standard-scene-data.d.ts.map +1 -1
  315. package/dist/temporal/target-coverage-attachment.d.ts.map +1 -1
  316. package/dist/transmission/single-layer-medium.d.ts +89 -0
  317. package/dist/transmission/single-layer-medium.d.ts.map +1 -0
  318. package/dist/typed-render-graph-primitives.d.ts +14 -2
  319. package/dist/typed-render-graph-primitives.d.ts.map +1 -1
  320. package/dist/volume/component.d.ts +9 -4
  321. package/dist/volume/component.d.ts.map +1 -1
  322. package/dist/volume/extract.d.ts +1 -1
  323. package/dist/volume/extract.d.ts.map +1 -1
  324. package/dist/volume/inspection.d.ts +2 -0
  325. package/dist/volume/inspection.d.ts.map +1 -1
  326. package/dist/volume/passes.d.ts +4 -1
  327. package/dist/volume/passes.d.ts.map +1 -1
  328. package/dist/volume/resources.d.ts.map +1 -1
  329. package/package.json +22 -21
  330. package/src/__tests__/atmosphere-daylight.dawn.test.ts +72 -0
  331. package/src/__tests__/auto-exposure-transaction.integration.test.ts +4 -9
  332. package/src/__tests__/barrel-distortion-lkg.integration.test.ts +353 -0
  333. package/src/__tests__/barrel-distortion.dawn.test.ts +41 -0
  334. package/src/__tests__/barrel-distortion.unit.test.ts +364 -0
  335. package/src/__tests__/construct-renderer-identity.unit.test.ts +49 -0
  336. package/src/__tests__/detached-recovery-graph.unit.test.ts +277 -0
  337. package/src/__tests__/device-feature-admission.unit.test.ts +3 -2
  338. package/src/__tests__/device-loss-fanout.unit.test.ts +36 -1
  339. package/src/__tests__/docs-gate-green.unit.test.ts +112 -1
  340. package/src/__tests__/factory-contract.integration.test.ts +295 -45
  341. package/src/__tests__/feature-depth-input.dawn.test.ts +129 -2
  342. package/src/__tests__/fullscreen-feature-plan.unit.test.ts +14 -3
  343. package/src/__tests__/gpu-dirty-ranges.unit.test.ts +22 -0
  344. package/src/__tests__/gpu-driven-baseline.characterization.test.ts +16 -3
  345. package/src/__tests__/gpu-driven-batch-topology-pbr.unit.test.ts +12 -0
  346. package/src/__tests__/gpu-driven-material-artifacts.unit.test.ts +143 -0
  347. package/src/__tests__/gpu-driven-pbr.dawn.test.ts +5 -6
  348. package/src/__tests__/gpu-driven-production.integration.test.ts +482 -3
  349. package/src/__tests__/gpu-driven-shadow-views.dawn.test.ts +6 -5
  350. package/src/__tests__/gpu-driven-view-gpu-evidence.ts +94 -6
  351. package/src/__tests__/gpu-driven-view-graph.integration.test.ts +18 -2
  352. package/src/__tests__/gpu-driven-view.browser.test.ts +5 -8
  353. package/src/__tests__/gpu-driven-view.dawn.test.ts +6 -2
  354. package/src/__tests__/gpu-driven-view.unit.test.ts +1 -1
  355. package/src/__tests__/gpu-pass-timing-lifecycle.integration.test.ts +1 -0
  356. package/src/__tests__/gpu-pass-timing.browser.test.ts +6 -4
  357. package/src/__tests__/gpu-pass-timing.rhi-null.unit.test.ts +1 -0
  358. package/src/__tests__/gpu-scene.unit.test.ts +119 -9
  359. package/src/__tests__/instance-allocation-failure.unit.test.ts +57 -0
  360. package/src/__tests__/instances-culling.integration.test.ts +10 -36
  361. package/src/__tests__/instances-store.unit.test.ts +97 -305
  362. package/src/__tests__/instances-world-ownership.integration.test.ts +62 -0
  363. package/src/__tests__/ktx2-basis-gpu-consumer.dawn.test.ts +4 -1
  364. package/src/__tests__/main-pass-material-medium-selection.unit.test.ts +145 -0
  365. package/src/__tests__/material-shader-prewarm.unit.test.ts +59 -0
  366. package/src/__tests__/material-snapshot-mutation.integration.test.ts +39 -1
  367. package/src/__tests__/materials-standard-contract.unit.test.ts +0 -1
  368. package/src/__tests__/morph-culling-reentry.dawn.test.ts +5 -5
  369. package/src/__tests__/morph-visual-evidence.integration.test.ts +8 -7
  370. package/src/__tests__/motion-blur-compute.dawn.test.ts +13 -7
  371. package/src/__tests__/motion-blur.pixel.integration.test.ts +2 -2
  372. package/src/__tests__/nineslice-handle-surface.unit.test.ts +4 -4
  373. package/src/__tests__/pbr-view-layout.unit.test.ts +9 -0
  374. package/src/__tests__/physical-clearcoat.integration.test.ts +66 -8
  375. package/src/__tests__/physical-material-budget.unit.test.ts +40 -0
  376. package/src/__tests__/prepared-graphics-capability.unit.test.ts +66 -2
  377. package/src/__tests__/probe-bindings.unit.test.ts +582 -1
  378. package/src/__tests__/probe-scene-dirty.integration.test.ts +28 -1
  379. package/src/__tests__/receipt-observation-retirement.unit.test.ts +65 -0
  380. package/src/__tests__/recovery-candidate-prepare.contract.test.ts +69 -0
  381. package/src/__tests__/render-error-code-owner.test-d.ts +8 -0
  382. package/src/__tests__/render-feature-diagnostics.unit.test.ts +15 -2
  383. package/src/__tests__/render-feature-error-reporting.unit.test.ts +21 -1
  384. package/src/__tests__/render-feature-prepared-diagnostics.unit.test.ts +10 -1
  385. package/src/__tests__/render-feature-retry.unit.test.ts +12 -1
  386. package/src/__tests__/render-scene-mixed-updates.integration.test.ts +145 -19
  387. package/src/__tests__/render-scene-projection.unit.test.ts +36 -11
  388. package/src/__tests__/render-scene-temporal-retry.unit.test.ts +20 -20
  389. package/src/__tests__/render-target-probe-soak.perf.test.ts +2 -2
  390. package/src/__tests__/render-temporal-environment-consumer.browser.test.ts +3 -3
  391. package/src/__tests__/render-temporal-environment-consumer.dawn.test.ts +5 -2
  392. package/src/__tests__/renderer-factory-material-contract.unit.test.ts +42 -8
  393. package/src/__tests__/renderer-frame-generation-fence.integration.test.ts +16 -0
  394. package/src/__tests__/renderer-frame-transaction.integration.test.ts +26 -10
  395. package/src/__tests__/resource-allocation.unit.test.ts +123 -0
  396. package/src/__tests__/single-layer-medium-passes.unit.test.ts +275 -0
  397. package/src/__tests__/skin-motion-regression.unit.test.ts +70 -1
  398. package/src/__tests__/skin-palette-recycling.dawn.test.ts +97 -0
  399. package/src/__tests__/skinned-shadow-caster.test.ts +15 -0
  400. package/src/__tests__/ssr-carrier-public-contract.unit.test.ts +21 -0
  401. package/src/__tests__/ssr-gpu-dispatch.browser.test.ts +4 -4
  402. package/src/__tests__/ssr-gpu-dispatch.dawn.test.ts +2 -2
  403. package/src/__tests__/ssr-gpu-dispatch.ts +1 -1
  404. package/src/__tests__/ssr-receiver-coverage.dawn.test.ts +6 -2
  405. package/src/__tests__/standard-output-chain-contract.unit.test.ts +28 -0
  406. package/src/__tests__/standard-pbr-artifact-assembly.unit.test.ts +46 -1
  407. package/src/__tests__/standard-pipeline.integration.test.ts +182 -1
  408. package/src/__tests__/surface-dynamic-buffer-lifecycle.unit.test.ts +506 -0
  409. package/src/__tests__/surface-submission-observation.unit.test.ts +812 -0
  410. package/src/__tests__/temporal-history-lifecycle.unit.test.ts +32 -0
  411. package/src/__tests__/temporal-performance.integration.test.ts +3 -3
  412. package/src/__tests__/visibility-instances.integration.test.ts +7 -19
  413. package/src/__tests__/visibility-producer-matrix.integration.test.ts +9 -20
  414. package/src/__tests__/volume-optics-oracle.unit.test.ts +4 -2
  415. package/src/__tests__/volumetric-fog-budget-recovery.integration.test.ts +30 -20
  416. package/src/__tests__/volumetric-fog-errors.unit.test.ts +4 -3
  417. package/src/__tests__/volumetric-fog-multiple.unit.test.ts +55 -0
  418. package/src/__tests__/volumetric-fog-spot-frame-optics.integration.test.ts +1 -1
  419. package/src/__tests__/volumetric-fog-stage-readback.dawn.test.ts +113 -9
  420. package/src/__tests__/volumetric-fog-topology.unit.test.ts +5 -3
  421. package/src/assembly/backend-contract.ts +30 -0
  422. package/src/assembly/barrel-distortion-inspection.ts +22 -0
  423. package/src/assembly/canvas-draw-guard.ts +11 -0
  424. package/src/assembly/cloud-shadow-entry.ts +22 -0
  425. package/src/assembly/device-feature-admission.ts +2 -2
  426. package/src/assembly/dynamic-geometry-host.ts +65 -37
  427. package/src/assembly/dynamic-geometry-runtime.ts +7 -1
  428. package/src/assembly/factory.ts +2 -30
  429. package/src/assembly/host-contract.ts +8 -5
  430. package/src/assembly/material/assembly.ts +25 -13
  431. package/src/assembly/material/pipeline-helpers.ts +53 -12
  432. package/src/assembly/material-shader-policy.ts +55 -0
  433. package/src/assembly/material-shader-prewarm.ts +21 -10
  434. package/src/assembly/recovery/device-loss-fanout.ts +13 -0
  435. package/src/assembly/recovery/renderer-recover.ts +50 -18
  436. package/src/assembly/render-feature-post-processes.ts +54 -0
  437. package/src/assembly/render-target-host.ts +57 -47
  438. package/src/assembly/renderer-facade.ts +7 -2
  439. package/src/assembly/renderer-feature-inspection.ts +8 -2
  440. package/src/assembly/renderer-frame-transaction.ts +23 -0
  441. package/src/assembly/renderer-inspection.ts +28 -0
  442. package/src/assembly/skin-palette-owner.ts +1 -1
  443. package/src/assembly/temporal-post-process-prewarm.ts +3 -3
  444. package/src/assembly/webgpu-pbr-ready.ts +9 -1
  445. package/src/assembly/webgpu-ready-per-pass.ts +104 -0
  446. package/src/assembly/webgpu-ready.ts +116 -62
  447. package/src/assembly/webgpu-renderer-bootstrap.ts +0 -12
  448. package/src/assembly/webgpu-renderer-observation-owner.ts +222 -0
  449. package/src/assembly/webgpu-renderer.ts +303 -313
  450. package/src/assembly/webgpu-vertex-layouts.ts +1 -1
  451. package/src/barrel-distortion.ts +247 -0
  452. package/src/cloud/__tests__/cloud-density-parity.dawn.test.ts +173 -0
  453. package/src/cloud/__tests__/cloud-layer-framebuffer-y.dawn.test.ts +265 -0
  454. package/src/cloud/__tests__/cloud-layer.browser.test.ts +432 -0
  455. package/src/cloud/__tests__/cloud-layer.unit.test.ts +634 -0
  456. package/src/cloud/density.ts +600 -0
  457. package/src/cloud/extract.ts +110 -0
  458. package/src/cloud/feature.ts +1810 -0
  459. package/src/cloud/frame-context.ts +42 -0
  460. package/src/cloud/inspection.ts +130 -0
  461. package/src/cloud/optics.ts +285 -0
  462. package/src/cloud/parameters.ts +255 -0
  463. package/src/cloud/resources.ts +122 -0
  464. package/src/cloud/shadow.ts +167 -0
  465. package/src/cloud/temporal.ts +226 -0
  466. package/src/components/barrel-distortion.ts +46 -0
  467. package/src/components/cloud-layer.ts +47 -0
  468. package/src/components/index.ts +2 -0
  469. package/src/components/instances.ts +18 -45
  470. package/src/components/sprite-instances.ts +1 -1
  471. package/src/construct-renderer.ts +1 -1
  472. package/src/device/gpu-residency.ts +26 -25
  473. package/src/dynamic-geometry.ts +12 -1
  474. package/src/errors/cloud.ts +103 -0
  475. package/src/errors/render.ts +47 -8
  476. package/src/examples/single-layer-medium-surface.ts +59 -0
  477. package/src/extract/camera.ts +15 -1
  478. package/src/extract/contracts.ts +5 -0
  479. package/src/extract/material-context.ts +21 -0
  480. package/src/features/barrel-distortion.ts +172 -0
  481. package/src/features/error-reporting.ts +26 -6
  482. package/src/features/host.ts +128 -19
  483. package/src/features/plan.ts +10 -0
  484. package/src/features/render-graph-contribution.ts +9 -0
  485. package/src/features/render-graph-raster.ts +45 -3
  486. package/src/features/targets.ts +66 -0
  487. package/src/features/types.ts +51 -0
  488. package/src/fullscreen-post-process-pass.ts +41 -9
  489. package/src/glyph-text-layout-system.ts +2 -2
  490. package/src/gpu-dirty-ranges.ts +48 -0
  491. package/src/gpu-driven/batch-topology.ts +53 -0
  492. package/src/gpu-driven/material-artifacts.ts +33 -25
  493. package/src/gpu-driven/prepared-draw.ts +12 -4
  494. package/src/gpu-driven/production-raster-material.ts +1894 -0
  495. package/src/gpu-driven/production-raster.ts +825 -784
  496. package/src/gpu-driven/resource-allocation.ts +142 -0
  497. package/src/gpu-driven/shadow-ownership.ts +71 -0
  498. package/src/gpu-driven/view-gpu.ts +164 -10
  499. package/src/gpu-scene.ts +75 -84
  500. package/src/hdrp-buffers.ts +4 -3
  501. package/src/ibl/frame-resources.ts +0 -1
  502. package/src/ibl/skylight-bind-group.ts +62 -32
  503. package/src/index.ts +205 -9
  504. package/src/inspection-types.ts +162 -0
  505. package/src/instance-buffer-cache.ts +4 -4
  506. package/src/instances.ts +152 -569
  507. package/src/pbr-pipeline.ts +230 -30
  508. package/src/pipeline/single-layer-medium-passes.ts +267 -0
  509. package/src/pipeline/standard-forward-lane.ts +313 -57
  510. package/src/pipeline/standard-output/graph.ts +8 -2
  511. package/src/pipeline/standard-output/lut-gpu.ts +3 -3
  512. package/src/pipeline/standard-output/resources.ts +2 -2
  513. package/src/pipeline/standard-output/types.ts +12 -1
  514. package/src/pipeline/standard-pipeline.ts +291 -18
  515. package/src/pipeline/standard-post.ts +90 -24
  516. package/src/pipeline-builder.ts +1 -1
  517. package/src/plugin.ts +4 -0
  518. package/src/points-lines/__tests__/points-lines.bench.ts +17 -8
  519. package/src/prepare/prepared-graphics-resolver.ts +2 -0
  520. package/src/publication/__tests__/derived-geometry.integration.test.ts +177 -0
  521. package/src/publication/__tests__/features.integration.test.ts +122 -0
  522. package/src/publication/__tests__/programs.unit.test.ts +25 -0
  523. package/src/publication/__tests__/publication.integration.test.ts +370 -0
  524. package/src/publication/__tests__/targets.integration.test.ts +120 -0
  525. package/src/publication/__tests__/video.browser.test.ts +50 -0
  526. package/src/publication/contract.ts +104 -0
  527. package/src/publication/dependencies.ts +54 -0
  528. package/src/publication/prepare-geometry.ts +94 -0
  529. package/src/publication/programs.ts +45 -0
  530. package/src/publication/publisher.ts +618 -0
  531. package/src/publication/receiver.ts +297 -0
  532. package/src/publication/resource-scope.ts +31 -0
  533. package/src/publication/targets.ts +182 -0
  534. package/src/publication/video.ts +33 -0
  535. package/src/record/__tests__/main-pass-geometry.unit.test.ts +30 -0
  536. package/src/record/__tests__/material-bg-cache.unit.test.ts +15 -1
  537. package/src/record/__tests__/sprite-material-abi.unit.test.ts +9 -11
  538. package/src/record/__tests__/temporal-payload.unit.test.ts +1 -1
  539. package/src/record/__tests__/transparent-group2-selection.unit.test.ts +11 -0
  540. package/src/record/__tests__/typed-frame-graph-plan.unit.test.ts +1 -0
  541. package/src/record/__tests__/video-texture-view.unit.test.ts +9 -9
  542. package/src/record/__tests__/view-ubo-layout.unit.test.ts +4 -3
  543. package/src/record/barrel-distortion-frame.ts +110 -0
  544. package/src/record/dynamic-geometry-consumption.ts +39 -9
  545. package/src/record/fold-buckets.ts +855 -0
  546. package/src/record/fold-instance-buffer.ts +51 -0
  547. package/src/record/frame-lighting.ts +36 -2
  548. package/src/record/frame-snapshot.ts +45 -9
  549. package/src/record/frame.ts +258 -1105
  550. package/src/record/gpu-draw-receipts.ts +38 -0
  551. package/src/record/gpu-timing.ts +48 -5
  552. package/src/record/helpers.ts +2 -2
  553. package/src/record/main-pass-geometry.ts +272 -84
  554. package/src/record/main-pass-material.ts +102 -36
  555. package/src/record/main-pass-sprite-draws.ts +13 -217
  556. package/src/record/main-pass.ts +164 -27
  557. package/src/record/motion-blur-receipt.ts +91 -0
  558. package/src/record/prepared-material-bindings.ts +11 -6
  559. package/src/record/probe-blend-buffer.ts +180 -0
  560. package/src/record/recovery-pipeline.ts +35 -3
  561. package/src/record/render-context.ts +41 -5
  562. package/src/record/shadow-pass.ts +30 -4
  563. package/src/record/skybox-post-pass.ts +28 -4
  564. package/src/record/sprite-instance-buffer.ts +155 -0
  565. package/src/record/target-capture-graph.ts +258 -0
  566. package/src/record/typed-frame-graph.ts +776 -340
  567. package/src/record/view-ubo.ts +27 -4
  568. package/src/record/volume-params.ts +225 -0
  569. package/src/recovery/render-system-candidate.ts +243 -50
  570. package/src/reflection/record-owner.ts +7 -3
  571. package/src/render-contract.ts +54 -5
  572. package/src/render-graph-primitives.ts +7 -1
  573. package/src/render-pipeline.ts +130 -0
  574. package/src/render-system-extract-tail.ts +90 -78
  575. package/src/render-system-extract.ts +76 -76
  576. package/src/render-system-presentation.ts +56 -0
  577. package/src/render-system-producer-roots.ts +96 -0
  578. package/src/render-system-projections.ts +3 -2
  579. package/src/render-system-residency.ts +159 -0
  580. package/src/render-system.ts +421 -408
  581. package/src/scene/probe-blend.ts +96 -4
  582. package/src/scene/render-scene.ts +416 -337
  583. package/src/scene/render-source.ts +90 -0
  584. package/src/scene/source-systems.ts +33 -0
  585. package/src/ssao-buffers.ts +95 -2
  586. package/src/surface/__tests__/dynamic-input.unit.test.ts +374 -0
  587. package/src/surface/__tests__/gpu-driven.unit.test.ts +87 -0
  588. package/src/surface/dynamic-input.ts +658 -0
  589. package/src/surface/gpu-driven.ts +147 -0
  590. package/src/surface/submission-observation.ts +517 -0
  591. package/src/systems/skin-palette-allocator.ts +5 -1
  592. package/src/systems/skin-palette-types.ts +11 -0
  593. package/src/systems/transparent-dispatch.ts +2 -2
  594. package/src/systems/transparent-sort-config.ts +3 -1
  595. package/src/temporal/gpu.ts +101 -17
  596. package/src/temporal/inspection.ts +7 -1
  597. package/src/temporal/standard-scene-data.ts +5 -0
  598. package/src/temporal/target-coverage-attachment.ts +4 -0
  599. package/src/transmission/__tests__/single-layer-medium.unit.test.ts +149 -0
  600. package/src/transmission/__tests__/standard-transmission.dawn.test.ts +12 -11
  601. package/src/transmission/single-layer-medium.ts +322 -0
  602. package/src/typed-render-graph-primitives.ts +70 -2
  603. package/src/volume/component.ts +10 -9
  604. package/src/volume/extract.ts +11 -5
  605. package/src/volume/inspection.ts +3 -0
  606. package/src/volume/passes.ts +87 -4
  607. package/src/volume/resources.ts +2 -1
  608. package/dist/chunk-3RTCJTH4.mjs +0 -1610
  609. package/dist/chunk-3RTCJTH4.mjs.map +0 -1
  610. package/dist/chunk-BLXGONR2.mjs.map +0 -1
  611. package/dist/chunk-ILQ5MEZF.mjs +0 -32
  612. package/dist/chunk-ILQ5MEZF.mjs.map +0 -1
  613. package/dist/chunk-LEAXOMYJ.mjs.map +0 -1
  614. package/dist/chunk-NB2S7ZRX.mjs +0 -1783
  615. package/dist/chunk-NB2S7ZRX.mjs.map +0 -1
  616. package/dist/chunk-NNQL7CB3.mjs +0 -1713
  617. package/dist/chunk-NNQL7CB3.mjs.map +0 -1
  618. package/dist/chunk-OO3DRYK7.mjs.map +0 -1
  619. package/dist/chunk-PA5DRJNI.mjs.map +0 -1
  620. package/dist/chunk-PLAXOOX5.mjs +0 -1907
  621. package/dist/chunk-PLAXOOX5.mjs.map +0 -1
  622. package/dist/chunk-RXZ3RGOU.mjs +0 -53
  623. package/dist/chunk-RXZ3RGOU.mjs.map +0 -1
  624. package/dist/chunk-VOZWDM3L.mjs.map +0 -1
@@ -3,7 +3,12 @@ import type { World } from '@forgeax/engine-ecs';
3
3
  import type { RenderReadLease } from '@forgeax/engine-ecs/projection';
4
4
  import type { Vec3 } from '@forgeax/engine-math';
5
5
  import type { ProfileFrameToken, Profiler } from '@forgeax/engine-profiler';
6
- import type { ColorValueDomain, RenderGraphError } from '@forgeax/engine-render-graph';
6
+ import type {
7
+ ColorValueDomain,
8
+ RenderGraphError,
9
+ RenderGraphGenerationAllocationInspection,
10
+ RenderGraphResourceAllocationInspection,
11
+ } from '@forgeax/engine-render-graph';
7
12
  import type {
8
13
  BindGroupLayout,
9
14
  Buffer,
@@ -24,6 +29,8 @@ import type {
24
29
  import type { SkinError } from '@forgeax/engine-skinning';
25
30
  import type { ImageError } from '@forgeax/engine-types';
26
31
  import type { RhiBackendInstrumentation } from './assembly/backend-contract.js';
32
+ import type { CloudLayerInspection } from './cloud/inspection.js';
33
+ import type { BarrelDistortionData } from './components/barrel-distortion.js';
27
34
  import type { Antialias, BloomEnabled, CameraExposure, Tonemap } from './components/camera.js';
28
35
  import type { DynamicResolutionData } from './components/dynamic-resolution.js';
29
36
  import type { ScreenSpaceReflectionData } from './components/screen-space-reflection.js';
@@ -53,8 +60,9 @@ import type {
53
60
  TemporalTargetInspection,
54
61
  TransmissionInspection,
55
62
  } from './inspection-types.js';
56
- import type { InstanceCollectionInspection, InstanceCollectionStore } from './instances.js';
63
+ import type { InstanceCollectionInspection } from './instances.js';
57
64
  import type { RenderExtent } from './pipeline/render-extent.js';
65
+ import type { PublishedRenderFrameInput, RenderPublicationIdentity } from './publication/contract';
58
66
  import type { RenderSceneBounds } from './scene/render-scene-types.js';
59
67
  import type { SsrAdmissionIdentity } from './ssr/identity.js';
60
68
  import type {
@@ -94,6 +102,7 @@ import type {
94
102
  GpuPassTimingOptions,
95
103
  } from './record/gpu-pass-timing/index.js';
96
104
  import type { VolumeTimingObservation } from './record/gpu-timing.js';
105
+ import type { SurfaceDynamicInputFrame } from './surface/dynamic-input.js';
97
106
  import type { TemporalView } from './temporal/view.js';
98
107
  import type { VolumetricFogInspection } from './volume/inspection.js';
99
108
 
@@ -189,6 +198,8 @@ export interface CameraSnapshot {
189
198
  /** Target presentation rate; zero follows the accepted frame interval. */
190
199
  readonly targetFps?: number;
191
200
  };
201
+ /** Optional active-camera barrel projection, copied from the ECS schema. */
202
+ readonly barrelDistortion?: BarrelDistortionData;
192
203
  }
193
204
 
194
205
  /** Stable identity owned by the Standard feature host for output transform. */
@@ -370,6 +381,11 @@ export interface AtmosphereShaderSources {
370
381
  * and never reach into AssetRegistry or World.
371
382
  */
372
383
  export interface VolumetricFogFrameContext {
384
+ readonly additional?: readonly {
385
+ readonly densityTexture: Texture;
386
+ readonly densityView: TextureView;
387
+ readonly densityGeneration: number;
388
+ }[];
373
389
  readonly densityTexture: Texture;
374
390
  readonly densityView: TextureView;
375
391
  readonly paramsBuffer: Buffer;
@@ -407,8 +423,8 @@ export interface SpotLightProjectorFrameContext {
407
423
  * leases, receipts, inspection PODs, and recovery Result values.
408
424
  */
409
425
  export interface Renderer {
410
- /** Renderer-owned authoring and update path for large instance collections. */
411
- readonly instances: InstanceCollectionStore;
426
+ /** Publish one renderer-owned read-only Surface dynamic page for the next frame. */
427
+ setSurfaceDynamicInput(frame: SurfaceDynamicInputFrame | undefined): void;
412
428
  attach(world: World): RenderResult<RenderWorldLease, RenderError>;
413
429
  /** Prepare a standard MeshAsset for the active device generation. */
414
430
  prepareDynamicGeometry(
@@ -431,7 +447,9 @@ export interface Renderer {
431
447
  dynamicGeometryReceipt(candidate: DynamicGeometryCandidate): DynamicGeometryReceipt | undefined;
432
448
  cancelDynamicGeometry(candidate: DynamicGeometryCandidate): Result<void, DynamicGeometryError>;
433
449
  retireDynamicGeometry(candidate: DynamicGeometryCandidate): Result<void, DynamicGeometryError>;
434
- draw(input: RenderFrameInput): RenderResult<FrameReceipt, RenderError>;
450
+ draw(
451
+ input: RenderFrameInput | PublishedRenderFrameInput,
452
+ ): RenderResult<FrameReceipt, RenderError>;
435
453
  /**
436
454
  * Arm one upcoming submitted frame for explicit color-domain observation.
437
455
  * Observation buffers are not created, copied, mapped, or retained until a
@@ -499,6 +517,8 @@ export type RendererEvent =
499
517
  readonly kind: 'frame-submitted';
500
518
  readonly frameId: number;
501
519
  readonly deviceGeneration: number;
520
+ /** Compiled graph identity paired with the submitted picture. */
521
+ readonly graphGeneration?: number;
502
522
  /** The exact draw receipt, for observation when App owns the draw loop. */
503
523
  readonly receipt: FrameReceipt;
504
524
  };
@@ -553,13 +573,25 @@ export interface FrameObservationRequest {
553
573
  export interface FrameReceipt {
554
574
  readonly frameId: number;
555
575
  readonly deviceGeneration: number;
576
+ /** Whether this frame can present the active scene without a readiness fallback. */
577
+ readonly presentation: FramePresentation;
556
578
  /** Backend identity captured at submit and checked before observation. */
557
579
  readonly backendId?: RhiCaps['backendKind'];
558
580
  /** Monotonic compiled graph identity used by renderer-issued observations. */
559
581
  readonly graphGeneration?: number;
582
+ /**
583
+ * Effective output mapping for the submitted camera, including identity
584
+ * when this receipt has an accepted camera context. `undefined` means that
585
+ * no submitted display context is available; consumers must fail closed and
586
+ * must not infer identity or read the live World camera.
587
+ */
588
+ readonly barrelDistortion?: import('./barrel-distortion.js').BarrelDistortionMapping;
560
589
  readonly completed: Promise<RenderResult<void, RenderError>>;
561
590
  }
562
591
 
592
+ /** Producer-derived presentation readiness for one submitted frame. */
593
+ export type FramePresentation = 'pending' | 'ready';
594
+
563
595
  /**
564
596
  * The sole public draw input; World objects never cross this boundary. Render
565
597
  * owns extraction and graph interpretation, while the host owns encoding,
@@ -586,6 +618,12 @@ export interface RenderFrameInput {
586
618
  readonly fixedStep?: number;
587
619
  /** Optional profiler correlation token owned by App and consumed by Render. */
588
620
  readonly profileFrame?: ProfileFrameToken;
621
+ /**
622
+ * Select the geometry submission command lane while retaining the same
623
+ * extracted scene and material inputs. This is an acceptance/debug seam;
624
+ * both lanes remain subject to the ordinary resource and generation gates.
625
+ */
626
+ readonly geometryLane?: 'automatic' | 'direct';
589
627
  }
590
628
 
591
629
  /** Detached, bounded observation metadata tied to one FrameReceipt and request. */
@@ -719,8 +757,12 @@ export interface RenderInspection {
719
757
  readonly frameId: number;
720
758
  readonly deviceGeneration: number;
721
759
  };
760
+ /** Effective output mapping and accepted/LKG identity for the last picture. */
761
+ readonly barrelDistortion: import('./inspection-types').BarrelDistortionInspection;
722
762
  /** Renderer-owned authored volume projection and submit/LKG state. */
723
763
  readonly volumetricFog?: VolumetricFogInspection;
764
+ /** Renderer-owned procedural cloud projection from the latest resource-owner extract. */
765
+ readonly cloudLayer?: CloudLayerInspection;
724
766
  readonly features: readonly string[];
725
767
  /** Truthful lifecycle facts for every registered declarative feature. */
726
768
  readonly featureDiagnostics: readonly RenderFeatureDiagnostics[];
@@ -737,6 +779,10 @@ export interface RenderInspection {
737
779
  /** Standard MeshAsset dynamic-candidate lifecycle facts. */
738
780
  readonly dynamicGeometry?: DynamicGeometryInspection;
739
781
  readonly renderScene: RenderSceneInspection;
782
+ /** Detached logical allocation facts for graph-created render targets. */
783
+ readonly renderGraphResourceAllocation?: RenderGraphResourceAllocationInspection;
784
+ /** Detached logical allocation facts across graph generations. */
785
+ readonly renderGraphGenerationAllocation?: RenderGraphGenerationAllocationInspection;
740
786
  readonly reflectionProbes: ReflectionProbeInspection;
741
787
  /** Renderer-owned SSR dependency seam; consumer facts are projected from live owners. */
742
788
  readonly ssrDependencies: SsrDependenciesInspection;
@@ -832,6 +878,7 @@ export type DrawOwnerOptions = {
832
878
  /** Explicit pause/resume or replay lifecycle boundary for temporal owners. */
833
879
  readonly temporalReset?: boolean;
834
880
  readonly profileFrame?: ProfileFrameToken;
881
+ readonly geometryLane?: 'automatic' | 'direct';
835
882
  };
836
883
 
837
884
  /** Information attached to a device-loss notification. */
@@ -1018,6 +1065,8 @@ export type RenderPhaseSkipReason =
1018
1065
 
1019
1066
  /** First-version options bag (intentionally empty; reserved for v0.1). */
1020
1067
  export interface RendererOptions {
1068
+ /** Bind a source session before receiving any publication. */
1069
+ readonly publicationSource?: RenderPublicationIdentity;
1021
1070
  /** Producer-owned features installed by the renderer host. */
1022
1071
  readonly features?: readonly RenderFeature<unknown>[] | undefined;
1023
1072
  /** Standard profile consumed by the single renderer-owned pipeline. */
@@ -586,7 +586,13 @@ function dispatchFullscreenPass(
586
586
  detail: { readsKey: reads[0] ?? 'ldrColor', passName: name },
587
587
  });
588
588
  }
589
- recordFxaaPass(requireRenderGraphRecordContext(ctx), resolveCtx, graphPass, paramsOverride);
589
+ recordFxaaPass(
590
+ requireRenderGraphRecordContext(ctx),
591
+ resolveCtx,
592
+ graphPass,
593
+ paramsOverride,
594
+ graphOutputFormat,
595
+ );
590
596
  return;
591
597
  }
592
598
  const lookup = ctx.runtime.lookupPostProcess;
@@ -41,6 +41,7 @@ import type { DepthOfFieldSide } from './components/depth-of-field';
41
41
  import type { DirectionalShadowFilterLabel } from './components/directional-shadow-filter';
42
42
  import type { RenderError } from './errors/render';
43
43
  import type { RenderFeatureTargetKind } from './features/targets';
44
+ import type { RenderFeaturePlacement } from './features/types';
44
45
  import type { ShadowViewIdentity, ShadowViewProjection } from './gpu-driven/shadow-views';
45
46
  import {
46
47
  GPU_TEXTURE_USAGE_COPY_SRC,
@@ -249,6 +250,8 @@ export interface RenderPipelineTopology {
249
250
  readonly useFar: boolean;
250
251
  }
251
252
  | undefined;
253
+ /** Shape-only barrel admission; numeric mapping stays per-frame data. */
254
+ readonly barrelDistortion?: boolean | undefined;
252
255
  };
253
256
  /** Frame-stable Standard output policy; no raw RHI handles enter topology. */
254
257
  readonly output?: {
@@ -285,6 +288,10 @@ export interface RenderPipelineTopology {
285
288
  */
286
289
  readonly volumetricFog?: {
287
290
  readonly enabled: boolean;
291
+ readonly additional?: readonly {
292
+ readonly format: TextureFormat;
293
+ readonly extent: { readonly width: number; readonly height: number; readonly depth: number };
294
+ }[];
288
295
  readonly lightKind?: 'directional' | 'point' | 'spot' | undefined;
289
296
  readonly lightEntity?: number | undefined;
290
297
  readonly pointLightEntity?: number | undefined;
@@ -333,6 +340,8 @@ export interface RenderPipelineTopology {
333
340
  readonly standardLightingTopologySignature?: string | undefined;
334
341
  /** Internal graph fact; renderer callers do not configure transmission demand. */
335
342
  readonly transmissionDemand?: TransmissionDemand | undefined;
343
+ /** Whether the extracted frame contains a single-layer medium Surface. */
344
+ readonly singleLayerMedium?: boolean | undefined;
336
345
  }
337
346
 
338
347
  /** Resolve the built-in final-output dither policy from the pipeline asset. */
@@ -463,9 +472,30 @@ export interface RenderPipelineGpuDrivenProjection {
463
472
  pass: RhiRenderPassEncoder,
464
473
  resources: GraphResourceResolver,
465
474
  frameResources: GpuDrivenStandardPbrFrameResources,
475
+ filter?: RenderPipelineGpuDrivenFilter,
476
+ fragmentEntryPoint?: string,
466
477
  ): void;
467
478
  }
468
479
 
480
+ /** Material family selected by a typed scene pass for GPU-driven encoding. */
481
+ export type RenderPipelineGpuDrivenFilter =
482
+ | 'opaque'
483
+ | 'deferred-opaque'
484
+ | 'forward-only-opaque'
485
+ | 'single-layer-medium';
486
+
487
+ /** Graph-paired inputs available to a single-layer medium Surface pass. */
488
+ export interface RenderPipelineSurfaceMediumPair {
489
+ /** The resolved opaque scene color produced by the shared Standard owner. */
490
+ readonly opaqueColor: GraphTextureView;
491
+ /** Raw depth copy is backend-dependent and remains explicit when unavailable. */
492
+ readonly rawDepth:
493
+ | { readonly status: 'available'; readonly view: GraphTextureView }
494
+ | {
495
+ readonly status: 'unavailable';
496
+ readonly reason: 'depth-copy-unavailable';
497
+ };
498
+ }
469
499
  /** Exact scene rows selected by an indirect batch; palette offsets are global. */
470
500
  export interface GpuDrivenSceneMeshBinding {
471
501
  readonly meshBuffer: Buffer;
@@ -475,6 +505,8 @@ export interface GpuDrivenSceneMeshBinding {
475
505
 
476
506
  /** Producer-owned Standard PBR resources resolved during graph execution. */
477
507
  export interface GpuDrivenStandardPbrFrameResources {
508
+ /** Resource generation of the actual scene-index/indirect producer. */
509
+ readonly resourceGeneration?: number;
478
510
  readonly materialBindGroups: (BindGroup | undefined)[];
479
511
  /** Frame-global material slots keyed by the retained scene entity identity. */
480
512
  readonly materialSlotIndicesByEntity: Map<number, readonly number[]>;
@@ -485,6 +517,56 @@ export interface GpuDrivenStandardPbrFrameResources {
485
517
  colorFormats?: readonly TextureFormat[];
486
518
  /** Exact producer-owned numeric Material table consumed by scene-index PBR. */
487
519
  readonly sceneMaterialBuffer: Buffer;
520
+ /** Renderer-owned generic Surface page and frame/range metadata. */
521
+ readonly surfaceDynamicInput?: {
522
+ readonly page: Buffer;
523
+ readonly frame: Buffer;
524
+ readonly sharedFrame: Buffer;
525
+ readonly pageBytes: number;
526
+ readonly frameBytes: number;
527
+ readonly sharedFrameBytes: number;
528
+ };
529
+ /**
530
+ * Resolve the complete direct Surface slot-3 closure for one retained draw.
531
+ * The producer validates the stable draw identity and instance count before
532
+ * publishing a bind group; record never derives a frame-row address.
533
+ */
534
+ readonly surfaceDirectInstances?: (input: {
535
+ readonly worldId: number;
536
+ readonly entityKey: number;
537
+ readonly drawItemIndex: number;
538
+ readonly instanceCount: number;
539
+ readonly firstInstanceOrdinal?: number;
540
+ readonly instanceBuffer: Buffer;
541
+ readonly probeBuffer?: Buffer;
542
+ readonly probeOffset?: number;
543
+ }) => Result<
544
+ {
545
+ readonly bindGroup: BindGroup;
546
+ readonly dynamicOffsets: readonly number[];
547
+ readonly frameBase: number;
548
+ /** Public Surface member identities covered by the recorded command. */
549
+ readonly memberIds: readonly string[];
550
+ },
551
+ RhiError
552
+ >;
553
+ /** Frame-local sink fed only by actual Surface draw commands. */
554
+ readonly surfaceSubmissionObservation?: import('./surface/submission-observation').SurfaceSubmissionCandidate;
555
+ /** Existing Standard clustered group(2), supplied by the main-pass owner. */
556
+ clusterBindGroup?: BindGroup | undefined;
557
+ /** Rebind the same cluster resources around one batch-local mesh row page. */
558
+ clusterBindGroupForMesh?:
559
+ | ((meshBuffer: Buffer, bindingBytes: number) => BindGroup | undefined)
560
+ | undefined;
561
+ /** Rebind clustered lighting around the scene-index Mesh/Palette/Morph page. */
562
+ clusterBindGroupForSkin?:
563
+ | ((
564
+ meshBuffer: Buffer,
565
+ meshBindingBytes: number,
566
+ paletteBuffer: Buffer,
567
+ paletteBindingWindowBytes: number,
568
+ ) => BindGroup | undefined)
569
+ | undefined;
488
570
  resolveClusteredMeshBindGroup?: (binding: GpuDrivenSceneMeshBinding) => BindGroup;
489
571
  }
490
572
 
@@ -512,6 +594,8 @@ export interface RenderPipelineBuildContext<FrameCtx extends RenderPipelineFrame
512
594
  * inferring rgba16float support from the selected surface format.
513
595
  */
514
596
  readonly capabilities?: Pick<RhiCaps, 'rgba16floatRenderable'>;
597
+ /** Renderer-derived cloud shadow size shared by graph allocation and projection. */
598
+ readonly cloudShadowResolution?: number;
515
599
  /** Prepared typed graph resources owned by RenderSystem/RenderFrameState. */
516
600
  readonly standardOutput?: {
517
601
  readonly autoExposure?: {
@@ -541,6 +625,19 @@ export interface RenderPipelineBuildContext<FrameCtx extends RenderPipelineFrame
541
625
  readonly currentStability: RenderPipelineTarget;
542
626
  readonly previousStability: RenderPipelineTarget;
543
627
  };
628
+ /**
629
+ * Renderer-owned CloudLayer transport history. Each pair is backed by the
630
+ * same submit-fenced temporal owner as TAA, while the three attachments keep
631
+ * radiance, transmittance and representative depth in separate typed lanes.
632
+ */
633
+ readonly cloudHistory?: {
634
+ readonly currentRadiance: RenderPipelineTarget;
635
+ readonly previousRadiance: RenderPipelineTarget;
636
+ readonly currentTransmittance: RenderPipelineTarget;
637
+ readonly previousTransmittance: RenderPipelineTarget;
638
+ readonly currentDepth: RenderPipelineTarget;
639
+ readonly previousDepth: RenderPipelineTarget;
640
+ };
544
641
  /** Renderer-owned SSR temporal history targets for the admitted spatial chain. */
545
642
  readonly ssrHistory?: {
546
643
  readonly previous: RenderPipelineTarget;
@@ -573,6 +670,15 @@ export interface RenderPipelineBuildContext<FrameCtx extends RenderPipelineFrame
573
670
  semanticTargets?: readonly RenderPipelineTarget[],
574
671
  namedTargets?: Readonly<Record<string, RenderPipelineTarget>>,
575
672
  standardSurfaceAccesses?: readonly GraphAccess[],
673
+ featureSelectionOrPlacement?:
674
+ | {
675
+ /** Project only these identities at this ordered stage. */
676
+ readonly include?: readonly string[];
677
+ /** Keep these identities for a later ordered stage. */
678
+ readonly exclude?: readonly string[];
679
+ }
680
+ | RenderFeaturePlacement,
681
+ passNames?: readonly string[],
576
682
  ): Result<void, RenderPipelineBuildError>;
577
683
  /** Prepare feature-owned shadow draws and their early compute producers once. */
578
684
  contributeShadowFeatures?(): Result<
@@ -585,6 +691,30 @@ export interface RenderPipelineBuildContext<FrameCtx extends RenderPipelineFrame
585
691
  ): Result<void, RenderPipelineBuildError>;
586
692
  /** Whether a producer-owned feature is installed for this graph build. */
587
693
  hasFeature?(identity: string): boolean;
694
+ /** Whether a producer-owned feature has executable work at this graph build. */
695
+ hasFeatureWork?(identity: string, placement?: RenderFeaturePlacement): boolean;
696
+ /** Whether a producer-owned feature has a resolved raster pass this frame. */
697
+ hasFeatureRasterWork?(identity: string, placement?: RenderFeaturePlacement): boolean;
698
+ }
699
+
700
+ /** Project the six CloudLayer history attachments into feature target aliases. */
701
+ export function renderPipelineCloudHistoryTargets(input: {
702
+ readonly currentRadiance: RenderPipelineTarget;
703
+ readonly previousRadiance: RenderPipelineTarget;
704
+ readonly currentTransmittance: RenderPipelineTarget;
705
+ readonly previousTransmittance: RenderPipelineTarget;
706
+ readonly currentDepth: RenderPipelineTarget;
707
+ readonly previousDepth: RenderPipelineTarget;
708
+ }): readonly RenderPipelineFeatureTarget[] {
709
+ const entries: readonly (readonly [string, RenderPipelineTarget])[] = [
710
+ ['cloud-history-radiance-previous', input.previousRadiance],
711
+ ['cloud-history-radiance-current', input.currentRadiance],
712
+ ['cloud-history-transmittance-previous', input.previousTransmittance],
713
+ ['cloud-history-transmittance-current', input.currentTransmittance],
714
+ ['cloud-history-depth-previous', input.previousDepth],
715
+ ['cloud-history-depth-current', input.currentDepth],
716
+ ];
717
+ return entries.map(([name, target]) => ({ name, kind: 'scene-color' as const, ...target }));
588
718
  }
589
719
 
590
720
  export type RenderPipelineBuildError = RenderGraphError | RenderError | RhiError;