@forgeax/engine-render 0.1.20 → 0.1.23
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 +365 -29
- package/dist/assembly/backend-contract.d.ts +13 -0
- package/dist/assembly/backend-contract.d.ts.map +1 -1
- package/dist/assembly/device-feature-admission.d.ts +18 -0
- package/dist/assembly/device-feature-admission.d.ts.map +1 -0
- package/dist/assembly/directional-shadow-inspection.d.ts +38 -0
- package/dist/assembly/directional-shadow-inspection.d.ts.map +1 -0
- package/dist/assembly/factory.d.ts +30 -19
- package/dist/assembly/factory.d.ts.map +1 -1
- package/dist/assembly/host-contract.d.ts +19 -0
- package/dist/assembly/host-contract.d.ts.map +1 -1
- package/dist/assembly/render-target-host.d.ts +46 -0
- package/dist/assembly/render-target-host.d.ts.map +1 -0
- package/dist/assets/render-asset-port.d.ts.map +1 -1
- package/dist/authoring.mjs +4 -1
- package/dist/authoring.mjs.map +1 -1
- package/dist/capture/cube-views.d.ts +21 -0
- package/dist/capture/cube-views.d.ts.map +1 -0
- package/dist/capture/scheduler.d.ts +54 -0
- package/dist/capture/scheduler.d.ts.map +1 -0
- package/dist/{chunk-PCHBPYML.mjs → chunk-4L3P6DT5.mjs} +2 -2
- package/dist/chunk-4L3P6DT5.mjs.map +1 -0
- package/dist/{chunk-VFPLTKCU.mjs → chunk-4NPUASZR.mjs} +15 -4
- package/dist/chunk-4NPUASZR.mjs.map +1 -0
- package/dist/chunk-DIYW3M5D.mjs +5085 -0
- package/dist/chunk-DIYW3M5D.mjs.map +1 -0
- package/dist/chunk-FBC4R44J.mjs +1003 -0
- package/dist/chunk-FBC4R44J.mjs.map +1 -0
- package/dist/{chunk-CDTWTHZR.mjs → chunk-FF7K3FSO.mjs} +474 -168
- package/dist/chunk-FF7K3FSO.mjs.map +1 -0
- package/dist/chunk-HZUPSYW7.mjs +1104 -0
- package/dist/chunk-HZUPSYW7.mjs.map +1 -0
- package/dist/{chunk-TBQJOK2L.mjs → chunk-QODA5UKU.mjs} +321 -269
- package/dist/chunk-QODA5UKU.mjs.map +1 -0
- package/dist/chunk-YALPS44A.mjs +296 -0
- package/dist/chunk-YALPS44A.mjs.map +1 -0
- package/dist/{chunk-4XINDLAY.mjs → chunk-ZUWKAZ2I.mjs} +1963 -2178
- package/dist/chunk-ZUWKAZ2I.mjs.map +1 -0
- package/dist/cluster-binner.d.ts +5 -0
- package/dist/cluster-binner.d.ts.map +1 -1
- package/dist/components/camera.d.ts +1 -0
- package/dist/components/camera.d.ts.map +1 -1
- package/dist/components/cube-camera.d.ts +20 -0
- package/dist/components/cube-camera.d.ts.map +1 -0
- package/dist/components/directional-light.d.ts +11 -2
- package/dist/components/directional-light.d.ts.map +1 -1
- package/dist/components/directional-shadow-filter.d.ts +25 -0
- package/dist/components/directional-shadow-filter.d.ts.map +1 -0
- package/dist/components/index.d.ts +5 -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/reflection-probe.d.ts +17 -0
- package/dist/components/reflection-probe.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 +14836 -9620
- package/dist/construct-renderer.mjs.map +1 -1
- package/dist/device/gpu-residency.d.ts +8 -1
- 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.map +1 -1
- package/dist/environment/lifecycle.d.ts +5 -0
- 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 +9 -1
- package/dist/errors/recover.d.ts.map +1 -1
- package/dist/errors/render.d.ts +166 -93
- package/dist/errors/render.d.ts.map +1 -1
- package/dist/extract/directional-shadow-projection.d.ts +23 -0
- package/dist/extract/directional-shadow-projection.d.ts.map +1 -0
- package/dist/extract/environment.d.ts +14 -0
- package/dist/extract/environment.d.ts.map +1 -1
- 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/fullscreen.d.ts.map +1 -1
- package/dist/features/targets.d.ts.map +1 -1
- package/dist/features/types.d.ts +10 -0
- package/dist/features/types.d.ts.map +1 -1
- package/dist/fullscreen-post-process-pass.d.ts +13 -2
- package/dist/fullscreen-post-process-pass.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 +97 -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 +8 -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 +21 -19
- package/dist/hdrp-buffers.d.ts.map +1 -1
- package/dist/ibl/IblPipelineCache.d.ts +4 -0
- package/dist/ibl/IblPipelineCache.d.ts.map +1 -1
- package/dist/ibl/kernel-cache.d.ts +36 -0
- package/dist/ibl/kernel-cache.d.ts.map +1 -0
- package/dist/index.d.ts +39 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +91 -6
- package/dist/index.mjs.map +1 -1
- package/dist/inspection-types.d.ts +214 -1
- package/dist/inspection-types.d.ts.map +1 -1
- package/dist/instances-derived-bounds.d.ts +50 -0
- package/dist/instances-derived-bounds.d.ts.map +1 -0
- 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 +58 -140
- package/dist/light-buffer-layout.d.ts.map +1 -1
- package/dist/materials.d.ts.map +1 -1
- package/dist/mesh-material-bindings.d.ts +54 -0
- package/dist/mesh-material-bindings.d.ts.map +1 -1
- package/dist/pbr-pipeline.d.ts +38 -14
- package/dist/pbr-pipeline.d.ts.map +1 -1
- package/dist/pipeline/standard-forward-lane.d.ts +2 -1
- package/dist/pipeline/standard-forward-lane.d.ts.map +1 -1
- package/dist/pipeline/standard-lighting/errors.d.ts +4 -0
- package/dist/pipeline/standard-lighting/errors.d.ts.map +1 -0
- package/dist/pipeline/standard-lighting/graph.d.ts +24 -0
- package/dist/pipeline/standard-lighting/graph.d.ts.map +1 -0
- package/dist/pipeline/standard-lighting/inspection.d.ts +38 -0
- package/dist/pipeline/standard-lighting/inspection.d.ts.map +1 -0
- package/dist/pipeline/standard-lighting/layout.d.ts +28 -0
- package/dist/pipeline/standard-lighting/layout.d.ts.map +1 -0
- package/dist/pipeline/standard-lighting/light-frame.d.ts +33 -0
- package/dist/pipeline/standard-lighting/light-frame.d.ts.map +1 -0
- package/dist/pipeline/standard-lighting/membership.d.ts +14 -0
- package/dist/pipeline/standard-lighting/membership.d.ts.map +1 -0
- package/dist/pipeline/standard-lighting/prepare.d.ts +16 -0
- package/dist/pipeline/standard-lighting/prepare.d.ts.map +1 -0
- package/dist/pipeline/standard-lighting/topology.d.ts +45 -0
- package/dist/pipeline/standard-lighting/topology.d.ts.map +1 -0
- package/dist/pipeline/standard-lighting/transport.d.ts +36 -0
- package/dist/pipeline/standard-lighting/transport.d.ts.map +1 -0
- package/dist/pipeline/standard-pipeline.d.ts +4 -13
- package/dist/pipeline/standard-pipeline.d.ts.map +1 -1
- package/dist/pipeline/standard-post.d.ts.map +1 -1
- package/dist/pipeline/standard-profile.d.ts +5 -26
- package/dist/pipeline/standard-profile.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 +40 -7
- package/dist/pipeline-spec.d.ts.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/point-shadow-inspection.d.ts +21 -0
- package/dist/point-shadow-inspection.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 +33 -36
- package/dist/record/frame-lighting.d.ts.map +1 -1
- package/dist/record/frame-snapshot.d.ts +78 -24
- package/dist/record/frame-snapshot.d.ts.map +1 -1
- package/dist/record/frame-targets.d.ts +5 -0
- package/dist/record/frame-targets.d.ts.map +1 -1
- package/dist/record/frame.d.ts +16 -6
- package/dist/record/frame.d.ts.map +1 -1
- package/dist/record/gpu-pass-timing/contract.d.ts +96 -0
- package/dist/record/gpu-pass-timing/contract.d.ts.map +1 -0
- package/dist/record/gpu-pass-timing/errors.d.ts +18 -0
- package/dist/record/gpu-pass-timing/errors.d.ts.map +1 -0
- package/dist/record/gpu-pass-timing/index.d.ts +8 -0
- package/dist/record/gpu-pass-timing/index.d.ts.map +1 -0
- package/dist/record/gpu-pass-timing/parser.d.ts +11 -0
- package/dist/record/gpu-pass-timing/parser.d.ts.map +1 -0
- package/dist/record/gpu-pass-timing/session.d.ts +43 -0
- package/dist/record/gpu-pass-timing/session.d.ts.map +1 -0
- package/dist/record/gpu-timing.d.ts +20 -3
- 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 +6 -1
- package/dist/record/main-pass-geometry.d.ts.map +1 -1
- package/dist/record/main-pass-material.d.ts +25 -2
- 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 +2 -0
- package/dist/record/main-pass.d.ts.map +1 -1
- package/dist/record/mesh-ssbo.d.ts.map +1 -1
- package/dist/record/render-context.d.ts +98 -6
- package/dist/record/render-context.d.ts.map +1 -1
- package/dist/record/shadow-pass.d.ts.map +1 -1
- package/dist/record/skybox-post-pass.d.ts.map +1 -1
- package/dist/record/typed-frame-graph.d.ts +119 -4
- package/dist/record/typed-frame-graph.d.ts.map +1 -1
- package/dist/record/view-ubo.d.ts +7 -5
- package/dist/record/view-ubo.d.ts.map +1 -1
- package/dist/reflection/filter.d.ts +22 -0
- package/dist/reflection/filter.d.ts.map +1 -0
- package/dist/reflection/gpu-table.d.ts +25 -0
- package/dist/reflection/gpu-table.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 +140 -0
- package/dist/reflection/projection.d.ts.map +1 -0
- 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 +62 -14
- package/dist/render-contract.d.ts.map +1 -1
- package/dist/render-graph-primitives.d.ts +1 -0
- package/dist/render-graph-primitives.d.ts.map +1 -1
- package/dist/render-pipeline.d.ts +49 -2
- package/dist/render-pipeline.d.ts.map +1 -1
- package/dist/render-system-extract.d.ts +160 -31
- package/dist/render-system-extract.d.ts.map +1 -1
- package/dist/render-system.d.ts +28 -2
- package/dist/render-system.d.ts.map +1 -1
- package/dist/renderer.d.ts +43 -0
- package/dist/renderer.d.ts.map +1 -0
- 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 +117 -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/shadow-atlas.d.ts +3 -3
- package/dist/shadow-atlas.d.ts.map +1 -1
- package/dist/ssao-buffers.d.ts +3 -0
- package/dist/ssao-buffers.d.ts.map +1 -1
- 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/targets/contracts.d.ts +66 -0
- package/dist/targets/contracts.d.ts.map +1 -0
- package/dist/targets/graph-projection.d.ts +29 -0
- package/dist/targets/graph-projection.d.ts.map +1 -0
- package/dist/targets/material-source.d.ts +34 -0
- package/dist/targets/material-source.d.ts.map +1 -0
- package/dist/targets/owner.d.ts +32 -0
- package/dist/targets/owner.d.ts.map +1 -0
- package/dist/targets/physical.d.ts +18 -0
- package/dist/targets/physical.d.ts.map +1 -0
- package/dist/targets/readback.d.ts +39 -0
- package/dist/targets/readback.d.ts.map +1 -0
- 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/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 +5 -1
- package/dist/typed-render-graph-primitives.d.ts.map +1 -1
- package/dist/typed-shadow-passes.d.ts +1 -1
- package/dist/typed-shadow-passes.d.ts.map +1 -1
- package/dist/volume/passes.d.ts +9 -5
- package/dist/volume/passes.d.ts.map +1 -1
- package/package.json +20 -20
- package/src/__tests__/bloom-exact-zero.unit.test.ts +48 -19
- package/src/__tests__/bloom-lifecycle.integration.test.ts +41 -13
- package/src/__tests__/camera-target-consumption.unit.test.ts +53 -0
- package/src/__tests__/cluster-binner.unit.test.ts +35 -0
- package/src/__tests__/cluster-grid-default-surface.unit.test.ts +12 -2
- package/src/__tests__/cube-camera-scheduler.unit.test.ts +70 -0
- package/src/__tests__/cube-camera-single-submit.perf.test.ts +75 -0
- package/src/__tests__/cube-camera-view-matrices.unit.test.ts +41 -0
- package/src/__tests__/cube-camera-vocabulary.unit.test.ts +47 -0
- package/src/__tests__/cube-camera.integration.test.ts +42 -0
- package/src/__tests__/detached-inspection.integration.test.ts +6 -0
- package/src/__tests__/device-feature-admission.unit.test.ts +85 -0
- package/src/__tests__/direct-light-snapshot.unit.test.ts +62 -6
- package/src/__tests__/docs-gate-green.unit.test.ts +38 -0
- package/src/__tests__/environment-generation.integration.test.ts +16 -0
- package/src/__tests__/evidence-identity.ts +13 -0
- package/src/__tests__/evidence-identity.unit.test.ts +24 -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 +288 -29
- package/src/__tests__/fog-component.unit.test.ts +67 -0
- package/src/__tests__/fog.integration.test.ts +86 -0
- package/src/__tests__/frame-observation.contract.test.ts +15 -0
- package/src/__tests__/fullscreen-feature-plan.unit.test.ts +37 -0
- package/src/__tests__/gpu-driven-batch-topology-pbr.unit.test.ts +146 -0
- package/src/__tests__/gpu-driven-indirect-raster-evidence.ts +10 -8
- package/src/__tests__/gpu-driven-indirect-raster.dawn.test.ts +18 -1
- package/src/__tests__/gpu-driven-production.integration.test.ts +579 -17
- 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 +101 -6
- 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-pass-timing-browser-runner.ts +281 -0
- package/src/__tests__/gpu-pass-timing-coexistence.integration.test.ts +80 -0
- package/src/__tests__/gpu-pass-timing-contract.unit.test.ts +243 -0
- package/src/__tests__/gpu-pass-timing-exact-zero.unit.test.ts +131 -0
- package/src/__tests__/gpu-pass-timing-lifecycle.integration.test.ts +230 -0
- package/src/__tests__/gpu-pass-timing-observation.unit.test.ts +233 -0
- package/src/__tests__/gpu-pass-timing-session.unit.test.ts +438 -0
- package/src/__tests__/gpu-pass-timing.browser.test.ts +26 -0
- package/src/__tests__/gpu-pass-timing.rhi-null.unit.test.ts +125 -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__/hdrp-group2-visibility.unit.test.ts +24 -0
- package/src/__tests__/instances-culling.integration.test.ts +94 -0
- package/src/__tests__/instances-derived-bounds.unit.test.ts +118 -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 +17 -0
- package/src/__tests__/material-observation.integration.test.ts +101 -0
- 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__/pbr-view-layout.unit.test.ts +16 -0
- package/src/__tests__/point-shadow-inspection.unit.test.ts +60 -0
- package/src/__tests__/prepared-gpu-driven-pbr.integration.test.ts +196 -0
- 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__/public-surface.test-d.ts +10 -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-authoring.unit.test.ts +71 -0
- package/src/__tests__/reflection-probe-filter.unit.test.ts +54 -0
- package/src/__tests__/reflection-probe-ibl-topology.unit.test.ts +45 -0
- package/src/__tests__/reflection-probe-owner-placement.unit.test.ts +39 -0
- package/src/__tests__/reflection-probe-pass-encode.integration.test.ts +101 -0
- package/src/__tests__/reflection-probe-performance.perf.test.ts +60 -0
- package/src/__tests__/reflection-probe-record-owner.characterization.unit.test.ts +120 -0
- package/src/__tests__/reflection-probe-recovery.integration.test.ts +55 -0
- package/src/__tests__/reflection-probe-selection.unit.test.ts +46 -0
- package/src/__tests__/render-error-code-owner.test-d.ts +19 -3
- 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__/render-target-admission.unit.test.ts +80 -0
- package/src/__tests__/render-target-graph-projection.unit.test.ts +102 -0
- package/src/__tests__/render-target-inspection.unit.test.ts +52 -0
- package/src/__tests__/render-target-material-source.test-d.ts +30 -0
- package/src/__tests__/render-target-material-source.unit.test.ts +97 -0
- package/src/__tests__/render-target-owner-placement.unit.test.ts +203 -0
- package/src/__tests__/render-target-owner.unit.test.ts +122 -0
- package/src/__tests__/render-target-probe-soak.perf.test.ts +94 -0
- package/src/__tests__/render-target-public-schema.json +107 -0
- package/src/__tests__/render-target-public-schema.unit.test.ts +91 -0
- package/src/__tests__/render-target-public-surface.test-d.ts +83 -0
- package/src/__tests__/render-target-readback.integration.test.ts +90 -0
- package/src/__tests__/render-target-recovery.integration.test.ts +85 -0
- package/src/__tests__/renderer-factory-material-contract.unit.test.ts +124 -0
- package/src/__tests__/renderer-lifecycle.integration.test.ts +14 -0
- package/src/__tests__/shader-stage-surface.unit.test.ts +19 -4
- package/src/__tests__/skin-motion-regression.unit.test.ts +154 -0
- package/src/__tests__/skinned-shadow-caster.test.ts +13 -4
- 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-capability.integration.test.ts +63 -0
- package/src/__tests__/standard-cluster-transport.unit.test.ts +121 -0
- package/src/__tests__/standard-cluster-variant-resolution.unit.test.ts +299 -0
- package/src/__tests__/standard-clustered-pipeline.unit.test.ts +15 -5
- package/src/__tests__/standard-lighting-inspection.integration.test.ts +138 -0
- package/src/__tests__/standard-lighting-ssot.unit.test.ts +18 -0
- package/src/__tests__/standard-lighting-write.unit.test.ts +441 -0
- package/src/__tests__/standard-lighting.integration.test.ts +67 -0
- package/src/__tests__/standard-pipeline.dawn.test.ts +206 -5
- package/src/__tests__/standard-pipeline.integration.test.ts +181 -150
- package/src/__tests__/standard-probe-binding.unit.test.ts +25 -0
- package/src/__tests__/standard-profile-oracle.unit.test.ts +23 -38
- 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 +69 -0
- package/src/__tests__/typed-pipeline-topology.unit.test.ts +395 -14
- package/src/__tests__/urp-pipeline-targets.unit.test.ts +2 -2
- 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__/visibility-resolver.unit.test.ts +15 -0
- 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/assembly/backend-contract.ts +13 -0
- package/src/assembly/device-feature-admission.ts +80 -0
- package/src/assembly/directional-shadow-inspection.ts +122 -0
- package/src/assembly/factory.ts +1411 -366
- package/src/assembly/host-contract.ts +35 -0
- package/src/assembly/render-target-host.ts +847 -0
- package/src/assets/asset-decoders.ts +1 -1
- package/src/assets/render-asset-port.ts +7 -1
- package/src/capture/cube-views.ts +69 -0
- package/src/capture/scheduler.ts +265 -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/__tests__/schema-contract.unit.test.ts +12 -0
- package/src/components/__tests__/schema-parity.unit.test.ts +9 -0
- package/src/components/camera.ts +4 -0
- package/src/components/cube-camera.ts +52 -0
- package/src/components/directional-light.ts +22 -2
- package/src/components/directional-shadow-filter.ts +57 -0
- package/src/components/index.ts +5 -0
- package/src/components/light-helpers.ts +133 -8
- package/src/components/light-probe.ts +13 -0
- package/src/components/rect-area-light.ts +15 -0
- package/src/components/reflection-probe.ts +49 -0
- package/src/components/scene-instance.ts +6 -0
- package/src/components/spot-light.ts +3 -0
- package/src/device/__tests__/extended-lighting-recovery.unit.test.ts +24 -0
- package/src/device/gpu-residency.ts +140 -9
- package/src/device/lifecycle-transaction.ts +12 -0
- package/src/environment/frame.ts +6 -24
- package/src/environment/lifecycle.ts +20 -1
- package/src/errors/gpu-driven.ts +92 -0
- package/src/errors/index.ts +1 -0
- package/src/errors/recover.ts +32 -0
- package/src/errors/render.ts +341 -143
- package/src/extract/camera.ts +3 -3
- package/src/extract/directional-shadow-projection.ts +61 -0
- package/src/extract/environment.ts +57 -0
- package/src/extract/gpu-driven.ts +108 -0
- package/src/extract/visibility.ts +2 -1
- package/src/features/fullscreen.ts +3 -0
- package/src/features/targets.ts +4 -1
- package/src/features/types.ts +10 -0
- package/src/fullscreen-post-process-pass.ts +43 -2
- package/src/gpu-driven/batch-topology.ts +207 -28
- package/src/gpu-driven/prepared-draw.ts +208 -0
- package/src/gpu-driven/production-raster.ts +953 -43
- package/src/gpu-driven/view-gpu.ts +411 -29
- package/src/gpu-scene-schema.ts +13 -0
- package/src/gpu-scene.ts +140 -64
- package/src/gpu-usage.ts +0 -1
- package/src/hdrp-buffers.ts +169 -63
- package/src/ibl/IblPipelineCache.ts +11 -0
- package/src/ibl/kernel-cache.ts +88 -0
- package/src/index.ts +222 -0
- package/src/inspection-types.ts +276 -1
- package/src/instances-derived-bounds.ts +171 -0
- package/src/internal.ts +38 -0
- package/src/light-buffer-layout.ts +155 -310
- package/src/materials.ts +16 -2
- package/src/mesh-material-bindings.ts +132 -0
- package/src/pbr-pipeline.ts +255 -60
- package/src/pipeline/standard-forward-lane.ts +93 -16
- package/src/pipeline/standard-lighting/errors.ts +6 -0
- package/src/pipeline/standard-lighting/graph.ts +158 -0
- package/src/pipeline/standard-lighting/inspection.ts +88 -0
- package/src/pipeline/standard-lighting/layout.ts +31 -0
- package/src/pipeline/standard-lighting/light-frame.ts +35 -0
- package/src/pipeline/standard-lighting/membership.ts +43 -0
- package/src/pipeline/standard-lighting/prepare.ts +37 -0
- package/src/pipeline/standard-lighting/topology.ts +120 -0
- package/src/pipeline/standard-lighting/transport.ts +78 -0
- package/src/pipeline/standard-pipeline.ts +124 -193
- package/src/pipeline/standard-post.ts +26 -7
- package/src/pipeline/standard-profile.ts +17 -47
- package/src/pipeline-builder.ts +5 -2
- package/src/pipeline-spec.ts +95 -21
- package/src/plugin.ts +4 -0
- package/src/point-shadow-inspection.ts +55 -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__/gpu-timing.unit.test.ts +177 -0
- package/src/record/__tests__/temporal-payload.unit.test.ts +64 -1
- package/src/record/__tests__/transparent-group2-selection.unit.test.ts +73 -0
- package/src/record/__tests__/typed-frame-graph-plan.unit.test.ts +20 -1
- package/src/record/__tests__/view-ubo-layout.unit.test.ts +40 -0
- package/src/record/frame-lighting.ts +591 -452
- package/src/record/frame-snapshot.ts +92 -39
- package/src/record/frame-targets.ts +17 -0
- package/src/record/frame.ts +662 -158
- package/src/record/gpu-pass-timing/contract.ts +180 -0
- package/src/record/gpu-pass-timing/errors.ts +34 -0
- package/src/record/gpu-pass-timing/index.ts +37 -0
- package/src/record/gpu-pass-timing/parser.ts +97 -0
- package/src/record/gpu-pass-timing/session.ts +938 -0
- package/src/record/gpu-timing.ts +112 -39
- package/src/record/helpers.ts +0 -58
- package/src/record/main-pass-geometry.ts +324 -119
- package/src/record/main-pass-material.ts +103 -10
- package/src/record/main-pass-sprite-draws.ts +99 -103
- package/src/record/main-pass.ts +71 -15
- package/src/record/mesh-ssbo.ts +47 -36
- package/src/record/render-context.ts +136 -3
- package/src/record/shadow-pass.ts +83 -68
- package/src/record/skybox-post-pass.ts +20 -4
- package/src/record/typed-frame-graph.ts +1034 -43
- package/src/record/view-ubo.ts +72 -47
- package/src/reflection/filter.ts +81 -0
- package/src/reflection/gpu-table.ts +44 -0
- package/src/reflection/inspection.ts +67 -0
- package/src/reflection/projection.ts +476 -0
- package/src/reflection/record-owner.ts +1283 -0
- package/src/render-contract.ts +93 -10
- package/src/render-graph-primitives.ts +9 -4
- package/src/render-pipeline.ts +122 -2
- package/src/render-system-extract.ts +1041 -225
- package/src/render-system.ts +1310 -85
- package/src/renderer.ts +222 -0
- 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 +942 -171
- 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/shadow-atlas.ts +5 -5
- package/src/ssao-buffers.ts +9 -2
- 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/targets/contracts.ts +182 -0
- package/src/targets/graph-projection.ts +169 -0
- package/src/targets/material-source.ts +143 -0
- package/src/targets/owner.ts +214 -0
- package/src/targets/physical.ts +18 -0
- package/src/targets/readback.ts +153 -0
- package/src/temporal/frame-coordinator.ts +26 -0
- package/src/temporal/frame.ts +14 -1
- package/src/temporal/view.ts +11 -0
- package/src/tilemap-chunk-extract-system.ts +4 -4
- package/src/transmission/__tests__/standard-transmission.dawn.test.ts +59 -20
- package/src/typed-render-graph-primitives.ts +53 -3
- package/src/typed-shadow-passes.ts +46 -40
- package/src/volume/passes.ts +61 -58
- package/dist/.tsbuildinfo +0 -1
- package/dist/chunk-4XINDLAY.mjs.map +0 -1
- package/dist/chunk-CDTWTHZR.mjs.map +0 -1
- package/dist/chunk-M2MP4ZOU.mjs +0 -73
- package/dist/chunk-M2MP4ZOU.mjs.map +0 -1
- package/dist/chunk-PCHBPYML.mjs.map +0 -1
- package/dist/chunk-TBQJOK2L.mjs.map +0 -1
- package/dist/chunk-VFPLTKCU.mjs.map +0 -1
|
@@ -2,13 +2,24 @@
|
|
|
2
2
|
// Extracted from render-system-record.ts (feat-20260704 M3/w17, pure move).
|
|
3
3
|
|
|
4
4
|
import type { World } from '@forgeax/engine-ecs';
|
|
5
|
+
import type { RenderReadVersion } from '@forgeax/engine-ecs/projection';
|
|
5
6
|
import { vec3 } from '@forgeax/engine-math';
|
|
6
7
|
import type { ResolvedColorTargetDescriptor } from '@forgeax/engine-render-graph';
|
|
7
|
-
import type {
|
|
8
|
+
import type {
|
|
9
|
+
BindGroup,
|
|
10
|
+
BindGroupLayout,
|
|
11
|
+
Buffer,
|
|
12
|
+
RhiDevice,
|
|
13
|
+
Texture,
|
|
14
|
+
TextureView,
|
|
15
|
+
} from '@forgeax/engine-rhi';
|
|
8
16
|
import type { ClusterBinScratch } from '../cluster-binner';
|
|
17
|
+
import type { DirectionalShadowQuality } from '../components/directional-shadow-filter';
|
|
9
18
|
import type { EnvironmentGeneration } from '../environment/generation';
|
|
10
19
|
import type { EnvironmentLifecycle } from '../environment/lifecycle';
|
|
11
20
|
import type { GpuBuffer } from '../gpu-resource';
|
|
21
|
+
import type { StandardLightingInspection } from '../pipeline/standard-lighting/inspection';
|
|
22
|
+
import type { PointShadowInspection } from '../point-shadow-inspection';
|
|
12
23
|
import type { TemporalGpuState } from '../temporal/gpu';
|
|
13
24
|
import type { TemporalView } from '../temporal/view';
|
|
14
25
|
|
|
@@ -58,7 +69,6 @@ export interface MaterialBgAssemblyCacheEntry {
|
|
|
58
69
|
}
|
|
59
70
|
|
|
60
71
|
import type { CompiledRenderGraph } from '@forgeax/engine-render-graph';
|
|
61
|
-
import type { BindGroup, BindGroupLayout, Buffer, TextureView } from '@forgeax/engine-rhi';
|
|
62
72
|
import type { MaterialRenderState, RenderPipelineAsset } from '@forgeax/engine-types';
|
|
63
73
|
import type { MeshGpuHandles } from '../device/gpu-residency';
|
|
64
74
|
import type { SkylightBindGroupResources } from '../ibl/skylight-bind-group';
|
|
@@ -72,6 +82,7 @@ import type {
|
|
|
72
82
|
RenderableSnapshot,
|
|
73
83
|
SpotLightSnapshot,
|
|
74
84
|
} from '../render-system-extract';
|
|
85
|
+
import type { ProbeBlendRecord } from '../scene/probe-blend-record';
|
|
75
86
|
import type { ShadowAtlas } from '../shadow-atlas';
|
|
76
87
|
import type {
|
|
77
88
|
TemporalFrame,
|
|
@@ -81,6 +92,18 @@ import type {
|
|
|
81
92
|
import type { VolumetricFogInspection } from '../volume/inspection';
|
|
82
93
|
import type { VolumeTemporalSignature } from '../volume/temporal';
|
|
83
94
|
|
|
95
|
+
/** Retained probe record bytes carried with one extracted render frame. */
|
|
96
|
+
export interface ProbeBlendFrameSnapshot {
|
|
97
|
+
readonly records: readonly ProbeBlendRecord[];
|
|
98
|
+
readonly recordByteLength: 160;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/** Renderer-owned GPU cache entry for one object's 160B probe record. */
|
|
102
|
+
export interface ProbeBlendBufferCacheEntry {
|
|
103
|
+
readonly generation: number;
|
|
104
|
+
readonly bytes: Uint8Array;
|
|
105
|
+
}
|
|
106
|
+
|
|
84
107
|
/**
|
|
85
108
|
* feat-20260608-create-app-param-surface-trim / M1 / D-8 (q8 user lock):
|
|
86
109
|
* fallback clear color when the world carries no Camera entity. Opaque
|
|
@@ -145,14 +168,17 @@ export function validateGraphTargetCaptureReadback(input: {
|
|
|
145
168
|
readonly bytes: Uint8Array;
|
|
146
169
|
readonly expectedByteLength: number;
|
|
147
170
|
readonly sentinel?: Uint8Array;
|
|
171
|
+
readonly allowZero?: boolean;
|
|
148
172
|
}): GraphTargetCaptureReadbackValidation {
|
|
149
|
-
const { bytes, expectedByteLength, sentinel } = input;
|
|
173
|
+
const { bytes, expectedByteLength, sentinel, allowZero = false } = input;
|
|
150
174
|
if (bytes.byteLength !== expectedByteLength)
|
|
151
175
|
return { ok: false, code: 'capture-readback-length' };
|
|
152
176
|
if (sentinel?.every((value, index) => bytes[index] === value)) {
|
|
153
177
|
return { ok: false, code: 'capture-readback-untouched-sentinel' };
|
|
154
178
|
}
|
|
155
|
-
if (bytes.every((value) => value === 0))
|
|
179
|
+
if (!allowZero && bytes.every((value) => value === 0)) {
|
|
180
|
+
return { ok: false, code: 'capture-readback-empty' };
|
|
181
|
+
}
|
|
156
182
|
for (let index = 0; index + 1 < bytes.length; index += 2) {
|
|
157
183
|
const exponent = ((bytes[index + 1] ?? 0) >>> 2) & 0x1f;
|
|
158
184
|
if (exponent === 0x1f) return { ok: false, code: 'capture-readback-non-finite' };
|
|
@@ -182,6 +208,25 @@ export interface GraphTargetCaptureRequest {
|
|
|
182
208
|
};
|
|
183
209
|
}
|
|
184
210
|
|
|
211
|
+
/** Renderer-private readback request for the Standard fallback MRT. */
|
|
212
|
+
export interface ReflectionFallbackReadbackRequest {
|
|
213
|
+
readonly name: string;
|
|
214
|
+
readonly buffer: Buffer;
|
|
215
|
+
readonly bytesPerRow: number;
|
|
216
|
+
readonly width: number;
|
|
217
|
+
readonly height: number;
|
|
218
|
+
readonly expected: {
|
|
219
|
+
readonly format: ResolvedColorTargetDescriptor['format'];
|
|
220
|
+
readonly width: number;
|
|
221
|
+
readonly height: number;
|
|
222
|
+
readonly usage: number;
|
|
223
|
+
readonly graphGeneration: number;
|
|
224
|
+
readonly frameId: number;
|
|
225
|
+
readonly textureIdentity: number;
|
|
226
|
+
};
|
|
227
|
+
encoded: boolean;
|
|
228
|
+
}
|
|
229
|
+
|
|
185
230
|
/**
|
|
186
231
|
* Build a synthetic CameraSnapshot the record stage uses when the world
|
|
187
232
|
* carries no Camera entity. Identity-shaped projection / view inputs
|
|
@@ -225,20 +270,6 @@ export function makeZeroCameraFallbackSnapshot(): CameraSnapshot {
|
|
|
225
270
|
};
|
|
226
271
|
}
|
|
227
272
|
|
|
228
|
-
// feat-20260621-merge-directionallightshadow-into-directionallight M3 / m3-t2
|
|
229
|
-
// (D-7): host-clamp the merged DirectionalLight's pcfKernelSize to the nearest
|
|
230
|
-
// valid odd kernel in {1,3,5} before it reaches the View UBO float [128].
|
|
231
|
-
// lighting-directional.wgsl runs a constant-trip-count loop to MAX_PCF_HALF=2
|
|
232
|
-
// (merged 5.3-production-shadow-demos AC-14 variant-free pattern) and clips each
|
|
233
|
-
// iteration to half = (pcfKernelSize-1)/2, so the supported kernel set is
|
|
234
|
-
// {1,3,5} (cap 5). undefined (no shadow fields) defaults to 3.
|
|
235
|
-
export function clampPcfKernelSize(value: number | undefined): number {
|
|
236
|
-
if (value === undefined) return 3;
|
|
237
|
-
if (value <= 1) return 1;
|
|
238
|
-
if (value <= 3) return 3;
|
|
239
|
-
return 5;
|
|
240
|
-
}
|
|
241
|
-
|
|
242
273
|
/**
|
|
243
274
|
* Per-RenderSystem mutable frame state.
|
|
244
275
|
*
|
|
@@ -258,12 +289,14 @@ export function clampPcfKernelSize(value: number | undefined): number {
|
|
|
258
289
|
*/
|
|
259
290
|
export interface RenderFrameState {
|
|
260
291
|
frameNumber: number;
|
|
292
|
+
/** Demand for the frame-local Standard fallback MRT. */
|
|
293
|
+
reflectionFallbackDemand?: boolean;
|
|
261
294
|
/** Monotonic compiled-graph identity used by diagnostic readbacks. */
|
|
262
295
|
graphGeneration: number;
|
|
263
296
|
/** Number of successfully submitted TAA frames; failed attempts do not advance it. */
|
|
264
297
|
successfulTemporalFrameIndex?: number;
|
|
265
298
|
/** The renderer-owned accepted-submit temporal fact consumed by consumers. */
|
|
266
|
-
temporalFrame?: TemporalFrame;
|
|
299
|
+
temporalFrame?: TemporalFrame | undefined;
|
|
267
300
|
/** The sole transaction that advances temporal history after queue.submit. */
|
|
268
301
|
readonly temporalFrameTransaction: TemporalFrameTransaction;
|
|
269
302
|
/** Staged input is consumed only by the graph submit owner. */
|
|
@@ -276,6 +309,8 @@ export interface RenderFrameState {
|
|
|
276
309
|
readonly graphGeneration: number;
|
|
277
310
|
} | null;
|
|
278
311
|
graphTargetCapture?: GraphTargetCaptureRequest | undefined;
|
|
312
|
+
/** One-frame producer-owned copy target for fallback MRT readback. */
|
|
313
|
+
reflectionFallbackReadback?: ReflectionFallbackReadbackRequest | undefined;
|
|
279
314
|
/** Last successfully rendered static directional shadow atlas token. */
|
|
280
315
|
directionalShadowCache: DirectionalShadowCache | null;
|
|
281
316
|
/** Last successfully submitted camera post-process mode. */
|
|
@@ -287,6 +322,8 @@ export interface RenderFrameState {
|
|
|
287
322
|
/** The sole compiled owner for compute, copy, feature, and raster work. */
|
|
288
323
|
compiledFrameGraph: CompiledRenderGraph<RenderPipelineFrame> | null;
|
|
289
324
|
compiledFrameGraphTopologyKey: string | null;
|
|
325
|
+
/** Monotonic generation of successfully promoted compiled graphs. */
|
|
326
|
+
compiledFrameGraphGeneration: number;
|
|
290
327
|
/**
|
|
291
328
|
* Last-known-good graph held while a volume topology candidate is tested.
|
|
292
329
|
* The candidate is promoted only after its command buffer is submitted;
|
|
@@ -317,6 +354,10 @@ export interface RenderFrameState {
|
|
|
317
354
|
readonly retiredCompiledFrameGraphs: Set<CompiledRenderGraph<RenderPipelineFrame>>;
|
|
318
355
|
/** Physical outputs projected by typed graph passes for downstream observers. */
|
|
319
356
|
currentFrameObservationSource: FrameObservationSource | undefined;
|
|
357
|
+
/** Completed-frame source for the producer-owned fallback MRT. */
|
|
358
|
+
reflectionFallbackObservationSource?: FrameObservationSource | undefined;
|
|
359
|
+
/** Completion fence for the producer-owned fallback row/readback promotion. */
|
|
360
|
+
reflectionFallbackCompletion?: Promise<void> | undefined;
|
|
320
361
|
/** Camera antialias mode for the last successfully submitted graph. */
|
|
321
362
|
lastSuccessfulCameraAntialias: CameraSnapshot['antialias'] | undefined;
|
|
322
363
|
/** Staged TAA GPU state is promoted only after queue.submit succeeds. */
|
|
@@ -334,26 +375,43 @@ export interface RenderFrameState {
|
|
|
334
375
|
currentDirectionalShadowView: TextureView | null;
|
|
335
376
|
currentSpotShadowView: TextureView | null;
|
|
336
377
|
readonly instanceBuffers: Map<number, InstanceBufferCacheEntry>;
|
|
378
|
+
/** Per-object ProbeBlendRecord buffers; upload is one atomic 160B write. */
|
|
379
|
+
readonly probeBlendBuffers: Map<number, ProbeBlendBufferCacheEntry>;
|
|
380
|
+
/** One renderer-owned record array; each object selects its 256B-aligned lane. */
|
|
381
|
+
probeBlendRecordBuffer?: GpuBuffer;
|
|
382
|
+
probeBlendRecordBufferCapacity: number;
|
|
337
383
|
/** Per-entity vertex buffers for the Standard CPU morph lane. */
|
|
338
384
|
readonly morphBuffers?: Map<number, MorphBufferCacheEntry>;
|
|
339
385
|
readonly hdrpClusterBinScratch: ClusterBinScratch;
|
|
340
386
|
/** Reusable HDRP cluster output buffers; sized once and grown only if the grid/cap changes. */
|
|
341
387
|
hdrpClusterGridScratch: Uint32Array | null;
|
|
342
388
|
hdrpLightIndexListScratch: Uint32Array | null;
|
|
343
|
-
/**
|
|
344
|
-
|
|
389
|
+
/** Device-owned membership binding; layout and device must match the active pipeline. */
|
|
390
|
+
hdrpClusterMembership: {
|
|
391
|
+
readonly device: RhiDevice;
|
|
392
|
+
readonly layout: BindGroupLayout;
|
|
393
|
+
readonly bindGroup: BindGroup;
|
|
394
|
+
/** Cluster buffer identity keeps this group aligned with grown bundles. */
|
|
395
|
+
readonly clusterGridBuffer: Buffer;
|
|
396
|
+
} | null;
|
|
397
|
+
/**
|
|
398
|
+
* Signature of the Standard lighting declaration accepted by the compiled
|
|
399
|
+
* graph. Payload uploads and membership bindings must match this signature;
|
|
400
|
+
* a failed candidate never changes it.
|
|
401
|
+
*/
|
|
402
|
+
standardLightingGraphSignature: string;
|
|
403
|
+
/** Last prepared Standard transport facts projected for Renderer.inspect(). */
|
|
404
|
+
standardLightingInspection?: StandardLightingInspection | undefined;
|
|
405
|
+
/** Last submitted point-shadow atlas budget projection. */
|
|
406
|
+
pointShadowInspection?: PointShadowInspection | undefined;
|
|
345
407
|
transientInstanceBuffers: InstanceBufferCacheEntry[];
|
|
346
408
|
warnedZeroLightStandard: boolean;
|
|
347
409
|
/**
|
|
348
|
-
*
|
|
349
|
-
*
|
|
350
|
-
*
|
|
351
|
-
* actionable console.warn without per-frame flooding (charter P3 explicit
|
|
352
|
-
* failure: warn-once preserves signal/noise floor).
|
|
410
|
+
* feat-20260608-multi-light-warn-once M3: once-warn latch for the
|
|
411
|
+
* single-directional authoring constraint. Standard local lights use the
|
|
412
|
+
* unified Cluster budget; there is no per-kind local-light cap.
|
|
353
413
|
*/
|
|
354
414
|
warnedMultiLightDirectional: boolean;
|
|
355
|
-
warnedMultiLightPoint: boolean;
|
|
356
|
-
warnedMultiLightSpot: boolean;
|
|
357
415
|
/**
|
|
358
416
|
* feat-20260630-equirect-kind-internalized-ibl-declarative-skyligh M3 / w19:
|
|
359
417
|
* once-warn latches for >1 Skylight / >1 SkyboxBackground entity. Fire at most
|
|
@@ -496,20 +554,14 @@ export interface RenderFrameState {
|
|
|
496
554
|
* Install-time config projected into `RenderPipelineTopology.config`.
|
|
497
555
|
*/
|
|
498
556
|
installedPipelineConfig: RenderPipelineAsset['config'];
|
|
499
|
-
/**
|
|
500
|
-
* Whether the configured standard graph resolved to the clustered lane.
|
|
501
|
-
* Capability gating keeps URP forward bindings on WebGL2 fallback even
|
|
502
|
-
* when a clustered profile was requested.
|
|
503
|
-
*/
|
|
504
|
-
isHdrpActive: boolean;
|
|
505
557
|
/**
|
|
506
558
|
* feat-20260608-cluster-lighting M5 / w20 + M6 / w23 + M5 / w22:
|
|
507
|
-
* once-per-frame fire dedup set for
|
|
508
|
-
* (`
|
|
559
|
+
* once-per-frame fire dedup set for Standard per-frame fail-soft errors
|
|
560
|
+
* (`standard-light-budget-exceeded`, `standard-cluster-index-overflow`). Cleared
|
|
509
561
|
* at the end of each frame so the next frame re-fires if the condition
|
|
510
562
|
* persists. Set<string> keyed by RuntimeErrorCode literal.
|
|
511
563
|
*/
|
|
512
|
-
|
|
564
|
+
standardOncePerFrameFired: Set<string>;
|
|
513
565
|
/**
|
|
514
566
|
* feat-20260612-point-light-shadows-urp-hdrp M3 / T-M3-2 (plan-strategy §D-1).
|
|
515
567
|
* Lazily-allocated cube_array shadow atlas owned by the RenderSystem
|
|
@@ -646,6 +698,7 @@ export interface DirectionalShadowCache {
|
|
|
646
698
|
readonly graphTopologyKey: string | null;
|
|
647
699
|
readonly shadowMapSize: number;
|
|
648
700
|
readonly cascadeCount: number;
|
|
701
|
+
readonly directionalShadowQuality: DirectionalShadowQuality;
|
|
649
702
|
readonly lightViewProj: readonly Float32Array[];
|
|
650
703
|
readonly meshResidencyEpoch: number;
|
|
651
704
|
}
|
|
@@ -654,11 +707,11 @@ export interface DirectionalShadowCache {
|
|
|
654
707
|
* ECS state that can change the contents of a directional shadow map.
|
|
655
708
|
*
|
|
656
709
|
* The ECS-owned RenderReadLease is the only render-facing mutation boundary.
|
|
657
|
-
* Its
|
|
710
|
+
* Its version is intentionally conservative: any published World change
|
|
658
711
|
* invalidates the cached atlas, while render never reaches through World for
|
|
659
712
|
* component-clock storage.
|
|
660
713
|
*/
|
|
661
714
|
export interface DirectionalShadowWorldState {
|
|
662
715
|
readonly worldIdentity: string;
|
|
663
|
-
readonly
|
|
716
|
+
readonly version: RenderReadVersion;
|
|
664
717
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { RhiCanvasContext, Texture, TextureView } from '@forgeax/engine-rhi';
|
|
2
2
|
import type { RenderGraphExecutionPhase } from '../render-contract';
|
|
3
3
|
import type { ExtractedLights } from '../render-system-extract';
|
|
4
|
+
import type { RenderTargetDescriptor } from '../targets/contracts';
|
|
4
5
|
import { resolveDirectionalShadowAtlasGrid } from '../typed-shadow-atlas';
|
|
5
6
|
import { configureSurface, type PipelineState, type RenderSystemInternals } from './render-context';
|
|
6
7
|
|
|
@@ -50,6 +51,21 @@ export function graphExecutionPhase(passName: string): RenderGraphExecutionPhase
|
|
|
50
51
|
}
|
|
51
52
|
}
|
|
52
53
|
|
|
54
|
+
export function resolveRenderTargetMipExtent(
|
|
55
|
+
descriptor: RenderTargetDescriptor,
|
|
56
|
+
mipLevel: number,
|
|
57
|
+
): { readonly width: number; readonly height: number } {
|
|
58
|
+
const mipCount =
|
|
59
|
+
descriptor.mipLevels === 1
|
|
60
|
+
? 1
|
|
61
|
+
: Math.floor(Math.log2(Math.max(descriptor.width, descriptor.height))) + 1;
|
|
62
|
+
const level = Math.max(0, Math.min(mipLevel, mipCount - 1));
|
|
63
|
+
return {
|
|
64
|
+
width: Math.max(1, descriptor.width >> level),
|
|
65
|
+
height: Math.max(1, descriptor.height >> level),
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
|
|
53
69
|
export function acquireSwapChainTarget(
|
|
54
70
|
internals: RenderSystemInternals,
|
|
55
71
|
pipelineState: PipelineState,
|
|
@@ -112,6 +128,7 @@ export function resolveShadowMapSize(
|
|
|
112
128
|
internals: RenderSystemInternals,
|
|
113
129
|
lights: ExtractedLights,
|
|
114
130
|
): number | undefined {
|
|
131
|
+
if (lights.cascadeCount === undefined) return undefined;
|
|
115
132
|
const requested = lights.shadowMapSize;
|
|
116
133
|
if (!(requested !== undefined && requested > 0)) return requested;
|
|
117
134
|
const cascades = Math.max(1, Math.min(4, Math.round(lights.cascadeCount ?? 1)));
|