@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/main-pass.ts
CHANGED
|
@@ -39,8 +39,57 @@ export type MainPassOptions = {
|
|
|
39
39
|
readonly depthView?: TextureView | null;
|
|
40
40
|
readonly passKind?: PassKind;
|
|
41
41
|
readonly clearColor?: readonly [number, number, number, number];
|
|
42
|
+
readonly recordMode?: 'opaque' | 'transmission' | 'transparent';
|
|
43
|
+
readonly transmissionBackdropView?: TextureView | null;
|
|
42
44
|
};
|
|
43
45
|
|
|
46
|
+
const TRANSMISSION_VARIANT_SET = 'TRANSMISSION_AVAILABLE=true';
|
|
47
|
+
|
|
48
|
+
function isTransmissionMaterial(material: MaterialSnapshot): boolean {
|
|
49
|
+
return (
|
|
50
|
+
material.materialShaderId === 'forgeax::default-standard-pbr' &&
|
|
51
|
+
typeof material.paramSnapshot?.transmission === 'number' &&
|
|
52
|
+
material.paramSnapshot.transmission > 0
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function matchesRecordMode(
|
|
57
|
+
material: MaterialSnapshot,
|
|
58
|
+
mode: 'opaque' | 'transmission' | 'transparent',
|
|
59
|
+
): boolean {
|
|
60
|
+
const transmission = isTransmissionMaterial(material);
|
|
61
|
+
if (mode === 'transmission') return transmission;
|
|
62
|
+
if (mode === 'transparent') return material.transparent === true && !transmission;
|
|
63
|
+
return !transmission && material.transparent !== true;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function matchedMaterialsForRecordMode(
|
|
67
|
+
c: _InternalRenderPipelineContext,
|
|
68
|
+
matchedMaterials: ReadonlyMap<number, ReadonlySet<number>> | null,
|
|
69
|
+
mode: 'opaque' | 'transmission' | 'transparent' | undefined,
|
|
70
|
+
): ReadonlyMap<number, ReadonlySet<number>> | null {
|
|
71
|
+
if (mode === undefined) return matchedMaterials;
|
|
72
|
+
const filtered = new Map<number, ReadonlySet<number>>();
|
|
73
|
+
for (const entry of c.validatedOrdered) {
|
|
74
|
+
const dispatchHandles = matchedMaterials?.get(entry.renderableIndex);
|
|
75
|
+
if (matchedMaterials !== null && dispatchHandles === undefined) continue;
|
|
76
|
+
const candidateHandles =
|
|
77
|
+
dispatchHandles ??
|
|
78
|
+
(mode === 'transmission'
|
|
79
|
+
? []
|
|
80
|
+
: entry.source.materials.map((material) => material.materialHandle ?? 0));
|
|
81
|
+
const handles = new Set<number>();
|
|
82
|
+
for (const handle of candidateHandles) {
|
|
83
|
+
const material =
|
|
84
|
+
entry.source.materials.find((candidate) => (candidate.materialHandle ?? 0) === handle) ??
|
|
85
|
+
entry.source.material;
|
|
86
|
+
if (matchesRecordMode(material, mode)) handles.add(handle);
|
|
87
|
+
}
|
|
88
|
+
if (handles.size > 0) filtered.set(entry.renderableIndex, handles);
|
|
89
|
+
}
|
|
90
|
+
return filtered;
|
|
91
|
+
}
|
|
92
|
+
|
|
44
93
|
/**
|
|
45
94
|
* feat-20260529-rendergraph-pass-abstraction M4 / w13b: main forward
|
|
46
95
|
* (geometry) pass recording, extracted verbatim from recordFrame. Uses the
|
|
@@ -87,9 +136,20 @@ export function recordMainPass(
|
|
|
87
136
|
// msaaActive boolean (already on the context).
|
|
88
137
|
const sampleCount = msaaActive ? 4 : 1;
|
|
89
138
|
const passKind = options?.passKind ?? 'forward';
|
|
139
|
+
const recordMode = options?.recordMode;
|
|
140
|
+
const transmissionBackdropView = options?.transmissionBackdropView;
|
|
141
|
+
if (recordMode === 'transmission' && transmissionBackdropView == null) {
|
|
142
|
+
throw new RhiError({
|
|
143
|
+
code: 'webgpu-runtime-error',
|
|
144
|
+
expected: 'transmissionBackdropView != null for transmission record mode',
|
|
145
|
+
hint: 'the typed Standard transmission pass must resolve its private backdrop view',
|
|
146
|
+
});
|
|
147
|
+
}
|
|
90
148
|
const colorViews = options?.colorViews ?? [geometryColorView];
|
|
91
149
|
const colorFormats = options?.colorFormats ?? [
|
|
92
|
-
(c.tonemapActive
|
|
150
|
+
(c.tonemapActive || c.transparentColorFormat === 'rgba16float'
|
|
151
|
+
? 'rgba16float'
|
|
152
|
+
: pipelineState.colorAttachmentFormat) as GPUTextureFormat,
|
|
93
153
|
];
|
|
94
154
|
const targetDepthView = options?.depthView ?? geometryDepthView;
|
|
95
155
|
const clearColor = options?.clearColor ?? clear;
|
|
@@ -198,8 +258,20 @@ export function recordMainPass(
|
|
|
198
258
|
// feat-20260609 M2: filter entities by pass selector.
|
|
199
259
|
const matchedIndices =
|
|
200
260
|
selector !== undefined ? buildMatchedRenderableIndices(dispatch, selector) : null;
|
|
201
|
-
const
|
|
261
|
+
const selectorMatchedMaterials =
|
|
202
262
|
selector !== undefined ? buildMatchedMaterialHandlesByRenderable(dispatch, selector) : null;
|
|
263
|
+
const matchedMaterials = matchedMaterialsForRecordMode(c, selectorMatchedMaterials, recordMode);
|
|
264
|
+
const recordContext =
|
|
265
|
+
recordMode === undefined
|
|
266
|
+
? c
|
|
267
|
+
: {
|
|
268
|
+
...c,
|
|
269
|
+
splitLdrSprite: recordMode === 'transparent' ? false : c.splitLdrSprite,
|
|
270
|
+
validatedOrdered: c.validatedOrdered.map((entry) => ({
|
|
271
|
+
...entry,
|
|
272
|
+
...(recordMode === 'transmission' ? { variantSet: TRANSMISSION_VARIANT_SET } : {}),
|
|
273
|
+
})),
|
|
274
|
+
};
|
|
203
275
|
|
|
204
276
|
if (validatedOrdered.length > 0) {
|
|
205
277
|
// feat-20260518-pbr-direct-lighting-mvp M5 / w22.10 (D-4 + D-9 +
|
|
@@ -363,6 +435,7 @@ export function recordMainPass(
|
|
|
363
435
|
materialBgShared: frameState.materialBgShared,
|
|
364
436
|
materialBgAssemblyCache: c.materialBgAssemblyCache,
|
|
365
437
|
bindGroupCounts,
|
|
438
|
+
...(transmissionBackdropView === undefined ? {} : { transmissionBackdropView }),
|
|
366
439
|
};
|
|
367
440
|
const buildPerSubmeshMaterialBg = (
|
|
368
441
|
submeshMaterial: MaterialSnapshot,
|
|
@@ -551,7 +624,7 @@ export function recordMainPass(
|
|
|
551
624
|
// M-3 / w12: vertexBuffer/indexBuffer state locals migrate to GpuBuffer.
|
|
552
625
|
const recordGeometry = (): void => {
|
|
553
626
|
recordGeometryDraws(
|
|
554
|
-
|
|
627
|
+
recordContext,
|
|
555
628
|
pass,
|
|
556
629
|
matchedMaterials,
|
|
557
630
|
materialSlotIndices,
|
|
@@ -581,7 +654,7 @@ export function recordMainPass(
|
|
|
581
654
|
// already-encoded geometry pixels. Depth is loaded from the geometry
|
|
582
655
|
// pass so sprite-vs-mesh occlusion (depthCompare=less-equal) is
|
|
583
656
|
// preserved (plan-strategy §2 D-2 + §4 R-4).
|
|
584
|
-
if (passKind === 'forward') {
|
|
657
|
+
if (passKind === 'forward' && recordMode === undefined) {
|
|
585
658
|
geometryPassEnded = recordSpritePass(
|
|
586
659
|
c,
|
|
587
660
|
pass,
|
package/src/record/mesh-ssbo.ts
CHANGED
|
@@ -365,10 +365,11 @@ export function uploadMeshSsboBatch(
|
|
|
365
365
|
for (let i = 0; i < slotCount; i++) {
|
|
366
366
|
const entry = validatedOrdered[i];
|
|
367
367
|
if (entry === undefined) continue;
|
|
368
|
-
// Float32Array view into this entity's 256-byte slot (
|
|
369
|
-
//
|
|
368
|
+
// Float32Array view into this entity's 256-byte slot (current world,
|
|
369
|
+
// normal, previous world, and reactive metadata use 45 floats; the
|
|
370
|
+
// remaining padding stays zero). Byte offset i*256 is always
|
|
370
371
|
// 4-byte aligned since MESH_PER_ENTITY_STRIDE=256 is divisible by 4.
|
|
371
|
-
const slot = new Float32Array(_meshSsboScratch.buffer, i * MESH_PER_ENTITY_STRIDE,
|
|
372
|
+
const slot = new Float32Array(_meshSsboScratch.buffer, i * MESH_PER_ENTITY_STRIDE, 48);
|
|
372
373
|
const isFoldHead = foldDispatchPlan?.headBuckets.has(i) === true;
|
|
373
374
|
if (isFoldHead) {
|
|
374
375
|
// identity mat4
|
|
@@ -380,6 +381,13 @@ export function uploadMeshSsboBatch(
|
|
|
380
381
|
slot[16] = 1;
|
|
381
382
|
slot[20] = 1;
|
|
382
383
|
slot[24] = 1;
|
|
384
|
+
// Fold heads use the instance storage path; keep the mesh temporal
|
|
385
|
+
// fields deterministic for shader variants that still read the slot.
|
|
386
|
+
slot[28] = 1;
|
|
387
|
+
slot[33] = 1;
|
|
388
|
+
slot[38] = 1;
|
|
389
|
+
slot[43] = 1;
|
|
390
|
+
slot[44] = 1;
|
|
383
391
|
} else {
|
|
384
392
|
const worldFromLocal = entry.source.transform.world;
|
|
385
393
|
for (let k = 0; k < 16; k++) slot[k] = worldFromLocal[k] ?? 0;
|
|
@@ -393,6 +401,17 @@ export function uploadMeshSsboBatch(
|
|
|
393
401
|
slot[24] = normal[6] ?? 0;
|
|
394
402
|
slot[25] = normal[7] ?? 0;
|
|
395
403
|
slot[26] = normal[8] ?? 0;
|
|
404
|
+
const previousWorld = entry.source.temporal?.previousTransform.world ?? worldFromLocal;
|
|
405
|
+
for (let k = 0; k < 16; k++) slot[28 + k] = previousWorld[k] ?? 0;
|
|
406
|
+
const reactiveMaterial = entry.source.materials.some(
|
|
407
|
+
(material) =>
|
|
408
|
+
material.transparent === true ||
|
|
409
|
+
material.materialShaderId === 'forgeax::sprite' ||
|
|
410
|
+
material.materialShaderId === 'forgeax::sprite-lit' ||
|
|
411
|
+
(material.materialShaderId !== undefined &&
|
|
412
|
+
!material.materialShaderId.startsWith('forgeax::')),
|
|
413
|
+
);
|
|
414
|
+
slot[44] = entry.source.temporal?.reactive === true || reactiveMaterial ? 1 : 0;
|
|
396
415
|
}
|
|
397
416
|
}
|
|
398
417
|
if (neededBytes > 0) {
|
|
@@ -2,6 +2,7 @@ import type { AssetRegistry, DynamicTextureStore } from '@forgeax/engine-assets-
|
|
|
2
2
|
import type { World } from '@forgeax/engine-ecs';
|
|
3
3
|
import type { VertexLayoutProjection } from '@forgeax/engine-geometry';
|
|
4
4
|
import type { Profiler } from '@forgeax/engine-profiler';
|
|
5
|
+
import type { CompiledRenderGraphInfo } from '@forgeax/engine-render-graph';
|
|
5
6
|
import type {
|
|
6
7
|
BindGroup,
|
|
7
8
|
BindGroupLayout,
|
|
@@ -11,13 +12,13 @@ import type {
|
|
|
11
12
|
Result,
|
|
12
13
|
RhiCanvasContext,
|
|
13
14
|
RhiDevice,
|
|
14
|
-
RhiError,
|
|
15
15
|
RenderPipeline as RhiRenderPipeline,
|
|
16
16
|
Sampler,
|
|
17
17
|
Texture,
|
|
18
18
|
TextureFormat,
|
|
19
19
|
TextureView,
|
|
20
20
|
} from '@forgeax/engine-rhi';
|
|
21
|
+
import { err, ok, RhiError } from '@forgeax/engine-rhi';
|
|
21
22
|
import type { MaterialRuntimeArtifact } from '@forgeax/engine-shader';
|
|
22
23
|
import type {
|
|
23
24
|
MaterialRenderState,
|
|
@@ -31,12 +32,14 @@ import type { DeviceScope } from '../device/device-scope';
|
|
|
31
32
|
import type { MeshGpuHandles } from '../device/gpu-residency';
|
|
32
33
|
import type { EngineMetrics } from '../engine-metrics';
|
|
33
34
|
import type { RenderFeatureHost } from '../features/host';
|
|
35
|
+
import type { RenderFeatureShaderModuleMode } from '../features/types';
|
|
34
36
|
import {
|
|
35
37
|
GPU_TEXTURE_USAGE_COPY_SRC,
|
|
36
38
|
GPU_TEXTURE_USAGE_RENDER_ATTACHMENT,
|
|
37
39
|
GPU_TEXTURE_USAGE_TEXTURE_BINDING,
|
|
38
40
|
} from '../gpu-texture-usage';
|
|
39
41
|
import type { SkylightFallback } from '../ibl/skylight-bind-group';
|
|
42
|
+
import type { BloomInspection } from '../inspection-types';
|
|
40
43
|
import type { HealthListenerRegistry, RhiErrorListenerRegistry } from '../lifecycle';
|
|
41
44
|
import type { StandardProfile } from '../pipeline/standard-profile';
|
|
42
45
|
import type { PipelineBuilderShaderModuleFactory } from '../pipeline-builder';
|
|
@@ -54,6 +57,7 @@ import type {
|
|
|
54
57
|
RenderDebugOverlay,
|
|
55
58
|
RenderPipelineContext,
|
|
56
59
|
RenderRecordPhase,
|
|
60
|
+
VolumetricFogShaderSources,
|
|
57
61
|
} from '../render-contract';
|
|
58
62
|
import type {
|
|
59
63
|
DispatchEntry,
|
|
@@ -64,6 +68,7 @@ import type {
|
|
|
64
68
|
import type { SkinPaletteAllocator } from '../systems/skin-palette-allocator';
|
|
65
69
|
import type {
|
|
66
70
|
BindGroupCounts,
|
|
71
|
+
BloomFrameReceipts,
|
|
67
72
|
DispatchCounts,
|
|
68
73
|
MaterialBgAssemblyCacheEntry,
|
|
69
74
|
RenderFrameState,
|
|
@@ -94,6 +99,8 @@ export interface RenderSystemRuntime {
|
|
|
94
99
|
depthFormatOverride?: GPUTextureFormat | null,
|
|
95
100
|
vertexLayout?: string,
|
|
96
101
|
vertexLayoutProjection?: VertexLayoutProjection,
|
|
102
|
+
shaderModuleMode?: RenderFeatureShaderModuleMode,
|
|
103
|
+
layoutKindOverride?: 'pbr' | 'pbr-skin',
|
|
97
104
|
) => RhiRenderPipeline | null;
|
|
98
105
|
readonly getMaterialShaderBindingContract?: (
|
|
99
106
|
materialShaderId: string,
|
|
@@ -110,6 +117,8 @@ export interface RenderSystemRuntime {
|
|
|
110
117
|
bgl: BindGroupLayout,
|
|
111
118
|
colorFormat: GPUTextureFormat,
|
|
112
119
|
) => RhiRenderPipeline | null;
|
|
120
|
+
readonly clearPostProcessPipelineCache?: (id: string) => void;
|
|
121
|
+
readonly invalidateShaderModule?: (label: string) => void;
|
|
113
122
|
readonly dynamicTextureStore?: DynamicTextureStore | undefined;
|
|
114
123
|
}
|
|
115
124
|
|
|
@@ -152,18 +161,27 @@ export interface PerPassResources {
|
|
|
152
161
|
readonly skyboxBindGroupLayout: BindGroupLayout | null;
|
|
153
162
|
readonly skyboxSampler: Sampler | null;
|
|
154
163
|
readonly skyboxRotationBuffer: Buffer | null;
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
164
|
+
bloomBrightPipeline: RhiRenderPipeline | null;
|
|
165
|
+
bloomBlurHPipeline: RhiRenderPipeline | null;
|
|
166
|
+
bloomBlurVPipeline: RhiRenderPipeline | null;
|
|
167
|
+
bloomCompositePipeline: RhiRenderPipeline | null;
|
|
168
|
+
bloomBrightBindGroupLayout: BindGroupLayout | null;
|
|
169
|
+
bloomBlurBindGroupLayout: BindGroupLayout | null;
|
|
170
|
+
bloomCompositeBindGroupLayout: BindGroupLayout | null;
|
|
171
|
+
bloomSampler: Sampler | null;
|
|
172
|
+
bloomBrightParamsBuffer: Buffer | null;
|
|
173
|
+
bloomBlurHParamsBuffer: Buffer | null;
|
|
174
|
+
bloomBlurVParamsBuffer: Buffer | null;
|
|
175
|
+
bloomCompositeParamsBuffer: Buffer | null;
|
|
176
|
+
ensureBloomResources?: () => void;
|
|
177
|
+
getBloomResources?: () => BloomPersistentBundle | null;
|
|
178
|
+
commitBloomResources?: () => void;
|
|
179
|
+
commitBloomFrameReceipts?: (receipts: BloomFrameReceipts) => void;
|
|
180
|
+
discardBloomResources?: () => void;
|
|
181
|
+
retireBloomResources?: (completion: Promise<unknown>) => void;
|
|
182
|
+
/** Drain candidate, active, and fence-retiring Bloom generations. */
|
|
183
|
+
drainBloomResources?: () => void;
|
|
184
|
+
inspectBloomResources?: (graph?: CompiledRenderGraphInfo) => BloomInspection;
|
|
167
185
|
bloomBrightTexture: Texture | null;
|
|
168
186
|
bloomBrightView: TextureView | null;
|
|
169
187
|
bloomBrightWidth: number;
|
|
@@ -194,11 +212,33 @@ export interface PerPassResources {
|
|
|
194
212
|
} | null;
|
|
195
213
|
}
|
|
196
214
|
|
|
215
|
+
/** Renderer-private Bloom bundle selected for one record transaction. */
|
|
216
|
+
export interface BloomPersistentBundle {
|
|
217
|
+
readonly scope: DeviceScope;
|
|
218
|
+
readonly generation: number;
|
|
219
|
+
readonly bloomBrightPipeline: RhiRenderPipeline | null;
|
|
220
|
+
readonly bloomBlurHPipeline: RhiRenderPipeline | null;
|
|
221
|
+
readonly bloomBlurVPipeline: RhiRenderPipeline | null;
|
|
222
|
+
readonly bloomCompositePipeline: RhiRenderPipeline | null;
|
|
223
|
+
readonly bloomBrightBindGroupLayout: BindGroupLayout | null;
|
|
224
|
+
readonly bloomBlurBindGroupLayout: BindGroupLayout | null;
|
|
225
|
+
readonly bloomCompositeBindGroupLayout: BindGroupLayout | null;
|
|
226
|
+
readonly bloomSampler: Sampler | null;
|
|
227
|
+
readonly bloomBrightParamsBuffer: Buffer | null;
|
|
228
|
+
readonly bloomBlurHParamsBuffer: Buffer | null;
|
|
229
|
+
readonly bloomBlurVParamsBuffer: Buffer | null;
|
|
230
|
+
readonly bloomCompositeParamsBuffer: Buffer | null;
|
|
231
|
+
}
|
|
232
|
+
|
|
197
233
|
export interface PipelineState {
|
|
198
234
|
readonly meshes: ReadonlyMap<number, MeshGpuHandles>;
|
|
199
235
|
readonly format: TextureFormat;
|
|
200
236
|
readonly colorAttachmentFormat: TextureFormat;
|
|
237
|
+
/** Surface route committed by configureSurface for inspection provenance. */
|
|
238
|
+
readonly surfaceProfile?: 'dual-view' | 'raw-only';
|
|
201
239
|
readonly viewBindGroupLayout: BindGroupLayout;
|
|
240
|
+
/** Device capability gate for the optional SpotLight projector binding. */
|
|
241
|
+
readonly projectorAvailable?: boolean;
|
|
202
242
|
readonly materialBindGroupLayout: BindGroupLayout;
|
|
203
243
|
readonly meshBindGroupLayout: BindGroupLayout;
|
|
204
244
|
readonly viewUniformBuffer: Buffer;
|
|
@@ -240,6 +280,8 @@ export interface RenderSystemInternals extends RenderSystemRuntime {
|
|
|
240
280
|
readonly standardPipeline: RenderFrameState['activePipeline'];
|
|
241
281
|
readonly featureHost?: RenderFeatureHost | undefined;
|
|
242
282
|
readonly shaderModuleFactory?: PipelineBuilderShaderModuleFactory;
|
|
283
|
+
/** Optional handle-first factory for feature-owned generated shader programs. */
|
|
284
|
+
readonly immediateShaderModuleFactory?: PipelineBuilderShaderModuleFactory;
|
|
243
285
|
readonly profiler?: Profiler | undefined;
|
|
244
286
|
readonly context: RhiCanvasContext | null;
|
|
245
287
|
readonly getPipelineState: () => PipelineState | null;
|
|
@@ -263,12 +305,15 @@ export interface RenderSystemInternals extends RenderSystemRuntime {
|
|
|
263
305
|
label: string,
|
|
264
306
|
) => RhiRenderPipeline | null)
|
|
265
307
|
| undefined;
|
|
308
|
+
/** Composed renderer utility sources installed atomically at build-ready. */
|
|
309
|
+
volumetricFogShaders?: VolumetricFogShaderSources | undefined;
|
|
266
310
|
}
|
|
267
311
|
|
|
268
312
|
export interface _StandardForwardSceneView {
|
|
269
313
|
readonly assets: AssetRegistry;
|
|
270
314
|
readonly store: import('../device/gpu-residency').GpuResidencyCache;
|
|
271
315
|
readonly pipelineState: PipelineState;
|
|
316
|
+
readonly bloomResources?: BloomPersistentBundle | null;
|
|
272
317
|
readonly runtime: RenderSystemRuntime;
|
|
273
318
|
readonly validated: readonly ValidatedRenderable[];
|
|
274
319
|
readonly validatedOrdered: readonly ValidatedRenderable[];
|
|
@@ -314,7 +359,7 @@ export type _InternalRenderPipelineContext = RenderPipelineContext & _StandardFo
|
|
|
314
359
|
|
|
315
360
|
export type RecordProfileRunner = <T>(phase: RenderRecordPhase, action: () => T) => T;
|
|
316
361
|
|
|
317
|
-
export const STANDARD_PBR_UBO_SIZE =
|
|
362
|
+
export const STANDARD_PBR_UBO_SIZE = 384;
|
|
318
363
|
export const MATERIAL_PER_ENTITY_STRIDE = 512;
|
|
319
364
|
|
|
320
365
|
export type SwapChainFormatPair = {
|
|
@@ -323,14 +368,88 @@ export type SwapChainFormatPair = {
|
|
|
323
368
|
readonly fallbackReason?: 'preferred-canvas-format-missing';
|
|
324
369
|
};
|
|
325
370
|
|
|
371
|
+
/** Internal closed projection of the concrete surface route. */
|
|
372
|
+
export type SurfaceProfile =
|
|
373
|
+
| {
|
|
374
|
+
readonly kind: 'dual-view';
|
|
375
|
+
readonly storageFormat: GPUTextureFormat;
|
|
376
|
+
readonly viewFormat: GPUTextureFormat;
|
|
377
|
+
readonly viewFormats: readonly [GPUTextureFormat];
|
|
378
|
+
readonly hasDisplayEndpoint: true;
|
|
379
|
+
}
|
|
380
|
+
| {
|
|
381
|
+
readonly kind: 'raw-only';
|
|
382
|
+
readonly storageFormat: GPUTextureFormat;
|
|
383
|
+
readonly viewFormat: GPUTextureFormat;
|
|
384
|
+
readonly viewFormats: readonly [];
|
|
385
|
+
readonly hasDisplayEndpoint: false;
|
|
386
|
+
};
|
|
387
|
+
|
|
388
|
+
export interface SurfaceCapabilityFacts {
|
|
389
|
+
/** Concrete wgpu downlevel `SURFACE_VIEW_FORMATS` flag. */
|
|
390
|
+
readonly surfaceViewFormats: boolean;
|
|
391
|
+
readonly rawAttachment: boolean;
|
|
392
|
+
readonly floatRenderAttachment: boolean;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
export function resolveSurfaceProfile(
|
|
396
|
+
storageFormat: GPUTextureFormat,
|
|
397
|
+
viewFormat: GPUTextureFormat,
|
|
398
|
+
facts: SurfaceCapabilityFacts,
|
|
399
|
+
): Result<SurfaceProfile, RhiError> {
|
|
400
|
+
if (facts.surfaceViewFormats) {
|
|
401
|
+
return ok({
|
|
402
|
+
kind: 'dual-view',
|
|
403
|
+
storageFormat,
|
|
404
|
+
viewFormat,
|
|
405
|
+
viewFormats: [viewFormat],
|
|
406
|
+
hasDisplayEndpoint: true,
|
|
407
|
+
});
|
|
408
|
+
}
|
|
409
|
+
if (!facts.rawAttachment || !facts.floatRenderAttachment) {
|
|
410
|
+
return err(
|
|
411
|
+
new RhiError({
|
|
412
|
+
code: 'webgpu-runtime-error',
|
|
413
|
+
expected: 'raw surface attachment and rgba16float render attachment capabilities',
|
|
414
|
+
hint: 'surface profile cannot establish a raw-only linear output route',
|
|
415
|
+
detail: {
|
|
416
|
+
error: {
|
|
417
|
+
code: 'surface-raw-endpoint-failed',
|
|
418
|
+
message: 'raw-only surface capabilities are incomplete',
|
|
419
|
+
},
|
|
420
|
+
},
|
|
421
|
+
}),
|
|
422
|
+
);
|
|
423
|
+
}
|
|
424
|
+
return ok({
|
|
425
|
+
kind: 'raw-only',
|
|
426
|
+
storageFormat,
|
|
427
|
+
viewFormat: storageFormat,
|
|
428
|
+
viewFormats: [],
|
|
429
|
+
hasDisplayEndpoint: false,
|
|
430
|
+
});
|
|
431
|
+
}
|
|
432
|
+
|
|
326
433
|
export type SurfaceBackendKind = 'webgpu' | 'wgpu-native' | 'wgpu-webgl2' | 'null';
|
|
327
434
|
|
|
328
435
|
export function resolveSurfaceFormatPair(
|
|
329
|
-
|
|
436
|
+
_backendKind: SurfaceBackendKind,
|
|
330
437
|
storage: GPUTextureFormat,
|
|
331
438
|
view: GPUTextureFormat,
|
|
332
439
|
): SwapChainFormatPair {
|
|
333
|
-
return
|
|
440
|
+
return { storage, view };
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
function surfaceCapabilityFacts(
|
|
444
|
+
device: RhiDevice,
|
|
445
|
+
storageFormat: GPUTextureFormat,
|
|
446
|
+
): SurfaceCapabilityFacts {
|
|
447
|
+
const internal = device as unknown as { readonly surfaceViewFormats?: boolean };
|
|
448
|
+
return {
|
|
449
|
+
surfaceViewFormats: internal.surfaceViewFormats ?? device.caps?.backendKind !== 'wgpu-webgl2',
|
|
450
|
+
rawAttachment: storageFormat === 'rgba8unorm' || storageFormat === 'bgra8unorm',
|
|
451
|
+
floatRenderAttachment: device.caps?.rgba16floatRenderable ?? true,
|
|
452
|
+
};
|
|
334
453
|
}
|
|
335
454
|
|
|
336
455
|
export function configureSurface(
|
|
@@ -346,8 +465,20 @@ export function configureSurface(
|
|
|
346
465
|
format as GPUTextureFormat,
|
|
347
466
|
colorAttachmentFormat as GPUTextureFormat,
|
|
348
467
|
);
|
|
349
|
-
const
|
|
350
|
-
|
|
468
|
+
const profile = resolveSurfaceProfile(
|
|
469
|
+
surfaceFormats.storage,
|
|
470
|
+
surfaceFormats.view,
|
|
471
|
+
surfaceCapabilityFacts(device, surfaceFormats.storage),
|
|
472
|
+
);
|
|
473
|
+
if (!profile.ok) return profile;
|
|
474
|
+
// WebGL2 surface pixels are proven by the compositor fixture, so it has no
|
|
475
|
+
// surface consumer for optional TEXTURE_BINDING/COPY_SRC usage. The concrete
|
|
476
|
+
// wgpu surface derives supported usages from SurfaceCapabilities and rejects
|
|
477
|
+
// unsupported requests; this path requests only the guaranteed attachment
|
|
478
|
+
// usage. Raw-only deliberately has no alternate view.
|
|
479
|
+
const supportsTextureBinding =
|
|
480
|
+
backendKind !== 'wgpu-webgl2' && (device.caps?.storageBuffer ?? true);
|
|
481
|
+
const configured = context.configure({
|
|
351
482
|
device,
|
|
352
483
|
format: surfaceFormats.storage,
|
|
353
484
|
alphaMode: isWebGl2 ? 'opaque' : 'premultiplied',
|
|
@@ -355,12 +486,49 @@ export function configureSurface(
|
|
|
355
486
|
GPU_TEXTURE_USAGE_RENDER_ATTACHMENT |
|
|
356
487
|
(supportsTextureBinding ? GPU_TEXTURE_USAGE_TEXTURE_BINDING : 0) |
|
|
357
488
|
(isWebGl2 ? 0 : GPU_TEXTURE_USAGE_COPY_SRC),
|
|
358
|
-
|
|
489
|
+
viewFormats: [...profile.value.viewFormats],
|
|
359
490
|
});
|
|
491
|
+
if (!configured.ok) return configured;
|
|
492
|
+
if (
|
|
493
|
+
isWebGl2 &&
|
|
494
|
+
(context.presentationProof === undefined ||
|
|
495
|
+
!context.presentationProof.descriptor ||
|
|
496
|
+
!context.presentationProof.acquisition ||
|
|
497
|
+
!context.presentationProof.validation ||
|
|
498
|
+
typeof context.presentationProof.surfaceIdentity !== 'string' ||
|
|
499
|
+
context.presentationProof.surfaceIdentity.length === 0 ||
|
|
500
|
+
context.presentationProof.requested === undefined ||
|
|
501
|
+
context.presentationProof.validated === undefined ||
|
|
502
|
+
JSON.stringify(context.presentationProof.requested) !==
|
|
503
|
+
JSON.stringify(context.presentationProof.validated))
|
|
504
|
+
) {
|
|
505
|
+
return err(
|
|
506
|
+
new RhiError({
|
|
507
|
+
code: 'webgpu-runtime-error',
|
|
508
|
+
expected: 'WebGL2 surface storage has descriptor, acquisition, and validation proof',
|
|
509
|
+
hint: 'run the concrete presentation probe and retain the last-known-good graph when proof is absent',
|
|
510
|
+
detail: {
|
|
511
|
+
error: {
|
|
512
|
+
code: 'surface-raw-endpoint-failed',
|
|
513
|
+
message: 'surface storage raw endpoint proof is incomplete',
|
|
514
|
+
},
|
|
515
|
+
},
|
|
516
|
+
}),
|
|
517
|
+
);
|
|
518
|
+
}
|
|
519
|
+
return ok(undefined);
|
|
360
520
|
}
|
|
361
521
|
|
|
362
|
-
export function selectSwapChainFormat(
|
|
363
|
-
|
|
522
|
+
export function selectSwapChainFormat(
|
|
523
|
+
storageBufferCapable: boolean,
|
|
524
|
+
surfaceViewFormats = true,
|
|
525
|
+
): SwapChainFormatPair {
|
|
526
|
+
if (!storageBufferCapable) {
|
|
527
|
+
return {
|
|
528
|
+
storage: 'rgba8unorm',
|
|
529
|
+
view: surfaceViewFormats ? 'rgba8unorm-srgb' : 'rgba8unorm',
|
|
530
|
+
};
|
|
531
|
+
}
|
|
364
532
|
const nav = (
|
|
365
533
|
globalThis as { navigator?: { gpu?: { getPreferredCanvasFormat?: () => GPUTextureFormat } } }
|
|
366
534
|
).navigator;
|
|
@@ -374,11 +542,14 @@ export function selectSwapChainFormat(storageBufferCapable: boolean): SwapChainF
|
|
|
374
542
|
: storage === 'bgra8unorm'
|
|
375
543
|
? 'bgra8unorm-srgb'
|
|
376
544
|
: storage;
|
|
377
|
-
return {
|
|
545
|
+
return {
|
|
546
|
+
storage,
|
|
547
|
+
view: surfaceViewFormats ? view : storage,
|
|
548
|
+
};
|
|
378
549
|
}
|
|
379
550
|
return {
|
|
380
551
|
storage: 'rgba8unorm',
|
|
381
|
-
view: 'rgba8unorm-srgb',
|
|
552
|
+
view: surfaceViewFormats ? 'rgba8unorm-srgb' : 'rgba8unorm',
|
|
382
553
|
fallbackReason: 'preferred-canvas-format-missing',
|
|
383
554
|
};
|
|
384
555
|
}
|