@forgeax/engine-render 0.1.32 → 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 (624) hide show
  1. package/README.md +1374 -142
  2. package/dist/assembly/analytic-fog-registration.d.ts +3 -0
  3. package/dist/assembly/analytic-fog-registration.d.ts.map +1 -0
  4. package/dist/assembly/backend-contract.d.ts +2 -0
  5. package/dist/assembly/backend-contract.d.ts.map +1 -1
  6. package/dist/assembly/barrel-distortion-inspection.d.ts +3 -0
  7. package/dist/assembly/barrel-distortion-inspection.d.ts.map +1 -0
  8. package/dist/assembly/canvas-draw-guard.d.ts +3 -0
  9. package/dist/assembly/canvas-draw-guard.d.ts.map +1 -0
  10. package/dist/assembly/cloud-shadow-entry.d.ts +4 -0
  11. package/dist/assembly/cloud-shadow-entry.d.ts.map +1 -0
  12. package/dist/assembly/dynamic-geometry-host.d.ts +4 -1
  13. package/dist/assembly/dynamic-geometry-host.d.ts.map +1 -1
  14. package/dist/assembly/dynamic-geometry-runtime.d.ts +1 -1
  15. package/dist/assembly/dynamic-geometry-runtime.d.ts.map +1 -1
  16. package/dist/assembly/factory.d.ts +1 -1
  17. package/dist/assembly/factory.d.ts.map +1 -1
  18. package/dist/assembly/fxaa-registration.d.ts +4 -0
  19. package/dist/assembly/fxaa-registration.d.ts.map +1 -0
  20. package/dist/assembly/host-contract.d.ts +3 -3
  21. package/dist/assembly/host-contract.d.ts.map +1 -1
  22. package/dist/assembly/lod-observation.d.ts +4 -0
  23. package/dist/assembly/lod-observation.d.ts.map +1 -0
  24. package/dist/assembly/material/assembly.d.ts.map +1 -1
  25. package/dist/assembly/material/pipeline-helpers.d.ts +5 -0
  26. package/dist/assembly/material/pipeline-helpers.d.ts.map +1 -1
  27. package/dist/assembly/material-shader-policy.d.ts +16 -2
  28. package/dist/assembly/material-shader-policy.d.ts.map +1 -1
  29. package/dist/assembly/material-shader-prewarm.d.ts.map +1 -1
  30. package/dist/assembly/motion-blur-registration.d.ts +3 -0
  31. package/dist/assembly/motion-blur-registration.d.ts.map +1 -0
  32. package/dist/assembly/recovery/device-loss-fanout.d.ts.map +1 -1
  33. package/dist/assembly/recovery/renderer-recover.d.ts +2 -0
  34. package/dist/assembly/recovery/renderer-recover.d.ts.map +1 -1
  35. package/dist/assembly/render-feature-post-processes.d.ts +6 -0
  36. package/dist/assembly/render-feature-post-processes.d.ts.map +1 -0
  37. package/dist/assembly/renderer-facade.d.ts.map +1 -1
  38. package/dist/assembly/renderer-feature-inspection.d.ts +1 -1
  39. package/dist/assembly/renderer-feature-inspection.d.ts.map +1 -1
  40. package/dist/assembly/renderer-frame-transaction.d.ts +12 -0
  41. package/dist/assembly/renderer-frame-transaction.d.ts.map +1 -1
  42. package/dist/assembly/renderer-inspection.d.ts +11 -0
  43. package/dist/assembly/renderer-inspection.d.ts.map +1 -1
  44. package/dist/assembly/temporal-post-process-prewarm.d.ts +13 -0
  45. package/dist/assembly/temporal-post-process-prewarm.d.ts.map +1 -0
  46. package/dist/assembly/webgpu-pbr-ready.d.ts +1 -0
  47. package/dist/assembly/webgpu-pbr-ready.d.ts.map +1 -1
  48. package/dist/assembly/webgpu-ready-contract.d.ts +4 -3
  49. package/dist/assembly/webgpu-ready-contract.d.ts.map +1 -1
  50. package/dist/assembly/webgpu-ready-per-pass.d.ts +39 -0
  51. package/dist/assembly/webgpu-ready-per-pass.d.ts.map +1 -0
  52. package/dist/assembly/webgpu-ready.d.ts +2 -2
  53. package/dist/assembly/webgpu-ready.d.ts.map +1 -1
  54. package/dist/assembly/webgpu-renderer-bootstrap.d.ts.map +1 -1
  55. package/dist/assembly/webgpu-renderer-observation-owner.d.ts +35 -0
  56. package/dist/assembly/webgpu-renderer-observation-owner.d.ts.map +1 -0
  57. package/dist/assembly/webgpu-renderer.d.ts +1 -1
  58. package/dist/assembly/webgpu-renderer.d.ts.map +1 -1
  59. package/dist/authoring.mjs +1 -1
  60. package/dist/barrel-distortion.d.ts +47 -0
  61. package/dist/barrel-distortion.d.ts.map +1 -0
  62. package/dist/bloom-admission.d.ts +13 -0
  63. package/dist/bloom-admission.d.ts.map +1 -0
  64. package/dist/{chunk-PA5DRJNI.mjs → chunk-ELJFJ2BU.mjs} +2 -2
  65. package/dist/chunk-ELJFJ2BU.mjs.map +1 -0
  66. package/dist/{chunk-JCIRYQ4V.mjs → chunk-HEB564WF.mjs} +10 -4
  67. package/dist/chunk-HEB564WF.mjs.map +1 -0
  68. package/dist/{chunk-JRIPCMYC.mjs → chunk-MKDIT2EM.mjs} +1584 -375
  69. package/dist/chunk-MKDIT2EM.mjs.map +1 -0
  70. package/dist/{chunk-S665NJNF.mjs → chunk-OCDLEI6I.mjs} +3 -3
  71. package/dist/{chunk-S665NJNF.mjs.map → chunk-OCDLEI6I.mjs.map} +1 -1
  72. package/dist/chunk-ODZWR6JQ.mjs +4927 -0
  73. package/dist/chunk-ODZWR6JQ.mjs.map +1 -0
  74. package/dist/{chunk-DRR7D3KX.mjs → chunk-SHFUFJ5N.mjs} +192 -18
  75. package/dist/chunk-SHFUFJ5N.mjs.map +1 -0
  76. package/dist/{chunk-4NNZQCL3.mjs → chunk-UI5SFODX.mjs} +223 -277
  77. package/dist/chunk-UI5SFODX.mjs.map +1 -0
  78. package/dist/{chunk-GWCEMDVR.mjs → chunk-UINHLCZA.mjs} +787 -80
  79. package/dist/chunk-UINHLCZA.mjs.map +1 -0
  80. package/dist/{chunk-6TFBXLRJ.mjs → chunk-WEX45HKH.mjs} +222 -337
  81. package/dist/chunk-WEX45HKH.mjs.map +1 -0
  82. package/dist/cloud/density.d.ts +55 -0
  83. package/dist/cloud/density.d.ts.map +1 -0
  84. package/dist/cloud/extract.d.ts +25 -0
  85. package/dist/cloud/extract.d.ts.map +1 -0
  86. package/dist/cloud/feature.d.ts +57 -0
  87. package/dist/cloud/feature.d.ts.map +1 -0
  88. package/dist/cloud/frame-context.d.ts +8 -0
  89. package/dist/cloud/frame-context.d.ts.map +1 -0
  90. package/dist/cloud/inspection.d.ts +59 -0
  91. package/dist/cloud/inspection.d.ts.map +1 -0
  92. package/dist/cloud/optics.d.ts +56 -0
  93. package/dist/cloud/optics.d.ts.map +1 -0
  94. package/dist/cloud/parameters.d.ts +73 -0
  95. package/dist/cloud/parameters.d.ts.map +1 -0
  96. package/dist/cloud/resources.d.ts +60 -0
  97. package/dist/cloud/resources.d.ts.map +1 -0
  98. package/dist/cloud/shadow.d.ts +42 -0
  99. package/dist/cloud/shadow.d.ts.map +1 -0
  100. package/dist/cloud/temporal.d.ts +74 -0
  101. package/dist/cloud/temporal.d.ts.map +1 -0
  102. package/dist/components/atmosphere.d.ts +2 -0
  103. package/dist/components/atmosphere.d.ts.map +1 -1
  104. package/dist/components/barrel-distortion.d.ts +13 -0
  105. package/dist/components/barrel-distortion.d.ts.map +1 -0
  106. package/dist/components/camera.d.ts +20 -4
  107. package/dist/components/camera.d.ts.map +1 -1
  108. package/dist/components/cloud-layer.d.ts +29 -0
  109. package/dist/components/cloud-layer.d.ts.map +1 -0
  110. package/dist/components/index.d.ts +2 -0
  111. package/dist/components/index.d.ts.map +1 -1
  112. package/dist/components/instances.d.ts +20 -6
  113. package/dist/components/instances.d.ts.map +1 -1
  114. package/dist/components/mesh-filter.d.ts +6 -5
  115. package/dist/components/mesh-filter.d.ts.map +1 -1
  116. package/dist/components/motion-blur.d.ts +1 -0
  117. package/dist/components/motion-blur.d.ts.map +1 -1
  118. package/dist/construct-renderer.d.ts +1 -1
  119. package/dist/construct-renderer.d.ts.map +1 -1
  120. package/dist/construct-renderer.mjs +9751 -3528
  121. package/dist/construct-renderer.mjs.map +1 -1
  122. package/dist/device/gpu-residency.d.ts +6 -0
  123. package/dist/device/gpu-residency.d.ts.map +1 -1
  124. package/dist/dynamic-geometry.d.ts +5 -1
  125. package/dist/dynamic-geometry.d.ts.map +1 -1
  126. package/dist/environment/analytic-fog.d.ts +6 -0
  127. package/dist/environment/analytic-fog.d.ts.map +1 -0
  128. package/dist/errors/cloud.d.ts +59 -0
  129. package/dist/errors/cloud.d.ts.map +1 -0
  130. package/dist/errors/render.d.ts +23 -5
  131. package/dist/errors/render.d.ts.map +1 -1
  132. package/dist/examples/single-layer-medium-surface.d.ts +47 -0
  133. package/dist/examples/single-layer-medium-surface.d.ts.map +1 -0
  134. package/dist/extract/camera.d.ts.map +1 -1
  135. package/dist/extract/contracts.d.ts +12 -1
  136. package/dist/extract/contracts.d.ts.map +1 -1
  137. package/dist/extract/environment.d.ts +2 -0
  138. package/dist/extract/environment.d.ts.map +1 -1
  139. package/dist/features/barrel-distortion.d.ts +29 -0
  140. package/dist/features/barrel-distortion.d.ts.map +1 -0
  141. package/dist/features/error-reporting.d.ts +17 -0
  142. package/dist/features/error-reporting.d.ts.map +1 -0
  143. package/dist/features/host.d.ts +15 -0
  144. package/dist/features/host.d.ts.map +1 -1
  145. package/dist/features/motion-blur/motion-blur-feature.d.ts +20 -2
  146. package/dist/features/motion-blur/motion-blur-feature.d.ts.map +1 -1
  147. package/dist/features/motion-blur/motion-blur-params.d.ts +21 -0
  148. package/dist/features/motion-blur/motion-blur-params.d.ts.map +1 -1
  149. package/dist/features/motion-blur/motion-blur-runtime.d.ts +54 -0
  150. package/dist/features/motion-blur/motion-blur-runtime.d.ts.map +1 -0
  151. package/dist/features/plan.d.ts +15 -4
  152. package/dist/features/plan.d.ts.map +1 -1
  153. package/dist/features/prepared-gpu-work.d.ts +9 -5
  154. package/dist/features/prepared-gpu-work.d.ts.map +1 -1
  155. package/dist/features/render-graph-compute.d.ts.map +1 -1
  156. package/dist/features/render-graph-contribution.d.ts +5 -0
  157. package/dist/features/render-graph-contribution.d.ts.map +1 -1
  158. package/dist/features/render-graph-raster.d.ts +1 -0
  159. package/dist/features/render-graph-raster.d.ts.map +1 -1
  160. package/dist/features/targets.d.ts +2 -0
  161. package/dist/features/targets.d.ts.map +1 -1
  162. package/dist/features/types.d.ts +44 -0
  163. package/dist/features/types.d.ts.map +1 -1
  164. package/dist/fullscreen-post-process-pass.d.ts +15 -7
  165. package/dist/fullscreen-post-process-pass.d.ts.map +1 -1
  166. package/dist/gpu-dirty-ranges.d.ts +11 -0
  167. package/dist/gpu-dirty-ranges.d.ts.map +1 -0
  168. package/dist/gpu-driven/batch-topology.d.ts +17 -0
  169. package/dist/gpu-driven/batch-topology.d.ts.map +1 -1
  170. package/dist/gpu-driven/material-artifacts.d.ts +6 -0
  171. package/dist/gpu-driven/material-artifacts.d.ts.map +1 -1
  172. package/dist/gpu-driven/prepared-draw.d.ts +7 -0
  173. package/dist/gpu-driven/prepared-draw.d.ts.map +1 -1
  174. package/dist/gpu-driven/production-raster-material.d.ts +178 -0
  175. package/dist/gpu-driven/production-raster-material.d.ts.map +1 -0
  176. package/dist/gpu-driven/production-raster.d.ts +50 -4
  177. package/dist/gpu-driven/production-raster.d.ts.map +1 -1
  178. package/dist/gpu-driven/resource-allocation.d.ts +31 -0
  179. package/dist/gpu-driven/resource-allocation.d.ts.map +1 -0
  180. package/dist/gpu-driven/shadow-ownership.d.ts +14 -0
  181. package/dist/gpu-driven/shadow-ownership.d.ts.map +1 -0
  182. package/dist/gpu-driven/view-gpu.d.ts +35 -2
  183. package/dist/gpu-driven/view-gpu.d.ts.map +1 -1
  184. package/dist/gpu-scene.d.ts +11 -1
  185. package/dist/gpu-scene.d.ts.map +1 -1
  186. package/dist/hdrp-buffers.d.ts +2 -2
  187. package/dist/hdrp-buffers.d.ts.map +1 -1
  188. package/dist/ibl/skylight-bind-group.d.ts +10 -1
  189. package/dist/ibl/skylight-bind-group.d.ts.map +1 -1
  190. package/dist/index.d.ts +31 -8
  191. package/dist/index.d.ts.map +1 -1
  192. package/dist/index.mjs +258 -8
  193. package/dist/index.mjs.map +1 -1
  194. package/dist/inspection-types.d.ts +178 -3
  195. package/dist/inspection-types.d.ts.map +1 -1
  196. package/dist/instance-buffer-cache.d.ts +4 -4
  197. package/dist/instance-buffer-cache.d.ts.map +1 -1
  198. package/dist/instances.d.ts +49 -94
  199. package/dist/instances.d.ts.map +1 -1
  200. package/dist/internal.mjs +7 -7
  201. package/dist/pbr-pipeline.d.ts +19 -1
  202. package/dist/pbr-pipeline.d.ts.map +1 -1
  203. package/dist/pipeline/single-layer-medium-passes.d.ts +73 -0
  204. package/dist/pipeline/single-layer-medium-passes.d.ts.map +1 -0
  205. package/dist/pipeline/standard-forward-lane.d.ts.map +1 -1
  206. package/dist/pipeline/standard-output/graph.d.ts.map +1 -1
  207. package/dist/pipeline/standard-output/types.d.ts +4 -2
  208. package/dist/pipeline/standard-output/types.d.ts.map +1 -1
  209. package/dist/pipeline/standard-pipeline.d.ts.map +1 -1
  210. package/dist/pipeline/standard-post.d.ts +28 -19
  211. package/dist/pipeline/standard-post.d.ts.map +1 -1
  212. package/dist/pipeline-builder.d.ts +1 -1
  213. package/dist/pipeline-builder.d.ts.map +1 -1
  214. package/dist/pipeline-spec.d.ts +2 -2
  215. package/dist/plugin.d.ts.map +1 -1
  216. package/dist/prepare/prepared-graphics-resolver.d.ts +2 -0
  217. package/dist/prepare/prepared-graphics-resolver.d.ts.map +1 -1
  218. package/dist/record/barrel-distortion-frame.d.ts +15 -0
  219. package/dist/record/barrel-distortion-frame.d.ts.map +1 -0
  220. package/dist/record/dynamic-geometry-consumption.d.ts +10 -2
  221. package/dist/record/dynamic-geometry-consumption.d.ts.map +1 -1
  222. package/dist/record/fold-buckets.d.ts +95 -0
  223. package/dist/record/fold-buckets.d.ts.map +1 -0
  224. package/dist/record/fold-instance-buffer.d.ts +6 -0
  225. package/dist/record/fold-instance-buffer.d.ts.map +1 -0
  226. package/dist/record/frame-lighting.d.ts +1 -0
  227. package/dist/record/frame-lighting.d.ts.map +1 -1
  228. package/dist/record/frame-snapshot.d.ts +40 -3
  229. package/dist/record/frame-snapshot.d.ts.map +1 -1
  230. package/dist/record/frame-targets.d.ts.map +1 -1
  231. package/dist/record/frame.d.ts +14 -62
  232. package/dist/record/frame.d.ts.map +1 -1
  233. package/dist/record/gpu-draw-receipts.d.ts +11 -0
  234. package/dist/record/gpu-draw-receipts.d.ts.map +1 -0
  235. package/dist/record/gpu-timing.d.ts +8 -0
  236. package/dist/record/gpu-timing.d.ts.map +1 -1
  237. package/dist/record/main-pass-geometry.d.ts +21 -5
  238. package/dist/record/main-pass-geometry.d.ts.map +1 -1
  239. package/dist/record/main-pass-material.d.ts +7 -1
  240. package/dist/record/main-pass-material.d.ts.map +1 -1
  241. package/dist/record/main-pass-sprite-draws.d.ts.map +1 -1
  242. package/dist/record/main-pass.d.ts +13 -2
  243. package/dist/record/main-pass.d.ts.map +1 -1
  244. package/dist/record/mesh-ssbo.d.ts +6 -5
  245. package/dist/record/mesh-ssbo.d.ts.map +1 -1
  246. package/dist/record/motion-blur-receipt.d.ts +11 -0
  247. package/dist/record/motion-blur-receipt.d.ts.map +1 -0
  248. package/dist/record/probe-blend-buffer.d.ts +16 -0
  249. package/dist/record/probe-blend-buffer.d.ts.map +1 -0
  250. package/dist/record/recovery-pipeline.d.ts.map +1 -1
  251. package/dist/record/render-context.d.ts +34 -31
  252. package/dist/record/render-context.d.ts.map +1 -1
  253. package/dist/record/shadow-pass.d.ts +2 -0
  254. package/dist/record/shadow-pass.d.ts.map +1 -1
  255. package/dist/record/skybox-post-pass.d.ts +6 -4
  256. package/dist/record/skybox-post-pass.d.ts.map +1 -1
  257. package/dist/record/typed-frame-graph.d.ts +22 -2
  258. package/dist/record/typed-frame-graph.d.ts.map +1 -1
  259. package/dist/record/view-ubo.d.ts +11 -3
  260. package/dist/record/view-ubo.d.ts.map +1 -1
  261. package/dist/record/volume-params.d.ts +9 -0
  262. package/dist/record/volume-params.d.ts.map +1 -0
  263. package/dist/recovery/render-system-candidate.d.ts +10 -0
  264. package/dist/recovery/render-system-candidate.d.ts.map +1 -1
  265. package/dist/reflection/record-owner.d.ts.map +1 -1
  266. package/dist/render-contract.d.ts +66 -8
  267. package/dist/render-contract.d.ts.map +1 -1
  268. package/dist/render-graph-primitives.d.ts.map +1 -1
  269. package/dist/render-pipeline.d.ts +106 -3
  270. package/dist/render-pipeline.d.ts.map +1 -1
  271. package/dist/render-system-extract-tail.d.ts +3 -2
  272. package/dist/render-system-extract-tail.d.ts.map +1 -1
  273. package/dist/render-system-extract.d.ts +24 -10
  274. package/dist/render-system-extract.d.ts.map +1 -1
  275. package/dist/render-system-presentation.d.ts +23 -0
  276. package/dist/render-system-presentation.d.ts.map +1 -0
  277. package/dist/render-system-producer-roots.d.ts +10 -0
  278. package/dist/render-system-producer-roots.d.ts.map +1 -0
  279. package/dist/render-system-residency.d.ts +12 -0
  280. package/dist/render-system-residency.d.ts.map +1 -0
  281. package/dist/render-system.d.ts +26 -15
  282. package/dist/render-system.d.ts.map +1 -1
  283. package/dist/scene/probe-blend.d.ts +27 -0
  284. package/dist/scene/probe-blend.d.ts.map +1 -1
  285. package/dist/scene/render-scene.d.ts +14 -5
  286. package/dist/scene/render-scene.d.ts.map +1 -1
  287. package/dist/ssao-buffers.d.ts +9 -0
  288. package/dist/ssao-buffers.d.ts.map +1 -1
  289. package/dist/surface/dynamic-input.d.ts +133 -0
  290. package/dist/surface/dynamic-input.d.ts.map +1 -0
  291. package/dist/surface/gpu-driven.d.ts +41 -0
  292. package/dist/surface/gpu-driven.d.ts.map +1 -0
  293. package/dist/surface/submission-observation.d.ts +136 -0
  294. package/dist/surface/submission-observation.d.ts.map +1 -0
  295. package/dist/systems/skin-palette-allocator.d.ts.map +1 -1
  296. package/dist/temporal/frame-coordinator.d.ts.map +1 -1
  297. package/dist/temporal/frame.d.ts +7 -0
  298. package/dist/temporal/frame.d.ts.map +1 -1
  299. package/dist/temporal/gpu.d.ts +13 -1
  300. package/dist/temporal/gpu.d.ts.map +1 -1
  301. package/dist/temporal/index.mjs +5 -5
  302. package/dist/temporal/inspection.d.ts.map +1 -1
  303. package/dist/temporal/standard-scene-data.d.ts.map +1 -1
  304. package/dist/temporal/target-coverage-attachment.d.ts.map +1 -1
  305. package/dist/temporal/view.d.ts +6 -1
  306. package/dist/temporal/view.d.ts.map +1 -1
  307. package/dist/transmission/single-layer-medium.d.ts +89 -0
  308. package/dist/transmission/single-layer-medium.d.ts.map +1 -0
  309. package/dist/typed-render-graph-primitives.d.ts +24 -9
  310. package/dist/typed-render-graph-primitives.d.ts.map +1 -1
  311. package/dist/volume/component.d.ts +9 -5
  312. package/dist/volume/component.d.ts.map +1 -1
  313. package/dist/volume/extract.d.ts +1 -1
  314. package/dist/volume/extract.d.ts.map +1 -1
  315. package/dist/volume/inspection.d.ts +2 -0
  316. package/dist/volume/inspection.d.ts.map +1 -1
  317. package/dist/volume/passes.d.ts +4 -1
  318. package/dist/volume/passes.d.ts.map +1 -1
  319. package/dist/volume/resources.d.ts.map +1 -1
  320. package/dist/volume/temporal.d.ts +3 -1
  321. package/dist/volume/temporal.d.ts.map +1 -1
  322. package/package.json +22 -21
  323. package/src/__tests__/analytic-fog-graph.unit.test.ts +199 -0
  324. package/src/__tests__/analytic-fog-optics.unit.test.ts +38 -0
  325. package/src/__tests__/atmosphere-daylight.dawn.test.ts +72 -0
  326. package/src/__tests__/barrel-distortion-lkg.integration.test.ts +353 -0
  327. package/src/__tests__/barrel-distortion.dawn.test.ts +41 -0
  328. package/src/__tests__/barrel-distortion.unit.test.ts +364 -0
  329. package/src/__tests__/bloom-exact-zero.unit.test.ts +112 -18
  330. package/src/__tests__/bloom-lifecycle.integration.test.ts +17 -4
  331. package/src/__tests__/construct-renderer-identity.unit.test.ts +49 -0
  332. package/src/__tests__/detached-recovery-graph.unit.test.ts +277 -0
  333. package/src/__tests__/device-loss-fanout.unit.test.ts +36 -1
  334. package/src/__tests__/docs-gate-green.unit.test.ts +112 -1
  335. package/src/__tests__/dynamic-resolution-plugin.integration.test.ts +20 -0
  336. package/src/__tests__/environment-fog-lanes.integration.test.ts +14 -0
  337. package/src/__tests__/environment-selection.unit.test.ts +12 -0
  338. package/src/__tests__/factory-contract.integration.test.ts +626 -113
  339. package/src/__tests__/feature-depth-input.dawn.test.ts +129 -2
  340. package/src/__tests__/frame-camera-selection.unit.test.ts +39 -1
  341. package/src/__tests__/frame-plan-contract.unit.test.ts +2 -0
  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-indirect-raster-evidence.ts +2 -1
  347. package/src/__tests__/gpu-driven-material-artifacts.unit.test.ts +143 -0
  348. package/src/__tests__/gpu-driven-pbr.dawn.test.ts +2 -2
  349. package/src/__tests__/gpu-driven-production.integration.test.ts +482 -3
  350. package/src/__tests__/gpu-driven-shadow-views.dawn.test.ts +7 -6
  351. package/src/__tests__/gpu-driven-shadow-views.integration.test.ts +1 -1
  352. package/src/__tests__/gpu-driven-view-gpu-evidence.ts +103 -4
  353. package/src/__tests__/gpu-driven-view-graph.integration.test.ts +18 -2
  354. package/src/__tests__/gpu-driven-view.browser.test.ts +5 -8
  355. package/src/__tests__/gpu-driven-view.dawn.test.ts +6 -2
  356. package/src/__tests__/gpu-driven-view.unit.test.ts +1 -1
  357. package/src/__tests__/gpu-pass-timing-lifecycle.integration.test.ts +1 -0
  358. package/src/__tests__/gpu-pass-timing.browser.test.ts +6 -4
  359. package/src/__tests__/gpu-pass-timing.rhi-null.unit.test.ts +1 -0
  360. package/src/__tests__/gpu-resource-store-stride.unit.test.ts +12 -0
  361. package/src/__tests__/gpu-scene.unit.test.ts +210 -9
  362. package/src/__tests__/instance-allocation-failure.unit.test.ts +57 -0
  363. package/src/__tests__/instances-culling.integration.test.ts +10 -36
  364. package/src/__tests__/instances-store.unit.test.ts +105 -238
  365. package/src/__tests__/instances-world-ownership.integration.test.ts +62 -0
  366. package/src/__tests__/main-pass-material-medium-selection.unit.test.ts +146 -0
  367. package/src/__tests__/material-shader-prewarm.unit.test.ts +59 -0
  368. package/src/__tests__/material-snapshot-mutation.integration.test.ts +39 -1
  369. package/src/__tests__/mesh-submission-lifetime.unit.test.ts +31 -0
  370. package/src/__tests__/morph-culling-reentry.dawn.test.ts +5 -5
  371. package/src/__tests__/morph-visual-evidence.integration.test.ts +8 -7
  372. package/src/__tests__/motion-blur-compute.dawn.test.ts +589 -0
  373. package/src/__tests__/motion-blur.pixel.integration.test.ts +2 -2
  374. package/src/__tests__/nineslice-handle-surface.unit.test.ts +4 -4
  375. package/src/__tests__/pbr-view-layout.unit.test.ts +9 -0
  376. package/src/__tests__/physical-clearcoat.integration.test.ts +58 -0
  377. package/src/__tests__/prepared-gpu-driven-pbr.integration.test.ts +21 -0
  378. package/src/__tests__/prepared-graphics-capability.unit.test.ts +66 -2
  379. package/src/__tests__/prepared-graphics-lifecycle.unit.test.ts +86 -0
  380. package/src/__tests__/probe-bindings.unit.test.ts +582 -1
  381. package/src/__tests__/probe-scene-dirty.integration.test.ts +28 -1
  382. package/src/__tests__/public-surface.test-d.ts +8 -0
  383. package/src/__tests__/receipt-observation-retirement.unit.test.ts +65 -0
  384. package/src/__tests__/recovery-candidate-prepare.contract.test.ts +69 -0
  385. package/src/__tests__/render-error-code-owner.test-d.ts +9 -0
  386. package/src/__tests__/render-feature-diagnostics.unit.test.ts +15 -2
  387. package/src/__tests__/render-feature-error-reporting.unit.test.ts +44 -0
  388. package/src/__tests__/render-feature-prepared-diagnostics.unit.test.ts +10 -1
  389. package/src/__tests__/render-feature-retry.unit.test.ts +12 -1
  390. package/src/__tests__/render-feature-stage-fault-recovery.unit.test.ts +23 -0
  391. package/src/__tests__/render-scene-mixed-updates.integration.test.ts +145 -19
  392. package/src/__tests__/render-scene-projection.unit.test.ts +36 -11
  393. package/src/__tests__/render-scene-temporal-retry.unit.test.ts +37 -6
  394. package/src/__tests__/render-target-probe-soak.perf.test.ts +2 -2
  395. package/src/__tests__/render-temporal-environment-consumer.browser.test.ts +3 -3
  396. package/src/__tests__/render-temporal-environment-consumer.dawn.test.ts +5 -2
  397. package/src/__tests__/renderer-factory-material-contract.unit.test.ts +41 -7
  398. package/src/__tests__/renderer-frame-generation-fence.integration.test.ts +16 -0
  399. package/src/__tests__/renderer-frame-transaction.integration.test.ts +33 -11
  400. package/src/__tests__/resource-allocation.unit.test.ts +123 -0
  401. package/src/__tests__/shader-manifest-fixture.ts +4 -4
  402. package/src/__tests__/single-layer-medium-passes.unit.test.ts +275 -0
  403. package/src/__tests__/skin-motion-regression.unit.test.ts +70 -1
  404. package/src/__tests__/skin-palette-recycling.dawn.test.ts +97 -0
  405. package/src/__tests__/skinned-shadow-caster.test.ts +17 -0
  406. package/src/__tests__/ssr-carrier-public-contract.unit.test.ts +21 -0
  407. package/src/__tests__/ssr-gpu-dispatch.browser.test.ts +4 -4
  408. package/src/__tests__/ssr-gpu-dispatch.dawn.test.ts +2 -2
  409. package/src/__tests__/ssr-gpu-dispatch.ts +1 -1
  410. package/src/__tests__/ssr-receiver-coverage.dawn.test.ts +6 -2
  411. package/src/__tests__/standard-lighting-write.unit.test.ts +2 -1
  412. package/src/__tests__/standard-output-chain-contract.unit.test.ts +28 -0
  413. package/src/__tests__/standard-pbr-artifact-assembly.unit.test.ts +46 -1
  414. package/src/__tests__/standard-pipeline.dawn.test.ts +1 -1
  415. package/src/__tests__/standard-pipeline.integration.test.ts +200 -9
  416. package/src/__tests__/surface-dynamic-buffer-lifecycle.unit.test.ts +506 -0
  417. package/src/__tests__/surface-submission-observation.unit.test.ts +812 -0
  418. package/src/__tests__/temporal-history-lifecycle.unit.test.ts +32 -0
  419. package/src/__tests__/temporal-performance.integration.test.ts +3 -3
  420. package/src/__tests__/temporal-reset-matrix.unit.test.ts +10 -0
  421. package/src/__tests__/temporal-view.unit.test.ts +2 -1
  422. package/src/__tests__/typed-pipeline-topology.unit.test.ts +20 -4
  423. package/src/__tests__/visibility-instances.integration.test.ts +7 -19
  424. package/src/__tests__/visibility-producer-matrix.integration.test.ts +9 -20
  425. package/src/__tests__/volume-optics-oracle.unit.test.ts +7 -3
  426. package/src/__tests__/volumetric-fog-budget-recovery.integration.test.ts +189 -15
  427. package/src/__tests__/volumetric-fog-errors.unit.test.ts +4 -3
  428. package/src/__tests__/volumetric-fog-multiple.unit.test.ts +55 -0
  429. package/src/__tests__/volumetric-fog-spot-frame-optics.integration.test.ts +1 -1
  430. package/src/__tests__/volumetric-fog-stage-readback.dawn.test.ts +558 -68
  431. package/src/__tests__/volumetric-fog-temporal.unit.test.ts +27 -0
  432. package/src/__tests__/volumetric-fog-topology.unit.test.ts +23 -5
  433. package/src/assembly/analytic-fog-registration.ts +14 -0
  434. package/src/assembly/backend-contract.ts +30 -0
  435. package/src/assembly/barrel-distortion-inspection.ts +22 -0
  436. package/src/assembly/canvas-draw-guard.ts +11 -0
  437. package/src/assembly/cloud-shadow-entry.ts +22 -0
  438. package/src/assembly/dynamic-geometry-host.ts +65 -37
  439. package/src/assembly/dynamic-geometry-runtime.ts +7 -1
  440. package/src/assembly/factory.ts +2 -30
  441. package/src/assembly/fxaa-registration.ts +17 -0
  442. package/src/assembly/host-contract.ts +3 -3
  443. package/src/assembly/lod-observation.ts +12 -0
  444. package/src/assembly/material/assembly.ts +25 -13
  445. package/src/assembly/material/pipeline-helpers.ts +53 -12
  446. package/src/assembly/material-shader-policy.ts +55 -0
  447. package/src/assembly/material-shader-prewarm.ts +21 -10
  448. package/src/assembly/motion-blur-registration.ts +17 -0
  449. package/src/assembly/recovery/device-loss-fanout.ts +13 -0
  450. package/src/assembly/recovery/renderer-recover.ts +41 -18
  451. package/src/assembly/render-feature-post-processes.ts +54 -0
  452. package/src/assembly/renderer-facade.ts +6 -1
  453. package/src/assembly/renderer-feature-inspection.ts +8 -2
  454. package/src/assembly/renderer-frame-transaction.ts +23 -0
  455. package/src/assembly/renderer-inspection.ts +28 -0
  456. package/src/assembly/skin-palette-owner.ts +1 -1
  457. package/src/assembly/temporal-post-process-prewarm.ts +40 -0
  458. package/src/assembly/webgpu-pbr-ready.ts +9 -1
  459. package/src/assembly/webgpu-ready-contract.ts +8 -3
  460. package/src/assembly/webgpu-ready-per-pass.ts +104 -0
  461. package/src/assembly/webgpu-ready.ts +296 -306
  462. package/src/assembly/webgpu-renderer-bootstrap.ts +0 -12
  463. package/src/assembly/webgpu-renderer-observation-owner.ts +222 -0
  464. package/src/assembly/webgpu-renderer.ts +228 -281
  465. package/src/assembly/webgpu-vertex-layouts.ts +1 -1
  466. package/src/barrel-distortion.ts +247 -0
  467. package/src/bloom-admission.ts +21 -0
  468. package/src/cloud/__tests__/cloud-density-parity.dawn.test.ts +173 -0
  469. package/src/cloud/__tests__/cloud-layer-framebuffer-y.dawn.test.ts +265 -0
  470. package/src/cloud/__tests__/cloud-layer.browser.test.ts +432 -0
  471. package/src/cloud/__tests__/cloud-layer.unit.test.ts +634 -0
  472. package/src/cloud/density.ts +600 -0
  473. package/src/cloud/extract.ts +110 -0
  474. package/src/cloud/feature.ts +1810 -0
  475. package/src/cloud/frame-context.ts +42 -0
  476. package/src/cloud/inspection.ts +130 -0
  477. package/src/cloud/optics.ts +285 -0
  478. package/src/cloud/parameters.ts +255 -0
  479. package/src/cloud/resources.ts +122 -0
  480. package/src/cloud/shadow.ts +167 -0
  481. package/src/cloud/temporal.ts +226 -0
  482. package/src/components/__tests__/motion-blur.unit.test.ts +1 -0
  483. package/src/components/atmosphere.ts +4 -0
  484. package/src/components/barrel-distortion.ts +46 -0
  485. package/src/components/camera.ts +66 -10
  486. package/src/components/cloud-layer.ts +47 -0
  487. package/src/components/index.ts +2 -0
  488. package/src/components/instances.ts +18 -45
  489. package/src/components/mesh-filter.ts +11 -9
  490. package/src/components/motion-blur.ts +1 -0
  491. package/src/components/sprite-instances.ts +1 -1
  492. package/src/construct-renderer.ts +1 -1
  493. package/src/device/gpu-residency.ts +56 -12
  494. package/src/dynamic-geometry.ts +12 -1
  495. package/src/environment/analytic-fog.ts +44 -0
  496. package/src/environment/background.ts +2 -2
  497. package/src/errors/cloud.ts +103 -0
  498. package/src/errors/render.ts +58 -8
  499. package/src/examples/single-layer-medium-surface.ts +59 -0
  500. package/src/extract/camera.ts +35 -8
  501. package/src/extract/contracts.ts +12 -0
  502. package/src/extract/environment.ts +4 -0
  503. package/src/features/barrel-distortion.ts +172 -0
  504. package/src/features/error-reporting.ts +98 -0
  505. package/src/features/host.ts +138 -24
  506. package/src/features/motion-blur/__tests__/motion-blur-feature.unit.test.ts +111 -1
  507. package/src/features/motion-blur/__tests__/motion-blur-params.unit.test.ts +58 -3
  508. package/src/features/motion-blur/motion-blur-feature.ts +1519 -15
  509. package/src/features/motion-blur/motion-blur-params.ts +70 -2
  510. package/src/features/motion-blur/motion-blur-runtime.ts +176 -0
  511. package/src/features/plan.ts +33 -8
  512. package/src/features/prepared-gpu-work.ts +86 -35
  513. package/src/features/render-graph-compute.ts +13 -5
  514. package/src/features/render-graph-contribution.ts +11 -0
  515. package/src/features/render-graph-raster.ts +45 -3
  516. package/src/features/targets.ts +66 -0
  517. package/src/features/types.ts +47 -0
  518. package/src/fullscreen-post-process-pass.ts +41 -9
  519. package/src/gpu-dirty-ranges.ts +48 -0
  520. package/src/gpu-driven/batch-topology.ts +53 -0
  521. package/src/gpu-driven/material-artifacts.ts +35 -32
  522. package/src/gpu-driven/prepared-draw.ts +27 -14
  523. package/src/gpu-driven/production-raster-material.ts +1894 -0
  524. package/src/gpu-driven/production-raster.ts +904 -787
  525. package/src/gpu-driven/resource-allocation.ts +142 -0
  526. package/src/gpu-driven/shadow-ownership.ts +71 -0
  527. package/src/gpu-driven/view-gpu.ts +181 -10
  528. package/src/gpu-scene.ts +259 -101
  529. package/src/hdrp-buffers.ts +4 -3
  530. package/src/ibl/skylight-bind-group.ts +49 -7
  531. package/src/index.ts +228 -9
  532. package/src/inspection-types.ts +222 -2
  533. package/src/instance-buffer-cache.ts +4 -4
  534. package/src/instances.ts +151 -492
  535. package/src/pbr-pipeline.ts +219 -13
  536. package/src/pipeline/single-layer-medium-passes.ts +267 -0
  537. package/src/pipeline/standard-forward-lane.ts +313 -57
  538. package/src/pipeline/standard-output/graph.ts +8 -2
  539. package/src/pipeline/standard-output/types.ts +12 -1
  540. package/src/pipeline/standard-pipeline.ts +291 -18
  541. package/src/pipeline/standard-post.ts +397 -102
  542. package/src/pipeline-builder.ts +1 -1
  543. package/src/pipeline-spec.ts +5 -5
  544. package/src/plugin.ts +4 -0
  545. package/src/points-lines/__tests__/points-lines.bench.ts +17 -8
  546. package/src/points-lines/__tests__/view-ubo.unit.test.ts +2 -1
  547. package/src/prepare/prepared-graphics-resolver.ts +2 -0
  548. package/src/record/__tests__/main-pass-geometry.unit.test.ts +30 -0
  549. package/src/record/__tests__/sprite-material-abi.unit.test.ts +1 -1
  550. package/src/record/__tests__/temporal-payload.unit.test.ts +3 -2
  551. package/src/record/__tests__/transparent-group2-selection.unit.test.ts +11 -0
  552. package/src/record/__tests__/typed-frame-graph-plan.unit.test.ts +1 -0
  553. package/src/record/__tests__/view-ubo-layout.unit.test.ts +4 -3
  554. package/src/record/barrel-distortion-frame.ts +110 -0
  555. package/src/record/dynamic-geometry-consumption.ts +39 -9
  556. package/src/record/fold-buckets.ts +852 -0
  557. package/src/record/fold-instance-buffer.ts +51 -0
  558. package/src/record/frame-lighting.ts +36 -2
  559. package/src/record/frame-snapshot.ts +44 -4
  560. package/src/record/frame-targets.ts +10 -6
  561. package/src/record/frame.ts +373 -1099
  562. package/src/record/gpu-draw-receipts.ts +38 -0
  563. package/src/record/gpu-timing.ts +48 -5
  564. package/src/record/main-pass-geometry.ts +281 -83
  565. package/src/record/main-pass-material.ts +66 -4
  566. package/src/record/main-pass-sprite-draws.ts +13 -66
  567. package/src/record/main-pass.ts +156 -20
  568. package/src/record/mesh-ssbo.ts +43 -6
  569. package/src/record/motion-blur-receipt.ts +91 -0
  570. package/src/record/probe-blend-buffer.ts +180 -0
  571. package/src/record/recovery-pipeline.ts +35 -3
  572. package/src/record/render-context.ts +51 -31
  573. package/src/record/shadow-pass.ts +36 -2
  574. package/src/record/skybox-post-pass.ts +150 -200
  575. package/src/record/typed-frame-graph.ts +824 -44
  576. package/src/record/view-ubo.ts +26 -3
  577. package/src/record/volume-params.ts +225 -0
  578. package/src/recovery/render-system-candidate.ts +257 -52
  579. package/src/reflection/record-owner.ts +7 -3
  580. package/src/render-contract.ts +71 -8
  581. package/src/render-graph-primitives.ts +7 -1
  582. package/src/render-pipeline.ts +136 -1
  583. package/src/render-system-extract-tail.ts +72 -60
  584. package/src/render-system-extract.ts +117 -87
  585. package/src/render-system-presentation.ts +56 -0
  586. package/src/render-system-producer-roots.ts +96 -0
  587. package/src/render-system-residency.ts +159 -0
  588. package/src/render-system.ts +601 -482
  589. package/src/scene/probe-blend.ts +96 -4
  590. package/src/scene/render-scene.ts +431 -281
  591. package/src/ssao-buffers.ts +95 -2
  592. package/src/surface/__tests__/dynamic-input.unit.test.ts +374 -0
  593. package/src/surface/__tests__/gpu-driven.unit.test.ts +87 -0
  594. package/src/surface/dynamic-input.ts +658 -0
  595. package/src/surface/gpu-driven.ts +147 -0
  596. package/src/surface/submission-observation.ts +517 -0
  597. package/src/systems/skin-palette-allocator.ts +4 -1
  598. package/src/temporal/__tests__/temporal-frame-transaction.unit.test.ts +36 -0
  599. package/src/temporal/frame-coordinator.ts +8 -1
  600. package/src/temporal/frame.ts +20 -0
  601. package/src/temporal/gpu.ts +101 -17
  602. package/src/temporal/inspection.ts +7 -1
  603. package/src/temporal/standard-scene-data.ts +5 -0
  604. package/src/temporal/target-coverage-attachment.ts +4 -0
  605. package/src/temporal/view.ts +13 -2
  606. package/src/transmission/__tests__/single-layer-medium.unit.test.ts +149 -0
  607. package/src/transmission/__tests__/standard-transmission.dawn.test.ts +12 -11
  608. package/src/transmission/single-layer-medium.ts +322 -0
  609. package/src/typed-render-graph-primitives.ts +191 -50
  610. package/src/volume/component.ts +10 -10
  611. package/src/volume/extract.ts +11 -5
  612. package/src/volume/inspection.ts +3 -0
  613. package/src/volume/passes.ts +95 -8
  614. package/src/volume/resources.ts +2 -1
  615. package/src/volume/temporal.ts +11 -0
  616. package/dist/chunk-4NNZQCL3.mjs.map +0 -1
  617. package/dist/chunk-6TFBXLRJ.mjs.map +0 -1
  618. package/dist/chunk-DRR7D3KX.mjs.map +0 -1
  619. package/dist/chunk-GWCEMDVR.mjs.map +0 -1
  620. package/dist/chunk-JCIRYQ4V.mjs.map +0 -1
  621. package/dist/chunk-JRIPCMYC.mjs.map +0 -1
  622. package/dist/chunk-LULCA3OF.mjs +0 -1713
  623. package/dist/chunk-LULCA3OF.mjs.map +0 -1
  624. package/dist/chunk-PA5DRJNI.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,7 +60,7 @@ 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';
