@forgeax/engine-render 0.1.6 → 0.1.19

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 (713) hide show
  1. package/README.md +279 -2
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/assembly/backend-contract.d.ts +12 -0
  4. package/dist/assembly/backend-contract.d.ts.map +1 -1
  5. package/dist/assembly/factory.d.ts +19 -2
  6. package/dist/assembly/factory.d.ts.map +1 -1
  7. package/dist/assembly/host-contract.d.ts +4 -0
  8. package/dist/assembly/host-contract.d.ts.map +1 -1
  9. package/dist/assembly/material/assembly.d.ts.map +1 -1
  10. package/dist/assembly/renderer-frame-transaction.d.ts +39 -0
  11. package/dist/assembly/renderer-frame-transaction.d.ts.map +1 -0
  12. package/dist/assembly/renderer-inspection.d.ts +22 -0
  13. package/dist/assembly/renderer-inspection.d.ts.map +1 -0
  14. package/dist/assembly/renderer-lifecycle.d.ts +4 -0
  15. package/dist/assembly/renderer-lifecycle.d.ts.map +1 -0
  16. package/dist/authoring.d.ts +1 -0
  17. package/dist/authoring.d.ts.map +1 -1
  18. package/dist/authoring.mjs +4 -2
  19. package/dist/authoring.mjs.map +1 -1
  20. package/dist/chunk-FJ6P52EE.mjs +46 -0
  21. package/dist/chunk-FJ6P52EE.mjs.map +1 -0
  22. package/dist/chunk-IPXCABEP.mjs +73 -0
  23. package/dist/chunk-IPXCABEP.mjs.map +1 -0
  24. package/dist/chunk-JDWARUOI.mjs +44 -0
  25. package/dist/chunk-JDWARUOI.mjs.map +1 -0
  26. package/dist/chunk-LOSO4CTV.mjs +901 -0
  27. package/dist/chunk-LOSO4CTV.mjs.map +1 -0
  28. package/dist/chunk-PCHBPYML.mjs +385 -0
  29. package/dist/chunk-PCHBPYML.mjs.map +1 -0
  30. package/dist/chunk-RJRUS55L.mjs +9323 -0
  31. package/dist/chunk-RJRUS55L.mjs.map +1 -0
  32. package/dist/{chunk-QC4VW3XJ.mjs → chunk-RXZ3RGOU.mjs} +4 -30
  33. package/dist/chunk-RXZ3RGOU.mjs.map +1 -0
  34. package/dist/{chunk-CQXZC5XI.mjs → chunk-VFPLTKCU.mjs} +79 -69
  35. package/dist/chunk-VFPLTKCU.mjs.map +1 -0
  36. package/dist/{chunk-SCRSAK5B.mjs → chunk-YTQ5C7YQ.mjs} +231 -127
  37. package/dist/chunk-YTQ5C7YQ.mjs.map +1 -0
  38. package/dist/components/atmosphere.d.ts +9 -0
  39. package/dist/components/atmosphere.d.ts.map +1 -0
  40. package/dist/components/camera.d.ts +2 -1
  41. package/dist/components/camera.d.ts.map +1 -1
  42. package/dist/components/fog.d.ts +8 -0
  43. package/dist/components/fog.d.ts.map +1 -0
  44. package/dist/components/index.d.ts +5 -0
  45. package/dist/components/index.d.ts.map +1 -1
  46. package/dist/components/lines.d.ts +5 -0
  47. package/dist/components/lines.d.ts.map +1 -0
  48. package/dist/components/motion-blur.d.ts +7 -0
  49. package/dist/components/motion-blur.d.ts.map +1 -0
  50. package/dist/components/points.d.ts +15 -0
  51. package/dist/components/points.d.ts.map +1 -0
  52. package/dist/construct-renderer.d.ts +2 -2
  53. package/dist/construct-renderer.d.ts.map +1 -1
  54. package/dist/construct-renderer.mjs +11419 -16442
  55. package/dist/construct-renderer.mjs.map +1 -1
  56. package/dist/device/device-scope.d.ts +4 -0
  57. package/dist/device/device-scope.d.ts.map +1 -1
  58. package/dist/environment/frame.d.ts +60 -0
  59. package/dist/environment/frame.d.ts.map +1 -0
  60. package/dist/environment/generation.d.ts +21 -0
  61. package/dist/environment/generation.d.ts.map +1 -0
  62. package/dist/environment/graph.d.ts +4 -0
  63. package/dist/environment/graph.d.ts.map +1 -0
  64. package/dist/environment/inspection.d.ts +48 -0
  65. package/dist/environment/inspection.d.ts.map +1 -0
  66. package/dist/environment/lifecycle.d.ts +39 -0
  67. package/dist/environment/lifecycle.d.ts.map +1 -0
  68. package/dist/environment/signature.d.ts +25 -0
  69. package/dist/environment/signature.d.ts.map +1 -0
  70. package/dist/errors/render.d.ts +217 -1
  71. package/dist/errors/render.d.ts.map +1 -1
  72. package/dist/extract/camera.d.ts +5 -0
  73. package/dist/extract/camera.d.ts.map +1 -0
  74. package/dist/extract/environment.d.ts +74 -0
  75. package/dist/extract/environment.d.ts.map +1 -0
  76. package/dist/extract/visibility.d.ts +1 -1
  77. package/dist/extract/visibility.d.ts.map +1 -1
  78. package/dist/features/host.d.ts +9 -2
  79. package/dist/features/host.d.ts.map +1 -1
  80. package/dist/features/motion-blur/motion-blur-feature.d.ts +16 -0
  81. package/dist/features/motion-blur/motion-blur-feature.d.ts.map +1 -0
  82. package/dist/features/motion-blur/motion-blur-params.d.ts +25 -0
  83. package/dist/features/motion-blur/motion-blur-params.d.ts.map +1 -0
  84. package/dist/features/plan.d.ts +17 -2
  85. package/dist/features/plan.d.ts.map +1 -1
  86. package/dist/features/prepared-gpu-work.d.ts +3 -1
  87. package/dist/features/prepared-gpu-work.d.ts.map +1 -1
  88. package/dist/features/prepared-graphics.d.ts +2 -1
  89. package/dist/features/prepared-graphics.d.ts.map +1 -1
  90. package/dist/features/render-graph-raster.d.ts +7 -2
  91. package/dist/features/render-graph-raster.d.ts.map +1 -1
  92. package/dist/features/targets.d.ts +3 -0
  93. package/dist/features/targets.d.ts.map +1 -1
  94. package/dist/features/types.d.ts +12 -0
  95. package/dist/features/types.d.ts.map +1 -1
  96. package/dist/fullscreen-post-process-pass.d.ts +7 -1
  97. package/dist/fullscreen-post-process-pass.d.ts.map +1 -1
  98. package/dist/gpu-driven/production-raster.d.ts.map +1 -1
  99. package/dist/gpu-scene.d.ts +2 -0
  100. package/dist/gpu-scene.d.ts.map +1 -1
  101. package/dist/ibl/skylight-bind-group.d.ts +5 -6
  102. package/dist/ibl/skylight-bind-group.d.ts.map +1 -1
  103. package/dist/index.d.ts +21 -6
  104. package/dist/index.d.ts.map +1 -1
  105. package/dist/index.mjs +8 -4
  106. package/dist/index.mjs.map +1 -1
  107. package/dist/inspection-types.d.ts +46 -1
  108. package/dist/inspection-types.d.ts.map +1 -1
  109. package/dist/internal.d.ts +2 -0
  110. package/dist/internal.d.ts.map +1 -1
  111. package/dist/internal.mjs +2 -0
  112. package/dist/materials.d.ts +22 -0
  113. package/dist/materials.d.ts.map +1 -1
  114. package/dist/pbr-pipeline.d.ts +12 -6
  115. package/dist/pbr-pipeline.d.ts.map +1 -1
  116. package/dist/pipeline/standard-forward-lane.d.ts.map +1 -1
  117. package/dist/pipeline/standard-pipeline.d.ts +3 -0
  118. package/dist/pipeline/standard-pipeline.d.ts.map +1 -1
  119. package/dist/pipeline/standard-post.d.ts +48 -0
  120. package/dist/pipeline/standard-post.d.ts.map +1 -0
  121. package/dist/pipeline/standard-profile.d.ts +3 -6
  122. package/dist/pipeline/standard-profile.d.ts.map +1 -1
  123. package/dist/pipeline-builder.d.ts +18 -0
  124. package/dist/pipeline-builder.d.ts.map +1 -1
  125. package/dist/pipeline-spec.d.ts.map +1 -1
  126. package/dist/plugin.d.ts.map +1 -1
  127. package/dist/points-lines/admission.d.ts +36 -0
  128. package/dist/points-lines/admission.d.ts.map +1 -0
  129. package/dist/points-lines/bounds.d.ts +8 -0
  130. package/dist/points-lines/bounds.d.ts.map +1 -0
  131. package/dist/points-lines/expansion-cache.d.ts +28 -0
  132. package/dist/points-lines/expansion-cache.d.ts.map +1 -0
  133. package/dist/points-lines/inspection.d.ts +53 -0
  134. package/dist/points-lines/inspection.d.ts.map +1 -0
  135. package/dist/points-lines/prepare.d.ts +67 -0
  136. package/dist/points-lines/prepare.d.ts.map +1 -0
  137. package/dist/points-lines/record.d.ts +60 -0
  138. package/dist/points-lines/record.d.ts.map +1 -0
  139. package/dist/points-lines/snapshot.d.ts +49 -0
  140. package/dist/points-lines/snapshot.d.ts.map +1 -0
  141. package/dist/record/frame-lighting.d.ts.map +1 -1
  142. package/dist/record/frame-snapshot.d.ts +100 -5
  143. package/dist/record/frame-snapshot.d.ts.map +1 -1
  144. package/dist/record/frame-targets.d.ts.map +1 -1
  145. package/dist/record/frame.d.ts +4 -2
  146. package/dist/record/frame.d.ts.map +1 -1
  147. package/dist/record/main-pass-geometry.d.ts +18 -0
  148. package/dist/record/main-pass-geometry.d.ts.map +1 -1
  149. package/dist/record/main-pass-material.d.ts +8 -5
  150. package/dist/record/main-pass-material.d.ts.map +1 -1
  151. package/dist/record/main-pass-sprite-draws.d.ts +8 -1
  152. package/dist/record/main-pass-sprite-draws.d.ts.map +1 -1
  153. package/dist/record/main-pass.d.ts +2 -0
  154. package/dist/record/main-pass.d.ts.map +1 -1
  155. package/dist/record/mesh-ssbo.d.ts.map +1 -1
  156. package/dist/record/render-context.d.ts +93 -18
  157. package/dist/record/render-context.d.ts.map +1 -1
  158. package/dist/record/shadow-pass.d.ts.map +1 -1
  159. package/dist/record/skybox-post-pass.d.ts +1 -11
  160. package/dist/record/skybox-post-pass.d.ts.map +1 -1
  161. package/dist/record/typed-frame-graph.d.ts +26 -2
  162. package/dist/record/typed-frame-graph.d.ts.map +1 -1
  163. package/dist/record/view-ubo.d.ts +10 -1
  164. package/dist/record/view-ubo.d.ts.map +1 -1
  165. package/dist/render-contract.d.ts +102 -10
  166. package/dist/render-contract.d.ts.map +1 -1
  167. package/dist/render-graph-primitives.d.ts.map +1 -1
  168. package/dist/render-pipeline.d.ts +50 -6
  169. package/dist/render-pipeline.d.ts.map +1 -1
  170. package/dist/render-system-extract.d.ts +32 -5
  171. package/dist/render-system-extract.d.ts.map +1 -1
  172. package/dist/render-system.d.ts +27 -5
  173. package/dist/render-system.d.ts.map +1 -1
  174. package/dist/scene/render-scene-types.d.ts +3 -0
  175. package/dist/scene/render-scene-types.d.ts.map +1 -1
  176. package/dist/scene/render-scene.d.ts +43 -2
  177. package/dist/scene/render-scene.d.ts.map +1 -1
  178. package/dist/temporal/coverage.d.ts +42 -0
  179. package/dist/temporal/coverage.d.ts.map +1 -0
  180. package/dist/temporal/frame-coordinator.d.ts +99 -0
  181. package/dist/temporal/frame-coordinator.d.ts.map +1 -0
  182. package/dist/temporal/gpu.d.ts +39 -0
  183. package/dist/temporal/gpu.d.ts.map +1 -0
  184. package/dist/temporal/history.d.ts +37 -0
  185. package/dist/temporal/history.d.ts.map +1 -0
  186. package/dist/temporal/index.d.ts +7 -0
  187. package/dist/temporal/index.d.ts.map +1 -0
  188. package/dist/temporal/index.mjs +8 -0
  189. package/dist/temporal/index.mjs.map +1 -0
  190. package/dist/temporal/inspection.d.ts +36 -0
  191. package/dist/temporal/inspection.d.ts.map +1 -0
  192. package/dist/temporal/scene-data-catalog.d.ts +48 -0
  193. package/dist/temporal/scene-data-catalog.d.ts.map +1 -0
  194. package/dist/temporal/scene-data.d.ts +43 -0
  195. package/dist/temporal/scene-data.d.ts.map +1 -0
  196. package/dist/temporal/standard-scene-data.d.ts +61 -0
  197. package/dist/temporal/standard-scene-data.d.ts.map +1 -0
  198. package/dist/temporal/taa-history-resources.d.ts +22 -0
  199. package/dist/temporal/taa-history-resources.d.ts.map +1 -0
  200. package/dist/temporal/taa-history-store.d.ts +27 -0
  201. package/dist/temporal/taa-history-store.d.ts.map +1 -0
  202. package/dist/temporal/taa-resolve.d.ts +15 -0
  203. package/dist/temporal/taa-resolve.d.ts.map +1 -0
  204. package/dist/temporal/temporal-view.d.ts +40 -0
  205. package/dist/temporal/temporal-view.d.ts.map +1 -0
  206. package/dist/temporal/transaction.d.ts +9 -0
  207. package/dist/temporal/transaction.d.ts.map +1 -0
  208. package/dist/temporal/view.d.ts +56 -0
  209. package/dist/temporal/view.d.ts.map +1 -0
  210. package/dist/transmission/backdrop.d.ts +147 -0
  211. package/dist/transmission/backdrop.d.ts.map +1 -0
  212. package/dist/transmission/inspection.d.ts +57 -0
  213. package/dist/transmission/inspection.d.ts.map +1 -0
  214. package/dist/transmission/oracle.d.ts +42 -0
  215. package/dist/transmission/oracle.d.ts.map +1 -0
  216. package/dist/transmission/projection.d.ts +37 -0
  217. package/dist/transmission/projection.d.ts.map +1 -0
  218. package/dist/typed-render-graph-primitives.d.ts +25 -2
  219. package/dist/typed-render-graph-primitives.d.ts.map +1 -1
  220. package/package.json +24 -19
  221. package/src/__tests__/ai-user-cold-start.integration.test.ts +59 -0
  222. package/src/__tests__/ai-user-public-surface.test-d.ts +45 -0
  223. package/src/__tests__/authoring-path.unit.test.ts +9 -0
  224. package/src/__tests__/bloom-exact-zero.unit.test.ts +202 -0
  225. package/src/__tests__/bloom-lifecycle.integration.test.ts +125 -0
  226. package/src/__tests__/construct-renderer-identity.unit.test.ts +4 -3
  227. package/src/__tests__/detached-inspection.integration.test.ts +177 -0
  228. package/src/__tests__/environment-fog-lanes.integration.test.ts +219 -0
  229. package/src/__tests__/environment-generation.integration.test.ts +141 -0
  230. package/src/__tests__/environment-selection.unit.test.ts +245 -0
  231. package/src/__tests__/factory-contract.integration.test.ts +1380 -9
  232. package/src/__tests__/frame-plan-contract.unit.test.ts +90 -0
  233. package/src/__tests__/fullscreen-feature-plan.unit.test.ts +7 -0
  234. package/src/__tests__/gpu-driven-indirect-raster-evidence.ts +12 -2
  235. package/src/__tests__/gpu-driven-production.integration.test.ts +74 -22
  236. package/src/__tests__/gpu-driven-view-graph.integration.test.ts +37 -0
  237. package/src/__tests__/gpu-scene.unit.test.ts +10 -0
  238. package/src/__tests__/injection-kind-owner.test-d.ts +2 -1
  239. package/src/__tests__/material-contract-inventory.unit.test.ts +62 -0
  240. package/src/__tests__/material-cooked-projection.unit.test.ts +18 -124
  241. package/src/__tests__/material-static-dynamic-route.unit.test.ts +28 -28
  242. package/src/__tests__/materials-transmission-validation.unit.test.ts +36 -0
  243. package/src/__tests__/morph-feature-plan.unit.test.ts +7 -0
  244. package/src/__tests__/motion-blur.pixel.integration.test.ts +121 -0
  245. package/src/__tests__/public-surface.test-d.ts +15 -1
  246. package/src/__tests__/render-error-code-owner.test-d.ts +15 -0
  247. package/src/__tests__/render-error-detail-ssot.test-d.ts +11 -2
  248. package/src/__tests__/render-error-exhaustive.test-d.ts +22 -0
  249. package/src/__tests__/render-feature-errors.unit.test.ts +33 -3
  250. package/src/__tests__/render-feature-gpu-work.integration.test.ts +44 -0
  251. package/src/__tests__/render-feature-plan.test-d.ts +22 -89
  252. package/src/__tests__/render-scene-projection.unit.test.ts +28 -0
  253. package/src/__tests__/render-temporal-environment-consumer.browser.test.ts +26 -0
  254. package/src/__tests__/render-temporal-environment-consumer.dawn.test.ts +21 -0
  255. package/src/__tests__/renderer-factory-material-contract.unit.test.ts +433 -1
  256. package/src/__tests__/renderer-frame-transaction.integration.test.ts +405 -0
  257. package/src/__tests__/renderer-lifecycle.integration.test.ts +22 -0
  258. package/src/__tests__/scene-data-catalog.unit.test.ts +59 -0
  259. package/src/__tests__/scene-data-consumer.integration.test.ts +67 -0
  260. package/src/__tests__/scene-data-contract.test-d.ts +35 -0
  261. package/src/__tests__/scene-data-inspection.unit.test.ts +41 -0
  262. package/src/__tests__/scene-data-public-surface.test-d.ts +34 -0
  263. package/src/__tests__/shader-manifest-fixture.ts +111 -0
  264. package/src/__tests__/skinned-shadow-caster.test.ts +102 -0
  265. package/src/__tests__/standard-clustered-pipeline.unit.test.ts +24 -3
  266. package/src/__tests__/standard-pipeline.dawn.test.ts +15 -0
  267. package/src/__tests__/standard-pipeline.integration.test.ts +543 -1
  268. package/src/__tests__/standard-profile-oracle.unit.test.ts +10 -2
  269. package/src/__tests__/standard-temporal-producer.integration.test.ts +35 -0
  270. package/src/__tests__/surface-configuration.unit.test.ts +211 -12
  271. package/src/__tests__/taa-transaction.integration.test.ts +30 -0
  272. package/src/__tests__/temporal-admission.integration.test.ts +40 -0
  273. package/src/__tests__/temporal-coverage.unit.test.ts +35 -0
  274. package/src/__tests__/temporal-demand.unit.test.ts +44 -0
  275. package/src/__tests__/temporal-frame-coordinator.unit.test.ts +64 -0
  276. package/src/__tests__/temporal-graph-topology.unit.test.ts +51 -0
  277. package/src/__tests__/temporal-history-lifecycle.unit.test.ts +170 -0
  278. package/src/__tests__/temporal-performance.integration.test.ts +615 -0
  279. package/src/__tests__/temporal-reset-matrix.unit.test.ts +97 -0
  280. package/src/__tests__/temporal-transaction.integration.test.ts +60 -0
  281. package/src/__tests__/temporal-view.unit.test.ts +152 -0
  282. package/src/__tests__/transmission-prewarm.unit.test.ts +93 -0
  283. package/src/__tests__/typed-pipeline-topology.unit.test.ts +230 -1
  284. package/src/__tests__/urp-pipeline-targets.unit.test.ts +25 -1
  285. package/src/__tests__/urp-pipeline.unit.test.ts +4 -3
  286. package/src/__tests__/visibility-extract.integration.test.ts +27 -1
  287. package/src/__tests__/visibility-producer-matrix.integration.test.ts +10 -0
  288. package/src/assembly/backend-contract.ts +47 -1
  289. package/src/assembly/factory.ts +1295 -507
  290. package/src/assembly/host-contract.ts +4 -0
  291. package/src/assembly/material/assembly.ts +2 -5
  292. package/src/assembly/renderer-frame-transaction.ts +75 -0
  293. package/src/assembly/renderer-inspection.ts +112 -0
  294. package/src/assembly/renderer-lifecycle.ts +6 -0
  295. package/src/authoring.ts +1 -0
  296. package/src/components/__tests__/motion-blur.unit.test.ts +14 -0
  297. package/src/components/__tests__/points-lines-admission.unit.test.ts +219 -0
  298. package/src/components/__tests__/points-lines-schema.unit.test.ts +56 -0
  299. package/src/components/__tests__/schema-contract.unit.test.ts +6 -1
  300. package/src/components/atmosphere.ts +10 -0
  301. package/src/components/camera.ts +2 -1
  302. package/src/components/fog.ts +9 -0
  303. package/src/components/index.ts +10 -0
  304. package/src/components/lines.ts +18 -0
  305. package/src/components/motion-blur.ts +8 -0
  306. package/src/components/points.ts +40 -0
  307. package/src/construct-renderer.ts +40 -3
  308. package/src/device/device-scope.ts +15 -1
  309. package/src/environment/frame.ts +185 -0
  310. package/src/environment/generation.ts +23 -0
  311. package/src/environment/graph.ts +9 -0
  312. package/src/environment/inspection.ts +87 -0
  313. package/src/environment/lifecycle.ts +250 -0
  314. package/src/environment/signature.ts +55 -0
  315. package/src/errors/render.ts +429 -1
  316. package/src/extract/camera.ts +78 -0
  317. package/src/extract/environment.ts +171 -0
  318. package/src/extract/visibility.ts +38 -19
  319. package/src/features/host.ts +36 -5
  320. package/src/features/motion-blur/__tests__/motion-blur-feature.unit.test.ts +67 -0
  321. package/src/features/motion-blur/__tests__/motion-blur-params.unit.test.ts +53 -0
  322. package/src/features/motion-blur/motion-blur-feature.ts +119 -0
  323. package/src/features/motion-blur/motion-blur-params.ts +89 -0
  324. package/src/features/plan.ts +32 -3
  325. package/src/features/prepared-gpu-work.ts +21 -6
  326. package/src/features/prepared-graphics.ts +2 -1
  327. package/src/features/render-graph-raster.ts +24 -4
  328. package/src/features/targets.ts +24 -2
  329. package/src/features/types.ts +13 -0
  330. package/src/fullscreen-post-process-pass.ts +34 -4
  331. package/src/gpu-driven/production-raster.ts +6 -1
  332. package/src/gpu-scene.ts +24 -0
  333. package/src/ibl/skylight-bind-group.ts +30 -38
  334. package/src/index.ts +83 -6
  335. package/src/inspection-types.ts +52 -0
  336. package/src/internal.ts +5 -0
  337. package/src/materials.ts +119 -24
  338. package/src/pbr-pipeline.ts +66 -20
  339. package/src/pipeline/standard-forward-lane.ts +158 -101
  340. package/src/pipeline/standard-pipeline.ts +156 -105
  341. package/src/pipeline/standard-post.ts +373 -0
  342. package/src/pipeline/standard-profile.ts +11 -11
  343. package/src/pipeline-builder.ts +102 -12
  344. package/src/pipeline-spec.ts +9 -0
  345. package/src/plugin.ts +6 -0
  346. package/src/points-lines/__tests__/bounds.unit.test.ts +21 -0
  347. package/src/points-lines/__tests__/cache-recovery.unit.test.ts +157 -0
  348. package/src/points-lines/__tests__/inspection-lanes.integration.test.ts +146 -0
  349. package/src/points-lines/__tests__/inspection.unit.test.ts +173 -0
  350. package/src/points-lines/__tests__/lane-structural.integration.test.ts +122 -0
  351. package/src/points-lines/__tests__/points-lines.bench.ts +400 -0
  352. package/src/points-lines/__tests__/raster-lane.integration.test.ts +44 -0
  353. package/src/points-lines/__tests__/snapshot.unit.test.ts +101 -0
  354. package/src/points-lines/__tests__/view-ubo.unit.test.ts +73 -0
  355. package/src/points-lines/admission.ts +238 -0
  356. package/src/points-lines/bounds.ts +23 -0
  357. package/src/points-lines/expansion-cache.ts +215 -0
  358. package/src/points-lines/inspection.ts +97 -0
  359. package/src/points-lines/prepare.ts +177 -0
  360. package/src/points-lines/record.ts +125 -0
  361. package/src/points-lines/snapshot.ts +130 -0
  362. package/src/record/__tests__/fullscreen-temporal-routing.unit.test.ts +25 -0
  363. package/src/record/__tests__/main-pass-geometry.unit.test.ts +47 -0
  364. package/src/record/__tests__/material-bg-cache.unit.test.ts +12 -1
  365. package/src/record/__tests__/material-pipeline-pending-cache.unit.test.ts +22 -0
  366. package/src/record/__tests__/sprite-material-abi.unit.test.ts +75 -0
  367. package/src/record/__tests__/standard-pbr-ubo-layout.unit.test.ts +67 -0
  368. package/src/record/__tests__/temporal-payload.unit.test.ts +164 -0
  369. package/src/record/__tests__/typed-frame-graph-plan.unit.test.ts +127 -0
  370. package/src/record/frame-lighting.ts +14 -2
  371. package/src/record/frame-snapshot.ts +129 -5
  372. package/src/record/frame-targets.ts +15 -6
  373. package/src/record/frame.ts +119 -4
  374. package/src/record/main-pass-geometry.ts +178 -40
  375. package/src/record/main-pass-material.ts +114 -66
  376. package/src/record/main-pass-sprite-draws.ts +79 -102
  377. package/src/record/main-pass.ts +83 -7
  378. package/src/record/mesh-ssbo.ts +22 -3
  379. package/src/record/render-context.ts +209 -23
  380. package/src/record/shadow-pass.ts +129 -28
  381. package/src/record/skybox-post-pass.ts +99 -42
  382. package/src/record/typed-frame-graph.ts +582 -42
  383. package/src/record/view-ubo.ts +99 -4
  384. package/src/render-contract.ts +121 -7
  385. package/src/render-graph-primitives.ts +18 -1
  386. package/src/render-pipeline.ts +100 -27
  387. package/src/render-system-extract.ts +264 -77
  388. package/src/render-system.ts +786 -43
  389. package/src/scene/render-scene-types.ts +3 -0
  390. package/src/scene/render-scene.ts +307 -9
  391. package/src/temporal/__tests__/taa-history-resources.unit.test.ts +45 -0
  392. package/src/temporal/coverage.ts +76 -0
  393. package/src/temporal/frame-coordinator.ts +311 -0
  394. package/src/temporal/gpu.ts +287 -0
  395. package/src/temporal/history.ts +92 -0
  396. package/src/temporal/index.ts +6 -0
  397. package/src/temporal/inspection.ts +97 -0
  398. package/src/temporal/scene-data-catalog.ts +200 -0
  399. package/src/temporal/scene-data.ts +149 -0
  400. package/src/temporal/standard-scene-data.ts +182 -0
  401. package/src/temporal/taa-history-resources.ts +128 -0
  402. package/src/temporal/taa-history-store.ts +79 -0
  403. package/src/temporal/taa-resolve.ts +34 -0
  404. package/src/temporal/temporal-view.ts +169 -0
  405. package/src/temporal/transaction.ts +17 -0
  406. package/src/temporal/view.ts +161 -0
  407. package/src/transmission/__tests__/capability.unit.test.ts +83 -0
  408. package/src/transmission/__tests__/composition.integration.test.ts +161 -0
  409. package/src/transmission/__tests__/inspection.unit.test.ts +241 -0
  410. package/src/transmission/__tests__/lifecycle.integration.test.ts +96 -0
  411. package/src/transmission/__tests__/oracle.unit.test.ts +131 -0
  412. package/src/transmission/__tests__/projection.unit.test.ts +71 -0
  413. package/src/transmission/__tests__/standard-transmission.dawn.test.ts +438 -0
  414. package/src/transmission/__tests__/transmission-backdrop-topology.unit.test.ts +109 -0
  415. package/src/transmission/__tests__/transmission-backdrop.dawn.test.ts +105 -0
  416. package/src/transmission/backdrop.ts +572 -0
  417. package/src/transmission/inspection.ts +190 -0
  418. package/src/transmission/oracle.ts +141 -0
  419. package/src/transmission/projection.ts +83 -0
  420. package/src/typed-render-graph-primitives.ts +162 -9
  421. package/dist/__tests__/authoring-path.unit.test.d.ts +0 -2
  422. package/dist/__tests__/authoring-path.unit.test.d.ts.map +0 -1
  423. package/dist/__tests__/backend-selection-rhi-capture.test-d.d.ts +0 -2
  424. package/dist/__tests__/backend-selection-rhi-capture.test-d.d.ts.map +0 -1
  425. package/dist/__tests__/callback-inference.test-d.d.ts +0 -2
  426. package/dist/__tests__/callback-inference.test-d.d.ts.map +0 -1
  427. package/dist/__tests__/cluster-binner.test.d.ts +0 -2
  428. package/dist/__tests__/cluster-binner.test.d.ts.map +0 -1
  429. package/dist/__tests__/cluster-grid-default-surface.unit.test.d.ts +0 -2
  430. package/dist/__tests__/cluster-grid-default-surface.unit.test.d.ts.map +0 -1
  431. package/dist/__tests__/construct-renderer-identity.unit.test.d.ts +0 -2
  432. package/dist/__tests__/construct-renderer-identity.unit.test.d.ts.map +0 -1
  433. package/dist/__tests__/device-scope-lifecycle.unit.test.d.ts +0 -2
  434. package/dist/__tests__/device-scope-lifecycle.unit.test.d.ts.map +0 -1
  435. package/dist/__tests__/device-scope-stale-matrix.unit.test.d.ts +0 -2
  436. package/dist/__tests__/device-scope-stale-matrix.unit.test.d.ts.map +0 -1
  437. package/dist/__tests__/direct-extract-consumer-contract.test-d.d.ts +0 -2
  438. package/dist/__tests__/direct-extract-consumer-contract.test-d.d.ts.map +0 -1
  439. package/dist/__tests__/direct-light-snapshot.unit.test.d.ts +0 -2
  440. package/dist/__tests__/direct-light-snapshot.unit.test.d.ts.map +0 -1
  441. package/dist/__tests__/factory-contract.integration.test.d.ts +0 -2
  442. package/dist/__tests__/factory-contract.integration.test.d.ts.map +0 -1
  443. package/dist/__tests__/fallback-row-stride-surface.unit.test.d.ts +0 -2
  444. package/dist/__tests__/fallback-row-stride-surface.unit.test.d.ts.map +0 -1
  445. package/dist/__tests__/frame-observation.contract.test.d.ts +0 -2
  446. package/dist/__tests__/frame-observation.contract.test.d.ts.map +0 -1
  447. package/dist/__tests__/fullscreen-feature-plan.unit.test.d.ts +0 -2
  448. package/dist/__tests__/fullscreen-feature-plan.unit.test.d.ts.map +0 -1
  449. package/dist/__tests__/glyph-text-layout-recovery.unit.test.d.ts +0 -2
  450. package/dist/__tests__/glyph-text-layout-recovery.unit.test.d.ts.map +0 -1
  451. package/dist/__tests__/gpu-driven-indirect-raster-evidence.d.ts +0 -6
  452. package/dist/__tests__/gpu-driven-indirect-raster-evidence.d.ts.map +0 -1
  453. package/dist/__tests__/gpu-driven-indirect-raster.browser.test.d.ts +0 -2
  454. package/dist/__tests__/gpu-driven-indirect-raster.browser.test.d.ts.map +0 -1
  455. package/dist/__tests__/gpu-driven-indirect-raster.dawn.test.d.ts +0 -2
  456. package/dist/__tests__/gpu-driven-indirect-raster.dawn.test.d.ts.map +0 -1
  457. package/dist/__tests__/gpu-driven-production.integration.test.d.ts +0 -2
  458. package/dist/__tests__/gpu-driven-production.integration.test.d.ts.map +0 -1
  459. package/dist/__tests__/gpu-driven-scaling.unit.test.d.ts +0 -2
  460. package/dist/__tests__/gpu-driven-scaling.unit.test.d.ts.map +0 -1
  461. package/dist/__tests__/gpu-driven-view-gpu-evidence.d.ts +0 -18
  462. package/dist/__tests__/gpu-driven-view-gpu-evidence.d.ts.map +0 -1
  463. package/dist/__tests__/gpu-driven-view-graph.integration.test.d.ts +0 -2
  464. package/dist/__tests__/gpu-driven-view-graph.integration.test.d.ts.map +0 -1
  465. package/dist/__tests__/gpu-driven-view-reference.d.ts +0 -15
  466. package/dist/__tests__/gpu-driven-view-reference.d.ts.map +0 -1
  467. package/dist/__tests__/gpu-driven-view.browser.test.d.ts +0 -2
  468. package/dist/__tests__/gpu-driven-view.browser.test.d.ts.map +0 -1
  469. package/dist/__tests__/gpu-driven-view.dawn.test.d.ts +0 -2
  470. package/dist/__tests__/gpu-driven-view.dawn.test.d.ts.map +0 -1
  471. package/dist/__tests__/gpu-driven-view.unit.test.d.ts +0 -2
  472. package/dist/__tests__/gpu-driven-view.unit.test.d.ts.map +0 -1
  473. package/dist/__tests__/gpu-resource-store-stride.unit.test.d.ts +0 -2
  474. package/dist/__tests__/gpu-resource-store-stride.unit.test.d.ts.map +0 -1
  475. package/dist/__tests__/gpu-scene-render-graph-gpu.d.ts +0 -7
  476. package/dist/__tests__/gpu-scene-render-graph-gpu.d.ts.map +0 -1
  477. package/dist/__tests__/gpu-scene-render-graph.browser.test.d.ts +0 -2
  478. package/dist/__tests__/gpu-scene-render-graph.browser.test.d.ts.map +0 -1
  479. package/dist/__tests__/gpu-scene-render-graph.dawn.test.d.ts +0 -2
  480. package/dist/__tests__/gpu-scene-render-graph.dawn.test.d.ts.map +0 -1
  481. package/dist/__tests__/gpu-scene-schema.unit.test.d.ts +0 -2
  482. package/dist/__tests__/gpu-scene-schema.unit.test.d.ts.map +0 -1
  483. package/dist/__tests__/gpu-scene.dawn.test.d.ts +0 -2
  484. package/dist/__tests__/gpu-scene.dawn.test.d.ts.map +0 -1
  485. package/dist/__tests__/gpu-scene.unit.test.d.ts +0 -2
  486. package/dist/__tests__/gpu-scene.unit.test.d.ts.map +0 -1
  487. package/dist/__tests__/ibl/face-uniforms.unit.test.d.ts +0 -2
  488. package/dist/__tests__/ibl/face-uniforms.unit.test.d.ts.map +0 -1
  489. package/dist/__tests__/infinite-grid-no-vertex-probe.unit.test.d.ts +0 -2
  490. package/dist/__tests__/infinite-grid-no-vertex-probe.unit.test.d.ts.map +0 -1
  491. package/dist/__tests__/injection-kind-owner.test-d.d.ts +0 -2
  492. package/dist/__tests__/injection-kind-owner.test-d.d.ts.map +0 -1
  493. package/dist/__tests__/ktx2-basis-gpu-consumer.dawn.test.d.ts +0 -2
  494. package/dist/__tests__/ktx2-basis-gpu-consumer.dawn.test.d.ts.map +0 -1
  495. package/dist/__tests__/light-buffer-layout.unit.test.d.ts +0 -2
  496. package/dist/__tests__/light-buffer-layout.unit.test.d.ts.map +0 -1
  497. package/dist/__tests__/material-contract-inventory.unit.test.d.ts +0 -2
  498. package/dist/__tests__/material-contract-inventory.unit.test.d.ts.map +0 -1
  499. package/dist/__tests__/material-cooked-projection.unit.test.d.ts +0 -2
  500. package/dist/__tests__/material-cooked-projection.unit.test.d.ts.map +0 -1
  501. package/dist/__tests__/material-snapshot-mutation.integration.test.d.ts +0 -2
  502. package/dist/__tests__/material-snapshot-mutation.integration.test.d.ts.map +0 -1
  503. package/dist/__tests__/material-static-dynamic-route.unit.test.d.ts +0 -2
  504. package/dist/__tests__/material-static-dynamic-route.unit.test.d.ts.map +0 -1
  505. package/dist/__tests__/material-stride-surface.unit.test.d.ts +0 -2
  506. package/dist/__tests__/material-stride-surface.unit.test.d.ts.map +0 -1
  507. package/dist/__tests__/mesh-buffer-usage-surface.unit.test.d.ts +0 -2
  508. package/dist/__tests__/mesh-buffer-usage-surface.unit.test.d.ts.map +0 -1
  509. package/dist/__tests__/mesh-material-bindings.unit.test.d.ts +0 -2
  510. package/dist/__tests__/mesh-material-bindings.unit.test.d.ts.map +0 -1
  511. package/dist/__tests__/mesh-stride-surface.unit.test.d.ts +0 -2
  512. package/dist/__tests__/mesh-stride-surface.unit.test.d.ts.map +0 -1
  513. package/dist/__tests__/morph-culling-reentry.dawn.test.d.ts +0 -2
  514. package/dist/__tests__/morph-culling-reentry.dawn.test.d.ts.map +0 -1
  515. package/dist/__tests__/morph-feature-gpu-work.integration.test.d.ts +0 -2
  516. package/dist/__tests__/morph-feature-gpu-work.integration.test.d.ts.map +0 -1
  517. package/dist/__tests__/morph-feature-plan.unit.test.d.ts +0 -2
  518. package/dist/__tests__/morph-feature-plan.unit.test.d.ts.map +0 -1
  519. package/dist/__tests__/morph-visual-evidence.integration.test.d.ts +0 -2
  520. package/dist/__tests__/morph-visual-evidence.integration.test.d.ts.map +0 -1
  521. package/dist/__tests__/nineslice-handle-surface.unit.test.d.ts +0 -2
  522. package/dist/__tests__/nineslice-handle-surface.unit.test.d.ts.map +0 -1
  523. package/dist/__tests__/post-process-error-policy-owner.unit.test.d.ts +0 -2
  524. package/dist/__tests__/post-process-error-policy-owner.unit.test.d.ts.map +0 -1
  525. package/dist/__tests__/prepared-buffer-kind-owner.test-d.d.ts +0 -2
  526. package/dist/__tests__/prepared-buffer-kind-owner.test-d.d.ts.map +0 -1
  527. package/dist/__tests__/prepared-graphics-capability.unit.test.d.ts +0 -2
  528. package/dist/__tests__/prepared-graphics-capability.unit.test.d.ts.map +0 -1
  529. package/dist/__tests__/prepared-graphics-generation.unit.test.d.ts +0 -2
  530. package/dist/__tests__/prepared-graphics-generation.unit.test.d.ts.map +0 -1
  531. package/dist/__tests__/prepared-graphics-lifecycle.unit.test.d.ts +0 -2
  532. package/dist/__tests__/prepared-graphics-lifecycle.unit.test.d.ts.map +0 -1
  533. package/dist/__tests__/prepared-graphics-pipeline-warmup.unit.test.d.ts +0 -2
  534. package/dist/__tests__/prepared-graphics-pipeline-warmup.unit.test.d.ts.map +0 -1
  535. package/dist/__tests__/prepared-graphics-resolver.unit.test.d.ts +0 -2
  536. package/dist/__tests__/prepared-graphics-resolver.unit.test.d.ts.map +0 -1
  537. package/dist/__tests__/prepared-graphics-snapshot.unit.test.d.ts +0 -2
  538. package/dist/__tests__/prepared-graphics-snapshot.unit.test.d.ts.map +0 -1
  539. package/dist/__tests__/prepared-graphics-store.unit.test.d.ts +0 -2
  540. package/dist/__tests__/prepared-graphics-store.unit.test.d.ts.map +0 -1
  541. package/dist/__tests__/prepared-graphics-validation.unit.test.d.ts +0 -2
  542. package/dist/__tests__/prepared-graphics-validation.unit.test.d.ts.map +0 -1
  543. package/dist/__tests__/profiler-default-off.test.d.ts +0 -2
  544. package/dist/__tests__/profiler-default-off.test.d.ts.map +0 -1
  545. package/dist/__tests__/profiler-phase-catalog.test.d.ts +0 -2
  546. package/dist/__tests__/profiler-phase-catalog.test.d.ts.map +0 -1
  547. package/dist/__tests__/profiler-phase-integration.test.d.ts +0 -2
  548. package/dist/__tests__/profiler-phase-integration.test.d.ts.map +0 -1
  549. package/dist/__tests__/profiler-phase-token.test.d.ts +0 -2
  550. package/dist/__tests__/profiler-phase-token.test.d.ts.map +0 -1
  551. package/dist/__tests__/public-surface.test-d.d.ts +0 -2
  552. package/dist/__tests__/public-surface.test-d.d.ts.map +0 -1
  553. package/dist/__tests__/recover-error-policy-owner.unit.test.d.ts +0 -2
  554. package/dist/__tests__/recover-error-policy-owner.unit.test.d.ts.map +0 -1
  555. package/dist/__tests__/render-error-code-owner.test-d.d.ts +0 -2
  556. package/dist/__tests__/render-error-code-owner.test-d.d.ts.map +0 -1
  557. package/dist/__tests__/render-error-detail-ssot.test-d.d.ts +0 -2
  558. package/dist/__tests__/render-error-detail-ssot.test-d.d.ts.map +0 -1
  559. package/dist/__tests__/render-error-exhaustive.test-d.d.ts +0 -2
  560. package/dist/__tests__/render-error-exhaustive.test-d.d.ts.map +0 -1
  561. package/dist/__tests__/render-feature-assembly.test-d.d.ts +0 -2
  562. package/dist/__tests__/render-feature-assembly.test-d.d.ts.map +0 -1
  563. package/dist/__tests__/render-feature-context.test-d.d.ts +0 -2
  564. package/dist/__tests__/render-feature-context.test-d.d.ts.map +0 -1
  565. package/dist/__tests__/render-feature-contract.test-d.d.ts +0 -2
  566. package/dist/__tests__/render-feature-contract.test-d.d.ts.map +0 -1
  567. package/dist/__tests__/render-feature-diagnostics.unit.test.d.ts +0 -2
  568. package/dist/__tests__/render-feature-diagnostics.unit.test.d.ts.map +0 -1
  569. package/dist/__tests__/render-feature-docs.unit.test.d.ts +0 -2
  570. package/dist/__tests__/render-feature-docs.unit.test.d.ts.map +0 -1
  571. package/dist/__tests__/render-feature-errors.unit.test.d.ts +0 -2
  572. package/dist/__tests__/render-feature-errors.unit.test.d.ts.map +0 -1
  573. package/dist/__tests__/render-feature-gpu-work.integration.test.d.ts +0 -2
  574. package/dist/__tests__/render-feature-gpu-work.integration.test.d.ts.map +0 -1
  575. package/dist/__tests__/render-feature-plan.test-d.d.ts +0 -2
  576. package/dist/__tests__/render-feature-plan.test-d.d.ts.map +0 -1
  577. package/dist/__tests__/render-feature-plan.unit.test.d.ts +0 -2
  578. package/dist/__tests__/render-feature-plan.unit.test.d.ts.map +0 -1
  579. package/dist/__tests__/render-feature-prepared-diagnostics.unit.test.d.ts +0 -2
  580. package/dist/__tests__/render-feature-prepared-diagnostics.unit.test.d.ts.map +0 -1
  581. package/dist/__tests__/render-feature-prepared-errors.test-d.d.ts +0 -2
  582. package/dist/__tests__/render-feature-prepared-errors.test-d.d.ts.map +0 -1
  583. package/dist/__tests__/render-feature-prepared-graphics-docs.unit.test.d.ts +0 -2
  584. package/dist/__tests__/render-feature-prepared-graphics-docs.unit.test.d.ts.map +0 -1
  585. package/dist/__tests__/render-feature-prepared-graphics-isolation.unit.test.d.ts +0 -2
  586. package/dist/__tests__/render-feature-prepared-graphics-isolation.unit.test.d.ts.map +0 -1
  587. package/dist/__tests__/render-feature-prepared-graphics-negative.test-d.d.ts +0 -2
  588. package/dist/__tests__/render-feature-prepared-graphics-negative.test-d.d.ts.map +0 -1
  589. package/dist/__tests__/render-feature-prepared-graphics.test-d.d.ts +0 -2
  590. package/dist/__tests__/render-feature-prepared-graphics.test-d.d.ts.map +0 -1
  591. package/dist/__tests__/render-feature-prepared-graphics.unit.test.d.ts +0 -2
  592. package/dist/__tests__/render-feature-prepared-graphics.unit.test.d.ts.map +0 -1
  593. package/dist/__tests__/render-feature-public-surface.test-d.d.ts +0 -2
  594. package/dist/__tests__/render-feature-public-surface.test-d.d.ts.map +0 -1
  595. package/dist/__tests__/render-feature-retry.unit.test.d.ts +0 -2
  596. package/dist/__tests__/render-feature-retry.unit.test.d.ts.map +0 -1
  597. package/dist/__tests__/render-feature-scheduling.unit.test.d.ts +0 -2
  598. package/dist/__tests__/render-feature-scheduling.unit.test.d.ts.map +0 -1
  599. package/dist/__tests__/render-feature-stage-failed-policy-owner.unit.test.d.ts +0 -2
  600. package/dist/__tests__/render-feature-stage-failed-policy-owner.unit.test.d.ts.map +0 -1
  601. package/dist/__tests__/render-feature-stage-fault-recovery.unit.test.d.ts +0 -2
  602. package/dist/__tests__/render-feature-stage-fault-recovery.unit.test.d.ts.map +0 -1
  603. package/dist/__tests__/render-feature-visibility-context.test-d.d.ts +0 -2
  604. package/dist/__tests__/render-feature-visibility-context.test-d.d.ts.map +0 -1
  605. package/dist/__tests__/render-feature-visibility-context.unit.test.d.ts +0 -2
  606. package/dist/__tests__/render-feature-visibility-context.unit.test.d.ts.map +0 -1
  607. package/dist/__tests__/render-feature-zero-work.unit.test.d.ts +0 -2
  608. package/dist/__tests__/render-feature-zero-work.unit.test.d.ts.map +0 -1
  609. package/dist/__tests__/render-graph-compute-raster-gpu.d.ts +0 -7
  610. package/dist/__tests__/render-graph-compute-raster-gpu.d.ts.map +0 -1
  611. package/dist/__tests__/render-graph-compute-raster.browser.test.d.ts +0 -2
  612. package/dist/__tests__/render-graph-compute-raster.browser.test.d.ts.map +0 -1
  613. package/dist/__tests__/render-graph-compute-raster.dawn.test.d.ts +0 -2
  614. package/dist/__tests__/render-graph-compute-raster.dawn.test.d.ts.map +0 -1
  615. package/dist/__tests__/render-graph-hzb-gpu.d.ts +0 -7
  616. package/dist/__tests__/render-graph-hzb-gpu.d.ts.map +0 -1
  617. package/dist/__tests__/render-graph-hzb.browser.test.d.ts +0 -2
  618. package/dist/__tests__/render-graph-hzb.browser.test.d.ts.map +0 -1
  619. package/dist/__tests__/render-graph-hzb.dawn.test.d.ts +0 -2
  620. package/dist/__tests__/render-graph-hzb.dawn.test.d.ts.map +0 -1
  621. package/dist/__tests__/render-graph-primitives.unit.test.d.ts +0 -2
  622. package/dist/__tests__/render-graph-primitives.unit.test.d.ts.map +0 -1
  623. package/dist/__tests__/render-graph-storage-indirect-gpu.d.ts +0 -12
  624. package/dist/__tests__/render-graph-storage-indirect-gpu.d.ts.map +0 -1
  625. package/dist/__tests__/render-graph-storage-indirect.browser.test.d.ts +0 -2
  626. package/dist/__tests__/render-graph-storage-indirect.browser.test.d.ts.map +0 -1
  627. package/dist/__tests__/render-graph-storage-indirect.dawn.test.d.ts +0 -2
  628. package/dist/__tests__/render-graph-storage-indirect.dawn.test.d.ts.map +0 -1
  629. package/dist/__tests__/render-scene-projection.unit.test.d.ts +0 -2
  630. package/dist/__tests__/render-scene-projection.unit.test.d.ts.map +0 -1
  631. package/dist/__tests__/renderer-factory-material-contract.unit.test.d.ts +0 -2
  632. package/dist/__tests__/renderer-factory-material-contract.unit.test.d.ts.map +0 -1
  633. package/dist/__tests__/renderer-lifecycle.integration.test.d.ts +0 -2
  634. package/dist/__tests__/renderer-lifecycle.integration.test.d.ts.map +0 -1
  635. package/dist/__tests__/rhi-backend-package-boundary.unit.test.d.ts +0 -2
  636. package/dist/__tests__/rhi-backend-package-boundary.unit.test.d.ts.map +0 -1
  637. package/dist/__tests__/scriptable-pack-consumer.test-d.d.ts +0 -2
  638. package/dist/__tests__/scriptable-pack-consumer.test-d.d.ts.map +0 -1
  639. package/dist/__tests__/shader-stage-surface.unit.test.d.ts +0 -2
  640. package/dist/__tests__/shader-stage-surface.unit.test.d.ts.map +0 -1
  641. package/dist/__tests__/ssao-config.unit.test.d.ts +0 -2
  642. package/dist/__tests__/ssao-config.unit.test.d.ts.map +0 -1
  643. package/dist/__tests__/ssao-kernel-surface.unit.test.d.ts +0 -2
  644. package/dist/__tests__/ssao-kernel-surface.unit.test.d.ts.map +0 -1
  645. package/dist/__tests__/standard-clustered-pipeline.unit.test.d.ts +0 -2
  646. package/dist/__tests__/standard-clustered-pipeline.unit.test.d.ts.map +0 -1
  647. package/dist/__tests__/standard-descriptors.test-d.d.ts +0 -2
  648. package/dist/__tests__/standard-descriptors.test-d.d.ts.map +0 -1
  649. package/dist/__tests__/standard-pipeline.dawn.test.d.ts +0 -2
  650. package/dist/__tests__/standard-pipeline.dawn.test.d.ts.map +0 -1
  651. package/dist/__tests__/standard-pipeline.integration.test.d.ts +0 -2
  652. package/dist/__tests__/standard-pipeline.integration.test.d.ts.map +0 -1
  653. package/dist/__tests__/standard-profile-oracle.unit.test.d.ts +0 -2
  654. package/dist/__tests__/standard-profile-oracle.unit.test.d.ts.map +0 -1
  655. package/dist/__tests__/surface-configuration.unit.test.d.ts +0 -2
  656. package/dist/__tests__/surface-configuration.unit.test.d.ts.map +0 -1
  657. package/dist/__tests__/texture-usage-surface.unit.test.d.ts +0 -2
  658. package/dist/__tests__/texture-usage-surface.unit.test.d.ts.map +0 -1
  659. package/dist/__tests__/typed-pipeline-topology.unit.test.d.ts +0 -2
  660. package/dist/__tests__/typed-pipeline-topology.unit.test.d.ts.map +0 -1
  661. package/dist/__tests__/urp-pipeline-targets.unit.test.d.ts +0 -2
  662. package/dist/__tests__/urp-pipeline-targets.unit.test.d.ts.map +0 -1
  663. package/dist/__tests__/urp-pipeline.unit.test.d.ts +0 -2
  664. package/dist/__tests__/urp-pipeline.unit.test.d.ts.map +0 -1
  665. package/dist/__tests__/vertex-color-pipeline.unit.test.d.ts +0 -2
  666. package/dist/__tests__/vertex-color-pipeline.unit.test.d.ts.map +0 -1
  667. package/dist/__tests__/vertex-layout-consumer.unit.test.d.ts +0 -2
  668. package/dist/__tests__/vertex-layout-consumer.unit.test.d.ts.map +0 -1
  669. package/dist/__tests__/visibility-diagnostics.integration.test.d.ts +0 -2
  670. package/dist/__tests__/visibility-diagnostics.integration.test.d.ts.map +0 -1
  671. package/dist/__tests__/visibility-extract.integration.test.d.ts +0 -2
  672. package/dist/__tests__/visibility-extract.integration.test.d.ts.map +0 -1
  673. package/dist/__tests__/visibility-extract.perf.test.d.ts +0 -2
  674. package/dist/__tests__/visibility-extract.perf.test.d.ts.map +0 -1
  675. package/dist/__tests__/visibility-feature-dedup.integration.test.d.ts +0 -2
  676. package/dist/__tests__/visibility-feature-dedup.integration.test.d.ts.map +0 -1
  677. package/dist/__tests__/visibility-hidden-report.unit.test.d.ts +0 -2
  678. package/dist/__tests__/visibility-hidden-report.unit.test.d.ts.map +0 -1
  679. package/dist/__tests__/visibility-instances.integration.test.d.ts +0 -2
  680. package/dist/__tests__/visibility-instances.integration.test.d.ts.map +0 -1
  681. package/dist/__tests__/visibility-multi-world.integration.test.d.ts +0 -2
  682. package/dist/__tests__/visibility-multi-world.integration.test.d.ts.map +0 -1
  683. package/dist/__tests__/visibility-producer-matrix.integration.test.d.ts +0 -2
  684. package/dist/__tests__/visibility-producer-matrix.integration.test.d.ts.map +0 -1
  685. package/dist/__tests__/visibility-producer-matrix.unit.test.d.ts +0 -2
  686. package/dist/__tests__/visibility-producer-matrix.unit.test.d.ts.map +0 -1
  687. package/dist/__tests__/visibility-public-surface.test-d.d.ts +0 -2
  688. package/dist/__tests__/visibility-public-surface.test-d.d.ts.map +0 -1
  689. package/dist/__tests__/visibility-resolver.unit.test.d.ts +0 -2
  690. package/dist/__tests__/visibility-resolver.unit.test.d.ts.map +0 -1
  691. package/dist/__tests__/visibility-resource-short-circuit.unit.test.d.ts +0 -2
  692. package/dist/__tests__/visibility-resource-short-circuit.unit.test.d.ts.map +0 -1
  693. package/dist/__tests__/visibility-snapshot-contract.unit.test.d.ts +0 -2
  694. package/dist/__tests__/visibility-snapshot-contract.unit.test.d.ts.map +0 -1
  695. package/dist/__tests__/vocabulary.unit.test.d.ts +0 -2
  696. package/dist/__tests__/vocabulary.unit.test.d.ts.map +0 -1
  697. package/dist/chunk-CQXZC5XI.mjs.map +0 -1
  698. package/dist/chunk-QC4VW3XJ.mjs.map +0 -1
  699. package/dist/chunk-SCRSAK5B.mjs.map +0 -1
  700. package/dist/components/__tests__/schema-contract.unit.test.d.ts +0 -2
  701. package/dist/components/__tests__/schema-contract.unit.test.d.ts.map +0 -1
  702. package/dist/components/__tests__/schema-parity.unit.test.d.ts +0 -2
  703. package/dist/components/__tests__/schema-parity.unit.test.d.ts.map +0 -1
  704. package/dist/components/__tests__/visibility-schema.unit.test.d.ts +0 -2
  705. package/dist/components/__tests__/visibility-schema.unit.test.d.ts.map +0 -1
  706. package/dist/record/__tests__/material-bg-cache.unit.test.d.ts +0 -2
  707. package/dist/record/__tests__/material-bg-cache.unit.test.d.ts.map +0 -1
  708. package/dist/record/__tests__/material-slot-plan.unit.test.d.ts +0 -2
  709. package/dist/record/__tests__/material-slot-plan.unit.test.d.ts.map +0 -1
  710. package/dist/record/__tests__/typed-frame-graph-plan.unit.test.d.ts +0 -2
  711. package/dist/record/__tests__/typed-frame-graph-plan.unit.test.d.ts.map +0 -1
  712. package/dist/record/__tests__/video-texture-view.unit.test.d.ts +0 -2
  713. package/dist/record/__tests__/video-texture-view.unit.test.d.ts.map +0 -1
