@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
package/src/record/view-ubo.ts
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
import { mat4 } from '@forgeax/engine-math';
|
|
10
10
|
import type { Buffer, RhiQueue } from '@forgeax/engine-rhi';
|
|
11
|
+
import type { FogFrame } from '../extract/environment';
|
|
11
12
|
import type { PointsLinesStyle } from '../points-lines/snapshot';
|
|
12
13
|
import type { CameraSnapshot } from '../render-contract';
|
|
13
14
|
import type {
|
|
@@ -15,6 +16,8 @@ import type {
|
|
|
15
16
|
ExtractedLights,
|
|
16
17
|
SpotLightSnapshot,
|
|
17
18
|
} from '../render-system-extract';
|
|
19
|
+
import type { TemporalView as LegacyTemporalView } from '../temporal/temporal-view';
|
|
20
|
+
import type { TemporalView } from '../temporal/view';
|
|
18
21
|
import { clampPcfKernelSize } from './frame-snapshot';
|
|
19
22
|
import { computeProjectionMatrix, computeViewMatrix } from './helpers';
|
|
20
23
|
|
|
@@ -110,16 +113,34 @@ export function writeViewUbo(
|
|
|
110
113
|
light: DirectionalLightSnapshot,
|
|
111
114
|
lights: ExtractedLights,
|
|
112
115
|
spotShadowSnapshots: readonly SpotLightSnapshot[],
|
|
116
|
+
fogOrTemporal?: FogFrame | TemporalView | LegacyTemporalView,
|
|
117
|
+
temporal?: TemporalView,
|
|
113
118
|
): void {
|
|
119
|
+
const isTemporal =
|
|
120
|
+
fogOrTemporal !== undefined &&
|
|
121
|
+
('currentJitterUv' in fogOrTemporal || 'currentUnjitteredViewProjection' in fogOrTemporal);
|
|
122
|
+
const fog = isTemporal ? undefined : fogOrTemporal;
|
|
123
|
+
const resolvedTemporal = temporal ?? (isTemporal ? fogOrTemporal : undefined);
|
|
114
124
|
// Compose worldViewProj once per frame (view * proj).
|
|
115
125
|
const projMatrix = computeProjectionMatrix(camera);
|
|
116
126
|
const viewMatrix = computeViewMatrix(camera);
|
|
117
|
-
const
|
|
118
|
-
mat4.multiply(
|
|
127
|
+
const unjitteredViewProjection = mat4.create();
|
|
128
|
+
mat4.multiply(unjitteredViewProjection, projMatrix, viewMatrix);
|
|
129
|
+
const jitteredProjection = mat4.create();
|
|
130
|
+
if (resolvedTemporal?.currentJitterUv !== undefined) {
|
|
131
|
+
const jitter = mat4.identity(mat4.create());
|
|
132
|
+
jitter[12] = resolvedTemporal.currentJitterUv[0] * 2;
|
|
133
|
+
jitter[13] = resolvedTemporal.currentJitterUv[1] * -2;
|
|
134
|
+
mat4.multiply(jitteredProjection, jitter, projMatrix);
|
|
135
|
+
} else {
|
|
136
|
+
for (let i = 0; i < 16; i += 1) jitteredProjection[i] = projMatrix[i] ?? 0;
|
|
137
|
+
}
|
|
138
|
+
const mainProjection = mat4.create();
|
|
139
|
+
mat4.multiply(mainProjection, jitteredProjection, viewMatrix);
|
|
119
140
|
|
|
120
141
|
const VIEW_PAYLOAD_FLOATS = 240;
|
|
121
142
|
const viewPayload = new Float32Array(VIEW_PAYLOAD_FLOATS);
|
|
122
|
-
for (let i = 0; i < 16; i++) viewPayload[i] =
|
|
143
|
+
for (let i = 0; i < 16; i++) viewPayload[i] = mainProjection[i] ?? 0;
|
|
123
144
|
viewPayload[16] = (light.direction[0] ?? 0) * light.intensity;
|
|
124
145
|
viewPayload[17] = (light.direction[1] ?? -1) * light.intensity;
|
|
125
146
|
viewPayload[18] = (light.direction[2] ?? 0) * light.intensity;
|
|
@@ -137,7 +158,7 @@ export function writeViewUbo(
|
|
|
137
158
|
// Host pre-computes mat4.invert so the skybox fragment shader avoids
|
|
138
159
|
// per-pixel matrix inversion (charter P4 consistent abstraction).
|
|
139
160
|
const inverseViewProj = mat4.create();
|
|
140
|
-
mat4.invert(inverseViewProj,
|
|
161
|
+
mat4.invert(inverseViewProj, mainProjection);
|
|
141
162
|
for (let i = 0; i < 16; i++) viewPayload[44 + i] = inverseViewProj[i] ?? 0;
|
|
142
163
|
// lightViewProj[1..3] at [60..107].
|
|
143
164
|
if (lights.lightViewProj !== undefined) {
|
|
@@ -149,6 +170,21 @@ export function writeViewUbo(
|
|
|
149
170
|
}
|
|
150
171
|
}
|
|
151
172
|
}
|
|
173
|
+
|
|
174
|
+
// Temporal ABI tail: current and last-successful unjittered projections
|
|
175
|
+
// stay separate from the jittered main projection and never advance on a
|
|
176
|
+
// failed submission. The fixed 240-float payload already reserves these
|
|
177
|
+
// 36 slots at byte offsets 784..920.
|
|
178
|
+
const previous = resolvedTemporal?.previousUnjitteredViewProjection;
|
|
179
|
+
for (let i = 0; i < 16; i += 1) {
|
|
180
|
+
viewPayload[196 + i] = unjitteredViewProjection[i] ?? 0;
|
|
181
|
+
// No previous successful frame exists on first frame/reset. Keep this
|
|
182
|
+
// lane zeroed instead of copying current state into a history slot.
|
|
183
|
+
viewPayload[212 + i] = previous?.[i] ?? 0;
|
|
184
|
+
}
|
|
185
|
+
viewPayload[228] = camera.near;
|
|
186
|
+
viewPayload[229] = camera.far;
|
|
187
|
+
viewPayload[230] = camera.projection === 'orthographic' ? 1 : 0;
|
|
152
188
|
// splitPlanes at [108], [112], [116], [120] (vec4 stride = 4 floats).
|
|
153
189
|
if (lights.splitPlanes !== undefined) {
|
|
154
190
|
for (let s = 0; s < 4; s++) {
|
|
@@ -202,6 +238,18 @@ export function writeViewUbo(
|
|
|
202
238
|
}
|
|
203
239
|
}
|
|
204
240
|
|
|
241
|
+
// Fog is a resource-owner semantic carried by the shared View ABI. Keep the
|
|
242
|
+
// disabled payload zeroed and write only the selected frame facts so both
|
|
243
|
+
// direct and clustered lanes consume the same owner projection.
|
|
244
|
+
if (fog !== undefined) {
|
|
245
|
+
viewPayload[232] = fog.color[0] ?? 0;
|
|
246
|
+
viewPayload[233] = fog.color[1] ?? 0;
|
|
247
|
+
viewPayload[234] = fog.color[2] ?? 0;
|
|
248
|
+
viewPayload[235] = fog.density;
|
|
249
|
+
viewPayload[236] = fog.heightFalloff;
|
|
250
|
+
viewPayload[237] = fog.maxOpacity;
|
|
251
|
+
}
|
|
252
|
+
|
|
205
253
|
const viewUploadResult = queue.writeBuffer(viewUniformBuffer, 0, viewPayload);
|
|
206
254
|
if (!viewUploadResult.ok) throw viewUploadResult.error;
|
|
207
255
|
|
package/src/render-contract.ts
CHANGED
|
@@ -3,11 +3,12 @@ import type { World } from '@forgeax/engine-ecs';
|
|
|
3
3
|
import type { RenderReadLease } from '@forgeax/engine-ecs/projection';
|
|
4
4
|
import type { Vec3 } from '@forgeax/engine-math';
|
|
5
5
|
import type { ProfileFrameToken, Profiler } from '@forgeax/engine-profiler';
|
|
6
|
-
import type { RenderGraphError } from '@forgeax/engine-render-graph';
|
|
6
|
+
import type { ColorValueDomain, RenderGraphError } from '@forgeax/engine-render-graph';
|
|
7
7
|
import type {
|
|
8
8
|
BindGroupLayout,
|
|
9
9
|
Buffer,
|
|
10
10
|
Result,
|
|
11
|
+
RhiCanvasSurfacePresentationProof,
|
|
11
12
|
RhiCaps,
|
|
12
13
|
RhiCommandEncoder,
|
|
13
14
|
RhiDevice,
|
|
@@ -15,6 +16,7 @@ import type {
|
|
|
15
16
|
RhiInstance,
|
|
16
17
|
RhiRenderPassEncoder,
|
|
17
18
|
RenderPipeline as RhiRenderPipeline,
|
|
19
|
+
Sampler,
|
|
18
20
|
Texture,
|
|
19
21
|
TextureFormat,
|
|
20
22
|
TextureView,
|
|
@@ -23,16 +25,28 @@ import type { SkinError } from '@forgeax/engine-skinning';
|
|
|
23
25
|
import type { ImageError } from '@forgeax/engine-types';
|
|
24
26
|
import type { RhiBackendInstrumentation } from './assembly/backend-contract';
|
|
25
27
|
import type { Antialias, BloomEnabled, Tonemap } from './components/camera';
|
|
28
|
+
import type { EnvironmentInspection } from './environment/inspection';
|
|
26
29
|
import type { RenderError } from './errors/render';
|
|
27
30
|
import type { RenderFeature, RenderFeatureDiagnostics } from './features/types';
|
|
28
31
|
import type { PostProcessShaderEntry } from './fullscreen-post-process-pass';
|
|
29
|
-
import type {
|
|
30
|
-
|
|
32
|
+
import type {
|
|
33
|
+
BloomInspection,
|
|
34
|
+
MotionBlurInspection,
|
|
35
|
+
RenderSceneInspection,
|
|
36
|
+
TemporalTargetInspection,
|
|
37
|
+
TransmissionInspection,
|
|
38
|
+
} from './inspection-types';
|
|
39
|
+
import type { TemporalInspection } from './temporal/inspection';
|
|
40
|
+
|
|
41
|
+
export type { TransmissionInspection } from './inspection-types';
|
|
31
42
|
export type { PointsLinesInspection } from './points-lines/inspection';
|
|
32
43
|
|
|
33
44
|
import type { MeshMaterialBindingObservation } from './mesh-material-bindings';
|
|
34
45
|
import type { StandardProfile } from './pipeline/standard-profile';
|
|
35
46
|
import type { PostProcessError } from './post-process-errors';
|
|
47
|
+
import type { VolumeTimingObservation } from './record/gpu-timing';
|
|
48
|
+
import type { TemporalView } from './temporal/view';
|
|
49
|
+
import type { VolumetricFogInspection } from './volume/inspection';
|
|
36
50
|
|
|
37
51
|
export type RenderResult<T, E> =
|
|
38
52
|
| { readonly ok: true; readonly value: T }
|
|
@@ -51,6 +65,10 @@ export type RenderWorldLease = RenderReadLease;
|
|
|
51
65
|
export interface CameraSnapshot {
|
|
52
66
|
/** Stable ECS identity used by the frame plan's camera authority fact. */
|
|
53
67
|
readonly entityKey?: number;
|
|
68
|
+
/** World index supplied by the multi-world extract merge. */
|
|
69
|
+
readonly worldId?: number;
|
|
70
|
+
/** Camera-owned history generation forwarded into the frame plan. */
|
|
71
|
+
readonly historyVersion?: number;
|
|
54
72
|
/** World-space camera translation (mat4.getTranslation of Transform.world). */
|
|
55
73
|
readonly position: Vec3;
|
|
56
74
|
/** Resolved world-space camera mat4, copied from Transform.world. */
|
|
@@ -74,10 +92,26 @@ export interface CameraSnapshot {
|
|
|
74
92
|
readonly bloomIntensity: number;
|
|
75
93
|
readonly bloomBlurRadius: number;
|
|
76
94
|
readonly clearColor: readonly [number, number, number, number];
|
|
95
|
+
/** Renderer-owned temporal projection used by Standard's TAA producer. */
|
|
96
|
+
readonly temporal?: TemporalView;
|
|
97
|
+
/** Active-camera motion blur parameters, present only when demanded. */
|
|
98
|
+
readonly motionBlur?: {
|
|
99
|
+
readonly shutterAngle: number;
|
|
100
|
+
readonly maxRadiusPixels: number;
|
|
101
|
+
readonly sampleCount: number;
|
|
102
|
+
};
|
|
77
103
|
}
|
|
78
104
|
|
|
79
|
-
/** Stable identity owned by the Standard feature host for
|
|
80
|
-
export const
|
|
105
|
+
/** Stable identity owned by the Standard feature host for output transform. */
|
|
106
|
+
export const STANDARD_OUTPUT_TRANSFORM_FEATURE_ID = 'forgeax::standard::output-transform';
|
|
107
|
+
|
|
108
|
+
export type {
|
|
109
|
+
EnvironmentFrame,
|
|
110
|
+
EnvironmentSource,
|
|
111
|
+
FogFrame,
|
|
112
|
+
FramePlan,
|
|
113
|
+
} from './extract/environment';
|
|
114
|
+
export type { TemporalView } from './temporal/view';
|
|
81
115
|
|
|
82
116
|
/**
|
|
83
117
|
* Render-graph state exposed to pipeline declarations. Concrete pipeline
|
|
@@ -87,6 +121,14 @@ export const STANDARD_TONEMAP_FEATURE_ID = 'forgeax::standard::tonemap';
|
|
|
87
121
|
interface RenderPipelineStateView {
|
|
88
122
|
readonly format: TextureFormat;
|
|
89
123
|
readonly colorAttachmentFormat: TextureFormat;
|
|
124
|
+
/** Renderer-owned View UBO shared by Standard lighting, shadows, and fog. */
|
|
125
|
+
readonly viewUniformBuffer: Buffer;
|
|
126
|
+
/** Renderer-owned SpotLight std430 buffer shared by Standard and volume. */
|
|
127
|
+
readonly pointLightsBuffer: Buffer;
|
|
128
|
+
readonly spotLightsBuffer: Buffer;
|
|
129
|
+
/** Fallback resources keep the shared view layout valid when no projector is authored. */
|
|
130
|
+
readonly defaultWhiteTextureView: TextureView;
|
|
131
|
+
readonly defaultSampler: Sampler;
|
|
90
132
|
}
|
|
91
133
|
|
|
92
134
|
/**
|
|
@@ -96,6 +138,16 @@ interface RenderPipelineStateView {
|
|
|
96
138
|
*/
|
|
97
139
|
interface RenderPipelineRuntime {
|
|
98
140
|
readonly device: RhiDevice;
|
|
141
|
+
/** Runtime-owned shader module factory used by built-in graph producers. */
|
|
142
|
+
readonly shaderModuleFactory?: {
|
|
143
|
+
createShaderModule(input: {
|
|
144
|
+
readonly code: string;
|
|
145
|
+
readonly label?: string | undefined;
|
|
146
|
+
}): import('@forgeax/engine-types').Result<
|
|
147
|
+
import('@forgeax/engine-rhi').ShaderModule,
|
|
148
|
+
RhiError
|
|
149
|
+
>;
|
|
150
|
+
};
|
|
99
151
|
readonly errorRegistry: { fire(error: RendererError): void };
|
|
100
152
|
readonly debugOverlay?: RenderDebugOverlay | undefined;
|
|
101
153
|
readonly lookupPostProcess?: (id: string) => PostProcessShaderEntry | undefined;
|
|
@@ -139,6 +191,52 @@ export interface RenderPipelineContext {
|
|
|
139
191
|
readonly msaaActive: boolean;
|
|
140
192
|
readonly geometryColorResolveView: TextureView | null;
|
|
141
193
|
readonly ldrSpriteColorView: TextureView | null;
|
|
194
|
+
/** Renderer-owned volume resources prepared from the authored ECS snapshot. */
|
|
195
|
+
readonly volumetricFog?: VolumetricFogFrameContext;
|
|
196
|
+
/** Renderer-owned SpotLight projector resources, independent of fog. */
|
|
197
|
+
readonly spotLightProjector?: SpotLightProjectorFrameContext;
|
|
198
|
+
/** Build-time composed utility sources for the renderer-owned volume passes. */
|
|
199
|
+
readonly volumetricFogShaders?: VolumetricFogShaderSources;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/** Stable utility entry-point sources emitted by the shader manifest. */
|
|
203
|
+
export interface VolumetricFogShaderSources {
|
|
204
|
+
readonly inject: string;
|
|
205
|
+
readonly temporal: string;
|
|
206
|
+
readonly integrate: string;
|
|
207
|
+
readonly composite: string;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* GPU resources for one validated volumetric-fog candidate. The record stage
|
|
212
|
+
* owns residency and parameter uploads; graph passes consume this narrow view
|
|
213
|
+
* and never reach into AssetRegistry or World.
|
|
214
|
+
*/
|
|
215
|
+
export interface VolumetricFogFrameContext {
|
|
216
|
+
readonly densityTexture: Texture;
|
|
217
|
+
readonly densityView: TextureView;
|
|
218
|
+
readonly paramsBuffer: Buffer;
|
|
219
|
+
readonly densityGeneration: number;
|
|
220
|
+
/** Accepted graph-owned history slot; null means first frame/reset. */
|
|
221
|
+
readonly historyReadSlot: 0 | 1 | null;
|
|
222
|
+
/** Pending graph-owned history slot; promoted only after queue.submit succeeds. */
|
|
223
|
+
readonly historyWriteSlot: 0 | 1;
|
|
224
|
+
readonly historyValid: boolean;
|
|
225
|
+
/** Accepted SpotLight projector resources resolved by the GPU residency owner. */
|
|
226
|
+
readonly projectorTexture?: Texture;
|
|
227
|
+
readonly projectorView?: TextureView;
|
|
228
|
+
readonly projectorSampler?: Sampler;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* GPU resources for the single surface SpotLight projector binding. The
|
|
233
|
+
* projector is a SpotLight-owned cookie and therefore remains available when
|
|
234
|
+
* volumetric fog is disabled; volume integration may reuse the same tuple.
|
|
235
|
+
*/
|
|
236
|
+
export interface SpotLightProjectorFrameContext {
|
|
237
|
+
readonly texture: Texture;
|
|
238
|
+
readonly view: TextureView;
|
|
239
|
+
readonly sampler: Sampler;
|
|
142
240
|
}
|
|
143
241
|
|
|
144
242
|
/**
|
|
@@ -243,6 +341,58 @@ export interface FrameReceiptObservation {
|
|
|
243
341
|
readonly frameId: number;
|
|
244
342
|
readonly deviceGeneration: number;
|
|
245
343
|
readonly include: readonly ('timings' | 'draws' | 'bindings')[];
|
|
344
|
+
readonly timings?: VolumeTimingObservation;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
/** Stable backend facts for the Standard output transform projection. */
|
|
348
|
+
export interface RenderOutputInspection {
|
|
349
|
+
readonly outputTransform?: typeof STANDARD_OUTPUT_TRANSFORM_FEATURE_ID;
|
|
350
|
+
readonly displayEncoded: boolean;
|
|
351
|
+
readonly intermediateFormat?: TextureFormat;
|
|
352
|
+
/** Concrete surface route committed by configureSurface. */
|
|
353
|
+
readonly surfaceProfile?: 'dual-view' | 'raw-only';
|
|
354
|
+
/** Pass names from the same committed graph as the output facts. */
|
|
355
|
+
readonly graphPassNames: readonly string[];
|
|
356
|
+
/** Detached descriptor for the graph-owned output target, when present. */
|
|
357
|
+
readonly standardOutputColor?: RenderStandardOutputColorInspection;
|
|
358
|
+
readonly surfaceStorage: TextureFormat;
|
|
359
|
+
readonly surfaceDisplay: TextureFormat;
|
|
360
|
+
readonly endpoint: 'surface.storage.raw';
|
|
361
|
+
readonly capability: 'rgba16float-renderable' | 'surface-raw-endpoint' | 'unavailable';
|
|
362
|
+
readonly presentationProof?: RhiCanvasSurfacePresentationProof;
|
|
363
|
+
readonly error:
|
|
364
|
+
| {
|
|
365
|
+
readonly code: string;
|
|
366
|
+
readonly expected: string;
|
|
367
|
+
readonly hint: string;
|
|
368
|
+
readonly detail?: unknown;
|
|
369
|
+
}
|
|
370
|
+
| undefined;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
/** Detached descriptor for the graph-owned display-encoded intermediate. */
|
|
374
|
+
export interface RenderStandardOutputColorInspection {
|
|
375
|
+
readonly format: TextureFormat;
|
|
376
|
+
readonly domain?: ColorValueDomain;
|
|
377
|
+
readonly width: number;
|
|
378
|
+
readonly height: number;
|
|
379
|
+
readonly sampleCount: number;
|
|
380
|
+
readonly usage: number;
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
/** Stable identity refs for a renderer-owned frame observation. */
|
|
384
|
+
export interface RenderObservationInspection {
|
|
385
|
+
readonly observationId: string;
|
|
386
|
+
readonly frameId: number;
|
|
387
|
+
/** Camera antialias mode used by the frame carrying this observation. */
|
|
388
|
+
readonly antialias?: Antialias;
|
|
389
|
+
/** Surface route committed for the same frame graph. */
|
|
390
|
+
readonly surfaceProfile?: 'dual-view' | 'raw-only';
|
|
391
|
+
/** Capability fact used when resolving a raw-only float target. */
|
|
392
|
+
readonly rgba16floatRenderable?: boolean;
|
|
393
|
+
/** Exact pass names and target descriptor from the committed graph. */
|
|
394
|
+
readonly passNames: readonly string[];
|
|
395
|
+
readonly standardOutputColor?: RenderStandardOutputColorInspection;
|
|
246
396
|
}
|
|
247
397
|
|
|
248
398
|
/**
|
|
@@ -260,18 +410,40 @@ export interface RenderInspection {
|
|
|
260
410
|
readonly frameId: number;
|
|
261
411
|
readonly deviceGeneration: number;
|
|
262
412
|
};
|
|
413
|
+
/** Renderer-owned authored volume projection and submit/LKG state. */
|
|
414
|
+
readonly volumetricFog?: VolumetricFogInspection;
|
|
263
415
|
readonly features: readonly string[];
|
|
264
416
|
/** Truthful lifecycle facts for every registered declarative feature. */
|
|
265
417
|
readonly featureDiagnostics: readonly RenderFeatureDiagnostics[];
|
|
266
418
|
readonly frustumStats: { readonly culled: number; readonly total: number };
|
|
267
419
|
readonly visibilityStats: { readonly explicitlyHidden: number };
|
|
268
420
|
readonly renderScene: RenderSceneInspection;
|
|
421
|
+
/** Last completed transmission candidate facts, detached from GPU handles. */
|
|
422
|
+
readonly transmission?: TransmissionInspection;
|
|
269
423
|
readonly meshMaterialBindings: readonly MeshMaterialBindingObservation[];
|
|
270
424
|
readonly perFramePassNames: readonly string[];
|
|
271
425
|
readonly bindGroupCounts: {
|
|
272
426
|
readonly createBindGroup: number;
|
|
273
427
|
readonly keys: readonly string[];
|
|
274
428
|
};
|
|
429
|
+
/** Output transform facts; never includes fixture metrics or pixel bytes. */
|
|
430
|
+
readonly outputTransform?: typeof STANDARD_OUTPUT_TRANSFORM_FEATURE_ID;
|
|
431
|
+
readonly displayEncoded: boolean;
|
|
432
|
+
readonly intermediateFormat?: TextureFormat;
|
|
433
|
+
readonly surfaceStorage: TextureFormat;
|
|
434
|
+
readonly surfaceDisplay: TextureFormat;
|
|
435
|
+
readonly endpoint: 'surface.storage.raw';
|
|
436
|
+
readonly capability: RenderOutputInspection['capability'];
|
|
437
|
+
readonly presentationProof?: RhiCanvasSurfacePresentationProof;
|
|
438
|
+
readonly error: RenderOutputInspection['error'];
|
|
439
|
+
readonly observation: RenderObservationInspection;
|
|
440
|
+
readonly environment: EnvironmentInspection;
|
|
441
|
+
readonly temporal: TemporalInspection;
|
|
442
|
+
readonly bloom: BloomInspection;
|
|
443
|
+
/** Semantic Standard temporal target metadata; no graph or RHI handles. */
|
|
444
|
+
readonly temporalTarget?: TemporalTargetInspection;
|
|
445
|
+
/** Renderer-owned Motion Blur facts; absent when no component is active. */
|
|
446
|
+
readonly motionBlur?: MotionBlurInspection;
|
|
275
447
|
}
|
|
276
448
|
|
|
277
449
|
/** Backend marker — single-element union preserved for future extensibility (D-2). */
|
|
@@ -379,7 +551,8 @@ export const RENDER_GRAPH_EXECUTION_PHASE_CATALOG = [
|
|
|
379
551
|
'record/graph-execute/forward/material-bind-groups',
|
|
380
552
|
'record/graph-execute/forward/pipeline-selection',
|
|
381
553
|
'record/graph-execute/forward/draw-submit',
|
|
382
|
-
'record/graph-execute/
|
|
554
|
+
'record/graph-execute/output-transform',
|
|
555
|
+
'record/graph-execute/present',
|
|
383
556
|
'record/graph-execute/debug-overlay',
|
|
384
557
|
'record/graph-execute/shadow',
|
|
385
558
|
'record/graph-execute/spot-shadow',
|
|
@@ -474,6 +647,8 @@ export interface RendererOptions {
|
|
|
474
647
|
readonly standardProfile?: RenderProfile | undefined;
|
|
475
648
|
/** Explicit profiler capability shared by App and Render. */
|
|
476
649
|
readonly profiler?: Profiler | undefined;
|
|
650
|
+
/** Explicitly request timestamp-query for receipt-bound GPU profiling. */
|
|
651
|
+
readonly captureGpuTimings?: boolean | undefined;
|
|
477
652
|
/** Optional host-owned RHI lifecycle instrumentation, such as recording. */
|
|
478
653
|
readonly rhiInstrumentation?: RhiBackendInstrumentation | undefined;
|
|
479
654
|
// feat-20260608-create-app-param-surface-trim / M1 / AC-02: `clearColor`
|
package/src/render-data.ts
CHANGED
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
// GPU-resource kind would surface as a `tsc -b` exhaustiveness error at the
|
|
16
16
|
// switch rather than a silent fallthrough (AC-06).
|
|
17
17
|
|
|
18
|
-
import { numMipLevels } from '@forgeax/engine-assets-runtime';
|
|
19
18
|
import {
|
|
20
19
|
bytesPerRow as blockBytesPerRow,
|
|
21
20
|
blockParamsForFormat,
|
|
@@ -29,9 +28,11 @@ import { err, ok, type Result } from '@forgeax/engine-rhi';
|
|
|
29
28
|
import {
|
|
30
29
|
ASSET_ERROR_HINTS,
|
|
31
30
|
type AssetError,
|
|
31
|
+
deriveTextureLayout,
|
|
32
32
|
type MeshAsset,
|
|
33
33
|
type Submesh,
|
|
34
34
|
type TextureAsset,
|
|
35
|
+
type TextureShape,
|
|
35
36
|
} from '@forgeax/engine-types';
|
|
36
37
|
import {
|
|
37
38
|
GPU_TEXTURE_USAGE_COPY_DST,
|
|
@@ -88,12 +89,16 @@ export interface MeshRenderData {
|
|
|
88
89
|
readonly submeshes: readonly Submesh[];
|
|
89
90
|
}
|
|
90
91
|
|
|
91
|
-
/** Descriptor for a
|
|
92
|
+
/** Descriptor for a sampled texture's GPU resource (projected from POD). */
|
|
92
93
|
export interface TextureRenderData {
|
|
93
94
|
/** Logical width retained for existing projection consumers. */
|
|
94
95
|
readonly width: number;
|
|
95
96
|
/** Logical height retained for existing projection consumers. */
|
|
96
97
|
readonly height: number;
|
|
98
|
+
/** Authored shape; the residency layer must preserve this view dimension. */
|
|
99
|
+
readonly shape: TextureShape;
|
|
100
|
+
/** Array layers for `2d-array`, depth slices for `3d`, otherwise one. */
|
|
101
|
+
readonly depthOrArrayLayers: number;
|
|
97
102
|
/** Authored content extent; TextureAsset remains the logical asset SSOT. */
|
|
98
103
|
readonly logicalExtent: TextureExtent;
|
|
99
104
|
/** GPU allocation extent, derived from format + logicalExtent. */
|
|
@@ -105,10 +110,10 @@ export interface TextureRenderData {
|
|
|
105
110
|
readonly usage: number;
|
|
106
111
|
/**
|
|
107
112
|
* Row pitch for the BASE mip (level 0) the store passes to `writeTexture`.
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
* The per-mip layout for a multi-level compressed
|
|
111
|
-
* {@link deriveMipUploadLayout}.
|
|
113
|
+
* Derived from the canonical texture layout, so format-specific uncompressed
|
|
114
|
+
* widths (for example R8 density) and block-compressed widths stay aligned
|
|
115
|
+
* with the upload contract. The per-mip layout for a multi-level compressed
|
|
116
|
+
* upload comes from {@link deriveMipUploadLayout}.
|
|
112
117
|
*/
|
|
113
118
|
readonly bytesPerRow: number;
|
|
114
119
|
/** True iff `format` is a block-compressed format (drives the store's upload arm). */
|
|
@@ -262,6 +267,8 @@ export function deriveRenderDataMesh(mesh: MeshAsset): Result<MeshRenderData, As
|
|
|
262
267
|
* inconsistent (a `-srgb` format requires an `srgb` colorSpace and vice versa).
|
|
263
268
|
*/
|
|
264
269
|
export function deriveRenderDataTexture(tex: TextureAsset): Result<TextureRenderData, AssetError> {
|
|
270
|
+
const width = tex.shape.extent.width;
|
|
271
|
+
const height = tex.shape.extent.height;
|
|
265
272
|
const isSrgbFormat = tex.format.endsWith('-srgb');
|
|
266
273
|
const expectedColorSpace: 'srgb' | 'linear' = isSrgbFormat ? 'srgb' : 'linear';
|
|
267
274
|
if (tex.colorSpace !== expectedColorSpace) {
|
|
@@ -275,14 +282,23 @@ export function deriveRenderDataTexture(tex: TextureAsset): Result<TextureRender
|
|
|
275
282
|
}
|
|
276
283
|
|
|
277
284
|
const compressed = isCompressedFormat(tex.format);
|
|
285
|
+
const layout = deriveTextureLayout({ shape: tex.shape, format: tex.format, mips: tex.mips });
|
|
286
|
+
if (!layout.ok) {
|
|
287
|
+
return err(
|
|
288
|
+
projectionError({
|
|
289
|
+
code: 'invalid-source-format',
|
|
290
|
+
expected: layout.error.expected,
|
|
291
|
+
hint: layout.error.hint,
|
|
292
|
+
}),
|
|
293
|
+
);
|
|
294
|
+
}
|
|
278
295
|
// feat-20260707 M5 / w35 (AC-09, D-9): a block-compressed texture cannot have
|
|
279
296
|
// its mips GPU-generated (F-7). An OFFLINE chain baked into `data`
|
|
280
297
|
// (mipLevelCount > 1, e.g. a KTX2 level chain) is the normal compressed path
|
|
281
298
|
// and passes; requesting RUNTIME mip generation (`mipmap:true` with no offline
|
|
282
299
|
// chain) fails fast with a self-recovery hint (fail-fast at the projection
|
|
283
300
|
// layer -- producer self-validate).
|
|
284
|
-
|
|
285
|
-
if (compressed && tex.mipmap === true && !hasOfflineMipChain) {
|
|
301
|
+
if (compressed && tex.mips.kind === 'generate') {
|
|
286
302
|
return err(
|
|
287
303
|
projectionError({
|
|
288
304
|
code: 'mipgen-unsupported-compressed-format',
|
|
@@ -296,15 +312,19 @@ export function deriveRenderDataTexture(tex: TextureAsset): Result<TextureRender
|
|
|
296
312
|
// Uncompressed: runtime mip-gen count from the pixel size. Compressed: the
|
|
297
313
|
// level count is authored (offline chain) -- honour the POD's mipLevelCount,
|
|
298
314
|
// never re-derive it from the size (a compressed chain may stop early).
|
|
299
|
-
const mipLevelCount =
|
|
300
|
-
? Math.max(1, tex.mipLevelCount ?? 1)
|
|
301
|
-
: tex.mipmap
|
|
302
|
-
? numMipLevels(tex)
|
|
303
|
-
: 1;
|
|
315
|
+
const mipLevelCount = layout.value.levels.length;
|
|
304
316
|
|
|
305
|
-
const
|
|
306
|
-
|
|
307
|
-
|
|
317
|
+
const baseLevel = layout.value.levels[0];
|
|
318
|
+
if (baseLevel === undefined) {
|
|
319
|
+
return err(
|
|
320
|
+
projectionError({
|
|
321
|
+
code: 'invalid-source-format',
|
|
322
|
+
expected: 'texture layout contains a base mip level',
|
|
323
|
+
hint: ASSET_ERROR_HINTS['invalid-source-format'],
|
|
324
|
+
}),
|
|
325
|
+
);
|
|
326
|
+
}
|
|
327
|
+
if (!compressed && tex.data.byteLength < baseLevel.byteLength) {
|
|
308
328
|
return err(
|
|
309
329
|
projectionError({
|
|
310
330
|
code: 'invalid-source-format',
|
|
@@ -318,8 +338,8 @@ export function deriveRenderDataTexture(tex: TextureAsset): Result<TextureRender
|
|
|
318
338
|
// from the format, not aggregate payload length: imported images may retain
|
|
319
339
|
// trailing decoder bytes and offline mip chains contain more than the base mip.
|
|
320
340
|
const bytesPerRow = compressed
|
|
321
|
-
? (blockBytesPerRow(tex.format,
|
|
322
|
-
:
|
|
341
|
+
? (blockBytesPerRow(tex.format, width) ?? baseLevel.bytesPerRow)
|
|
342
|
+
: baseLevel.bytesPerRow;
|
|
323
343
|
|
|
324
344
|
// Compressed formats are not renderable -- RENDER_ATTACHMENT would fail
|
|
325
345
|
// createTexture validation, and the runtime mipmap blit (which needs it) never
|
|
@@ -333,9 +353,16 @@ export function deriveRenderDataTexture(tex: TextureAsset): Result<TextureRender
|
|
|
333
353
|
GPU_TEXTURE_USAGE_COPY_SRC;
|
|
334
354
|
|
|
335
355
|
return ok({
|
|
336
|
-
width
|
|
337
|
-
height
|
|
338
|
-
|
|
356
|
+
width,
|
|
357
|
+
height,
|
|
358
|
+
shape: tex.shape,
|
|
359
|
+
depthOrArrayLayers:
|
|
360
|
+
tex.shape.viewDimension === '2d'
|
|
361
|
+
? 1
|
|
362
|
+
: tex.shape.viewDimension === '2d-array'
|
|
363
|
+
? tex.shape.extent.layers
|
|
364
|
+
: tex.shape.extent.depth,
|
|
365
|
+
...deriveTextureExtent(tex.format, width, height),
|
|
339
366
|
format: tex.format,
|
|
340
367
|
mipLevelCount,
|
|
341
368
|
usage,
|
|
@@ -373,8 +400,9 @@ export function deriveRenderDataCubemap(source: TextureAsset): Result<CubeRender
|
|
|
373
400
|
}),
|
|
374
401
|
);
|
|
375
402
|
}
|
|
403
|
+
const sourceHeight = source.shape.viewDimension === '2d' ? source.shape.extent.height : 0;
|
|
376
404
|
return ok({
|
|
377
|
-
cubeFaceSize:
|
|
405
|
+
cubeFaceSize: sourceHeight,
|
|
378
406
|
outputFormat: 'rgba16float',
|
|
379
407
|
needsHalfConversion: source.format === 'rgba32float',
|
|
380
408
|
cubeUsage:
|
|
@@ -665,7 +665,10 @@ function dispatchFullscreenPass(
|
|
|
665
665
|
// the swap-chain path uses the backend-selected surface view format.
|
|
666
666
|
let writeFormat = ctx.pipelineState?.colorAttachmentFormat ?? 'rgba8unorm-srgb';
|
|
667
667
|
if (graphPass !== undefined) {
|
|
668
|
-
|
|
668
|
+
// Typed graph passes must write their declared output target. The frame
|
|
669
|
+
// surface view is only the fallback for legacy passes; using it here
|
|
670
|
+
// leaves a typed output target cleared while the next pass samples it.
|
|
671
|
+
writeView = (resolveCtx?.resolve(color) as TextureView | undefined) ?? ctx.view;
|
|
669
672
|
writeFormat = graphOutputFormat ?? writeFormat;
|
|
670
673
|
} else if (rawSwapchainOutput && color === 'swapchain') {
|
|
671
674
|
const rawViewRes = ctx.runtime.device.createTextureView(ctx.currentTexture, {});
|
|
@@ -733,6 +736,20 @@ function dispatchFullscreenPass(
|
|
|
733
736
|
paramsBuffer,
|
|
734
737
|
depthTexView,
|
|
735
738
|
depthSampler,
|
|
739
|
+
built.extraColorBindings.map((binding, index) => {
|
|
740
|
+
const read = entry.reads?.filter(
|
|
741
|
+
(candidate) => typeof candidate === 'string' || candidate.sampleType !== 'depth',
|
|
742
|
+
)[index + 1];
|
|
743
|
+
const key = typeof read === 'string' ? read : read?.key;
|
|
744
|
+
const view = key === undefined ? undefined : resolveCtx?.resolve(key);
|
|
745
|
+
if (view === undefined) {
|
|
746
|
+
throw new PostProcessError({
|
|
747
|
+
code: 'fullscreen-input-not-found',
|
|
748
|
+
detail: { readsKey: key ?? 'additional-read', passName: name },
|
|
749
|
+
});
|
|
750
|
+
}
|
|
751
|
+
return { binding, view: view as TextureView };
|
|
752
|
+
}),
|
|
736
753
|
);
|
|
737
754
|
if (bindGroup === null) return;
|
|
738
755
|
|