58
65
  import type { RenderSceneBounds } from './scene/render-scene-types.js';
59
66
  import type { SsrAdmissionIdentity } from './ssr/identity.js';
@@ -94,6 +101,7 @@ import type {
94
101
  GpuPassTimingOptions,
95
102
  } from './record/gpu-pass-timing/index.js';
96
103
  import type { VolumeTimingObservation } from './record/gpu-timing.js';
104
+ import type { SurfaceDynamicInputFrame } from './surface/dynamic-input.js';
97
105
  import type { TemporalView } from './temporal/view.js';
98
106
  import type { VolumetricFogInspection } from './volume/inspection.js';
99
107
 
@@ -170,7 +178,8 @@ export interface CameraSnapshot {
170
178
  readonly bloom: BloomEnabled;
171
179
  readonly bloomThreshold: number;
172
180
  readonly bloomIntensity: number;
173
- readonly bloomBlurRadius: number;
181
+ readonly bloomSoftKnee: number;
182
+ readonly bloomScatter: number;
174
183
  readonly clearColor: readonly [number, number, number, number];
175
184
  /** Optional active-camera SSR authoring fact, copied from the ECS schema. */
176
185
  readonly screenSpaceReflection?: ScreenSpaceReflectionData;
@@ -185,7 +194,11 @@ export interface CameraSnapshot {
185
194
  readonly shutterAngle: number;
186
195
  readonly maxRadiusPixels: number;
187
196
  readonly sampleCount: number;
197
+ /** Target presentation rate; zero follows the accepted frame interval. */
198
+ readonly targetFps?: number;
188
199
  };
200
+ /** Optional active-camera barrel projection, copied from the ECS schema. */
201
+ readonly barrelDistortion?: BarrelDistortionData;
189
202
  }