@@ -16,7 +16,11 @@ import {
16
16
  } from '../gpu-usage';
17
17
  import { assembleMaterialWithSkylightEntries } from '../ibl/skylight-bind-group';
18
18
  import type { InstanceBufferCacheEntry } from '../instance-buffer-cache';
19
- import { buildPbrMaterialUserRegionEntries } from '../pbr-pipeline';
19
+ import {
20
+ buildPbrMaterialUserRegionEntries,
21
+ SHADOW_CASTER_SHADER_ID,
22
+ shadowCasterVariantSet,
23
+ } from '../pbr-pipeline';
20
24
  import type { DispatchEntry, ExtractedLights } from '../render-system-extract';
21
25
  import { matchPass } from '../systems/pass-selector';
22
26
  import { worldEntityKey } from './frame-snapshot';
@@ -25,11 +29,13 @@ import {
25
29
  getOrCreatePerEntity,
26
30
  MAX_UNIFORM_INSTANCES,
27
31
  MESH_PER_ENTITY_STRIDE,
32
+ MESH_SSBO_BYTES,
33
+ MESH_UBO_FULL_ARRAY_BYTES,
28
34
  packInstanceStorageBuffer,
29
35
  } from './mesh-ssbo';
30
36
  import type { _InternalRenderPipelineContext } from './render-context';
