@forgeax/engine-render 0.1.4 → 0.1.7

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 (979) hide show
  1. package/README.md +268 -640
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/__tests__/device-scope-lifecycle.unit.test.d.ts +2 -0
  4. package/dist/__tests__/device-scope-lifecycle.unit.test.d.ts.map +1 -0
  5. package/dist/__tests__/device-scope-stale-matrix.unit.test.d.ts +2 -0
  6. package/dist/__tests__/device-scope-stale-matrix.unit.test.d.ts.map +1 -0
  7. package/dist/__tests__/fullscreen-feature-plan.unit.test.d.ts +2 -0
  8. package/dist/__tests__/fullscreen-feature-plan.unit.test.d.ts.map +1 -0
  9. package/dist/__tests__/gpu-driven-indirect-raster-evidence.d.ts.map +1 -1
  10. package/dist/__tests__/gpu-driven-view-gpu-evidence.d.ts +6 -0
  11. package/dist/__tests__/gpu-driven-view-gpu-evidence.d.ts.map +1 -1
  12. package/dist/{gpu-driven/view-reference.d.ts → __tests__/gpu-driven-view-reference.d.ts} +4 -4
  13. package/dist/__tests__/gpu-driven-view-reference.d.ts.map +1 -0
  14. package/dist/__tests__/gpu-scene-render-graph-gpu.d.ts.map +1 -1
  15. package/dist/__tests__/ibl/face-uniforms.unit.test.d.ts +2 -0
  16. package/dist/__tests__/ibl/face-uniforms.unit.test.d.ts.map +1 -0
  17. package/dist/__tests__/morph-feature-plan.unit.test.d.ts +2 -0
  18. package/dist/__tests__/morph-feature-plan.unit.test.d.ts.map +1 -0
  19. package/dist/__tests__/render-feature-plan.test-d.d.ts +2 -0
  20. package/dist/__tests__/render-feature-plan.test-d.d.ts.map +1 -0
  21. package/dist/__tests__/render-feature-plan.unit.test.d.ts +2 -0
  22. package/dist/__tests__/render-feature-plan.unit.test.d.ts.map +1 -0
  23. package/dist/__tests__/ssao-config.unit.test.d.ts +2 -0
  24. package/dist/__tests__/ssao-config.unit.test.d.ts.map +1 -0
  25. package/dist/__tests__/standard-clustered-pipeline.unit.test.d.ts +2 -0
  26. package/dist/__tests__/standard-clustered-pipeline.unit.test.d.ts.map +1 -0
  27. package/dist/__tests__/standard-descriptors.test-d.d.ts +2 -0
  28. package/dist/__tests__/standard-descriptors.test-d.d.ts.map +1 -0
  29. package/dist/__tests__/standard-pipeline.dawn.test.d.ts +2 -0
  30. package/dist/__tests__/standard-pipeline.dawn.test.d.ts.map +1 -0
  31. package/dist/__tests__/standard-pipeline.integration.test.d.ts +2 -0
  32. package/dist/__tests__/standard-pipeline.integration.test.d.ts.map +1 -0
  33. package/dist/__tests__/standard-profile-oracle.unit.test.d.ts +2 -0
  34. package/dist/__tests__/standard-profile-oracle.unit.test.d.ts.map +1 -0
  35. package/dist/__tests__/visibility-resource-short-circuit.unit.test.d.ts +2 -0
  36. package/dist/__tests__/visibility-resource-short-circuit.unit.test.d.ts.map +1 -0
  37. package/dist/{renderer/backend-selection.d.ts → assembly/backend-contract.d.ts} +15 -4
  38. package/dist/assembly/backend-contract.d.ts.map +1 -0
  39. package/dist/assembly/factory.d.ts +214 -0
  40. package/dist/assembly/factory.d.ts.map +1 -0
  41. package/dist/assembly/host-contract.d.ts +84 -0
  42. package/dist/assembly/host-contract.d.ts.map +1 -0
  43. package/dist/{renderer → assembly}/material/assembly.d.ts +0 -1
  44. package/dist/{renderer → assembly}/material/assembly.d.ts.map +1 -1
  45. package/dist/assembly/material/pipeline-projection.d.ts +30 -0
  46. package/dist/assembly/material/pipeline-projection.d.ts.map +1 -0
  47. package/dist/authoring.d.ts +11 -11
  48. package/dist/authoring.d.ts.map +1 -1
  49. package/dist/authoring.mjs +25 -3
  50. package/dist/authoring.mjs.map +1 -1
  51. package/dist/chunk-CQXZC5XI.mjs +182 -0
  52. package/dist/chunk-CQXZC5XI.mjs.map +1 -0
  53. package/dist/chunk-HCOGPHKS.mjs +93 -0
  54. package/dist/chunk-HCOGPHKS.mjs.map +1 -0
  55. package/dist/chunk-YEJIUW7D.mjs +1152 -0
  56. package/dist/chunk-YEJIUW7D.mjs.map +1 -0
  57. package/dist/components/__tests__/points-lines-admission.unit.test.d.ts +2 -0
  58. package/dist/components/__tests__/points-lines-admission.unit.test.d.ts.map +1 -0
  59. package/dist/components/__tests__/points-lines-schema.unit.test.d.ts +2 -0
  60. package/dist/components/__tests__/points-lines-schema.unit.test.d.ts.map +1 -0
  61. package/dist/components/__tests__/schema-contract.unit.test.d.ts +2 -0
  62. package/dist/components/__tests__/schema-contract.unit.test.d.ts.map +1 -0
  63. package/dist/components/glyph-text.d.ts +1 -1
  64. package/dist/components/glyph-text.d.ts.map +1 -1
  65. package/dist/components/index.d.ts +4 -2
  66. package/dist/components/index.d.ts.map +1 -1
  67. package/dist/components/instances.d.ts +1 -1
  68. package/dist/components/instances.d.ts.map +1 -1
  69. package/dist/components/light-helpers.d.ts +1 -1
  70. package/dist/components/light-helpers.d.ts.map +1 -1
  71. package/dist/components/lines.d.ts +5 -0
  72. package/dist/components/lines.d.ts.map +1 -0
  73. package/dist/components/mesh-filter.d.ts +7 -7
  74. package/dist/components/mesh-filter.d.ts.map +1 -1
  75. package/dist/components/points.d.ts +15 -0
  76. package/dist/components/points.d.ts.map +1 -0
  77. package/dist/components/scene-instance.d.ts +11 -11
  78. package/dist/components/skybox-background.d.ts +56 -0
  79. package/dist/components/skybox-background.d.ts.map +1 -0
  80. package/dist/components/skylight.d.ts +55 -0
  81. package/dist/components/skylight.d.ts.map +1 -0
  82. package/dist/components/sprite-animation.d.ts +2 -3
  83. package/dist/components/sprite-animation.d.ts.map +1 -1
  84. package/dist/components/sprite-instances.d.ts +1 -1
  85. package/dist/components/sprite-playback-mode.d.ts +6 -1
  86. package/dist/components/sprite-playback-mode.d.ts.map +1 -1
  87. package/dist/components/sprite-region-override.d.ts +2 -3
  88. package/dist/components/sprite-region-override.d.ts.map +1 -1
  89. package/dist/components/tile-layer.d.ts +5 -0
  90. package/dist/components/tile-layer.d.ts.map +1 -1
  91. package/dist/construct-renderer.d.ts +18 -1
  92. package/dist/construct-renderer.d.ts.map +1 -1
  93. package/dist/construct-renderer.mjs +27463 -4
  94. package/dist/construct-renderer.mjs.map +1 -1
  95. package/dist/debug-draw-glue.d.ts +2 -53
  96. package/dist/debug-draw-glue.d.ts.map +1 -1
  97. package/dist/device/device-scope.d.ts +83 -0
  98. package/dist/device/device-scope.d.ts.map +1 -0
  99. package/dist/{gpu-resource-store.d.ts → device/gpu-residency.d.ts} +91 -48
  100. package/dist/device/gpu-residency.d.ts.map +1 -0
  101. package/dist/device/resource-types.d.ts +8 -0
  102. package/dist/device/resource-types.d.ts.map +1 -0
  103. package/dist/engine-metrics.d.ts +2 -2
  104. package/dist/engine-metrics.d.ts.map +1 -1
  105. package/dist/errors/recover.d.ts +28 -1
  106. package/dist/errors/recover.d.ts.map +1 -1
  107. package/dist/errors/render.d.ts +320 -248
  108. package/dist/errors/render.d.ts.map +1 -1
  109. package/dist/features/fullscreen.d.ts +19 -0
  110. package/dist/features/fullscreen.d.ts.map +1 -0
  111. package/dist/features/host.d.ts +32 -26
  112. package/dist/features/host.d.ts.map +1 -1
  113. package/dist/features/morph/morph-feature.d.ts +39 -5
  114. package/dist/features/morph/morph-feature.d.ts.map +1 -1
  115. package/dist/features/plan.d.ts +182 -0
  116. package/dist/features/plan.d.ts.map +1 -0
  117. package/dist/features/prepared-gpu-work.d.ts +21 -17
  118. package/dist/features/prepared-gpu-work.d.ts.map +1 -1
  119. package/dist/features/prepared-graphics-store.d.ts +2 -1
  120. package/dist/features/prepared-graphics-store.d.ts.map +1 -1
  121. package/dist/features/prepared-graphics.d.ts +11 -21
  122. package/dist/features/prepared-graphics.d.ts.map +1 -1
  123. package/dist/features/render-graph-compute.d.ts +2 -2
  124. package/dist/features/render-graph-compute.d.ts.map +1 -1
  125. package/dist/features/render-graph-contribution.d.ts +4 -7
  126. package/dist/features/render-graph-contribution.d.ts.map +1 -1
  127. package/dist/features/render-graph-raster.d.ts +7 -3
  128. package/dist/features/render-graph-raster.d.ts.map +1 -1
  129. package/dist/features/render-graph-resources.d.ts +6 -6
  130. package/dist/features/render-graph-resources.d.ts.map +1 -1
  131. package/dist/features/targets.d.ts +5 -5
  132. package/dist/features/targets.d.ts.map +1 -1
  133. package/dist/features/types.d.ts +11 -190
  134. package/dist/features/types.d.ts.map +1 -1
  135. package/dist/features/vocabulary.d.ts +14 -0
  136. package/dist/features/vocabulary.d.ts.map +1 -0
  137. package/dist/fullscreen-post-process-pass.d.ts +4 -25
  138. package/dist/fullscreen-post-process-pass.d.ts.map +1 -1
  139. package/dist/glyph-text-layout-system.d.ts +3 -2
  140. package/dist/glyph-text-layout-system.d.ts.map +1 -1
  141. package/dist/gpu-driven/batch-topology.d.ts +6 -75
  142. package/dist/gpu-driven/batch-topology.d.ts.map +1 -1
  143. package/dist/gpu-driven/production-raster.d.ts +13 -112
  144. package/dist/gpu-driven/production-raster.d.ts.map +1 -1
  145. package/dist/gpu-driven/view-gpu.d.ts +10 -66
  146. package/dist/gpu-driven/view-gpu.d.ts.map +1 -1
  147. package/dist/gpu-resource.d.ts +3 -3
  148. package/dist/gpu-scene-schema.d.ts +1 -94
  149. package/dist/gpu-scene-schema.d.ts.map +1 -1
  150. package/dist/gpu-scene.d.ts +7 -33
  151. package/dist/gpu-scene.d.ts.map +1 -1
  152. package/dist/hdrp-buffers.d.ts +3 -53
  153. package/dist/hdrp-buffers.d.ts.map +1 -1
  154. package/dist/ibl/IblPipelineCache.d.ts +74 -180
  155. package/dist/ibl/IblPipelineCache.d.ts.map +1 -1
  156. package/dist/ibl/skylight-bind-group.d.ts +1 -1
  157. package/dist/index.d.ts +17 -43
  158. package/dist/index.d.ts.map +1 -1
  159. package/dist/index.mjs +167 -3
  160. package/dist/index.mjs.map +1 -1
  161. package/dist/inspection-types.d.ts +72 -0
  162. package/dist/inspection-types.d.ts.map +1 -0
  163. package/dist/instance-buffer-cache.d.ts +1 -4
  164. package/dist/instance-buffer-cache.d.ts.map +1 -1
  165. package/dist/internal.d.ts +1 -73
  166. package/dist/internal.d.ts.map +1 -1
  167. package/dist/internal.mjs +1 -43
  168. package/dist/internal.mjs.map +1 -1
  169. package/dist/lifecycle.d.ts +36 -2
  170. package/dist/lifecycle.d.ts.map +1 -1
  171. package/dist/materials.d.ts +0 -3
  172. package/dist/materials.d.ts.map +1 -1
  173. package/dist/mesh-material-bindings.d.ts +0 -1
  174. package/dist/mesh-material-bindings.d.ts.map +1 -1
  175. package/dist/pbr-pipeline.d.ts +77 -29
  176. package/dist/pbr-pipeline.d.ts.map +1 -1
  177. package/dist/pipeline/standard-forward-lane.d.ts +5 -0
  178. package/dist/pipeline/standard-forward-lane.d.ts.map +1 -0
  179. package/dist/pipeline/standard-pipeline.d.ts +31 -0
  180. package/dist/pipeline/standard-pipeline.d.ts.map +1 -0
  181. package/dist/pipeline/standard-profile.d.ts +40 -0
  182. package/dist/pipeline/standard-profile.d.ts.map +1 -0
  183. package/dist/pipeline-builder.d.ts +3 -3
  184. package/dist/pipeline-builder.d.ts.map +1 -1
  185. package/dist/pipeline-spec-types.d.ts +24 -0
  186. package/dist/pipeline-spec-types.d.ts.map +1 -0
  187. package/dist/pipeline-spec.d.ts +16 -155
  188. package/dist/pipeline-spec.d.ts.map +1 -1
  189. package/dist/plugin.d.ts +1 -14
  190. package/dist/plugin.d.ts.map +1 -1
  191. package/dist/points-lines/__tests__/bounds.unit.test.d.ts +2 -0
  192. package/dist/points-lines/__tests__/bounds.unit.test.d.ts.map +1 -0
  193. package/dist/points-lines/__tests__/cache-recovery.unit.test.d.ts +2 -0
  194. package/dist/points-lines/__tests__/cache-recovery.unit.test.d.ts.map +1 -0
  195. package/dist/points-lines/__tests__/inspection-lanes.integration.test.d.ts +2 -0
  196. package/dist/points-lines/__tests__/inspection-lanes.integration.test.d.ts.map +1 -0
  197. package/dist/points-lines/__tests__/inspection.unit.test.d.ts +2 -0
  198. package/dist/points-lines/__tests__/inspection.unit.test.d.ts.map +1 -0
  199. package/dist/points-lines/__tests__/lane-structural.integration.test.d.ts +2 -0
  200. package/dist/points-lines/__tests__/lane-structural.integration.test.d.ts.map +1 -0
  201. package/dist/points-lines/__tests__/points-lines.bench.d.ts +2 -0
  202. package/dist/points-lines/__tests__/points-lines.bench.d.ts.map +1 -0
  203. package/dist/points-lines/__tests__/raster-lane.integration.test.d.ts +2 -0
  204. package/dist/points-lines/__tests__/raster-lane.integration.test.d.ts.map +1 -0
  205. package/dist/points-lines/__tests__/snapshot.unit.test.d.ts +2 -0
  206. package/dist/points-lines/__tests__/snapshot.unit.test.d.ts.map +1 -0
  207. package/dist/points-lines/__tests__/view-ubo.unit.test.d.ts +2 -0
  208. package/dist/points-lines/__tests__/view-ubo.unit.test.d.ts.map +1 -0
  209. package/dist/points-lines/admission.d.ts +36 -0
  210. package/dist/points-lines/admission.d.ts.map +1 -0
  211. package/dist/points-lines/bounds.d.ts +8 -0
  212. package/dist/points-lines/bounds.d.ts.map +1 -0
  213. package/dist/points-lines/expansion-cache.d.ts +28 -0
  214. package/dist/points-lines/expansion-cache.d.ts.map +1 -0
  215. package/dist/points-lines/inspection.d.ts +53 -0
  216. package/dist/points-lines/inspection.d.ts.map +1 -0
  217. package/dist/points-lines/prepare.d.ts +67 -0
  218. package/dist/points-lines/prepare.d.ts.map +1 -0
  219. package/dist/points-lines/record.d.ts +60 -0
  220. package/dist/points-lines/record.d.ts.map +1 -0
  221. package/dist/points-lines/snapshot.d.ts +49 -0
  222. package/dist/points-lines/snapshot.d.ts.map +1 -0
  223. package/dist/post-process-errors.d.ts +18 -18
  224. package/dist/post-process-errors.d.ts.map +1 -1
  225. package/dist/prepare/prepared-graphics-resolver.d.ts +2 -5
  226. package/dist/prepare/prepared-graphics-resolver.d.ts.map +1 -1
  227. package/dist/record/__tests__/typed-frame-graph-plan.unit.test.d.ts +2 -0
  228. package/dist/record/__tests__/typed-frame-graph-plan.unit.test.d.ts.map +1 -0
  229. package/dist/record/frame-lighting.d.ts +7 -73
  230. package/dist/record/frame-lighting.d.ts.map +1 -1
  231. package/dist/record/frame-snapshot.d.ts +44 -44
  232. package/dist/record/frame-snapshot.d.ts.map +1 -1
  233. package/dist/record/frame-targets.d.ts +5 -38
  234. package/dist/record/frame-targets.d.ts.map +1 -1
  235. package/dist/record/frame.d.ts +64 -52
  236. package/dist/record/frame.d.ts.map +1 -1
  237. package/dist/record/helpers.d.ts +3 -2
  238. package/dist/record/helpers.d.ts.map +1 -1
  239. package/dist/record/main-pass-geometry.d.ts +12 -4
  240. package/dist/record/main-pass-geometry.d.ts.map +1 -1
  241. package/dist/record/main-pass-material.d.ts +90 -59
  242. package/dist/record/main-pass-material.d.ts.map +1 -1
  243. package/dist/record/main-pass-sprite-draws.d.ts +28 -3
  244. package/dist/record/main-pass-sprite-draws.d.ts.map +1 -1
  245. package/dist/record/main-pass.d.ts +1 -1
  246. package/dist/record/main-pass.d.ts.map +1 -1
  247. package/dist/record/mesh-ssbo.d.ts +276 -3
  248. package/dist/record/mesh-ssbo.d.ts.map +1 -1
  249. package/dist/record/render-context.d.ts +252 -0
  250. package/dist/record/render-context.d.ts.map +1 -0
  251. package/dist/record/shadow-pass.d.ts +15 -88
  252. package/dist/record/shadow-pass.d.ts.map +1 -1
  253. package/dist/record/skybox-post-pass.d.ts +1 -1
  254. package/dist/record/skybox-post-pass.d.ts.map +1 -1
  255. package/dist/record/typed-frame-graph.d.ts +29 -7
  256. package/dist/record/typed-frame-graph.d.ts.map +1 -1
  257. package/dist/record/view-ubo.d.ts +9 -3
  258. package/dist/record/view-ubo.d.ts.map +1 -1
  259. package/dist/render-contract.d.ts +424 -0
  260. package/dist/render-contract.d.ts.map +1 -0
  261. package/dist/render-data.d.ts.map +1 -1
  262. package/dist/render-graph-primitives.d.ts +14 -362
  263. package/dist/render-graph-primitives.d.ts.map +1 -1
  264. package/dist/render-pipeline.d.ts +25 -64
  265. package/dist/render-pipeline.d.ts.map +1 -1
  266. package/dist/render-system-extract.d.ts +110 -338
  267. package/dist/render-system-extract.d.ts.map +1 -1
  268. package/dist/render-system.d.ts +24 -713
  269. package/dist/render-system.d.ts.map +1 -1
  270. package/dist/scene/render-scene-types.d.ts +61 -0
  271. package/dist/scene/render-scene-types.d.ts.map +1 -0
  272. package/dist/scene/render-scene.d.ts +112 -0
  273. package/dist/scene/render-scene.d.ts.map +1 -0
  274. package/dist/scene-instances/post-spawn-resolve-joints.d.ts +2 -5
  275. package/dist/scene-instances/post-spawn-resolve-joints.d.ts.map +1 -1
  276. package/dist/ssao-buffers.d.ts +22 -3
  277. package/dist/ssao-buffers.d.ts.map +1 -1
  278. package/dist/systems/skin-palette-allocator.d.ts +2 -4
  279. package/dist/systems/skin-palette-allocator.d.ts.map +1 -1
  280. package/dist/systems/skin-palette-types.d.ts +14 -0
  281. package/dist/systems/skin-palette-types.d.ts.map +1 -0
  282. package/dist/systems/transparent-sort-config.d.ts +23 -2
  283. package/dist/systems/transparent-sort-config.d.ts.map +1 -1
  284. package/dist/tilemap-chunk-extract-system.d.ts +4 -3
  285. package/dist/tilemap-chunk-extract-system.d.ts.map +1 -1
  286. package/dist/typed-render-graph-primitives.d.ts +2 -4
  287. package/dist/typed-render-graph-primitives.d.ts.map +1 -1
  288. package/dist/typed-shadow-passes.d.ts +3 -3
  289. package/dist/typed-shadow-passes.d.ts.map +1 -1
  290. package/package.json +23 -23
  291. package/src/__tests__/authoring-path.unit.test.ts +9 -0
  292. package/src/__tests__/backend-selection-rhi-capture.test-d.ts +1 -1
  293. package/src/__tests__/callback-inference.test-d.ts +6 -3
  294. package/src/__tests__/cluster-grid-default-surface.unit.test.ts +7 -4
  295. package/src/__tests__/construct-renderer-identity.unit.test.ts +15 -2
  296. package/src/__tests__/device-scope-lifecycle.unit.test.ts +151 -0
  297. package/src/__tests__/device-scope-stale-matrix.unit.test.ts +42 -0
  298. package/src/__tests__/direct-extract-consumer-contract.test-d.ts +8 -19
  299. package/src/__tests__/direct-light-snapshot.unit.test.ts +3 -13
  300. package/src/__tests__/factory-contract.integration.test.ts +158 -209
  301. package/src/__tests__/fallback-row-stride-surface.unit.test.ts +1 -4
  302. package/src/__tests__/frame-observation.contract.test.ts +17 -8
  303. package/src/__tests__/fullscreen-feature-plan.unit.test.ts +32 -0
  304. package/src/__tests__/glyph-text-layout-recovery.unit.test.ts +6 -11
  305. package/src/__tests__/gpu-driven-indirect-raster-evidence.ts +21 -18
  306. package/src/__tests__/gpu-driven-production.integration.test.ts +32 -205
  307. package/src/__tests__/gpu-driven-scaling.unit.test.ts +4 -7
  308. package/src/__tests__/gpu-driven-view-gpu-evidence.ts +87 -8
  309. package/src/__tests__/gpu-driven-view-graph.integration.test.ts +170 -8
  310. package/src/{gpu-driven/view-reference.ts → __tests__/gpu-driven-view-reference.ts} +4 -3
  311. package/src/__tests__/gpu-driven-view.browser.test.ts +12 -1
  312. package/src/__tests__/gpu-driven-view.dawn.test.ts +12 -1
  313. package/src/__tests__/gpu-driven-view.unit.test.ts +11 -267
  314. package/src/__tests__/gpu-resource-store-stride.unit.test.ts +3 -3
  315. package/src/__tests__/gpu-scene-render-graph-gpu.ts +2 -3
  316. package/src/__tests__/gpu-scene.dawn.test.ts +2 -6
  317. package/src/__tests__/gpu-scene.unit.test.ts +10 -24
  318. package/src/__tests__/ibl/face-uniforms.unit.test.ts +46 -0
  319. package/src/__tests__/infinite-grid-no-vertex-probe.unit.test.ts +34 -66
  320. package/src/__tests__/ktx2-basis-gpu-consumer.dawn.test.ts +14 -5
  321. package/src/__tests__/light-buffer-layout.unit.test.ts +4 -49
  322. package/src/__tests__/material-cooked-projection.unit.test.ts +31 -58
  323. package/src/__tests__/material-snapshot-mutation.integration.test.ts +10 -15
  324. package/src/__tests__/material-static-dynamic-route.unit.test.ts +31 -50
  325. package/src/__tests__/material-stride-surface.unit.test.ts +2 -2
  326. package/src/__tests__/mesh-buffer-usage-surface.unit.test.ts +7 -8
  327. package/src/__tests__/morph-culling-reentry.dawn.test.ts +29 -38
  328. package/src/__tests__/morph-feature-gpu-work.integration.test.ts +45 -43
  329. package/src/__tests__/morph-feature-plan.unit.test.ts +53 -0
  330. package/src/__tests__/morph-visual-evidence.integration.test.ts +47 -33
  331. package/src/__tests__/nineslice-handle-surface.unit.test.ts +11 -6
  332. package/src/__tests__/post-process-error-policy-owner.unit.test.ts +6 -13
  333. package/src/__tests__/prepared-graphics-capability.unit.test.ts +6 -81
  334. package/src/__tests__/prepared-graphics-generation.unit.test.ts +3 -17
  335. package/src/__tests__/prepared-graphics-lifecycle.unit.test.ts +6 -74
  336. package/src/__tests__/prepared-graphics-resolver.unit.test.ts +1 -3
  337. package/src/__tests__/prepared-graphics-snapshot.unit.test.ts +2 -2
  338. package/src/__tests__/profiler-default-off.test.ts +1 -1
  339. package/src/__tests__/profiler-phase-catalog.test.ts +2 -2
  340. package/src/__tests__/profiler-phase-integration.test.ts +5 -13
  341. package/src/__tests__/profiler-phase-token.test.ts +3 -8
  342. package/src/__tests__/public-surface.test-d.ts +65 -3
  343. package/src/__tests__/recover-error-policy-owner.unit.test.ts +1 -21
  344. package/src/__tests__/render-error-code-owner.test-d.ts +24 -23
  345. package/src/__tests__/render-error-detail-ssot.test-d.ts +0 -95
  346. package/src/__tests__/render-error-exhaustive.test-d.ts +27 -1
  347. package/src/__tests__/render-feature-assembly.test-d.ts +8 -16
  348. package/src/__tests__/render-feature-context.test-d.ts +16 -40
  349. package/src/__tests__/render-feature-contract.test-d.ts +9 -18
  350. package/src/__tests__/render-feature-diagnostics.unit.test.ts +6 -8
  351. package/src/__tests__/render-feature-docs.unit.test.ts +8 -7
  352. package/src/__tests__/render-feature-gpu-work.integration.test.ts +14 -75
  353. package/src/__tests__/render-feature-plan.test-d.ts +161 -0
  354. package/src/__tests__/render-feature-plan.unit.test.ts +170 -0
  355. package/src/__tests__/render-feature-prepared-diagnostics.unit.test.ts +8 -19
  356. package/src/__tests__/render-feature-prepared-errors.test-d.ts +3 -6
  357. package/src/__tests__/render-feature-prepared-graphics-docs.unit.test.ts +10 -71
  358. package/src/__tests__/render-feature-prepared-graphics-isolation.unit.test.ts +11 -61
  359. package/src/__tests__/render-feature-prepared-graphics-negative.test-d.ts +20 -43
  360. package/src/__tests__/render-feature-prepared-graphics.test-d.ts +56 -78
  361. package/src/__tests__/render-feature-public-surface.test-d.ts +6 -24
  362. package/src/__tests__/render-feature-retry.unit.test.ts +7 -48
  363. package/src/__tests__/render-feature-scheduling.unit.test.ts +15 -27
  364. package/src/__tests__/render-feature-stage-failed-policy-owner.unit.test.ts +0 -9
  365. package/src/__tests__/render-feature-stage-fault-recovery.unit.test.ts +19 -109
  366. package/src/__tests__/render-feature-visibility-context.test-d.ts +1 -6
  367. package/src/__tests__/render-feature-visibility-context.unit.test.ts +1 -2
  368. package/src/__tests__/render-feature-zero-work.unit.test.ts +14 -20
  369. package/src/__tests__/render-scene-projection.unit.test.ts +73 -111
  370. package/src/__tests__/renderer-factory-material-contract.unit.test.ts +82 -95
  371. package/src/__tests__/renderer-lifecycle.integration.test.ts +49 -1
  372. package/src/__tests__/shader-stage-surface.unit.test.ts +14 -9
  373. package/src/__tests__/ssao-config.unit.test.ts +36 -0
  374. package/src/__tests__/ssao-kernel-surface.unit.test.ts +4 -5
  375. package/src/__tests__/standard-clustered-pipeline.unit.test.ts +28 -0
  376. package/src/__tests__/standard-descriptors.test-d.ts +22 -0
  377. package/src/__tests__/standard-pipeline.dawn.test.ts +61 -0
  378. package/src/__tests__/standard-pipeline.integration.test.ts +124 -0
  379. package/src/__tests__/standard-profile-oracle.unit.test.ts +62 -0
  380. package/src/__tests__/surface-configuration.unit.test.ts +1 -2
  381. package/src/__tests__/texture-usage-surface.unit.test.ts +3 -6
  382. package/src/__tests__/typed-pipeline-topology.unit.test.ts +40 -206
  383. package/src/__tests__/urp-pipeline-targets.unit.test.ts +1 -11
  384. package/src/__tests__/urp-pipeline.unit.test.ts +2 -2
  385. package/src/__tests__/vertex-color-pipeline.unit.test.ts +10 -2
  386. package/src/__tests__/vertex-layout-consumer.unit.test.ts +1 -1
  387. package/src/__tests__/visibility-diagnostics.integration.test.ts +7 -11
  388. package/src/__tests__/visibility-extract.integration.test.ts +20 -11
  389. package/src/__tests__/visibility-extract.perf.test.ts +66 -32
  390. package/src/__tests__/visibility-feature-dedup.integration.test.ts +2 -4
  391. package/src/__tests__/visibility-hidden-report.unit.test.ts +1 -2
  392. package/src/__tests__/visibility-instances.integration.test.ts +7 -11
  393. package/src/__tests__/visibility-multi-world.integration.test.ts +38 -6
  394. package/src/__tests__/visibility-producer-matrix.integration.test.ts +18 -41
  395. package/src/__tests__/visibility-public-surface.test-d.ts +10 -9
  396. package/src/__tests__/visibility-resolver.unit.test.ts +2 -1
  397. package/src/__tests__/visibility-resource-short-circuit.unit.test.ts +80 -0
  398. package/src/__tests__/visibility-snapshot-contract.unit.test.ts +2 -1
  399. package/src/__tests__/vocabulary.unit.test.ts +1 -1
  400. package/src/assembly/backend-contract.ts +57 -0
  401. package/src/{renderer/renderer-factory.ts → assembly/factory.ts} +1741 -2699
  402. package/src/assembly/host-contract.ts +101 -0
  403. package/src/{renderer → assembly}/material/assembly.ts +2 -7
  404. package/src/assembly/material/pipeline-projection.ts +63 -0
  405. package/src/authoring.ts +15 -22
  406. package/src/components/__tests__/points-lines-admission.unit.test.ts +219 -0
  407. package/src/components/__tests__/points-lines-schema.unit.test.ts +56 -0
  408. package/src/components/__tests__/schema-contract.unit.test.ts +10 -0
  409. package/src/components/glyph-text.ts +3 -2
  410. package/src/components/index.ts +14 -9
  411. package/src/components/instances.ts +4 -5
  412. package/src/components/light-helpers.ts +1 -1
  413. package/src/components/lines.ts +18 -0
  414. package/src/components/mesh-filter.ts +11 -10
  415. package/src/components/points.ts +40 -0
  416. package/src/components/post-process-params.ts +3 -3
  417. package/src/components/scene-instance.ts +12 -12
  418. package/src/components/skybox-background.ts +103 -0
  419. package/src/components/{environment.ts → skylight.ts} +2 -110
  420. package/src/components/sprite-animation.ts +3 -4
  421. package/src/components/sprite-instances.ts +2 -2
  422. package/src/components/sprite-playback-mode.ts +7 -1
  423. package/src/components/sprite-region-override.ts +2 -3
  424. package/src/components/tile-layer.ts +8 -2
  425. package/src/construct-renderer.ts +67 -4
  426. package/src/debug-draw-glue.ts +8 -129
  427. package/src/device/device-scope.ts +306 -0
  428. package/src/{gpu-resource-store.ts → device/gpu-residency.ts} +540 -639
  429. package/src/device/resource-types.ts +20 -0
  430. package/src/engine-metrics.ts +12 -19
  431. package/src/errors/recover.ts +45 -3
  432. package/src/errors/render.ts +469 -429
  433. package/src/features/fullscreen.ts +46 -0
  434. package/src/features/host.ts +575 -309
  435. package/src/features/morph/morph-feature.ts +195 -105
  436. package/src/features/plan.ts +447 -0
  437. package/src/features/prepared-gpu-work.ts +72 -15
  438. package/src/features/prepared-graphics-store.ts +20 -6
  439. package/src/features/prepared-graphics.ts +12 -71
  440. package/src/features/render-graph-compute.ts +14 -5
  441. package/src/features/render-graph-contribution.ts +43 -63
  442. package/src/features/render-graph-raster.ts +32 -8
  443. package/src/features/render-graph-resources.ts +25 -23
  444. package/src/features/targets.ts +8 -21
  445. package/src/features/types.ts +39 -227
  446. package/src/features/vocabulary.ts +24 -0
  447. package/src/fullscreen-post-process-pass.ts +14 -57
  448. package/src/glyph-text-layout-system.ts +70 -96
  449. package/src/gpu-driven/batch-topology.ts +24 -202
  450. package/src/gpu-driven/production-raster.ts +99 -1109
  451. package/src/gpu-driven/view-gpu.ts +46 -192
  452. package/src/gpu-resource.ts +4 -4
  453. package/src/gpu-scene-schema.ts +11 -99
  454. package/src/gpu-scene.ts +231 -364
  455. package/src/hdrp-buffers.ts +12 -221
  456. package/src/ibl/IblPipelineCache.ts +471 -711
  457. package/src/ibl/skylight-bind-group.ts +4 -4
  458. package/src/index.ts +75 -217
  459. package/src/inspection-types.ts +80 -0
  460. package/src/instance-buffer-cache.ts +1 -29
  461. package/src/internal.ts +6 -85
  462. package/src/lifecycle.ts +64 -19
  463. package/src/materials.ts +7 -29
  464. package/src/mesh-material-bindings.ts +0 -1
  465. package/src/pbr-pipeline.ts +441 -53
  466. package/src/{urp-pipeline.ts → pipeline/standard-forward-lane.ts} +38 -149
  467. package/src/{hdrp-pipeline.ts → pipeline/standard-pipeline.ts} +221 -191
  468. package/src/pipeline/standard-profile.ts +65 -0
  469. package/src/pipeline-builder.ts +60 -64
  470. package/src/pipeline-spec-types.ts +28 -0
  471. package/src/pipeline-spec.ts +72 -609
  472. package/src/plugin.ts +7 -75
  473. package/src/points-lines/__tests__/bounds.unit.test.ts +21 -0
  474. package/src/points-lines/__tests__/cache-recovery.unit.test.ts +157 -0
  475. package/src/points-lines/__tests__/inspection-lanes.integration.test.ts +146 -0
  476. package/src/points-lines/__tests__/inspection.unit.test.ts +173 -0
  477. package/src/points-lines/__tests__/lane-structural.integration.test.ts +122 -0
  478. package/src/points-lines/__tests__/points-lines.bench.ts +400 -0
  479. package/src/points-lines/__tests__/raster-lane.integration.test.ts +44 -0
  480. package/src/points-lines/__tests__/snapshot.unit.test.ts +101 -0
  481. package/src/points-lines/__tests__/view-ubo.unit.test.ts +73 -0
  482. package/src/points-lines/admission.ts +238 -0
  483. package/src/points-lines/bounds.ts +23 -0
  484. package/src/points-lines/expansion-cache.ts +215 -0
  485. package/src/points-lines/inspection.ts +97 -0
  486. package/src/points-lines/prepare.ts +177 -0
  487. package/src/points-lines/record.ts +125 -0
  488. package/src/points-lines/snapshot.ts +130 -0
  489. package/src/post-process-errors.ts +31 -33
  490. package/src/prepare/prepared-graphics-resolver.ts +5 -4
  491. package/src/record/__tests__/material-slot-plan.unit.test.ts +1 -33
  492. package/src/record/__tests__/typed-frame-graph-plan.unit.test.ts +41 -0
  493. package/src/record/__tests__/video-texture-view.unit.test.ts +1 -1
  494. package/src/record/frame-lighting.ts +88 -197
  495. package/src/record/frame-snapshot.ts +45 -60
  496. package/src/record/frame-targets.ts +8 -243
  497. package/src/record/frame.ts +521 -797
  498. package/src/record/helpers.ts +6 -11
  499. package/src/record/main-pass-geometry.ts +198 -147
  500. package/src/record/main-pass-material.ts +517 -190
  501. package/src/record/main-pass-sprite-draws.ts +199 -118
  502. package/src/record/main-pass.ts +166 -144
  503. package/src/record/mesh-ssbo.ts +517 -38
  504. package/src/record/render-context.ts +384 -0
  505. package/src/record/shadow-pass.ts +154 -1843
  506. package/src/record/skybox-post-pass.ts +14 -15
  507. package/src/record/typed-frame-graph.ts +224 -262
  508. package/src/record/view-ubo.ts +53 -37
  509. package/src/render-contract.ts +582 -0
  510. package/src/render-data.ts +3 -3
  511. package/src/render-graph-primitives.ts +76 -851
  512. package/src/render-pipeline.ts +104 -188
  513. package/src/render-system-extract.ts +1114 -1732
  514. package/src/render-system.ts +614 -1939
  515. package/src/scene/render-scene-types.ts +67 -0
  516. package/src/scene/render-scene.ts +1087 -0
  517. package/src/scene-instances/post-spawn-resolve-joints.ts +4 -7
  518. package/src/ssao-buffers.ts +167 -8
  519. package/src/systems/skin-palette-allocator.ts +21 -64
  520. package/src/systems/skin-palette-types.ts +14 -0
  521. package/src/systems/transparent-sort-config.ts +25 -3
  522. package/src/tilemap-chunk-extract-system.ts +53 -70
  523. package/src/typed-render-graph-primitives.ts +35 -24
  524. package/src/typed-shadow-passes.ts +26 -56
  525. package/dist/__tests__/analytic-sky-contract.test.d.ts +0 -2
  526. package/dist/__tests__/analytic-sky-contract.test.d.ts.map +0 -1
  527. package/dist/__tests__/analytic-sky-falsify.test.d.ts +0 -2
  528. package/dist/__tests__/analytic-sky-falsify.test.d.ts.map +0 -1
  529. package/dist/__tests__/assets-runtime-handoff.integration.test.d.ts +0 -2
  530. package/dist/__tests__/assets-runtime-handoff.integration.test.d.ts.map +0 -1
  531. package/dist/__tests__/backend-selection.integration.test.d.ts +0 -2
  532. package/dist/__tests__/backend-selection.integration.test.d.ts.map +0 -1
  533. package/dist/__tests__/camera-temporal.test-d.d.ts +0 -2
  534. package/dist/__tests__/camera-temporal.test-d.d.ts.map +0 -1
  535. package/dist/__tests__/camera-temporal.test.d.ts +0 -2
  536. package/dist/__tests__/camera-temporal.test.d.ts.map +0 -1
  537. package/dist/__tests__/directional-shadow-probe-atlas-layout.unit.test.d.ts +0 -2
  538. package/dist/__tests__/directional-shadow-probe-atlas-layout.unit.test.d.ts.map +0 -1
  539. package/dist/__tests__/environment-inspection.test.d.ts +0 -2
  540. package/dist/__tests__/environment-inspection.test.d.ts.map +0 -1
  541. package/dist/__tests__/fog-ai-user.fixture.d.ts +0 -2
  542. package/dist/__tests__/fog-ai-user.fixture.d.ts.map +0 -1
  543. package/dist/__tests__/fog-custom-render-feature.fixture.d.ts +0 -16
  544. package/dist/__tests__/fog-custom-render-feature.fixture.d.ts.map +0 -1
  545. package/dist/__tests__/fog-custom-render-feature.integration.test.d.ts +0 -2
  546. package/dist/__tests__/fog-custom-render-feature.integration.test.d.ts.map +0 -1
  547. package/dist/__tests__/fog-inspection.integration.test.d.ts +0 -2
  548. package/dist/__tests__/fog-inspection.integration.test.d.ts.map +0 -1
  549. package/dist/__tests__/fog-owner-state.integration.test.d.ts +0 -2
  550. package/dist/__tests__/fog-owner-state.integration.test.d.ts.map +0 -1
  551. package/dist/__tests__/fog-pipeline-topology.integration.test.d.ts +0 -2
  552. package/dist/__tests__/fog-pipeline-topology.integration.test.d.ts.map +0 -1
  553. package/dist/__tests__/fog-public-surface.integration.test.d.ts +0 -2
  554. package/dist/__tests__/fog-public-surface.integration.test.d.ts.map +0 -1
  555. package/dist/__tests__/fog-ray-contract.integration.test.d.ts +0 -2
  556. package/dist/__tests__/fog-ray-contract.integration.test.d.ts.map +0 -1
  557. package/dist/__tests__/fog-source-absence.integration.test.d.ts +0 -2
  558. package/dist/__tests__/fog-source-absence.integration.test.d.ts.map +0 -1
  559. package/dist/__tests__/fog-temporal.integration.test.d.ts +0 -2
  560. package/dist/__tests__/fog-temporal.integration.test.d.ts.map +0 -1
  561. package/dist/__tests__/frame-chain.unit.test.d.ts +0 -2
  562. package/dist/__tests__/frame-chain.unit.test.d.ts.map +0 -1
  563. package/dist/__tests__/gpu-scene-field-type-owner.test-d.d.ts +0 -2
  564. package/dist/__tests__/gpu-scene-field-type-owner.test-d.d.ts.map +0 -1
  565. package/dist/__tests__/hdrp-pipeline.unit.test.d.ts +0 -2
  566. package/dist/__tests__/hdrp-pipeline.unit.test.d.ts.map +0 -1
  567. package/dist/__tests__/ibl/ibl-fallback.unit.test.d.ts +0 -2
  568. package/dist/__tests__/ibl/ibl-fallback.unit.test.d.ts.map +0 -1
  569. package/dist/__tests__/material-derived-error-stop-draw.integration.test.d.ts +0 -2
  570. package/dist/__tests__/material-derived-error-stop-draw.integration.test.d.ts.map +0 -1
  571. package/dist/__tests__/material-derived-payload.integration.test.d.ts +0 -2
  572. package/dist/__tests__/material-derived-payload.integration.test.d.ts.map +0 -1
  573. package/dist/__tests__/materials.unit.test.d.ts +0 -2
  574. package/dist/__tests__/materials.unit.test.d.ts.map +0 -1
  575. package/dist/__tests__/param-schema-projection-census.unit.test.d.ts +0 -2
  576. package/dist/__tests__/param-schema-projection-census.unit.test.d.ts.map +0 -1
  577. package/dist/__tests__/persistent-render-scene.unit.test.d.ts +0 -2
  578. package/dist/__tests__/persistent-render-scene.unit.test.d.ts.map +0 -1
  579. package/dist/__tests__/pipeline-error-policy-owner.unit.test.d.ts +0 -2
  580. package/dist/__tests__/pipeline-error-policy-owner.unit.test.d.ts.map +0 -1
  581. package/dist/__tests__/pipeline-pass-trace.test.d.ts +0 -2
  582. package/dist/__tests__/pipeline-pass-trace.test.d.ts.map +0 -1
  583. package/dist/__tests__/pipeline-stage-owner.test-d.d.ts +0 -2
  584. package/dist/__tests__/pipeline-stage-owner.test-d.d.ts.map +0 -1
  585. package/dist/__tests__/plugin.test.d.ts +0 -2
  586. package/dist/__tests__/plugin.test.d.ts.map +0 -1
  587. package/dist/__tests__/prepared-graphics-backend-matrix.unit.test.d.ts +0 -2
  588. package/dist/__tests__/prepared-graphics-backend-matrix.unit.test.d.ts.map +0 -1
  589. package/dist/__tests__/prepared-graphics-resolver-recording.unit.test.d.ts +0 -2
  590. package/dist/__tests__/prepared-graphics-resolver-recording.unit.test.d.ts.map +0 -1
  591. package/dist/__tests__/public-pipeline-id.test-d.d.ts +0 -2
  592. package/dist/__tests__/public-pipeline-id.test-d.d.ts.map +0 -1
  593. package/dist/__tests__/render-dispatch-membership.unit.test.d.ts +0 -2
  594. package/dist/__tests__/render-dispatch-membership.unit.test.d.ts.map +0 -1
  595. package/dist/__tests__/render-feature-construction.unit.test.d.ts +0 -2
  596. package/dist/__tests__/render-feature-construction.unit.test.d.ts.map +0 -1
  597. package/dist/__tests__/render-feature-error-code-owner.test-d.d.ts +0 -2
  598. package/dist/__tests__/render-feature-error-code-owner.test-d.d.ts.map +0 -1
  599. package/dist/__tests__/render-feature-gpu-buffer-usage-owner.test-d.d.ts +0 -2
  600. package/dist/__tests__/render-feature-gpu-buffer-usage-owner.test-d.d.ts.map +0 -1
  601. package/dist/__tests__/render-feature-graph.integration.test.d.ts +0 -2
  602. package/dist/__tests__/render-feature-graph.integration.test.d.ts.map +0 -1
  603. package/dist/__tests__/render-feature-graphics-staging.unit.test.d.ts +0 -2
  604. package/dist/__tests__/render-feature-graphics-staging.unit.test.d.ts.map +0 -1
  605. package/dist/__tests__/render-feature-order.unit.test.d.ts +0 -2
  606. package/dist/__tests__/render-feature-order.unit.test.d.ts.map +0 -1
  607. package/dist/__tests__/render-feature-prepared-graphics-recording.unit.test.d.ts +0 -2
  608. package/dist/__tests__/render-feature-prepared-graphics-recording.unit.test.d.ts.map +0 -1
  609. package/dist/__tests__/render-feature-staging.unit.test.d.ts +0 -2
  610. package/dist/__tests__/render-feature-staging.unit.test.d.ts.map +0 -1
  611. package/dist/__tests__/renderer-render-scene-public.test-d.d.ts +0 -2
  612. package/dist/__tests__/renderer-render-scene-public.test-d.d.ts.map +0 -1
  613. package/dist/__tests__/scene-temporal-coverage.unit.test.d.ts +0 -2
  614. package/dist/__tests__/scene-temporal-coverage.unit.test.d.ts.map +0 -1
  615. package/dist/__tests__/sun-snapshot-consumers.test.d.ts +0 -2
  616. package/dist/__tests__/sun-snapshot-consumers.test.d.ts.map +0 -1
  617. package/dist/__tests__/surface-backend-kind-owner.test-d.d.ts +0 -2
  618. package/dist/__tests__/surface-backend-kind-owner.test-d.d.ts.map +0 -1
  619. package/dist/__tests__/taa-history-store.unit.test.d.ts +0 -2
  620. package/dist/__tests__/taa-history-store.unit.test.d.ts.map +0 -1
  621. package/dist/__tests__/temporal-frame-transaction.integration.test.d.ts +0 -2
  622. package/dist/__tests__/temporal-frame-transaction.integration.test.d.ts.map +0 -1
  623. package/dist/__tests__/temporal-inspection.unit.test.d.ts +0 -2
  624. package/dist/__tests__/temporal-inspection.unit.test.d.ts.map +0 -1
  625. package/dist/assets/__tests__/asset-decoders.unit.test.d.ts +0 -2
  626. package/dist/assets/__tests__/asset-decoders.unit.test.d.ts.map +0 -1
  627. package/dist/assets/__tests__/mipmap-generator.unit.test.d.ts +0 -2
  628. package/dist/assets/__tests__/mipmap-generator.unit.test.d.ts.map +0 -1
  629. package/dist/assets/__tests__/render-asset-port.unit.test.d.ts +0 -2
  630. package/dist/assets/__tests__/render-asset-port.unit.test.d.ts.map +0 -1
  631. package/dist/assets/__tests__/resolve-render-asset.unit.test.d.ts +0 -2
  632. package/dist/assets/__tests__/resolve-render-asset.unit.test.d.ts.map +0 -1
  633. package/dist/chunk-DJIMFYX6.mjs +0 -1439
  634. package/dist/chunk-DJIMFYX6.mjs.map +0 -1
  635. package/dist/chunk-F2SIOCRM.mjs +0 -7423
  636. package/dist/chunk-F2SIOCRM.mjs.map +0 -1
  637. package/dist/chunk-JMSB7AR4.mjs +0 -3
  638. package/dist/chunk-JMSB7AR4.mjs.map +0 -1
  639. package/dist/chunk-KHI6K4C6.mjs +0 -659
  640. package/dist/chunk-KHI6K4C6.mjs.map +0 -1
  641. package/dist/chunk-PORZOL2V.mjs +0 -569
  642. package/dist/chunk-PORZOL2V.mjs.map +0 -1
  643. package/dist/chunk-UOJGMDGP.mjs +0 -29913
  644. package/dist/chunk-UOJGMDGP.mjs.map +0 -1
  645. package/dist/components/__tests__/atmosphere-red.test.d.ts +0 -2
  646. package/dist/components/__tests__/atmosphere-red.test.d.ts.map +0 -1
  647. package/dist/components/__tests__/atmosphere.test.d.ts +0 -2
  648. package/dist/components/__tests__/atmosphere.test.d.ts.map +0 -1
  649. package/dist/components/__tests__/fog.test-d.d.ts +0 -2
  650. package/dist/components/__tests__/fog.test-d.d.ts.map +0 -1
  651. package/dist/components/__tests__/fog.test.d.ts +0 -2
  652. package/dist/components/__tests__/fog.test.d.ts.map +0 -1
  653. package/dist/components/atmosphere.d.ts +0 -18
  654. package/dist/components/atmosphere.d.ts.map +0 -1
  655. package/dist/components/environment.d.ts +0 -115
  656. package/dist/components/environment.d.ts.map +0 -1
  657. package/dist/deferred-lighting.d.ts +0 -13
  658. package/dist/deferred-lighting.d.ts.map +0 -1
  659. package/dist/dynamic-texture-store.d.ts +0 -42
  660. package/dist/dynamic-texture-store.d.ts.map +0 -1
  661. package/dist/environment/__tests__/failure-injection.test.d.ts +0 -2
  662. package/dist/environment/__tests__/failure-injection.test.d.ts.map +0 -1
  663. package/dist/environment/__tests__/generation-red.test.d.ts +0 -2
  664. package/dist/environment/__tests__/generation-red.test.d.ts.map +0 -1
  665. package/dist/environment/__tests__/generation.test.d.ts +0 -2
  666. package/dist/environment/__tests__/generation.test.d.ts.map +0 -1
  667. package/dist/environment/__tests__/graph-transaction.test.d.ts +0 -2
  668. package/dist/environment/__tests__/graph-transaction.test.d.ts.map +0 -1
  669. package/dist/environment/__tests__/inspection-red.test.d.ts +0 -2
  670. package/dist/environment/__tests__/inspection-red.test.d.ts.map +0 -1
  671. package/dist/environment/__tests__/lifecycle-evidence.test.d.ts +0 -2
  672. package/dist/environment/__tests__/lifecycle-evidence.test.d.ts.map +0 -1
  673. package/dist/environment/__tests__/pipeline-topology.test.d.ts +0 -2
  674. package/dist/environment/__tests__/pipeline-topology.test.d.ts.map +0 -1
  675. package/dist/environment/__tests__/readiness.test.d.ts +0 -2
  676. package/dist/environment/__tests__/readiness.test.d.ts.map +0 -1
  677. package/dist/environment/__tests__/recovery.test.d.ts +0 -2
  678. package/dist/environment/__tests__/recovery.test.d.ts.map +0 -1
  679. package/dist/environment/__tests__/resize-dispose.test.d.ts +0 -2
  680. package/dist/environment/__tests__/resize-dispose.test.d.ts.map +0 -1
  681. package/dist/environment/__tests__/signature-red.test.d.ts +0 -2
  682. package/dist/environment/__tests__/signature-red.test.d.ts.map +0 -1
  683. package/dist/environment/__tests__/signature.test.d.ts +0 -2
  684. package/dist/environment/__tests__/signature.test.d.ts.map +0 -1
  685. package/dist/environment/descriptors.d.ts +0 -2
  686. package/dist/environment/descriptors.d.ts.map +0 -1
  687. package/dist/environment/extracted-environment.d.ts +0 -53
  688. package/dist/environment/extracted-environment.d.ts.map +0 -1
  689. package/dist/environment/generation.d.ts +0 -62
  690. package/dist/environment/generation.d.ts.map +0 -1
  691. package/dist/environment/gpu-bundle.d.ts +0 -23
  692. package/dist/environment/gpu-bundle.d.ts.map +0 -1
  693. package/dist/environment/graph.d.ts +0 -108
  694. package/dist/environment/graph.d.ts.map +0 -1
  695. package/dist/environment/inspection.d.ts +0 -48
  696. package/dist/environment/inspection.d.ts.map +0 -1
  697. package/dist/environment/lifecycle.d.ts +0 -22
  698. package/dist/environment/lifecycle.d.ts.map +0 -1
  699. package/dist/environment/readiness.d.ts +0 -29
  700. package/dist/environment/readiness.d.ts.map +0 -1
  701. package/dist/environment/signature.d.ts +0 -70
  702. package/dist/environment/signature.d.ts.map +0 -1
  703. package/dist/extract/__tests__/directional-csm-domain.unit.test.d.ts +0 -2
  704. package/dist/extract/__tests__/directional-csm-domain.unit.test.d.ts.map +0 -1
  705. package/dist/extract/__tests__/environment-source.test.d.ts +0 -2
  706. package/dist/extract/__tests__/environment-source.test.d.ts.map +0 -1
  707. package/dist/extract/__tests__/schema-readers.unit.test.d.ts +0 -2
  708. package/dist/extract/__tests__/schema-readers.unit.test.d.ts.map +0 -1
  709. package/dist/extract/directional-csm.d.ts +0 -129
  710. package/dist/extract/directional-csm.d.ts.map +0 -1
  711. package/dist/extract/index.d.ts +0 -5
  712. package/dist/extract/index.d.ts.map +0 -1
  713. package/dist/extract/material-interface.d.ts +0 -56
  714. package/dist/extract/material-interface.d.ts.map +0 -1
  715. package/dist/extract/schema-readers.d.ts +0 -20
  716. package/dist/extract/schema-readers.d.ts.map +0 -1
  717. package/dist/features/graph-contribution.d.ts +0 -64
  718. package/dist/features/graph-contribution.d.ts.map +0 -1
  719. package/dist/features/index.d.ts +0 -21
  720. package/dist/features/index.d.ts.map +0 -1
  721. package/dist/features/morph/index.d.ts +0 -3
  722. package/dist/features/morph/index.d.ts.map +0 -1
  723. package/dist/features/morph/morph-bounds.d.ts +0 -42
  724. package/dist/features/morph/morph-bounds.d.ts.map +0 -1
  725. package/dist/features/scene-temporal.d.ts +0 -45
  726. package/dist/features/scene-temporal.d.ts.map +0 -1
  727. package/dist/features/taa-resolve.d.ts +0 -21
  728. package/dist/features/taa-resolve.d.ts.map +0 -1
  729. package/dist/frame-chain.d.ts +0 -14
  730. package/dist/frame-chain.d.ts.map +0 -1
  731. package/dist/gpu-driven/view-reference.d.ts.map +0 -1
  732. package/dist/gpu-resource-store.d.ts.map +0 -1
  733. package/dist/hdrp-cluster-membership.d.ts +0 -2
  734. package/dist/hdrp-cluster-membership.d.ts.map +0 -1
  735. package/dist/hdrp-pipeline.d.ts +0 -36
  736. package/dist/hdrp-pipeline.d.ts.map +0 -1
  737. package/dist/ibl/cubemap-projection.d.ts +0 -23
  738. package/dist/ibl/cubemap-projection.d.ts.map +0 -1
  739. package/dist/ibl/face-uniforms.d.ts +0 -65
  740. package/dist/ibl/face-uniforms.d.ts.map +0 -1
  741. package/dist/mesh-update-errors.d.ts +0 -71
  742. package/dist/mesh-update-errors.d.ts.map +0 -1
  743. package/dist/mipmap-generator.d.ts +0 -39
  744. package/dist/mipmap-generator.d.ts.map +0 -1
  745. package/dist/param-schema-projection-census.d.ts +0 -18
  746. package/dist/param-schema-projection-census.d.ts.map +0 -1
  747. package/dist/persistent-render-scene.d.ts +0 -158
  748. package/dist/persistent-render-scene.d.ts.map +0 -1
  749. package/dist/pipeline/index.d.ts +0 -11
  750. package/dist/pipeline/index.d.ts.map +0 -1
  751. package/dist/pipeline-errors.d.ts +0 -110
  752. package/dist/pipeline-errors.d.ts.map +0 -1
  753. package/dist/prepare/__tests__/schema-readers.unit.test.d.ts +0 -2
  754. package/dist/prepare/__tests__/schema-readers.unit.test.d.ts.map +0 -1
  755. package/dist/prepare/index.d.ts +0 -4
  756. package/dist/prepare/index.d.ts.map +0 -1
  757. package/dist/prepare/schema-readers.d.ts +0 -11
  758. package/dist/prepare/schema-readers.d.ts.map +0 -1
  759. package/dist/record/__tests__/environment-record.test.d.ts +0 -2
  760. package/dist/record/__tests__/environment-record.test.d.ts.map +0 -1
  761. package/dist/record/__tests__/frame-targets.unit.test.d.ts +0 -2
  762. package/dist/record/__tests__/frame-targets.unit.test.d.ts.map +0 -1
  763. package/dist/record/__tests__/membership-timing.unit.test.d.ts +0 -2
  764. package/dist/record/__tests__/membership-timing.unit.test.d.ts.map +0 -1
  765. package/dist/record/__tests__/render-submission.integration.test.d.ts +0 -2
  766. package/dist/record/__tests__/render-submission.integration.test.d.ts.map +0 -1
  767. package/dist/record/__tests__/render-submission.perf.test.d.ts +0 -2
  768. package/dist/record/__tests__/render-submission.perf.test.d.ts.map +0 -1
  769. package/dist/record/__tests__/shadow-submit-mode.unit.test.d.ts +0 -2
  770. package/dist/record/__tests__/shadow-submit-mode.unit.test.d.ts.map +0 -1
  771. package/dist/record/__tests__/view-ubo-layout.unit.test.d.ts +0 -2
  772. package/dist/record/__tests__/view-ubo-layout.unit.test.d.ts.map +0 -1
  773. package/dist/record/frame-observation.d.ts +0 -38
  774. package/dist/record/frame-observation.d.ts.map +0 -1
  775. package/dist/record/index.d.ts +0 -15
  776. package/dist/record/index.d.ts.map +0 -1
  777. package/dist/record/main-pass-skin.d.ts +0 -46
  778. package/dist/record/main-pass-skin.d.ts.map +0 -1
  779. package/dist/record/main-pass-sprite.d.ts +0 -69
  780. package/dist/record/main-pass-sprite.d.ts.map +0 -1
  781. package/dist/record/material-payload.d.ts +0 -43
  782. package/dist/record/material-payload.d.ts.map +0 -1
  783. package/dist/record/material-slot-plan.d.ts +0 -26
  784. package/dist/record/material-slot-plan.d.ts.map +0 -1
  785. package/dist/record/membership-timing.d.ts +0 -232
  786. package/dist/record/membership-timing.d.ts.map +0 -1
  787. package/dist/record/shadow-caster-uniform.d.ts +0 -8
  788. package/dist/record/shadow-caster-uniform.d.ts.map +0 -1
  789. package/dist/record/shadow-submit-mode.d.ts +0 -66
  790. package/dist/record/shadow-submit-mode.d.ts.map +0 -1
  791. package/dist/render-dispatch-membership.d.ts +0 -47
  792. package/dist/render-dispatch-membership.d.ts.map +0 -1
  793. package/dist/render-pipeline-context.d.ts +0 -289
  794. package/dist/render-pipeline-context.d.ts.map +0 -1
  795. package/dist/render-pipeline-target.d.ts +0 -16
  796. package/dist/render-pipeline-target.d.ts.map +0 -1
  797. package/dist/render-scene-projection.d.ts +0 -174
  798. package/dist/render-scene-projection.d.ts.map +0 -1
  799. package/dist/render-system-fold.d.ts +0 -266
  800. package/dist/render-system-fold.d.ts.map +0 -1
  801. package/dist/renderer/asset-service.d.ts +0 -10
  802. package/dist/renderer/asset-service.d.ts.map +0 -1
  803. package/dist/renderer/backend-selection.d.ts.map +0 -1
  804. package/dist/renderer/environment-classify.d.ts +0 -6
  805. package/dist/renderer/environment-classify.d.ts.map +0 -1
  806. package/dist/renderer/environment-error.d.ts +0 -13
  807. package/dist/renderer/environment-error.d.ts.map +0 -1
  808. package/dist/renderer/material/pipeline-projection.d.ts +0 -91
  809. package/dist/renderer/material/pipeline-projection.d.ts.map +0 -1
  810. package/dist/renderer/renderer-factory.d.ts +0 -289
  811. package/dist/renderer/renderer-factory.d.ts.map +0 -1
  812. package/dist/renderer.d.ts +0 -771
  813. package/dist/renderer.d.ts.map +0 -1
  814. package/dist/scene-utils/collect-subtree.d.ts +0 -11
  815. package/dist/scene-utils/collect-subtree.d.ts.map +0 -1
  816. package/dist/ssao-data.d.ts +0 -34
  817. package/dist/ssao-data.d.ts.map +0 -1
  818. package/dist/surface-format.d.ts +0 -10
  819. package/dist/surface-format.d.ts.map +0 -1
  820. package/dist/taa-history-store.d.ts +0 -88
  821. package/dist/taa-history-store.d.ts.map +0 -1
  822. package/dist/temporal-coverage.d.ts +0 -35
  823. package/dist/temporal-coverage.d.ts.map +0 -1
  824. package/dist/temporal-frame-transaction.d.ts +0 -92
  825. package/dist/temporal-frame-transaction.d.ts.map +0 -1
  826. package/dist/temporal-inspection.d.ts +0 -57
  827. package/dist/temporal-inspection.d.ts.map +0 -1
  828. package/dist/temporal-view.d.ts +0 -43
  829. package/dist/temporal-view.d.ts.map +0 -1
  830. package/dist/tilemap/resolve-tileset-runtime.d.ts +0 -23
  831. package/dist/tilemap/resolve-tileset-runtime.d.ts.map +0 -1
  832. package/dist/urp-pipeline.d.ts +0 -4
  833. package/dist/urp-pipeline.d.ts.map +0 -1
  834. package/src/__tests__/analytic-sky-contract.test.ts +0 -27
  835. package/src/__tests__/analytic-sky-falsify-carriers.mjs +0 -43
  836. package/src/__tests__/analytic-sky-falsify.test.ts +0 -94
  837. package/src/__tests__/assets-runtime-handoff.integration.test.ts +0 -36
  838. package/src/__tests__/backend-selection.integration.test.ts +0 -11
  839. package/src/__tests__/camera-temporal.test-d.ts +0 -8
  840. package/src/__tests__/camera-temporal.test.ts +0 -188
  841. package/src/__tests__/directional-shadow-probe-atlas-layout.unit.test.ts +0 -18
  842. package/src/__tests__/environment-inspection.test.ts +0 -45
  843. package/src/__tests__/fog-ai-user.fixture.ts +0 -350
  844. package/src/__tests__/fog-custom-render-feature.fixture.ts +0 -33
  845. package/src/__tests__/fog-custom-render-feature.integration.test.ts +0 -76
  846. package/src/__tests__/fog-inspection.integration.test.ts +0 -127
  847. package/src/__tests__/fog-owner-state.integration.test.ts +0 -112
  848. package/src/__tests__/fog-pipeline-topology.integration.test.ts +0 -93
  849. package/src/__tests__/fog-public-surface.integration.test.ts +0 -60
  850. package/src/__tests__/fog-ray-contract.integration.test.ts +0 -73
  851. package/src/__tests__/fog-source-absence.integration.test.ts +0 -51
  852. package/src/__tests__/fog-temporal.integration.test.ts +0 -115
  853. package/src/__tests__/frame-chain.unit.test.ts +0 -26
  854. package/src/__tests__/gpu-scene-field-type-owner.test-d.ts +0 -27
  855. package/src/__tests__/hdrp-pipeline.unit.test.ts +0 -100
  856. package/src/__tests__/ibl/ibl-fallback.unit.test.ts +0 -23
  857. package/src/__tests__/material-derived-error-stop-draw.integration.test.ts +0 -69
  858. package/src/__tests__/material-derived-payload.integration.test.ts +0 -164
  859. package/src/__tests__/materials.unit.test.ts +0 -25
  860. package/src/__tests__/param-schema-projection-census.unit.test.ts +0 -40
  861. package/src/__tests__/persistent-render-scene.unit.test.ts +0 -1311
  862. package/src/__tests__/pipeline-error-policy-owner.unit.test.ts +0 -167
  863. package/src/__tests__/pipeline-pass-trace.test.ts +0 -92
  864. package/src/__tests__/pipeline-stage-owner.test-d.ts +0 -13
  865. package/src/__tests__/plugin.test.ts +0 -25
  866. package/src/__tests__/prepared-graphics-backend-matrix.unit.test.ts +0 -129
  867. package/src/__tests__/prepared-graphics-resolver-recording.unit.test.ts +0 -180
  868. package/src/__tests__/public-pipeline-id.test-d.ts +0 -6
  869. package/src/__tests__/render-dispatch-membership.unit.test.ts +0 -117
  870. package/src/__tests__/render-feature-construction.unit.test.ts +0 -124
  871. package/src/__tests__/render-feature-error-code-owner.test-d.ts +0 -27
  872. package/src/__tests__/render-feature-gpu-buffer-usage-owner.test-d.ts +0 -46
  873. package/src/__tests__/render-feature-graph.integration.test.ts +0 -205
  874. package/src/__tests__/render-feature-graphics-staging.unit.test.ts +0 -200
  875. package/src/__tests__/render-feature-order.unit.test.ts +0 -66
  876. package/src/__tests__/render-feature-prepared-graphics-recording.unit.test.ts +0 -107
  877. package/src/__tests__/render-feature-staging.unit.test.ts +0 -94
  878. package/src/__tests__/renderer-render-scene-public.test-d.ts +0 -27
  879. package/src/__tests__/scene-temporal-coverage.unit.test.ts +0 -259
  880. package/src/__tests__/sun-snapshot-consumers.test.ts +0 -35
  881. package/src/__tests__/surface-backend-kind-owner.test-d.ts +0 -42
  882. package/src/__tests__/taa-history-store.unit.test.ts +0 -196
  883. package/src/__tests__/temporal-frame-transaction.integration.test.ts +0 -537
  884. package/src/__tests__/temporal-inspection.unit.test.ts +0 -138
  885. package/src/assets/__tests__/asset-decoders.unit.test.ts +0 -92
  886. package/src/assets/__tests__/mipmap-generator.unit.test.ts +0 -52
  887. package/src/assets/__tests__/render-asset-port.unit.test.ts +0 -54
  888. package/src/assets/__tests__/resolve-render-asset.unit.test.ts +0 -47
  889. package/src/components/__tests__/atmosphere-red.test.ts +0 -51
  890. package/src/components/__tests__/atmosphere.test.ts +0 -79
  891. package/src/components/__tests__/fog.test-d.ts +0 -49
  892. package/src/components/__tests__/fog.test.ts +0 -60
  893. package/src/components/atmosphere.ts +0 -64
  894. package/src/deferred-lighting.ts +0 -92
  895. package/src/dynamic-texture-store.ts +0 -111
  896. package/src/environment/README.md +0 -76
  897. package/src/environment/__tests__/failure-injection.test.ts +0 -50
  898. package/src/environment/__tests__/generation-red.test.ts +0 -64
  899. package/src/environment/__tests__/generation.test.ts +0 -37
  900. package/src/environment/__tests__/graph-transaction.test.ts +0 -85
  901. package/src/environment/__tests__/inspection-red.test.ts +0 -53
  902. package/src/environment/__tests__/lifecycle-evidence.test.ts +0 -40
  903. package/src/environment/__tests__/pipeline-topology.test.ts +0 -33
  904. package/src/environment/__tests__/readiness.test.ts +0 -42
  905. package/src/environment/__tests__/recovery.test.ts +0 -62
  906. package/src/environment/__tests__/resize-dispose.test.ts +0 -30
  907. package/src/environment/__tests__/signature-red.test.ts +0 -45
  908. package/src/environment/__tests__/signature.test.ts +0 -60
  909. package/src/environment/descriptors.ts +0 -7
  910. package/src/environment/extracted-environment.ts +0 -239
  911. package/src/environment/generation.ts +0 -158
  912. package/src/environment/gpu-bundle.ts +0 -144
  913. package/src/environment/graph.ts +0 -588
  914. package/src/environment/inspection.ts +0 -107
  915. package/src/environment/lifecycle.ts +0 -124
  916. package/src/environment/readiness.ts +0 -76
  917. package/src/environment/signature.ts +0 -185
  918. package/src/extract/__tests__/directional-csm-domain.unit.test.ts +0 -391
  919. package/src/extract/__tests__/environment-source.test.ts +0 -105
  920. package/src/extract/__tests__/schema-readers.unit.test.ts +0 -16
  921. package/src/extract/directional-csm.ts +0 -959
  922. package/src/extract/index.ts +0 -10
  923. package/src/extract/material-interface.ts +0 -604
  924. package/src/extract/schema-readers.ts +0 -27
  925. package/src/features/graph-contribution.ts +0 -577
  926. package/src/features/index.ts +0 -100
  927. package/src/features/morph/index.ts +0 -24
  928. package/src/features/morph/morph-bounds.ts +0 -123
  929. package/src/features/scene-temporal.ts +0 -274
  930. package/src/features/taa-resolve.ts +0 -244
  931. package/src/frame-chain.ts +0 -21
  932. package/src/hdrp-cluster-membership.ts +0 -70
  933. package/src/ibl/cubemap-projection.ts +0 -60
  934. package/src/ibl/face-uniforms.ts +0 -150
  935. package/src/mesh-update-errors.ts +0 -113
  936. package/src/mipmap-generator.ts +0 -244
  937. package/src/param-schema-projection-census.ts +0 -73
  938. package/src/persistent-render-scene.ts +0 -1752
  939. package/src/pipeline/index.ts +0 -40
  940. package/src/pipeline-errors.ts +0 -172
  941. package/src/prepare/__tests__/schema-readers.unit.test.ts +0 -16
  942. package/src/prepare/index.ts +0 -8
  943. package/src/prepare/schema-readers.ts +0 -20
  944. package/src/record/__tests__/environment-record.test.ts +0 -35
  945. package/src/record/__tests__/frame-targets.unit.test.ts +0 -54
  946. package/src/record/__tests__/membership-timing.unit.test.ts +0 -524
  947. package/src/record/__tests__/render-submission.integration.test.ts +0 -76
  948. package/src/record/__tests__/render-submission.perf.test.ts +0 -141
  949. package/src/record/__tests__/shadow-submit-mode.unit.test.ts +0 -88
  950. package/src/record/__tests__/view-ubo-layout.unit.test.ts +0 -101
  951. package/src/record/frame-observation.ts +0 -122
  952. package/src/record/index.ts +0 -15
  953. package/src/record/main-pass-skin.ts +0 -51
  954. package/src/record/main-pass-sprite.ts +0 -166
  955. package/src/record/material-payload.ts +0 -292
  956. package/src/record/material-slot-plan.ts +0 -68
  957. package/src/record/membership-timing.ts +0 -1012
  958. package/src/record/shadow-caster-uniform.ts +0 -37
  959. package/src/record/shadow-submit-mode.ts +0 -277
  960. package/src/render-dispatch-membership.ts +0 -155
  961. package/src/render-pipeline-context.ts +0 -332
  962. package/src/render-pipeline-target.ts +0 -96
  963. package/src/render-scene-projection.ts +0 -1738
  964. package/src/render-system-fold.ts +0 -531
  965. package/src/renderer/asset-service.ts +0 -32
  966. package/src/renderer/backend-selection.ts +0 -121
  967. package/src/renderer/environment-classify.ts +0 -30
  968. package/src/renderer/environment-error.ts +0 -19
  969. package/src/renderer/material/pipeline-projection.ts +0 -140
  970. package/src/renderer.ts +0 -940
  971. package/src/scene-utils/collect-subtree.ts +0 -40
  972. package/src/ssao-data.ts +0 -106
  973. package/src/surface-format.ts +0 -37
  974. package/src/taa-history-store.ts +0 -429
  975. package/src/temporal-coverage.ts +0 -106
  976. package/src/temporal-frame-transaction.ts +0 -301
  977. package/src/temporal-inspection.ts +0 -194
  978. package/src/temporal-view.ts +0 -174
  979. package/src/tilemap/resolve-tileset-runtime.ts +0 -72
