@forgeax/engine-render 0.1.6 → 0.1.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +279 -2
- package/dist/.tsbuildinfo +1 -1
- package/dist/assembly/backend-contract.d.ts +12 -0
- package/dist/assembly/backend-contract.d.ts.map +1 -1
- package/dist/assembly/factory.d.ts +19 -2
- package/dist/assembly/factory.d.ts.map +1 -1
- package/dist/assembly/host-contract.d.ts +4 -0
- package/dist/assembly/host-contract.d.ts.map +1 -1
- package/dist/assembly/material/assembly.d.ts.map +1 -1
- package/dist/assembly/renderer-frame-transaction.d.ts +39 -0
- package/dist/assembly/renderer-frame-transaction.d.ts.map +1 -0
- package/dist/assembly/renderer-inspection.d.ts +22 -0
- package/dist/assembly/renderer-inspection.d.ts.map +1 -0
- package/dist/assembly/renderer-lifecycle.d.ts +4 -0
- package/dist/assembly/renderer-lifecycle.d.ts.map +1 -0
- package/dist/authoring.d.ts +1 -0
- package/dist/authoring.d.ts.map +1 -1
- package/dist/authoring.mjs +4 -2
- package/dist/authoring.mjs.map +1 -1
- package/dist/chunk-FJ6P52EE.mjs +46 -0
- package/dist/chunk-FJ6P52EE.mjs.map +1 -0
- package/dist/chunk-IPXCABEP.mjs +73 -0
- package/dist/chunk-IPXCABEP.mjs.map +1 -0
- package/dist/chunk-JDWARUOI.mjs +44 -0
- package/dist/chunk-JDWARUOI.mjs.map +1 -0
- package/dist/chunk-LOSO4CTV.mjs +901 -0
- package/dist/chunk-LOSO4CTV.mjs.map +1 -0
- package/dist/chunk-PCHBPYML.mjs +385 -0
- package/dist/chunk-PCHBPYML.mjs.map +1 -0
- package/dist/chunk-RJRUS55L.mjs +9323 -0
- package/dist/chunk-RJRUS55L.mjs.map +1 -0
- package/dist/{chunk-QC4VW3XJ.mjs → chunk-RXZ3RGOU.mjs} +4 -30
- package/dist/chunk-RXZ3RGOU.mjs.map +1 -0
- package/dist/{chunk-CQXZC5XI.mjs → chunk-VFPLTKCU.mjs} +79 -69
- package/dist/chunk-VFPLTKCU.mjs.map +1 -0
- package/dist/{chunk-SCRSAK5B.mjs → chunk-YTQ5C7YQ.mjs} +231 -127
- package/dist/chunk-YTQ5C7YQ.mjs.map +1 -0
- package/dist/components/atmosphere.d.ts +9 -0
- package/dist/components/atmosphere.d.ts.map +1 -0
- package/dist/components/camera.d.ts +2 -1
- package/dist/components/camera.d.ts.map +1 -1
- package/dist/components/fog.d.ts +8 -0
- package/dist/components/fog.d.ts.map +1 -0
- package/dist/components/index.d.ts +5 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/lines.d.ts +5 -0
- package/dist/components/lines.d.ts.map +1 -0
- package/dist/components/motion-blur.d.ts +7 -0
- package/dist/components/motion-blur.d.ts.map +1 -0
- package/dist/components/points.d.ts +15 -0
- package/dist/components/points.d.ts.map +1 -0
- package/dist/construct-renderer.d.ts +2 -2
- package/dist/construct-renderer.d.ts.map +1 -1
- package/dist/construct-renderer.mjs +11419 -16442
- package/dist/construct-renderer.mjs.map +1 -1
- package/dist/device/device-scope.d.ts +4 -0
- package/dist/device/device-scope.d.ts.map +1 -1
- package/dist/environment/frame.d.ts +60 -0
- package/dist/environment/frame.d.ts.map +1 -0
- package/dist/environment/generation.d.ts +21 -0
- package/dist/environment/generation.d.ts.map +1 -0
- package/dist/environment/graph.d.ts +4 -0
- package/dist/environment/graph.d.ts.map +1 -0
- package/dist/environment/inspection.d.ts +48 -0
- package/dist/environment/inspection.d.ts.map +1 -0
- package/dist/environment/lifecycle.d.ts +39 -0
- package/dist/environment/lifecycle.d.ts.map +1 -0
- package/dist/environment/signature.d.ts +25 -0
- package/dist/environment/signature.d.ts.map +1 -0
- package/dist/errors/render.d.ts +217 -1
- package/dist/errors/render.d.ts.map +1 -1
- package/dist/extract/camera.d.ts +5 -0
- package/dist/extract/camera.d.ts.map +1 -0
- package/dist/extract/environment.d.ts +74 -0
- package/dist/extract/environment.d.ts.map +1 -0
- package/dist/extract/visibility.d.ts +1 -1
- package/dist/extract/visibility.d.ts.map +1 -1
- package/dist/features/host.d.ts +9 -2
- package/dist/features/host.d.ts.map +1 -1
- package/dist/features/motion-blur/motion-blur-feature.d.ts +16 -0
- package/dist/features/motion-blur/motion-blur-feature.d.ts.map +1 -0
- package/dist/features/motion-blur/motion-blur-params.d.ts +25 -0
- package/dist/features/motion-blur/motion-blur-params.d.ts.map +1 -0
- package/dist/features/plan.d.ts +17 -2
- package/dist/features/plan.d.ts.map +1 -1
- package/dist/features/prepared-gpu-work.d.ts +3 -1
- package/dist/features/prepared-gpu-work.d.ts.map +1 -1
- package/dist/features/prepared-graphics.d.ts +2 -1
- package/dist/features/prepared-graphics.d.ts.map +1 -1
- package/dist/features/render-graph-raster.d.ts +7 -2
- package/dist/features/render-graph-raster.d.ts.map +1 -1
- package/dist/features/targets.d.ts +3 -0
- package/dist/features/targets.d.ts.map +1 -1
- package/dist/features/types.d.ts +12 -0
- package/dist/features/types.d.ts.map +1 -1
- package/dist/fullscreen-post-process-pass.d.ts +7 -1
- package/dist/fullscreen-post-process-pass.d.ts.map +1 -1
- package/dist/gpu-driven/production-raster.d.ts.map +1 -1
- package/dist/gpu-scene.d.ts +2 -0
- package/dist/gpu-scene.d.ts.map +1 -1
- package/dist/ibl/skylight-bind-group.d.ts +5 -6
- package/dist/ibl/skylight-bind-group.d.ts.map +1 -1
- package/dist/index.d.ts +21 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +8 -4
- package/dist/index.mjs.map +1 -1
- package/dist/inspection-types.d.ts +46 -1
- package/dist/inspection-types.d.ts.map +1 -1
- package/dist/internal.d.ts +2 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.mjs +2 -0
- package/dist/materials.d.ts +22 -0
- package/dist/materials.d.ts.map +1 -1
- package/dist/pbr-pipeline.d.ts +12 -6
- package/dist/pbr-pipeline.d.ts.map +1 -1
- package/dist/pipeline/standard-forward-lane.d.ts.map +1 -1
- package/dist/pipeline/standard-pipeline.d.ts +3 -0
- package/dist/pipeline/standard-pipeline.d.ts.map +1 -1
- package/dist/pipeline/standard-post.d.ts +48 -0
- package/dist/pipeline/standard-post.d.ts.map +1 -0
- package/dist/pipeline/standard-profile.d.ts +3 -6
- package/dist/pipeline/standard-profile.d.ts.map +1 -1
- package/dist/pipeline-builder.d.ts +18 -0
- package/dist/pipeline-builder.d.ts.map +1 -1
- package/dist/pipeline-spec.d.ts.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/points-lines/admission.d.ts +36 -0
- package/dist/points-lines/admission.d.ts.map +1 -0
- package/dist/points-lines/bounds.d.ts +8 -0
- package/dist/points-lines/bounds.d.ts.map +1 -0
- package/dist/points-lines/expansion-cache.d.ts +28 -0
- package/dist/points-lines/expansion-cache.d.ts.map +1 -0
- package/dist/points-lines/inspection.d.ts +53 -0
- package/dist/points-lines/inspection.d.ts.map +1 -0
- package/dist/points-lines/prepare.d.ts +67 -0
- package/dist/points-lines/prepare.d.ts.map +1 -0
- package/dist/points-lines/record.d.ts +60 -0
- package/dist/points-lines/record.d.ts.map +1 -0
- package/dist/points-lines/snapshot.d.ts +49 -0
- package/dist/points-lines/snapshot.d.ts.map +1 -0
- package/dist/record/frame-lighting.d.ts.map +1 -1
- package/dist/record/frame-snapshot.d.ts +100 -5
- package/dist/record/frame-snapshot.d.ts.map +1 -1
- package/dist/record/frame-targets.d.ts.map +1 -1
- package/dist/record/frame.d.ts +4 -2
- package/dist/record/frame.d.ts.map +1 -1
- package/dist/record/main-pass-geometry.d.ts +18 -0
- package/dist/record/main-pass-geometry.d.ts.map +1 -1
- package/dist/record/main-pass-material.d.ts +8 -5
- package/dist/record/main-pass-material.d.ts.map +1 -1
- package/dist/record/main-pass-sprite-draws.d.ts +8 -1
- package/dist/record/main-pass-sprite-draws.d.ts.map +1 -1
- package/dist/record/main-pass.d.ts +2 -0
- package/dist/record/main-pass.d.ts.map +1 -1
- package/dist/record/mesh-ssbo.d.ts.map +1 -1
- package/dist/record/render-context.d.ts +93 -18
- package/dist/record/render-context.d.ts.map +1 -1
- package/dist/record/shadow-pass.d.ts.map +1 -1
- package/dist/record/skybox-post-pass.d.ts +1 -11
- package/dist/record/skybox-post-pass.d.ts.map +1 -1
- package/dist/record/typed-frame-graph.d.ts +26 -2
- package/dist/record/typed-frame-graph.d.ts.map +1 -1
- package/dist/record/view-ubo.d.ts +10 -1
- package/dist/record/view-ubo.d.ts.map +1 -1
- package/dist/render-contract.d.ts +102 -10
- package/dist/render-contract.d.ts.map +1 -1
- package/dist/render-graph-primitives.d.ts.map +1 -1
- package/dist/render-pipeline.d.ts +50 -6
- package/dist/render-pipeline.d.ts.map +1 -1
- package/dist/render-system-extract.d.ts +32 -5
- package/dist/render-system-extract.d.ts.map +1 -1
- package/dist/render-system.d.ts +27 -5
- package/dist/render-system.d.ts.map +1 -1
- package/dist/scene/render-scene-types.d.ts +3 -0
- package/dist/scene/render-scene-types.d.ts.map +1 -1
- package/dist/scene/render-scene.d.ts +43 -2
- package/dist/scene/render-scene.d.ts.map +1 -1
- package/dist/temporal/coverage.d.ts +42 -0
- package/dist/temporal/coverage.d.ts.map +1 -0
- package/dist/temporal/frame-coordinator.d.ts +99 -0
- package/dist/temporal/frame-coordinator.d.ts.map +1 -0
- package/dist/temporal/gpu.d.ts +39 -0
- package/dist/temporal/gpu.d.ts.map +1 -0
- package/dist/temporal/history.d.ts +37 -0
- package/dist/temporal/history.d.ts.map +1 -0
- package/dist/temporal/index.d.ts +7 -0
- package/dist/temporal/index.d.ts.map +1 -0
- package/dist/temporal/index.mjs +8 -0
- package/dist/temporal/index.mjs.map +1 -0
- package/dist/temporal/inspection.d.ts +36 -0
- package/dist/temporal/inspection.d.ts.map +1 -0
- package/dist/temporal/scene-data-catalog.d.ts +48 -0
- package/dist/temporal/scene-data-catalog.d.ts.map +1 -0
- package/dist/temporal/scene-data.d.ts +43 -0
- package/dist/temporal/scene-data.d.ts.map +1 -0
- package/dist/temporal/standard-scene-data.d.ts +61 -0
- package/dist/temporal/standard-scene-data.d.ts.map +1 -0
- package/dist/temporal/taa-history-resources.d.ts +22 -0
- package/dist/temporal/taa-history-resources.d.ts.map +1 -0
- package/dist/temporal/taa-history-store.d.ts +27 -0
- package/dist/temporal/taa-history-store.d.ts.map +1 -0
- package/dist/temporal/taa-resolve.d.ts +15 -0
- package/dist/temporal/taa-resolve.d.ts.map +1 -0
- package/dist/temporal/temporal-view.d.ts +40 -0
- package/dist/temporal/temporal-view.d.ts.map +1 -0
- package/dist/temporal/transaction.d.ts +9 -0
- package/dist/temporal/transaction.d.ts.map +1 -0
- package/dist/temporal/view.d.ts +56 -0
- package/dist/temporal/view.d.ts.map +1 -0
- package/dist/transmission/backdrop.d.ts +147 -0
- package/dist/transmission/backdrop.d.ts.map +1 -0
- package/dist/transmission/inspection.d.ts +57 -0
- package/dist/transmission/inspection.d.ts.map +1 -0
- package/dist/transmission/oracle.d.ts +42 -0
- package/dist/transmission/oracle.d.ts.map +1 -0
- package/dist/transmission/projection.d.ts +37 -0
- package/dist/transmission/projection.d.ts.map +1 -0
- package/dist/typed-render-graph-primitives.d.ts +25 -2
- package/dist/typed-render-graph-primitives.d.ts.map +1 -1
- package/package.json +24 -19
- package/src/__tests__/ai-user-cold-start.integration.test.ts +59 -0
- package/src/__tests__/ai-user-public-surface.test-d.ts +45 -0
- package/src/__tests__/authoring-path.unit.test.ts +9 -0
- package/src/__tests__/bloom-exact-zero.unit.test.ts +202 -0
- package/src/__tests__/bloom-lifecycle.integration.test.ts +125 -0
- package/src/__tests__/construct-renderer-identity.unit.test.ts +4 -3
- package/src/__tests__/detached-inspection.integration.test.ts +177 -0
- package/src/__tests__/environment-fog-lanes.integration.test.ts +219 -0
- package/src/__tests__/environment-generation.integration.test.ts +141 -0
- package/src/__tests__/environment-selection.unit.test.ts +245 -0
- package/src/__tests__/factory-contract.integration.test.ts +1380 -9
- package/src/__tests__/frame-plan-contract.unit.test.ts +90 -0
- package/src/__tests__/fullscreen-feature-plan.unit.test.ts +7 -0
- package/src/__tests__/gpu-driven-indirect-raster-evidence.ts +12 -2
- package/src/__tests__/gpu-driven-production.integration.test.ts +74 -22
- package/src/__tests__/gpu-driven-view-graph.integration.test.ts +37 -0
- package/src/__tests__/gpu-scene.unit.test.ts +10 -0
- package/src/__tests__/injection-kind-owner.test-d.ts +2 -1
- package/src/__tests__/material-contract-inventory.unit.test.ts +62 -0
- package/src/__tests__/material-cooked-projection.unit.test.ts +18 -124
- package/src/__tests__/material-static-dynamic-route.unit.test.ts +28 -28
- package/src/__tests__/materials-transmission-validation.unit.test.ts +36 -0
- package/src/__tests__/morph-feature-plan.unit.test.ts +7 -0
- package/src/__tests__/motion-blur.pixel.integration.test.ts +121 -0
- package/src/__tests__/public-surface.test-d.ts +15 -1
- package/src/__tests__/render-error-code-owner.test-d.ts +15 -0
- package/src/__tests__/render-error-detail-ssot.test-d.ts +11 -2
- package/src/__tests__/render-error-exhaustive.test-d.ts +22 -0
- package/src/__tests__/render-feature-errors.unit.test.ts +33 -3
- package/src/__tests__/render-feature-gpu-work.integration.test.ts +44 -0
- package/src/__tests__/render-feature-plan.test-d.ts +22 -89
- package/src/__tests__/render-scene-projection.unit.test.ts +28 -0
- package/src/__tests__/render-temporal-environment-consumer.browser.test.ts +26 -0
- package/src/__tests__/render-temporal-environment-consumer.dawn.test.ts +21 -0
- package/src/__tests__/renderer-factory-material-contract.unit.test.ts +433 -1
- package/src/__tests__/renderer-frame-transaction.integration.test.ts +405 -0
- package/src/__tests__/renderer-lifecycle.integration.test.ts +22 -0
- package/src/__tests__/scene-data-catalog.unit.test.ts +59 -0
- package/src/__tests__/scene-data-consumer.integration.test.ts +67 -0
- package/src/__tests__/scene-data-contract.test-d.ts +35 -0
- package/src/__tests__/scene-data-inspection.unit.test.ts +41 -0
- package/src/__tests__/scene-data-public-surface.test-d.ts +34 -0
- package/src/__tests__/shader-manifest-fixture.ts +111 -0
- package/src/__tests__/skinned-shadow-caster.test.ts +102 -0
- package/src/__tests__/standard-clustered-pipeline.unit.test.ts +24 -3
- package/src/__tests__/standard-pipeline.dawn.test.ts +15 -0
- package/src/__tests__/standard-pipeline.integration.test.ts +543 -1
- package/src/__tests__/standard-profile-oracle.unit.test.ts +10 -2
- package/src/__tests__/standard-temporal-producer.integration.test.ts +35 -0
- package/src/__tests__/surface-configuration.unit.test.ts +211 -12
- package/src/__tests__/taa-transaction.integration.test.ts +30 -0
- package/src/__tests__/temporal-admission.integration.test.ts +40 -0
- package/src/__tests__/temporal-coverage.unit.test.ts +35 -0
- package/src/__tests__/temporal-demand.unit.test.ts +44 -0
- package/src/__tests__/temporal-frame-coordinator.unit.test.ts +64 -0
- package/src/__tests__/temporal-graph-topology.unit.test.ts +51 -0
- package/src/__tests__/temporal-history-lifecycle.unit.test.ts +170 -0
- package/src/__tests__/temporal-performance.integration.test.ts +615 -0
- package/src/__tests__/temporal-reset-matrix.unit.test.ts +97 -0
- package/src/__tests__/temporal-transaction.integration.test.ts +60 -0
- package/src/__tests__/temporal-view.unit.test.ts +152 -0
- package/src/__tests__/transmission-prewarm.unit.test.ts +93 -0
- package/src/__tests__/typed-pipeline-topology.unit.test.ts +230 -1
- package/src/__tests__/urp-pipeline-targets.unit.test.ts +25 -1
- package/src/__tests__/urp-pipeline.unit.test.ts +4 -3
- package/src/__tests__/visibility-extract.integration.test.ts +27 -1
- package/src/__tests__/visibility-producer-matrix.integration.test.ts +10 -0
- package/src/assembly/backend-contract.ts +47 -1
- package/src/assembly/factory.ts +1295 -507
- package/src/assembly/host-contract.ts +4 -0
- package/src/assembly/material/assembly.ts +2 -5
- package/src/assembly/renderer-frame-transaction.ts +75 -0
- package/src/assembly/renderer-inspection.ts +112 -0
- package/src/assembly/renderer-lifecycle.ts +6 -0
- package/src/authoring.ts +1 -0
- package/src/components/__tests__/motion-blur.unit.test.ts +14 -0
- package/src/components/__tests__/points-lines-admission.unit.test.ts +219 -0
- package/src/components/__tests__/points-lines-schema.unit.test.ts +56 -0
- package/src/components/__tests__/schema-contract.unit.test.ts +6 -1
- package/src/components/atmosphere.ts +10 -0
- package/src/components/camera.ts +2 -1
- package/src/components/fog.ts +9 -0
- package/src/components/index.ts +10 -0
- package/src/components/lines.ts +18 -0
- package/src/components/motion-blur.ts +8 -0
- package/src/components/points.ts +40 -0
- package/src/construct-renderer.ts +40 -3
- package/src/device/device-scope.ts +15 -1
- package/src/environment/frame.ts +185 -0
- package/src/environment/generation.ts +23 -0
- package/src/environment/graph.ts +9 -0
- package/src/environment/inspection.ts +87 -0
- package/src/environment/lifecycle.ts +250 -0
- package/src/environment/signature.ts +55 -0
- package/src/errors/render.ts +429 -1
- package/src/extract/camera.ts +78 -0
- package/src/extract/environment.ts +171 -0
- package/src/extract/visibility.ts +38 -19
- package/src/features/host.ts +36 -5
- package/src/features/motion-blur/__tests__/motion-blur-feature.unit.test.ts +67 -0
- package/src/features/motion-blur/__tests__/motion-blur-params.unit.test.ts +53 -0
- package/src/features/motion-blur/motion-blur-feature.ts +119 -0
- package/src/features/motion-blur/motion-blur-params.ts +89 -0
- package/src/features/plan.ts +32 -3
- package/src/features/prepared-gpu-work.ts +21 -6
- package/src/features/prepared-graphics.ts +2 -1
- package/src/features/render-graph-raster.ts +24 -4
- package/src/features/targets.ts +24 -2
- package/src/features/types.ts +13 -0
- package/src/fullscreen-post-process-pass.ts +34 -4
- package/src/gpu-driven/production-raster.ts +6 -1
- package/src/gpu-scene.ts +24 -0
- package/src/ibl/skylight-bind-group.ts +30 -38
- package/src/index.ts +83 -6
- package/src/inspection-types.ts +52 -0
- package/src/internal.ts +5 -0
- package/src/materials.ts +119 -24
- package/src/pbr-pipeline.ts +66 -20
- package/src/pipeline/standard-forward-lane.ts +158 -101
- package/src/pipeline/standard-pipeline.ts +156 -105
- package/src/pipeline/standard-post.ts +373 -0
- package/src/pipeline/standard-profile.ts +11 -11
- package/src/pipeline-builder.ts +102 -12
- package/src/pipeline-spec.ts +9 -0
- package/src/plugin.ts +6 -0
- package/src/points-lines/__tests__/bounds.unit.test.ts +21 -0
- package/src/points-lines/__tests__/cache-recovery.unit.test.ts +157 -0
- package/src/points-lines/__tests__/inspection-lanes.integration.test.ts +146 -0
- package/src/points-lines/__tests__/inspection.unit.test.ts +173 -0
- package/src/points-lines/__tests__/lane-structural.integration.test.ts +122 -0
- package/src/points-lines/__tests__/points-lines.bench.ts +400 -0
- package/src/points-lines/__tests__/raster-lane.integration.test.ts +44 -0
- package/src/points-lines/__tests__/snapshot.unit.test.ts +101 -0
- package/src/points-lines/__tests__/view-ubo.unit.test.ts +73 -0
- package/src/points-lines/admission.ts +238 -0
- package/src/points-lines/bounds.ts +23 -0
- package/src/points-lines/expansion-cache.ts +215 -0
- package/src/points-lines/inspection.ts +97 -0
- package/src/points-lines/prepare.ts +177 -0
- package/src/points-lines/record.ts +125 -0
- package/src/points-lines/snapshot.ts +130 -0
- package/src/record/__tests__/fullscreen-temporal-routing.unit.test.ts +25 -0
- package/src/record/__tests__/main-pass-geometry.unit.test.ts +47 -0
- package/src/record/__tests__/material-bg-cache.unit.test.ts +12 -1
- package/src/record/__tests__/material-pipeline-pending-cache.unit.test.ts +22 -0
- package/src/record/__tests__/sprite-material-abi.unit.test.ts +75 -0
- package/src/record/__tests__/standard-pbr-ubo-layout.unit.test.ts +67 -0
- package/src/record/__tests__/temporal-payload.unit.test.ts +164 -0
- package/src/record/__tests__/typed-frame-graph-plan.unit.test.ts +127 -0
- package/src/record/frame-lighting.ts +14 -2
- package/src/record/frame-snapshot.ts +129 -5
- package/src/record/frame-targets.ts +15 -6
- package/src/record/frame.ts +119 -4
- package/src/record/main-pass-geometry.ts +178 -40
- package/src/record/main-pass-material.ts +114 -66
- package/src/record/main-pass-sprite-draws.ts +79 -102
- package/src/record/main-pass.ts +83 -7
- package/src/record/mesh-ssbo.ts +22 -3
- package/src/record/render-context.ts +209 -23
- package/src/record/shadow-pass.ts +129 -28
- package/src/record/skybox-post-pass.ts +99 -42
- package/src/record/typed-frame-graph.ts +582 -42
- package/src/record/view-ubo.ts +99 -4
- package/src/render-contract.ts +121 -7
- package/src/render-graph-primitives.ts +18 -1
- package/src/render-pipeline.ts +100 -27
- package/src/render-system-extract.ts +264 -77
- package/src/render-system.ts +786 -43
- package/src/scene/render-scene-types.ts +3 -0
- package/src/scene/render-scene.ts +307 -9
- package/src/temporal/__tests__/taa-history-resources.unit.test.ts +45 -0
- package/src/temporal/coverage.ts +76 -0
- package/src/temporal/frame-coordinator.ts +311 -0
- package/src/temporal/gpu.ts +287 -0
- package/src/temporal/history.ts +92 -0
- package/src/temporal/index.ts +6 -0
- package/src/temporal/inspection.ts +97 -0
- package/src/temporal/scene-data-catalog.ts +200 -0
- package/src/temporal/scene-data.ts +149 -0
- package/src/temporal/standard-scene-data.ts +182 -0
- package/src/temporal/taa-history-resources.ts +128 -0
- package/src/temporal/taa-history-store.ts +79 -0
- package/src/temporal/taa-resolve.ts +34 -0
- package/src/temporal/temporal-view.ts +169 -0
- package/src/temporal/transaction.ts +17 -0
- package/src/temporal/view.ts +161 -0
- package/src/transmission/__tests__/capability.unit.test.ts +83 -0
- package/src/transmission/__tests__/composition.integration.test.ts +161 -0
- package/src/transmission/__tests__/inspection.unit.test.ts +241 -0
- package/src/transmission/__tests__/lifecycle.integration.test.ts +96 -0
- package/src/transmission/__tests__/oracle.unit.test.ts +131 -0
- package/src/transmission/__tests__/projection.unit.test.ts +71 -0
- package/src/transmission/__tests__/standard-transmission.dawn.test.ts +438 -0
- package/src/transmission/__tests__/transmission-backdrop-topology.unit.test.ts +109 -0
- package/src/transmission/__tests__/transmission-backdrop.dawn.test.ts +105 -0
- package/src/transmission/backdrop.ts +572 -0
- package/src/transmission/inspection.ts +190 -0
- package/src/transmission/oracle.ts +141 -0
- package/src/transmission/projection.ts +83 -0
- package/src/typed-render-graph-primitives.ts +162 -9
- package/dist/__tests__/authoring-path.unit.test.d.ts +0 -2
- package/dist/__tests__/authoring-path.unit.test.d.ts.map +0 -1
- package/dist/__tests__/backend-selection-rhi-capture.test-d.d.ts +0 -2
- package/dist/__tests__/backend-selection-rhi-capture.test-d.d.ts.map +0 -1
- package/dist/__tests__/callback-inference.test-d.d.ts +0 -2
- package/dist/__tests__/callback-inference.test-d.d.ts.map +0 -1
- package/dist/__tests__/cluster-binner.test.d.ts +0 -2
- package/dist/__tests__/cluster-binner.test.d.ts.map +0 -1
- package/dist/__tests__/cluster-grid-default-surface.unit.test.d.ts +0 -2
- package/dist/__tests__/cluster-grid-default-surface.unit.test.d.ts.map +0 -1
- package/dist/__tests__/construct-renderer-identity.unit.test.d.ts +0 -2
- package/dist/__tests__/construct-renderer-identity.unit.test.d.ts.map +0 -1
- package/dist/__tests__/device-scope-lifecycle.unit.test.d.ts +0 -2
- package/dist/__tests__/device-scope-lifecycle.unit.test.d.ts.map +0 -1
- package/dist/__tests__/device-scope-stale-matrix.unit.test.d.ts +0 -2
- package/dist/__tests__/device-scope-stale-matrix.unit.test.d.ts.map +0 -1
- package/dist/__tests__/direct-extract-consumer-contract.test-d.d.ts +0 -2
- package/dist/__tests__/direct-extract-consumer-contract.test-d.d.ts.map +0 -1
- package/dist/__tests__/direct-light-snapshot.unit.test.d.ts +0 -2
- package/dist/__tests__/direct-light-snapshot.unit.test.d.ts.map +0 -1
- package/dist/__tests__/factory-contract.integration.test.d.ts +0 -2
- package/dist/__tests__/factory-contract.integration.test.d.ts.map +0 -1
- package/dist/__tests__/fallback-row-stride-surface.unit.test.d.ts +0 -2
- package/dist/__tests__/fallback-row-stride-surface.unit.test.d.ts.map +0 -1
- package/dist/__tests__/frame-observation.contract.test.d.ts +0 -2
- package/dist/__tests__/frame-observation.contract.test.d.ts.map +0 -1
- package/dist/__tests__/fullscreen-feature-plan.unit.test.d.ts +0 -2
- package/dist/__tests__/fullscreen-feature-plan.unit.test.d.ts.map +0 -1
- package/dist/__tests__/glyph-text-layout-recovery.unit.test.d.ts +0 -2
- package/dist/__tests__/glyph-text-layout-recovery.unit.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-driven-indirect-raster-evidence.d.ts +0 -6
- package/dist/__tests__/gpu-driven-indirect-raster-evidence.d.ts.map +0 -1
- package/dist/__tests__/gpu-driven-indirect-raster.browser.test.d.ts +0 -2
- package/dist/__tests__/gpu-driven-indirect-raster.browser.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-driven-indirect-raster.dawn.test.d.ts +0 -2
- package/dist/__tests__/gpu-driven-indirect-raster.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-driven-production.integration.test.d.ts +0 -2
- package/dist/__tests__/gpu-driven-production.integration.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-driven-scaling.unit.test.d.ts +0 -2
- package/dist/__tests__/gpu-driven-scaling.unit.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-driven-view-gpu-evidence.d.ts +0 -18
- package/dist/__tests__/gpu-driven-view-gpu-evidence.d.ts.map +0 -1
- package/dist/__tests__/gpu-driven-view-graph.integration.test.d.ts +0 -2
- package/dist/__tests__/gpu-driven-view-graph.integration.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-driven-view-reference.d.ts +0 -15
- package/dist/__tests__/gpu-driven-view-reference.d.ts.map +0 -1
- package/dist/__tests__/gpu-driven-view.browser.test.d.ts +0 -2
- package/dist/__tests__/gpu-driven-view.browser.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-driven-view.dawn.test.d.ts +0 -2
- package/dist/__tests__/gpu-driven-view.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-driven-view.unit.test.d.ts +0 -2
- package/dist/__tests__/gpu-driven-view.unit.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-resource-store-stride.unit.test.d.ts +0 -2
- package/dist/__tests__/gpu-resource-store-stride.unit.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-scene-render-graph-gpu.d.ts +0 -7
- package/dist/__tests__/gpu-scene-render-graph-gpu.d.ts.map +0 -1
- package/dist/__tests__/gpu-scene-render-graph.browser.test.d.ts +0 -2
- package/dist/__tests__/gpu-scene-render-graph.browser.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-scene-render-graph.dawn.test.d.ts +0 -2
- package/dist/__tests__/gpu-scene-render-graph.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-scene-schema.unit.test.d.ts +0 -2
- package/dist/__tests__/gpu-scene-schema.unit.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-scene.dawn.test.d.ts +0 -2
- package/dist/__tests__/gpu-scene.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-scene.unit.test.d.ts +0 -2
- package/dist/__tests__/gpu-scene.unit.test.d.ts.map +0 -1
- package/dist/__tests__/ibl/face-uniforms.unit.test.d.ts +0 -2
- package/dist/__tests__/ibl/face-uniforms.unit.test.d.ts.map +0 -1
- package/dist/__tests__/infinite-grid-no-vertex-probe.unit.test.d.ts +0 -2
- package/dist/__tests__/infinite-grid-no-vertex-probe.unit.test.d.ts.map +0 -1
- package/dist/__tests__/injection-kind-owner.test-d.d.ts +0 -2
- package/dist/__tests__/injection-kind-owner.test-d.d.ts.map +0 -1
- package/dist/__tests__/ktx2-basis-gpu-consumer.dawn.test.d.ts +0 -2
- package/dist/__tests__/ktx2-basis-gpu-consumer.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/light-buffer-layout.unit.test.d.ts +0 -2
- package/dist/__tests__/light-buffer-layout.unit.test.d.ts.map +0 -1
- package/dist/__tests__/material-contract-inventory.unit.test.d.ts +0 -2
- package/dist/__tests__/material-contract-inventory.unit.test.d.ts.map +0 -1
- package/dist/__tests__/material-cooked-projection.unit.test.d.ts +0 -2
- package/dist/__tests__/material-cooked-projection.unit.test.d.ts.map +0 -1
- package/dist/__tests__/material-snapshot-mutation.integration.test.d.ts +0 -2
- package/dist/__tests__/material-snapshot-mutation.integration.test.d.ts.map +0 -1
- package/dist/__tests__/material-static-dynamic-route.unit.test.d.ts +0 -2
- package/dist/__tests__/material-static-dynamic-route.unit.test.d.ts.map +0 -1
- package/dist/__tests__/material-stride-surface.unit.test.d.ts +0 -2
- package/dist/__tests__/material-stride-surface.unit.test.d.ts.map +0 -1
- package/dist/__tests__/mesh-buffer-usage-surface.unit.test.d.ts +0 -2
- package/dist/__tests__/mesh-buffer-usage-surface.unit.test.d.ts.map +0 -1
- package/dist/__tests__/mesh-material-bindings.unit.test.d.ts +0 -2
- package/dist/__tests__/mesh-material-bindings.unit.test.d.ts.map +0 -1
- package/dist/__tests__/mesh-stride-surface.unit.test.d.ts +0 -2
- package/dist/__tests__/mesh-stride-surface.unit.test.d.ts.map +0 -1
- package/dist/__tests__/morph-culling-reentry.dawn.test.d.ts +0 -2
- package/dist/__tests__/morph-culling-reentry.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/morph-feature-gpu-work.integration.test.d.ts +0 -2
- package/dist/__tests__/morph-feature-gpu-work.integration.test.d.ts.map +0 -1
- package/dist/__tests__/morph-feature-plan.unit.test.d.ts +0 -2
- package/dist/__tests__/morph-feature-plan.unit.test.d.ts.map +0 -1
- package/dist/__tests__/morph-visual-evidence.integration.test.d.ts +0 -2
- package/dist/__tests__/morph-visual-evidence.integration.test.d.ts.map +0 -1
- package/dist/__tests__/nineslice-handle-surface.unit.test.d.ts +0 -2
- package/dist/__tests__/nineslice-handle-surface.unit.test.d.ts.map +0 -1
- package/dist/__tests__/post-process-error-policy-owner.unit.test.d.ts +0 -2
- package/dist/__tests__/post-process-error-policy-owner.unit.test.d.ts.map +0 -1
- package/dist/__tests__/prepared-buffer-kind-owner.test-d.d.ts +0 -2
- package/dist/__tests__/prepared-buffer-kind-owner.test-d.d.ts.map +0 -1
- package/dist/__tests__/prepared-graphics-capability.unit.test.d.ts +0 -2
- package/dist/__tests__/prepared-graphics-capability.unit.test.d.ts.map +0 -1
- package/dist/__tests__/prepared-graphics-generation.unit.test.d.ts +0 -2
- package/dist/__tests__/prepared-graphics-generation.unit.test.d.ts.map +0 -1
- package/dist/__tests__/prepared-graphics-lifecycle.unit.test.d.ts +0 -2
- package/dist/__tests__/prepared-graphics-lifecycle.unit.test.d.ts.map +0 -1
- package/dist/__tests__/prepared-graphics-pipeline-warmup.unit.test.d.ts +0 -2
- package/dist/__tests__/prepared-graphics-pipeline-warmup.unit.test.d.ts.map +0 -1
- package/dist/__tests__/prepared-graphics-resolver.unit.test.d.ts +0 -2
- package/dist/__tests__/prepared-graphics-resolver.unit.test.d.ts.map +0 -1
- package/dist/__tests__/prepared-graphics-snapshot.unit.test.d.ts +0 -2
- package/dist/__tests__/prepared-graphics-snapshot.unit.test.d.ts.map +0 -1
- package/dist/__tests__/prepared-graphics-store.unit.test.d.ts +0 -2
- package/dist/__tests__/prepared-graphics-store.unit.test.d.ts.map +0 -1
- package/dist/__tests__/prepared-graphics-validation.unit.test.d.ts +0 -2
- package/dist/__tests__/prepared-graphics-validation.unit.test.d.ts.map +0 -1
- package/dist/__tests__/profiler-default-off.test.d.ts +0 -2
- package/dist/__tests__/profiler-default-off.test.d.ts.map +0 -1
- package/dist/__tests__/profiler-phase-catalog.test.d.ts +0 -2
- package/dist/__tests__/profiler-phase-catalog.test.d.ts.map +0 -1
- package/dist/__tests__/profiler-phase-integration.test.d.ts +0 -2
- package/dist/__tests__/profiler-phase-integration.test.d.ts.map +0 -1
- package/dist/__tests__/profiler-phase-token.test.d.ts +0 -2
- package/dist/__tests__/profiler-phase-token.test.d.ts.map +0 -1
- package/dist/__tests__/public-surface.test-d.d.ts +0 -2
- package/dist/__tests__/public-surface.test-d.d.ts.map +0 -1
- package/dist/__tests__/recover-error-policy-owner.unit.test.d.ts +0 -2
- package/dist/__tests__/recover-error-policy-owner.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-error-code-owner.test-d.d.ts +0 -2
- package/dist/__tests__/render-error-code-owner.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-error-detail-ssot.test-d.d.ts +0 -2
- package/dist/__tests__/render-error-detail-ssot.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-error-exhaustive.test-d.d.ts +0 -2
- package/dist/__tests__/render-error-exhaustive.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-assembly.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-assembly.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-context.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-context.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-contract.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-contract.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-diagnostics.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-diagnostics.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-docs.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-docs.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-errors.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-errors.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-gpu-work.integration.test.d.ts +0 -2
- package/dist/__tests__/render-feature-gpu-work.integration.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-plan.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-plan.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-plan.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-plan.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-prepared-diagnostics.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-prepared-diagnostics.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-prepared-errors.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-prepared-errors.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-prepared-graphics-docs.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-prepared-graphics-docs.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-prepared-graphics-isolation.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-prepared-graphics-isolation.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-prepared-graphics-negative.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-prepared-graphics-negative.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-prepared-graphics.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-prepared-graphics.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-prepared-graphics.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-prepared-graphics.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-public-surface.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-public-surface.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-retry.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-retry.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-scheduling.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-scheduling.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-stage-failed-policy-owner.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-stage-failed-policy-owner.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-stage-fault-recovery.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-stage-fault-recovery.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-visibility-context.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-visibility-context.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-visibility-context.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-visibility-context.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-zero-work.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-zero-work.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-graph-compute-raster-gpu.d.ts +0 -7
- package/dist/__tests__/render-graph-compute-raster-gpu.d.ts.map +0 -1
- package/dist/__tests__/render-graph-compute-raster.browser.test.d.ts +0 -2
- package/dist/__tests__/render-graph-compute-raster.browser.test.d.ts.map +0 -1
- package/dist/__tests__/render-graph-compute-raster.dawn.test.d.ts +0 -2
- package/dist/__tests__/render-graph-compute-raster.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/render-graph-hzb-gpu.d.ts +0 -7
- package/dist/__tests__/render-graph-hzb-gpu.d.ts.map +0 -1
- package/dist/__tests__/render-graph-hzb.browser.test.d.ts +0 -2
- package/dist/__tests__/render-graph-hzb.browser.test.d.ts.map +0 -1
- package/dist/__tests__/render-graph-hzb.dawn.test.d.ts +0 -2
- package/dist/__tests__/render-graph-hzb.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/render-graph-primitives.unit.test.d.ts +0 -2
- package/dist/__tests__/render-graph-primitives.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-graph-storage-indirect-gpu.d.ts +0 -12
- package/dist/__tests__/render-graph-storage-indirect-gpu.d.ts.map +0 -1
- package/dist/__tests__/render-graph-storage-indirect.browser.test.d.ts +0 -2
- package/dist/__tests__/render-graph-storage-indirect.browser.test.d.ts.map +0 -1
- package/dist/__tests__/render-graph-storage-indirect.dawn.test.d.ts +0 -2
- package/dist/__tests__/render-graph-storage-indirect.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/render-scene-projection.unit.test.d.ts +0 -2
- package/dist/__tests__/render-scene-projection.unit.test.d.ts.map +0 -1
- package/dist/__tests__/renderer-factory-material-contract.unit.test.d.ts +0 -2
- package/dist/__tests__/renderer-factory-material-contract.unit.test.d.ts.map +0 -1
- package/dist/__tests__/renderer-lifecycle.integration.test.d.ts +0 -2
- package/dist/__tests__/renderer-lifecycle.integration.test.d.ts.map +0 -1
- package/dist/__tests__/rhi-backend-package-boundary.unit.test.d.ts +0 -2
- package/dist/__tests__/rhi-backend-package-boundary.unit.test.d.ts.map +0 -1
- package/dist/__tests__/scriptable-pack-consumer.test-d.d.ts +0 -2
- package/dist/__tests__/scriptable-pack-consumer.test-d.d.ts.map +0 -1
- package/dist/__tests__/shader-stage-surface.unit.test.d.ts +0 -2
- package/dist/__tests__/shader-stage-surface.unit.test.d.ts.map +0 -1
- package/dist/__tests__/ssao-config.unit.test.d.ts +0 -2
- package/dist/__tests__/ssao-config.unit.test.d.ts.map +0 -1
- package/dist/__tests__/ssao-kernel-surface.unit.test.d.ts +0 -2
- package/dist/__tests__/ssao-kernel-surface.unit.test.d.ts.map +0 -1
- package/dist/__tests__/standard-clustered-pipeline.unit.test.d.ts +0 -2
- package/dist/__tests__/standard-clustered-pipeline.unit.test.d.ts.map +0 -1
- package/dist/__tests__/standard-descriptors.test-d.d.ts +0 -2
- package/dist/__tests__/standard-descriptors.test-d.d.ts.map +0 -1
- package/dist/__tests__/standard-pipeline.dawn.test.d.ts +0 -2
- package/dist/__tests__/standard-pipeline.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/standard-pipeline.integration.test.d.ts +0 -2
- package/dist/__tests__/standard-pipeline.integration.test.d.ts.map +0 -1
- package/dist/__tests__/standard-profile-oracle.unit.test.d.ts +0 -2
- package/dist/__tests__/standard-profile-oracle.unit.test.d.ts.map +0 -1
- package/dist/__tests__/surface-configuration.unit.test.d.ts +0 -2
- package/dist/__tests__/surface-configuration.unit.test.d.ts.map +0 -1
- package/dist/__tests__/texture-usage-surface.unit.test.d.ts +0 -2
- package/dist/__tests__/texture-usage-surface.unit.test.d.ts.map +0 -1
- package/dist/__tests__/typed-pipeline-topology.unit.test.d.ts +0 -2
- package/dist/__tests__/typed-pipeline-topology.unit.test.d.ts.map +0 -1
- package/dist/__tests__/urp-pipeline-targets.unit.test.d.ts +0 -2
- package/dist/__tests__/urp-pipeline-targets.unit.test.d.ts.map +0 -1
- package/dist/__tests__/urp-pipeline.unit.test.d.ts +0 -2
- package/dist/__tests__/urp-pipeline.unit.test.d.ts.map +0 -1
- package/dist/__tests__/vertex-color-pipeline.unit.test.d.ts +0 -2
- package/dist/__tests__/vertex-color-pipeline.unit.test.d.ts.map +0 -1
- package/dist/__tests__/vertex-layout-consumer.unit.test.d.ts +0 -2
- package/dist/__tests__/vertex-layout-consumer.unit.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-diagnostics.integration.test.d.ts +0 -2
- package/dist/__tests__/visibility-diagnostics.integration.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-extract.integration.test.d.ts +0 -2
- package/dist/__tests__/visibility-extract.integration.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-extract.perf.test.d.ts +0 -2
- package/dist/__tests__/visibility-extract.perf.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-feature-dedup.integration.test.d.ts +0 -2
- package/dist/__tests__/visibility-feature-dedup.integration.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-hidden-report.unit.test.d.ts +0 -2
- package/dist/__tests__/visibility-hidden-report.unit.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-instances.integration.test.d.ts +0 -2
- package/dist/__tests__/visibility-instances.integration.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-multi-world.integration.test.d.ts +0 -2
- package/dist/__tests__/visibility-multi-world.integration.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-producer-matrix.integration.test.d.ts +0 -2
- package/dist/__tests__/visibility-producer-matrix.integration.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-producer-matrix.unit.test.d.ts +0 -2
- package/dist/__tests__/visibility-producer-matrix.unit.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-public-surface.test-d.d.ts +0 -2
- package/dist/__tests__/visibility-public-surface.test-d.d.ts.map +0 -1
- package/dist/__tests__/visibility-resolver.unit.test.d.ts +0 -2
- package/dist/__tests__/visibility-resolver.unit.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-resource-short-circuit.unit.test.d.ts +0 -2
- package/dist/__tests__/visibility-resource-short-circuit.unit.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-snapshot-contract.unit.test.d.ts +0 -2
- package/dist/__tests__/visibility-snapshot-contract.unit.test.d.ts.map +0 -1
- package/dist/__tests__/vocabulary.unit.test.d.ts +0 -2
- package/dist/__tests__/vocabulary.unit.test.d.ts.map +0 -1
- package/dist/chunk-CQXZC5XI.mjs.map +0 -1
- package/dist/chunk-QC4VW3XJ.mjs.map +0 -1
- package/dist/chunk-SCRSAK5B.mjs.map +0 -1
- package/dist/components/__tests__/schema-contract.unit.test.d.ts +0 -2
- package/dist/components/__tests__/schema-contract.unit.test.d.ts.map +0 -1
- package/dist/components/__tests__/schema-parity.unit.test.d.ts +0 -2
- package/dist/components/__tests__/schema-parity.unit.test.d.ts.map +0 -1
- package/dist/components/__tests__/visibility-schema.unit.test.d.ts +0 -2
- package/dist/components/__tests__/visibility-schema.unit.test.d.ts.map +0 -1
- package/dist/record/__tests__/material-bg-cache.unit.test.d.ts +0 -2
- package/dist/record/__tests__/material-bg-cache.unit.test.d.ts.map +0 -1
- package/dist/record/__tests__/material-slot-plan.unit.test.d.ts +0 -2
- package/dist/record/__tests__/material-slot-plan.unit.test.d.ts.map +0 -1
- package/dist/record/__tests__/typed-frame-graph-plan.unit.test.d.ts +0 -2
- package/dist/record/__tests__/typed-frame-graph-plan.unit.test.d.ts.map +0 -1
- package/dist/record/__tests__/video-texture-view.unit.test.d.ts +0 -2
- package/dist/record/__tests__/video-texture-view.unit.test.d.ts.map +0 -1
package/src/record/main-pass.ts
CHANGED
|
@@ -10,6 +10,7 @@ import type { Handle, PassKind, PassSelector } from '@forgeax/engine-types';
|
|
|
10
10
|
import { createHdrpUnifiedBindGroup, getOrCreateHdrpBuffers } from '../hdrp-buffers';
|
|
11
11
|
import { getOrCreateIblCache } from '../ibl/IblPipelineCache';
|
|
12
12
|
import { buildBeginRenderPassDescriptor } from '../pipeline-spec';
|
|
13
|
+
import { POINTS_LINES_MATERIAL_SHADER_ID } from '../points-lines/record';
|
|
13
14
|
import type { RenderRecordPhase } from '../render-contract';
|
|
14
15
|
import type { MaterialSnapshot } from '../render-system-extract';
|
|
15
16
|
import { recordGeometryDraws } from './main-pass-geometry';
|
|
@@ -38,8 +39,57 @@ export type MainPassOptions = {
|
|
|
38
39
|
readonly depthView?: TextureView | null;
|
|
39
40
|
readonly passKind?: PassKind;
|
|
40
41
|
readonly clearColor?: readonly [number, number, number, number];
|
|
42
|
+
readonly recordMode?: 'opaque' | 'transmission' | 'transparent';
|
|
43
|
+
readonly transmissionBackdropView?: TextureView | null;
|
|
41
44
|
};
|
|
42
45
|
|
|
46
|
+
const TRANSMISSION_VARIANT_SET = 'TRANSMISSION_AVAILABLE=true';
|
|
47
|
+
|
|
48
|
+
function isTransmissionMaterial(material: MaterialSnapshot): boolean {
|
|
49
|
+
return (
|
|
50
|
+
material.materialShaderId === 'forgeax::default-standard-pbr' &&
|
|
51
|
+
typeof material.paramSnapshot?.transmission === 'number' &&
|
|
52
|
+
material.paramSnapshot.transmission > 0
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function matchesRecordMode(
|
|
57
|
+
material: MaterialSnapshot,
|
|
58
|
+
mode: 'opaque' | 'transmission' | 'transparent',
|
|
59
|
+
): boolean {
|
|
60
|
+
const transmission = isTransmissionMaterial(material);
|
|
61
|
+
if (mode === 'transmission') return transmission;
|
|
62
|
+
if (mode === 'transparent') return material.transparent === true && !transmission;
|
|
63
|
+
return !transmission && material.transparent !== true;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function matchedMaterialsForRecordMode(
|
|
67
|
+
c: _InternalRenderPipelineContext,
|
|
68
|
+
matchedMaterials: ReadonlyMap<number, ReadonlySet<number>> | null,
|
|
69
|
+
mode: 'opaque' | 'transmission' | 'transparent' | undefined,
|
|
70
|
+
): ReadonlyMap<number, ReadonlySet<number>> | null {
|
|
71
|
+
if (mode === undefined) return matchedMaterials;
|
|
72
|
+
const filtered = new Map<number, ReadonlySet<number>>();
|
|
73
|
+
for (const entry of c.validatedOrdered) {
|
|
74
|
+
const dispatchHandles = matchedMaterials?.get(entry.renderableIndex);
|
|
75
|
+
if (matchedMaterials !== null && dispatchHandles === undefined) continue;
|
|
76
|
+
const candidateHandles =
|
|
77
|
+
dispatchHandles ??
|
|
78
|
+
(mode === 'transmission'
|
|
79
|
+
? []
|
|
80
|
+
: entry.source.materials.map((material) => material.materialHandle ?? 0));
|
|
81
|
+
const handles = new Set<number>();
|
|
82
|
+
for (const handle of candidateHandles) {
|
|
83
|
+
const material =
|
|
84
|
+
entry.source.materials.find((candidate) => (candidate.materialHandle ?? 0) === handle) ??
|
|
85
|
+
entry.source.material;
|
|
86
|
+
if (matchesRecordMode(material, mode)) handles.add(handle);
|
|
87
|
+
}
|
|
88
|
+
if (handles.size > 0) filtered.set(entry.renderableIndex, handles);
|
|
89
|
+
}
|
|
90
|
+
return filtered;
|
|
91
|
+
}
|
|
92
|
+
|
|
43
93
|
/**
|
|
44
94
|
* feat-20260529-rendergraph-pass-abstraction M4 / w13b: main forward
|
|
45
95
|
* (geometry) pass recording, extracted verbatim from recordFrame. Uses the
|
|
@@ -86,9 +136,20 @@ export function recordMainPass(
|
|
|
86
136
|
// msaaActive boolean (already on the context).
|
|
87
137
|
const sampleCount = msaaActive ? 4 : 1;
|
|
88
138
|
const passKind = options?.passKind ?? 'forward';
|
|
139
|
+
const recordMode = options?.recordMode;
|
|
140
|
+
const transmissionBackdropView = options?.transmissionBackdropView;
|
|
141
|
+
if (recordMode === 'transmission' && transmissionBackdropView == null) {
|
|
142
|
+
throw new RhiError({
|
|
143
|
+
code: 'webgpu-runtime-error',
|
|
144
|
+
expected: 'transmissionBackdropView != null for transmission record mode',
|
|
145
|
+
hint: 'the typed Standard transmission pass must resolve its private backdrop view',
|
|
146
|
+
});
|
|
147
|
+
}
|
|
89
148
|
const colorViews = options?.colorViews ?? [geometryColorView];
|
|
90
149
|
const colorFormats = options?.colorFormats ?? [
|
|
91
|
-
(c.tonemapActive
|
|
150
|
+
(c.tonemapActive || c.transparentColorFormat === 'rgba16float'
|
|
151
|
+
? 'rgba16float'
|
|
152
|
+
: pipelineState.colorAttachmentFormat) as GPUTextureFormat,
|
|
92
153
|
];
|
|
93
154
|
const targetDepthView = options?.depthView ?? geometryDepthView;
|
|
94
155
|
const clearColor = options?.clearColor ?? clear;
|
|
@@ -197,8 +258,20 @@ export function recordMainPass(
|
|
|
197
258
|
// feat-20260609 M2: filter entities by pass selector.
|
|
198
259
|
const matchedIndices =
|
|
199
260
|
selector !== undefined ? buildMatchedRenderableIndices(dispatch, selector) : null;
|
|
200
|
-
const
|
|
261
|
+
const selectorMatchedMaterials =
|
|
201
262
|
selector !== undefined ? buildMatchedMaterialHandlesByRenderable(dispatch, selector) : null;
|
|
263
|
+
const matchedMaterials = matchedMaterialsForRecordMode(c, selectorMatchedMaterials, recordMode);
|
|
264
|
+
const recordContext =
|
|
265
|
+
recordMode === undefined
|
|
266
|
+
? c
|
|
267
|
+
: {
|
|
268
|
+
...c,
|
|
269
|
+
splitLdrSprite: recordMode === 'transparent' ? false : c.splitLdrSprite,
|
|
270
|
+
validatedOrdered: c.validatedOrdered.map((entry) => ({
|
|
271
|
+
...entry,
|
|
272
|
+
...(recordMode === 'transmission' ? { variantSet: TRANSMISSION_VARIANT_SET } : {}),
|
|
273
|
+
})),
|
|
274
|
+
};
|
|
202
275
|
|
|
203
276
|
if (validatedOrdered.length > 0) {
|
|
204
277
|
// feat-20260518-pbr-direct-lighting-mvp M5 / w22.10 (D-4 + D-9 +
|
|
@@ -362,6 +435,7 @@ export function recordMainPass(
|
|
|
362
435
|
materialBgShared: frameState.materialBgShared,
|
|
363
436
|
materialBgAssemblyCache: c.materialBgAssemblyCache,
|
|
364
437
|
bindGroupCounts,
|
|
438
|
+
...(transmissionBackdropView === undefined ? {} : { transmissionBackdropView }),
|
|
365
439
|
};
|
|
366
440
|
const buildPerSubmeshMaterialBg = (
|
|
367
441
|
submeshMaterial: MaterialSnapshot,
|
|
@@ -535,10 +609,12 @@ export function recordMainPass(
|
|
|
535
609
|
entityKey: number,
|
|
536
610
|
materialWorld: World = world,
|
|
537
611
|
): BindGroup =>
|
|
538
|
-
|
|
539
|
-
|
|
612
|
+
material.materialShaderId !== POINTS_LINES_MATERIAL_SHADER_ID
|
|
613
|
+
? (preparedMaterialBindGroups[materialSlot] ??
|
|
614
|
+
buildPerSubmeshMaterialBg(material, entityKey, materialWorld))
|
|
615
|
+
: buildPerSubmeshMaterialBg(material, entityKey, materialWorld);
|
|
540
616
|
|
|
541
|
-
pass.setBindGroup(0, viewBindGroup as BindGroup);
|
|
617
|
+
pass.setBindGroup(0, viewBindGroup as BindGroup, [0]);
|
|
542
618
|
|
|
543
619
|
// Track which (mesh-vertex-buffer, mesh-index-buffer, pipeline) combo
|
|
544
620
|
// was last bound so consecutive entities sharing the same combo skip
|
|
@@ -548,7 +624,7 @@ export function recordMainPass(
|
|
|
548
624
|
// M-3 / w12: vertexBuffer/indexBuffer state locals migrate to GpuBuffer.
|
|
549
625
|
const recordGeometry = (): void => {
|
|
550
626
|
recordGeometryDraws(
|
|
551
|
-
|
|
627
|
+
recordContext,
|
|
552
628
|
pass,
|
|
553
629
|
matchedMaterials,
|
|
554
630
|
materialSlotIndices,
|
|
@@ -578,7 +654,7 @@ export function recordMainPass(
|
|
|
578
654
|
// already-encoded geometry pixels. Depth is loaded from the geometry
|
|
579
655
|
// pass so sprite-vs-mesh occlusion (depthCompare=less-equal) is
|
|
580
656
|
// preserved (plan-strategy §2 D-2 + §4 R-4).
|
|
581
|
-
if (passKind === 'forward') {
|
|
657
|
+
if (passKind === 'forward' && recordMode === undefined) {
|
|
582
658
|
geometryPassEnded = recordSpritePass(
|
|
583
659
|
c,
|
|
584
660
|
pass,
|
package/src/record/mesh-ssbo.ts
CHANGED
|
@@ -365,10 +365,11 @@ export function uploadMeshSsboBatch(
|
|
|
365
365
|
for (let i = 0; i < slotCount; i++) {
|
|
366
366
|
const entry = validatedOrdered[i];
|
|
367
367
|
if (entry === undefined) continue;
|
|
368
|
-
// Float32Array view into this entity's 256-byte slot (
|
|
369
|
-
//
|
|
368
|
+
// Float32Array view into this entity's 256-byte slot (current world,
|
|
369
|
+
// normal, previous world, and reactive metadata use 45 floats; the
|
|
370
|
+
// remaining padding stays zero). Byte offset i*256 is always
|
|
370
371
|
// 4-byte aligned since MESH_PER_ENTITY_STRIDE=256 is divisible by 4.
|
|
371
|
-
const slot = new Float32Array(_meshSsboScratch.buffer, i * MESH_PER_ENTITY_STRIDE,
|
|
372
|
+
const slot = new Float32Array(_meshSsboScratch.buffer, i * MESH_PER_ENTITY_STRIDE, 48);
|
|
372
373
|
const isFoldHead = foldDispatchPlan?.headBuckets.has(i) === true;
|
|
373
374
|
if (isFoldHead) {
|
|
374
375
|
// identity mat4
|
|
@@ -380,6 +381,13 @@ export function uploadMeshSsboBatch(
|
|
|
380
381
|
slot[16] = 1;
|
|
381
382
|
slot[20] = 1;
|
|
382
383
|
slot[24] = 1;
|
|
384
|
+
// Fold heads use the instance storage path; keep the mesh temporal
|
|
385
|
+
// fields deterministic for shader variants that still read the slot.
|
|
386
|
+
slot[28] = 1;
|
|
387
|
+
slot[33] = 1;
|
|
388
|
+
slot[38] = 1;
|
|
389
|
+
slot[43] = 1;
|
|
390
|
+
slot[44] = 1;
|
|
383
391
|
} else {
|
|
384
392
|
const worldFromLocal = entry.source.transform.world;
|
|
385
393
|
for (let k = 0; k < 16; k++) slot[k] = worldFromLocal[k] ?? 0;
|
|
@@ -393,6 +401,17 @@ export function uploadMeshSsboBatch(
|
|
|
393
401
|
slot[24] = normal[6] ?? 0;
|
|
394
402
|
slot[25] = normal[7] ?? 0;
|
|
395
403
|
slot[26] = normal[8] ?? 0;
|
|
404
|
+
const previousWorld = entry.source.temporal?.previousTransform.world ?? worldFromLocal;
|
|
405
|
+
for (let k = 0; k < 16; k++) slot[28 + k] = previousWorld[k] ?? 0;
|
|
406
|
+
const reactiveMaterial = entry.source.materials.some(
|
|
407
|
+
(material) =>
|
|
408
|
+
material.transparent === true ||
|
|
409
|
+
material.materialShaderId === 'forgeax::sprite' ||
|
|
410
|
+
material.materialShaderId === 'forgeax::sprite-lit' ||
|
|
411
|
+
(material.materialShaderId !== undefined &&
|
|
412
|
+
!material.materialShaderId.startsWith('forgeax::')),
|
|
413
|
+
);
|
|
414
|
+
slot[44] = entry.source.temporal?.reactive === true || reactiveMaterial ? 1 : 0;
|
|
396
415
|
}
|
|
397
416
|
}
|
|
398
417
|
if (neededBytes > 0) {
|
|
@@ -2,6 +2,7 @@ import type { AssetRegistry, DynamicTextureStore } from '@forgeax/engine-assets-
|
|
|
2
2
|
import type { World } from '@forgeax/engine-ecs';
|
|
3
3
|
import type { VertexLayoutProjection } from '@forgeax/engine-geometry';
|
|
4
4
|
import type { Profiler } from '@forgeax/engine-profiler';
|
|
5
|
+
import type { CompiledRenderGraphInfo } from '@forgeax/engine-render-graph';
|
|
5
6
|
import type {
|
|
6
7
|
BindGroup,
|
|
7
8
|
BindGroupLayout,
|
|
@@ -11,13 +12,13 @@ import type {
|
|
|
11
12
|
Result,
|
|
12
13
|
RhiCanvasContext,
|
|
13
14
|
RhiDevice,
|
|
14
|
-
RhiError,
|
|
15
15
|
RenderPipeline as RhiRenderPipeline,
|
|
16
16
|
Sampler,
|
|
17
17
|
Texture,
|
|
18
18
|
TextureFormat,
|
|
19
19
|
TextureView,
|
|
20
20
|
} from '@forgeax/engine-rhi';
|
|
21
|
+
import { err, ok, RhiError } from '@forgeax/engine-rhi';
|
|
21
22
|
import type { MaterialRuntimeArtifact } from '@forgeax/engine-shader';
|
|
22
23
|
import type {
|
|
23
24
|
MaterialRenderState,
|
|
@@ -31,15 +32,27 @@ import type { DeviceScope } from '../device/device-scope';
|
|
|
31
32
|
import type { MeshGpuHandles } from '../device/gpu-residency';
|
|
32
33
|
import type { EngineMetrics } from '../engine-metrics';
|
|
33
34
|
import type { RenderFeatureHost } from '../features/host';
|
|
35
|
+
import type { RenderFeatureShaderModuleMode } from '../features/types';
|
|
34
36
|
import {
|
|
35
37
|
GPU_TEXTURE_USAGE_COPY_SRC,
|
|
36
38
|
GPU_TEXTURE_USAGE_RENDER_ATTACHMENT,
|
|
37
39
|
GPU_TEXTURE_USAGE_TEXTURE_BINDING,
|
|
38
40
|
} from '../gpu-texture-usage';
|
|
39
41
|
import type { SkylightFallback } from '../ibl/skylight-bind-group';
|
|
42
|
+
import type { BloomInspection } from '../inspection-types';
|
|
40
43
|
import type { HealthListenerRegistry, RhiErrorListenerRegistry } from '../lifecycle';
|
|
41
44
|
import type { StandardProfile } from '../pipeline/standard-profile';
|
|
42
45
|
import type { PipelineBuilderShaderModuleFactory } from '../pipeline-builder';
|
|
46
|
+
import type { PointsLinesInspection } from '../points-lines/inspection';
|
|
47
|
+
import type { PointsLinesRecordPlan } from '../points-lines/record';
|
|
48
|
+
|
|
49
|
+
export interface PointsLinesRecordSubmission {
|
|
50
|
+
readonly plan: PointsLinesRecordPlan;
|
|
51
|
+
readonly vertexBuffer: Buffer;
|
|
52
|
+
readonly indexBuffer: Buffer;
|
|
53
|
+
readonly layoutProjection: VertexLayoutProjection;
|
|
54
|
+
}
|
|
55
|
+
|
|
43
56
|
import type {
|
|
44
57
|
RenderDebugOverlay,
|
|
45
58
|
RenderPipelineContext,
|
|
@@ -54,6 +67,7 @@ import type {
|
|
|
54
67
|
import type { SkinPaletteAllocator } from '../systems/skin-palette-allocator';
|
|
55
68
|
import type {
|
|
56
69
|
BindGroupCounts,
|
|
70
|
+
BloomFrameReceipts,
|
|
57
71
|
DispatchCounts,
|
|
58
72
|
MaterialBgAssemblyCacheEntry,
|
|
59
73
|
RenderFrameState,
|
|
@@ -84,6 +98,8 @@ export interface RenderSystemRuntime {
|
|
|
84
98
|
depthFormatOverride?: GPUTextureFormat | null,
|
|
85
99
|
vertexLayout?: string,
|
|
86
100
|
vertexLayoutProjection?: VertexLayoutProjection,
|
|
101
|
+
shaderModuleMode?: RenderFeatureShaderModuleMode,
|
|
102
|
+
layoutKindOverride?: 'pbr' | 'pbr-skin',
|
|
87
103
|
) => RhiRenderPipeline | null;
|
|
88
104
|
readonly getMaterialShaderBindingContract?: (
|
|
89
105
|
materialShaderId: string,
|
|
@@ -100,9 +116,19 @@ export interface RenderSystemRuntime {
|
|
|
100
116
|
bgl: BindGroupLayout,
|
|
101
117
|
colorFormat: GPUTextureFormat,
|
|
102
118
|
) => RhiRenderPipeline | null;
|
|
119
|
+
readonly clearPostProcessPipelineCache?: (id: string) => void;
|
|
120
|
+
readonly invalidateShaderModule?: (label: string) => void;
|
|
103
121
|
readonly dynamicTextureStore?: DynamicTextureStore | undefined;
|
|
104
122
|
}
|
|
105
123
|
|
|
124
|
+
/** Renderer-owned bridge from retained Points/Lines facts into main geometry. */
|
|
125
|
+
export interface PointsLinesRecordOwner {
|
|
126
|
+
prepare(entry: ValidatedRenderable, clustered: boolean): PointsLinesRecordSubmission | undefined;
|
|
127
|
+
beginFrame(): void;
|
|
128
|
+
resetForDeviceLoss(): void;
|
|
129
|
+
inspections(): readonly PointsLinesInspection[];
|
|
130
|
+
}
|
|
131
|
+
|
|
106
132
|
export interface PerPassResources {
|
|
107
133
|
depthTexture: Texture | null;
|
|
108
134
|
depthTextureView: TextureView | null;
|
|
@@ -134,18 +160,27 @@ export interface PerPassResources {
|
|
|
134
160
|
readonly skyboxBindGroupLayout: BindGroupLayout | null;
|
|
135
161
|
readonly skyboxSampler: Sampler | null;
|
|
136
162
|
readonly skyboxRotationBuffer: Buffer | null;
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
163
|
+
bloomBrightPipeline: RhiRenderPipeline | null;
|
|
164
|
+
bloomBlurHPipeline: RhiRenderPipeline | null;
|
|
165
|
+
bloomBlurVPipeline: RhiRenderPipeline | null;
|
|
166
|
+
bloomCompositePipeline: RhiRenderPipeline | null;
|
|
167
|
+
bloomBrightBindGroupLayout: BindGroupLayout | null;
|
|
168
|
+
bloomBlurBindGroupLayout: BindGroupLayout | null;
|
|
169
|
+
bloomCompositeBindGroupLayout: BindGroupLayout | null;
|
|
170
|
+
bloomSampler: Sampler | null;
|
|
171
|
+
bloomBrightParamsBuffer: Buffer | null;
|
|
172
|
+
bloomBlurHParamsBuffer: Buffer | null;
|
|
173
|
+
bloomBlurVParamsBuffer: Buffer | null;
|
|
174
|
+
bloomCompositeParamsBuffer: Buffer | null;
|
|
175
|
+
ensureBloomResources?: () => void;
|
|
176
|
+
getBloomResources?: () => BloomPersistentBundle | null;
|
|
177
|
+
commitBloomResources?: () => void;
|
|
178
|
+
commitBloomFrameReceipts?: (receipts: BloomFrameReceipts) => void;
|
|
179
|
+
discardBloomResources?: () => void;
|
|
180
|
+
retireBloomResources?: (completion: Promise<unknown>) => void;
|
|
181
|
+
/** Drain candidate, active, and fence-retiring Bloom generations. */
|
|
182
|
+
drainBloomResources?: () => void;
|
|
183
|
+
inspectBloomResources?: (graph?: CompiledRenderGraphInfo) => BloomInspection;
|
|
149
184
|
bloomBrightTexture: Texture | null;
|
|
150
185
|
bloomBrightView: TextureView | null;
|
|
151
186
|
bloomBrightWidth: number;
|
|
@@ -176,14 +211,35 @@ export interface PerPassResources {
|
|
|
176
211
|
} | null;
|
|
177
212
|
}
|
|
178
213
|
|
|
214
|
+
/** Renderer-private Bloom bundle selected for one record transaction. */
|
|
215
|
+
export interface BloomPersistentBundle {
|
|
216
|
+
readonly scope: DeviceScope;
|
|
217
|
+
readonly generation: number;
|
|
218
|
+
readonly bloomBrightPipeline: RhiRenderPipeline | null;
|
|
219
|
+
readonly bloomBlurHPipeline: RhiRenderPipeline | null;
|
|
220
|
+
readonly bloomBlurVPipeline: RhiRenderPipeline | null;
|
|
221
|
+
readonly bloomCompositePipeline: RhiRenderPipeline | null;
|
|
222
|
+
readonly bloomBrightBindGroupLayout: BindGroupLayout | null;
|
|
223
|
+
readonly bloomBlurBindGroupLayout: BindGroupLayout | null;
|
|
224
|
+
readonly bloomCompositeBindGroupLayout: BindGroupLayout | null;
|
|
225
|
+
readonly bloomSampler: Sampler | null;
|
|
226
|
+
readonly bloomBrightParamsBuffer: Buffer | null;
|
|
227
|
+
readonly bloomBlurHParamsBuffer: Buffer | null;
|
|
228
|
+
readonly bloomBlurVParamsBuffer: Buffer | null;
|
|
229
|
+
readonly bloomCompositeParamsBuffer: Buffer | null;
|
|
230
|
+
}
|
|
231
|
+
|
|
179
232
|
export interface PipelineState {
|
|
180
233
|
readonly meshes: ReadonlyMap<number, MeshGpuHandles>;
|
|
181
234
|
readonly format: TextureFormat;
|
|
182
235
|
readonly colorAttachmentFormat: TextureFormat;
|
|
236
|
+
/** Surface route committed by configureSurface for inspection provenance. */
|
|
237
|
+
readonly surfaceProfile?: 'dual-view' | 'raw-only';
|
|
183
238
|
readonly viewBindGroupLayout: BindGroupLayout;
|
|
184
239
|
readonly materialBindGroupLayout: BindGroupLayout;
|
|
185
240
|
readonly meshBindGroupLayout: BindGroupLayout;
|
|
186
241
|
readonly viewUniformBuffer: Buffer;
|
|
242
|
+
readonly pointsLinesViewBuffer?: Buffer;
|
|
187
243
|
readonly shadowCasterCascadeBuffer: Buffer;
|
|
188
244
|
readonly materialUniformBuffer: { readonly buffer: Buffer; readonly sizeInBytes: number };
|
|
189
245
|
readonly meshStorageBuffer: { readonly buffer: Buffer; readonly sizeInBytes: number };
|
|
@@ -221,6 +277,8 @@ export interface RenderSystemInternals extends RenderSystemRuntime {
|
|
|
221
277
|
readonly standardPipeline: RenderFrameState['activePipeline'];
|
|
222
278
|
readonly featureHost?: RenderFeatureHost | undefined;
|
|
223
279
|
readonly shaderModuleFactory?: PipelineBuilderShaderModuleFactory;
|
|
280
|
+
/** Optional handle-first factory for feature-owned generated shader programs. */
|
|
281
|
+
readonly immediateShaderModuleFactory?: PipelineBuilderShaderModuleFactory;
|
|
224
282
|
readonly profiler?: Profiler | undefined;
|
|
225
283
|
readonly context: RhiCanvasContext | null;
|
|
226
284
|
readonly getPipelineState: () => PipelineState | null;
|
|
@@ -250,6 +308,7 @@ export interface _StandardForwardSceneView {
|
|
|
250
308
|
readonly assets: AssetRegistry;
|
|
251
309
|
readonly store: import('../device/gpu-residency').GpuResidencyCache;
|
|
252
310
|
readonly pipelineState: PipelineState;
|
|
311
|
+
readonly bloomResources?: BloomPersistentBundle | null;
|
|
253
312
|
readonly runtime: RenderSystemRuntime;
|
|
254
313
|
readonly validated: readonly ValidatedRenderable[];
|
|
255
314
|
readonly validatedOrdered: readonly ValidatedRenderable[];
|
|
@@ -281,6 +340,7 @@ export interface _StandardForwardSceneView {
|
|
|
281
340
|
readonly materialSlots: readonly MaterialSnapshot[];
|
|
282
341
|
readonly materialSlotOwners: readonly number[];
|
|
283
342
|
readonly materialSlotCount: number;
|
|
343
|
+
readonly pointsLines: PointsLinesRecordOwner | undefined;
|
|
284
344
|
readonly materialBgAssemblyCache: Map<string, MaterialBgAssemblyCacheEntry>;
|
|
285
345
|
materialUboPayloadCache?: {
|
|
286
346
|
readonly materialSlots: readonly MaterialSnapshot[];
|
|
@@ -294,7 +354,7 @@ export type _InternalRenderPipelineContext = RenderPipelineContext & _StandardFo
|
|
|
294
354
|
|
|
295
355
|
export type RecordProfileRunner = <T>(phase: RenderRecordPhase, action: () => T) => T;
|
|
296
356
|
|
|
297
|
-
export const STANDARD_PBR_UBO_SIZE =
|
|
357
|
+
export const STANDARD_PBR_UBO_SIZE = 384;
|
|
298
358
|
export const MATERIAL_PER_ENTITY_STRIDE = 512;
|
|
299
359
|
|
|
300
360
|
export type SwapChainFormatPair = {
|
|
@@ -303,14 +363,88 @@ export type SwapChainFormatPair = {
|
|
|
303
363
|
readonly fallbackReason?: 'preferred-canvas-format-missing';
|
|
304
364
|
};
|
|
305
365
|
|
|
366
|
+
/** Internal closed projection of the concrete surface route. */
|
|
367
|
+
export type SurfaceProfile =
|
|
368
|
+
| {
|
|
369
|
+
readonly kind: 'dual-view';
|
|
370
|
+
readonly storageFormat: GPUTextureFormat;
|
|
371
|
+
readonly viewFormat: GPUTextureFormat;
|
|
372
|
+
readonly viewFormats: readonly [GPUTextureFormat];
|
|
373
|
+
readonly hasDisplayEndpoint: true;
|
|
374
|
+
}
|
|
375
|
+
| {
|
|
376
|
+
readonly kind: 'raw-only';
|
|
377
|
+
readonly storageFormat: GPUTextureFormat;
|
|
378
|
+
readonly viewFormat: GPUTextureFormat;
|
|
379
|
+
readonly viewFormats: readonly [];
|
|
380
|
+
readonly hasDisplayEndpoint: false;
|
|
381
|
+
};
|
|
382
|
+
|
|
383
|
+
export interface SurfaceCapabilityFacts {
|
|
384
|
+
/** Concrete wgpu downlevel `SURFACE_VIEW_FORMATS` flag. */
|
|
385
|
+
readonly surfaceViewFormats: boolean;
|
|
386
|
+
readonly rawAttachment: boolean;
|
|
387
|
+
readonly floatRenderAttachment: boolean;
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
export function resolveSurfaceProfile(
|
|
391
|
+
storageFormat: GPUTextureFormat,
|
|
392
|
+
viewFormat: GPUTextureFormat,
|
|
393
|
+
facts: SurfaceCapabilityFacts,
|
|
394
|
+
): Result<SurfaceProfile, RhiError> {
|
|
395
|
+
if (facts.surfaceViewFormats) {
|
|
396
|
+
return ok({
|
|
397
|
+
kind: 'dual-view',
|
|
398
|
+
storageFormat,
|
|
399
|
+
viewFormat,
|
|
400
|
+
viewFormats: [viewFormat],
|
|
401
|
+
hasDisplayEndpoint: true,
|
|
402
|
+
});
|
|
403
|
+
}
|
|
404
|
+
if (!facts.rawAttachment || !facts.floatRenderAttachment) {
|
|
405
|
+
return err(
|
|
406
|
+
new RhiError({
|
|
407
|
+
code: 'webgpu-runtime-error',
|
|
408
|
+
expected: 'raw surface attachment and rgba16float render attachment capabilities',
|
|
409
|
+
hint: 'surface profile cannot establish a raw-only linear output route',
|
|
410
|
+
detail: {
|
|
411
|
+
error: {
|
|
412
|
+
code: 'surface-raw-endpoint-failed',
|
|
413
|
+
message: 'raw-only surface capabilities are incomplete',
|
|
414
|
+
},
|
|
415
|
+
},
|
|
416
|
+
}),
|
|
417
|
+
);
|
|
418
|
+
}
|
|
419
|
+
return ok({
|
|
420
|
+
kind: 'raw-only',
|
|
421
|
+
storageFormat,
|
|
422
|
+
viewFormat: storageFormat,
|
|
423
|
+
viewFormats: [],
|
|
424
|
+
hasDisplayEndpoint: false,
|
|
425
|
+
});
|
|
426
|
+
}
|
|
427
|
+
|
|
306
428
|
export type SurfaceBackendKind = 'webgpu' | 'wgpu-native' | 'wgpu-webgl2' | 'null';
|
|
307
429
|
|
|
308
430
|
export function resolveSurfaceFormatPair(
|
|
309
|
-
|
|
431
|
+
_backendKind: SurfaceBackendKind,
|
|
310
432
|
storage: GPUTextureFormat,
|
|
311
433
|
view: GPUTextureFormat,
|
|
312
434
|
): SwapChainFormatPair {
|
|
313
|
-
return
|
|
435
|
+
return { storage, view };
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
function surfaceCapabilityFacts(
|
|
439
|
+
device: RhiDevice,
|
|
440
|
+
storageFormat: GPUTextureFormat,
|
|
441
|
+
): SurfaceCapabilityFacts {
|
|
442
|
+
const internal = device as unknown as { readonly surfaceViewFormats?: boolean };
|
|
443
|
+
return {
|
|
444
|
+
surfaceViewFormats: internal.surfaceViewFormats ?? device.caps?.backendKind !== 'wgpu-webgl2',
|
|
445
|
+
rawAttachment: storageFormat === 'rgba8unorm' || storageFormat === 'bgra8unorm',
|
|
446
|
+
floatRenderAttachment: device.caps?.rgba16floatRenderable ?? true,
|
|
447
|
+
};
|
|
314
448
|
}
|
|
315
449
|
|
|
316
450
|
export function configureSurface(
|
|
@@ -326,8 +460,20 @@ export function configureSurface(
|
|
|
326
460
|
format as GPUTextureFormat,
|
|
327
461
|
colorAttachmentFormat as GPUTextureFormat,
|
|
328
462
|
);
|
|
329
|
-
const
|
|
330
|
-
|
|
463
|
+
const profile = resolveSurfaceProfile(
|
|
464
|
+
surfaceFormats.storage,
|
|
465
|
+
surfaceFormats.view,
|
|
466
|
+
surfaceCapabilityFacts(device, surfaceFormats.storage),
|
|
467
|
+
);
|
|
468
|
+
if (!profile.ok) return profile;
|
|
469
|
+
// WebGL2 surface pixels are proven by the compositor fixture, so it has no
|
|
470
|
+
// surface consumer for optional TEXTURE_BINDING/COPY_SRC usage. The concrete
|
|
471
|
+
// wgpu surface derives supported usages from SurfaceCapabilities and rejects
|
|
472
|
+
// unsupported requests; this path requests only the guaranteed attachment
|
|
473
|
+
// usage. Raw-only deliberately has no alternate view.
|
|
474
|
+
const supportsTextureBinding =
|
|
475
|
+
backendKind !== 'wgpu-webgl2' && (device.caps?.storageBuffer ?? true);
|
|
476
|
+
const configured = context.configure({
|
|
331
477
|
device,
|
|
332
478
|
format: surfaceFormats.storage,
|
|
333
479
|
alphaMode: isWebGl2 ? 'opaque' : 'premultiplied',
|
|
@@ -335,12 +481,49 @@ export function configureSurface(
|
|
|
335
481
|
GPU_TEXTURE_USAGE_RENDER_ATTACHMENT |
|
|
336
482
|
(supportsTextureBinding ? GPU_TEXTURE_USAGE_TEXTURE_BINDING : 0) |
|
|
337
483
|
(isWebGl2 ? 0 : GPU_TEXTURE_USAGE_COPY_SRC),
|
|
338
|
-
|
|
484
|
+
viewFormats: [...profile.value.viewFormats],
|
|
339
485
|
});
|
|
486
|
+
if (!configured.ok) return configured;
|
|
487
|
+
if (
|
|
488
|
+
isWebGl2 &&
|
|
489
|
+
(context.presentationProof === undefined ||
|
|
490
|
+
!context.presentationProof.descriptor ||
|
|
491
|
+
!context.presentationProof.acquisition ||
|
|
492
|
+
!context.presentationProof.validation ||
|
|
493
|
+
typeof context.presentationProof.surfaceIdentity !== 'string' ||
|
|
494
|
+
context.presentationProof.surfaceIdentity.length === 0 ||
|
|
495
|
+
context.presentationProof.requested === undefined ||
|
|
496
|
+
context.presentationProof.validated === undefined ||
|
|
497
|
+
JSON.stringify(context.presentationProof.requested) !==
|
|
498
|
+
JSON.stringify(context.presentationProof.validated))
|
|
499
|
+
) {
|
|
500
|
+
return err(
|
|
501
|
+
new RhiError({
|
|
502
|
+
code: 'webgpu-runtime-error',
|
|
503
|
+
expected: 'WebGL2 surface storage has descriptor, acquisition, and validation proof',
|
|
504
|
+
hint: 'run the concrete presentation probe and retain the last-known-good graph when proof is absent',
|
|
505
|
+
detail: {
|
|
506
|
+
error: {
|
|
507
|
+
code: 'surface-raw-endpoint-failed',
|
|
508
|
+
message: 'surface storage raw endpoint proof is incomplete',
|
|
509
|
+
},
|
|
510
|
+
},
|
|
511
|
+
}),
|
|
512
|
+
);
|
|
513
|
+
}
|
|
514
|
+
return ok(undefined);
|
|
340
515
|
}
|
|
341
516
|
|
|
342
|
-
export function selectSwapChainFormat(
|
|
343
|
-
|
|
517
|
+
export function selectSwapChainFormat(
|
|
518
|
+
storageBufferCapable: boolean,
|
|
519
|
+
surfaceViewFormats = true,
|
|
520
|
+
): SwapChainFormatPair {
|
|
521
|
+
if (!storageBufferCapable) {
|
|
522
|
+
return {
|
|
523
|
+
storage: 'rgba8unorm',
|
|
524
|
+
view: surfaceViewFormats ? 'rgba8unorm-srgb' : 'rgba8unorm',
|
|
525
|
+
};
|
|
526
|
+
}
|
|
344
527
|
const nav = (
|
|
345
528
|
globalThis as { navigator?: { gpu?: { getPreferredCanvasFormat?: () => GPUTextureFormat } } }
|
|
346
529
|
).navigator;
|
|
@@ -354,11 +537,14 @@ export function selectSwapChainFormat(storageBufferCapable: boolean): SwapChainF
|
|
|
354
537
|
: storage === 'bgra8unorm'
|
|
355
538
|
? 'bgra8unorm-srgb'
|
|
356
539
|
: storage;
|
|
357
|
-
return {
|
|
540
|
+
return {
|
|
541
|
+
storage,
|
|
542
|
+
view: surfaceViewFormats ? view : storage,
|
|
543
|
+
};
|
|
358
544
|
}
|
|
359
545
|
return {
|
|
360
546
|
storage: 'rgba8unorm',
|
|
361
|
-
view: 'rgba8unorm-srgb',
|
|
547
|
+
view: surfaceViewFormats ? 'rgba8unorm-srgb' : 'rgba8unorm',
|
|
362
548
|
fallbackReason: 'preferred-canvas-format-missing',
|
|
363
549
|
};
|
|
364
550
|
}
|