31
37
  import { STANDARD_PBR_UBO_SIZE } from './render-context';
32
- import { pointShadowViewOffset, VIEW_UNIFORM_BYTES } from './view-ubo';
38
+ import { POINTS_LINES_VIEW_BYTES, pointShadowViewOffset, VIEW_UNIFORM_BYTES } from './view-ubo';
33
39
 
34
40
  export const SHADOW_CASTER_SLOT_STRIDE = 256;
35
41
  export const SHADOW_CASTER_BUFFER_SIZE = SHADOW_CASTER_SLOT_STRIDE * 8;
@@ -88,6 +94,7 @@ function ensureTypedShadowViewBg(
88
94
  pipelineState.shadowParamsBuffer,
89
95
  pipelineState.shadowCasterCascadeBuffer,
90
96
  pipelineState.shadowFallbackTextureView,
97
+ pipelineState.pointsLinesViewBuffer ?? pipelineState.viewUniformBuffer,
91
98
  ],
92
99
  variant,
93
100
  () => {
@@ -140,7 +147,7 @@ function ensureTypedShadowViewBg(
140
147
  value: {
141
148
  buffer: pipelineState.shadowCasterCascadeBuffer,
142
149
  offset: cascadeOffset,
143
- size: 80,
150
+ size: POINTS_LINES_VIEW_BYTES,
144
151
  },
145
152
  },
146
153
  },