@@ -1,44 +1,18 @@
1
1
  import type { World } from '@forgeax/engine-ecs';
2
- import type { VertexLayoutProjection } from '@forgeax/engine-geometry';
3
- import type { Profiler } from '@forgeax/engine-profiler';
4
- import type { BindGroupLayout, Buffer, ComputePipeline, PipelineLayout, RenderPipeline, RhiCanvasContext, RhiDevice, Sampler, TextureView } from '@forgeax/engine-rhi';
5
- import { type Result, RhiError } from '@forgeax/engine-rhi';
6
- import type { MaterialRuntimeArtifact } from '@forgeax/engine-shader';
7
- import { type ImmutableParamSchemaProjection, type MaterialRenderState, type ParamSchemaEntry, type PassKind, type PrimitiveTopology, type RenderPipelineAsset } from '@forgeax/engine-types';
8
- import type { RenderAssetPort } from './assets/render-asset-port';
9
- import type { DynamicTextureStore } from './dynamic-texture-store';
10
- import type { EngineMetrics } from './engine-metrics';
11
- import { type EnvironmentInspection } from './environment/inspection';
12
- import { type ObservationUnavailableError, type RenderError } from './errors/render';
13
- import { type RenderFeatureGraphComposition, type RenderFeatureGraphContribution } from './features/graph-contribution';
14
- import { type RenderFeatureHost } from './features/host';
15
- import type { RenderFeaturePassContext } from './features/types';
2
+ import type { RenderReadLease } from '@forgeax/engine-ecs/projection';
3
+ import { type Result } from '@forgeax/engine-rhi';
4
+ import { type RenderPipelineAsset } from '@forgeax/engine-types';
5
+ import { type ObservationUnavailableError } from './errors/render';
16
6
  import { type PostProcessShaderEntry } from './fullscreen-post-process-pass';
