@forgeax/engine-render 0.1.7 → 0.1.20
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 +26 -5
- 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-4XINDLAY.mjs +9404 -0
- package/dist/chunk-4XINDLAY.mjs.map +1 -0
- package/dist/chunk-CDTWTHZR.mjs +752 -0
- package/dist/chunk-CDTWTHZR.mjs.map +1 -0
- package/dist/chunk-FJ6P52EE.mjs +46 -0
- package/dist/chunk-FJ6P52EE.mjs.map +1 -0
- package/dist/chunk-JDWARUOI.mjs +44 -0
- package/dist/chunk-JDWARUOI.mjs.map +1 -0
- package/dist/chunk-M2MP4ZOU.mjs +73 -0
- package/dist/chunk-M2MP4ZOU.mjs.map +1 -0
- package/dist/chunk-PCHBPYML.mjs +385 -0
- package/dist/chunk-PCHBPYML.mjs.map +1 -0
- package/dist/chunk-RXZ3RGOU.mjs +53 -0
- package/dist/chunk-RXZ3RGOU.mjs.map +1 -0
- package/dist/{chunk-YEJIUW7D.mjs → chunk-TBQJOK2L.mjs} +356 -543
- package/dist/chunk-TBQJOK2L.mjs.map +1 -0
- package/dist/{chunk-CQXZC5XI.mjs → chunk-VFPLTKCU.mjs} +79 -69
- package/dist/chunk-VFPLTKCU.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/light-helpers.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/components/spot-light.d.ts +12 -0
- package/dist/components/spot-light.d.ts.map +1 -1
- package/dist/construct-renderer.d.ts +2 -2
- package/dist/construct-renderer.d.ts.map +1 -1
- package/dist/construct-renderer.mjs +11146 -14507
- 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/device/gpu-residency.d.ts +19 -2
- package/dist/device/gpu-residency.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 +204 -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/gpu-usage.d.ts +2 -0
- package/dist/gpu-usage.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 +24 -7
- 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/light-buffer-layout.d.ts +20 -12
- package/dist/light-buffer-layout.d.ts.map +1 -1
- package/dist/materials.d.ts +22 -0
- package/dist/materials.d.ts.map +1 -1
- package/dist/pbr-pipeline.d.ts +16 -9
- 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 +12 -2
- 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-lighting.d.ts +2 -0
- package/dist/record/frame-lighting.d.ts.map +1 -1
- package/dist/record/frame-snapshot.d.ts +137 -6
- 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 +6 -3
- package/dist/record/frame.d.ts.map +1 -1
- package/dist/record/gpu-timing.d.ts +32 -0
- package/dist/record/gpu-timing.d.ts.map +1 -0
- 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 +9 -6
- 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 +81 -19
- 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 +36 -4
- 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 +157 -8
- package/dist/render-contract.d.ts.map +1 -1
- package/dist/render-data.d.ts +10 -6
- package/dist/render-data.d.ts.map +1 -1
- package/dist/render-graph-primitives.d.ts.map +1 -1
- package/dist/render-pipeline.d.ts +86 -6
- package/dist/render-pipeline.d.ts.map +1 -1
- package/dist/render-system-extract.d.ts +84 -8
- package/dist/render-system-extract.d.ts.map +1 -1
- package/dist/render-system.d.ts +30 -5
- package/dist/render-system.d.ts.map +1 -1
- package/dist/renderer-inspect.d.ts +29 -0
- package/dist/renderer-inspect.d.ts.map +1 -0
- 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/frame.d.ts +44 -0
- package/dist/temporal/frame.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 +30 -2
- package/dist/typed-render-graph-primitives.d.ts.map +1 -1
- package/dist/typed-shadow-atlas.d.ts +10 -0
- package/dist/typed-shadow-atlas.d.ts.map +1 -0
- package/dist/typed-shadow-passes.d.ts.map +1 -1
- package/dist/volume/capability.d.ts +57 -0
- package/dist/volume/capability.d.ts.map +1 -0
- package/dist/volume/component.d.ts +61 -0
- package/dist/volume/component.d.ts.map +1 -0
- package/dist/volume/extract.d.ts +11 -0
- package/dist/volume/extract.d.ts.map +1 -0
- package/dist/volume/inspection.d.ts +38 -0
- package/dist/volume/inspection.d.ts.map +1 -0
- package/dist/volume/passes.d.ts +38 -0
- package/dist/volume/passes.d.ts.map +1 -0
- package/dist/volume/recovery.d.ts +38 -0
- package/dist/volume/recovery.d.ts.map +1 -0
- package/dist/volume/resources.d.ts +57 -0
- package/dist/volume/resources.d.ts.map +1 -0
- package/dist/volume/temporal.d.ts +35 -0
- package/dist/volume/temporal.d.ts.map +1 -0
- 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__/ktx2-basis-gpu-consumer.dawn.test.ts +14 -14
- 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__/mesh-buffer-usage-surface.unit.test.ts +1 -1
- 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 +14 -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 +423 -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 +123 -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 +12 -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/__tests__/volume-optics-oracle.unit.test.ts +85 -0
- package/src/__tests__/volumetric-fog-budget-recovery.integration.test.ts +655 -0
- package/src/__tests__/volumetric-fog-component.unit.test.ts +71 -0
- package/src/__tests__/volumetric-fog-composite-stage-readback.dawn.test.ts +376 -0
- package/src/__tests__/volumetric-fog-errors.unit.test.ts +51 -0
- package/src/__tests__/volumetric-fog-inspection.unit.test.ts +77 -0
- package/src/__tests__/volumetric-fog-light-capability.unit.test.ts +19 -0
- package/src/__tests__/volumetric-fog-light-consumers.integration.test.ts +18 -0
- package/src/__tests__/volumetric-fog-light-errors.unit.test.ts +17 -0
- package/src/__tests__/volumetric-fog-light-topology.unit.test.ts +21 -0
- package/src/__tests__/volumetric-fog-light-transaction.integration.test.ts +53 -0
- package/src/__tests__/volumetric-fog-m9-watcher.integration.test.ts +27 -0
- package/src/__tests__/volumetric-fog-point-light-owner.integration.test.ts +44 -0
- package/src/__tests__/volumetric-fog-point-spot-accumulation.integration.test.ts +49 -0
- package/src/__tests__/volumetric-fog-point-spot-contract.unit.test.ts +28 -0
- package/src/__tests__/volumetric-fog-point-spot-lkg.integration.test.ts +65 -0
- package/src/__tests__/volumetric-fog-point-spot-selection.integration.test.ts +49 -0
- package/src/__tests__/volumetric-fog-point-spot-temporal.unit.test.ts +55 -0
- package/src/__tests__/volumetric-fog-projector-contract.unit.test.ts +22 -0
- package/src/__tests__/volumetric-fog-projector-inspection.unit.test.ts +12 -0
- package/src/__tests__/volumetric-fog-projector-surface-volume.integration.test.ts +11 -0
- package/src/__tests__/volumetric-fog-projector-transaction.integration.test.ts +26 -0
- package/src/__tests__/volumetric-fog-recovery.integration.test.ts +47 -0
- package/src/__tests__/volumetric-fog-selected-light-resolution.integration.test.ts +63 -0
- package/src/__tests__/volumetric-fog-spot-closure.integration.test.ts +26 -0
- package/src/__tests__/volumetric-fog-spot-contract.test-d.ts +21 -0
- package/src/__tests__/volumetric-fog-spot-contract.unit.test.ts +27 -0
- package/src/__tests__/volumetric-fog-spot-frame-optics.integration.test.ts +14 -0
- package/src/__tests__/volumetric-fog-spot-optics.integration.test.ts +29 -0
- package/src/__tests__/volumetric-fog-stage-readback.dawn.test.ts +550 -0
- package/src/__tests__/volumetric-fog-temporal-selected-light.unit.test.ts +33 -0
- package/src/__tests__/volumetric-fog-temporal.unit.test.ts +45 -0
- package/src/__tests__/volumetric-fog-topology.unit.test.ts +237 -0
- package/src/__tests__/volumetric-fog-transparent.integration.test.ts +27 -0
- package/src/assembly/backend-contract.ts +47 -1
- package/src/assembly/factory.ts +1480 -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/light-helpers.ts +4 -0
- package/src/components/motion-blur.ts +8 -0
- package/src/components/spot-light.ts +22 -3
- package/src/construct-renderer.ts +40 -3
- package/src/device/device-scope.ts +15 -1
- package/src/device/gpu-residency.ts +168 -58
- 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 +404 -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 +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/gpu-usage.ts +2 -0
- package/src/ibl/skylight-bind-group.ts +30 -38
- package/src/index.ts +104 -7
- package/src/inspection-types.ts +48 -0
- package/src/internal.ts +5 -0
- package/src/light-buffer-layout.ts +59 -26
- package/src/materials.ts +119 -24
- package/src/pbr-pipeline.ts +91 -29
- package/src/pipeline/standard-forward-lane.ts +178 -101
- package/src/pipeline/standard-pipeline.ts +176 -105
- package/src/pipeline/standard-post.ts +373 -0
- package/src/pipeline/standard-profile.ts +26 -3
- 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-lighting.ts +103 -89
- package/src/record/frame-snapshot.ts +170 -6
- package/src/record/frame-targets.ts +21 -8
- package/src/record/frame.ts +1014 -7
- package/src/record/gpu-timing.ts +224 -0
- package/src/record/main-pass-geometry.ts +86 -40
- package/src/record/main-pass-material.ts +120 -68
- 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 +194 -23
- package/src/record/shadow-pass.ts +197 -58
- package/src/record/skybox-post-pass.ts +97 -41
- package/src/record/typed-frame-graph.ts +704 -30
- package/src/record/view-ubo.ts +52 -4
- package/src/render-contract.ts +181 -6
- package/src/render-data.ts +50 -22
- package/src/render-graph-primitives.ts +18 -1
- package/src/render-pipeline.ts +144 -27
- package/src/render-system-extract.ts +522 -72
- package/src/render-system.ts +561 -41
- package/src/renderer-inspect.ts +66 -0
- package/src/scene/render-scene.ts +252 -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/frame.ts +128 -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 +437 -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 +194 -11
- package/src/typed-shadow-atlas.ts +17 -0
- package/src/typed-shadow-passes.ts +6 -5
- package/src/volume/capability.ts +173 -0
- package/src/volume/component.ts +110 -0
- package/src/volume/extract.ts +21 -0
- package/src/volume/inspection.ts +78 -0
- package/src/volume/passes.ts +680 -0
- package/src/volume/recovery.ts +86 -0
- package/src/volume/resources.ts +236 -0
- package/src/volume/temporal.ts +89 -0
- 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
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import { mat4, type Vec3, vec3 } from '@forgeax/engine-math';
|
|
6
6
|
import {
|
|
7
7
|
type BindGroup,
|
|
8
|
+
type BindGroupEntry,
|
|
8
9
|
type BindGroupLayout,
|
|
9
10
|
RhiError,
|
|
10
11
|
type TextureView,
|
|
@@ -87,6 +88,8 @@ export function buildPerFrameBindGroups(
|
|
|
87
88
|
graphTargets?: {
|
|
88
89
|
readonly directionalShadow?: TextureView | undefined;
|
|
89
90
|
readonly spotShadow?: TextureView | undefined;
|
|
91
|
+
readonly projector?: TextureView | undefined;
|
|
92
|
+
readonly projectorSampler?: import('@forgeax/engine-rhi').Sampler | undefined;
|
|
90
93
|
},
|
|
91
94
|
includeView = true,
|
|
92
95
|
): {
|
|
@@ -150,6 +153,9 @@ export function buildPerFrameBindGroups(
|
|
|
150
153
|
graphSpotShadowView !== undefined
|
|
151
154
|
? graphSpotShadowView
|
|
152
155
|
: pipelineState.shadowFallbackTextureView;
|
|
156
|
+
const projectorAvailable = pipelineState.projectorAvailable !== false;
|
|
157
|
+
const b11View = graphTargets?.projector ?? pipelineState.defaultWhiteTextureView;
|
|
158
|
+
const b12Sampler = graphTargets?.projectorSampler ?? pipelineState.defaultSampler;
|
|
153
159
|
viewBindGroup = getOrCreateFromChain(
|
|
154
160
|
frameState.viewBindGroupCache,
|
|
155
161
|
[
|
|
@@ -161,110 +167,118 @@ export function buildPerFrameBindGroups(
|
|
|
161
167
|
b5View,
|
|
162
168
|
pipelineState.shadowParamsBuffer,
|
|
163
169
|
b8View,
|
|
170
|
+
...(projectorAvailable ? [b11View, b12Sampler] : []),
|
|
164
171
|
pipelineState.pointsLinesViewBuffer ?? pipelineState.viewUniformBuffer,
|
|
165
172
|
],
|
|
166
173
|
'view-main',
|
|
167
174
|
() => {
|
|
168
|
-
const
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
resource: {
|
|
175
|
-
kind: 'buffer',
|
|
176
|
-
value: { buffer: pipelineState.viewUniformBuffer, size: VIEW_UNIFORM_BYTES },
|
|
177
|
-
},
|
|
175
|
+
const entries: BindGroupEntry[] = [
|
|
176
|
+
{
|
|
177
|
+
binding: 0,
|
|
178
|
+
resource: {
|
|
179
|
+
kind: 'buffer',
|
|
180
|
+
value: { buffer: pipelineState.viewUniformBuffer, size: VIEW_UNIFORM_BYTES },
|
|
178
181
|
},
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
},
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
binding: 1,
|
|
185
|
+
resource: {
|
|
186
|
+
kind: 'buffer',
|
|
187
|
+
value: { buffer: pipelineState.pointLightsBuffer },
|
|
185
188
|
},
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
},
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
binding: 2,
|
|
192
|
+
resource: {
|
|
193
|
+
kind: 'buffer',
|
|
194
|
+
value: { buffer: pipelineState.spotLightsBuffer },
|
|
192
195
|
},
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
binding: 3,
|
|
199
|
+
resource: {
|
|
200
|
+
kind: 'textureView',
|
|
201
|
+
value: b3View,
|
|
199
202
|
},
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
binding: 4,
|
|
206
|
+
resource: {
|
|
207
|
+
kind: 'sampler',
|
|
208
|
+
value: shadowSampler,
|
|
206
209
|
},
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
210
|
+
},
|
|
211
|
+
// feat-20260612-point-light-shadows-urp-hdrp Round-2 F-1:
|
|
212
|
+
// cube_array shadow atlas view (real ShadowAtlas when point
|
|
213
|
+
// shadows are active; else 1x1x6 fallback).
|
|
214
|
+
{
|
|
215
|
+
binding: 5,
|
|
216
|
+
resource: {
|
|
217
|
+
kind: 'textureView',
|
|
218
|
+
value: b5View,
|
|
216
219
|
},
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
},
|
|
220
|
+
},
|
|
221
|
+
// feat-20260612-point-light-shadows-urp-hdrp Round-2 F-1:
|
|
222
|
+
// shadowParams UBO (`array<vec4<f32>, 4>` = 64 B). Lane N
|
|
223
|
+
// stores `(near, far, 1/(far-near), 0)` for the point light
|
|
224
|
+
// with shadowAtlasLayer === N. Updated per frame from
|
|
225
|
+
// `pointShadowSnapshots` below.
|
|
226
|
+
{
|
|
227
|
+
binding: 6,
|
|
228
|
+
resource: {
|
|
229
|
+
kind: 'buffer',
|
|
230
|
+
value: { buffer: pipelineState.shadowParamsBuffer },
|
|
228
231
|
},
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
},
|
|
232
|
+
},
|
|
233
|
+
// feat-20260613-csm-cascaded-shadow-maps M5 / w28 (rebased to
|
|
234
|
+
// binding 7 on 2026-06-13 to make room for point-shadow 5/6):
|
|
235
|
+
// forward shaders declare binding 7 in common.wgsl (shared
|
|
236
|
+
// view BGL) but never reference it; only shadow_caster.wgsl
|
|
237
|
+
// reads it. Host writes a stable singleton buffer so every
|
|
238
|
+
// forward bind group entry stays populated.
|
|
239
|
+
{
|
|
240
|
+
binding: 7,
|
|
241
|
+
resource: {
|
|
242
|
+
kind: 'buffer',
|
|
243
|
+
value: { buffer: pipelineState.shadowCasterCascadeBuffer },
|
|
241
244
|
},
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
245
|
+
},
|
|
246
|
+
// feat-20260625-spot-light-shadow-mapping M3 / w21 (D-5):
|
|
247
|
+
// spot shadow 2D atlas (real spotShadowDepth view when spot
|
|
248
|
+
// shadows run this frame, else the 1x1 depth fallback). Always-on.
|
|
249
|
+
{
|
|
250
|
+
binding: 8,
|
|
251
|
+
resource: {
|
|
252
|
+
kind: 'textureView',
|
|
253
|
+
value: b8View,
|
|
251
254
|
},
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
binding: 10,
|
|
258
|
+
resource: {
|
|
259
|
+
kind: 'buffer',
|
|
260
|
+
value: {
|
|
261
|
+
buffer: pipelineState.pointsLinesViewBuffer ?? pipelineState.viewUniformBuffer,
|
|
262
|
+
size: POINTS_LINES_VIEW_BYTES,
|
|
260
263
|
},
|
|
261
264
|
},
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
265
|
+
},
|
|
266
|
+
...(projectorAvailable
|
|
267
|
+
? [
|
|
268
|
+
{ binding: 11, resource: { kind: 'textureView' as const, value: b11View } },
|
|
269
|
+
{ binding: 12, resource: { kind: 'sampler' as const, value: b12Sampler } },
|
|
270
|
+
]
|
|
271
|
+
: []),
|
|
272
|
+
// feat-20260625-spot-light-shadow-mapping w25: the per-spot
|
|
273
|
+
// fragment-read lightViewProj matrices fold into the View UBO
|
|
274
|
+
// (binding 0, `view.spotLightViewProj`) — no standalone binding 9
|
|
275
|
+
// (WebGL2 fragment uniform-buffer budget). binding 10 is the
|
|
276
|
+
// dedicated vertex-only Points/Lines viewport UBO.
|
|
277
|
+
];
|
|
278
|
+
const viewBindGroupResult = internals.device.createBindGroup({
|
|
279
|
+
label: 'pbr-view-bg',
|
|
280
|
+
layout: pipelineState.viewBindGroupLayout,
|
|
281
|
+
entries,
|
|
268
282
|
});
|
|
269
283
|
if (!viewBindGroupResult.ok) throw viewBindGroupResult.error;
|
|
270
284
|
return viewBindGroupResult.value;
|
|
@@ -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:
|
|
@@ -54,7 +63,7 @@ import type { MaterialRenderState, RenderPipelineAsset } from '@forgeax/engine-t
|
|
|
54
63
|
import type { MeshGpuHandles } from '../device/gpu-residency';
|
|
55
64
|
import type { SkylightBindGroupResources } from '../ibl/skylight-bind-group';
|
|
56
65
|
import type { InstanceBufferCacheEntry } from '../instance-buffer-cache';
|
|
57
|
-
import type { CameraSnapshot } from '../render-contract';
|
|
66
|
+
import type { CameraSnapshot, VolumetricFogFrameContext } from '../render-contract';
|
|
58
67
|
import type { RenderPipeline as RenderPipelineDef, RenderPipelineFrame } from '../render-pipeline';
|
|
59
68
|
import type {
|
|
60
69
|
DispatchEntry,
|
|
@@ -64,6 +73,13 @@ import type {
|
|
|
64
73
|
SpotLightSnapshot,
|
|
65
74
|
} from '../render-system-extract';
|
|
66
75
|
import type { ShadowAtlas } from '../shadow-atlas';
|
|
76
|
+
import type {
|
|
77
|
+
TemporalFrame,
|
|
78
|
+
TemporalFrameInput,
|
|
79
|
+
TemporalFrameTransaction,
|
|
80
|
+
} from '../temporal/frame';
|
|
81
|
+
import type { VolumetricFogInspection } from '../volume/inspection';
|
|
82
|
+
import type { VolumeTemporalSignature } from '../volume/temporal';
|
|
67
83
|
|
|
68
84
|
/**
|
|
69
85
|
* feat-20260608-create-app-param-surface-trim / M1 / D-8 (q8 user lock):
|
|
@@ -84,6 +100,88 @@ export interface FrameObservationSource {
|
|
|
84
100
|
readonly backendId: string;
|
|
85
101
|
}
|
|
86
102
|
|
|
103
|
+
/** Internal test/diagnostic view of one compiled graph color target. */
|
|
104
|
+
export interface CurrentGraphTarget {
|
|
105
|
+
readonly name: string;
|
|
106
|
+
readonly texture: Texture;
|
|
107
|
+
/** Stable opaque identity for this RHI handle during the renderer lifetime. */
|
|
108
|
+
readonly textureIdentity: number;
|
|
109
|
+
readonly descriptor: ResolvedColorTargetDescriptor;
|
|
110
|
+
readonly frameId: number;
|
|
111
|
+
/** Monotonic identity of the compiled graph that owns this texture. */
|
|
112
|
+
readonly graphGeneration: number;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
const textureIdentities = new WeakMap<object, number>();
|
|
116
|
+
let nextTextureIdentity = 1;
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Project an opaque RHI texture handle to a stable diagnostic identity.
|
|
120
|
+
* RHI handles intentionally expose no serializable fields; object identity is
|
|
121
|
+
* the only valid comparison boundary for a copy-time capture.
|
|
122
|
+
*/
|
|
123
|
+
export function getTextureIdentity(texture: Texture): number {
|
|
124
|
+
const object = texture as object;
|
|
125
|
+
const existing = textureIdentities.get(object);
|
|
126
|
+
if (existing !== undefined) return existing;
|
|
127
|
+
const identity = nextTextureIdentity++;
|
|
128
|
+
textureIdentities.set(object, identity);
|
|
129
|
+
return identity;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
export type GraphTargetCaptureReadbackValidation =
|
|
133
|
+
| { readonly ok: true }
|
|
134
|
+
| {
|
|
135
|
+
readonly ok: false;
|
|
136
|
+
readonly code:
|
|
137
|
+
| 'capture-readback-length'
|
|
138
|
+
| 'capture-readback-untouched-sentinel'
|
|
139
|
+
| 'capture-readback-empty'
|
|
140
|
+
| 'capture-readback-non-finite';
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
/** Validate a mapped rgba16float capture before a consumer decodes its values. */
|
|
144
|
+
export function validateGraphTargetCaptureReadback(input: {
|
|
145
|
+
readonly bytes: Uint8Array;
|
|
146
|
+
readonly expectedByteLength: number;
|
|
147
|
+
readonly sentinel?: Uint8Array;
|
|
148
|
+
}): GraphTargetCaptureReadbackValidation {
|
|
149
|
+
const { bytes, expectedByteLength, sentinel } = input;
|
|
150
|
+
if (bytes.byteLength !== expectedByteLength)
|
|
151
|
+
return { ok: false, code: 'capture-readback-length' };
|
|
152
|
+
if (sentinel?.every((value, index) => bytes[index] === value)) {
|
|
153
|
+
return { ok: false, code: 'capture-readback-untouched-sentinel' };
|
|
154
|
+
}
|
|
155
|
+
if (bytes.every((value) => value === 0)) return { ok: false, code: 'capture-readback-empty' };
|
|
156
|
+
for (let index = 0; index + 1 < bytes.length; index += 2) {
|
|
157
|
+
const exponent = ((bytes[index + 1] ?? 0) >>> 2) & 0x1f;
|
|
158
|
+
if (exponent === 0x1f) return { ok: false, code: 'capture-readback-non-finite' };
|
|
159
|
+
}
|
|
160
|
+
return { ok: true };
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/** Internal readback request consumed by the record encoder in the same submit. */
|
|
164
|
+
export interface GraphTargetCaptureRequest {
|
|
165
|
+
readonly name: string;
|
|
166
|
+
readonly buffer: Buffer;
|
|
167
|
+
readonly bytesPerRow: number;
|
|
168
|
+
readonly width: number;
|
|
169
|
+
readonly height: number;
|
|
170
|
+
/** Descriptor contract checked against the resolved target at copy time. */
|
|
171
|
+
readonly expected: {
|
|
172
|
+
readonly format: ResolvedColorTargetDescriptor['format'];
|
|
173
|
+
readonly width: number;
|
|
174
|
+
readonly height: number;
|
|
175
|
+
readonly usage: number;
|
|
176
|
+
/** Optional caller binding; when present it is checked at copy time. */
|
|
177
|
+
readonly identity?: {
|
|
178
|
+
readonly graphGeneration: number;
|
|
179
|
+
readonly frameId: number;
|
|
180
|
+
readonly textureIdentity: number;
|
|
181
|
+
};
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
|
|
87
185
|
/**
|
|
88
186
|
* Build a synthetic CameraSnapshot the record stage uses when the world
|
|
89
187
|
* carries no Camera entity. Identity-shaped projection / view inputs
|
|
@@ -160,22 +258,79 @@ export function clampPcfKernelSize(value: number | undefined): number {
|
|
|
160
258
|
*/
|
|
161
259
|
export interface RenderFrameState {
|
|
162
260
|
frameNumber: number;
|
|
261
|
+
/** Monotonic compiled-graph identity used by diagnostic readbacks. */
|
|
262
|
+
graphGeneration: number;
|
|
263
|
+
/** Number of successfully submitted TAA frames; failed attempts do not advance it. */
|
|
264
|
+
successfulTemporalFrameIndex?: number;
|
|
265
|
+
/** The renderer-owned accepted-submit temporal fact consumed by consumers. */
|
|
266
|
+
temporalFrame?: TemporalFrame;
|
|
267
|
+
/** The sole transaction that advances temporal history after queue.submit. */
|
|
268
|
+
readonly temporalFrameTransaction: TemporalFrameTransaction;
|
|
269
|
+
/** Staged input is consumed only by the graph submit owner. */
|
|
270
|
+
temporalFrameInput: TemporalFrameInput | undefined;
|
|
163
271
|
/** Optional graph resource lookup used by low-level record helpers and tests. */
|
|
164
|
-
|
|
272
|
+
perFrameGraph?: {
|
|
165
273
|
readonly getColorTargetDescriptor: (key: string) => ResolvedColorTargetDescriptor | undefined;
|
|
166
274
|
readonly getColorTargetView: (key: string) => TextureView | undefined;
|
|
167
275
|
readonly getColorTargetTexture: (key: string) => Texture | undefined;
|
|
276
|
+
readonly graphGeneration: number;
|
|
168
277
|
} | null;
|
|
278
|
+
graphTargetCapture?: GraphTargetCaptureRequest | undefined;
|
|
169
279
|
/** Last successfully rendered static directional shadow atlas token. */
|
|
170
280
|
directionalShadowCache: DirectionalShadowCache | null;
|
|
281
|
+
/** Last successfully submitted camera post-process mode. */
|
|
282
|
+
lastSuccessfulBloom: 'off' | 'on';
|
|
283
|
+
/** Bloom record receipts staged by this frame; cleared on abort. */
|
|
284
|
+
bloomFrameReceipts?: BloomFrameReceipts | undefined;
|
|
171
285
|
/** Set by a directional shadow pass when this frame refreshed the atlas. */
|
|
172
286
|
directionalShadowCacheRecorded: boolean;
|
|
173
287
|
/** The sole compiled owner for compute, copy, feature, and raster work. */
|
|
174
288
|
compiledFrameGraph: CompiledRenderGraph<RenderPipelineFrame> | null;
|
|
175
289
|
compiledFrameGraphTopologyKey: string | null;
|
|
290
|
+
/**
|
|
291
|
+
* Last-known-good graph held while a volume topology candidate is tested.
|
|
292
|
+
* The candidate is promoted only after its command buffer is submitted;
|
|
293
|
+
* failed encoding/finish/submit restores this graph and its topology key.
|
|
294
|
+
*/
|
|
295
|
+
volumetricFogPreviousGraph: CompiledRenderGraph<RenderPipelineFrame> | null;
|
|
296
|
+
volumetricFogPreviousGraphKey: string | null;
|
|
297
|
+
volumetricFogCandidateGraph: CompiledRenderGraph<RenderPipelineFrame> | null;
|
|
298
|
+
/** Two renderer-owned parameter slots; only the pending slot is writable. */
|
|
299
|
+
volumetricFogParamsBuffers: [Buffer | null, Buffer | null];
|
|
300
|
+
/** Candidate parameter slot, promoted only after queue submission succeeds. */
|
|
301
|
+
volumetricFogParamsPendingSlot: 0 | 1 | null;
|
|
302
|
+
/** Parameter slot consumed by the last accepted volume frame. */
|
|
303
|
+
volumetricFogParamsAcceptedSlot: 0 | 1 | null;
|
|
304
|
+
/** CPU copy of the accepted parameter payload for degraded-frame staging. */
|
|
305
|
+
volumetricFogAcceptedParams: Float32Array | undefined;
|
|
306
|
+
/** CPU copy of the current candidate payload before submit. */
|
|
307
|
+
volumetricFogPendingParams: Float32Array | undefined;
|
|
308
|
+
/** Last candidate/accepted volume projection exposed through inspect(). */
|
|
309
|
+
volumetricFogInspection: VolumetricFogInspection;
|
|
310
|
+
/** Accepted volume POD/context retained while a later candidate degrades. */
|
|
311
|
+
volumetricFogAccepted: import('../render-system-extract').ExtractedVolumetricFog | undefined;
|
|
312
|
+
volumetricFogAcceptedContext: VolumetricFogFrameContext | undefined;
|
|
313
|
+
/** Accepted graph identity and ping-pong slot for temporal volume history. */
|
|
314
|
+
volumetricFogHistoryGraph: CompiledRenderGraph<RenderPipelineFrame> | null;
|
|
315
|
+
volumetricFogHistorySlot: 0 | 1 | null;
|
|
316
|
+
volumetricFogHistorySignature: VolumeTemporalSignature | null;
|
|
176
317
|
readonly retiredCompiledFrameGraphs: Set<CompiledRenderGraph<RenderPipelineFrame>>;
|
|
177
318
|
/** Physical outputs projected by typed graph passes for downstream observers. */
|
|
178
319
|
currentFrameObservationSource: FrameObservationSource | undefined;
|
|
320
|
+
/** Camera antialias mode for the last successfully submitted graph. */
|
|
321
|
+
lastSuccessfulCameraAntialias: CameraSnapshot['antialias'] | undefined;
|
|
322
|
+
/** Staged TAA GPU state is promoted only after queue.submit succeeds. */
|
|
323
|
+
temporalGpuState: TemporalGpuState | undefined;
|
|
324
|
+
/** Last successful TAA GPU state; candidate replacement stays staged until submit. */
|
|
325
|
+
activeTemporalGpuState: TemporalGpuState | undefined;
|
|
326
|
+
/** Submitted temporal generations retained until their queue fence resolves. */
|
|
327
|
+
readonly retiringTemporalGpuStates: Set<TemporalGpuState>;
|
|
328
|
+
/** Last successful projection; candidate frames never overwrite it. */
|
|
329
|
+
lastSuccessfulTemporalView: TemporalView | undefined;
|
|
330
|
+
pendingTemporalCommit: TemporalCommitOutcome;
|
|
331
|
+
/** Staged environment generation is promoted only after queue.submit succeeds. */
|
|
332
|
+
environmentGeneration: EnvironmentGeneration | undefined;
|
|
333
|
+
readonly environmentLifecycle: EnvironmentLifecycle | undefined;
|
|
179
334
|
currentDirectionalShadowView: TextureView | null;
|
|
180
335
|
currentSpotShadowView: TextureView | null;
|
|
181
336
|
readonly instanceBuffers: Map<number, InstanceBufferCacheEntry>;
|
|
@@ -342,10 +497,9 @@ export interface RenderFrameState {
|
|
|
342
497
|
*/
|
|
343
498
|
installedPipelineConfig: RenderPipelineAsset['config'];
|
|
344
499
|
/**
|
|
345
|
-
*
|
|
346
|
-
*
|
|
347
|
-
*
|
|
348
|
-
* `!isHdrpActive` so HDRP demos do not double-count light contributions.
|
|
500
|
+
* Whether the configured standard graph resolved to the clustered lane.
|
|
501
|
+
* Capability gating keeps URP forward bindings on WebGL2 fallback even
|
|
502
|
+
* when a clustered profile was requested.
|
|
349
503
|
*/
|
|
350
504
|
isHdrpActive: boolean;
|
|
351
505
|
/**
|
|
@@ -432,6 +586,16 @@ export interface BindGroupCounts {
|
|
|
432
586
|
keys: string[];
|
|
433
587
|
}
|
|
434
588
|
|
|
589
|
+
/**
|
|
590
|
+
* Successful Bloom record operations staged for the current frame. These
|
|
591
|
+
* counters are promoted only after the shared renderer queue submission.
|
|
592
|
+
*/
|
|
593
|
+
export interface BloomFrameReceipts {
|
|
594
|
+
readonly uploadCount: number;
|
|
595
|
+
readonly bindGroupCount: number;
|
|
596
|
+
readonly encodeCount: number;
|
|
597
|
+
}
|
|
598
|
+
|
|
435
599
|
/**
|
|
436
600
|
* A renderable resolved against the AssetRegistry for the current frame:
|
|
437
601
|
* its source snapshot, the GPU mesh handles, the row index used to correlate
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { RhiCanvasContext, Texture, TextureView } from '@forgeax/engine-rhi';
|
|
2
2
|
import type { RenderGraphExecutionPhase } from '../render-contract';
|
|
3
3
|
import type { ExtractedLights } from '../render-system-extract';
|
|
4
|
+
import { resolveDirectionalShadowAtlasGrid } from '../typed-shadow-atlas';
|
|
4
5
|
import { configureSurface, type PipelineState, type RenderSystemInternals } from './render-context';
|
|
5
6
|
|
|
6
7
|
export function graphExecutionPhase(passName: string): RenderGraphExecutionPhase {
|
|
@@ -20,9 +21,12 @@ export function graphExecutionPhase(passName: string): RenderGraphExecutionPhase
|
|
|
20
21
|
case 'lighting':
|
|
21
22
|
return 'record/graph-execute/lighting';
|
|
22
23
|
case 'forward':
|
|
24
|
+
case 'transmission-forward':
|
|
23
25
|
return 'record/graph-execute/forward';
|
|
24
|
-
case '
|
|
25
|
-
return 'record/graph-execute/
|
|
26
|
+
case 'output-transform':
|
|
27
|
+
return 'record/graph-execute/output-transform';
|
|
28
|
+
case 'present':
|
|
29
|
+
return 'record/graph-execute/present';
|
|
26
30
|
case 'debug-overlay':
|
|
27
31
|
return 'record/graph-execute/debug-overlay';
|
|
28
32
|
case 'shadow':
|
|
@@ -55,17 +59,23 @@ export function acquireSwapChainTarget(
|
|
|
55
59
|
|
|
56
60
|
let currentTextureResult = canvasContext.getCurrentTexture();
|
|
57
61
|
if (!currentTextureResult.ok) {
|
|
58
|
-
pipelineState.perPassResources.configured = false;
|
|
59
62
|
const configured = configureSurface(
|
|
60
63
|
canvasContext,
|
|
61
64
|
internals.device,
|
|
62
65
|
pipelineState.format,
|
|
63
66
|
pipelineState.colorAttachmentFormat,
|
|
64
67
|
);
|
|
65
|
-
if (configured.ok) {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
+
if (!configured.ok) {
|
|
69
|
+
internals.errorRegistry.fire(configured.error);
|
|
70
|
+
internals.healthRegistry.fire({
|
|
71
|
+
reason: 'internal-fault',
|
|
72
|
+
detail: { message: 'surface configure candidate failed; current frame skipped' },
|
|
73
|
+
recoverable: true,
|
|
74
|
+
});
|
|
75
|
+
return null;
|
|
68
76
|
}
|
|
77
|
+
pipelineState.perPassResources.configured = true;
|
|
78
|
+
(globalThis as Record<string, unknown>).__forgeaxSwapChainFormat = pipelineState.format;
|
|
69
79
|
const retry = canvasContext.getCurrentTexture();
|
|
70
80
|
if (!retry.ok) {
|
|
71
81
|
internals.errorRegistry.fire(retry.error);
|
|
@@ -105,14 +115,17 @@ export function resolveShadowMapSize(
|
|
|
105
115
|
const requested = lights.shadowMapSize;
|
|
106
116
|
if (!(requested !== undefined && requested > 0)) return requested;
|
|
107
117
|
const cascades = Math.max(1, Math.min(4, Math.round(lights.cascadeCount ?? 1)));
|
|
108
|
-
const
|
|
118
|
+
const atlasGrid = resolveDirectionalShadowAtlasGrid(cascades);
|
|
109
119
|
const maxDimension = internals.device.limits.maxTextureDimension2D;
|
|
110
120
|
if (!(maxDimension > 0)) return Math.floor(requested);
|
|
111
121
|
const depthTextureDimension =
|
|
112
122
|
internals.device.caps?.backendKind === 'wgpu-webgl2'
|
|
113
123
|
? Math.max(1, Math.floor(maxDimension / 2))
|
|
114
124
|
: maxDimension;
|
|
115
|
-
const maxPerTile = Math.max(
|
|
125
|
+
const maxPerTile = Math.max(
|
|
126
|
+
1,
|
|
127
|
+
Math.floor(depthTextureDimension / Math.max(atlasGrid.columns, atlasGrid.rows)),
|
|
128
|
+
);
|
|
116
129
|
return Math.max(1, Math.min(Math.floor(requested), maxPerTile));
|
|
117
130
|
}
|
|
118
131
|
|