@@ -148,6 +155,16 @@ function ensureTypedShadowViewBg(
148
155
  binding: 8,
149
156
  resource: { kind: 'textureView', value: pipelineState.shadowFallbackTextureView },
150
157
  },
158
+ {
159
+ binding: 10,
160
+ resource: {
161
+ kind: 'buffer',
162
+ value: {
163
+ buffer: pipelineState.pointsLinesViewBuffer ?? pipelineState.viewUniformBuffer,
164
+ size: 80,
165
+ },
166
+ },
167
+ },
151
168
  ],
152
169
  });
153
170
  if (!created.ok) throw created.error;
@@ -177,17 +194,97 @@ function shadowShaderMap(c: _InternalRenderPipelineContext): ReadonlyMap<number,
177
194
  function shadowPipeline(c: _InternalRenderPipelineContext): RenderPipeline | null {
178
195
  return (
179
196
  c.runtime.getMaterialShaderPipeline?.(
180
- 'forgeax::default-shadow-caster',
197
+ SHADOW_CASTER_SHADER_ID,
181
198
  false,
182
199
  undefined,
183
200
  'triangle-list',
184
201
  undefined,
202
+ shadowCasterVariantSet(c.runtime.device.caps.storageBuffer, false),
203
+ 'shadow-caster',
204
+ undefined,
205
+ undefined,
185
206
  undefined,
207
+ undefined,
208
+ undefined,
209
+ undefined,
210
+ undefined,
211
+ undefined,
212
+ 'pbr',
213
+ ) ?? null
214
+ );
215
+ }
216
+
217
+ function skinnedShadowPipeline(
218
+ c: _InternalRenderPipelineContext,
219
+ entry: _InternalRenderPipelineContext['validatedOrdered'][number],
220
+ ): RenderPipeline | null {
221
+ return (
222
+ c.runtime.getMaterialShaderPipeline?.(
223
+ SHADOW_CASTER_SHADER_ID,
224
+ false,
225
+ undefined,
226
+ entry.mesh.submeshes[0]?.topology ?? 'triangle-list',
227
+ entry.mesh.indexFormat,
228
+ shadowCasterVariantSet(c.runtime.device.caps.storageBuffer, true),
186
229
  'shadow-caster',
230
+ undefined,
231
+ 1,
232
+ undefined,
233
+ undefined,
234
+ undefined,
235
+ undefined,
236
+ entry.mesh.layoutProjection,
237
+ undefined,
238
+ 'pbr-skin',
187
239
  ) ?? null
188
240
  );
189
241
  }