17
- import { type GpuDrivenProductionInspection } from './gpu-driven/production-raster';
18
- import type { GpuBuffer } from './gpu-resource';
19
- import type { GpuResourceStore } from './gpu-resource-store';
20
- import type { RhiErrorListenerRegistry } from './lifecycle';
7
+ import type { RenderSceneInspection } from './inspection-types';
8
+ import type { PointsLinesRetainedSnapshot } from './points-lines/snapshot';
9
+ export type { RenderSceneInspection } from './inspection-types';
21
10
  import type { MeshMaterialBindingObservation } from './mesh-material-bindings';
22
- import { type ParamSchemaProjectionCensus } from './param-schema-projection-census';
23
- import { type PersistentRenderSceneInspection } from './persistent-render-scene';
24
- import { PipelineError } from './pipeline-errors';
25
- import { type FrameObservation, type FrameObservationOptions } from './record/frame-observation';
26
- import type { MembershipTimingController } from './record/membership-timing';
27
- import { type ShadowSubmitMode, type ShadowSubmitModeState, type ShadowSubmitResult } from './record/shadow-submit-mode';
28
- import type { RenderPipeline as RenderPipelineDef } from './render-pipeline';
29
- import type { RenderPipelineContext } from './render-pipeline-context';
30
- import { type TemporalInspection } from './temporal-inspection';
31
- export type RenderSceneInspection = PersistentRenderSceneInspection & {
32
- readonly gpuDriven: GpuDrivenProductionInspection;
33
- readonly temporal: TemporalInspection;
34
- readonly environment: EnvironmentInspection;
35
- };
36
- import { type DrawOwnerOptions } from './renderer';
37
- import type { MaterialRenderProjection } from './renderer/material/assembly';
38
- import type { MaterialReadiness } from './renderer/material/pipeline-projection';
39
- import type { SkinPaletteAllocator } from './systems/skin-palette-allocator';
40
- /** Dynamic-offset stride for one derived material UBO slot. */
41
- export declare const MATERIAL_PER_ENTITY_STRIDE = 512;
11
+ import { type FrameObservation, type FrameObservationOptions } from './record/frame';
12
+ import type { RenderSystemInternals } from './record/render-context';
13
+ import { type DrawOwnerOptions } from './render-contract';
14
+ export type { _InternalRenderPipelineContext, _StandardForwardSceneView, PerPassResources, PipelineState, RenderSystemInternals, RenderSystemRuntime, SurfaceBackendKind, SwapChainFormatPair, } from './record/render-context';
15
+ export { configureSurface, MATERIAL_PER_ENTITY_STRIDE, resolveSurfaceFormatPair, STANDARD_PBR_UBO_SIZE, selectSwapChainFormat, } from './record/render-context';
42
16
  /**
43
17
  * Engine-internal Extract / Prepare / Record driver; constructed by createRenderer.
44
18
  *
@@ -57,15 +31,9 @@ export declare const MATERIAL_PER_ENTITY_STRIDE = 512;
57
31
  */
