@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
|
@@ -1,126 +1,23 @@
|
|
|
1
1
|
import { type Result, RhiError } from '@forgeax/engine-rhi';
|
|
2
|
-
import type { PointLightSnapshot, SpotLightSnapshot } from './render-system-extract';
|
|
3
|
-
/** Byte size of one HDRP LightSlot in std430 (16 x f32). AC-11 absolute-value lock. */
|
|
4
|
-
export declare const BYTES_PER_LIGHT_SLOT = 64;
|
|
5
|
-
/**
|
|
6
|
-
* LightSlot kind discriminant — closed enum matching WGSL `KIND_POINT` / `KIND_SPOT`.
|
|
7
|
-
* Values are u32 bit-tags (not sequential); AC-12 exhaustive switch.
|
|
8
|
-
*/
|
|
9
|
-
export declare const LightSlotKind: {
|
|
10
|
-
readonly POINT: 0;
|
|
11
|
-
readonly SPOT: 1;
|
|
12
|
-
};
|
|
13
|
-
export type LightSlotKind = (typeof LightSlotKind)[keyof typeof LightSlotKind];
|
|
14
|
-
/**
|
|
15
|
-
* Byte-offset layout of one LightSlot in std430 (16 f32 = 64 B).
|
|
16
|
-
*
|
|
17
|
-
* Mirrors the WGSL `LightSlot` struct field order byte-for-byte.
|
|
18
|
-
* All offsets verified by w14 lightslot-layout.test.ts.
|
|
19
|
-
*
|
|
20
|
-
* feat-20260612-point-light-shadows-urp-hdrp M4 / T-M4-4 (plan-strategy §D-8):
|
|
21
|
-
* the prior u32x3 pad lanes at byte 52..64 carry shadow-side data on the HDRP
|
|
22
|
-
* path. `kind_and_pad.x = kind` (u32), `.y = shadow identity` (i32, sentinel
|
|
23
|
-
* -1 = no shadow). For point lights `.z/.w` carry near/far (f32 via bitcast);
|
|
24
|
-
* for spot lights `.z` carries shadowIntensity and `.w` carries the PCF
|
|
25
|
-
* kernel width (f32 via bitcast). The shader reads these lanes through
|
|
26
|
-
* `bitcast<f32>(...)` to
|
|
27
|
-
* keep the WGSL struct as `vec4<u32>` (alignment + naga_oil unchanged).
|
|
28
|
-
*/
|
|
29
|
-
export declare const LIGHTSLOT_LAYOUT: {
|
|
30
|
-
readonly byteSize: 64;
|
|
31
|
-
readonly positionOffset: 0;
|
|
32
|
-
readonly invRangeSquaredOffset: 12;
|
|
33
|
-
readonly colorOffset: 16;
|
|
34
|
-
readonly cosInnerOffset: 28;
|
|
35
|
-
readonly directionOffset: 32;
|
|
36
|
-
readonly cosOuterOffset: 44;
|
|
37
|
-
readonly kindOffset: 48;
|
|
38
|
-
readonly shadowPayloadOffset: 52;
|
|
39
|
-
readonly shadowAtlasLayerOffset: 52;
|
|
40
|
-
readonly shadowAtlasTileOffset: 52;
|
|
41
|
-
readonly shadowNearOffset: 56;
|
|
42
|
-
readonly shadowFarOffset: 60;
|
|
43
|
-
readonly spotPcfKernelSizeOffset: 60;
|
|
44
|
-
readonly floatCount: 16;
|
|
45
|
-
readonly vec4Count: 4;
|
|
46
|
-
};
|
|
2
|
+
import type { PointLightSnapshot, RectAreaDirectLightSnapshot, SpotLightSnapshot } from './render-system-extract';
|
|
47
3
|
/**
|
|
48
4
|
* Minimum storage-buffer count needed by the M3 record stage.
|
|
49
5
|
*
|
|
50
6
|
* 1. Mesh SSBO (entity_world + normalMatrix; per-renderable dynamic
|
|
51
7
|
* offset, 256 B stride).
|
|
52
|
-
* 2.
|
|
53
|
-
* 3.
|
|
8
|
+
* 2. Cluster light_data SSBO.
|
|
9
|
+
* 3. Cluster membership grid SSBO.
|
|
10
|
+
* 4. Cluster light-index-list SSBO.
|
|
54
11
|
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
12
|
+
* Cluster needs four storage-backed resources in the Standard bind group.
|
|
13
|
+
* This is the complete local-light transport.
|
|
57
14
|
*/
|
|
58
15
|
export declare const STORAGE_BUFFER_MIN_REQUIRED = 4;
|
|
59
|
-
/** Byte size of one
|
|
60
|
-
export declare const
|
|
61
|
-
/**
|
|
62
|
-
|
|
63
|
-
*
|
|
64
|
-
* feat-20260625-spot-light-shadow-mapping M2 / w8 (D-4) grew 48 -> 64 for
|
|
65
|
-
* `shadowAtlasTile`; the visual-parity contract then adds a fifth column for
|
|
66
|
-
* `shadowIntensity` rather than overloading the tile/PCF lanes.
|
|
67
|
-
*/
|
|
16
|
+
/** Byte size of one Point/Spot/Rect DirectLightSlot. */
|
|
17
|
+
export declare const BYTES_PER_DIRECT_LIGHT_SLOT = 80;
|
|
18
|
+
/** std430 slot aliases retained for the WebGPU ready-state sizing table. */
|
|
19
|
+
export declare const POINT_LIGHT_STD430_BYTES = 80;
|
|
68
20
|
export declare const SPOT_LIGHT_STD430_BYTES = 80;
|
|
69
|
-
/** Sentinel value for SpotLight slot[15] meaning "no shadow / clipped". */
|
|
70
|
-
export declare const SPOT_LIGHT_SHADOW_TILE_SENTINEL = -1;
|
|
71
|
-
/** Sentinel for a projector-only SpotLight with no shadow atlas tile. */
|
|
72
|
-
export declare const SPOT_LIGHT_PROJECTOR_ONLY_SENTINEL = -2;
|
|
73
|
-
/**
|
|
74
|
-
* High-bit marker carried by the shared LightSlot identity lane when this
|
|
75
|
-
* SpotLight is the one projector selected for the frame. The lower 30 bits
|
|
76
|
-
* retain the shadow-atlas tile (0..3), or zero for projector-only lights, so
|
|
77
|
-
* one 64-byte slot carries both shadow and projector identity without growing
|
|
78
|
-
* the cluster UBO or inventing a second light list.
|
|
79
|
-
*/
|
|
80
|
-
export declare const SPOT_LIGHT_PROJECTOR_FLAG = 1073741824;
|
|
81
|
-
export declare const SPOT_LIGHT_TILE_MASK: number;
|
|
82
|
-
/** Byte size of the array header (count u32 + 12 B pad to 16 B stride). */
|
|
83
|
-
export declare const LIGHT_ARRAY_HEADER_BYTES = 16;
|
|
84
|
-
/** Maximum number of slots packed in the first-slice cap layout (D-S3). */
|
|
85
|
-
export declare const LIGHT_ARRAY_MAX_SLOTS = 4;
|
|
86
|
-
/** Sentinel value for PointLight slot[7] / LightSlot pad meaning "no shadow". */
|
|
87
|
-
export declare const POINT_LIGHT_SHADOW_LAYER_SENTINEL = -1;
|
|
88
|
-
/**
|
|
89
|
-
* Pack one PointLightSnapshot into 8 floats / 32 B byte-for-byte std430.
|
|
90
|
-
*
|
|
91
|
-
* Returns a fresh `Float32Array` per call; `Float32Array.byteLength === 32`
|
|
92
|
-
* by construction (Float32Array(8).buffer.byteLength === 32). Slot 7
|
|
93
|
-
* (byte 28..32) carries `shadowAtlasLayer: i32` (sentinel -1 = no shadow,
|
|
94
|
-
* 0..3 = cube_array atlas layer index for shadow casters). The lane is
|
|
95
|
-
* written through an Int32Array view of the same backing ArrayBuffer so the
|
|
96
|
-
* shader's `i32` read at byte 28..32 of `struct PointLight` (common.wgsl)
|
|
97
|
-
* sees the correct two's-complement bits (-1 = 0xFFFFFFFF).
|
|
98
|
-
*/
|
|
99
|
-
export declare function packPointLight(snap: PointLightSnapshot): Float32Array;
|
|
100
|
-
/**
|
|
101
|
-
* Pack one SpotLightSnapshot into 20 floats (80 B byte-for-byte std430).
|
|
102
|
-
*
|
|
103
|
-
* cosInner / cosOuter ride the otherwise-padding `.w` lanes of the
|
|
104
|
-
* `color` and `direction` vec4 columns (AC-04 c + plan D-S2 16 B alignment
|
|
105
|
-
* via packing rather than padding rows). Slot 15 carries `shadowAtlasTile: i32`
|
|
106
|
-
* (sentinel -1 = unassigned/clipped, 0..3 = atlas tile) written through an
|
|
107
|
-
* Int32Array view so the shader's `i32` read at byte 60..64 of struct SpotLight
|
|
108
|
-
* (common.wgsl) sees the correct two's-complement bits (-1 = 0xFFFFFFFF).
|
|
109
|
-
* Slots 12..14 carry the shared receiver controls; slot 15 remains the i32
|
|
110
|
-
* shadow tile sentinel; slot 16 carries shadowIntensity and slots 17..19 are
|
|
111
|
-
* alignment tail padding. Surface and volume consumers therefore share one
|
|
112
|
-
* extracted shadow configuration.
|
|
113
|
-
*/
|
|
114
|
-
export declare function packSpotLight(snap: SpotLightSnapshot): Float32Array;
|
|
115
|
-
/**
|
|
116
|
-
* Pack the 16-byte std430 array header (count u32 + 12 B pad) for the
|
|
117
|
-
* point/spot light storage buffers.
|
|
118
|
-
*
|
|
119
|
-
* Returns a fresh `ArrayBuffer` so callers can either re-view it as
|
|
120
|
-
* `Uint8Array` for `queue.writeBuffer` or as `Uint32Array` for in-place
|
|
121
|
-
* inspection.
|
|
122
|
-
*/
|
|
123
|
-
export declare function packLightArrayHeader(count: number): ArrayBuffer;
|
|
124
21
|
/**
|
|
125
22
|
* Cap gate at createRenderer time: check whether the device has enough
|
|
126
23
|
* storage-buffer slots for the PBR pipeline (M3 requires
|
|
@@ -136,46 +33,61 @@ export declare function packLightArrayHeader(count: number): ArrayBuffer;
|
|
|
136
33
|
*
|
|
137
34
|
* Uniform-fallback path decision (plan D-5): `cap === 0` is the wgpu
|
|
138
35
|
* WebGL2 backend signal (`downlevel_webgl2_defaults().limits.
|
|
139
|
-
* maxStorageBuffersPerShaderStage = 0`).
|
|
140
|
-
*
|
|
141
|
-
* entry in the PBR pipeline switches to `uniform`.
|
|
36
|
+
* maxStorageBuffersPerShaderStage = 0`). It remains a mesh/instance fallback;
|
|
37
|
+
* local-light frames require the single Cluster storage transport.
|
|
142
38
|
*/
|
|
39
|
+
/** Closed direct-light kind carried by the unified five-row slot. */
|
|
40
|
+
export declare const DirectLightSlotKind: {
|
|
41
|
+
readonly POINT: 0;
|
|
42
|
+
readonly SPOT: 1;
|
|
43
|
+
readonly RECT_AREA: 2;
|
|
44
|
+
};
|
|
45
|
+
export type DirectLightSlotKind = 'point' | 'spot' | 'rect-area';
|
|
46
|
+
/** Metadata identity used for absent shadow, IES, and Cookie resources. */
|
|
47
|
+
export declare const DIRECT_LIGHT_SLOT_METADATA_SENTINEL = 4294967295;
|
|
143
48
|
/**
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
*
|
|
147
|
-
* and stay on the unshadowed `evalPoint` path.
|
|
148
|
-
*
|
|
149
|
-
* `near` / `far` ride the otherwise-pad lanes (`kind_and_pad.zw` in the WGSL
|
|
150
|
-
* struct, byte 56..64) and feed the depth-ref reconstruction in
|
|
151
|
-
* `evalPointShadowed`. Spot lights (and shadow-less point lights) leave these
|
|
152
|
-
* lanes zero per std430 init.
|
|
49
|
+
* SpotLight projector marker carried in the shared shadow identity word. The
|
|
50
|
+
* lower 30 bits retain the selected shadow tile; projector-only spots use tile
|
|
51
|
+
* zero because their matrix is deliberately published in View lane zero.
|
|
153
52
|
*/
|
|
154
|
-
export
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
53
|
+
export declare const DIRECT_LIGHT_SLOT_PROJECTOR_FLAG = 1073741824;
|
|
54
|
+
export declare const DIRECT_LIGHT_SLOT_TILE_MASK: number;
|
|
55
|
+
/** Byte size of the five-row Point/Spot/Rect transport slot. */
|
|
56
|
+
export declare const DIRECT_LIGHT_SLOT_FLOAT_COUNT: number;
|
|
57
|
+
/** Five vec4 rows shared by host packing and the WGSL direct-light consumer. */
|
|
58
|
+
export declare const DIRECT_LIGHT_SLOT_LAYOUT: {
|
|
59
|
+
readonly byteSize: 80;
|
|
60
|
+
readonly rowByteOffsets: readonly [0, 16, 32, 48, 64];
|
|
61
|
+
readonly positionOffset: 0;
|
|
62
|
+
readonly rangeOffset: 12;
|
|
63
|
+
readonly colorOffset: 16;
|
|
64
|
+
readonly firstAngleOffset: 28;
|
|
65
|
+
readonly primaryAxisOffset: 32;
|
|
66
|
+
readonly secondAngleOffset: 44;
|
|
67
|
+
readonly auxiliaryAxisOffset: 48;
|
|
68
|
+
readonly metadataByteOffset: 64;
|
|
69
|
+
readonly kindByteOffset: 64;
|
|
70
|
+
readonly shadowByteOffset: 68;
|
|
71
|
+
readonly iesProfileByteOffset: 72;
|
|
72
|
+
readonly cookieByteOffset: 76;
|
|
73
|
+
/** Spot-only roll angle stored in the fourth row's w lane. */
|
|
74
|
+
readonly rollDegByteOffset: 60;
|
|
75
|
+
readonly floatCount: number;
|
|
76
|
+
readonly vec4Count: 5;
|
|
77
|
+
};
|
|
78
|
+
type DirectLightModifierMetadata = {
|
|
79
|
+
readonly iesProfileSlice?: number;
|
|
80
|
+
readonly cookieSlice?: number;
|
|
81
|
+
};
|
|
82
|
+
export type DirectLightSnapshot = (PointLightSnapshot & DirectLightModifierMetadata) | (SpotLightSnapshot & DirectLightModifierMetadata) | (RectAreaDirectLightSnapshot & DirectLightModifierMetadata);
|
|
159
83
|
/**
|
|
160
|
-
* Pack one
|
|
161
|
-
* (16 floats, std430). Point lights fill `cosInner=1.0`, `direction=vec3(0)`,
|
|
162
|
-
* `cosOuter=0.0`, `kind=POINT(0)`. Spot lights fill all fields verbatim;
|
|
163
|
-
* `direction` is already normalized by extract and this owner never repeats
|
|
164
|
-
* that operation.
|
|
165
|
-
*
|
|
166
|
-
* feat-20260612-point-light-shadows-urp-hdrp M4 / T-M4-4 (plan-strategy §D-8):
|
|
167
|
-
* the optional point `shadow` info threads through to bytes 52..64 as
|
|
168
|
-
* `(shadowAtlasLayer i32, near f32, far f32)`. Spot snapshots write their
|
|
169
|
-
* `shadowAtlasTile` directly into the same identity lane, put shadowIntensity
|
|
170
|
-
* in the `.z` lane, and the PCF kernel width in `.w`. The shader reads `near`/`far`
|
|
171
|
-
* through `bitcast<f32>(kind_and_pad.zw)` so the WGSL struct stays
|
|
172
|
-
* `kind_and_pad: vec4<u32>` (alignment + naga_oil compose unchanged). When
|
|
173
|
-
* `shadow` is undefined (no PointLightShadow) the lanes default to
|
|
174
|
-
* `(layer = -1, 0, 0)` -- shader gates on `layer >= 0` so unshadowed lights
|
|
175
|
-
* stay on the `evaluate_point_light` path. Spot lights write their tile or -1.
|
|
84
|
+
* Pack one Point, Spot, or Rect snapshot into the unified five-row slot.
|
|
176
85
|
*
|
|
177
|
-
*
|
|
86
|
+
* Row 0 is position plus inverse range. Row 1 is color plus the first
|
|
87
|
+
* angular/size fact. Row 2 is the primary axis plus the second angular/size
|
|
88
|
+
* fact. Row 3 is the auxiliary Rect axis. Row 4 is four u32 identities.
|
|
178
89
|
*/
|
|
179
|
-
export declare function
|
|
90
|
+
export declare function packDirectLightSlot(snapshot: DirectLightSnapshot, projectorSelected?: boolean): Float32Array;
|
|
180
91
|
export declare function assertStorageBufferCap(cap: number): Result<boolean, RhiError>;
|
|
92
|
+
export {};
|
|
181
93
|
//# sourceMappingURL=light-buffer-layout.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"light-buffer-layout.d.ts","sourceRoot":"","sources":["../src/light-buffer-layout.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"light-buffer-layout.d.ts","sourceRoot":"","sources":["../src/light-buffer-layout.ts"],"names":[],"mappings":"AAMA,OAAO,EAAW,KAAK,MAAM,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EACV,kBAAkB,EAClB,2BAA2B,EAC3B,iBAAiB,EAClB,MAAM,yBAAyB,CAAC;AAqBjC;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C,wDAAwD;AACxD,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAC9C,4EAA4E;AAC5E,eAAO,MAAM,wBAAwB,KAA8B,CAAC;AACpE,eAAO,MAAM,uBAAuB,KAA8B,CAAC;AAEnE;;;;;;;;;;;;;;;;;GAiBG;AACH,qEAAqE;AACrE,eAAO,MAAM,mBAAmB;;;;CAItB,CAAC;AACX,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,CAAC;AAEjE,2EAA2E;AAC3E,eAAO,MAAM,mCAAmC,aAAa,CAAC;AAC9D;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,aAAa,CAAC;AAC3D,eAAO,MAAM,2BAA2B,QAAuC,CAAC;AAChF,gEAAgE;AAChE,eAAO,MAAM,6BAA6B,QACoB,CAAC;AAE/D,gFAAgF;AAChF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;IAenC,8DAA8D;;;;CAItD,CAAC;AAEX,KAAK,2BAA2B,GAAG;IACjC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAC3B,CAAC,kBAAkB,GAAG,2BAA2B,CAAC,GAClD,CAAC,iBAAiB,GAAG,2BAA2B,CAAC,GACjD,CAAC,2BAA2B,GAAG,2BAA2B,CAAC,CAAC;AAMhE;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,mBAAmB,EAC7B,iBAAiB,CAAC,EAAE,OAAO,GAC1B,YAAY,CAqEd;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAkB7E"}
|
package/dist/materials.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { MaterialAsset,
|
|
1
|
+
import type { MaterialAsset, MaterialRenderState, MaterialValue } from '@forgeax/engine-types';
|
|
2
2
|
export type MaterialTransmissionValidationReason = 'non-finite' | 'range' | 'shape' | 'blend' | 'depth-write';
|
|
3
3
|
/** Structured authoring failure for the Standard transmission contract. */
|
|
4
4
|
export declare class MaterialTransmissionContractError extends Error {
|
|
@@ -16,20 +16,24 @@ export declare class MaterialTransmissionContractError extends Error {
|
|
|
16
16
|
}
|
|
17
17
|
export declare const SPRITE_PREMULTIPLIED_ALPHA_BLEND: GPUBlendState;
|
|
18
18
|
declare const SPRITE_MODULE = "forgeax_material::sprite";
|
|
19
|
+
export type MaterialColorTuple3 = readonly [number, number, number];
|
|
20
|
+
export type MaterialColorTuple4 = readonly [number, number, number, number];
|
|
21
|
+
export type MaterialColorInput3 = MaterialColorTuple3 | string | number;
|
|
22
|
+
export type MaterialColorInput4 = MaterialColorTuple4 | string | number;
|
|
23
|
+
/** Convert an explicit sRGB numeric tuple into the linear tuple factories store. */
|
|
24
|
+
export declare function srgb(input: MaterialColorTuple3): MaterialColorTuple3;
|
|
25
|
+
export declare function srgb(input: MaterialColorTuple4): MaterialColorTuple4;
|
|
19
26
|
interface UnlitOpts {
|
|
20
|
-
/** Asset-side authored color space. Defaults to sRGB. */
|
|
21
|
-
readonly colorSpace?: MaterialColorSpace;
|
|
22
27
|
readonly castShadow?: boolean;
|
|
23
28
|
readonly baseColorTexture?: MaterialValue;
|
|
24
29
|
readonly alphaCutoff?: number;
|
|
25
30
|
readonly renderState?: MaterialRenderState;
|
|
26
31
|
readonly queue?: number;
|
|
27
32
|
}
|
|
28
|
-
declare function unlit(rgba:
|
|
33
|
+
declare function unlit(rgba: MaterialColorInput4, opts?: UnlitOpts): MaterialAsset;
|
|
29
34
|
interface StandardOpts {
|
|
30
|
-
/**
|
|
31
|
-
readonly
|
|
32
|
-
readonly baseColor: readonly [number, number, number, number];
|
|
35
|
+
/** Numeric tuples are linear; Hex/CSS strings and numbers are sRGB inputs. */
|
|
36
|
+
readonly baseColor: MaterialColorInput4;
|
|
33
37
|
readonly metallic?: number;
|
|
34
38
|
readonly roughness?: number;
|
|
35
39
|
/** Texture channel used for the metallic factor; glTF defaults to B (2). */
|
|
@@ -38,9 +42,28 @@ interface StandardOpts {
|
|
|
38
42
|
readonly roughnessChannel?: number;
|
|
39
43
|
readonly clearcoat?: number;
|
|
40
44
|
readonly clearcoatRoughness?: number;
|
|
41
|
-
readonly
|
|
42
|
-
readonly
|
|
43
|
-
readonly
|
|
45
|
+
readonly clearcoatTexture?: MaterialValue;
|
|
46
|
+
readonly clearcoatRoughnessTexture?: MaterialValue;
|
|
47
|
+
readonly clearcoatNormalTexture?: MaterialValue;
|
|
48
|
+
readonly clearcoatNormalScale?: number;
|
|
49
|
+
readonly anisotropyStrength?: number;
|
|
50
|
+
readonly anisotropyRotation?: number;
|
|
51
|
+
readonly anisotropyTexture?: MaterialValue;
|
|
52
|
+
readonly sheenColor?: MaterialColorInput3;
|
|
53
|
+
readonly sheenRoughness?: number;
|
|
54
|
+
readonly sheenColorTexture?: MaterialValue;
|
|
55
|
+
readonly sheenRoughnessTexture?: MaterialValue;
|
|
56
|
+
readonly iridescence?: number;
|
|
57
|
+
readonly iridescenceIor?: number;
|
|
58
|
+
readonly iridescenceThicknessMinimum?: number;
|
|
59
|
+
readonly iridescenceThicknessMaximum?: number;
|
|
60
|
+
readonly iridescenceTexture?: MaterialValue;
|
|
61
|
+
readonly iridescenceThicknessTexture?: MaterialValue;
|
|
62
|
+
readonly specular?: number;
|
|
63
|
+
readonly specularColor?: MaterialColorInput3;
|
|
64
|
+
readonly specularTexture?: MaterialValue;
|
|
65
|
+
readonly specularColorTexture?: MaterialValue;
|
|
66
|
+
readonly emissive?: MaterialColorInput3;
|
|
44
67
|
readonly emissiveIntensity?: number;
|
|
45
68
|
readonly emissiveTexture?: MaterialValue;
|
|
46
69
|
readonly baseColorTexture?: MaterialValue;
|
|
@@ -64,6 +87,7 @@ declare function standard(opts: StandardOpts): MaterialAsset;
|
|
|
64
87
|
export declare const Materials: {
|
|
65
88
|
readonly unlit: typeof unlit;
|
|
66
89
|
readonly standard: typeof standard;
|
|
90
|
+
readonly srgb: typeof srgb;
|
|
67
91
|
};
|
|
68
92
|
export { SPRITE_MODULE };
|
|
69
93
|
//# sourceMappingURL=materials.d.ts.map
|
package/dist/materials.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"materials.d.ts","sourceRoot":"","sources":["../src/materials.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"materials.d.ts","sourceRoot":"","sources":["../src/materials.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,62 @@ export interface MeshMaterialBindingDiagnostic {
|
|
|
7
7
|
/** Structured detail mirrors the renderer error for the active frame. */
|
|
8
8
|
readonly detail?: Readonly<AssetErrorDetail>;
|
|
9
9
|
}
|
|
10
|
+
/** Detached final-frame receipt for the Standard material IBL binding chain. */
|
|
11
|
+
export interface IblBindingResourceInspection {
|
|
12
|
+
readonly viewIdentity: number;
|
|
13
|
+
readonly samplerIdentity: number;
|
|
14
|
+
readonly deviceGeneration: number;
|
|
15
|
+
}
|
|
16
|
+
export interface IblBindingEntryInspection {
|
|
17
|
+
readonly binding: number;
|
|
18
|
+
readonly kind: 'textureView' | 'sampler' | 'buffer';
|
|
19
|
+
readonly resourceIdentity: number;
|
|
20
|
+
}
|
|
21
|
+
export interface IblBindingInspection {
|
|
22
|
+
readonly status: 'binding-chain-consistent' | 'binding-chain-mismatch';
|
|
23
|
+
readonly frameId: number;
|
|
24
|
+
readonly deviceGeneration: number;
|
|
25
|
+
readonly active: 'active' | 'fallback';
|
|
26
|
+
readonly cache: {
|
|
27
|
+
readonly identity: number;
|
|
28
|
+
readonly generation: number;
|
|
29
|
+
readonly prefilterMipCount: number;
|
|
30
|
+
readonly prefilterViewMipCount: number;
|
|
31
|
+
};
|
|
32
|
+
readonly sampler: {
|
|
33
|
+
readonly expected: {
|
|
34
|
+
readonly magFilter: 'linear';
|
|
35
|
+
readonly minFilter: 'linear';
|
|
36
|
+
readonly mipmapFilter: 'linear';
|
|
37
|
+
readonly addressModeU: 'clamp-to-edge';
|
|
38
|
+
readonly addressModeV: 'clamp-to-edge';
|
|
39
|
+
readonly addressModeW: 'clamp-to-edge';
|
|
40
|
+
};
|
|
41
|
+
readonly identities: readonly number[];
|
|
42
|
+
};
|
|
43
|
+
readonly resources: {
|
|
44
|
+
readonly irradiance: IblBindingResourceInspection;
|
|
45
|
+
readonly prefilter: IblBindingResourceInspection;
|
|
46
|
+
readonly brdfLut: IblBindingResourceInspection;
|
|
47
|
+
readonly intensityBufferIdentity: number;
|
|
48
|
+
};
|
|
49
|
+
readonly material?: {
|
|
50
|
+
readonly bindGroupIdentity: number;
|
|
51
|
+
readonly materialBglIdentity: number;
|
|
52
|
+
readonly cache: 'hit' | 'miss';
|
|
53
|
+
readonly skylightBindingStart: number;
|
|
54
|
+
readonly entries: readonly IblBindingEntryInspection[];
|
|
55
|
+
readonly reflectionBindings: readonly number[];
|
|
56
|
+
};
|
|
57
|
+
readonly pipeline?: {
|
|
58
|
+
readonly pipelineIdentity: number;
|
|
59
|
+
readonly effectiveMaterialLayoutIdentity: string | undefined;
|
|
60
|
+
readonly materialBglIdentity: number;
|
|
61
|
+
readonly bindGroupIdentity: number;
|
|
62
|
+
readonly drawFrameId: number;
|
|
63
|
+
};
|
|
64
|
+
readonly errors: readonly string[];
|
|
65
|
+
}
|
|
10
66
|
export interface ResolvedMeshMaterialBinding {
|
|
11
67
|
readonly handle: number;
|
|
12
68
|
readonly source: MeshMaterialBindingSource;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mesh-material-bindings.d.ts","sourceRoot":"","sources":["../src/mesh-material-bindings.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mesh-material-bindings.d.ts","sourceRoot":"","sources":["../src/mesh-material-bindings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { CameraSnapshot } from './render-contract';
|
|
2
|
+
/** Build the camera-facing proxy geometry used by GPU occlusion queries. */
|
|
3
|
+
export declare function buildOcclusionProxyVertices(aabb: ArrayLike<number>, world: ArrayLike<number>, camera: CameraSnapshot): Float32Array;
|
|
4
|
+
//# sourceMappingURL=occlusion-proxy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"occlusion-proxy.d.ts","sourceRoot":"","sources":["../src/occlusion-proxy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,4EAA4E;AAC5E,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,EACvB,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,EACxB,MAAM,EAAE,cAAc,GACrB,YAAY,CAsDd"}
|
package/dist/pbr-pipeline.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { BindGroup, BindGroupEntry, BindGroupLayout,
|
|
1
|
+
import type { BindGroup, BindGroupEntry, BindGroupLayout, Buffer, PipelineLayout, RhiDevice, Sampler, TextureFormat, TextureView } from '@forgeax/engine-rhi';
|
|
2
2
|
import { type ShaderCatalog } from '@forgeax/engine-shader';
|
|
3
3
|
import { type ParamSchemaEntry } from '@forgeax/engine-types';
|
|
4
4
|
import type { PipelineSpec } from './pipeline-spec-types';
|
|
@@ -18,6 +18,10 @@ export interface PbrPipelineLayoutBundle {
|
|
|
18
18
|
readonly meshArrayBgl: BindGroupLayout;
|
|
19
19
|
/** Per-instance storage BindGroupLayout (slot 3). */
|
|
20
20
|
readonly instancesBgl: BindGroupLayout;
|
|
21
|
+
/** Probe-enabled slot-3 BGL; aliases `instancesBgl` when probes are unavailable. */
|
|
22
|
+
readonly probeInstancesBgl: BindGroupLayout;
|
|
23
|
+
/** Same pipeline layout with the probe-enabled slot-3 BGL, when supported. */
|
|
24
|
+
readonly probePipelineLayout: PipelineLayout | null;
|
|
21
25
|
/**
|
|
22
26
|
* Same 4 layouts in slot order. Useful for assertion sites that check the
|
|
23
27
|
* pipeline-layout `bindGroupLayouts` array shape (t57 (a) + (d)).
|
|
@@ -29,14 +33,18 @@ export interface PbrPipelineLayoutBundle {
|
|
|
29
33
|
BindGroupLayout
|
|
30
34
|
];
|
|
31
35
|
}
|
|
36
|
+
/** Derives the Standard PBR attachment list without allocating a closed path. */
|
|
37
|
+
export declare function standardPbrColorFormats(baseFormat: TextureFormat, fallbackDemand: boolean): readonly TextureFormat[];
|
|
32
38
|
/**
|
|
33
39
|
* The built-in standard-PBR material paramSchema's texture/user-region shape,
|
|
34
40
|
* used as the fallback when the material BGL is built without a registry
|
|
35
|
-
* (the caps-driven `buildPbrPipelineLayouts` seam). Declares the
|
|
36
|
-
* user-region textures + a numeric UBO run; `derive()` collapses the
|
|
37
|
-
* into binding 0 and emits sampler/texture
|
|
38
|
-
*
|
|
39
|
-
*
|
|
41
|
+
* (the caps-driven `buildPbrPipelineLayouts` seam). Declares the canonical
|
|
42
|
+
* Standard user-region textures + a numeric UBO run; `derive()` collapses the
|
|
43
|
+
* numerics into binding 0 and emits one sampler/texture pair per declared
|
|
44
|
+
* texture. Physical map pairs stay outside this boot region and are appended
|
|
45
|
+
* only for an authored root that declares them. The shared PBR parameter
|
|
46
|
+
* contract comes from the shader package; this module only derives the GPU
|
|
47
|
+
* layout.
|
|
40
48
|
*/
|
|
41
49
|
/**
|
|
42
50
|
* Build the PBR material BGL **user-region** from a paramSchema via the
|
|
@@ -47,9 +55,10 @@ export interface PbrPipelineLayoutBundle {
|
|
|
47
55
|
* custom schema (e.g. parallax + heightTexture) shifts the injection region by
|
|
48
56
|
* one sampler/texture pair automatically.
|
|
49
57
|
*
|
|
50
|
-
* The
|
|
51
|
-
* so this derives to binding 0 UBO +
|
|
52
|
-
* after that
|
|
58
|
+
* The canonical `STANDARD_PIPELINE_PARAM_SCHEMA` currently declares seven
|
|
59
|
+
* non-physical textures, so this derives to binding 0 UBO + seven pairs = 15
|
|
60
|
+
* entries. IBL and transmission injection are appended after that region;
|
|
61
|
+
* authored physical maps are appended after the engine-owned injections.
|
|
53
62
|
*
|
|
54
63
|
* One material-UBO convention is layered on top of the pure `derive()` output:
|
|
55
64
|
* binding 0 is patched to `{ type: 'uniform', hasDynamicOffset: true }` with
|
|
@@ -62,7 +71,7 @@ export interface PbrPipelineLayoutBundle {
|
|
|
62
71
|
* @param paramSchema - the material shader's paramSchema (defaults to the
|
|
63
72
|
* built-in standard-PBR shape when omitted, for the caps-driven seam).
|
|
64
73
|
*/
|
|
65
|
-
export declare function buildPbrMaterialUserRegionEntries(paramSchema?: readonly ParamSchemaEntry[]): GPUBindGroupLayoutEntry[];
|
|
74
|
+
export declare function buildPbrMaterialUserRegionEntries(paramSchema?: readonly ParamSchemaEntry[], excludedTextureFields?: readonly string[]): GPUBindGroupLayoutEntry[];
|
|
66
75
|
export type InjectionKind = keyof typeof INJECTION_KIND_LENGTHS;
|
|
67
76
|
/**
|
|
68
77
|
* Append the engine-injection BGL entries for the given `kind` after the
|
|
@@ -87,6 +96,17 @@ export declare const INJECTION_KIND_LENGTHS: {
|
|
|
87
96
|
lightmap: number;
|
|
88
97
|
transmission: number;
|
|
89
98
|
};
|
|
99
|
+
export declare function physicalTextureFields(paramSchema: readonly ParamSchemaEntry[]): readonly string[];
|
|
100
|
+
export declare function appendTextureInjection(bgl: readonly GPUBindGroupLayoutEntry[], fields: readonly string[]): GPUBindGroupLayoutEntry[];
|
|
101
|
+
/**
|
|
102
|
+
* Return the stable identity of the merged material bind-group layout.
|
|
103
|
+
*
|
|
104
|
+
* This is deliberately derived from the same descriptor builder consumed by
|
|
105
|
+
* the device path. Callers use it to keep pipeline, bind-group, and
|
|
106
|
+
* frame-local lookup caches on one layout identity even when equivalent
|
|
107
|
+
* paramSchema arrays were allocated independently.
|
|
108
|
+
*/
|
|
109
|
+
export declare function materialBindGroupLayoutIdentity(shaderId: string, paramSchema: readonly ParamSchemaEntry[]): string;
|
|
90
110
|
/**
|
|
91
111
|
* Caps shape consumed by the BGL factory functions for storage-buffer vs
|
|
92
112
|
* uniform-buffer branching. Mirrors the two fields the engine reads from
|
|
@@ -94,13 +114,20 @@ export declare const INJECTION_KIND_LENGTHS: {
|
|
|
94
114
|
*/
|
|
95
115
|
export interface PbrCaps {
|
|
96
116
|
readonly storageBuffer: boolean;
|
|
117
|
+
/**
|
|
118
|
+
* Whether the selected material variant declares the optional extended
|
|
119
|
+
* lighting view resources. The default keeps the historical helper shape
|
|
120
|
+
* for callers that build the canonical full PBR layout; the renderer passes
|
|
121
|
+
* the device/variant decision explicitly.
|
|
122
|
+
*/
|
|
123
|
+
readonly extendedLighting?: boolean;
|
|
124
|
+
/** Selects the optional binding(1) ProbeBlendRecord lane. */
|
|
125
|
+
readonly probeBlend?: boolean;
|
|
97
126
|
/** Whether the device can carry the optional SpotLight projector texture. */
|
|
98
127
|
readonly projectorAvailable?: boolean;
|
|
99
128
|
}
|
|
100
129
|
/**
|
|
101
130
|
* The view BGL entry list. binding 0 = view UBO (vertex + fragment);
|
|
102
|
-
* binding 1 = pointLights (storage or uniform, per caps);
|
|
103
|
-
* binding 2 = spotLights (storage or uniform, per caps);
|
|
104
131
|
* binding 3 = directional shadowMap atlas (texture_depth_2d, vertex+fragment).
|
|
105
132
|
* feat-20260613-csm-cascaded-shadow-maps: this is the CSM atlas — N
|
|
106
133
|
* cascades tiled into one 2D depth texture, sampled via per-cascade UV
|
|
@@ -140,9 +167,9 @@ export interface PbrCaps {
|
|
|
140
167
|
* layout and consumed only by the dedicated points-lines shader).
|
|
141
168
|
* Isolated here so M4 round-4 tests can recreate the layout.
|
|
142
169
|
*
|
|
143
|
-
*
|
|
144
|
-
*
|
|
145
|
-
*
|
|
170
|
+
* Local lights are not part of the view group. Standard material variants
|
|
171
|
+
* consume the one Cluster payload in group(2), while this group retains only
|
|
172
|
+
* camera and shadow resources.
|
|
146
173
|
*/
|
|
147
174
|
export declare function buildPbrViewBglEntries(caps: PbrCaps): GPUBindGroupLayoutEntry[];
|
|
148
175
|
/**
|
|
@@ -150,8 +177,8 @@ export declare function buildPbrViewBglEntries(caps: PbrCaps): GPUBindGroupLayou
|
|
|
150
177
|
* material, mesh-array, instances]`; the material BGL is derived from the
|
|
151
178
|
* standard material schema and engine injection chain.
|
|
152
179
|
*
|
|
153
|
-
* `caps.storageBuffer===false` switches
|
|
154
|
-
*
|
|
180
|
+
* `caps.storageBuffer===false` switches the mesh-array and instances entries
|
|
181
|
+
* to `uniform`; local-light resources are never part of this view group.
|
|
155
182
|
*
|
|
156
183
|
* Throws on each `createBindGroupLayout` / `createPipelineLayout` Result
|
|
157
184
|
* failure -- the engine bootstrap path (createRenderer) wraps the call in
|
|
@@ -169,6 +196,7 @@ export declare function buildPbrPipelineLayouts(device: PbrPipelineDevice, caps:
|
|
|
169
196
|
*/
|
|
170
197
|
export declare const SKIN_MATERIAL_SHADER_ID: "forgeax::pbr-skin";
|
|
171
198
|
export declare const SHADOW_CASTER_SHADER_ID: "forgeax::default-shadow-caster";
|
|
199
|
+
export declare function isStandardPbrSkinMaterialShader(shaderId: string | undefined): boolean;
|
|
172
200
|
export declare function shadowCasterVariantSet(storageBuffer: boolean, skinned: boolean): string;
|
|
173
201
|
export declare function isSkinnedShadowCasterVariant(materialShaderId: string | undefined, variantSet: string | undefined): boolean;
|
|
174
202
|
export type PipelineGroup2Contract = 'mesh' | 'skin' | 'cluster' | 'skin-cluster';
|
|
@@ -176,6 +204,14 @@ export type PipelineGroup2Contract = 'mesh' | 'skin' | 'cluster' | 'skin-cluster
|
|
|
176
204
|
export declare function resolvePipelineGroup2Contract(source: string): PipelineGroup2Contract;
|
|
177
205
|
/** Returns true for the engine-shipped standard-PBR material shader family. */
|
|
178
206
|
export declare function isStandardPbrMaterialShader(shaderId: string | undefined): boolean;
|
|
207
|
+
/**
|
|
208
|
+
* Return true only for the two engine-owned Standard roots. Authored Standard
|
|
209
|
+
* aliases intentionally remain outside this set: their cooked root schema may
|
|
210
|
+
* omit transmission or other optional resources, so their compact user-region
|
|
211
|
+
* layout must be derived from that artifact instead of borrowing the boot
|
|
212
|
+
* layout's reserved slots.
|
|
213
|
+
*/
|
|
214
|
+
export declare function isCanonicalStandardPbrMaterialShader(shaderId: string | undefined): boolean;
|
|
179
215
|
/**
|
|
180
216
|
* Build the PBR skin pipeline layout (4 slots `[view, material,
|
|
181
217
|
* mesh-array(3-entry), instances]`). View / material / instances BGLs are
|
|
@@ -261,8 +297,9 @@ export declare const SPRITE_PASS_PER_INSTANCE_REGION_VARIANT_SET = "";
|
|
|
261
297
|
* - `'unlit-material'` — 7 entries: base PBR material only (no inject)
|
|
262
298
|
* - `'hdrp-7-slot'` — 7 entries (binding 0 + 3..8): HDRP cluster + SSAO group(2) BGL
|
|
263
299
|
* 2. Caps-driven literal shapes (no shader):
|
|
264
|
-
* - `'pbr-view'` —
|
|
265
|
-
*
|
|
300
|
+
* - `'pbr-view'` — camera/shadow bindings, optional projector
|
|
301
|
+
* texture/sampler (11/12), and the Points/Lines UBO (10). Local lights
|
|
302
|
+
* are carried exclusively by the Standard Cluster group(2).
|
|
266
303
|
* (directional 3/4, point 5/6, cascade 7, spot atlas 8; the former
|
|
267
304
|
* spot lightViewProj matrices moved into the View UBO)
|
|
268
305
|
* - `'pbr-mesh-array'` — 1 entry: per-entity mesh SSBO (dynamic-offset)
|
|
@@ -297,9 +334,9 @@ export interface BindGroupLayoutDescriptorOutput {
|
|
|
297
334
|
readonly entries: GPUBindGroupLayoutEntry[];
|
|
298
335
|
}
|
|
299
336
|
/** Build the canonical HDRP group(2) bind-group layout. */
|
|
300
|
-
export declare function createHdrpBindGroupLayoutDescriptor():
|
|
337
|
+
export declare function createHdrpBindGroupLayoutDescriptor(): BindGroupLayoutDescriptorOutput;
|
|
301
338
|
/** Build the HDRP group(2) layout for the clustered skin variant. */
|
|
302
|
-
export declare function createHdrpSkinBindGroupLayoutDescriptor():
|
|
339
|
+
export declare function createHdrpSkinBindGroupLayoutDescriptor(): BindGroupLayoutDescriptorOutput;
|
|
303
340
|
export declare function buildBindGroupLayoutDescriptor(spec: PipelineSpec, options: {
|
|
304
341
|
kind: BglKind;
|
|
305
342
|
registry?: ShaderCatalog;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pbr-pipeline.d.ts","sourceRoot":"","sources":["../src/pbr-pipeline.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,eAAe,EACf,
|
|
1
|
+
{"version":3,"file":"pbr-pipeline.d.ts","sourceRoot":"","sources":["../src/pbr-pipeline.ts"],"names":[],"mappings":"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"}
|