190
242
 
243
+ function skinnedShadowMeshBindGroup(
244
+ c: _InternalRenderPipelineContext,
245
+ entry: _InternalRenderPipelineContext['validatedOrdered'][number],
246
+ ): BindGroup | null {
247
+ const skin = entry.source.skin;
248
+ const layout = c.pipelineState.pbrSkinMeshBindGroupLayout;
249
+ const allocator = c.pipelineState.skinPaletteAllocator;
250
+ if (skin === undefined || layout === null || allocator === null) return null;
251
+ return getOrCreateFromChain(
252
+ c.frameState.meshBindGroupCache,
253
+ [c.pipelineState.meshStorageBuffer.buffer, skin.buffer],
254
+ 'shadow-pbr-skin-mesh',
255
+ () => {
256
+ const created = c.runtime.device.createBindGroup({
257
+ label: 'shadow-pbr-skin-mesh-bg',
258
+ layout,
259
+ entries: [
260
+ {
261
+ binding: 0,
262
+ resource: {
263
+ kind: 'buffer',
264
+ value: {
265
+ buffer: c.pipelineState.meshStorageBuffer.buffer,
266
+ size: c.runtime.device.caps.storageBuffer
267
+ ? MESH_SSBO_BYTES
268
+ : MESH_UBO_FULL_ARRAY_BYTES,
269
+ },
270
+ },
271
+ },
272
+ {
273
+ binding: 1,
274
+ resource: {
275
+ kind: 'buffer',
276
+ value: { buffer: skin.buffer, size: allocator.bindingWindowBytes },
277
+ },
278
+ },
279
+ ],
280
+ });
281
+ if (!created.ok) throw created.error;
282
+ return created.value;
283
+ },
284
+ c.bindGroupCounts,
285
+ );
286
+ }
287
+
191
288
  export function encodeDirectionalShadowPass(
192
289
  c: _InternalRenderPipelineContext,
193
290
  pass: RhiRenderPassEncoder,
@@ -207,7 +304,7 @@ export function encodeDirectionalShadowPass(
207
304
  c.frameState.directionalShadowCacheRecorded = true;
208
305
  pass.setViewport(viewport.x, viewport.y, viewport.w, viewport.h, 0, 1);
209
306
  pass.setPipeline(pipeline);
210
- pass.setBindGroup(0, viewBg);
307
+ pass.setBindGroup(0, viewBg, [0]);
211
308
  pass.setBindGroup(1, materialBg, [0]);
212
309
  recordShadowCasterDraws(
213
310
  c,
@@ -237,7 +334,7 @@ export function encodePointShadowPass(
237
334
  const materialBg = ensureSpotShadowMaterialBg(c);
238
335
  if (pipeline === null || viewBg === null || materialBg === null) return;
239
336
  pass.setPipeline(pipeline);
240
- pass.setBindGroup(0, viewBg);
337
+ pass.setBindGroup(0, viewBg, [0]);
241
338
  pass.setBindGroup(1, materialBg, [0]);
242
339
  recordShadowCasterDraws(
243
340
  c,
@@ -285,7 +382,7 @@ export function encodeSpotShadowPass(
285
382
  1,
286
383
  );
287
384
  pass.setPipeline(pipeline);
288
- pass.setBindGroup(0, viewBg);
385
+ pass.setBindGroup(0, viewBg, [0]);
289
386
  pass.setBindGroup(1, materialBg, [0]);
290
387
  // Reuse the shared caster recorder. The compact spot-only loop used to
291
388
  // depend on instance bindings created by a directional pass, so a scene
@@ -430,9 +527,13 @@ function recordShadowCasterDraws(
430
527
  // its own fragment-carrying PSO so `discard` runs in the depth pass.
431
528
  const entryShadowShaderId = shadowShaderByRenderableIdx.get(entry.renderableIndex);
432
529
  let entryShadowPipeline = shadowPipeline;
433
- if (
530
+ if (entry.source.skin !== undefined) {
531
+ const skinPipeline = skinnedShadowPipeline(c, entry);
532
+ if (skinPipeline === null) continue;
533
+ entryShadowPipeline = skinPipeline;
534
+ } else if (
434
535
  entryShadowShaderId !== undefined &&
435
- entryShadowShaderId !== 'forgeax::default-shadow-caster'
536
+ entryShadowShaderId !== SHADOW_CASTER_SHADER_ID
436
537
  ) {
437
538
  // Custom ShadowCaster PSO; same cache path as the default above
438
539
  // (passKind 'shadow-caster'). On a cache miss (async build in
@@ -483,7 +584,16 @@ function recordShadowCasterDraws(
483
584
  }
484
585
  }
485
586
 
486
- shadowPass.setBindGroup(2, shadowMeshBindGroup, [i * MESH_PER_ENTITY_STRIDE]);
587
+ if (entry.source.skin !== undefined) {
588
+ const skinMeshBindGroup = skinnedShadowMeshBindGroup(c, entry);
589
+ if (skinMeshBindGroup === null) continue;
590
+ shadowPass.setBindGroup(2, skinMeshBindGroup, [
591
+ i * MESH_PER_ENTITY_STRIDE,
592
+ entry.source.skin.byteOffset,
593
+ ]);
594
+ } else {
595
+ shadowPass.setBindGroup(2, shadowMeshBindGroup, [i * MESH_PER_ENTITY_STRIDE]);
596
+ }
487
597
 
488
598
  // C1 + C2 (w12): per-entity instance buffer + instanceCount
489
599
  let shadowInstanceBuffer: Buffer = pipelineState.identityInstanceBuffer;
@@ -652,24 +762,15 @@ function ensureSpotShadowMaterialBg(c: _InternalRenderPipelineContext): BindGrou
652
762
  });
653
763
  const merged =
654
764
  fb !== null
655
- ? assembleMaterialWithSkylightEntries(
656
- fallbackEntries,
657
- {
658
- irradianceView: fb.irradianceView,
659
- irradianceSampler: fb.sampler,
660
- prefilterView: fb.prefilterView,
661
- prefilterSampler: fb.sampler,
662
- brdfLutView: fb.brdfLutView,
663
- brdfLutSampler: fb.sampler,
664
- intensityBuffer: fb.intensityBuffer,
665
- },
666
- {
667
- emissiveSampler: pipelineState.defaultSampler,
668
- emissiveView: pipelineState.defaultWhiteTextureView,
669
- occlusionSampler: pipelineState.defaultSampler,
670
- occlusionView: pipelineState.defaultWhiteTextureView,
671
- },
672
- )
765
+ ? assembleMaterialWithSkylightEntries(fallbackEntries, {
766
+ irradianceView: fb.irradianceView,
767
+ irradianceSampler: fb.sampler,
768
+ prefilterView: fb.prefilterView,
769
+ prefilterSampler: fb.sampler,
770
+ brdfLutView: fb.brdfLutView,
771
+ brdfLutSampler: fb.sampler,
772
+ intensityBuffer: fb.intensityBuffer,
773
+ })
673
774
  : fallbackEntries;
674
775
  const r = runtime.device.createBindGroup({
675
776
  label: 'shadow-material-bg',
@@ -1,9 +1,11 @@
1
1
  import type { ResolveContext } from '@forgeax/engine-render-graph';
2
- import type { RhiRenderPassEncoder, TextureView } from '@forgeax/engine-rhi';
2
+ import { RhiError, type RhiRenderPassEncoder, type TextureView } from '@forgeax/engine-rhi';
3
3
  import { toShared } from '@forgeax/engine-types';
4
4
  import { buildBeginRenderPassDescriptor } from '../pipeline-spec';
5
+ import type { BloomFrameReceipts } from './frame-snapshot';
5
6
  import { getOrCreateFromChain } from './mesh-ssbo';
6
7
  import type { _InternalRenderPipelineContext } from './render-context';
8
+ import { VIEW_UNIFORM_BYTES } from './view-ubo';
7
9
 
8
10
  /**
9
11
  * feat-20260531-skybox-env-background M2 / w8: skybox pass recording stub.
@@ -111,7 +113,7 @@ export function recordSkyboxPass(
111
113
  binding: 2,
112
114
  resource: {
113
115
  kind: 'buffer',
114
- value: { buffer: pipelineState.viewUniformBuffer },
116
+ value: { buffer: pipelineState.viewUniformBuffer, size: VIEW_UNIFORM_BYTES },
115
117
  },
116
118
  },
117
119
  {
@@ -176,30 +178,72 @@ export function encodeSkyboxPass(
176
178
  // Gate: bloom === 'off' || !tonemapActive => early-return (AC-04/AC-05).
177
179
  // The closures receive RenderPipelineContext and route to w15 record functions.
178
180
 
181
+ const EMPTY_BLOOM_RECEIPTS: BloomFrameReceipts = {
182
+ uploadCount: 0,
183
+ bindGroupCount: 0,
184
+ encodeCount: 0,
185
+ };
186
+
187
+ function updateBloomReceipts(
188
+ c: _InternalRenderPipelineContext,
189
+ field: keyof BloomFrameReceipts,
190
+ ): void {
191
+ const current = c.frameState.bloomFrameReceipts ?? EMPTY_BLOOM_RECEIPTS;
192
+ c.frameState.bloomFrameReceipts = {
193
+ ...current,
194
+ [field]: current[field] + 1,
195
+ };
196
+ }
197
+
198
+ function stageBloomUpload(c: _InternalRenderPipelineContext): void {
199
+ updateBloomReceipts(c, 'uploadCount');
200
+ }
201
+
202
+ function stageBloomBindGroup(c: _InternalRenderPipelineContext): void {
203
+ updateBloomReceipts(c, 'bindGroupCount');
204
+ }
205
+
206
+ function stageBloomEncode(c: _InternalRenderPipelineContext): void {
207
+ updateBloomReceipts(c, 'encodeCount');
208
+ }
209
+
210
+ function throwBloomRecordFailure(expected: string): never {
211
+ throw new RhiError({
212
+ code: 'webgpu-runtime-error',
213
+ expected,
214
+ hint: 'repair the Bloom candidate resources before retrying the frame',
215
+ });
216
+ }
217
+
179
218
  export function recordBloomBrightPass(
180
219
  _c: _InternalRenderPipelineContext,
181
220
  resolve?: ResolveContext,
182
221
  graphPass?: RhiRenderPassEncoder,
183
222
  ): void {
184
- const { runtime, pipelineState, encoder, camera, tonemapActive, frameState, bindGroupCounts } =
185
- _c;
186
- const pp = pipelineState.perPassResources;
223
+ const { runtime, encoder, camera, tonemapActive, frameState, bindGroupCounts } = _c;
224
+ const pp = _c.bloomResources;
187
225
 
188
226
  // Double gate: bloom=off => zero-overhead; tonemap=none => no HDR domain
189
227
  if (camera.bloom !== 'on' || !tonemapActive) return;
228
+ if (pp === null || pp === undefined) {
229
+ throwBloomRecordFailure('Bloom persistent resources are ready before bright-pass encoding');
230
+ }
190
231
  if (
191
232
  pp.bloomBrightPipeline === null ||
192
233
  pp.bloomBrightBindGroupLayout === null ||
193
234
  pp.bloomSampler === null ||
194
235
  pp.bloomBrightParamsBuffer === null
195
- )
196
- return;
236
+ ) {
237
+ throwBloomRecordFailure('Bloom bright pass has pipeline, layout, sampler, and params buffer');
238
+ }
197
239
 
198
240
  // M1 / w7: bloom intermediate textures owned by render-graph. Resolve
199
241
  // the GPU TextureView via the resolve context passed by graph.execute().
200
242
  const bloomBrightView = resolve?.resolve('bloomBright') as TextureView | undefined;
201
243
  const hdrColorView = resolve?.resolve('hdrColor') as TextureView | undefined;
202
- if (!bloomBrightView || !hdrColorView) return;
244
+ if (!bloomBrightView || !hdrColorView) {
245
+ throwBloomRecordFailure('Bloom bright pass resolves its source and target views');
246
+ }
203
247
  const bglBright = pp.bloomBrightBindGroupLayout;
204
248
  const bloomSampler = pp.bloomSampler;
205
249
  const paramsBuffer = pp.bloomBrightParamsBuffer;
@@ -212,6 +256,7 @@ export function recordBloomBrightPass(
212
256
  brightParams[3] = 0;
213
257
  const paramsWrite = runtime.device.queue.writeBuffer(paramsBuffer, 0, brightParams);
214
258
  if (!paramsWrite.ok) throw paramsWrite.error;
259
+ stageBloomUpload(_c);
215
260
 
216
261
  // 3. Identity-cached BindGroup (1 tex + 1 sampler + 1 UBO). Keyed on the
217
262
  // graph-resolved hdrColor TextureView: resize retires hdrColor and the new
@@ -248,7 +293,9 @@ export function recordBloomBrightPass(
248
293
  );
249
294
  pass.setPipeline(pp.bloomBrightPipeline);
250
295
  pass.setBindGroup(0, bindGroup);
296
+ stageBloomBindGroup(_c);
251
297
  pass.draw(3, 1, 0, 0);
298
+ stageBloomEncode(_c);
252
299
  if (graphPass === undefined) pass.end();
253
300
  }
254
301
 
@@ -257,32 +304,29 @@ export function recordBloomBlurHPass(
257
304
  resolve?: ResolveContext,
258
305
  graphPass?: RhiRenderPassEncoder,
259
306
  ): void {
260
- const {
261
- runtime,
262
- pipelineState,
263
- encoder,
264
- camera,
265
- targetW,
266
- tonemapActive,
267
- frameState,
268
- bindGroupCounts,
269
- } = _c;
270
- const pp = pipelineState.perPassResources;
307
+ const { runtime, encoder, camera, targetW, tonemapActive, frameState, bindGroupCounts } = _c;
308
+ const pp = _c.bloomResources;
271
309
 
272
310
  if (camera.bloom !== 'on' || !tonemapActive) return;
311
+ if (pp === null || pp === undefined) {
312
+ throwBloomRecordFailure('Bloom persistent resources are ready before blur-H encoding');
313
+ }
273
314
  if (
274
315
  pp.bloomBlurHPipeline === null ||
275
316
  pp.bloomBlurBindGroupLayout === null ||
276
317
  pp.bloomSampler === null ||
277
318
  pp.bloomBlurHParamsBuffer === null
278
- )
279
- return;
319
+ ) {
320
+ throwBloomRecordFailure('Bloom blur-H pass has pipeline, layout, sampler, and params buffer');
321
+ }
280
322
 
281
323
  // M1 / w7: bloom intermediate textures owned by render-graph. Resolve
282
324
  // via the resolve context passed by graph.execute().
283
325
  const bloomBlurHView = resolve?.resolve('bloomBlurH') as TextureView | undefined;
284
326
  const bloomBrightView = resolve?.resolve('bloomBright') as TextureView | undefined;
285
- if (!bloomBlurHView || !bloomBrightView) return;
327
+ if (!bloomBlurHView || !bloomBrightView) {
328
+ throwBloomRecordFailure('Bloom blur-H pass resolves its source and target views');
329
+ }
286
330
  const bglBlur = pp.bloomBlurBindGroupLayout;
287
331
  const bloomSampler = pp.bloomSampler;
288
332
  const paramsBuffer = pp.bloomBlurHParamsBuffer;
@@ -298,6 +342,7 @@ export function recordBloomBlurHPass(
298
342
  blurParams[3] = 0;
299
343
  const paramsWrite = runtime.device.queue.writeBuffer(paramsBuffer, 0, blurParams);
300
344
  if (!paramsWrite.ok) throw paramsWrite.error;
345
+ stageBloomUpload(_c);
301
346
 
302
347
  // 3. Identity-cached BindGroup (reads bloomBright from graph). Keyed on the
303
348
  // graph-resolved bloomBright view so resize rebuilds against the new texture.
@@ -333,7 +378,9 @@ export function recordBloomBlurHPass(
333
378
  );
334
379
  pass.setPipeline(pp.bloomBlurHPipeline);
335
380
  pass.setBindGroup(0, bindGroup);
381
+ stageBloomBindGroup(_c);
336
382
  pass.draw(3, 1, 0, 0);
383
+ stageBloomEncode(_c);
337
384
  if (graphPass === undefined) pass.end();
338
385
  }
339
386
 
@@ -342,32 +389,29 @@ export function recordBloomBlurVPass(
342
389
  resolve?: ResolveContext,
343
390
  graphPass?: RhiRenderPassEncoder,
344
391
  ): void {
345
- const {
346
- runtime,
347
- pipelineState,
348
- encoder,
349
- camera,
350
- targetH,
351
- tonemapActive,
352
- frameState,
353
- bindGroupCounts,
354
- } = _c;
355
- const pp = pipelineState.perPassResources;
392
+ const { runtime, encoder, camera, targetH, tonemapActive, frameState, bindGroupCounts } = _c;
393
+ const pp = _c.bloomResources;
356
394
 
357
395
  if (camera.bloom !== 'on' || !tonemapActive) return;
396
+ if (pp === null || pp === undefined) {
397
+ throwBloomRecordFailure('Bloom persistent resources are ready before blur-V encoding');
398
+ }
358
399
  if (
359
400
  pp.bloomBlurVPipeline === null ||
360
401
  pp.bloomBlurBindGroupLayout === null ||
361
402
  pp.bloomSampler === null ||
362
403
  pp.bloomBlurVParamsBuffer === null
363
- )
364
- return;
404
+ ) {
405
+ throwBloomRecordFailure('Bloom blur-V pass has pipeline, layout, sampler, and params buffer');
406
+ }
365
407
 
366
408
  // M1 / w7: bloom intermediate textures owned by render-graph. Resolve
367
409
  // via the resolve context passed by graph.execute().
368
410
  const bloomBlurVView = resolve?.resolve('bloomBlurV') as TextureView | undefined;
369
411
  const bloomBlurHView = resolve?.resolve('bloomBlurH') as TextureView | undefined;
370
- if (!bloomBlurVView || !bloomBlurHView) return;
412
+ if (!bloomBlurVView || !bloomBlurHView) {
413
+ throwBloomRecordFailure('Bloom blur-V pass resolves its source and target views');
414
+ }
371
415
  const bglBlur = pp.bloomBlurBindGroupLayout;
372
416
  const bloomSampler = pp.bloomSampler;
373
417
  const paramsBuffer = pp.bloomBlurVParamsBuffer;
@@ -383,6 +427,7 @@ export function recordBloomBlurVPass(
383
427
  blurParams[3] = 0;
384
428
  const paramsWrite = runtime.device.queue.writeBuffer(paramsBuffer, 0, blurParams);
385
429
  if (!paramsWrite.ok) throw paramsWrite.error;
430
+ stageBloomUpload(_c);
386
431
 
387
432
  // 3. Identity-cached BindGroup (reads bloomBlurH from graph). Keyed on the
388
433
  // graph-resolved bloomBlurH view so resize rebuilds against the new texture.
@@ -418,7 +463,9 @@ export function recordBloomBlurVPass(
418
463
  );
419
464
  pass.setPipeline(pp.bloomBlurVPipeline);
420
465
  pass.setBindGroup(0, bindGroup);
466
+ stageBloomBindGroup(_c);
421
467
  pass.draw(3, 1, 0, 0);
468
+ stageBloomEncode(_c);
422
469
  if (graphPass === undefined) pass.end();
423
470
  }
424
471
 
@@ -427,18 +474,23 @@ export function recordBloomCompositePass(
427
474
  resolve?: ResolveContext,
428
475
  graphPass?: RhiRenderPassEncoder,
429
476
  ): void {
430
- const { runtime, pipelineState, encoder, camera, tonemapActive, frameState, bindGroupCounts } =
431
- _c;
432
- const pp = pipelineState.perPassResources;
477
+ const { runtime, encoder, camera, tonemapActive, frameState, bindGroupCounts } = _c;
478
+ const pp = _c.bloomResources;
433
479
 
434
480
  if (camera.bloom !== 'on' || !tonemapActive) return;
481
+ if (pp === null || pp === undefined) {
482
+ throwBloomRecordFailure('Bloom persistent resources are ready before composite encoding');
483
+ }
435
484
  if (
436
485
  pp.bloomCompositePipeline === null ||
437
486
  pp.bloomCompositeBindGroupLayout === null ||
438
487
  pp.bloomSampler === null ||
439
488
  pp.bloomCompositeParamsBuffer === null
440
- )
441
- return;
489
+ ) {
490
+ throwBloomRecordFailure(
491
+ 'Bloom composite pass has pipeline, layout, sampler, and params buffer',
492
+ );
493
+ }
442
494
 
443
495
  // M1 / w7: hdrColor + bloomBlurV textures owned by render-graph.
444
496
  // bug-20260625: composite READS hdrColor (scene, binding 0) and WRITES the
@@ -446,7 +498,9 @@ export function recordBloomCompositePass(
446
498
  const hdrColorView = resolve?.resolve('hdrColor') as TextureView | undefined;
447
499
  const bloomBlurVView = resolve?.resolve('bloomBlurV') as TextureView | undefined;
448
500
  const hdrCompositedView = resolve?.resolve('hdrComposited') as TextureView | undefined;
449
- if (!hdrColorView || !bloomBlurVView || !hdrCompositedView) return;
501
+ if (!hdrColorView || !bloomBlurVView || !hdrCompositedView) {
502
+ throwBloomRecordFailure('Bloom composite pass resolves its source and target views');
503
+ }
450
504
  const bglComposite = pp.bloomCompositeBindGroupLayout;
451
505
  const bloomSampler = pp.bloomSampler;
452
506
  const paramsBuffer = pp.bloomCompositeParamsBuffer;
@@ -459,6 +513,7 @@ export function recordBloomCompositePass(
459
513
  compositeParams[3] = 0;
460
514
  const paramsWrite = runtime.device.queue.writeBuffer(paramsBuffer, 0, compositeParams);
461
515
  if (!paramsWrite.ok) throw paramsWrite.error;
516
+ stageBloomUpload(_c);
462
517
 
463
518
  // 2. Identity-cached BindGroup (2 tex: hdrColor + bloomBlurV, 1 sampler,
464
519
  // 1 UBO). Keys on both sampled views: resize retires both hdrColor and
@@ -504,7 +559,9 @@ export function recordBloomCompositePass(
504
559
  );
505
560
  pass.setPipeline(pp.bloomCompositePipeline);
506
561
  pass.setBindGroup(0, bindGroup);
562
+ stageBloomBindGroup(_c);
507
563
  pass.draw(3, 1, 0, 0);
564
+ stageBloomEncode(_c);
508
565
  if (graphPass === undefined) pass.end();
509
566
  }
510
567