@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/index.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// @forgeax/engine-render — AI-facing render vocabulary.
|
|
2
2
|
//
|
|
3
3
|
// The root is deliberately small: ECS render components, grouped closed
|
|
4
|
-
// values, the renderer lifecycle/receipt contract, and
|
|
5
|
-
// RenderFeature plan. Graph builders, prepared GPU state, pipeline
|
|
4
|
+
// values, immutable frame facts, the renderer lifecycle/receipt contract, and
|
|
5
|
+
// the declarative RenderFeature plan. Graph builders, prepared GPU state, pipeline
|
|
6
6
|
// implementations, builtin feature factories, and diagnostic class names are
|
|
7
7
|
// owner-local implementation details.
|
|
8
8
|
|
|
@@ -11,13 +11,20 @@ export {
|
|
|
11
11
|
renderPipelineContribution,
|
|
12
12
|
samplerContribution,
|
|
13
13
|
} from './assets/asset-decoders';
|
|
14
|
-
|
|
14
|
+
export { Atmosphere } from './components/atmosphere';
|
|
15
15
|
// ECS render vocabulary and grouped closed values.
|
|
16
|
-
export type {
|
|
16
|
+
export type {
|
|
17
|
+
Antialias,
|
|
18
|
+
BloomEnabled,
|
|
19
|
+
CameraData,
|
|
20
|
+
CameraProjection,
|
|
21
|
+
Tonemap,
|
|
22
|
+
} from './components/camera';
|
|
17
23
|
export {
|
|
18
24
|
ANTIALIAS_FXAA,
|
|
19
25
|
ANTIALIAS_MSAA,
|
|
20
26
|
ANTIALIAS_NONE,
|
|
27
|
+
ANTIALIAS_TAA,
|
|
21
28
|
BLOOM_DISABLED,
|
|
22
29
|
BLOOM_ENABLED,
|
|
23
30
|
CAMERA_PROJECTION_ORTHOGRAPHIC,
|
|
@@ -36,11 +43,13 @@ export {
|
|
|
36
43
|
TONEMAP_REINHARD_EXTENDED,
|
|
37
44
|
} from './components/camera';
|
|
38
45
|
export * from './components/directional-light';
|
|
46
|
+
export { Fog } from './components/fog';
|
|
39
47
|
export { Instances, type InstancesData } from './components/instances';
|
|
40
48
|
export { Layer } from './components/layer';
|
|
41
49
|
export { Lines } from './components/lines';
|
|
42
50
|
export * from './components/mesh-filter';
|
|
43
51
|
export * from './components/mesh-renderer';
|
|
52
|
+
export { MotionBlur } from './components/motion-blur';
|
|
44
53
|
export { PointLight } from './components/point-light';
|
|
45
54
|
export { PointLightShadow } from './components/point-light-shadow';
|
|
46
55
|
export {
|
|
@@ -58,6 +67,7 @@ export {
|
|
|
58
67
|
} from './components/skybox-background';
|
|
59
68
|
export { Skylight } from './components/skylight';
|
|
60
69
|
export { SortKey } from './components/sort-key';
|
|
70
|
+
export type { SpotLightAuthoring, SpotLightProjector } from './components/spot-light';
|
|
61
71
|
export { SpotLight } from './components/spot-light';
|
|
62
72
|
export {
|
|
63
73
|
Visibility,
|
|
@@ -65,9 +75,35 @@ export {
|
|
|
65
75
|
VisibilityStateValue,
|
|
66
76
|
visibilityStateFromU32,
|
|
67
77
|
} from './components/visibility';
|
|
78
|
+
export type {
|
|
79
|
+
EnvironmentInspection,
|
|
80
|
+
EnvironmentInspectionFailure,
|
|
81
|
+
EnvironmentInspectionGeneration,
|
|
82
|
+
EnvironmentInspectionStatus,
|
|
83
|
+
} from './environment/inspection';
|
|
68
84
|
// Public structured operation failure union. Concrete error classes stay
|
|
69
85
|
// behind the Renderer Result/event boundary.
|
|
70
|
-
export type {
|
|
86
|
+
export type {
|
|
87
|
+
RenderError,
|
|
88
|
+
RenderErrorCode,
|
|
89
|
+
SceneDataUnavailableDetail,
|
|
90
|
+
SceneDataUnavailableReason,
|
|
91
|
+
} from './errors/render';
|
|
92
|
+
export {
|
|
93
|
+
AtmosphereInvalidParameterError,
|
|
94
|
+
EnvironmentGenerationFailedError,
|
|
95
|
+
EnvironmentSourceConflictError,
|
|
96
|
+
FogCardinalityError,
|
|
97
|
+
OwnerStageFailedError,
|
|
98
|
+
SceneDataUnavailableError,
|
|
99
|
+
TaaCapsInsufficientError,
|
|
100
|
+
} from './errors/render';
|
|
101
|
+
export type {
|
|
102
|
+
EnvironmentFrame,
|
|
103
|
+
EnvironmentSource,
|
|
104
|
+
FogFrame,
|
|
105
|
+
FramePlan,
|
|
106
|
+
} from './extract/environment';
|
|
71
107
|
export {
|
|
72
108
|
resolveVisibility,
|
|
73
109
|
type VisibilityResolution,
|
|
@@ -75,6 +111,7 @@ export {
|
|
|
75
111
|
} from './extract/visibility';
|
|
76
112
|
export type {
|
|
77
113
|
RenderFeatureLogicalTarget,
|
|
114
|
+
RenderFeatureMaterialShaderBindingContract,
|
|
78
115
|
RenderFeaturePassDeclaration,
|
|
79
116
|
RenderFeaturePlan,
|
|
80
117
|
RenderFeaturePlanContext,
|
|
@@ -90,13 +127,24 @@ export type {
|
|
|
90
127
|
RenderFeatureErrorDescriptor,
|
|
91
128
|
RenderFeatureExtractContext,
|
|
92
129
|
RenderFeatureHiddenEntityReport,
|
|
130
|
+
RenderFeatureShaderModuleMode,
|
|
93
131
|
RenderFeatureStatus,
|
|
94
132
|
RenderFeatureWorldVisibilitySnapshot,
|
|
95
133
|
} from './features/types';
|
|
96
|
-
export {
|
|
134
|
+
export type {
|
|
135
|
+
BloomInspection,
|
|
136
|
+
MotionBlurInspection,
|
|
137
|
+
MotionBlurInspectionStatus,
|
|
138
|
+
TransmissionInspection,
|
|
139
|
+
} from './inspection-types';
|
|
140
|
+
export { Materials, MaterialTransmissionContractError } from './materials';
|
|
97
141
|
// The host-facing default is a stable profile value; implementation-only
|
|
98
142
|
// pipeline helpers remain behind the package boundary.
|
|
99
|
-
export {
|
|
143
|
+
export {
|
|
144
|
+
DEFAULT_STANDARD_PROFILE,
|
|
145
|
+
type StandardVolumetricFogProfile,
|
|
146
|
+
type StandardVolumetricFogQuality,
|
|
147
|
+
} from './pipeline/standard-profile';
|
|
100
148
|
export { renderComponentsPlugin } from './plugin';
|
|
101
149
|
export {
|
|
102
150
|
admitPointsLines,
|
|
@@ -127,3 +175,52 @@ export type {
|
|
|
127
175
|
RenderWorldLease,
|
|
128
176
|
} from './render-contract';
|
|
129
177
|
export { RENDER_PHASE_CATALOG } from './render-contract';
|
|
178
|
+
export type {
|
|
179
|
+
TemporalInspectionInput,
|
|
180
|
+
TemporalInspectionStatus,
|
|
181
|
+
} from './renderer-inspect';
|
|
182
|
+
export type { TemporalInspection, TemporalResourceInspection } from './temporal/inspection';
|
|
183
|
+
export {
|
|
184
|
+
SCENE_DATA_TEMPORAL_V1_DESCRIPTOR,
|
|
185
|
+
SCENE_DATA_TEMPORAL_V1_SCHEMA,
|
|
186
|
+
type SceneDataLane,
|
|
187
|
+
type SceneDataSchemaId,
|
|
188
|
+
type SceneDataTarget,
|
|
189
|
+
type SceneDataTemporalV1Descriptor,
|
|
190
|
+
} from './temporal/scene-data';
|
|
191
|
+
export {
|
|
192
|
+
createSceneDataCatalog,
|
|
193
|
+
type SceneDataAvailability,
|
|
194
|
+
type SceneDataCatalog,
|
|
195
|
+
type SceneDataCatalogOptions,
|
|
196
|
+
type SceneDataInspection,
|
|
197
|
+
} from './temporal/scene-data-catalog';
|
|
198
|
+
export type { TemporalView } from './temporal/view';
|
|
199
|
+
export {
|
|
200
|
+
hasVolumetricFogCapability,
|
|
201
|
+
type IntegratedVolumeResource,
|
|
202
|
+
resolveIntegratedVolumeConsumer,
|
|
203
|
+
resolveSelectedVolumetricLight,
|
|
204
|
+
resolveVolumetricFogLightPair,
|
|
205
|
+
type VolumeConsumer,
|
|
206
|
+
type VolumetricFogLightKind,
|
|
207
|
+
type VolumetricFogLightPairResolution,
|
|
208
|
+
type VolumetricFogLightResolution,
|
|
209
|
+
} from './volume/capability';
|
|
210
|
+
export {
|
|
211
|
+
type ValidatedVolumetricFog,
|
|
212
|
+
type VolumeBounds,
|
|
213
|
+
type VolumeDensityBinding,
|
|
214
|
+
VolumetricFog,
|
|
215
|
+
type VolumetricFogAuthoring,
|
|
216
|
+
type VolumetricFogLightSelection,
|
|
217
|
+
validateVolumetricFog,
|
|
218
|
+
} from './volume/component';
|
|
219
|
+
export { extractVolumetricFog, type VolumetricFogExtract } from './volume/extract';
|
|
220
|
+
export {
|
|
221
|
+
inspectVolumetricFog,
|
|
222
|
+
type VolumetricFogInspection,
|
|
223
|
+
type VolumetricFogInspectionInput,
|
|
224
|
+
type VolumetricFogInspectionStatus,
|
|
225
|
+
type VolumetricFogResourceStage,
|
|
226
|
+
} from './volume/inspection';
|
package/src/inspection-types.ts
CHANGED
|
@@ -6,6 +6,24 @@
|
|
|
6
6
|
|
|
7
7
|
import type { PointsLinesInspection } from './points-lines/inspection';
|
|
8
8
|
|
|
9
|
+
export type BloomGraphStatus = 'empty' | 'valid' | 'invalid';
|
|
10
|
+
|
|
11
|
+
export interface BloomInspection {
|
|
12
|
+
readonly graphStatus: BloomGraphStatus;
|
|
13
|
+
readonly enabled: boolean;
|
|
14
|
+
readonly targetCount: number;
|
|
15
|
+
readonly targetBytes: number;
|
|
16
|
+
readonly resourceCount: number;
|
|
17
|
+
readonly passCount: number;
|
|
18
|
+
readonly encodeCount: number;
|
|
19
|
+
readonly bindGroupCount: number;
|
|
20
|
+
readonly uploadCount: number;
|
|
21
|
+
readonly residentChildBytes: number;
|
|
22
|
+
readonly generation: number;
|
|
23
|
+
readonly state: 'off' | 'active' | 'retiring';
|
|
24
|
+
}
|
|
25
|
+
export type { TransmissionInspection } from './transmission/inspection';
|
|
26
|
+
|
|
9
27
|
export interface BatchTopologyInspection {
|
|
10
28
|
readonly revision: number;
|
|
11
29
|
readonly batchCount: number;
|
|
@@ -47,6 +65,36 @@ export interface GpuDrivenProductionInspection {
|
|
|
47
65
|
readonly cpuFallbackDrawItems: number;
|
|
48
66
|
}
|
|
49
67
|
|
|
68
|
+
/** Detached semantic descriptor for the Standard scene-temporal producer. */
|
|
69
|
+
export interface TemporalTargetInspection {
|
|
70
|
+
readonly identity: 'standard-scene-temporal';
|
|
71
|
+
readonly producerId: 'forgeax::standard::scene-data';
|
|
72
|
+
readonly schema: 'forgeax::scene-data::temporal-v1';
|
|
73
|
+
readonly targetCount: 1;
|
|
74
|
+
readonly descriptor: {
|
|
75
|
+
readonly format: 'rgba16float';
|
|
76
|
+
readonly width: number;
|
|
77
|
+
readonly height: number;
|
|
78
|
+
readonly sampleCount: 1;
|
|
79
|
+
readonly bytes: number;
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/** Detached, bounded Motion Blur facts; no graph, device, target, or history handle. */
|
|
84
|
+
export type MotionBlurInspectionStatus = 'off' | 'active' | 'reset' | 'invalid';
|
|
85
|
+
|
|
86
|
+
export interface MotionBlurInspection {
|
|
87
|
+
readonly enabled: boolean;
|
|
88
|
+
readonly status: MotionBlurInspectionStatus;
|
|
89
|
+
readonly shutterAngle: number;
|
|
90
|
+
readonly maxRadiusPixels: number;
|
|
91
|
+
readonly sampleCount: number;
|
|
92
|
+
readonly temporalDemand: 'none' | 'scene-data-temporal-v1';
|
|
93
|
+
readonly passName: 'motion-blur';
|
|
94
|
+
readonly historyWrites: 0;
|
|
95
|
+
readonly lastFailure?: 'invalid-params' | 'scene-data-unavailable';
|
|
96
|
+
}
|
|
97
|
+
|
|
50
98
|
export type RenderSceneResyncReason =
|
|
51
99
|
| 'attach'
|
|
52
100
|
| 'asset-catalog-changed'
|
package/src/internal.ts
CHANGED
|
@@ -7,3 +7,8 @@ export {
|
|
|
7
7
|
type TilesetRuntimeError,
|
|
8
8
|
type TilesetRuntimeErrorCode,
|
|
9
9
|
} from '@forgeax/engine-assets-runtime';
|
|
10
|
+
export {
|
|
11
|
+
type GraphTargetCaptureReadbackValidation,
|
|
12
|
+
validateGraphTargetCaptureReadback,
|
|
13
|
+
} from './record/frame-snapshot';
|
|
14
|
+
export { TemporalFrameCoordinator } from './temporal/frame-coordinator';
|
|
@@ -15,23 +15,24 @@
|
|
|
15
15
|
// PointLight in common.wgsl. -1 (0xFFFFFFFF) is the no-shadow
|
|
16
16
|
// sentinel — shader path samples shadow only when layer >= 0.
|
|
17
17
|
//
|
|
18
|
-
// SpotLight (
|
|
18
|
+
// SpotLight (80 B / 20 floats):
|
|
19
19
|
// [ 0..2 ] position vec3<f32>
|
|
20
20
|
// [ 3 ] invRangeSquared f32
|
|
21
21
|
// [ 4..6 ] color vec3<f32> (host-pre-multiplied)
|
|
22
22
|
// [ 7 ] cosInner f32
|
|
23
23
|
// [ 8..10] direction vec3<f32> (raw outgoing vector)
|
|
24
24
|
// [ 11 ] cosOuter f32
|
|
25
|
-
// [12
|
|
25
|
+
// [12] depthBias, [13] normalBias, [14] pcfKernelSize
|
|
26
26
|
// [ 15 ] shadowAtlasTile i32 (sentinel -1 = unassigned/clipped; 0..3 = tile)
|
|
27
27
|
// — feat-20260625-spot-light-shadow-mapping M2 / w8 (D-4):
|
|
28
|
-
// SpotLight
|
|
29
|
-
//
|
|
30
|
-
// written i32 via an Int32Array view of the same backing
|
|
28
|
+
// SpotLight receiver controls occupy the 4th vec4 column. The tile
|
|
29
|
+
// lane is written i32 via an Int32Array view of the same backing
|
|
31
30
|
// ArrayBuffer; the shader reads `shadowAtlasTile: i32` from byte
|
|
32
31
|
// 60..64 of struct SpotLight (common.wgsl). -1 (0xFFFFFFFF) is the
|
|
33
32
|
// unassigned/clipped sentinel — shader samples shadow only when
|
|
34
33
|
// tile >= 0. Mirrors point's slot-7 shadowAtlasLayer pattern.
|
|
34
|
+
// [ 16 ] shadowIntensity f32 (default 1; [0,1] residual visibility)
|
|
35
|
+
// [17..19] std430 tail pad (the struct rounds to the next 16 B boundary)
|
|
35
36
|
//
|
|
36
37
|
// Array header (16 B, std430 stride alignment):
|
|
37
38
|
// [ 0 ] count u32 (number of valid slots in the trailing array)
|
|
@@ -69,13 +70,16 @@ import type { PointLightSnapshot, SpotLightSnapshot } from './render-system-extr
|
|
|
69
70
|
// [ 11 ] cosOuter f32 (point: 0.0)
|
|
70
71
|
// [ 12 ] kind u32 (POINT = 0, SPOT = 1)
|
|
71
72
|
// [ 13 ] shadow identity i32 (point layer / spot tile, -1 sentinel)
|
|
72
|
-
// [14
|
|
73
|
+
// [14] point near / spot shadowIntensity f32
|
|
74
|
+
// [15] point far / spot pcfKernelSize f32
|
|
73
75
|
//
|
|
74
76
|
// Design: research Finding 1 (Bevy GpuClusteredLight 152B -> forgeax 64B),
|
|
75
77
|
// plan-strategy D-light-slot (kind bit-tag discriminant).
|
|
76
78
|
//
|
|
77
|
-
// The existing URP PointLight (32B)
|
|
78
|
-
//
|
|
79
|
+
// The existing URP PointLight (32B) pack function remains unchanged; the URP
|
|
80
|
+
// SpotLight grows from 64B to 80B to carry the independent shadow visibility
|
|
81
|
+
// factor without stealing the tile or PCF lanes. packLightSlot remains the
|
|
82
|
+
// compact 64B HDRP owner and uses a spot-only pad lane for the same value.
|
|
79
83
|
|
|
80
84
|
/** Byte size of one HDRP LightSlot in std430 (16 x f32). AC-11 absolute-value lock. */
|
|
81
85
|
export const BYTES_PER_LIGHT_SLOT = 64;
|
|
@@ -99,9 +103,11 @@ export type LightSlotKind = (typeof LightSlotKind)[keyof typeof LightSlotKind];
|
|
|
99
103
|
* feat-20260612-point-light-shadows-urp-hdrp M4 / T-M4-4 (plan-strategy §D-8):
|
|
100
104
|
* the prior u32x3 pad lanes at byte 52..64 carry shadow-side data on the HDRP
|
|
101
105
|
* path. `kind_and_pad.x = kind` (u32), `.y = shadow identity` (i32, sentinel
|
|
102
|
-
* -1 = no shadow)
|
|
103
|
-
*
|
|
104
|
-
*
|
|
106
|
+
* -1 = no shadow). For point lights `.z/.w` carry near/far (f32 via bitcast);
|
|
107
|
+
* for spot lights `.z` carries shadowIntensity and `.w` carries the PCF
|
|
108
|
+
* kernel width (f32 via bitcast). The shader reads these lanes through
|
|
109
|
+
* `bitcast<f32>(...)` to
|
|
110
|
+
* keep the WGSL struct as `vec4<u32>` (alignment + naga_oil unchanged).
|
|
105
111
|
*/
|
|
106
112
|
export const LIGHTSLOT_LAYOUT = {
|
|
107
113
|
byteSize: BYTES_PER_LIGHT_SLOT,
|
|
@@ -117,6 +123,7 @@ export const LIGHTSLOT_LAYOUT = {
|
|
|
117
123
|
shadowAtlasTileOffset: 52,
|
|
118
124
|
shadowNearOffset: 56,
|
|
119
125
|
shadowFarOffset: 60,
|
|
126
|
+
spotPcfKernelSizeOffset: 60,
|
|
120
127
|
floatCount: 16,
|
|
121
128
|
vec4Count: 4,
|
|
122
129
|
} as const;
|
|
@@ -137,16 +144,18 @@ export const STORAGE_BUFFER_MIN_REQUIRED = 4;
|
|
|
137
144
|
/** Byte size of one PointLight std430 slot (vec4 * 2). */
|
|
138
145
|
export const POINT_LIGHT_STD430_BYTES = 32;
|
|
139
146
|
/**
|
|
140
|
-
* Byte size of one SpotLight std430 slot (
|
|
147
|
+
* Byte size of one SpotLight std430 slot (five 16-byte columns).
|
|
141
148
|
*
|
|
142
|
-
* feat-20260625-spot-light-shadow-mapping M2 / w8 (D-4)
|
|
143
|
-
*
|
|
144
|
-
*
|
|
149
|
+
* feat-20260625-spot-light-shadow-mapping M2 / w8 (D-4) grew 48 -> 64 for
|
|
150
|
+
* `shadowAtlasTile`; the visual-parity contract then adds a fifth column for
|
|
151
|
+
* `shadowIntensity` rather than overloading the tile/PCF lanes.
|
|
145
152
|
*/
|
|
146
|
-
export const SPOT_LIGHT_STD430_BYTES =
|
|
153
|
+
export const SPOT_LIGHT_STD430_BYTES = 80;
|
|
147
154
|
|
|
148
155
|
/** Sentinel value for SpotLight slot[15] meaning "no shadow / clipped". */
|
|
149
156
|
export const SPOT_LIGHT_SHADOW_TILE_SENTINEL = -1;
|
|
157
|
+
/** Sentinel for a projector-only SpotLight with no shadow atlas tile. */
|
|
158
|
+
export const SPOT_LIGHT_PROJECTOR_ONLY_SENTINEL = -2;
|
|
150
159
|
/** Byte size of the array header (count u32 + 12 B pad to 16 B stride). */
|
|
151
160
|
export const LIGHT_ARRAY_HEADER_BYTES = 16;
|
|
152
161
|
/** Maximum number of slots packed in the first-slice cap layout (D-S3). */
|
|
@@ -182,7 +191,7 @@ export function packPointLight(snap: PointLightSnapshot): Float32Array {
|
|
|
182
191
|
}
|
|
183
192
|
|
|
184
193
|
/**
|
|
185
|
-
* Pack one SpotLightSnapshot into
|
|
194
|
+
* Pack one SpotLightSnapshot into 20 floats (80 B byte-for-byte std430).
|
|
186
195
|
*
|
|
187
196
|
* cosInner / cosOuter ride the otherwise-padding `.w` lanes of the
|
|
188
197
|
* `color` and `direction` vec4 columns (AC-04 c + plan D-S2 16 B alignment
|
|
@@ -190,10 +199,13 @@ export function packPointLight(snap: PointLightSnapshot): Float32Array {
|
|
|
190
199
|
* (sentinel -1 = unassigned/clipped, 0..3 = atlas tile) written through an
|
|
191
200
|
* Int32Array view so the shader's `i32` read at byte 60..64 of struct SpotLight
|
|
192
201
|
* (common.wgsl) sees the correct two's-complement bits (-1 = 0xFFFFFFFF).
|
|
193
|
-
* Slots 12..14
|
|
202
|
+
* Slots 12..14 carry the shared receiver controls; slot 15 remains the i32
|
|
203
|
+
* shadow tile sentinel; slot 16 carries shadowIntensity and slots 17..19 are
|
|
204
|
+
* alignment tail padding. Surface and volume consumers therefore share one
|
|
205
|
+
* extracted shadow configuration.
|
|
194
206
|
*/
|
|
195
207
|
export function packSpotLight(snap: SpotLightSnapshot): Float32Array {
|
|
196
|
-
const out = new Float32Array(
|
|
208
|
+
const out = new Float32Array(20);
|
|
197
209
|
out[0] = snap.position[0] ?? 0;
|
|
198
210
|
out[1] = snap.position[1] ?? 0;
|
|
199
211
|
out[2] = snap.position[2] ?? 0;
|
|
@@ -206,10 +218,20 @@ export function packSpotLight(snap: SpotLightSnapshot): Float32Array {
|
|
|
206
218
|
out[9] = snap.direction[1] ?? 0;
|
|
207
219
|
out[10] = snap.direction[2] ?? 0;
|
|
208
220
|
out[11] = snap.cosOuter;
|
|
209
|
-
|
|
221
|
+
out[12] = snap.depthBias ?? 0.005;
|
|
222
|
+
out[13] = snap.normalBias ?? 0.05;
|
|
223
|
+
out[14] = snap.pcfKernelSize ?? 3;
|
|
210
224
|
// Slot 15: shadowAtlasTile i32 via Int32Array view (sentinel -1 default).
|
|
211
225
|
const i32 = new Int32Array(out.buffer);
|
|
212
|
-
i32[15] =
|
|
226
|
+
i32[15] =
|
|
227
|
+
snap.shadowAtlasTile >= 0
|
|
228
|
+
? snap.shadowAtlasTile
|
|
229
|
+
: snap.projectorAsset !== undefined && snap.lightViewProj !== undefined
|
|
230
|
+
? SPOT_LIGHT_PROJECTOR_ONLY_SENTINEL
|
|
231
|
+
: SPOT_LIGHT_SHADOW_TILE_SENTINEL;
|
|
232
|
+
// Slot 16 begins the fifth vec4 column. The remaining tail lanes stay zero
|
|
233
|
+
// so the std430 array stride is the explicit 80-byte contract.
|
|
234
|
+
out[16] = snap.shadowIntensity ?? 1;
|
|
213
235
|
return out;
|
|
214
236
|
}
|
|
215
237
|
|
|
@@ -275,8 +297,8 @@ export interface PointShadowSlotInfo {
|
|
|
275
297
|
* feat-20260612-point-light-shadows-urp-hdrp M4 / T-M4-4 (plan-strategy §D-8):
|
|
276
298
|
* the optional point `shadow` info threads through to bytes 52..64 as
|
|
277
299
|
* `(shadowAtlasLayer i32, near f32, far f32)`. Spot snapshots write their
|
|
278
|
-
* `shadowAtlasTile` directly into the same identity lane
|
|
279
|
-
* The shader reads `near`/`far`
|
|
300
|
+
* `shadowAtlasTile` directly into the same identity lane, put shadowIntensity
|
|
301
|
+
* in the `.z` lane, and the PCF kernel width in `.w`. The shader reads `near`/`far`
|
|
280
302
|
* through `bitcast<f32>(kind_and_pad.zw)` so the WGSL struct stays
|
|
281
303
|
* `kind_and_pad: vec4<u32>` (alignment + naga_oil compose unchanged). When
|
|
282
304
|
* `shadow` is undefined (no PointLightShadow) the lanes default to
|
|
@@ -309,15 +331,26 @@ export function packLightSlot(
|
|
|
309
331
|
// Float32Array: SPOT=1 must be 0x00000001, not f32(1.0) bits.
|
|
310
332
|
const u32 = new Uint32Array(out.buffer);
|
|
311
333
|
u32[12] = snap.kind === 'point' ? LightSlotKind.POINT : LightSlotKind.SPOT;
|
|
312
|
-
// Lanes 13..15 carry one kind-discriminated shadow
|
|
313
|
-
// layer/near/far; spot writes its snapshot tile and
|
|
334
|
+
// Lanes 13..15 carry one kind-discriminated shadow payload. Point keeps
|
|
335
|
+
// layer/near/far; spot writes its snapshot tile, shadowIntensity, and PCF
|
|
336
|
+
// kernel width.
|
|
314
337
|
const i32 = new Int32Array(out.buffer);
|
|
315
338
|
if (snap.kind === 'point' && shadow !== undefined) {
|
|
316
339
|
i32[13] = shadow.shadowAtlasLayer;
|
|
317
340
|
out[14] = shadow.near;
|
|
318
341
|
out[15] = shadow.far;
|
|
319
342
|
} else if (snap.kind === 'spot') {
|
|
320
|
-
i32[13] =
|
|
343
|
+
i32[13] =
|
|
344
|
+
snap.shadowAtlasTile >= 0
|
|
345
|
+
? snap.shadowAtlasTile
|
|
346
|
+
: snap.projectorAsset !== undefined && snap.lightViewProj !== undefined
|
|
347
|
+
? SPOT_LIGHT_PROJECTOR_ONLY_SENTINEL
|
|
348
|
+
: SPOT_LIGHT_SHADOW_TILE_SENTINEL;
|
|
349
|
+
out[14] = snap.shadowIntensity ?? 1;
|
|
350
|
+
// HDRP has no separate 80-byte SpotLight payload. Reuse the otherwise
|
|
351
|
+
// unused spot `.w` lane so the cluster path consumes the same authored PCF
|
|
352
|
+
// width as the URP and volume paths.
|
|
353
|
+
out[15] = snap.pcfKernelSize ?? 3;
|
|
321
354
|
} else {
|
|
322
355
|
i32[13] = POINT_LIGHT_SHADOW_LAYER_SENTINEL;
|
|
323
356
|
// out[14] / out[15] remain zero (Float32Array zero-init).
|
package/src/materials.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { DEFAULT_STANDARD_PBR_PARAM_SCHEMA } from '@forgeax/engine-shader';
|
|
1
2
|
import type {
|
|
2
3
|
MaterialAsset,
|
|
3
4
|
MaterialColorSpace,
|
|
@@ -7,6 +8,49 @@ import type {
|
|
|
7
8
|
MaterialValue,
|
|
8
9
|
} from '@forgeax/engine-types';
|
|
9
10
|
|
|
11
|
+
export type MaterialTransmissionValidationReason =
|
|
12
|
+
| 'non-finite'
|
|
13
|
+
| 'range'
|
|
14
|
+
| 'shape'
|
|
15
|
+
| 'blend'
|
|
16
|
+
| 'depth-write';
|
|
17
|
+
|
|
18
|
+
/** Structured authoring failure for the Standard transmission contract. */
|
|
19
|
+
export class MaterialTransmissionContractError extends Error {
|
|
20
|
+
readonly code = 'material-transmission-contract-invalid' as const;
|
|
21
|
+
readonly expected = 'transmission material values satisfy finite ranges and Forward depth rules';
|
|
22
|
+
readonly hint =
|
|
23
|
+
'repair the named transmission value or pass state before publishing the material';
|
|
24
|
+
readonly detail: {
|
|
25
|
+
readonly code: 'material-transmission-contract-invalid';
|
|
26
|
+
readonly material: 'Standard';
|
|
27
|
+
readonly parameter:
|
|
28
|
+
| 'transmission'
|
|
29
|
+
| 'ior'
|
|
30
|
+
| 'thickness'
|
|
31
|
+
| 'attenuationColor'
|
|
32
|
+
| 'attenuationDistance';
|
|
33
|
+
readonly reason: MaterialTransmissionValidationReason;
|
|
34
|
+
readonly actual?: unknown;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
constructor(
|
|
38
|
+
parameter: (typeof MaterialTransmissionContractError.prototype.detail)['parameter'],
|
|
39
|
+
reason: MaterialTransmissionValidationReason,
|
|
40
|
+
actual?: unknown,
|
|
41
|
+
) {
|
|
42
|
+
super(`Materials.standard: ${parameter} violates the transmission contract (${reason})`);
|
|
43
|
+
this.name = 'MaterialTransmissionContractError';
|
|
44
|
+
this.detail = {
|
|
45
|
+
code: 'material-transmission-contract-invalid',
|
|
46
|
+
material: 'Standard',
|
|
47
|
+
parameter,
|
|
48
|
+
reason,
|
|
49
|
+
...(actual === undefined ? {} : { actual }),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
10
54
|
export const SPRITE_PREMULTIPLIED_ALPHA_BLEND: GPUBlendState = {
|
|
11
55
|
color: { srcFactor: 'one', dstFactor: 'one-minus-src-alpha', operation: 'add' },
|
|
12
56
|
alpha: { srcFactor: 'one', dstFactor: 'one-minus-src-alpha', operation: 'add' },
|
|
@@ -31,28 +75,26 @@ function authoredColorParameter(
|
|
|
31
75
|
}
|
|
32
76
|
|
|
33
77
|
function standardParameters(colorSpace: MaterialColorSpace): readonly MaterialParameter[] {
|
|
34
|
-
return
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
{
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
{ name: 'occlusionTexture', type: 'texture', optional: true },
|
|
55
|
-
];
|
|
78
|
+
return DEFAULT_STANDARD_PBR_PARAM_SCHEMA.map((entry) => {
|
|
79
|
+
const type = entry.type.startsWith('texture') ? 'texture' : entry.type;
|
|
80
|
+
const isRequired =
|
|
81
|
+
entry.name === 'baseColor' || entry.name === 'metallic' || entry.name === 'roughness';
|
|
82
|
+
const authoredColor =
|
|
83
|
+
entry.type === 'color' || (entry.type === 'vec3' && entry.name !== 'attenuationColor');
|
|
84
|
+
const schemaColorSpace = 'colorSpace' in entry ? entry.colorSpace : undefined;
|
|
85
|
+
const colorSpaceProjection: { colorSpace?: MaterialColorSpace } = {};
|
|
86
|
+
if (authoredColor && !(type === 'color' && colorSpace === 'srgb')) {
|
|
87
|
+
colorSpaceProjection.colorSpace = colorSpace;
|
|
88
|
+
} else if (!authoredColor && schemaColorSpace !== undefined) {
|
|
89
|
+
colorSpaceProjection.colorSpace = schemaColorSpace;
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
name: entry.name,
|
|
93
|
+
type,
|
|
94
|
+
...colorSpaceProjection,
|
|
95
|
+
...(isRequired ? {} : { optional: true }),
|
|
96
|
+
} as MaterialParameter;
|
|
97
|
+
});
|
|
56
98
|
}
|
|
57
99
|
|
|
58
100
|
function unlitParameters(colorSpace: MaterialColorSpace): readonly MaterialParameter[] {
|
|
@@ -143,6 +185,13 @@ interface StandardOpts {
|
|
|
143
185
|
readonly occlusionTexture?: MaterialValue;
|
|
144
186
|
readonly occlusionStrength?: number;
|
|
145
187
|
readonly alphaCutoff?: number;
|
|
188
|
+
readonly transmission?: number;
|
|
189
|
+
readonly transmissionTexture?: MaterialValue;
|
|
190
|
+
readonly ior?: number;
|
|
191
|
+
readonly thickness?: number;
|
|
192
|
+
readonly thicknessTexture?: MaterialValue;
|
|
193
|
+
readonly attenuationColor?: readonly [number, number, number];
|
|
194
|
+
readonly attenuationDistance?: number;
|
|
146
195
|
readonly renderState?: MaterialRenderState;
|
|
147
196
|
readonly castShadow?: boolean;
|
|
148
197
|
readonly queue?: number;
|
|
@@ -157,6 +206,21 @@ function validateChannel(
|
|
|
157
206
|
}
|
|
158
207
|
}
|
|
159
208
|
|
|
209
|
+
function validateFiniteRange(
|
|
210
|
+
name: 'transmission' | 'ior' | 'thickness' | 'attenuationDistance',
|
|
211
|
+
value: number | undefined,
|
|
212
|
+
minimum: number,
|
|
213
|
+
maximum?: number,
|
|
214
|
+
): void {
|
|
215
|
+
if (value === undefined || !Number.isFinite(value)) {
|
|
216
|
+
if (value === undefined) return;
|
|
217
|
+
throw new MaterialTransmissionContractError(name, 'non-finite', value);
|
|
218
|
+
}
|
|
219
|
+
if (value < minimum || (maximum !== undefined && value > maximum)) {
|
|
220
|
+
throw new MaterialTransmissionContractError(name, 'range', value);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
160
224
|
function standard(opts: StandardOpts): MaterialAsset {
|
|
161
225
|
const occlusionStrength = opts.occlusionStrength ?? 1;
|
|
162
226
|
if (occlusionStrength < 0 || occlusionStrength > 1) {
|
|
@@ -169,12 +233,36 @@ function standard(opts: StandardOpts): MaterialAsset {
|
|
|
169
233
|
}
|
|
170
234
|
validateChannel('metallicChannel', opts.metallicChannel);
|
|
171
235
|
validateChannel('roughnessChannel', opts.roughnessChannel);
|
|
236
|
+
const transmission = opts.transmission ?? 0;
|
|
237
|
+
const ior = opts.ior ?? 1.5;
|
|
238
|
+
const thickness = opts.thickness ?? 0;
|
|
239
|
+
const attenuationColor = opts.attenuationColor ?? [1, 1, 1];
|
|
240
|
+
validateFiniteRange('transmission', transmission, 0, 1);
|
|
241
|
+
validateFiniteRange('ior', ior, 1);
|
|
242
|
+
validateFiniteRange('thickness', thickness, 0);
|
|
243
|
+
validateFiniteRange('attenuationDistance', opts.attenuationDistance, Number.MIN_VALUE);
|
|
244
|
+
if (
|
|
245
|
+
attenuationColor.length !== 3 ||
|
|
246
|
+
attenuationColor.some((value) => !Number.isFinite(value) || value < 0 || value > 1)
|
|
247
|
+
) {
|
|
248
|
+
throw new MaterialTransmissionContractError('attenuationColor', 'shape', attenuationColor);
|
|
249
|
+
}
|
|
250
|
+
if (transmission > 0 && opts.renderState?.blend !== undefined) {
|
|
251
|
+
throw new MaterialTransmissionContractError('transmission', 'blend', opts.renderState.blend);
|
|
252
|
+
}
|
|
253
|
+
if (transmission > 0 && opts.renderState?.depthWriteEnabled === true) {
|
|
254
|
+
throw new MaterialTransmissionContractError('transmission', 'depth-write', true);
|
|
255
|
+
}
|
|
172
256
|
const values: Record<string, MaterialValue> = {
|
|
173
257
|
baseColor: opts.baseColor,
|
|
174
258
|
metallic: opts.metallic ?? 0,
|
|
175
259
|
roughness: opts.roughness ?? 0.5,
|
|
176
260
|
occlusionStrength,
|
|
177
261
|
specularTint: opts.specularTint ?? [1, 1, 1],
|
|
262
|
+
transmission,
|
|
263
|
+
ior,
|
|
264
|
+
thickness,
|
|
265
|
+
attenuationColor,
|
|
178
266
|
};
|
|
179
267
|
if (opts.metallicChannel !== undefined) values.metallicChannel = opts.metallicChannel;
|
|
180
268
|
if (opts.roughnessChannel !== undefined) values.roughnessChannel = opts.roughnessChannel;
|
|
@@ -193,10 +281,17 @@ function standard(opts: StandardOpts): MaterialAsset {
|
|
|
193
281
|
values.specularTintTexture = opts.specularTintTexture;
|
|
194
282
|
}
|
|
195
283
|
if (opts.alphaCutoff !== undefined) values.alphaCutoff = opts.alphaCutoff;
|
|
284
|
+
if (opts.transmissionTexture !== undefined) values.transmissionTexture = opts.transmissionTexture;
|
|
285
|
+
if (opts.thicknessTexture !== undefined) values.thicknessTexture = opts.thicknessTexture;
|
|
286
|
+
if (opts.attenuationDistance !== undefined) values.attenuationDistance = opts.attenuationDistance;
|
|
287
|
+
const forwardRenderState =
|
|
288
|
+
transmission > 0 ? { ...(opts.renderState ?? {}), depthWriteEnabled: false } : opts.renderState;
|
|
196
289
|
const passes: [MaterialPass, ...MaterialPass[]] = [
|
|
197
|
-
pass('forward', STANDARD_MODULE,
|
|
198
|
-
pass('deferred', STANDARD_MODULE, opts.renderState, 'fs_gbuffer', opts.queue),
|
|
290
|
+
pass('forward', STANDARD_MODULE, forwardRenderState, 'fs_main', opts.queue),
|
|
199
291
|
];
|
|
292
|
+
if (transmission === 0) {
|
|
293
|
+
passes.push(pass('deferred', STANDARD_MODULE, opts.renderState, 'fs_gbuffer', opts.queue));
|
|
294
|
+
}
|
|
200
295
|
if (opts.castShadow !== false) passes.push(pass('shadow-caster', STANDARD_MODULE, undefined));
|
|
201
296
|
return {
|
|
202
297
|
kind: 'material',
|