@forgeax/engine-render 0.1.7 → 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 +140 -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 +12 -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/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.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-YEJIUW7D.mjs → chunk-LOSO4CTV.mjs} +296 -547
- 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-RXZ3RGOU.mjs +53 -0
- 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-YTQ5C7YQ.mjs +584 -0
- 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 +3 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/motion-blur.d.ts +7 -0
- package/dist/components/motion-blur.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 +10914 -16392
- 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 +136 -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 +2 -1
- 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-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 +17 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +6 -4
- package/dist/index.mjs.map +1 -1
- package/dist/inspection-types.d.ts +43 -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 +10 -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/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 +11 -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 +76 -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 +4 -1
- package/dist/record/view-ubo.d.ts.map +1 -1
- package/dist/render-contract.d.ts +92 -8
- 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 +29 -5
- package/dist/render-system-extract.d.ts.map +1 -1
- package/dist/render-system.d.ts +23 -4
- package/dist/render-system.d.ts.map +1 -1
- package/dist/scene/render-scene.d.ts +36 -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__/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-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 -146
- 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 +9 -0
- package/src/__tests__/render-error-detail-ssot.test-d.ts +11 -2
- package/src/__tests__/render-error-exhaustive.test-d.ts +3 -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 +395 -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 +1224 -505
- package/src/assembly/host-contract.ts +4 -0
- 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/components/__tests__/motion-blur.unit.test.ts +14 -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 +3 -0
- package/src/components/motion-blur.ts +8 -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 +285 -0
- 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 +2 -1
- 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-scene.ts +24 -0
- package/src/ibl/skylight-bind-group.ts +30 -38
- package/src/index.ts +66 -6
- package/src/inspection-types.ts +48 -0
- package/src/internal.ts +5 -0
- package/src/materials.ts +119 -24
- package/src/pbr-pipeline.ts +58 -19
- 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 +2 -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-snapshot.ts +129 -5
- package/src/record/frame-targets.ts +15 -6
- package/src/record/frame.ts +107 -3
- package/src/record/main-pass-geometry.ts +86 -40
- package/src/record/main-pass-material.ts +114 -66
- package/src/record/main-pass-sprite-draws.ts +78 -101
- package/src/record/main-pass.ts +77 -4
- package/src/record/mesh-ssbo.ts +22 -3
- package/src/record/render-context.ts +189 -23
- package/src/record/shadow-pass.ts +113 -23
- package/src/record/skybox-post-pass.ts +97 -41
- package/src/record/typed-frame-graph.ts +565 -26
- package/src/record/view-ubo.ts +52 -4
- package/src/render-contract.ts +109 -6
- package/src/render-graph-primitives.ts +18 -1
- package/src/render-pipeline.ts +100 -27
- package/src/render-system-extract.ts +193 -69
- package/src/render-system.ts +482 -41
- package/src/scene/render-scene.ts +250 -7
- 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-HCOGPHKS.mjs +0 -93
- package/dist/chunk-HCOGPHKS.mjs.map +0 -1
- package/dist/chunk-YEJIUW7D.mjs.map +0 -1
- package/dist/components/__tests__/points-lines-admission.unit.test.d.ts +0 -2
- package/dist/components/__tests__/points-lines-admission.unit.test.d.ts.map +0 -1
- package/dist/components/__tests__/points-lines-schema.unit.test.d.ts +0 -2
- package/dist/components/__tests__/points-lines-schema.unit.test.d.ts.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/points-lines/__tests__/bounds.unit.test.d.ts +0 -2
- package/dist/points-lines/__tests__/bounds.unit.test.d.ts.map +0 -1
- package/dist/points-lines/__tests__/cache-recovery.unit.test.d.ts +0 -2
- package/dist/points-lines/__tests__/cache-recovery.unit.test.d.ts.map +0 -1
- package/dist/points-lines/__tests__/inspection-lanes.integration.test.d.ts +0 -2
- package/dist/points-lines/__tests__/inspection-lanes.integration.test.d.ts.map +0 -1
- package/dist/points-lines/__tests__/inspection.unit.test.d.ts +0 -2
- package/dist/points-lines/__tests__/inspection.unit.test.d.ts.map +0 -1
- package/dist/points-lines/__tests__/lane-structural.integration.test.d.ts +0 -2
- package/dist/points-lines/__tests__/lane-structural.integration.test.d.ts.map +0 -1
- package/dist/points-lines/__tests__/points-lines.bench.d.ts +0 -2
- package/dist/points-lines/__tests__/points-lines.bench.d.ts.map +0 -1
- package/dist/points-lines/__tests__/raster-lane.integration.test.d.ts +0 -2
- package/dist/points-lines/__tests__/raster-lane.integration.test.d.ts.map +0 -1
- package/dist/points-lines/__tests__/snapshot.unit.test.d.ts +0 -2
- package/dist/points-lines/__tests__/snapshot.unit.test.d.ts.map +0 -1
- package/dist/points-lines/__tests__/view-ubo.unit.test.d.ts +0 -2
- package/dist/points-lines/__tests__/view-ubo.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
|
@@ -6,7 +6,16 @@ import { vec3 } from '@forgeax/engine-math';
|
|
|
6
6
|
import type { ResolvedColorTargetDescriptor } from '@forgeax/engine-render-graph';
|
|
7
7
|
import type { Texture } from '@forgeax/engine-rhi';
|
|
8
8
|
import type { ClusterBinScratch } from '../cluster-binner';
|
|
9
|
+
import type { EnvironmentGeneration } from '../environment/generation';
|
|
10
|
+
import type { EnvironmentLifecycle } from '../environment/lifecycle';
|
|
9
11
|
import type { GpuBuffer } from '../gpu-resource';
|
|
12
|
+
import type { TemporalGpuState } from '../temporal/gpu';
|
|
13
|
+
import type { TemporalView } from '../temporal/view';
|
|
14
|
+
|
|
15
|
+
export type TemporalCommitOutcome =
|
|
16
|
+
| { readonly kind: 'none' }
|
|
17
|
+
| { readonly kind: 'off'; readonly view: TemporalView }
|
|
18
|
+
| { readonly kind: 'taa'; readonly view: TemporalView };
|
|
10
19
|
|
|
11
20
|
/**
|
|
12
21
|
* feat-20260708-composited-multi-world-rendering M1 / D-1 / D-9:
|
|
@@ -84,6 +93,88 @@ export interface FrameObservationSource {
|
|
|
84
93
|
readonly backendId: string;
|
|
85
94
|
}
|
|
86
95
|
|
|
96
|
+
/** Internal test/diagnostic view of one compiled graph color target. */
|
|
97
|
+
export interface CurrentGraphTarget {
|
|
98
|
+
readonly name: string;
|
|
99
|
+
readonly texture: Texture;
|
|
100
|
+
/** Stable opaque identity for this RHI handle during the renderer lifetime. */
|
|
101
|
+
readonly textureIdentity: number;
|
|
102
|
+
readonly descriptor: ResolvedColorTargetDescriptor;
|
|
103
|
+
readonly frameId: number;
|
|
104
|
+
/** Monotonic identity of the compiled graph that owns this texture. */
|
|
105
|
+
readonly graphGeneration: number;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
const textureIdentities = new WeakMap<object, number>();
|
|
109
|
+
let nextTextureIdentity = 1;
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Project an opaque RHI texture handle to a stable diagnostic identity.
|
|
113
|
+
* RHI handles intentionally expose no serializable fields; object identity is
|
|
114
|
+
* the only valid comparison boundary for a copy-time capture.
|
|
115
|
+
*/
|
|
116
|
+
export function getTextureIdentity(texture: Texture): number {
|
|
117
|
+
const object = texture as object;
|
|
118
|
+
const existing = textureIdentities.get(object);
|
|
119
|
+
if (existing !== undefined) return existing;
|
|
120
|
+
const identity = nextTextureIdentity++;
|
|
121
|
+
textureIdentities.set(object, identity);
|
|
122
|
+
return identity;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export type GraphTargetCaptureReadbackValidation =
|
|
126
|
+
| { readonly ok: true }
|
|
127
|
+
| {
|
|
128
|
+
readonly ok: false;
|
|
129
|
+
readonly code:
|
|
130
|
+
| 'capture-readback-length'
|
|
131
|
+
| 'capture-readback-untouched-sentinel'
|
|
132
|
+
| 'capture-readback-empty'
|
|
133
|
+
| 'capture-readback-non-finite';
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
/** Validate a mapped rgba16float capture before a consumer decodes its values. */
|
|
137
|
+
export function validateGraphTargetCaptureReadback(input: {
|
|
138
|
+
readonly bytes: Uint8Array;
|
|
139
|
+
readonly expectedByteLength: number;
|
|
140
|
+
readonly sentinel?: Uint8Array;
|
|
141
|
+
}): GraphTargetCaptureReadbackValidation {
|
|
142
|
+
const { bytes, expectedByteLength, sentinel } = input;
|
|
143
|
+
if (bytes.byteLength !== expectedByteLength)
|
|
144
|
+
return { ok: false, code: 'capture-readback-length' };
|
|
145
|
+
if (sentinel?.every((value, index) => bytes[index] === value)) {
|
|
146
|
+
return { ok: false, code: 'capture-readback-untouched-sentinel' };
|
|
147
|
+
}
|
|
148
|
+
if (bytes.every((value) => value === 0)) return { ok: false, code: 'capture-readback-empty' };
|
|
149
|
+
for (let index = 0; index + 1 < bytes.length; index += 2) {
|
|
150
|
+
const exponent = ((bytes[index + 1] ?? 0) >>> 2) & 0x1f;
|
|
151
|
+
if (exponent === 0x1f) return { ok: false, code: 'capture-readback-non-finite' };
|
|
152
|
+
}
|
|
153
|
+
return { ok: true };
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/** Internal readback request consumed by the record encoder in the same submit. */
|
|
157
|
+
export interface GraphTargetCaptureRequest {
|
|
158
|
+
readonly name: string;
|
|
159
|
+
readonly buffer: Buffer;
|
|
160
|
+
readonly bytesPerRow: number;
|
|
161
|
+
readonly width: number;
|
|
162
|
+
readonly height: number;
|
|
163
|
+
/** Descriptor contract checked against the resolved target at copy time. */
|
|
164
|
+
readonly expected: {
|
|
165
|
+
readonly format: ResolvedColorTargetDescriptor['format'];
|
|
166
|
+
readonly width: number;
|
|
167
|
+
readonly height: number;
|
|
168
|
+
readonly usage: number;
|
|
169
|
+
/** Optional caller binding; when present it is checked at copy time. */
|
|
170
|
+
readonly identity?: {
|
|
171
|
+
readonly graphGeneration: number;
|
|
172
|
+
readonly frameId: number;
|
|
173
|
+
readonly textureIdentity: number;
|
|
174
|
+
};
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
|
|
87
178
|
/**
|
|
88
179
|
* Build a synthetic CameraSnapshot the record stage uses when the world
|
|
89
180
|
* carries no Camera entity. Identity-shaped projection / view inputs
|
|
@@ -160,14 +251,24 @@ export function clampPcfKernelSize(value: number | undefined): number {
|
|
|
160
251
|
*/
|
|
161
252
|
export interface RenderFrameState {
|
|
162
253
|
frameNumber: number;
|
|
254
|
+
/** Monotonic compiled-graph identity used by diagnostic readbacks. */
|
|
255
|
+
graphGeneration: number;
|
|
256
|
+
/** Number of successfully submitted TAA frames; failed attempts do not advance it. */
|
|
257
|
+
successfulTemporalFrameIndex?: number;
|
|
163
258
|
/** Optional graph resource lookup used by low-level record helpers and tests. */
|
|
164
|
-
|
|
259
|
+
perFrameGraph?: {
|
|
165
260
|
readonly getColorTargetDescriptor: (key: string) => ResolvedColorTargetDescriptor | undefined;
|
|
166
261
|
readonly getColorTargetView: (key: string) => TextureView | undefined;
|
|
167
262
|
readonly getColorTargetTexture: (key: string) => Texture | undefined;
|
|
263
|
+
readonly graphGeneration: number;
|
|
168
264
|
} | null;
|
|
265
|
+
graphTargetCapture?: GraphTargetCaptureRequest | undefined;
|
|
169
266
|
/** Last successfully rendered static directional shadow atlas token. */
|
|
170
267
|
directionalShadowCache: DirectionalShadowCache | null;
|
|
268
|
+
/** Last successfully submitted camera post-process mode. */
|
|
269
|
+
lastSuccessfulBloom: 'off' | 'on';
|
|
270
|
+
/** Bloom record receipts staged by this frame; cleared on abort. */
|
|
271
|
+
bloomFrameReceipts?: BloomFrameReceipts | undefined;
|
|
171
272
|
/** Set by a directional shadow pass when this frame refreshed the atlas. */
|
|
172
273
|
directionalShadowCacheRecorded: boolean;
|
|
173
274
|
/** The sole compiled owner for compute, copy, feature, and raster work. */
|
|
@@ -176,6 +277,20 @@ export interface RenderFrameState {
|
|
|
176
277
|
readonly retiredCompiledFrameGraphs: Set<CompiledRenderGraph<RenderPipelineFrame>>;
|
|
177
278
|
/** Physical outputs projected by typed graph passes for downstream observers. */
|
|
178
279
|
currentFrameObservationSource: FrameObservationSource | undefined;
|
|
280
|
+
/** Camera antialias mode for the last successfully submitted graph. */
|
|
281
|
+
lastSuccessfulCameraAntialias: CameraSnapshot['antialias'] | undefined;
|
|
282
|
+
/** Staged TAA GPU state is promoted only after queue.submit succeeds. */
|
|
283
|
+
temporalGpuState: TemporalGpuState | undefined;
|
|
284
|
+
/** Last successful TAA GPU state; candidate replacement stays staged until submit. */
|
|
285
|
+
activeTemporalGpuState: TemporalGpuState | undefined;
|
|
286
|
+
/** Submitted temporal generations retained until their queue fence resolves. */
|
|
287
|
+
readonly retiringTemporalGpuStates: Set<TemporalGpuState>;
|
|
288
|
+
/** Last successful projection; candidate frames never overwrite it. */
|
|
289
|
+
lastSuccessfulTemporalView: TemporalView | undefined;
|
|
290
|
+
pendingTemporalCommit: TemporalCommitOutcome;
|
|
291
|
+
/** Staged environment generation is promoted only after queue.submit succeeds. */
|
|
292
|
+
environmentGeneration: EnvironmentGeneration | undefined;
|
|
293
|
+
readonly environmentLifecycle: EnvironmentLifecycle | undefined;
|
|
179
294
|
currentDirectionalShadowView: TextureView | null;
|
|
180
295
|
currentSpotShadowView: TextureView | null;
|
|
181
296
|
readonly instanceBuffers: Map<number, InstanceBufferCacheEntry>;
|
|
@@ -342,10 +457,9 @@ export interface RenderFrameState {
|
|
|
342
457
|
*/
|
|
343
458
|
installedPipelineConfig: RenderPipelineAsset['config'];
|
|
344
459
|
/**
|
|
345
|
-
*
|
|
346
|
-
*
|
|
347
|
-
*
|
|
348
|
-
* `!isHdrpActive` so HDRP demos do not double-count light contributions.
|
|
460
|
+
* Whether the configured standard graph resolved to the clustered lane.
|
|
461
|
+
* Capability gating keeps URP forward bindings on WebGL2 fallback even
|
|
462
|
+
* when a clustered profile was requested.
|
|
349
463
|
*/
|
|
350
464
|
isHdrpActive: boolean;
|
|
351
465
|
/**
|
|
@@ -432,6 +546,16 @@ export interface BindGroupCounts {
|
|
|
432
546
|
keys: string[];
|
|
433
547
|
}
|
|
434
548
|
|
|
549
|
+
/**
|
|
550
|
+
* Successful Bloom record operations staged for the current frame. These
|
|
551
|
+
* counters are promoted only after the shared renderer queue submission.
|
|
552
|
+
*/
|
|
553
|
+
export interface BloomFrameReceipts {
|
|
554
|
+
readonly uploadCount: number;
|
|
555
|
+
readonly bindGroupCount: number;
|
|
556
|
+
readonly encodeCount: number;
|
|
557
|
+
}
|
|
558
|
+
|
|
435
559
|
/**
|
|
436
560
|
* A renderable resolved against the AssetRegistry for the current frame:
|
|
437
561
|
* its source snapshot, the GPU mesh handles, the row index used to correlate
|
|
@@ -20,9 +20,12 @@ export function graphExecutionPhase(passName: string): RenderGraphExecutionPhase
|
|
|
20
20
|
case 'lighting':
|
|
21
21
|
return 'record/graph-execute/lighting';
|
|
22
22
|
case 'forward':
|
|
23
|
+
case 'transmission-forward':
|
|
23
24
|
return 'record/graph-execute/forward';
|
|
24
|
-
case '
|
|
25
|
-
return 'record/graph-execute/
|
|
25
|
+
case 'output-transform':
|
|
26
|
+
return 'record/graph-execute/output-transform';
|
|
27
|
+
case 'present':
|
|
28
|
+
return 'record/graph-execute/present';
|
|
26
29
|
case 'debug-overlay':
|
|
27
30
|
return 'record/graph-execute/debug-overlay';
|
|
28
31
|
case 'shadow':
|
|
@@ -55,17 +58,23 @@ export function acquireSwapChainTarget(
|
|
|
55
58
|
|
|
56
59
|
let currentTextureResult = canvasContext.getCurrentTexture();
|
|
57
60
|
if (!currentTextureResult.ok) {
|
|
58
|
-
pipelineState.perPassResources.configured = false;
|
|
59
61
|
const configured = configureSurface(
|
|
60
62
|
canvasContext,
|
|
61
63
|
internals.device,
|
|
62
64
|
pipelineState.format,
|
|
63
65
|
pipelineState.colorAttachmentFormat,
|
|
64
66
|
);
|
|
65
|
-
if (configured.ok) {
|
|
66
|
-
|
|
67
|
-
|
|
67
|
+
if (!configured.ok) {
|
|
68
|
+
internals.errorRegistry.fire(configured.error);
|
|
69
|
+
internals.healthRegistry.fire({
|
|
70
|
+
reason: 'internal-fault',
|
|
71
|
+
detail: { message: 'surface configure candidate failed; current frame skipped' },
|
|
72
|
+
recoverable: true,
|
|
73
|
+
});
|
|
74
|
+
return null;
|
|
68
75
|
}
|
|
76
|
+
pipelineState.perPassResources.configured = true;
|
|
77
|
+
(globalThis as Record<string, unknown>).__forgeaxSwapChainFormat = pipelineState.format;
|
|
69
78
|
const retry = canvasContext.getCurrentTexture();
|
|
70
79
|
if (!retry.ok) {
|
|
71
80
|
internals.errorRegistry.fire(retry.error);
|
package/src/record/frame.ts
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import { HANDLE_NINESLICE_QUAD, resolveAssetHandle } from '@forgeax/engine-assets-runtime';
|
|
5
5
|
import type { World } from '@forgeax/engine-ecs';
|
|
6
6
|
import type { RenderReadLease } from '@forgeax/engine-ecs/projection';
|
|
7
|
+
import { mat4 } from '@forgeax/engine-math';
|
|
7
8
|
import {
|
|
8
9
|
type CurrentFrameObservationLease,
|
|
9
10
|
createCurrentFrameObservationLease,
|
|
@@ -21,6 +22,7 @@ import type { MaterialRenderState, MeshAsset } from '@forgeax/engine-types';
|
|
|
21
22
|
import { handleSlot, toShared } from '@forgeax/engine-types';
|
|
22
23
|
import type { MeshGpuHandles } from '../device/gpu-residency';
|
|
23
24
|
import { ObservationUnavailableError, type ObservationUnavailableReason } from '../errors/render';
|
|
25
|
+
import type { FogFrame } from '../extract/environment';
|
|
24
26
|
import type { GpuDrivenProduction, PreparedGpuDrivenFrame } from '../gpu-driven/production-raster';
|
|
25
27
|
import { GpuBuffer } from '../gpu-resource';
|
|
26
28
|
import { GPU_BUFFER_USAGE_COPY_DST, GPU_BUFFER_USAGE_VERTEX } from '../gpu-usage';
|
|
@@ -40,6 +42,7 @@ import {
|
|
|
40
42
|
TRANSPARENT_SORT_MODE_LAYER_Y,
|
|
41
43
|
TRANSPARENT_SORT_MODE_LAYER_Z,
|
|
42
44
|
} from '../systems/transparent-sort-config';
|
|
45
|
+
import type { TransmissionDemand } from '../transmission/projection';
|
|
43
46
|
import {
|
|
44
47
|
buildPerFrameBindGroups,
|
|
45
48
|
prepareFrameLighting,
|
|
@@ -184,6 +187,7 @@ export async function observeCurrentFrame(
|
|
|
184
187
|
});
|
|
185
188
|
}
|
|
186
189
|
|
|
190
|
+
import { createTemporalView, resolveTemporalReset } from '../temporal/view';
|
|
187
191
|
import {
|
|
188
192
|
acquireSwapChainTarget,
|
|
189
193
|
graphExecutionPhase,
|
|
@@ -191,6 +195,7 @@ import {
|
|
|
191
195
|
resolveSpotShadowMapSize,
|
|
192
196
|
} from './frame-targets';
|
|
193
197
|
import {
|
|
198
|
+
computeProjectionMatrix,
|
|
194
199
|
computeViewMatrix,
|
|
195
200
|
driveLazyEquirectProjection,
|
|
196
201
|
selectLazyEquirectHandle,
|
|
@@ -304,6 +309,7 @@ export function recordFrame(
|
|
|
304
309
|
skybox: SkyboxSnapshot | undefined,
|
|
305
310
|
skyboxCount: number,
|
|
306
311
|
postProcessParams: ReadonlyMap<string, Uint8Array>,
|
|
312
|
+
fog: FogFrame | undefined,
|
|
307
313
|
// feat-20260709-editor-world-partition ENGINE-fix-round2 (defect 2): the
|
|
308
314
|
// full worlds[] list passed to `renderer.draw`, indexed by
|
|
309
315
|
// RenderableSnapshot.worldId so the record stage resolves each renderable's
|
|
@@ -321,6 +327,10 @@ export function recordFrame(
|
|
|
321
327
|
renderReadLeases?: readonly RenderReadLease[],
|
|
322
328
|
featureGraphCandidate?: RenderFeatureGraphCandidate,
|
|
323
329
|
pointsLinesOwner?: import('./render-context').PointsLinesRecordOwner,
|
|
330
|
+
environmentSignature = '',
|
|
331
|
+
fogSignature = '',
|
|
332
|
+
environmentReady = true,
|
|
333
|
+
transmissionDemand?: TransmissionDemand,
|
|
324
334
|
): boolean {
|
|
325
335
|
// The `try / finally` wrapper advances `frameState.frameNumber` exactly
|
|
326
336
|
// once per `recordFrame` invocation regardless of which early-return
|
|
@@ -521,6 +531,8 @@ export function recordFrame(
|
|
|
521
531
|
graphShadowMapSize,
|
|
522
532
|
preparedGpuDriven,
|
|
523
533
|
featureGraphCandidate,
|
|
534
|
+
cameras.length === 0,
|
|
535
|
+
transmissionDemand,
|
|
524
536
|
),
|
|
525
537
|
);
|
|
526
538
|
if (preflightGraph === null) return false;
|
|
@@ -539,6 +551,79 @@ export function recordFrame(
|
|
|
539
551
|
const targetW = swapTarget.targetW;
|
|
540
552
|
const targetH = swapTarget.targetH;
|
|
541
553
|
|
|
554
|
+
const temporalView =
|
|
555
|
+
camera.antialias === 'taa' && environmentReady
|
|
556
|
+
? (() => {
|
|
557
|
+
const created = createTemporalView({
|
|
558
|
+
antialias: camera.antialias,
|
|
559
|
+
width: targetW,
|
|
560
|
+
height: targetH,
|
|
561
|
+
frameIndex: frameState.successfulTemporalFrameIndex ?? 0,
|
|
562
|
+
viewIdentity: `camera:${camera.entityKey ?? 0}`,
|
|
563
|
+
environmentSignature,
|
|
564
|
+
fogSignature,
|
|
565
|
+
deviceGeneration: internals.deviceScope.generation,
|
|
566
|
+
...(camera.historyVersion === undefined
|
|
567
|
+
? {}
|
|
568
|
+
: { historyVersion: camera.historyVersion }),
|
|
569
|
+
});
|
|
570
|
+
const previous = frameState.lastSuccessfulTemporalView;
|
|
571
|
+
const currentUnjitteredViewProjection = mat4.multiply(
|
|
572
|
+
mat4.create(),
|
|
573
|
+
computeProjectionMatrix(camera),
|
|
574
|
+
computeViewMatrix(camera),
|
|
575
|
+
);
|
|
576
|
+
const resetCandidate = createTemporalView({
|
|
577
|
+
antialias: created.input.antialias,
|
|
578
|
+
width: created.input.width,
|
|
579
|
+
height: created.input.height,
|
|
580
|
+
frameIndex: created.input.frameIndex,
|
|
581
|
+
historyVersion: created.input.historyVersion,
|
|
582
|
+
viewIdentity: created.input.viewIdentity,
|
|
583
|
+
environmentSignature,
|
|
584
|
+
fogSignature,
|
|
585
|
+
deviceGeneration: internals.deviceScope.generation,
|
|
586
|
+
cameraCut: created.input.cameraCut,
|
|
587
|
+
historyValid: false,
|
|
588
|
+
currentUnjitteredViewProjection,
|
|
589
|
+
});
|
|
590
|
+
const resetReason = resolveTemporalReset(previous, resetCandidate);
|
|
591
|
+
return createTemporalView({
|
|
592
|
+
...resetCandidate.input,
|
|
593
|
+
frameIndex: resetReason === undefined ? resetCandidate.input.frameIndex : 0,
|
|
594
|
+
historyValid: previous !== undefined && resetReason === undefined,
|
|
595
|
+
currentUnjitteredViewProjection,
|
|
596
|
+
resetReason,
|
|
597
|
+
...(resetReason !== undefined ||
|
|
598
|
+
previous?.currentUnjitteredViewProjection === undefined
|
|
599
|
+
? {}
|
|
600
|
+
: {
|
|
601
|
+
previousUnjitteredViewProjection: previous.currentUnjitteredViewProjection,
|
|
602
|
+
}),
|
|
603
|
+
});
|
|
604
|
+
})()
|
|
605
|
+
: undefined;
|
|
606
|
+
frameState.pendingTemporalCommit =
|
|
607
|
+
cameras.length === 0 || !environmentReady || internals.deviceScope === undefined
|
|
608
|
+
? { kind: 'none' }
|
|
609
|
+
: temporalView === undefined
|
|
610
|
+
? {
|
|
611
|
+
kind: 'off',
|
|
612
|
+
view: createTemporalView({
|
|
613
|
+
antialias: camera.antialias,
|
|
614
|
+
width: targetW,
|
|
615
|
+
height: targetH,
|
|
616
|
+
frameIndex: frameState.successfulTemporalFrameIndex ?? 0,
|
|
617
|
+
viewIdentity: `camera:${camera.entityKey ?? 0}`,
|
|
618
|
+
environmentSignature,
|
|
619
|
+
fogSignature,
|
|
620
|
+
deviceGeneration: internals.deviceScope.generation,
|
|
621
|
+
}),
|
|
622
|
+
}
|
|
623
|
+
: { kind: 'taa', view: temporalView };
|
|
624
|
+
const recordCamera: CameraSnapshot =
|
|
625
|
+
temporalView === undefined ? camera : { ...camera, temporal: temporalView };
|
|
626
|
+
|
|
542
627
|
const depthView: TextureView | null = null;
|
|
543
628
|
// feat-20260709 M3 / D-3: clear-color read from the active CameraSnapshot's
|
|
544
629
|
// single `clearColor` array field (first-archetype-hit per OOS-2). When the
|
|
@@ -583,7 +668,7 @@ export function recordFrame(
|
|
|
583
668
|
const { tonemapActive, skyboxActive } = resolveSkyboxActive(
|
|
584
669
|
internals,
|
|
585
670
|
frameState,
|
|
586
|
-
|
|
671
|
+
recordCamera,
|
|
587
672
|
skybox,
|
|
588
673
|
);
|
|
589
674
|
|
|
@@ -699,6 +784,8 @@ export function recordFrame(
|
|
|
699
784
|
light,
|
|
700
785
|
lights,
|
|
701
786
|
frameState.spotShadowSnapshots,
|
|
787
|
+
fog,
|
|
788
|
+
temporalView,
|
|
702
789
|
);
|
|
703
790
|
if (pipelineState.pointsLinesViewBuffer !== undefined) {
|
|
704
791
|
writePointsLinesViewUbo(
|
|
@@ -783,12 +870,29 @@ export function recordFrame(
|
|
|
783
870
|
// errorRegistry + shader-cache lookups) surfaces (`internals` itself satisfies
|
|
784
871
|
// `RenderSystemRuntime` so `runtime: internals` is a zero-cost reference). The
|
|
785
872
|
// 0-consumed `skyboxCount` residual is dropped.
|
|
873
|
+
// Camera-owned temporal controls are projected into the per-frame
|
|
874
|
+
// post-process parameter map at record time. The extracted ECS map only
|
|
875
|
+
// carries explicit PostProcessParams components; without this bridge the
|
|
876
|
+
// builtin motion-blur pass receives its all-zero registration default and
|
|
877
|
+
// becomes a no-op even though the temporal scene target is populated.
|
|
878
|
+
const framePostProcessParams = new Map(postProcessParams);
|
|
879
|
+
if (camera.motionBlur !== undefined) {
|
|
880
|
+
const motionBlurParams = new Uint8Array(16);
|
|
881
|
+
const motionBlurView = new DataView(motionBlurParams.buffer);
|
|
882
|
+
motionBlurView.setFloat32(0, camera.motionBlur.shutterAngle, true);
|
|
883
|
+
motionBlurView.setFloat32(4, camera.motionBlur.maxRadiusPixels, true);
|
|
884
|
+
motionBlurView.setUint32(8, camera.motionBlur.sampleCount, true);
|
|
885
|
+
motionBlurView.setUint32(12, temporalView?.historyValid === true ? 0 : 1, true);
|
|
886
|
+
framePostProcessParams.set('forgeax.motion-blur', motionBlurParams);
|
|
887
|
+
}
|
|
888
|
+
|
|
786
889
|
const passCtx: _InternalRenderPipelineContext = {
|
|
787
890
|
assets: internals.assets,
|
|
788
891
|
world,
|
|
789
892
|
gpuDrivenEntityKeys: gpuOwnedEntityKeys,
|
|
790
893
|
store: internals.gpuStore,
|
|
791
894
|
pipelineState,
|
|
895
|
+
bloomResources: pipelineState.perPassResources.getBloomResources?.() ?? null,
|
|
792
896
|
runtime: internals,
|
|
793
897
|
encoder,
|
|
794
898
|
view,
|
|
@@ -796,7 +900,7 @@ export function recordFrame(
|
|
|
796
900
|
targetW,
|
|
797
901
|
targetH,
|
|
798
902
|
currentTexture,
|
|
799
|
-
camera,
|
|
903
|
+
camera: recordCamera,
|
|
800
904
|
tonemapActive,
|
|
801
905
|
geometryColorView,
|
|
802
906
|
geometryDepthView,
|
|
@@ -817,7 +921,7 @@ export function recordFrame(
|
|
|
817
921
|
msaaActive,
|
|
818
922
|
geometryColorResolveView,
|
|
819
923
|
ldrSpriteColorView,
|
|
820
|
-
postProcessParams,
|
|
924
|
+
postProcessParams: framePostProcessParams,
|
|
821
925
|
dispatch: transparentDispatch,
|
|
822
926
|
hdrpClusterBindGroup,
|
|
823
927
|
hdrpClusterMembershipBindGroup,
|
|
@@ -57,7 +57,7 @@ type GeometryBindingState = {
|
|
|
57
57
|
|
|
58
58
|
type MaterialPipelineLookup = {
|
|
59
59
|
readonly materialShaderId: string;
|
|
60
|
-
readonly
|
|
60
|
+
readonly isHdrTarget: boolean;
|
|
61
61
|
readonly renderStateKey: string;
|
|
62
62
|
readonly topology: PrimitiveTopology;
|
|
63
63
|
readonly indexFormat: 'uint16' | 'uint32';
|
|
@@ -71,6 +71,27 @@ type MaterialPipelineLookup = {
|
|
|
71
71
|
|
|
72
72
|
type GeometryRecordProfileSegment = 'material-bind-groups' | 'pipeline-selection' | 'draw-submit';
|
|
73
73
|
|
|
74
|
+
type GeometryRenderState = ReturnType<typeof geometryRenderStateForTopology>;
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Resolve the depth contract for a geometry pass without changing the base
|
|
78
|
+
* material state. Temporal scene-data shares the main pass depth attachment:
|
|
79
|
+
* it is read-only and accepts the equal depth produced by the unjittered
|
|
80
|
+
* temporal projection, while still rejecting fragments behind the visible
|
|
81
|
+
* surface.
|
|
82
|
+
*/
|
|
83
|
+
export function geometryRenderStateForPass(
|
|
84
|
+
base: GeometryRenderState,
|
|
85
|
+
passKind: PassKind,
|
|
86
|
+
): GeometryRenderState {
|
|
87
|
+
if (passKind !== 'temporal') return base;
|
|
88
|
+
return {
|
|
89
|
+
...base,
|
|
90
|
+
depthWriteEnabled: false,
|
|
91
|
+
depthCompare: 'less-equal' as const,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
|
|
74
95
|
function geometryRecordPhase(
|
|
75
96
|
passKind: PassKind,
|
|
76
97
|
segment: GeometryRecordProfileSegment,
|
|
@@ -178,6 +199,12 @@ export function recordGeometryDraws(
|
|
|
178
199
|
viewBindGroup,
|
|
179
200
|
} = c;
|
|
180
201
|
const colorFormatOverride = c.transparentColorFormat as GPUTextureFormat | undefined;
|
|
202
|
+
// A no-tone frame may still render into the graph-owned rgba16float target
|
|
203
|
+
// (the linear-LDR route). Shader variants must follow the attachment's
|
|
204
|
+
// numeric domain rather than the camera's tone-map switch, otherwise the
|
|
205
|
+
// LDR/OETF fragment entry point is encoded once here and again by the
|
|
206
|
+
// output transform.
|
|
207
|
+
const isHdrTarget = tonemapActive || colorFormatOverride === 'rgba16float';
|
|
181
208
|
let lastVertexBuffer: GpuBuffer | null = null;
|
|
182
209
|
let lastIndexBuffer: GpuBuffer | null = null;
|
|
183
210
|
const bindingState: GeometryBindingState = {
|
|
@@ -226,7 +253,7 @@ export function recordGeometryDraws(
|
|
|
226
253
|
if (cachedLookups !== undefined) {
|
|
227
254
|
for (const cached of cachedLookups) {
|
|
228
255
|
if (
|
|
229
|
-
cached.
|
|
256
|
+
cached.isHdrTarget === isHdrTarget &&
|
|
230
257
|
cached.renderStateKey === renderStateKey &&
|
|
231
258
|
cached.topology === topology &&
|
|
232
259
|
cached.indexFormat === indexFormat &&
|
|
@@ -240,10 +267,11 @@ export function recordGeometryDraws(
|
|
|
240
267
|
}
|
|
241
268
|
}
|
|
242
269
|
}
|
|
243
|
-
const resolvedVariantSetResult =
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
270
|
+
const resolvedVariantSetResult =
|
|
271
|
+
variantSet === undefined &&
|
|
272
|
+
(materialShaderId === 'forgeax::sprite' || materialShaderId === 'forgeax::sprite-lit')
|
|
273
|
+
? ({ ok: true, value: undefined } as const)
|
|
274
|
+
: variantSetFromVertexLayoutProjection(layoutProjection, variantSet);
|
|
247
275
|
if (!resolvedVariantSetResult.ok) {
|
|
248
276
|
runtime.errorRegistry.fire(resolvedVariantSetResult.error);
|
|
249
277
|
return null;
|
|
@@ -252,7 +280,7 @@ export function recordGeometryDraws(
|
|
|
252
280
|
const resolvePipeline = () =>
|
|
253
281
|
runtime.getMaterialShaderPipeline?.(
|
|
254
282
|
materialShaderId,
|
|
255
|
-
|
|
283
|
+
isHdrTarget,
|
|
256
284
|
renderState,
|
|
257
285
|
topology,
|
|
258
286
|
indexFormat,
|
|
@@ -270,25 +298,37 @@ export function recordGeometryDraws(
|
|
|
270
298
|
profilePhase === undefined
|
|
271
299
|
? resolvePipeline()
|
|
272
300
|
: profileGeometrySegment(c, passKind, 'pipeline-selection', resolvePipeline);
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
301
|
+
// A null handle is a transient async-build signal (`rhi-not-available`),
|
|
302
|
+
// not a stable pipeline result. Do not memoize it in this frame's lookup:
|
|
303
|
+
// caching the first pending lookup would turn a one-frame shader warm-up
|
|
304
|
+
// into a permanent skip for every later frame in a tight smoke loop. The
|
|
305
|
+
// owning runtime cache remains the SSOT; retrying here is bounded by the
|
|
306
|
+
// existing per-frame draw path and preserves the explicit skip-draw
|
|
307
|
+
// recovery while the pipeline becomes ready.
|
|
308
|
+
if (handle !== null) {
|
|
309
|
+
const nextLookup: MaterialPipelineLookup = {
|
|
310
|
+
materialShaderId,
|
|
311
|
+
isHdrTarget,
|
|
312
|
+
renderStateKey,
|
|
313
|
+
topology,
|
|
314
|
+
indexFormat,
|
|
315
|
+
variantSet,
|
|
316
|
+
passKind,
|
|
317
|
+
layoutProjection,
|
|
318
|
+
sampleCount,
|
|
319
|
+
colorFormatOverride: colorFormat,
|
|
320
|
+
handle,
|
|
321
|
+
};
|
|
322
|
+
if (shaderLookupCache === undefined) {
|
|
323
|
+
materialPipelineLookupCache.set(
|
|
324
|
+
materialShaderId,
|
|
325
|
+
new Map([[renderStateKey, [nextLookup]]]),
|
|
326
|
+
);
|
|
327
|
+
} else if (cachedLookups === undefined) {
|
|
328
|
+
shaderLookupCache.set(renderStateKey, [nextLookup]);
|
|
329
|
+
} else {
|
|
330
|
+
cachedLookups.push(nextLookup);
|
|
331
|
+
}
|
|
292
332
|
}
|
|
293
333
|
return handle;
|
|
294
334
|
};
|
|
@@ -506,7 +546,7 @@ export function recordGeometryDraws(
|
|
|
506
546
|
skinResources !== null && skinVariantSetResult.ok
|
|
507
547
|
? (runtime.getMaterialShaderPipeline?.(
|
|
508
548
|
SKIN_MATERIAL_SHADER_ID,
|
|
509
|
-
|
|
549
|
+
isHdrTarget,
|
|
510
550
|
entry.source.material.renderState,
|
|
511
551
|
entry.mesh.submeshes[0]?.topology ?? 'triangle-list',
|
|
512
552
|
entry.mesh.indexFormat,
|
|
@@ -727,7 +767,7 @@ export function recordGeometryDraws(
|
|
|
727
767
|
// Preserve the dedicated sprite-pass state when the linear-LDR graph
|
|
728
768
|
// routes a sprite through this generic geometry path. Negative scale
|
|
729
769
|
// flips winding, so back-face culling would erase the quad.
|
|
730
|
-
const
|
|
770
|
+
const basePipelineRenderState = isSpriteShader
|
|
731
771
|
? {
|
|
732
772
|
...submeshMaterial.renderState,
|
|
733
773
|
depthWriteEnabled: false,
|
|
@@ -736,6 +776,7 @@ export function recordGeometryDraws(
|
|
|
736
776
|
blend: submeshMaterial.renderState?.blend ?? SPRITE_PREMULTIPLIED_ALPHA_BLEND,
|
|
737
777
|
}
|
|
738
778
|
: geometryRenderStateForTopology(smTopology, submeshMaterial.renderState);
|
|
779
|
+
const pipelineRenderState = geometryRenderStateForPass(basePipelineRenderState, passKind);
|
|
739
780
|
let smPipelineHandle: typeof pipelineState.unlitPipeline;
|
|
740
781
|
if (smMaterialShaderId === undefined || smMaterialShaderId === 'forgeax::default-unlit') {
|
|
741
782
|
const unlitShaderId = smMaterialShaderId ?? 'forgeax::default-unlit';
|
|
@@ -763,7 +804,7 @@ export function recordGeometryDraws(
|
|
|
763
804
|
smPipelineHandle =
|
|
764
805
|
unlitRsp ??
|
|
765
806
|
(colorFormatOverride === undefined
|
|
766
|
-
? selectGeometryPipeline(pipelineState,
|
|
807
|
+
? selectGeometryPipeline(pipelineState, isHdrTarget, msaaActive)
|
|
767
808
|
: null);
|
|
768
809
|
} else if (smMaterialShaderId !== undefined) {
|
|
769
810
|
// feat-20260609 M4.5 / w38 (D-11): the variantSet handed to
|
|
@@ -793,18 +834,23 @@ export function recordGeometryDraws(
|
|
|
793
834
|
? ''
|
|
794
835
|
: 'CLUSTER_FORWARD_AVAILABLE=true+STORAGE_BUFFER_AVAILABLE=true'
|
|
795
836
|
: 'CLUSTER_FORWARD_AVAILABLE=false+STORAGE_BUFFER_AVAILABLE=true';
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
837
|
+
// Sprite's base request must retain the boot-selected artifact. Only
|
|
838
|
+
// SpriteInstances uses the explicit empty key for the
|
|
839
|
+
// PER_INSTANCE_REGION=true variant; synthesizing the generic PBR
|
|
840
|
+
// capability axes for a base sprite would invent a lazy module label
|
|
841
|
+
// that has no boot seed and skip the first HDR draw.
|
|
842
|
+
const variantSet = isSpriteShader
|
|
843
|
+
? smMaterialShaderId === 'forgeax::sprite' && entry.source.spriteInstances !== undefined
|
|
844
|
+
? ''
|
|
845
|
+
: undefined
|
|
846
|
+
: entry.variantSet === undefined
|
|
800
847
|
? capabilityVariantSet
|
|
801
848
|
: capabilityVariantSet === ''
|
|
802
|
-
?
|
|
803
|
-
: `${capabilityVariantSet}+${
|
|
804
|
-
const projectionVariantSetResult =
|
|
805
|
-
|
|
806
|
-
variantSet
|
|
807
|
-
);
|
|
849
|
+
? entry.variantSet
|
|
850
|
+
: `${capabilityVariantSet}+${entry.variantSet}`;
|
|
851
|
+
const projectionVariantSetResult = isSpriteShader
|
|
852
|
+
? ({ ok: true, value: variantSet } as const)
|
|
853
|
+
: variantSetFromVertexLayoutProjection(entry.mesh.layoutProjection, variantSet);
|
|
808
854
|
if (!projectionVariantSetResult.ok) {
|
|
809
855
|
runtime.errorRegistry.fire(projectionVariantSetResult.error);
|
|
810
856
|
continue;
|
|
@@ -833,7 +879,7 @@ export function recordGeometryDraws(
|
|
|
833
879
|
// fires on per-submesh topology variance miss.
|
|
834
880
|
smPipelineHandle = cachedPipeline ?? null;
|
|
835
881
|
} else {
|
|
836
|
-
smPipelineHandle = selectGeometryPipeline(pipelineState,
|
|
882
|
+
smPipelineHandle = selectGeometryPipeline(pipelineState, isHdrTarget, msaaActive);
|
|
837
883
|
}
|
|
838
884
|
|
|
839
885
|
if (smPipelineHandle === null) {
|