@forgeax/engine-render 0.1.21 → 0.1.24
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 +281 -38
- package/dist/assembly/backend-contract.d.ts +13 -0
- package/dist/assembly/backend-contract.d.ts.map +1 -1
- package/dist/assembly/bundler-contract.d.ts +9 -0
- package/dist/assembly/bundler-contract.d.ts.map +1 -0
- package/dist/assembly/device-feature-admission.d.ts +8 -0
- package/dist/assembly/device-feature-admission.d.ts.map +1 -1
- package/dist/assembly/extended-lighting-fallback.d.ts +13 -0
- package/dist/assembly/extended-lighting-fallback.d.ts.map +1 -0
- package/dist/assembly/factory.d.ts +7 -235
- package/dist/assembly/factory.d.ts.map +1 -1
- package/dist/assembly/host-contract.d.ts +10 -0
- package/dist/assembly/host-contract.d.ts.map +1 -1
- package/dist/assembly/material/assembly.d.ts +3 -2
- package/dist/assembly/material/assembly.d.ts.map +1 -1
- package/dist/assembly/material/standard-layer-projection.d.ts +10 -0
- package/dist/assembly/material/standard-layer-projection.d.ts.map +1 -0
- package/dist/assembly/material-shader-policy.d.ts +168 -0
- package/dist/assembly/material-shader-policy.d.ts.map +1 -0
- package/dist/assembly/material-shader-prewarm.d.ts +21 -0
- package/dist/assembly/material-shader-prewarm.d.ts.map +1 -0
- package/dist/assembly/mesh-ssbo-grow.d.ts +88 -0
- package/dist/assembly/mesh-ssbo-grow.d.ts.map +1 -0
- package/dist/assembly/recovery/device-loss-fanout.d.ts +14 -0
- package/dist/assembly/recovery/device-loss-fanout.d.ts.map +1 -0
- package/dist/assembly/recovery/generation.d.ts +46 -0
- package/dist/assembly/recovery/generation.d.ts.map +1 -0
- package/dist/assembly/recovery/recovery-attempt.d.ts +63 -0
- package/dist/assembly/recovery/recovery-attempt.d.ts.map +1 -0
- package/dist/assembly/recovery/renderer-recover.d.ts +115 -0
- package/dist/assembly/recovery/renderer-recover.d.ts.map +1 -0
- package/dist/assembly/renderer-facade.d.ts +10 -0
- package/dist/assembly/renderer-facade.d.ts.map +1 -0
- package/dist/assembly/renderer-frame-transaction.d.ts +17 -0
- package/dist/assembly/renderer-frame-transaction.d.ts.map +1 -1
- package/dist/assembly/renderer-helpers.d.ts +19 -0
- package/dist/assembly/renderer-helpers.d.ts.map +1 -0
- package/dist/assembly/renderer-lifecycle.d.ts +34 -0
- package/dist/assembly/renderer-lifecycle.d.ts.map +1 -1
- package/dist/assembly/shader-prewarm-policy.d.ts +15 -0
- package/dist/assembly/shader-prewarm-policy.d.ts.map +1 -0
- package/dist/assembly/webgpu-ready-contract.d.ts +9 -0
- package/dist/assembly/webgpu-ready-contract.d.ts.map +1 -0
- package/dist/assembly/webgpu-ready.d.ts +55 -0
- package/dist/assembly/webgpu-ready.d.ts.map +1 -0
- package/dist/assembly/webgpu-renderer.d.ts +152 -0
- package/dist/assembly/webgpu-renderer.d.ts.map +1 -0
- package/dist/authoring.mjs +1 -1
- package/dist/{chunk-PCHBPYML.mjs → chunk-GE3SDD72.mjs} +37 -5
- package/dist/chunk-GE3SDD72.mjs.map +1 -0
- package/dist/chunk-KZFTK6DO.mjs +1191 -0
- package/dist/chunk-KZFTK6DO.mjs.map +1 -0
- package/dist/{chunk-FS2KNUQH.mjs → chunk-Q752SHI5.mjs} +332 -568
- package/dist/chunk-Q752SHI5.mjs.map +1 -0
- package/dist/{chunk-6OPXDQ2E.mjs → chunk-RR5L4SRS.mjs} +33 -294
- package/dist/chunk-RR5L4SRS.mjs.map +1 -0
- package/dist/chunk-TFH5I7JJ.mjs +296 -0
- package/dist/chunk-TFH5I7JJ.mjs.map +1 -0
- package/dist/chunk-UQYS7FRM.mjs +1003 -0
- package/dist/chunk-UQYS7FRM.mjs.map +1 -0
- package/dist/chunk-YKB5DQV7.mjs +345 -0
- package/dist/chunk-YKB5DQV7.mjs.map +1 -0
- package/dist/{chunk-5YADUCA7.mjs → chunk-YRUYGA4A.mjs} +1189 -1217
- package/dist/chunk-YRUYGA4A.mjs.map +1 -0
- package/dist/chunk-Z3YYH2MB.mjs +5082 -0
- package/dist/chunk-Z3YYH2MB.mjs.map +1 -0
- package/dist/cluster-binner.d.ts +5 -0
- package/dist/cluster-binner.d.ts.map +1 -1
- package/dist/components/index.d.ts +3 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/light-helpers.d.ts +4 -0
- package/dist/components/light-helpers.d.ts.map +1 -1
- package/dist/components/light-probe.d.ts +9 -0
- package/dist/components/light-probe.d.ts.map +1 -0
- package/dist/components/rect-area-light.d.ts +12 -0
- package/dist/components/rect-area-light.d.ts.map +1 -0
- package/dist/components/scene-instance.d.ts +4 -0
- package/dist/components/scene-instance.d.ts.map +1 -1
- package/dist/components/spot-light.d.ts +3 -0
- package/dist/components/spot-light.d.ts.map +1 -1
- package/dist/construct-renderer.mjs +27276 -23232
- package/dist/construct-renderer.mjs.map +1 -1
- package/dist/device/device-scope.d.ts +2 -0
- package/dist/device/device-scope.d.ts.map +1 -1
- package/dist/device/gpu-residency.d.ts +32 -5
- package/dist/device/gpu-residency.d.ts.map +1 -1
- package/dist/device/lifecycle-transaction.d.ts +2 -0
- package/dist/device/lifecycle-transaction.d.ts.map +1 -0
- package/dist/environment/frame.d.ts +5 -0
- package/dist/environment/frame.d.ts.map +1 -1
- package/dist/environment/inspection.d.ts +7 -0
- package/dist/environment/inspection.d.ts.map +1 -1
- package/dist/environment/lifecycle.d.ts +20 -2
- package/dist/environment/lifecycle.d.ts.map +1 -1
- package/dist/errors/gpu-driven.d.ts +26 -0
- package/dist/errors/gpu-driven.d.ts.map +1 -0
- package/dist/errors/index.d.ts +1 -0
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/recover.d.ts +67 -3
- package/dist/errors/recover.d.ts.map +1 -1
- package/dist/errors/render.d.ts +39 -1
- package/dist/errors/render.d.ts.map +1 -1
- package/dist/extract/contracts.d.ts +899 -0
- package/dist/extract/contracts.d.ts.map +1 -0
- package/dist/extract/gpu-driven.d.ts +50 -0
- package/dist/extract/gpu-driven.d.ts.map +1 -0
- package/dist/extract/visibility.d.ts.map +1 -1
- package/dist/features/host.d.ts +2 -0
- package/dist/features/host.d.ts.map +1 -1
- package/dist/features/prepared-gpu-work.d.ts +3 -0
- package/dist/features/prepared-gpu-work.d.ts.map +1 -1
- package/dist/features/prepared-graphics-store.d.ts +2 -0
- package/dist/features/prepared-graphics-store.d.ts.map +1 -1
- package/dist/gpu-driven/batch-topology.d.ts +34 -0
- package/dist/gpu-driven/batch-topology.d.ts.map +1 -1
- package/dist/gpu-driven/prepared-draw.d.ts +63 -0
- package/dist/gpu-driven/prepared-draw.d.ts.map +1 -0
- package/dist/gpu-driven/production-raster.d.ts +126 -2
- package/dist/gpu-driven/production-raster.d.ts.map +1 -1
- package/dist/gpu-driven/view-gpu.d.ts +64 -1
- package/dist/gpu-driven/view-gpu.d.ts.map +1 -1
- package/dist/gpu-scene-schema.d.ts +14 -0
- package/dist/gpu-scene-schema.d.ts.map +1 -1
- package/dist/gpu-scene.d.ts +9 -1
- package/dist/gpu-scene.d.ts.map +1 -1
- package/dist/gpu-usage.d.ts +0 -1
- package/dist/gpu-usage.d.ts.map +1 -1
- package/dist/hdrp-buffers.d.ts +3 -3
- package/dist/hdrp-buffers.d.ts.map +1 -1
- package/dist/ibl/IblPipelineCache.d.ts +7 -6
- package/dist/ibl/IblPipelineCache.d.ts.map +1 -1
- package/dist/ibl/skylight-bind-group.d.ts +7 -1
- package/dist/ibl/skylight-bind-group.d.ts.map +1 -1
- package/dist/index.d.ts +13 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +90 -5
- package/dist/index.mjs.map +1 -1
- package/dist/inspection-types.d.ts +163 -1
- package/dist/inspection-types.d.ts.map +1 -1
- package/dist/internal.d.ts +9 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.mjs +23 -2
- package/dist/internal.mjs.map +1 -1
- package/dist/light-buffer-layout.d.ts +60 -148
- package/dist/light-buffer-layout.d.ts.map +1 -1
- package/dist/materials.d.ts +34 -10
- package/dist/materials.d.ts.map +1 -1
- package/dist/mesh-material-bindings.d.ts +56 -0
- package/dist/mesh-material-bindings.d.ts.map +1 -1
- package/dist/occlusion-proxy.d.ts +4 -0
- package/dist/occlusion-proxy.d.ts.map +1 -0
- package/dist/pbr-pipeline.d.ts +58 -21
- package/dist/pbr-pipeline.d.ts.map +1 -1
- package/dist/pipeline/standard-forward-lane.d.ts.map +1 -1
- package/dist/pipeline/standard-lighting/graph.d.ts.map +1 -1
- package/dist/pipeline/standard-lighting/light-frame.d.ts +3 -3
- package/dist/pipeline/standard-lighting/light-frame.d.ts.map +1 -1
- package/dist/pipeline/standard-lighting/topology.d.ts +1 -1
- package/dist/pipeline/standard-lighting/topology.d.ts.map +1 -1
- package/dist/pipeline/standard-lighting/transport.d.ts.map +1 -1
- package/dist/pipeline/standard-pipeline.d.ts.map +1 -1
- package/dist/pipeline-builder.d.ts +2 -0
- package/dist/pipeline-builder.d.ts.map +1 -1
- package/dist/pipeline-spec.d.ts +1 -1
- package/dist/pipeline-spec.d.ts.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/points-lines/prepare.d.ts +3 -0
- package/dist/points-lines/prepare.d.ts.map +1 -1
- package/dist/points-lines/standard-owner.d.ts +33 -0
- package/dist/points-lines/standard-owner.d.ts.map +1 -0
- package/dist/prepare/extended-lighting/ltc-resources.d.ts +31 -0
- package/dist/prepare/extended-lighting/ltc-resources.d.ts.map +1 -0
- package/dist/prepare/extended-lighting/resources.d.ts +72 -0
- package/dist/prepare/extended-lighting/resources.d.ts.map +1 -0
- package/dist/prepare/extended-lighting/spot-modifiers.d.ts +42 -0
- package/dist/prepare/extended-lighting/spot-modifiers.d.ts.map +1 -0
- package/dist/prepare/extended-lighting/state.d.ts +24 -0
- package/dist/prepare/extended-lighting/state.d.ts.map +1 -0
- package/dist/record/frame-lighting.d.ts +8 -6
- package/dist/record/frame-lighting.d.ts.map +1 -1
- package/dist/record/frame-snapshot.d.ts +55 -10
- 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 +21 -5
- package/dist/record/frame.d.ts.map +1 -1
- package/dist/record/gpu-timing.d.ts +19 -7
- package/dist/record/gpu-timing.d.ts.map +1 -1
- package/dist/record/helpers.d.ts +0 -20
- package/dist/record/helpers.d.ts.map +1 -1
- package/dist/record/main-pass-geometry.d.ts +20 -2
- package/dist/record/main-pass-geometry.d.ts.map +1 -1
- package/dist/record/main-pass-material.d.ts +10 -18
- package/dist/record/main-pass-material.d.ts.map +1 -1
- package/dist/record/main-pass-sprite-draws.d.ts.map +1 -1
- package/dist/record/main-pass.d.ts.map +1 -1
- package/dist/record/mesh-ssbo.d.ts +11 -3
- package/dist/record/mesh-ssbo.d.ts.map +1 -1
- package/dist/record/recovery-pipeline.d.ts +30 -0
- package/dist/record/recovery-pipeline.d.ts.map +1 -0
- package/dist/record/render-context.d.ts +82 -9
- package/dist/record/render-context.d.ts.map +1 -1
- package/dist/record/shadow-pass.d.ts.map +1 -1
- package/dist/record/typed-frame-graph.d.ts +49 -2
- package/dist/record/typed-frame-graph.d.ts.map +1 -1
- package/dist/record/view-ubo.d.ts +1 -2
- package/dist/record/view-ubo.d.ts.map +1 -1
- package/dist/recovery/render-system-candidate.d.ts +65 -0
- package/dist/recovery/render-system-candidate.d.ts.map +1 -0
- package/dist/reflection/inspection.d.ts +10 -0
- package/dist/reflection/inspection.d.ts.map +1 -0
- package/dist/reflection/projection.d.ts +49 -0
- package/dist/reflection/projection.d.ts.map +1 -1
- package/dist/reflection/record-owner.d.ts +60 -0
- package/dist/reflection/record-owner.d.ts.map +1 -0
- package/dist/render-contract.d.ts +78 -15
- package/dist/render-contract.d.ts.map +1 -1
- package/dist/render-pipeline.d.ts +7 -0
- package/dist/render-pipeline.d.ts.map +1 -1
- package/dist/render-system-extract-tail.d.ts +12 -0
- package/dist/render-system-extract-tail.d.ts.map +1 -0
- package/dist/render-system-extract.d.ts +252 -30
- package/dist/render-system-extract.d.ts.map +1 -1
- package/dist/render-system.d.ts +140 -5
- package/dist/render-system.d.ts.map +1 -1
- package/dist/scene/probe-blend-record.d.ts +22 -0
- package/dist/scene/probe-blend-record.d.ts.map +1 -0
- package/dist/scene/probe-blend.d.ts +142 -0
- package/dist/scene/probe-blend.d.ts.map +1 -0
- package/dist/scene/render-scene-types.d.ts +0 -6
- package/dist/scene/render-scene-types.d.ts.map +1 -1
- package/dist/scene/render-scene.d.ts +122 -9
- package/dist/scene/render-scene.d.ts.map +1 -1
- package/dist/scene/visibility/bounds.d.ts +20 -0
- package/dist/scene/visibility/bounds.d.ts.map +1 -0
- package/dist/scene/visibility/budget.d.ts +16 -0
- package/dist/scene/visibility/budget.d.ts.map +1 -0
- package/dist/scene/visibility/facet.d.ts +73 -0
- package/dist/scene/visibility/facet.d.ts.map +1 -0
- package/dist/scene/visibility/gpu-frame-timing.d.ts +41 -0
- package/dist/scene/visibility/gpu-frame-timing.d.ts.map +1 -0
- package/dist/scene/visibility/gpu-lod.d.ts +46 -0
- package/dist/scene/visibility/gpu-lod.d.ts.map +1 -0
- package/dist/scene/visibility/inspection.d.ts +132 -0
- package/dist/scene/visibility/inspection.d.ts.map +1 -0
- package/dist/scene/visibility/lod-selector.d.ts +25 -0
- package/dist/scene/visibility/lod-selector.d.ts.map +1 -0
- package/dist/scene/visibility/occlusion-confidence.d.ts +81 -0
- package/dist/scene/visibility/occlusion-confidence.d.ts.map +1 -0
- package/dist/scene/visibility/occlusion-pass.d.ts +57 -0
- package/dist/scene/visibility/occlusion-pass.d.ts.map +1 -0
- package/dist/scene/visibility/occlusion-query-pool.d.ts +57 -0
- package/dist/scene/visibility/occlusion-query-pool.d.ts.map +1 -0
- package/dist/scene/visibility/occlusion-runtime.d.ts +96 -0
- package/dist/scene/visibility/occlusion-runtime.d.ts.map +1 -0
- package/dist/scene/visibility/types.d.ts +34 -0
- package/dist/scene/visibility/types.d.ts.map +1 -0
- package/dist/ssr/admission.d.ts +122 -0
- package/dist/ssr/admission.d.ts.map +1 -0
- package/dist/ssr/composition.d.ts +32 -0
- package/dist/ssr/composition.d.ts.map +1 -0
- package/dist/ssr/errors.d.ts +39 -0
- package/dist/ssr/errors.d.ts.map +1 -0
- package/dist/ssr/identity.d.ts +13 -0
- package/dist/ssr/identity.d.ts.map +1 -0
- package/dist/systems/skin-palette-allocator.d.ts +1 -1
- package/dist/temporal/frame-coordinator.d.ts +13 -0
- package/dist/temporal/frame-coordinator.d.ts.map +1 -1
- package/dist/temporal/frame.d.ts +2 -0
- package/dist/temporal/frame.d.ts.map +1 -1
- package/dist/temporal/index.mjs +6 -5
- package/dist/temporal/taa-history-store.d.ts +15 -1
- package/dist/temporal/taa-history-store.d.ts.map +1 -1
- package/dist/temporal/transaction.d.ts +5 -0
- package/dist/temporal/transaction.d.ts.map +1 -1
- package/dist/temporal/view.d.ts +7 -0
- package/dist/temporal/view.d.ts.map +1 -1
- package/dist/tilemap-chunk-extract-system.d.ts +1 -1
- package/dist/typed-render-graph-primitives.d.ts +4 -0
- package/dist/typed-render-graph-primitives.d.ts.map +1 -1
- package/dist/volume/passes.d.ts +8 -4
- package/dist/volume/passes.d.ts.map +1 -1
- package/package.json +20 -20
- package/src/__tests__/cluster-grid-default-surface.unit.test.ts +5 -0
- package/src/__tests__/detached-inspection.integration.test.ts +6 -0
- package/src/__tests__/device-feature-admission.unit.test.ts +19 -1
- package/src/__tests__/device-loss-fanout.unit.test.ts +107 -0
- package/src/__tests__/device-scope-lifecycle.unit.test.ts +21 -0
- package/src/__tests__/direct-light-snapshot.unit.test.ts +59 -3
- package/src/__tests__/environment-generation.integration.test.ts +39 -0
- package/src/__tests__/evidence-identity.ts +13 -0
- package/src/__tests__/evidence-identity.unit.test.ts +24 -0
- package/src/__tests__/expose-renderer-errors.unit.test.ts +34 -0
- package/src/__tests__/extended-lighting-recovery.browser.test.ts +14 -0
- package/src/__tests__/extended-lighting-recovery.dawn.test.ts +14 -0
- package/src/__tests__/extended-lighting-recovery.integration.test.ts +81 -0
- package/src/__tests__/extended-lighting-resources.unit.test.ts +51 -0
- package/src/__tests__/extended-lighting-zero-feature.integration.test.ts +52 -0
- package/src/__tests__/factory-contract.integration.test.ts +154 -6
- package/src/__tests__/fallback-row-stride-surface.unit.test.ts +4 -1
- package/src/__tests__/frame-observation.contract.test.ts +15 -0
- package/src/__tests__/gpu-driven-batch-topology-pbr.unit.test.ts +146 -0
- package/src/__tests__/gpu-driven-indirect-raster-evidence.ts +1 -0
- package/src/__tests__/gpu-driven-indirect-raster.dawn.test.ts +1 -0
- package/src/__tests__/gpu-driven-production.integration.test.ts +572 -9
- package/src/__tests__/gpu-driven-scaling.unit.test.ts +66 -2
- package/src/__tests__/gpu-driven-view-gpu-evidence.ts +26 -1
- package/src/__tests__/gpu-driven-view-graph.integration.test.ts +89 -2
- package/src/__tests__/gpu-driven-view.browser.test.ts +3 -3
- package/src/__tests__/gpu-driven-view.dawn.test.ts +3 -3
- package/src/__tests__/gpu-driven-view.unit.test.ts +50 -0
- package/src/__tests__/gpu-lod-evidence.ts +188 -0
- package/src/__tests__/gpu-lod-fallback.integration.test.ts +10 -0
- package/src/__tests__/gpu-lod-indirect.integration.test.ts +40 -0
- package/src/__tests__/gpu-lod-parity.dawn.test.ts +29 -0
- package/src/__tests__/gpu-lod-readiness.integration.test.ts +52 -0
- package/src/__tests__/gpu-lod-schema.unit.test.ts +66 -0
- package/src/__tests__/gpu-lod-selector.unit.test.ts +28 -0
- package/src/__tests__/gpu-lod-silhouette.browser.test.ts +13 -0
- package/src/__tests__/gpu-resource-store-stride.unit.test.ts +66 -1
- package/src/__tests__/gpu-scene.dawn.test.ts +8 -1
- package/src/__tests__/gpu-scene.unit.test.ts +49 -3
- package/src/__tests__/ibl/face-uniforms.unit.test.ts +2 -0
- package/src/__tests__/ibl-residency-publication.unit.test.ts +113 -0
- package/src/__tests__/light-buffer-layout.unit.test.ts +113 -3
- package/src/__tests__/light-inspection.unit.test.ts +55 -0
- package/src/__tests__/light-resource-error.unit.test.ts +43 -0
- package/src/__tests__/lighting-scene-roundtrip.integration.test.ts +109 -0
- package/src/__tests__/lod-bounds.unit.test.ts +42 -0
- package/src/__tests__/lod-cpu-lane.integration.test.ts +55 -0
- package/src/__tests__/lod-cpu-no-change.perf.test.ts +19 -0
- package/src/__tests__/lod-gpu-frame-timing.unit.test.ts +49 -0
- package/src/__tests__/lod-multi-view.integration.test.ts +63 -0
- package/src/__tests__/lod-occlusion-device-loss.integration.test.ts +27 -0
- package/src/__tests__/lod-occlusion-final-decision.integration.test.ts +47 -0
- package/src/__tests__/lod-occlusion-inspection.integration.test.ts +217 -0
- package/src/__tests__/lod-occlusion-inspection.schema.test-d.ts +14 -0
- package/src/__tests__/lod-occlusion-inspection.unit.test.ts +72 -0
- package/src/__tests__/lod-occlusion-visual-evidence.ts +91 -0
- package/src/__tests__/lod-occlusion.browser.test.ts +15 -0
- package/src/__tests__/lod-occlusion.dawn.test.ts +20 -0
- package/src/__tests__/lod-selector.profile.test.ts +35 -0
- package/src/__tests__/lod-selector.unit.test.ts +68 -0
- package/src/__tests__/lod-visibility-identity.unit.test.ts +198 -0
- package/src/__tests__/lod-visibility-lifecycle.integration.test.ts +132 -0
- package/src/__tests__/ltc-resources.unit.test.ts +32 -0
- package/src/__tests__/material-contract-inventory.unit.test.ts +41 -9
- package/src/__tests__/material-cooked-projection.unit.test.ts +19 -1
- package/src/__tests__/material-static-dynamic-route.unit.test.ts +29 -0
- package/src/__tests__/material-stride-surface.unit.test.ts +7 -3
- package/src/__tests__/materials-standard-contract.unit.test.ts +104 -0
- package/src/__tests__/mesh-buffer-usage-surface.unit.test.ts +1 -1
- package/src/__tests__/occlusion-confidence.unit.test.ts +168 -0
- package/src/__tests__/occlusion-invalidation.integration.test.ts +37 -0
- package/src/__tests__/occlusion-pass-routing.unit.test.ts +16 -0
- package/src/__tests__/occlusion-pass.dawn.test.ts +20 -0
- package/src/__tests__/occlusion-pass.integration.test.ts +43 -0
- package/src/__tests__/occlusion-pass.rhi-null.test.ts +22 -0
- package/src/__tests__/occlusion-query-pool.rhi-null.test.ts +21 -0
- package/src/__tests__/occlusion-query-pool.unit.test.ts +95 -0
- package/src/__tests__/occlusion-query-ticket.integration.test.ts +47 -0
- package/src/__tests__/occlusion-query.dawn.test.ts +16 -0
- package/src/__tests__/occlusion-query.evidence.ts +178 -0
- package/src/__tests__/occlusion-query.rhi-null.test.ts +31 -0
- package/src/__tests__/occlusion-runtime.unit.test.ts +120 -0
- package/src/__tests__/physical-clearcoat.integration.test.ts +89 -0
- package/src/__tests__/prepared-gpu-driven-pbr.integration.test.ts +196 -0
- package/src/__tests__/prepared-graphics-pipeline-warmup.unit.test.ts +1 -1
- package/src/__tests__/probe-bindings.unit.test.ts +200 -0
- package/src/__tests__/probe-blend-numeric.unit.test.ts +67 -0
- package/src/__tests__/probe-blend-oracle.unit.test.ts +136 -0
- package/src/__tests__/probe-capacity.integration.test.ts +97 -0
- package/src/__tests__/probe-recovery.integration.test.ts +104 -0
- package/src/__tests__/probe-scene-dirty.integration.test.ts +211 -0
- package/src/__tests__/profiler-phase-catalog.test.ts +4 -1
- package/src/__tests__/profiler-phase-token.test.ts +1 -0
- package/src/__tests__/recover-error-policy-owner.unit.test.ts +6 -3
- package/src/__tests__/recovery-candidate-prepare.contract.test.ts +140 -0
- package/src/__tests__/rect-area-boundary.unit.test.ts +24 -0
- package/src/__tests__/reflection-fallback-graph.unit.test.ts +67 -0
- package/src/__tests__/reflection-fallback-inspection.unit.test.ts +77 -0
- package/src/__tests__/reflection-fallback-lifecycle.integration.test.ts +21 -0
- package/src/__tests__/reflection-fallback-projection.unit.test.ts +90 -0
- package/src/__tests__/reflection-fallback-source.unit.test.ts +32 -0
- package/src/__tests__/reflection-probe-owner-placement.unit.test.ts +39 -0
- package/src/__tests__/reflection-probe-record-owner.characterization.unit.test.ts +120 -0
- package/src/__tests__/render-error-code-owner.test-d.ts +1 -0
- package/src/__tests__/render-feature-docs.unit.test.ts +12 -7
- package/src/__tests__/render-graph-fallback.integration.test.ts +24 -0
- package/src/__tests__/render-perf/extended-lighting.bench.test.ts +66 -0
- package/src/__tests__/render-scene-projection.unit.test.ts +447 -18
- package/src/__tests__/renderer-factory-material-contract.unit.test.ts +160 -17
- package/src/__tests__/renderer-frame-generation-fence.integration.test.ts +47 -0
- package/src/__tests__/renderer-generation-assembly.unit.test.ts +77 -0
- package/src/__tests__/renderer-generation-failure.unit.test.ts +108 -0
- package/src/__tests__/renderer-producer-root-matrix.integration.test.ts +33 -0
- package/src/__tests__/renderer-recovery-capability-matrix.unit.test.ts +59 -0
- package/src/__tests__/renderer-recovery-contract.unit.test.ts +73 -0
- package/src/__tests__/renderer-recovery-lifecycle.unit.test.ts +216 -0
- package/src/__tests__/renderer-target-history-recovery.integration.test.ts +80 -0
- package/src/__tests__/shader-manifest-fixture.ts +13 -16
- package/src/__tests__/shader-stage-surface.unit.test.ts +1 -1
- package/src/__tests__/skin-motion-regression.unit.test.ts +22 -0
- package/src/__tests__/skinned-shadow-caster.test.ts +2 -2
- package/src/__tests__/spot-modifier-projection.unit.test.ts +70 -0
- package/src/__tests__/ssr-admission-matrix.integration.test.ts +206 -0
- package/src/__tests__/ssr-composition.unit.test.ts +46 -0
- package/src/__tests__/ssr-fallback-zero-work.bench.test.ts +94 -0
- package/src/__tests__/ssr-recovery-errors.unit.test.ts +58 -0
- package/src/__tests__/standard-cluster-variant-resolution.unit.test.ts +67 -0
- package/src/__tests__/standard-clustered-pipeline.unit.test.ts +7 -0
- package/src/__tests__/standard-layer-projection.unit.test.ts +23 -0
- package/src/__tests__/standard-lighting-inspection.integration.test.ts +1 -1
- package/src/__tests__/standard-lighting-write.unit.test.ts +66 -2
- package/src/__tests__/temporal-fallback-generation.integration.test.ts +16 -0
- package/src/__tests__/temporal-view.unit.test.ts +3 -3
- package/src/__tests__/transmission-prewarm.unit.test.ts +111 -32
- package/src/__tests__/visibility-budget.integration.test.ts +140 -0
- package/src/__tests__/visibility-budget.unit.test.ts +70 -0
- package/src/__tests__/visibility-extract.integration.test.ts +11 -6
- package/src/__tests__/volumetric-fog-point-spot-accumulation.integration.test.ts +6 -3
- package/src/__tests__/volumetric-fog-stage-readback.dawn.test.ts +31 -28
- package/src/__tests__/volumetric-fog-topology.unit.test.ts +3 -1
- package/src/assembly/backend-contract.ts +13 -0
- package/src/assembly/bundler-contract.ts +9 -0
- package/src/assembly/device-feature-admission.ts +26 -9
- package/src/assembly/extended-lighting-fallback.ts +216 -0
- package/src/assembly/factory.ts +81 -9634
- package/src/assembly/host-contract.ts +10 -0
- package/src/assembly/material/assembly.ts +18 -2
- package/src/assembly/material/standard-layer-projection.ts +16 -0
- package/src/assembly/material-shader-policy.ts +854 -0
- package/src/assembly/material-shader-prewarm.ts +88 -0
- package/src/assembly/mesh-ssbo-grow.ts +270 -0
- package/src/assembly/recovery/device-loss-fanout.ts +89 -0
- package/src/assembly/recovery/generation.ts +141 -0
- package/src/assembly/recovery/recovery-attempt.ts +800 -0
- package/src/assembly/recovery/renderer-recover.ts +906 -0
- package/src/assembly/renderer-facade.ts +342 -0
- package/src/assembly/renderer-frame-transaction.ts +45 -0
- package/src/assembly/renderer-helpers.ts +99 -0
- package/src/assembly/renderer-lifecycle.ts +159 -0
- package/src/assembly/shader-prewarm-policy.ts +157 -0
- package/src/assembly/webgpu-ready-contract.ts +14 -0
- package/src/assembly/webgpu-ready.ts +4079 -0
- package/src/assembly/webgpu-renderer.ts +4095 -0
- package/src/cluster-binner.ts +31 -0
- package/src/components/__tests__/lighting-authoring.unit.test.ts +39 -0
- package/src/components/__tests__/rect-area-light.unit.test.ts +33 -0
- package/src/components/camera.ts +1 -1
- package/src/components/index.ts +3 -0
- package/src/components/light-helpers.ts +52 -1
- package/src/components/light-probe.ts +13 -0
- package/src/components/rect-area-light.ts +15 -0
- package/src/components/scene-instance.ts +6 -0
- package/src/components/spot-light.ts +3 -0
- package/src/debug-draw-glue.ts +1 -1
- package/src/device/__tests__/extended-lighting-recovery.unit.test.ts +24 -0
- package/src/device/device-scope.ts +35 -6
- package/src/device/gpu-residency.ts +334 -35
- package/src/device/lifecycle-transaction.ts +12 -0
- package/src/environment/frame.ts +6 -0
- package/src/environment/inspection.ts +10 -0
- package/src/environment/lifecycle.ts +122 -9
- package/src/errors/gpu-driven.ts +92 -0
- package/src/errors/index.ts +1 -0
- package/src/errors/recover.ts +108 -5
- package/src/errors/render.ts +72 -1
- package/src/extract/camera.ts +3 -3
- package/src/extract/contracts.ts +974 -0
- package/src/extract/gpu-driven.ts +108 -0
- package/src/extract/visibility.ts +0 -23
- package/src/features/host.ts +16 -0
- package/src/features/prepared-gpu-work.ts +20 -2
- package/src/features/prepared-graphics-store.ts +17 -0
- package/src/gpu-driven/batch-topology.ts +206 -28
- package/src/gpu-driven/prepared-draw.ts +208 -0
- package/src/gpu-driven/production-raster.ts +1046 -39
- package/src/gpu-driven/view-gpu.ts +411 -29
- package/src/gpu-scene-schema.ts +13 -0
- package/src/gpu-scene.ts +137 -67
- package/src/gpu-usage.ts +0 -1
- package/src/hdrp-buffers.ts +6 -6
- package/src/ibl/IblPipelineCache.ts +134 -50
- package/src/ibl/skylight-bind-group.ts +26 -0
- package/src/index.ts +83 -1
- package/src/inspection-types.ts +220 -1
- package/src/internal.ts +38 -0
- package/src/light-buffer-layout.ts +157 -324
- package/src/materials.ts +278 -47
- package/src/mesh-material-bindings.ts +59 -0
- package/src/occlusion-proxy.ts +64 -0
- package/src/pbr-pipeline.ts +290 -60
- package/src/pipeline/standard-forward-lane.ts +47 -0
- package/src/pipeline/standard-lighting/graph.ts +2 -1
- package/src/pipeline/standard-lighting/light-frame.ts +3 -2
- package/src/pipeline/standard-lighting/topology.ts +1 -1
- package/src/pipeline/standard-lighting/transport.ts +2 -1
- package/src/pipeline/standard-pipeline.ts +2 -0
- package/src/pipeline-builder.ts +5 -2
- package/src/pipeline-spec.ts +12 -1
- package/src/plugin.ts +4 -0
- package/src/points-lines/__tests__/cache-recovery.unit.test.ts +22 -0
- package/src/points-lines/prepare.ts +9 -0
- package/src/points-lines/standard-owner.ts +403 -0
- package/src/prepare/__tests__/extended-lighting-capability.unit.test.ts +56 -0
- package/src/prepare/extended-lighting/ltc-resources.ts +136 -0
- package/src/prepare/extended-lighting/resources.ts +389 -0
- package/src/prepare/extended-lighting/spot-modifiers.ts +194 -0
- package/src/prepare/extended-lighting/state.ts +92 -0
- package/src/record/__tests__/frame-targets-recovery.unit.test.ts +60 -0
- package/src/record/__tests__/gpu-timing.unit.test.ts +177 -0
- package/src/record/__tests__/main-pass-geometry.unit.test.ts +26 -1
- package/src/record/__tests__/mesh-ssbo.unit.test.ts +38 -0
- package/src/record/__tests__/recovery-pipeline.unit.test.ts +124 -0
- package/src/record/__tests__/sprite-material-abi.unit.test.ts +28 -13
- package/src/record/__tests__/standard-pbr-ubo-layout.unit.test.ts +47 -4
- package/src/record/__tests__/temporal-payload.unit.test.ts +29 -28
- package/src/record/__tests__/typed-frame-graph-plan.unit.test.ts +21 -2
- package/src/record/frame-lighting.ts +252 -53
- package/src/record/frame-snapshot.ts +72 -12
- package/src/record/frame-targets.ts +11 -1
- package/src/record/frame.ts +416 -95
- package/src/record/gpu-timing.ts +108 -44
- package/src/record/helpers.ts +1 -59
- package/src/record/main-pass-geometry.ts +434 -44
- package/src/record/main-pass-material.ts +324 -210
- package/src/record/main-pass-sprite-draws.ts +58 -92
- package/src/record/main-pass.ts +94 -6
- package/src/record/mesh-ssbo.ts +79 -46
- package/src/record/recovery-pipeline.ts +695 -0
- package/src/record/render-context.ts +99 -7
- package/src/record/shadow-pass.ts +66 -40
- package/src/record/typed-frame-graph.ts +270 -84
- package/src/record/view-ubo.ts +17 -27
- package/src/recovery/render-system-candidate.ts +839 -0
- package/src/reflection/inspection.ts +67 -0
- package/src/reflection/projection.ts +196 -1
- package/src/reflection/record-owner.ts +1283 -0
- package/src/render-contract.ts +82 -12
- package/src/render-pipeline.ts +5 -0
- package/src/render-system-extract-tail.ts +2983 -0
- package/src/render-system-extract.ts +290 -2784
- package/src/render-system.ts +1597 -1192
- package/src/scene/__tests__/changed-block-summary.candidate.test.ts +36 -0
- package/src/scene/probe-blend-record.ts +54 -0
- package/src/scene/probe-blend.ts +813 -0
- package/src/scene/render-scene-types.ts +0 -7
- package/src/scene/render-scene.ts +972 -184
- package/src/scene/visibility/bounds.ts +57 -0
- package/src/scene/visibility/budget.ts +40 -0
- package/src/scene/visibility/facet.ts +400 -0
- package/src/scene/visibility/gpu-frame-timing.ts +101 -0
- package/src/scene/visibility/gpu-lod.ts +119 -0
- package/src/scene/visibility/inspection.ts +313 -0
- package/src/scene/visibility/lod-selector.ts +84 -0
- package/src/scene/visibility/occlusion-confidence.ts +478 -0
- package/src/scene/visibility/occlusion-pass.ts +165 -0
- package/src/scene/visibility/occlusion-query-pool.ts +178 -0
- package/src/scene/visibility/occlusion-runtime.ts +672 -0
- package/src/scene/visibility/types.ts +50 -0
- package/src/ssr/admission.ts +451 -0
- package/src/ssr/composition.ts +73 -0
- package/src/ssr/errors.ts +76 -0
- package/src/ssr/identity.ts +12 -0
- package/src/systems/skin-palette-allocator.ts +1 -1
- package/src/temporal/frame-coordinator.ts +30 -1
- package/src/temporal/frame.ts +14 -1
- package/src/temporal/taa-history-store.ts +46 -2
- package/src/temporal/temporal-view.ts +1 -1
- package/src/temporal/transaction.ts +9 -0
- package/src/temporal/view.ts +11 -0
- package/src/tilemap-chunk-extract-system.ts +5 -5
- package/src/transmission/__tests__/standard-transmission.dawn.test.ts +19 -12
- package/src/typed-render-graph-primitives.ts +48 -0
- package/src/volume/passes.ts +46 -49
- package/dist/.tsbuildinfo +0 -1
- package/dist/chunk-5YADUCA7.mjs.map +0 -1
- package/dist/chunk-6OPXDQ2E.mjs.map +0 -1
- package/dist/chunk-BXBQQKFQ.mjs +0 -67
- package/dist/chunk-BXBQQKFQ.mjs.map +0 -1
- package/dist/chunk-FS2KNUQH.mjs.map +0 -1
- package/dist/chunk-PCHBPYML.mjs.map +0 -1
- package/dist/chunk-VFPLTKCU.mjs +0 -192
- package/dist/chunk-VFPLTKCU.mjs.map +0 -1
|
@@ -20,7 +20,11 @@ import type {
|
|
|
20
20
|
TextureView,
|
|
21
21
|
} from '@forgeax/engine-rhi';
|
|
22
22
|
import { err, ok, RhiError } from '@forgeax/engine-rhi';
|
|
23
|
-
import
|
|
23
|
+
import {
|
|
24
|
+
DEFAULT_STANDARD_PBR_PARAM_SCHEMA,
|
|
25
|
+
type MaterialRuntimeArtifact,
|
|
26
|
+
type MaterialShaderArtifact,
|
|
27
|
+
} from '@forgeax/engine-shader';
|
|
24
28
|
import type {
|
|
25
29
|
MaterialRenderState,
|
|
26
30
|
ParamSchemaEntry,
|
|
@@ -28,6 +32,7 @@ import type {
|
|
|
28
32
|
PrimitiveTopology,
|
|
29
33
|
VertexAttributeMap,
|
|
30
34
|
} from '@forgeax/engine-types';
|
|
35
|
+
import { derive } from '@forgeax/engine-types';
|
|
31
36
|
import type { MaterialRenderProjection } from '../assembly/material/assembly';
|
|
32
37
|
import type { DeviceScope } from '../device/device-scope';
|
|
33
38
|
import type { MeshGpuHandles } from '../device/gpu-residency';
|
|
@@ -50,6 +55,7 @@ import type { PointsLinesInspection } from '../points-lines/inspection';
|
|
|
50
55
|
import type { PointsLinesRecordPlan } from '../points-lines/record';
|
|
51
56
|
import type { ReflectionProbeTable } from '../reflection/gpu-table';
|
|
52
57
|
import type { ReflectionProbeSelectionResult } from '../reflection/projection';
|
|
58
|
+
import type { SsrAdmissionIdentity } from '../ssr/identity';
|
|
53
59
|
import type { GpuPassTimingReason } from './gpu-pass-timing/errors';
|
|
54
60
|
import type {
|
|
55
61
|
GpuPassTimingCapture,
|
|
@@ -68,7 +74,33 @@ export interface ReflectionProbeRecordState {
|
|
|
68
74
|
readonly table: ReflectionProbeTable;
|
|
69
75
|
readonly selections: ReadonlyMap<string, ReflectionProbeSelectionResult>;
|
|
70
76
|
readonly graph: import('./typed-frame-graph').ReflectionProbeGraphState;
|
|
71
|
-
|
|
77
|
+
/** Detached committed fallback projections joined by main-pass renderable key. */
|
|
78
|
+
readonly fallbackProjections?: ReadonlyMap<
|
|
79
|
+
string,
|
|
80
|
+
import('../inspection-types').ReflectionFallbackReceipt
|
|
81
|
+
>;
|
|
82
|
+
/** Demand is derived from this frame's renderable/source selection. */
|
|
83
|
+
readonly fallbackDemand?: boolean;
|
|
84
|
+
/** True when at least one selected row must prove a non-zero readback. */
|
|
85
|
+
readonly fallbackHasNonNeutral?: boolean;
|
|
86
|
+
readonly completeSubmission: (
|
|
87
|
+
submitted: boolean,
|
|
88
|
+
completed?: Promise<unknown>,
|
|
89
|
+
fallbackOutput?: {
|
|
90
|
+
readonly format: TextureFormat;
|
|
91
|
+
readonly size: { readonly width: number; readonly height: number };
|
|
92
|
+
readonly frameId: number;
|
|
93
|
+
readonly graphGeneration: number;
|
|
94
|
+
readonly textureIdentity: number;
|
|
95
|
+
readonly readback?: Promise<{
|
|
96
|
+
readonly linearHdr: readonly [number, number, number, number];
|
|
97
|
+
readonly hash: string;
|
|
98
|
+
readonly graphGeneration: number;
|
|
99
|
+
readonly textureIdentity: number;
|
|
100
|
+
}>;
|
|
101
|
+
},
|
|
102
|
+
fallbackRequested?: boolean,
|
|
103
|
+
) => Promise<void>;
|
|
72
104
|
}
|
|
73
105
|
|
|
74
106
|
export interface MaterialShaderPipelineEntry {
|
|
@@ -76,6 +108,18 @@ export interface MaterialShaderPipelineEntry {
|
|
|
76
108
|
readonly group2Contract: PipelineGroup2Contract;
|
|
77
109
|
}
|
|
78
110
|
|
|
111
|
+
/**
|
|
112
|
+
* Armed only for the first published recovery frame. Candidate preparation
|
|
113
|
+
* must make every pipeline and static residency lookup a cache hit before this
|
|
114
|
+
* guard is armed; a miss is a hard failure before queue submission.
|
|
115
|
+
*/
|
|
116
|
+
export interface RecoveryColdWorkGuard {
|
|
117
|
+
arm(): void;
|
|
118
|
+
notePipelineColdWork(): void;
|
|
119
|
+
noteUploadColdWork(): void;
|
|
120
|
+
finish(): void;
|
|
121
|
+
}
|
|
122
|
+
|
|
79
123
|
import type {
|
|
80
124
|
RenderDebugOverlay,
|
|
81
125
|
RenderPipelineContext,
|
|
@@ -103,12 +147,20 @@ import type { FoldDispatchPlan } from './mesh-ssbo';
|
|
|
103
147
|
|
|
104
148
|
export interface RenderSystemRuntime {
|
|
105
149
|
readonly device: RhiDevice;
|
|
150
|
+
/** Internal backend-fixture hook evaluated at the submit transaction edge. */
|
|
151
|
+
readonly beforeSubmit?: ((device: RhiDevice) => RhiError | undefined) | undefined;
|
|
106
152
|
readonly deviceScope: DeviceScope;
|
|
153
|
+
/** Resolve a recorder/backend wrapper before configuring the native surface. */
|
|
154
|
+
readonly resolveSurfaceDevice?: (device: RhiDevice) => Result<RhiDevice, RhiError>;
|
|
107
155
|
readonly errorRegistry: RhiErrorListenerRegistry;
|
|
108
156
|
readonly debugOverlay?: RenderDebugOverlay | undefined;
|
|
109
157
|
readonly healthRegistry: HealthListenerRegistry;
|
|
110
158
|
readonly getMaterialProjection?: (materialGuid: string) => MaterialRenderProjection | undefined;
|
|
111
159
|
readonly getMaterialArtifact?: (specializationKey: string) => MaterialRuntimeArtifact | undefined;
|
|
160
|
+
/** Producer-owned cooked Standard PBR artifact used by GPU-driven projection. */
|
|
161
|
+
readonly getMaterialShaderArtifact?: (
|
|
162
|
+
materialShaderId: string,
|
|
163
|
+
) => MaterialShaderArtifact | undefined;
|
|
112
164
|
readonly getMaterialShaderPipeline?: (
|
|
113
165
|
materialShaderId: string,
|
|
114
166
|
isHdr: boolean,
|
|
@@ -126,6 +178,7 @@ export interface RenderSystemRuntime {
|
|
|
126
178
|
vertexLayoutProjection?: VertexLayoutProjection,
|
|
127
179
|
shaderModuleMode?: RenderFeatureShaderModuleMode,
|
|
128
180
|
layoutKindOverride?: 'pbr' | 'pbr-skin',
|
|
181
|
+
additionalColorFormats?: readonly GPUTextureFormat[],
|
|
129
182
|
) => RhiRenderPipeline | null;
|
|
130
183
|
readonly getMaterialShaderPipelineEntry?: (
|
|
131
184
|
materialShaderId: string,
|
|
@@ -143,12 +196,20 @@ export interface RenderSystemRuntime {
|
|
|
143
196
|
vertexLayout?: string,
|
|
144
197
|
vertexLayoutProjection?: VertexLayoutProjection,
|
|
145
198
|
shaderModuleMode?: RenderFeatureShaderModuleMode,
|
|
199
|
+
layoutKindOverride?: 'pbr' | 'pbr-skin',
|
|
200
|
+
additionalColorFormats?: readonly GPUTextureFormat[],
|
|
146
201
|
) => MaterialShaderPipelineEntry | null;
|
|
202
|
+
/** Reflection-derived UV count included in the material PipelineSpec cache key. */
|
|
203
|
+
readonly getMaterialShaderUvSetCount?: (materialShaderId: string) => number | undefined;
|
|
147
204
|
readonly getMaterialShaderBindingContract?: (
|
|
148
205
|
materialShaderId: string,
|
|
149
206
|
) => 'group-0' | 'group-0-resource' | 'view-only' | 'view-and-scene-depth' | 'render-material';
|
|
150
207
|
readonly getParamSchema?: (materialShaderId: string) => readonly ParamSchemaEntry[] | undefined;
|
|
151
|
-
readonly getMaterialBindGroupLayout?: (
|
|
208
|
+
readonly getMaterialBindGroupLayout?: (
|
|
209
|
+
materialShaderId: string,
|
|
210
|
+
materialParamSchema?: readonly ParamSchemaEntry[],
|
|
211
|
+
) => BindGroupLayout | undefined;
|
|
212
|
+
recoveryColdWorkGuard?: RecoveryColdWorkGuard | undefined;
|
|
152
213
|
readonly metrics: EngineMetrics;
|
|
153
214
|
readonly lookupPostProcess?: (
|
|
154
215
|
id: string,
|
|
@@ -160,6 +221,8 @@ export interface RenderSystemRuntime {
|
|
|
160
221
|
colorFormat: GPUTextureFormat,
|
|
161
222
|
entry?: import('../fullscreen-post-process-pass').PostProcessShaderEntry,
|
|
162
223
|
) => RhiRenderPipeline | null;
|
|
224
|
+
/** Candidate-owned post-process pipelines transferred at publication. */
|
|
225
|
+
readonly getRecoveryPostProcessPipelines?: () => ReadonlyMap<string, RhiRenderPipeline>;
|
|
163
226
|
readonly clearPostProcessPipelineCache?: (id: string) => void;
|
|
164
227
|
readonly invalidateShaderModule?: (label: string) => void;
|
|
165
228
|
readonly dynamicTextureStore?: DynamicTextureStore | undefined;
|
|
@@ -295,9 +358,9 @@ export interface PipelineState {
|
|
|
295
358
|
readonly shadowCasterCascadeBuffer: Buffer;
|
|
296
359
|
readonly materialUniformBuffer: { readonly buffer: Buffer; readonly sizeInBytes: number };
|
|
297
360
|
readonly meshStorageBuffer: { readonly buffer: Buffer; readonly sizeInBytes: number };
|
|
298
|
-
readonly pointLightsBuffer: Buffer;
|
|
299
|
-
readonly spotLightsBuffer: Buffer;
|
|
300
361
|
readonly instancesBindGroupLayout: BindGroupLayout;
|
|
362
|
+
/** Probe-enabled slot-3 layout; omitted from no-probe bind groups. */
|
|
363
|
+
readonly probeInstancesBindGroupLayout?: BindGroupLayout;
|
|
301
364
|
readonly identityInstanceBuffer: Buffer;
|
|
302
365
|
readonly defaultSampler: Sampler;
|
|
303
366
|
readonly nearestSampler: Sampler;
|
|
@@ -307,19 +370,37 @@ export interface PipelineState {
|
|
|
307
370
|
readonly unlitPipelineMsaa: RhiRenderPipeline | null;
|
|
308
371
|
readonly unlitPipelineHdrMsaa: RhiRenderPipeline | null;
|
|
309
372
|
readonly pbrPipelineLayout: PipelineLayout | null;
|
|
373
|
+
readonly pbrProbePipelineLayout?: PipelineLayout | null;
|
|
310
374
|
readonly hdrpPbrPipelineLayout: PipelineLayout | null;
|
|
375
|
+
readonly hdrpProbePbrPipelineLayout?: PipelineLayout | null;
|
|
311
376
|
readonly hdrpClusterMembershipPipeline: ComputePipeline | null;
|
|
312
377
|
readonly hdrpClusterMembershipBindGroupLayout: BindGroupLayout | null;
|
|
313
378
|
readonly pbrSkinPipelineLayout: PipelineLayout | null;
|
|
379
|
+
readonly pbrSkinProbePipelineLayout?: PipelineLayout | null;
|
|
314
380
|
readonly pbrSkinMeshBindGroupLayout: BindGroupLayout | null;
|
|
315
381
|
readonly hdrpSkinPipelineLayout: PipelineLayout | null;
|
|
316
382
|
readonly hdrpSkinMeshBindGroupLayout: BindGroupLayout | null;
|
|
317
383
|
readonly skinPaletteAllocator: SkinPaletteAllocator | null;
|
|
318
384
|
readonly defaultWhiteTextureView: TextureView;
|
|
319
385
|
readonly defaultNormalTextureView: TextureView;
|
|
386
|
+
/** Missing anisotropy maps encode a neutral direction and unit strength. */
|
|
387
|
+
readonly defaultAnisotropyTextureView?: TextureView;
|
|
320
388
|
readonly unlitPipelineHdr: RhiRenderPipeline | null;
|
|
321
389
|
readonly shadowFallbackTextureView: TextureView;
|
|
322
390
|
readonly shadowAtlasFallbackTextureView: TextureView;
|
|
391
|
+
readonly extendedLightingAvailable?: boolean;
|
|
392
|
+
readonly iesProfileTexture?: Texture;
|
|
393
|
+
readonly cookieTexture?: Texture;
|
|
394
|
+
readonly cookieMatrixBuffer?: Buffer;
|
|
395
|
+
spotModifierUploadState?: {
|
|
396
|
+
readonly ies: Map<number, number>;
|
|
397
|
+
readonly cookie: Map<number, number>;
|
|
398
|
+
readonly cookieMatrix: Map<number, number>;
|
|
399
|
+
};
|
|
400
|
+
readonly iesProfileTextureView?: TextureView;
|
|
401
|
+
readonly cookieTextureView?: TextureView;
|
|
402
|
+
readonly ltcLambertTextureView?: TextureView;
|
|
403
|
+
readonly ltcGgxTextureView?: TextureView;
|
|
323
404
|
readonly shadowParamsBuffer: Buffer;
|
|
324
405
|
readonly skylightFallback: SkylightFallback | null;
|
|
325
406
|
readonly perPassResources: PerPassResources;
|
|
@@ -327,9 +408,15 @@ export interface PipelineState {
|
|
|
327
408
|
|
|
328
409
|
export interface RenderSystemInternals extends RenderSystemRuntime {
|
|
329
410
|
readonly canvas: HTMLCanvasElement | OffscreenCanvas;
|
|
411
|
+
/** Build identity injected by the host's build-tool adapter. */
|
|
412
|
+
readonly build?: string | undefined;
|
|
413
|
+
/** Host identity binding for the renderer-owned SSR dependency seam. */
|
|
414
|
+
readonly ssrIdentity?: SsrAdmissionIdentity | undefined;
|
|
330
415
|
readonly standardProfile?: StandardProfile | undefined;
|
|
331
416
|
readonly standardPipeline: RenderFrameState['activePipeline'];
|
|
332
417
|
readonly featureHost?: RenderFeatureHost | undefined;
|
|
418
|
+
/** Install a detached feature host only at the recovery publication boundary. */
|
|
419
|
+
readonly setFeatureHost?: ((host: RenderFeatureHost) => void) | undefined;
|
|
333
420
|
readonly shaderModuleFactory?: PipelineBuilderShaderModuleFactory;
|
|
334
421
|
readonly createShaderModule?: (
|
|
335
422
|
device: import('@forgeax/engine-rhi').RhiDevice,
|
|
@@ -398,6 +485,8 @@ export interface _StandardForwardSceneView {
|
|
|
398
485
|
readonly directionalShadowCacheReuse: boolean;
|
|
399
486
|
readonly world: World;
|
|
400
487
|
readonly gpuDrivenEntityKeys: ReadonlySet<number>;
|
|
488
|
+
/** Renderer-local world namespace paired with gpuDrivenEntityKeys. */
|
|
489
|
+
readonly gpuDrivenWorldKeys?: readonly number[];
|
|
401
490
|
readonly tonemapActive: boolean;
|
|
402
491
|
readonly geometryColorView: TextureView | null;
|
|
403
492
|
readonly geometryDepthView: TextureView | null;
|
|
@@ -406,6 +495,8 @@ export interface _StandardForwardSceneView {
|
|
|
406
495
|
readonly splitLdrSprite: boolean;
|
|
407
496
|
readonly ldrSpritePassView: TextureView | null;
|
|
408
497
|
readonly transparentColorFormat?: GPUTextureFormat;
|
|
498
|
+
/** Second Standard main-pass attachment used by the fallback producer. */
|
|
499
|
+
readonly reflectionFallbackColorFormat?: GPUTextureFormat;
|
|
409
500
|
readonly dispatch: readonly DispatchEntry[];
|
|
410
501
|
readonly hdrpClusterBindGroup: BindGroup | null;
|
|
411
502
|
readonly hdrpClusterMembershipBindGroup: BindGroup | null;
|
|
@@ -425,14 +516,15 @@ export interface _StandardForwardSceneView {
|
|
|
425
516
|
readonly payload: Uint8Array;
|
|
426
517
|
};
|
|
427
518
|
hdrpSsaoBlurredView?: TextureView;
|
|
519
|
+
readonly occlusion?: import('../scene/visibility/occlusion-runtime').OcclusionFrameProjection;
|
|
428
520
|
}
|
|
429
521
|
|
|
430
522
|
export type _InternalRenderPipelineContext = RenderPipelineContext & _StandardForwardSceneView;
|
|
431
523
|
|
|
432
524
|
export type RecordProfileRunner = <T>(phase: RenderRecordPhase, action: () => T) => T;
|
|
433
525
|
|
|
434
|
-
export const STANDARD_PBR_UBO_SIZE =
|
|
435
|
-
export const MATERIAL_PER_ENTITY_STRIDE =
|
|
526
|
+
export const STANDARD_PBR_UBO_SIZE = derive(DEFAULT_STANDARD_PBR_PARAM_SCHEMA).uboLayout.totalBytes;
|
|
527
|
+
export const MATERIAL_PER_ENTITY_STRIDE = Math.ceil(STANDARD_PBR_UBO_SIZE / 256) * 256;
|
|
436
528
|
|
|
437
529
|
export type SwapChainFormatPair = {
|
|
438
530
|
readonly storage: GPUTextureFormat;
|
|
@@ -23,12 +23,13 @@ import {
|
|
|
23
23
|
SHADOW_CASTER_SHADER_ID,
|
|
24
24
|
shadowCasterVariantSet,
|
|
25
25
|
} from '../pbr-pipeline';
|
|
26
|
+
import { COOKIE_MATRIX_BYTES } from '../prepare/extended-lighting/resources';
|
|
26
27
|
import type { DispatchEntry, ExtractedLights } from '../render-system-extract';
|
|
27
28
|
import { matchPass } from '../systems/pass-selector';
|
|
28
29
|
import { worldEntityKey } from './frame-snapshot';
|
|
30
|
+
import { resolveGeometryInstancesBindGroup } from './main-pass-geometry';
|
|
29
31
|
import {
|
|
30
32
|
getOrCreateFromChain,
|
|
31
|
-
getOrCreatePerEntity,
|
|
32
33
|
MAX_UNIFORM_INSTANCES,
|
|
33
34
|
MESH_PER_ENTITY_STRIDE,
|
|
34
35
|
MESH_SSBO_BYTES,
|
|
@@ -83,23 +84,79 @@ function ensureTypedShadowViewBg(
|
|
|
83
84
|
const { runtime, frameState, pipelineState } = c;
|
|
84
85
|
const shadowSampler = pipelineState.perPassResources.shadowSampler;
|
|
85
86
|
if (shadowSampler === null) return null;
|
|
87
|
+
const extendedLighting = pipelineState.extendedLightingAvailable ?? false;
|
|
88
|
+
const iesProfileTextureView = pipelineState.iesProfileTextureView;
|
|
89
|
+
const cookieTextureView = pipelineState.cookieTextureView;
|
|
90
|
+
const cookieMatrixBuffer = pipelineState.cookieMatrixBuffer;
|
|
91
|
+
const ltcLambertTextureView = pipelineState.ltcLambertTextureView;
|
|
92
|
+
const ltcGgxTextureView = pipelineState.ltcGgxTextureView;
|
|
93
|
+
const extendedLightingCacheKeys: object[] = [];
|
|
94
|
+
const extendedLightingEntries: BindGroupEntry[] = [];
|
|
95
|
+
if (extendedLighting) {
|
|
96
|
+
if (
|
|
97
|
+
iesProfileTextureView === undefined ||
|
|
98
|
+
cookieTextureView === undefined ||
|
|
99
|
+
cookieMatrixBuffer === undefined ||
|
|
100
|
+
ltcLambertTextureView === undefined ||
|
|
101
|
+
ltcGgxTextureView === undefined
|
|
102
|
+
) {
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
extendedLightingCacheKeys.push(
|
|
106
|
+
pipelineState.defaultSampler,
|
|
107
|
+
iesProfileTextureView,
|
|
108
|
+
cookieTextureView,
|
|
109
|
+
ltcLambertTextureView,
|
|
110
|
+
ltcGgxTextureView,
|
|
111
|
+
cookieMatrixBuffer,
|
|
112
|
+
);
|
|
113
|
+
extendedLightingEntries.push(
|
|
114
|
+
{
|
|
115
|
+
binding: 9,
|
|
116
|
+
resource: { kind: 'sampler', value: pipelineState.defaultSampler },
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
binding: 11,
|
|
120
|
+
resource: { kind: 'textureView', value: iesProfileTextureView },
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
binding: 12,
|
|
124
|
+
resource: { kind: 'textureView', value: cookieTextureView },
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
binding: 13,
|
|
128
|
+
resource: { kind: 'textureView', value: ltcLambertTextureView },
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
binding: 14,
|
|
132
|
+
resource: { kind: 'textureView', value: ltcGgxTextureView },
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
binding: 15,
|
|
136
|
+
resource: {
|
|
137
|
+
kind: 'buffer',
|
|
138
|
+
value: { buffer: cookieMatrixBuffer, size: COOKIE_MATRIX_BYTES },
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
);
|
|
142
|
+
}
|
|
86
143
|
const projectorAvailable = pipelineState.projectorAvailable !== false;
|
|
87
144
|
try {
|
|
88
145
|
return getOrCreateFromChain(
|
|
89
146
|
frameState.viewBindGroupCache,
|
|
90
147
|
[
|
|
91
148
|
pipelineState.viewUniformBuffer,
|
|
92
|
-
pipelineState.pointLightsBuffer,
|
|
93
|
-
pipelineState.spotLightsBuffer,
|
|
94
149
|
pipelineState.shadowFallbackTextureView,
|
|
95
150
|
shadowSampler,
|
|
96
151
|
pipelineState.shadowAtlasFallbackTextureView,
|
|
97
152
|
pipelineState.shadowParamsBuffer,
|
|
98
153
|
pipelineState.shadowCasterCascadeBuffer,
|
|
99
154
|
pipelineState.shadowFallbackTextureView,
|
|
100
|
-
...(
|
|
101
|
-
?
|
|
102
|
-
:
|
|
155
|
+
...(extendedLighting
|
|
156
|
+
? extendedLightingCacheKeys
|
|
157
|
+
: projectorAvailable
|
|
158
|
+
? [pipelineState.defaultWhiteTextureView, pipelineState.defaultSampler]
|
|
159
|
+
: []),
|
|
103
160
|
pipelineState.pointsLinesViewBuffer ?? pipelineState.viewUniformBuffer,
|
|
104
161
|
],
|
|
105
162
|
variant,
|
|
@@ -119,14 +176,6 @@ function ensureTypedShadowViewBg(
|
|
|
119
176
|
},
|
|
120
177
|
},
|
|
121
178
|
},
|
|
122
|
-
{
|
|
123
|
-
binding: 1,
|
|
124
|
-
resource: { kind: 'buffer', value: { buffer: pipelineState.pointLightsBuffer } },
|
|
125
|
-
},
|
|
126
|
-
{
|
|
127
|
-
binding: 2,
|
|
128
|
-
resource: { kind: 'buffer', value: { buffer: pipelineState.spotLightsBuffer } },
|
|
129
|
-
},
|
|
130
179
|
{
|
|
131
180
|
binding: 3,
|
|
132
181
|
resource: { kind: 'textureView', value: pipelineState.shadowFallbackTextureView },
|
|
@@ -161,6 +210,7 @@ function ensureTypedShadowViewBg(
|
|
|
161
210
|
binding: 8,
|
|
162
211
|
resource: { kind: 'textureView', value: pipelineState.shadowFallbackTextureView },
|
|
163
212
|
},
|
|
213
|
+
...extendedLightingEntries,
|
|
164
214
|
{
|
|
165
215
|
binding: 10,
|
|
166
216
|
resource: {
|
|
@@ -171,7 +221,7 @@ function ensureTypedShadowViewBg(
|
|
|
171
221
|
},
|
|
172
222
|
},
|
|
173
223
|
},
|
|
174
|
-
...(projectorAvailable
|
|
224
|
+
...(!extendedLighting && projectorAvailable
|
|
175
225
|
? [
|
|
176
226
|
{
|
|
177
227
|
binding: 11,
|
|
@@ -671,31 +721,7 @@ function recordShadowCasterDraws(
|
|
|
671
721
|
// handle = shadowInstanceBuffer; the HDRP main pass read end (:3820 below)
|
|
672
722
|
// must look up the same (compositeKey, instBuffer) leaf or the shadow
|
|
673
723
|
// instances silently drop.
|
|
674
|
-
const shadowInstancesBg =
|
|
675
|
-
c.frameState.instancesBgPerEntity,
|
|
676
|
-
worldEntityKey(entry.source.worldId, entry.source.entityKey),
|
|
677
|
-
[shadowInstanceBuffer],
|
|
678
|
-
'shadow-instances',
|
|
679
|
-
() => {
|
|
680
|
-
const result = runtime.device.createBindGroup({
|
|
681
|
-
label: 'shadow-instances-bg',
|
|
682
|
-
layout: pipelineState.instancesBindGroupLayout,
|
|
683
|
-
entries: [
|
|
684
|
-
{
|
|
685
|
-
binding: 0,
|
|
686
|
-
resource: {
|
|
687
|
-
kind: 'buffer',
|
|
688
|
-
value: { buffer: shadowInstanceBuffer },
|
|
689
|
-
},
|
|
690
|
-
},
|
|
691
|
-
],
|
|
692
|
-
});
|
|
693
|
-
if (!result.ok) throw result.error;
|
|
694
|
-
return result.value;
|
|
695
|
-
},
|
|
696
|
-
c.bindGroupCounts,
|
|
697
|
-
);
|
|
698
|
-
|
|
724
|
+
const shadowInstancesBg = resolveGeometryInstancesBindGroup(c, shadowInstanceBuffer);
|
|
699
725
|
shadowPass.setBindGroup(3, shadowInstancesBg);
|
|
700
726
|
// feat-20260608 M4 / w16: per-submesh shadow draw loop.
|
|
701
727
|
// Only draw submeshes whose topology is triangle-list or triangle-strip
|