58
32
  export interface RenderSystem {
59
33
  /** Returns true only when this invocation reached queue submission. */
60
- draw(worlds: readonly World[], opts: DrawOwnerOptions): boolean;
61
- /** Apply one renderer-owned shadow submission mode for one generation. */
62
- applyShadowSubmitMode(mode: ShadowSubmitMode, rendererGeneration: string): ShadowSubmitResult<ShadowSubmitModeState>;
63
- /** Restore the renderer-owned mode to the independent baseline. */
64
- restoreShadowSubmitMode(rendererGeneration: string): ShadowSubmitResult<ShadowSubmitModeState>;
65
- /** Read the generation-bound mode and exact lifecycle counters. */
66
- getShadowSubmitMode(): ShadowSubmitModeState;
34
+ draw(worlds: readonly World[], opts: DrawOwnerOptions, renderReadLeases?: readonly RenderReadLease[]): boolean;
67
35
  /** Release renderer-owned persistent state for one detached World. */
68
- detachWorld(world: World): void;
36
+ detachScene(world: World): void;
69
37
  /** Release the profiler catalog contribution owned by this RenderSystem. */
70
38
  releaseProfilerCatalog(): void;
71
39
  observeCurrentFrame(options: FrameObservationOptions): Promise<Result<FrameObservation, ObservationUnavailableError>>;
@@ -86,6 +54,8 @@ export interface RenderSystem {
86
54
  };
87
55
  /** Persistent scene maintenance evidence from the ordinary single-World path. */
88
56
  readonly renderScene: RenderSceneInspection;
57
+ /** Retained Points/Lines authoring facts from the single scene projection. */
58
+ readonly pointsLinesSnapshots: readonly PointsLinesRetainedSnapshot[];
89
59
  /** Current mesh-slot provenance and active diagnostics from the last frame. */
90
60
  readonly meshMaterialBindings: readonly MeshMaterialBindingObservation[];
91
61
  /**
@@ -116,45 +86,10 @@ export interface RenderSystem {
116
86
  readonly createBindGroup: number;
117
87
  readonly keys: readonly string[];
118
88
  };
119
- /**
120
- * feat-20260615-pipeline-spec-ssot M5-T2: latest URP shadow-atlas
121
- * texture view resolved from the compiled typed frame graph. Returns `null` when no
122
- * frame has been drawn yet, or when the active pipeline does not
123
- * declare the `shadowDepth` color target. Read-only debug seam:
124
- * the engine itself reads the same view inline in `recordFrame`;
125
- * this getter exists so debug readback paths
126
- * (`Renderer.debugSampleShadowFactor`) read the same SSOT view as
127
- * the engine's record stage (D-2: graph owns the lifecycle; no
128
- * mirror slot on `pipelineState.perPassResources`).
129
- */
130
- getCurrentShadowView(): any | null;
131
- /**
132
- * feat-20260601-customizable-render-pipeline-seam M1 / w7: register a render-pipeline
133
- * logic under `id`. Same-id re-register THROWS a PipelineError
134
- * (`'pipeline-already-registered'`) - programmer-error fail-fast, mirroring
135
- * ShaderRegistry.installMaterialArtifact. Engine builtins use the `forgeax::` prefix.
136
- */
137
- registerPipeline(id: string, impl: RenderPipelineDef): void;
138
- /**
139
- * feat-20260601-customizable-render-pipeline-seam M1 / w7 (D-19): install the pipeline
140
- * described by a `RenderPipelineAsset` POD. Looks up `pipelineId` in the registry; on an
141
- * unregistered id returns `Result.err(PipelineError{code:'pipeline-not-found'})`. On
142
- * success the next `draw` detects the install-epoch bump and rebuilds the memoized
143
- * per-frame graph (hot-swap). Takes the payload directly because installation happens at
144
- * boot/swap time before any World exists -- there is no handle to resolve.
145
- */
146
- installPipeline(asset: RenderPipelineAsset): Result<() => void, PipelineError>;
147
- /**
148
- * feat-20260604-resource-owning-render-graph-and-fullscreen-postpr M2 / w13:
149
- * fullscreen post-process shader registry, parallel to ShaderRegistry.installMaterialArtifact
150
- * (D-4: material shader handles 4-BGL / 12-float-vertex / depth / triangle-list, while
151
- * fullscreen post-process uses 0-vertex-buffer / no-depth / input-texture-BGL).
152
- * Same-id re-register THROWS PostProcessError ('post-process-already-registered').
153
- * Engine builtins use the `forgeax::` prefix.
154
- */
155
- readonly postProcess: {
156
- register(id: string, entry: PostProcessShaderEntry): () => void;
157
- };
89
+ /** Configure the sole Standard graph owner before the first frame. */
90
+ configureStandard(config: RenderPipelineAsset['config']): void;
91
+ /** Register one engine-owned post-process shader used by the Standard lane. */
92
+ registerBuiltinPostProcess(id: string, entry: PostProcessShaderEntry): () => void;
158
93
  /**
159
94
  * feat-20260612-rhi-destroy-renderer-dispose-gpu-lifecycle / M5 / w21:
160
95
  * release the per-RenderSystem frame-state GPU bookkeeping during
@@ -178,637 +113,13 @@ export interface RenderSystem {
178
113
  * Idempotent and graph-optional (no-op when nothing has compiled yet).
179
114
  */
180
115
  resetForRecover(): void;
181
- /** Recreate GPU-driven production state after internals.device is replaced. */
182
- restoreGpuDrivenForRecover(): void;
183
116
  /** Recreate post-process GPU parameter resources after a device rebuild. */
184
117
  restorePostProcessResources(): void;
185
118
  }