190
203
 
191
204
  /** Stable identity owned by the Standard feature host for output transform. */
@@ -367,6 +380,11 @@ export interface AtmosphereShaderSources {
367
380
  * and never reach into AssetRegistry or World.
368
381
  */
369
382
  export interface VolumetricFogFrameContext {
383
+ readonly additional?: readonly {
384
+ readonly densityTexture: Texture;
385
+ readonly densityView: TextureView;
386
+ readonly densityGeneration: number;
387
+ }[];
370
388
  readonly densityTexture: Texture;
371
389
  readonly densityView: TextureView;
372
390
  readonly paramsBuffer: Buffer;
@@ -404,8 +422,8 @@ export interface SpotLightProjectorFrameContext {
404
422
  * leases, receipts, inspection PODs, and recovery Result values.
405
423
  */
406
424
  export interface Renderer {
407
- /** Renderer-owned authoring and update path for large instance collections. */
408
- readonly instances: InstanceCollectionStore;
425
+ /** Publish one renderer-owned read-only Surface dynamic page for the next frame. */
426
+ setSurfaceDynamicInput(frame: SurfaceDynamicInputFrame | undefined): void;
409
427
  attach(world: World): RenderResult<RenderWorldLease, RenderError>;
410
428
  /** Prepare a standard MeshAsset for the active device generation. */
411
429
  prepareDynamicGeometry(
@@ -496,6 +514,8 @@ export type RendererEvent =
496
514
  readonly kind: 'frame-submitted';
497
515
  readonly frameId: number;
498
516
  readonly deviceGeneration: number;
517
+ /** Compiled graph identity paired with the submitted picture. */
518
+ readonly graphGeneration?: number;
499
519
  /** The exact draw receipt, for observation when App owns the draw loop. */
500
520
  readonly receipt: FrameReceipt;
501
521
  };
@@ -550,13 +570,25 @@ export interface FrameObservationRequest {
550
570
  export interface FrameReceipt {
551
571
  readonly frameId: number;
552
572
  readonly deviceGeneration: number;
573
+ /** Whether this frame can present the active scene without a readiness fallback. */
574
+ readonly presentation: FramePresentation;
553
575
  /** Backend identity captured at submit and checked before observation. */
554
576
  readonly backendId?: RhiCaps['backendKind'];
555
577
  /** Monotonic compiled graph identity used by renderer-issued observations. */
556
578
  readonly graphGeneration?: number;
579
+ /**
580
+ * Effective output mapping for the submitted camera, including identity
581
+ * when this receipt has an accepted camera context. `undefined` means that
582
+ * no submitted display context is available; consumers must fail closed and
583
+ * must not infer identity or read the live World camera.
584
+ */
585
+ readonly barrelDistortion?: import('./barrel-distortion.js').BarrelDistortionMapping;
557
586
  readonly completed: Promise<RenderResult<void, RenderError>>;
558
587
  }
559
588
 
589
+ /** Producer-derived presentation readiness for one submitted frame. */
590
+ export type FramePresentation = 'pending' | 'ready';
591
+
560
592
  /**
561
593
  * The sole public draw input; World objects never cross this boundary. Render
562
594
  * owns extraction and graph interpretation, while the host owns encoding,
@@ -566,10 +598,29 @@ export interface RenderFrameInput {
566
598
  readonly leases: readonly RenderWorldLease[];
567
599
  readonly camera: FrameCamera;
568
600
  readonly environment: FrameEnvironment;
601
+ /**
602
+ * Monotonic host render-sample time in seconds. This is captured before ECS
603
+ * applies its simulation delta clamp, then accepted with frame submission.
604
+ * Omitting it keeps direct renderer callers on the ECS-clock fallback.
605
+ */
606
+ readonly sampleTimeSeconds?: number;
607
+ /**
608
+ * Mark the next submitted frame as a fresh temporal baseline. App sets this
609
+ * on resume so a short wall-clock pause cannot be mistaken for a valid
610
+ * motion pair; direct replay callers may use the same explicit lifecycle
611
+ * boundary.
612
+ */
613
+ readonly temporalReset?: boolean;
569
614
  /** Fixed-step publication consumed by dynamic geometry candidates. */
570
615
  readonly fixedStep?: number;
571
616
  /** Optional profiler correlation token owned by App and consumed by Render. */
572
617
  readonly profileFrame?: ProfileFrameToken;
618
+ /**
619
+ * Select the geometry submission command lane while retaining the same
620
+ * extracted scene and material inputs. This is an acceptance/debug seam;
621
+ * both lanes remain subject to the ordinary resource and generation gates.
622
+ */
623
+ readonly geometryLane?: 'automatic' | 'direct';
573
624
  }
574
625
 
575
626
  /** Detached, bounded observation metadata tied to one FrameReceipt and request. */
@@ -703,8 +754,12 @@ export interface RenderInspection {
703
754
  readonly frameId: number;
704
755
  readonly deviceGeneration: number;
705
756
  };
757
+ /** Effective output mapping and accepted/LKG identity for the last picture. */
758
+ readonly barrelDistortion: import('./inspection-types').BarrelDistortionInspection;
706
759
  /** Renderer-owned authored volume projection and submit/LKG state. */
707
760
  readonly volumetricFog?: VolumetricFogInspection;
761
+ /** Renderer-owned procedural cloud projection from the latest resource-owner extract. */
762
+ readonly cloudLayer?: CloudLayerInspection;
708
763
  readonly features: readonly string[];
709
764
  /** Truthful lifecycle facts for every registered declarative feature. */
710
765
  readonly featureDiagnostics: readonly RenderFeatureDiagnostics[];
@@ -721,6 +776,10 @@ export interface RenderInspection {
721
776
  /** Standard MeshAsset dynamic-candidate lifecycle facts. */
722
777
  readonly dynamicGeometry?: DynamicGeometryInspection;
723
778
  readonly renderScene: RenderSceneInspection;
779
+ /** Detached logical allocation facts for graph-created render targets. */
780
+ readonly renderGraphResourceAllocation?: RenderGraphResourceAllocationInspection;
781
+ /** Detached logical allocation facts across graph generations. */
782
+ readonly renderGraphGenerationAllocation?: RenderGraphGenerationAllocationInspection;
724
783
  readonly reflectionProbes: ReflectionProbeInspection;
725
784
  /** Renderer-owned SSR dependency seam; consumer facts are projected from live owners. */
726
785
  readonly ssrDependencies: SsrDependenciesInspection;
@@ -811,7 +870,12 @@ export type DrawOwnerOptions = {
811
870
  readonly resourceOwner: number;
812
871
  /** Optional FrameCamera entity selection; absent preserves ActiveCamera semantics. */
813
872
  readonly cameraEntityKey?: number;
873
+ /** Monotonic host render-sample time in seconds, before the ECS delta clamp. */
874
+ readonly sampleTimeSeconds?: number;
875
+ /** Explicit pause/resume or replay lifecycle boundary for temporal owners. */
876
+ readonly temporalReset?: boolean;
814
877
  readonly profileFrame?: ProfileFrameToken;
878
+ readonly geometryLane?: 'automatic' | 'direct';
815
879
  };
816
880
 
817
881
  /** Information attached to a device-loss notification. */
@@ -909,9 +973,8 @@ export const RENDER_GRAPH_EXECUTION_PHASE_CATALOG = [
909
973
  'record/graph-execute/skybox',
910
974
  'record/graph-execute/main',
911
975
  'record/graph-execute/fxaa',
912
- 'record/graph-execute/bloom-bright',
913
- 'record/graph-execute/bloom-blur-h',
914
- 'record/graph-execute/bloom-blur-v',
976
+ 'record/graph-execute/bloom-downsample',
977
+ 'record/graph-execute/bloom-upsample',
915
978
  'record/graph-execute/bloom-composite',
916
979
  'record/graph-execute/ssr-hiz',
917
980
  'record/graph-execute/ssr-trace',
@@ -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,
@@ -224,6 +225,8 @@ export interface RenderPipelineTopology {
224
225
  readonly clearOnly?: boolean | undefined;
225
226
  /** Selected atmosphere requires the graph-owned sky producer and background. */
226
227
  readonly atmosphere?: boolean | undefined;
228
+ /** Finite-depth distance / exponential-height fog; no volume history. */
229
+ readonly analyticFog?: boolean | undefined;
227
230
  /** Whether Standard main draws carry the producer-owned fallback MRT. */
228
231
  readonly reflectionFallback?: { readonly enabled: boolean } | undefined;
229
232
  readonly surface: {
@@ -235,7 +238,10 @@ export interface RenderPipelineTopology {
235
238
  };
236
239
  /** Renderer-owned immutable dimensions for Standard graph consumers. */
237
240
  readonly extent?: RenderExtent;
238
- readonly camera: Pick<RenderPipelineContext['camera'], 'tonemap' | 'antialias' | 'bloom'> & {
241
+ readonly camera: Pick<
242
+ RenderPipelineContext['camera'],
243
+ 'tonemap' | 'antialias' | 'bloom' | 'bloomIntensity'
244
+ > & {
239
245
  /** Shape-only DoF admission; optical values remain per-frame UBO data. */
240
246
  readonly depthOfField?:
241
247
  | {
@@ -244,6 +250,8 @@ export interface RenderPipelineTopology {
244
250
  readonly useFar: boolean;
245
251
  }
246
252
  | undefined;
253
+ /** Shape-only barrel admission; numeric mapping stays per-frame data. */
254
+ readonly barrelDistortion?: boolean | undefined;
247
255
  };
248
256
  /** Frame-stable Standard output policy; no raw RHI handles enter topology. */
249
257
  readonly output?: {
@@ -280,6 +288,10 @@ export interface RenderPipelineTopology {
280
288
  */
281
289
  readonly volumetricFog?: {
282
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
+ }[];
283
295
  readonly lightKind?: 'directional' | 'point' | 'spot' | undefined;
284
296
  readonly lightEntity?: number | undefined;
285
297
  readonly pointLightEntity?: number | undefined;
@@ -328,6 +340,8 @@ export interface RenderPipelineTopology {
328
340
  readonly standardLightingTopologySignature?: string | undefined;
329
341
  /** Internal graph fact; renderer callers do not configure transmission demand. */
330
342
  readonly transmissionDemand?: TransmissionDemand | undefined;
343
+ /** Whether the extracted frame contains a single-layer medium Surface. */
344
+ readonly singleLayerMedium?: boolean | undefined;
331
345
  }
332
346
 
333
347
  /** Resolve the built-in final-output dither policy from the pipeline asset. */
@@ -458,9 +472,30 @@ export interface RenderPipelineGpuDrivenProjection {
458
472
  pass: RhiRenderPassEncoder,
459
473
  resources: GraphResourceResolver,
460
474
  frameResources: GpuDrivenStandardPbrFrameResources,
475
+ filter?: RenderPipelineGpuDrivenFilter,
476
+ fragmentEntryPoint?: string,
461
477
  ): void;
462
478
  }
463
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
+ }
464
499
  /** Exact scene rows selected by an indirect batch; palette offsets are global. */
465
500
  export interface GpuDrivenSceneMeshBinding {
466
501
  readonly meshBuffer: Buffer;
@@ -470,6 +505,8 @@ export interface GpuDrivenSceneMeshBinding {
470
505
 
471
506
  /** Producer-owned Standard PBR resources resolved during graph execution. */
472
507
  export interface GpuDrivenStandardPbrFrameResources {
508
+ /** Resource generation of the actual scene-index/indirect producer. */
509
+ readonly resourceGeneration?: number;
473
510
  readonly materialBindGroups: (BindGroup | undefined)[];
474
511
  /** Frame-global material slots keyed by the retained scene entity identity. */
475
512
  readonly materialSlotIndicesByEntity: Map<number, readonly number[]>;
@@ -480,6 +517,56 @@ export interface GpuDrivenStandardPbrFrameResources {
480
517
  colorFormats?: readonly TextureFormat[];
481
518
  /** Exact producer-owned numeric Material table consumed by scene-index PBR. */
482
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;
483
570
  resolveClusteredMeshBindGroup?: (binding: GpuDrivenSceneMeshBinding) => BindGroup;
484
571
  }
485
572
 
@@ -507,6 +594,8 @@ export interface RenderPipelineBuildContext<FrameCtx extends RenderPipelineFrame
507
594
  * inferring rgba16float support from the selected surface format.
508
595
  */
509
596
  readonly capabilities?: Pick<RhiCaps, 'rgba16floatRenderable'>;
597
+ /** Renderer-derived cloud shadow size shared by graph allocation and projection. */
598
+ readonly cloudShadowResolution?: number;
510
599
  /** Prepared typed graph resources owned by RenderSystem/RenderFrameState. */
511
600
  readonly standardOutput?: {
512
601
  readonly autoExposure?: {
@@ -536,6 +625,19 @@ export interface RenderPipelineBuildContext<FrameCtx extends RenderPipelineFrame
536
625
  readonly currentStability: RenderPipelineTarget;
537
626
  readonly previousStability: RenderPipelineTarget;
538
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
+ };
539
641
  /** Renderer-owned SSR temporal history targets for the admitted spatial chain. */
540
642
  readonly ssrHistory?: {
541
643
  readonly previous: RenderPipelineTarget;
@@ -568,6 +670,15 @@ export interface RenderPipelineBuildContext<FrameCtx extends RenderPipelineFrame
568
670
  semanticTargets?: readonly RenderPipelineTarget[],
569
671
  namedTargets?: Readonly<Record<string, RenderPipelineTarget>>,
570
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[],
571
682
  ): Result<void, RenderPipelineBuildError>;
572
683
  /** Prepare feature-owned shadow draws and their early compute producers once. */
573
684
  contributeShadowFeatures?(): Result<
@@ -580,6 +691,30 @@ export interface RenderPipelineBuildContext<FrameCtx extends RenderPipelineFrame
580
691
  ): Result<void, RenderPipelineBuildError>;
581
692
  /** Whether a producer-owned feature is installed for this graph build. */
582
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 }));
583
718
  }
584
719
 
585
720
  export type RenderPipelineBuildError = RenderGraphError | RenderError | RhiError;