119
+ export declare function createRenderSystem(internals: RenderSystemInternals): RenderSystem;
186
120
  /**
187
- * feat-20260601-customizable-render-pipeline-seam M2 / w10: the NARROW runtime-services
188
- * surface a `RenderPipeline` pass closure consumes (UE `FRDGBuilder` runtime half). Bundles
189
- * exactly the four `RenderSystemInternals` members the 9 urp closures reach
190
- * directly: the GPU `device`, the structured-error sink `errorRegistry`, and the two
191
- * per-MaterialShader pipeline-cache / param-schema lookups. `RenderPipelineContext.runtime`
192
- * is typed as this interface, NOT the full `RenderSystemInternals` - a pipeline author
193
- * cannot reach `context` / `getPipelineState` / `canvas` (charter P4: a
194
- * consistent narrow abstraction over the runtime, not the kitchen-sink). `internals`
195
- * itself is unreachable through the public ctx (the AC-08 oracle: `ctx.internals` is a
196
- * compile error).
197
- */
198
- export interface RenderSystemRuntime {
199
- readonly device: RhiDevice;
200
- readonly errorRegistry: RhiErrorListenerRegistry;
201
- /** @internal Emit directional shadow causal markers only for debug capture. */
202
- readonly shadowDebugObservation?: boolean | undefined;
203
- /** @internal Debug-only ParamSchema compatibility census; absent in production. */
204
- readonly paramSchemaProjectionCensus?: ParamSchemaProjectionCensus | undefined;
205
- /** @internal Depth-only fullscreen draw used to clear one invalid cascade tile. */
206
- readonly getDirectionalShadowTileClearPipeline?: () => RenderPipeline | null;
207
- /**
208
- * feat-20260622-s5-device-surface-self-heal-recover M2 / w8: health registry
209
- * threaded into the record stage so `recordFrame` can fire `internal-fault`
210
- * when surface reconfigure+retry both fail (A-IN-2).
211
- */
212
- readonly healthRegistry: import('./lifecycle').HealthListenerRegistry;
213
- /**
214
- * Cooked material consumption boundary. Runtime record code may obtain a
215
- * projection and content-addressed artifact here; it must not resolve an
216
- * authored parent chain or compile a missing specialization.
217
- */
218
- readonly getMaterialProjection?: (materialGuid: string) => MaterialRenderProjection | undefined;
219
- readonly getMaterialArtifact?: (specializationKey: string) => MaterialRuntimeArtifact | undefined;
220
- /** Production MaterialReady/Error lookup used by the record draw gate. */
221
- readonly getMaterialReadiness?: (materialGuid: string) => MaterialReadiness | undefined;
222
- readonly getMaterialShaderPipeline?: (materialShaderId: string, isHdr: boolean, renderState?: MaterialRenderState, topology?: PrimitiveTopology, indexFormat?: 'uint16' | 'uint32', variantSet?: string, passKind?: PassKind, meshAttributes?: import('@forgeax/engine-types').VertexAttributeMap, sampleCount?: number, colorFormatOverride?: GPUTextureFormat, shaderUvSetCount?: number, depthFormatOverride?: GPUTextureFormat | null, vertexLayout?: string, materialGuid?: string, fragmentEntry?: string,
223
- /** Geometry-owned immutable projection carried to the renderer PSO seam. */
224
- vertexLayoutProjection?: VertexLayoutProjection) => RenderPipeline | null;
225
- readonly getMaterialShaderBindingContract?: (materialShaderId: string) => 'group-0' | 'group-0-resource' | 'view-only' | 'view-with-resource' | 'render-material';
226
- /**
227
- * feat-20260527 M2 / w7: schema lookup for material param overlay.
228
- * Returns the paramSchema for a registered material shader, or
229
- * `undefined` when the shader is not in the ShaderRegistry.
230
- * Record stage uses this instead of reading `MaterialSnapshot.paramSchema`.
231
- */
232
- readonly getParamSchema?: (materialShaderId: string) => readonly ParamSchemaEntry[] | undefined;
233
- /**
234
- * Runtime ParamSchema projection owner lookup. Registered shader consumers
235
- * must prefer this immutable projection over deriving the same schema again.
236
- * The optional seam keeps feature-only and legacy test runtimes compatible.
237
- */
238
- readonly getParamSchemaProjection?: (materialShaderId: string) => ImmutableParamSchemaProjection | undefined;
239
- /**
240
- * feat-20260621-learn-render-5-5-parallax M2 / w6 (D-1): the per-shader
241
- * material BindGroupLayout for the given material shader. A custom shader
242
- * declaring >3 user-region textures (e.g. parallax `heightTexture`) owns a
243
- * material BGL whose entry count + injection start differ from the built-in
244
- * 18-entry layout; the record stage must create the material bind group
245
- * against THIS layout so the entry count matches. Returns `undefined` when
246
- * the shader is unregistered or resolves to the shared built-in layout
247
- * (3-texture shaders), in which case the caller falls back to
248
- * `pipelineState.materialBindGroupLayout`.
249
- */
250
- readonly getMaterialBindGroupLayout?: (materialShaderId: string) => BindGroupLayout | undefined;
251
- /**
252
- * feat-20260527-sprite-nineslice M4 / w16 (D-5): per-Renderer metrics counter
253
- * surfaced through `renderer.metrics`. Record-stage soft-warns (e.g.
254
- * `nineslice.scale-too-small` when Transform.scale falls below the four
255
- * 9-slice corner anchors) call `runtime.metrics.increment(name)` instead of
256
- * a per-entity `console.warn` so AI users observe machine-readable counters
257
- * (charter P3 over P-flooded text logs). Each Renderer owns its own
258
- * EngineMetrics instance (D-5 candidate 1: multi-Renderer isolation).
259
- */
260
- readonly metrics: EngineMetrics;
261
- /** Optional Render-owned membership timing capability. */
262
- readonly membershipTiming?: MembershipTimingController | undefined;
263
- /**
264
- * feat-20260604-resource-owning-render-graph-and-fullscreen-postpr M3 / F-2 fix-up:
265
- * post-process registry lookup. Returns the `PostProcessShaderEntry` registered
266
- * via `renderer.postProcess.register(id, entry)`, or `undefined` when `id`
267
- * resolves to no entry. `addFullscreenPass`'s execute closure dispatches on this
268
- * to route to either the FXAA built-in path (id === 'fxaa') or the generic
269
- * `buildFullscreenPostProcessPass + createFullscreenBindGroup` path; an
270
- * unregistered id surfaces as a thrown `PostProcessError({code:'post-process-not-found'})`
271
- * fail-fast (charter P3 / pipeline-errors throw template).
272
- *
273
- * Optional so a custom RenderSystemRuntime fixture (test doubles) need not
274
- * supply it; the engine's own createRenderSystem populates it unconditionally.
275
- */
276
- readonly lookupPostProcess?: (id: string) => PostProcessShaderEntry | undefined;
277
- /**
278
- * feat-20260621-fullscreen-post-process-per-frame-uniform-params-l M-A2 / w8:
279
- * per-shader params UBO accessor. Returns the eager-created (at register time,
280
- * M-A1 / w5) GPU buffer for `id`, or `undefined` when the id has no params
281
- * (param-less consumer) / is unregistered. dispatchFullscreenPass reads this to
282
- * writeBuffer the per-frame snapshot bytes and bind the buffer at group(1)
283
- * binding(2). Optional so test fixtures need not supply it; createRenderSystem
284
- * populates it unconditionally (mirrors lookupPostProcess / getPostProcessPipeline).
285
- */
286
- readonly getPostProcessParamsBuffer?: (id: string) => Buffer | undefined;
287
- /**
288
- * feat-20260609-learn-render-4-5-framebuffers-demo-offscreen-rt-an M4 / T-10-a:
289
- * post-process render-pipeline lookup with eager-on-first-call build. Returns a
290
- * cached `RenderPipeline` (RHI handle) for `id`, lazily building on first call
291
- * via the closure passed through `RenderSystemInternals.buildPostProcessPipeline`.
292
- * Returns `null` when:
293
- * - the id is not registered in the post-process registry (caller skips the
294
- * pass — paired with the `'post-process-not-found'` throw site, this branch
295
- * is unreachable on the happy path)
296
- * - the underlying async shader-module compile is still pending (caller falls
297
- * back for one frame and retries on the next; mirrors the
298
- * `getMaterialShaderPipeline` 1-frame-warmup idiom)
299
- * - the pipeline build itself fails (caller skips the pass; the build path
300
- * fires a structured RhiError via errorRegistry; charter P3 explicit failure)
301
- *
302
- * Solves M1 CONCERN-1: the dispatcher in `dispatchFullscreenPass` previously
303
- * passed `pipeline=null` to `built.createHandle` because the per-frame execute
304
- * closure cannot await `createShaderModule` (async). With this lookup the
305
- * dispatcher reads the pipeline synchronously; warm-up costs one frame.
306
- *
307
- * `bgl` is the fullscreen input-texture BGL the dispatcher already built via
308
- * `buildFullscreenPostProcessPass`. The engine assumes a single static BGL
309
- * shape (FULLSCREEN_BGL_DESCRIPTOR) so the pipeline cache keys on `id` only;
310
- * subsequent calls reuse the cached pipeline regardless of which BGL identity
311
- * is threaded.
312
- *
313
- * `colorFormat` is the swap-chain / target color format the post-process
314
- * pipeline writes (`bgra8unorm-srgb` for swap-chain, the offscreen RT format
315
- * otherwise). Cache key is `id|colorFormat`.
316
- *
317
- * Optional so a custom RenderSystemRuntime fixture (test doubles) need not
318
- * supply it; the engine's own createRenderSystem populates it when
319
- * `RenderSystemInternals.buildPostProcessPipeline` is provided.
320
- */
321
- readonly getPostProcessPipeline?: (id: string, bgl: BindGroupLayout, colorFormat: GPUTextureFormat) => RenderPipeline | null;
322
- /**
323
- * feat-20260623-world-space-video-asset M4 / w16 (D-3): transient per-frame
324
- * texture store for VideoAsset sources. Independent of {@link gpuStore} — the
325
- * record stage routes a `MaterialSnapshot.videoTextureFields` field through
326
- * this store (per-frame copyExternalImageToTexture upload + current-frame view)
327
- * instead of `gpuStore.ensureResident` (whose static cache video must never
328
- * enter, AC-08). Optional so test fixtures that drive recordFrame manually
329
- * need not supply one — a video field then degrades to the default view
330
- * (charter P3). The production createRenderer always wires it.
331
- */
332
- readonly dynamicTextureStore?: DynamicTextureStore | undefined;
333
- }
334
- export interface RenderSystemInternals extends RenderSystemRuntime {
335
- readonly canvas: HTMLCanvasElement | OffscreenCanvas;
336
- /** Optional feature host supplied by the renderer assembly layer. */
337
- readonly featureHost?: RenderFeatureHost | undefined;
338
- readonly shaderModuleFactory?: import('./pipeline-builder').PipelineBuilderShaderModuleFactory;
339
- /** Optional host profiler capability for the existing Render path. */
340
- readonly profiler?: Profiler | undefined;
341
- readonly context: RhiCanvasContext | null;
342
- readonly getPipelineState: () => PipelineState | null;
343
- readonly assets: RenderAssetPort;
344
- readonly gpuStore: GpuResourceStore;
345
- readonly growMeshSsbo?: ((neededSlots: number) => {
346
- readonly ok: true;
347
- } | {
348
- readonly ok: false;
349
- readonly code: 'mesh-ssbo-ceiling-reached' | 'mesh-ssbo-capacity-exceeded';
350
- readonly degradedToSlotCount: number;
351
- }) | undefined;
352
- readonly meshSsboState?: {
353
- readonly slotCount: number;
354
- } | undefined;
355
- /**
356
- * feat-20260609 M4 / T-10-a: factory backing `getPostProcessPipeline`. Provided
357
- * by `createRenderer.ts` (it owns the shared `getShaderModuleAdapter` and the
358
- * fullscreen pipeline-layout builder); receives a registered
359
- * `PostProcessShaderEntry` + the fullscreen BGL the dispatcher already
360
- * composed + the target color format, returns a built `RenderPipeline`
361
- * (RHI handle) or `null` (shader still compiling / build failed). The first
362
- * call per id triggers the async shader compile; subsequent calls hit the
363
- * RenderSystem-level cache and never reach this factory.
364
- *
365
- * Optional so test fixtures (createRenderSystem with a stub
366
- * RenderSystemInternals) need not provide a real factory; without it
367
- * `getPostProcessPipeline` resolves to `undefined` on the runtime surface
368
- * and the dispatcher falls through to its existing `null`-skip branch.
369
- */
370
- readonly buildPostProcessPipeline?: ((entry: PostProcessShaderEntry, bgl: BindGroupLayout, colorFormat: GPUTextureFormat, label: string) => RenderPipeline | null) | undefined;
371
- }
372
- export interface RenderFeatureGraphRuntimeState {
373
- contributions: readonly RenderFeatureGraphContribution<RenderFeaturePassContext>[];
374
- topologySignature: string | undefined;
375
- composition: RenderFeatureGraphComposition<RenderPipelineContext, RenderFeaturePassContext> | undefined;
376
- }
377
- export declare function getRenderFeatureGraphState(internals: RenderSystemInternals): RenderFeatureGraphRuntimeState;
378
- export declare function reportRenderFeatureGraphError(internals: RenderSystemInternals, error: RenderError): void;
379
- export interface PipelineState {
380
- readonly format: string;
381
- readonly colorAttachmentFormat: string;
382
- readonly viewBindGroupLayout: BindGroupLayout;
383
- readonly materialBindGroupLayout: BindGroupLayout;
384
- readonly meshBindGroupLayout: BindGroupLayout;
385
- readonly viewUniformBuffer: Buffer;
386
- readonly shadowCasterCascadeBuffer: Buffer;
387
- readonly materialUniformBuffer: {
388
- readonly buffer: Buffer;
389
- readonly sizeInBytes: number;
390
- };
391
- readonly meshStorageBuffer: {
392
- readonly buffer: Buffer;
393
- readonly sizeInBytes: number;
394
- };
395
- readonly pointLightsBuffer: Buffer;
396
- readonly spotLightsBuffer: Buffer;
397
- readonly instancesBindGroupLayout: BindGroupLayout;
398
- readonly identityInstanceBuffer: Buffer;
399
- readonly defaultSampler: Sampler;
400
- readonly nearestSampler: Sampler;
401
- readonly fallbackTextureView: TextureView;
402
- readonly unlitPipeline: RenderPipeline | null;
403
- readonly standardPipeline: RenderPipeline | null;
404
- /**
405
- * feat-20260604-learn-render-4.10-anti-aliasing-msaa M2 / w8: count=4
406
- * multisample variants of the 7 geometry pipelines that write the screen
407
- * or HDR colour target. A pipeline's `multisample.count` must match the
408
- * sampleCount of the colour attachment it writes (WebGPU validation),
409
- * so a count=4 pass cannot reuse a count=1 pipeline -- the record stage
410
- * picks the `*Msaa` variant when the active camera carries
411
- * `antialias === 'msaa'`. Post-process + shadow pipelines stay single-
412
- * sample (AC-06) and have no MSAA variant. `null` when the base pipeline
413
- * is null (empty-manifest path).
414
- */
415
- readonly unlitPipelineMsaa: RenderPipeline | null;
416
- readonly standardPipelineMsaa: RenderPipeline | null;
417
- readonly unlitPipelineHdrMsaa: RenderPipeline | null;
418
- readonly standardPipelineHdrMsaa: RenderPipeline | null;
419
- /**
420
- * feat-20260523-shader-template-instance-split M9-T03 (D-PipelineBuilder):
421
- * the shared 4-BindGroupLayout chain pipeline layout (`[view, material,
422
- * mesh-array, instances]`) -- same handle the standard / unlit / sprite
423
- * pipelines share. M9 exposes it on PipelineState so the per-MaterialShader
424
- * pipeline cache (`getMaterialShaderPipeline`) can reuse it at lazy build
425
- * time without re-running pbrLayouts construction (charter P4 consistent
426
- * abstraction). `null` when the manifest is empty (Camera-only / clear-
427
- * pass-only path; bug-20260519 D-3 nullable).
428
- */
429
- readonly pbrPipelineLayout: PipelineLayout | null;
430
- /**
431
- * feat-20260609-hdrp-cluster-fragment-ggx M4.5 / w36 (D-10 option A):
432
- * per-variant PipelineLayout for HDRP. Mirrors `pbrPipelineLayout` but
433
- * substitutes the HDRP unified 7-slot group(2) BGL
434
- * (`createHdrpBindGroupLayoutDescriptor`) for the 1-slot pbr-mesh-array
435
- * BGL. Built once at boot and reused for any HDRP variant PSO. `null`
436
- * when the manifest is empty (parallel to `pbrPipelineLayout`) or when
437
- * the boot-time createBindGroupLayout / createPipelineLayout fails (in
438
- * which case `selectPipelineLayoutForVariant` falls back to the URP
439
- * `pbrPipelineLayout` instead of hard-disabling the build path).
440
- */
441
- readonly hdrpPbrPipelineLayout: PipelineLayout | null;
442
- /** WebGPU storage-path producer for ordered HDRP cluster memberships. */
443
- readonly hdrpClusterMembershipPipeline: ComputePipeline | null;
444
- /** Compute bind-group layout paired with the membership producer pipeline. */
445
- readonly hdrpClusterMembershipBindGroupLayout: BindGroupLayout | null;
446
- /**
447
- * bug-20260611-skin-pipeline-layout: dedicated PipelineLayout for the
448
- * `forgeax::pbr-skin` material shader. Mirrors `pbrPipelineLayout` but
449
- * substitutes a 3-entry mesh-array BGL (binding 0 = meshes, bindings 1/2 =
450
- * current/previous palettes) for standard PBR's 1-entry mesh-array BGL. Built once at boot
451
- * by `buildPbrSkinLayouts` and selected by
452
- * `selectPipelineLayoutForVariant` when the caller passes
453
- * `LayoutKind = 'pbr-skin'`. `null` when manifest is empty or the skin
454
- * shader is not registered (storage-buffer cap gate / register failure);
455
- * `selectPipelineLayoutForVariant` returns `null` rather than silently
456
- * falling back to URP layout (charter P3 explicit failure, mirroring the
457
- * `hdrp-active-must-not-fallback-to-urp-pipeline` guard).
458
- */
459
- readonly pbrSkinPipelineLayout: PipelineLayout | null;
460
- /**
461
- * feat-20260611 R2 / M8 / w28 (IS-14): record-stage handle to the
462
- * 3-binding `pbr-skin-mesh-array-bgl` returned by `buildPbrSkinLayouts`
463
- * (binding 0 mesh-array UBO, bindings 1/2 current/previous palette UBOs;
464
- * all `hasDynamicOffset: true`). The record stage builds a BG against this
465
- * BGL for skin entries (`entry.source.skin !== undefined`) and binds it
466
- * at group(2) when the entry's pipeline layout is `pbr-skin-pl`. The
467
- * URP path keeps using `meshBindGroupLayout` (1-binding) at group(2),
468
- * so `pbr-mesh-array-bgl` is unchanged. Stays `null` when
469
- * `pbrSkinPipelineLayout` itself failed to build (charter P3 explicit
470
- * failure -- skin path is hard-disabled, mirroring the pipeline-layout
471
- * fallback in `selectPipelineLayoutForVariant`).
472
- */
473
- readonly pbrSkinMeshBindGroupLayout: BindGroupLayout | null;
474
- /**
475
- * feat-20260612-skin-palette-per-frame-upload M1 / m1-2: animator-ready
476
- * skin-palette storage allocator. Replaces the prior identity-buffer
477
- * stub (PR #353 / feat-20260611 R2 / M8 / w28 IS-14) -- a single 16320 B
478
- * identity-seeded UBO shared by every skin entry. The allocator owns the
479
- * lifecycle of the per-frame palette buffer (`createSkinPaletteAllocator`
480
- * from `./systems/skin-palette-allocator`); the record stage reads the
481
- * GPU buffer through `skinPaletteAllocator.buffer` and the extract stage
482
- * (M2) calls `allocateSlice` + `writeJointPalette` to land animated
483
- * palette data per skinned entity. Per plan-strategy D-1 candidate (b) the
484
- * allocator is the single authoritative carrier -- no parallel fallback
485
- * stub. `null` when `pbrSkinPipelineLayout` itself failed (skin path
486
- * hard-disabled, mirroring the prior stub field's gating).
487
- */
488
- readonly skinPaletteAllocator: SkinPaletteAllocator | null;
489
- readonly defaultWhiteTextureView: TextureView;
490
- readonly defaultNormalTextureView: TextureView;
491
- readonly unlitPipelineHdr: RenderPipeline | null;
492
- readonly standardPipelineHdr: RenderPipeline | null;
493
- /**
494
- * feat-20260520-directional-light-shadow-mapping M2 / w14 (D-1):
495
- * 1x1 depth32float fallback bound at viewBindGroup binding(3) when no
496
- * shadow RT exists (castShadow:false or allocation failed).
497
- * Cleared to 1.0 (far plane) so comparison-sampler always returns fully lit.
498
- */
499
- readonly shadowFallbackTextureView: TextureView;
500
- /**
501
- * feat-20260612-point-light-shadows-urp-hdrp Round-2 F-1: 1x1x6
502
- * depth32float `texture_depth_cube_array` (layers=1) fallback bound at
503
- * viewBindGroup binding(5) when no PointLightShadow snapshots are active
504
- * (zero-shadow scene = AC-09 zero allocation -- the real cube_array atlas
505
- * stays in `ShadowAtlas` and is only allocated when the extract stage
506
- * sees its first PointLightShadow). Cleared to 1.0 so the
507
- * comparison-sampler returns fully lit on the no-shadow path. The view
508
- * dimension is `cube-array` to satisfy the BGL `viewDimension:
509
- * 'cube-array'`; the underlying texture has 6 layers (one cube).
510
- */
511
- readonly shadowAtlasFallbackTextureView: TextureView;
512
- /**
513
- * feat-20260612-point-light-shadows-urp-hdrp Round-2 F-1: 64 B uniform
514
- * buffer carrying `array<vec4<f32>, 4>` -- one lane per shadow-casting
515
- * point light slot. Lane N stores `(near, far, 1/(far-near), 0)` for the
516
- * point light with `shadowAtlasLayer === N`. Lanes for non-shadow-casting
517
- * slots stay zeroed; the WGSL sample path is gated by
518
- * `PointLight.shadowAtlasLayer >= 0` so zeroed lanes are never read.
519
- * Bound at viewBindGroup binding(6); written per frame from the
520
- * `pointShadowSnapshots` array.
521
- */
522
- readonly shadowParamsBuffer: Buffer;
523
- readonly shadowProbePipeline: RenderPipeline | null;
524
- readonly shadowProbeBindGroupLayout: BindGroupLayout | null;
525
- readonly shadowProbeLsmUbo: Buffer | null;
526
- readonly shadowProbeInputBuf: Buffer | null;
527
- readonly shadowProbeOutputTex: any | null;
528
- readonly shadowProbeOutputView: TextureView | null;
529
- readonly shadowProbeStagingBuf: Buffer | null;
530
- /**
531
- * Fallback Skylight resource bundle (feat-20260520-skylight-ibl-cubemap
532
- * M2 round-2 / t40, plan-strategy D-5). 1x1 all-zero rgba16float
533
- * texture_cube * 2 (irradiance + prefilter) + 1x1 approximate rg16float
534
- * brdfLut + intensity=0 16 B uniform buffer + 7-entry BindGroup compose
535
- * the @group(4) skylight binding for the "no Skylight ECS entity"
536
- * branch. The M4 round-2 recordFrame branch binds `bindGroup` when
537
- * `skylightCount === 0` so `standardPipeline` / `standardPipelineHdr`
538
- * (which keep a 4-slot pipeline layout per D-5 round-4) dispatch with
539
- * ambient=0 -- physical convergence with D-4 (charter F1: AI users
540
- * writing demos do not need a "is there a skylight?" branch).
541
- *
542
- * D-5 round-4: the fallback bundle no longer carries a stand-alone
543
- * BindGroup. The PBR material BindGroupLayout now holds 14 entries
544
- * (material 0..6 + Skylight 7..13) and the per-frame material
545
- * BindGroup assembly site (render-system-record) merges Skylight
546
- * resources at binding 7..13 -- active when a Skylight component
547
- * exists, fallback identity when `skylightCount === 0`.
548
- *
549
- * bug-20260519 D-3 nullable extension: the empty-manifest path
550
- * (Camera-only / clear-pass-only) skips the entire PBR pipeline build
551
- * block; we still allocate the fallback bundle in the normal path,
552
- * but tests / OOS paths that mock the manifest empty land here with
553
- * `null` (charter P3 explicit failure: M4 record-stage gates on
554
- * `skylightFallback !== null` before binding fallback resources at
555
- * material BG entries 7..13).
556
- */
557
- readonly skylightFallback: any | null;
558
- /**
559
- * feat-20260529-rendergraph-pass-abstraction M3 / w11 (D-2 + Finding 3):
560
- * per-pass mutable texture cache slots extracted from the global
561
- * PipelineState. These fields are the lazily-allocated texture attachments
562
- * + pass-specific pipelines and bindgroups that belong to a single render
563
- * pass (depth / shadow / tonemap / FXAA). M4 render-graph resource
564
- * declarations will read these descriptors to derive transient/persistent
565
- * resources; shadow probe (OOS-4) stays on PipelineState directly.
566
- */
567
- readonly perPassResources: PerPassResources;
568
- }
569
- /**
570
- * Configure a canvas surface from the two PipelineState format fields, applying
571
- * the WebGL2-fallback gate: native WebGPU uses the storage format plus an sRGB
572
- * view format, while the wgpu WebGL2 surface uses its direct sRGB format and
573
- * COLOR_TARGET-only usage because its GLES surface rejects COPY_SRC. The
574
- * storage-buffer capability still controls TEXTURE_BINDING usage, but it does
575
- * not determine whether native WebGPU supports viewFormats. Single SSOT for
576
- * the configure descriptor consumed by both the
577
- * lazy first-frame path (ensureContextConfigured in createRenderer.ts) and the
578
- * F2 surface-outdated reconfigure-and-retry branch (render-system-record.ts) so
579
- * the two cannot drift (architecture-principles #1 SSOT). Returns the configure
580
- * Result; callers own the `state.perPassResources.configured` flag + the
581
- * `__forgeaxSwapChainFormat` probe write (those differ per call site).
582
- */
583
- export declare function configureSurface(context: RhiCanvasContext, device: RhiDevice, format: string, colorAttachmentFormat: string): Result<void, RhiError>;
584
- /**
585
- * feat-20260529-rendergraph-pass-abstraction M3 / w11 (D-2):
586
- * per-pass mutable resource slots extracted from PipelineState per
587
- * research Finding 3 fact-based grouping (depth / shadow / tonemap / fxaa).
588
- * These fields are the lazily-allocated texture caches + pass-specific
589
- * pipeline/bindgroup handles that belong to a single render pass.
590
- * Mutable (non-readonly) because the record stage writes back after
591
- * lazy-alloc on size drift.
121
+ * Package-private extension consumed by the built-in record closures only.
122
+ * Custom pipeline authors see the leaf RenderPipelineContext contract and
123
+ * never this surface.
592
124
  */
593
- export interface PerPassResources {
594
- /**
595
- * Per-frame depth attachment. Lazily allocated by
596
- * `ensureContextConfigured` and recreated whenever the canvas resizes
597
- * (see `ensureDepthTexture` in createRenderer.ts). Bound at the
598
- * `beginRenderPass.depthStencilAttachment` slot with `depthLoadOp:'clear'`
599
- * + `clearValue:1` so each frame starts with a far-plane depth buffer
600
- * and the back-face / inside-of-cube fragments are correctly occluded
601
- * (bug-20260519).
602
- *
603
- * `depthTextureView` is `null` until the canvas dimensions are known
604
- * (first draw); the record stage skips the frame and fires
605
- * `webgpu-runtime-error` if it stays null past configure.
606
- */
607
- depthTexture: any | null;
608
- depthTextureView: any | null;
609
- depthTextureWidth: number;
610
- depthTextureHeight: number;
611
- configured: boolean;
612
- /**
613
- * Lazy HDR colour + depth attachments for the opt-in tonemap path. Both
614
- * are `null` until the first frame whose active camera carries
615
- * `tonemap !== 'none'`; the record stage allocates them at the swap-chain
616
- * size and re-creates on resize (mirrors `depthTexture` / `depthTextureView`
617
- * idiom; AC-12).
618
- *
619
- * `hdrColor`'s format is `rgba16float` (AC-03(d)); the depth attachment is
620
- * the same `depth24plus-stencil8` format the geometry pipelines already declare
621
- * (`DEPTH_TEXTURE_FORMAT` SSOT in `createRenderer.ts`). When a camera
622
- * downgrades to `tonemap === 'none'` between frames the textures stay
623
- * allocated for cheap re-opt-in; full dispose happens via
624
- * `Renderer.dispose()` -> browser GC (matches the `depthTexture` fix-f6
625
- * placeholder).
626
- */
627
- hdrColorTexture: any | null;
628
- hdrColorView: any | null;
629
- hdrDepthTexture: any | null;
630
- hdrDepthView: any | null;
631
- hdrTextureWidth: number;
632
- hdrTextureHeight: number;
633
- /**
634
- * feat-20260604 M2 / w10: sampleCount the `hdrDepth` attachment was last
635
- * allocated at (1 or 4). The HDR colour target is always sampled
636
- * single-sample (`hdrColorView`); the depth pairs with the geometry colour
637
- * target's sampleCount, which flips with `antialias === 'msaa'`. Tracking it
638
- * lets the record stage reallocate depth when MSAA toggles between frames
639
- * (a stale count=4 depth under a count=1 pipeline fails WebGPU validation).
640
- */
641
- hdrDepthSampleCount: number;
642
- readonly fxaaPipeline: RenderPipeline | null;
643
- readonly fxaaBindGroupLayout: BindGroupLayout | null;
644
- readonly fxaaSampler: Sampler | null;
645
- /** Fixed two-attachment linear TAA resolve resources, owned by this renderer. */
646
- readonly taaResolvePipeline: RenderPipeline | null;
647
- readonly taaResolveBindGroupLayout: BindGroupLayout | null;
648
- readonly taaResolveSampler: Sampler | null;
649
- taaResolveParamsBuffer: Buffer | null;
650
- msaaColorTexture: any | null;
651
- msaaColorView: any | null;
652
- msaaSpriteColorTexture: any | null;
653
- msaaSpriteColorView: any | null;
654
- msaaDepthTexture: any | null;
655
- msaaDepthView: any | null;
656
- msaaTextureWidth: number;
657
- msaaTextureHeight: number;
658
- hdrColorMsaaTexture: any | null;
659
- hdrColorMsaaView: any | null;
660
- readonly skyboxPipeline: RenderPipeline | null;
661
- readonly skyboxPipelineMsaa: RenderPipeline | null;
662
- readonly skyboxBindGroupLayout: BindGroupLayout | null;
663
- readonly skyboxSampler: Sampler | null;
664
- /** Stable 16 B quaternion UBO updated by the skybox record pass. */
665
- readonly skyboxRotationBuffer: Buffer | null;
666
- /** Executable analytic-atmosphere producer and background resources. */
667
- readonly atmosphereCubemapPipeline?: RenderPipeline | null;
668
- readonly atmosphereCubemapBindGroupLayout?: BindGroupLayout | null;
669
- readonly atmosphereIrradiancePipeline?: RenderPipeline | null;
670
- readonly atmospherePrefilterPipeline?: RenderPipeline | null;
671
- readonly atmosphereIblParamsBindGroupLayout?: BindGroupLayout | null;
672
- readonly atmosphereIblSkyBindGroupLayout?: BindGroupLayout | null;
673
- readonly atmosphereBackgroundPipeline?: RenderPipeline | null;
674
- readonly atmosphereBackgroundBindGroupLayout?: BindGroupLayout | null;
675
- readonly atmosphereParamsBuffer?: Buffer | null;
676
- readonly atmosphereCubeVertexBuffer?: Buffer | null;
677
- shadowTexture: any | null;
678
- shadowMapSize: number;
679
- shadowCascadeCount: number;
680
- /** Exact dimensions of the compiled directional cascade atlas. */
681
- shadowAtlasWidth: number;
682
- shadowAtlasHeight: number;
683
- shadowSampler: any | null;
684
- /**
685
- * feat-20260520-directional-light-shadow-mapping M1c / w11 +
686
- * feat-20260613-csm-cascaded-shadow-maps M5 / w28:
687
- * latest cascade-0 lightViewProj mat4 (16 f32, col-major). Kept under
688
- * the legacy field name as an Inspector backward-compat surface
689
- * (`runtime.lights.directionalShadow.lightSpaceMatrix` JSON-RPC), per
690
- * AGENTS.md §Change stance exception for external-visible wire
691
- * protocols with known downstream consumers. Populated each frame
692
- * from `lights.lightViewProj[0]`. Null before the first extract with
693
- * an active shadow-casting DirectionalLight.
694
- */
695
- shadowLightSpaceMatrix: Float32Array | null;
696
- /**
697
- * feat-20260613-csm-cascaded-shadow-maps M5 / w28: full 4-cascade
698
- * lightViewProj concatenation (4 × 16 = 64 f32, col-major) consumed by
699
- * `debugSampleShadowFactor` so the probe can project against the selected
700
- * cascade. Null before the first extract
701
- * with an active shadow-casting DirectionalLight.
702
- */
703
- shadowCsmLightViewProj: Float32Array | null;
704
- /**
705
- * Producer-owned CSM receiver-selection facts. The debug probe must use the
706
- * same view-space depth + split-plane selector as the main receiver path;
707
- * keeping the two inputs together prevents a selector mirror from silently
708
- * drifting at cascade boundaries.
709
- */
710
- shadowCsmSelection: {
711
- readonly viewMatrix: Float32Array;
712
- readonly splitPlanes: Float32Array;
713
- readonly cascadeBlend: number;
714
- } | null;
715
- /** Producer-owned directional shadow comparison parameters for GPU probes. */
716
- shadowLightDirection: Float32Array | null;
717
- shadowDepthBias: number;
718
- shadowNormalBias: number;
719
- shadowPcfKernelSize: number;
720
- readonly bloomBrightPipeline: RenderPipeline | null;
721
- readonly bloomBlurHPipeline: RenderPipeline | null;
722
- readonly bloomBlurVPipeline: RenderPipeline | null;
723
- readonly bloomCompositePipeline: RenderPipeline | null;
724
- readonly bloomBrightBindGroupLayout: BindGroupLayout | null;
725
- readonly bloomBlurBindGroupLayout: BindGroupLayout | null;
726
- readonly bloomCompositeBindGroupLayout: BindGroupLayout | null;
727
- readonly bloomSampler: Sampler | null;
728
- readonly bloomBrightParamsBuffer: Buffer | null;
729
- readonly bloomBlurHParamsBuffer: Buffer | null;
730
- readonly bloomBlurVParamsBuffer: Buffer | null;
731
- readonly bloomCompositeParamsBuffer: Buffer | null;
732
- bloomBrightTexture: any | null;
733
- bloomBrightView: any | null;
734
- bloomBrightWidth: number;
735
- bloomBrightHeight: number;
736
- bloomBlurHTexture: any | null;
737
- bloomBlurHView: any | null;
738
- bloomBlurHWidth: number;
739
- bloomBlurHHeight: number;
740
- bloomBlurVTexture: any | null;
741
- bloomBlurVView: any | null;
742
- bloomBlurVWidth: number;
743
- bloomBlurVHeight: number;
744
- readonly ssaoCalcPipeline: RenderPipeline | null;
745
- readonly ssaoBlurPipeline: RenderPipeline | null;
746
- readonly ssaoBgl: BindGroupLayout | null;
747
- /** Filtering sampler shared by ssao_noise_sampler (binding 3) + ssaoSampler (binding 8). */
748
- ssaoFilteringSampler: Sampler | null;
749
- /** Non-filtering sampler dedicated to hdr_depth (binding 6); WebGPU validation. */
750
- ssaoDepthSampler: Sampler | null;
751
- /** 1x1 fallback view bound at ssaoRaw (binding 7) in the calc pass. */
752
- ssaoFallbackRawView: any | null;
753
- }
754
- export interface MeshGpuHandles {
755
- /**
756
- * Vertex buffer wrapped as a GpuBuffer (M-3 / w11). Consumers reach the
757
- * raw RHI Buffer via `.handle` for `setVertexBuffer` etc.; `.destroy()`
758
- * routes through the RHI shim's lifecycle SSOT (charter §F1 single-entry
759
- * indexability + plan-strategy D-9 wrapper migration).
760
- */
761
- readonly vertexBuffer: GpuBuffer;
762
- /**
763
- * Index buffer wrapper, or `null` for a vertex-only mesh (no
764
- * `MeshAsset.indices`). When `null` the record stage takes the non-indexed
765
- * `pass.draw(vertexCount)` path and never calls `setIndexBuffer`. Gated
766
- * on `indexed` below.
767
- */
768
- readonly indexBuffer: GpuBuffer | null;
769
- /** Allocation byte size of the vertex buffer (mirrors GPUBuffer.size). */
770
- readonly vboBytes: number;
771
- /** Allocation byte size of the index buffer, or 0 when `indexBuffer` is null. */
772
- readonly iboBytes: number;
773
- readonly indexCount: number;
774
- /**
775
- * Index buffer format inferred from the source `MeshAsset.indices` typed
776
- * array (`Uint16Array` -> `'uint16'`, `Uint32Array` -> `'uint32'`). The
777
- * record stage threads this into `pass.setIndexBuffer(..., format)` so
778
- * the GPU reads the correct stride per index. bug-20260519: the prior
779
- * hard-coded `'uint16'` corrupted procedural meshes whose factories
780
- * (`createBoxGeometry` etc) emit Uint32Array indices.
781
- */
782
- readonly indexFormat: 'uint16' | 'uint32';
783
- /** Geometry-owned immutable projection carried through every GPU consumer. */
784
- readonly layoutProjection: VertexLayoutProjection;
785
- /**
786
- * Vertex count is derived from the projection stride at upload time. The
787
- * non-indexed draw path passes this to `pass.draw(vertexCount)`.
788
- */
789
- readonly vertexCount: number;
790
- /**
791
- * True when the mesh carries an index buffer (`MeshAsset.indices` present).
792
- * `false` for vertex-only meshes. The record stage branches on this to pick
793
- * `drawIndexed` vs `draw` and to gate `setIndexBuffer`.
794
- */
795
- readonly indexed: boolean;
796
- /**
797
- * Primitive topology of this mesh (first submesh's topology, default
798
- * 'triangle-list'). WebGPU bakes topology into the immutable PSO, so the
799
- * record stage threads this into `getMaterialShaderPipeline` to select a
800
- * per-topology PSO (feat-20260604 M3 / w9).
801
- *
802
- * feat-20260608 M4 / w16: topology is per-submesh; this field reflects
803
- * `submeshes[0].topology` for backward compat. Use `submeshes` field for
804
- * per-submesh draw iteration.
805
- */
806
- readonly topology: PrimitiveTopology;
807
- /**
808
- * Submeshes from MeshAsset.submeshes, carried through from the GPU store
809
- * so the record stage can iterate per-submesh drawIndexed (feat-20260608 M4 / w16).
810
- */
811
- readonly submeshes: readonly import('@forgeax/engine-types').Submesh[];
812
- }
813
- export declare function createRenderSystem(internals: RenderSystemInternals): RenderSystem;
814
125
  //# sourceMappingURL=render-system.d.ts.map