@forgeax/engine-render 0.1.19 → 0.1.21
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 +215 -0
- package/dist/.tsbuildinfo +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 +34 -20
- package/dist/assembly/factory.d.ts.map +1 -1
- package/dist/assembly/host-contract.d.ts +9 -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 +3 -0
- 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-RJRUS55L.mjs → chunk-5YADUCA7.mjs} +1896 -1624
- package/dist/chunk-5YADUCA7.mjs.map +1 -0
- package/dist/{chunk-LOSO4CTV.mjs → chunk-6OPXDQ2E.mjs} +423 -46
- package/dist/chunk-6OPXDQ2E.mjs.map +1 -0
- package/dist/{chunk-IPXCABEP.mjs → chunk-BXBQQKFQ.mjs} +3 -9
- package/dist/chunk-BXBQQKFQ.mjs.map +1 -0
- package/dist/chunk-FS2KNUQH.mjs +1294 -0
- package/dist/chunk-FS2KNUQH.mjs.map +1 -0
- 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 +2 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/light-helpers.d.ts.map +1 -1
- package/dist/components/reflection-probe.d.ts +17 -0
- package/dist/components/reflection-probe.d.ts.map +1 -0
- package/dist/components/spot-light.d.ts +12 -0
- package/dist/components/spot-light.d.ts.map +1 -1
- package/dist/construct-renderer.mjs +8552 -1612
- package/dist/construct-renderer.mjs.map +1 -1
- package/dist/device/gpu-residency.d.ts +19 -2
- package/dist/device/gpu-residency.d.ts.map +1 -1
- package/dist/environment/frame.d.ts.map +1 -1
- package/dist/environment/lifecycle.d.ts +5 -0
- package/dist/environment/lifecycle.d.ts.map +1 -1
- package/dist/errors/render.d.ts +209 -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/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.map +1 -1
- package/dist/gpu-driven/production-raster.d.ts +0 -1
- package/dist/gpu-driven/production-raster.d.ts.map +1 -1
- package/dist/gpu-scene.d.ts.map +1 -1
- package/dist/gpu-usage.d.ts +2 -0
- package/dist/gpu-usage.d.ts.map +1 -1
- package/dist/hdrp-buffers.d.ts +19 -17
- 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 +35 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +4 -4
- package/dist/index.mjs.map +1 -1
- package/dist/inspection-types.d.ts +51 -0
- 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.mjs +1 -1
- package/dist/light-buffer-layout.d.ts +30 -13
- package/dist/light-buffer-layout.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 +20 -7
- 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 +12 -20
- package/dist/pipeline/standard-profile.d.ts.map +1 -1
- package/dist/pipeline-spec.d.ts +40 -7
- package/dist/pipeline-spec.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/record/frame-lighting.d.ts +29 -32
- package/dist/record/frame-lighting.d.ts.map +1 -1
- package/dist/record/frame-snapshot.d.ts +65 -15
- 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 +12 -5
- 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 +37 -0
- package/dist/record/gpu-timing.d.ts.map +1 -0
- package/dist/record/main-pass-geometry.d.ts.map +1 -1
- package/dist/record/main-pass-material.d.ts +23 -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/render-context.d.ts +48 -3
- 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 +81 -5
- package/dist/record/typed-frame-graph.d.ts.map +1 -1
- package/dist/record/view-ubo.d.ts +7 -4
- 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/projection.d.ts +91 -0
- package/dist/reflection/projection.d.ts.map +1 -0
- package/dist/render-contract.d.ts +114 -7
- package/dist/render-contract.d.ts.map +1 -1
- package/dist/render-data.d.ts +10 -6
- package/dist/render-data.d.ts.map +1 -1
- package/dist/render-graph-primitives.d.ts +1 -0
- package/dist/render-graph-primitives.d.ts.map +1 -1
- package/dist/render-pipeline.d.ts +78 -2
- package/dist/render-pipeline.d.ts.map +1 -1
- package/dist/render-system-extract.d.ts +113 -20
- package/dist/render-system-extract.d.ts.map +1 -1
- package/dist/render-system.d.ts +24 -3
- package/dist/render-system.d.ts.map +1 -1
- package/dist/renderer-inspect.d.ts +29 -0
- package/dist/renderer-inspect.d.ts.map +1 -0
- package/dist/renderer.d.ts +43 -0
- package/dist/renderer.d.ts.map +1 -0
- package/dist/scene/render-scene.d.ts +14 -0
- package/dist/scene/render-scene.d.ts.map +1 -1
- 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/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.d.ts +44 -0
- package/dist/temporal/frame.d.ts.map +1 -0
- package/dist/temporal/index.mjs +3 -3
- package/dist/typed-render-graph-primitives.d.ts +6 -1
- package/dist/typed-render-graph-primitives.d.ts.map +1 -1
- package/dist/typed-shadow-atlas.d.ts +10 -0
- package/dist/typed-shadow-atlas.d.ts.map +1 -0
- package/dist/typed-shadow-passes.d.ts +1 -1
- package/dist/typed-shadow-passes.d.ts.map +1 -1
- package/dist/volume/capability.d.ts +57 -0
- package/dist/volume/capability.d.ts.map +1 -0
- package/dist/volume/component.d.ts +61 -0
- package/dist/volume/component.d.ts.map +1 -0
- package/dist/volume/extract.d.ts +11 -0
- package/dist/volume/extract.d.ts.map +1 -0
- package/dist/volume/inspection.d.ts +38 -0
- package/dist/volume/inspection.d.ts.map +1 -0
- package/dist/volume/passes.d.ts +38 -0
- package/dist/volume/passes.d.ts.map +1 -0
- package/dist/volume/recovery.d.ts +38 -0
- package/dist/volume/recovery.d.ts.map +1 -0
- package/dist/volume/resources.d.ts +57 -0
- package/dist/volume/resources.d.ts.map +1 -0
- package/dist/volume/temporal.d.ts +35 -0
- package/dist/volume/temporal.d.ts.map +1 -0
- package/package.json +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 +7 -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__/device-feature-admission.unit.test.ts +73 -0
- package/src/__tests__/direct-light-snapshot.unit.test.ts +3 -3
- package/src/__tests__/docs-gate-green.unit.test.ts +38 -0
- package/src/__tests__/factory-contract.integration.test.ts +255 -29
- package/src/__tests__/fog-component.unit.test.ts +67 -0
- package/src/__tests__/fog.integration.test.ts +86 -0
- package/src/__tests__/fullscreen-feature-plan.unit.test.ts +37 -0
- package/src/__tests__/gpu-driven-indirect-raster-evidence.ts +10 -9
- package/src/__tests__/gpu-driven-indirect-raster.dawn.test.ts +17 -1
- package/src/__tests__/gpu-driven-production.integration.test.ts +16 -17
- package/src/__tests__/gpu-driven-view-graph.integration.test.ts +12 -4
- 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__/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__/ktx2-basis-gpu-consumer.dawn.test.ts +14 -14
- package/src/__tests__/material-observation.integration.test.ts +101 -0
- package/src/__tests__/mesh-buffer-usage-surface.unit.test.ts +1 -1
- 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__/public-surface.test-d.ts +10 -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-pass-encode.integration.test.ts +101 -0
- package/src/__tests__/reflection-probe-performance.perf.test.ts +60 -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 +23 -3
- package/src/__tests__/render-feature-docs.unit.test.ts +1 -1
- 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 +76 -0
- package/src/__tests__/renderer-frame-transaction.integration.test.ts +1 -1
- 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 +132 -0
- package/src/__tests__/skinned-shadow-caster.test.ts +32 -2
- 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 +232 -0
- package/src/__tests__/standard-clustered-pipeline.unit.test.ts +8 -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 +377 -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 -36
- 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-resolver.unit.test.ts +15 -0
- package/src/__tests__/volume-optics-oracle.unit.test.ts +85 -0
- package/src/__tests__/volumetric-fog-budget-recovery.integration.test.ts +655 -0
- package/src/__tests__/volumetric-fog-component.unit.test.ts +71 -0
- package/src/__tests__/volumetric-fog-composite-stage-readback.dawn.test.ts +376 -0
- package/src/__tests__/volumetric-fog-errors.unit.test.ts +51 -0
- package/src/__tests__/volumetric-fog-inspection.unit.test.ts +77 -0
- package/src/__tests__/volumetric-fog-light-capability.unit.test.ts +19 -0
- package/src/__tests__/volumetric-fog-light-consumers.integration.test.ts +18 -0
- package/src/__tests__/volumetric-fog-light-errors.unit.test.ts +17 -0
- package/src/__tests__/volumetric-fog-light-topology.unit.test.ts +21 -0
- package/src/__tests__/volumetric-fog-light-transaction.integration.test.ts +53 -0
- package/src/__tests__/volumetric-fog-m9-watcher.integration.test.ts +27 -0
- package/src/__tests__/volumetric-fog-point-light-owner.integration.test.ts +44 -0
- package/src/__tests__/volumetric-fog-point-spot-accumulation.integration.test.ts +49 -0
- package/src/__tests__/volumetric-fog-point-spot-contract.unit.test.ts +28 -0
- package/src/__tests__/volumetric-fog-point-spot-lkg.integration.test.ts +65 -0
- package/src/__tests__/volumetric-fog-point-spot-selection.integration.test.ts +49 -0
- package/src/__tests__/volumetric-fog-point-spot-temporal.unit.test.ts +55 -0
- package/src/__tests__/volumetric-fog-projector-contract.unit.test.ts +22 -0
- package/src/__tests__/volumetric-fog-projector-inspection.unit.test.ts +12 -0
- package/src/__tests__/volumetric-fog-projector-surface-volume.integration.test.ts +11 -0
- package/src/__tests__/volumetric-fog-projector-transaction.integration.test.ts +26 -0
- package/src/__tests__/volumetric-fog-recovery.integration.test.ts +47 -0
- package/src/__tests__/volumetric-fog-selected-light-resolution.integration.test.ts +63 -0
- package/src/__tests__/volumetric-fog-spot-closure.integration.test.ts +26 -0
- package/src/__tests__/volumetric-fog-spot-contract.test-d.ts +21 -0
- package/src/__tests__/volumetric-fog-spot-contract.unit.test.ts +27 -0
- package/src/__tests__/volumetric-fog-spot-frame-optics.integration.test.ts +14 -0
- package/src/__tests__/volumetric-fog-spot-optics.integration.test.ts +29 -0
- package/src/__tests__/volumetric-fog-stage-readback.dawn.test.ts +550 -0
- package/src/__tests__/volumetric-fog-temporal-selected-light.unit.test.ts +33 -0
- package/src/__tests__/volumetric-fog-temporal.unit.test.ts +45 -0
- package/src/__tests__/volumetric-fog-topology.unit.test.ts +237 -0
- package/src/__tests__/volumetric-fog-transparent.integration.test.ts +27 -0
- package/src/assembly/device-feature-admission.ts +73 -0
- package/src/assembly/directional-shadow-inspection.ts +122 -0
- package/src/assembly/factory.ts +1093 -246
- package/src/assembly/host-contract.ts +25 -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/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 +2 -0
- package/src/components/light-helpers.ts +85 -7
- package/src/components/reflection-probe.ts +49 -0
- package/src/components/spot-light.ts +22 -3
- package/src/device/gpu-residency.ts +168 -58
- package/src/environment/frame.ts +6 -24
- package/src/environment/lifecycle.ts +12 -0
- package/src/errors/render.ts +405 -143
- package/src/extract/directional-shadow-projection.ts +61 -0
- package/src/extract/environment.ts +57 -0
- package/src/extract/visibility.ts +25 -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 +1 -0
- package/src/gpu-driven/production-raster.ts +1 -3
- package/src/gpu-scene.ts +8 -1
- package/src/gpu-usage.ts +2 -0
- package/src/hdrp-buffers.ts +165 -59
- package/src/ibl/IblPipelineCache.ts +11 -0
- package/src/ibl/kernel-cache.ts +88 -0
- package/src/index.ts +186 -1
- package/src/inspection-types.ts +56 -0
- package/src/instances-derived-bounds.ts +171 -0
- package/src/light-buffer-layout.ts +74 -26
- package/src/mesh-material-bindings.ts +132 -0
- package/src/pbr-pipeline.ts +139 -27
- package/src/pipeline/standard-forward-lane.ts +65 -15
- package/src/pipeline/standard-lighting/errors.ts +6 -0
- package/src/pipeline/standard-lighting/graph.ts +157 -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 +34 -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 +77 -0
- package/src/pipeline/standard-pipeline.ts +141 -192
- package/src/pipeline/standard-post.ts +26 -7
- package/src/pipeline/standard-profile.ts +23 -30
- package/src/pipeline-spec.ts +84 -21
- package/src/point-shadow-inspection.ts +55 -0
- package/src/record/__tests__/temporal-payload.unit.test.ts +42 -1
- package/src/record/__tests__/transparent-group2-selection.unit.test.ts +73 -0
- package/src/record/__tests__/view-ubo-layout.unit.test.ts +40 -0
- package/src/record/frame-lighting.ts +470 -516
- package/src/record/frame-snapshot.ts +76 -28
- package/src/record/frame-targets.ts +23 -2
- package/src/record/frame.ts +1169 -79
- 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 +233 -0
- package/src/record/main-pass-geometry.ts +120 -80
- package/src/record/main-pass-material.ts +101 -11
- package/src/record/main-pass-sprite-draws.ts +54 -25
- package/src/record/main-pass.ts +71 -15
- package/src/record/render-context.ts +77 -0
- package/src/record/shadow-pass.ts +104 -66
- package/src/record/skybox-post-pass.ts +20 -4
- package/src/record/typed-frame-graph.ts +1016 -32
- package/src/record/view-ubo.ts +63 -28
- package/src/reflection/filter.ts +81 -0
- package/src/reflection/gpu-table.ts +44 -0
- package/src/reflection/projection.ts +281 -0
- package/src/render-contract.ts +147 -4
- package/src/render-data.ts +50 -22
- package/src/render-graph-primitives.ts +9 -4
- package/src/render-pipeline.ts +161 -2
- package/src/render-system-extract.ts +886 -103
- package/src/render-system.ts +1174 -66
- package/src/renderer-inspect.ts +66 -0
- package/src/renderer.ts +222 -0
- package/src/scene/render-scene.ts +117 -9
- package/src/shadow-atlas.ts +5 -5
- package/src/ssao-buffers.ts +9 -2
- 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.ts +128 -0
- package/src/transmission/__tests__/standard-transmission.dawn.test.ts +61 -23
- package/src/typed-render-graph-primitives.ts +34 -2
- package/src/typed-shadow-atlas.ts +17 -0
- package/src/typed-shadow-passes.ts +47 -40
- package/src/volume/capability.ts +173 -0
- package/src/volume/component.ts +110 -0
- package/src/volume/extract.ts +21 -0
- package/src/volume/inspection.ts +78 -0
- package/src/volume/passes.ts +686 -0
- package/src/volume/recovery.ts +86 -0
- package/src/volume/resources.ts +236 -0
- package/src/volume/temporal.ts +89 -0
- package/dist/chunk-IPXCABEP.mjs.map +0 -1
- package/dist/chunk-LOSO4CTV.mjs.map +0 -1
- package/dist/chunk-RJRUS55L.mjs.map +0 -1
- package/dist/chunk-YTQ5C7YQ.mjs +0 -584
- package/dist/chunk-YTQ5C7YQ.mjs.map +0 -1
|
@@ -4,11 +4,21 @@
|
|
|
4
4
|
import type { World } from '@forgeax/engine-ecs';
|
|
5
5
|
import { vec3 } from '@forgeax/engine-math';
|
|
6
6
|
import type { ResolvedColorTargetDescriptor } from '@forgeax/engine-render-graph';
|
|
7
|
-
import type {
|
|
7
|
+
import type {
|
|
8
|
+
BindGroup,
|
|
9
|
+
BindGroupLayout,
|
|
10
|
+
Buffer,
|
|
11
|
+
RhiDevice,
|
|
12
|
+
Texture,
|
|
13
|
+
TextureView,
|
|
14
|
+
} from '@forgeax/engine-rhi';
|
|
8
15
|
import type { ClusterBinScratch } from '../cluster-binner';
|
|
16
|
+
import type { DirectionalShadowQuality } from '../components/directional-shadow-filter';
|
|
9
17
|
import type { EnvironmentGeneration } from '../environment/generation';
|
|
10
18
|
import type { EnvironmentLifecycle } from '../environment/lifecycle';
|
|
11
19
|
import type { GpuBuffer } from '../gpu-resource';
|
|
20
|
+
import type { StandardLightingInspection } from '../pipeline/standard-lighting/inspection';
|
|
21
|
+
import type { PointShadowInspection } from '../point-shadow-inspection';
|
|
12
22
|
import type { TemporalGpuState } from '../temporal/gpu';
|
|
13
23
|
import type { TemporalView } from '../temporal/view';
|
|
14
24
|
|
|
@@ -58,12 +68,11 @@ export interface MaterialBgAssemblyCacheEntry {
|
|
|
58
68
|
}
|
|
59
69
|
|
|
60
70
|
import type { CompiledRenderGraph } from '@forgeax/engine-render-graph';
|
|
61
|
-
import type { BindGroup, BindGroupLayout, Buffer, TextureView } from '@forgeax/engine-rhi';
|
|
62
71
|
import type { MaterialRenderState, RenderPipelineAsset } from '@forgeax/engine-types';
|
|
63
72
|
import type { MeshGpuHandles } from '../device/gpu-residency';
|
|
64
73
|
import type { SkylightBindGroupResources } from '../ibl/skylight-bind-group';
|
|
65
74
|
import type { InstanceBufferCacheEntry } from '../instance-buffer-cache';
|
|
66
|
-
import type { CameraSnapshot } from '../render-contract';
|
|
75
|
+
import type { CameraSnapshot, VolumetricFogFrameContext } from '../render-contract';
|
|
67
76
|
import type { RenderPipeline as RenderPipelineDef, RenderPipelineFrame } from '../render-pipeline';
|
|
68
77
|
import type {
|
|
69
78
|
DispatchEntry,
|
|
@@ -73,6 +82,13 @@ import type {
|
|
|
73
82
|
SpotLightSnapshot,
|
|
74
83
|
} from '../render-system-extract';
|
|
75
84
|
import type { ShadowAtlas } from '../shadow-atlas';
|
|
85
|
+
import type {
|
|
86
|
+
TemporalFrame,
|
|
87
|
+
TemporalFrameInput,
|
|
88
|
+
TemporalFrameTransaction,
|
|
89
|
+
} from '../temporal/frame';
|
|
90
|
+
import type { VolumetricFogInspection } from '../volume/inspection';
|
|
91
|
+
import type { VolumeTemporalSignature } from '../volume/temporal';
|
|
76
92
|
|
|
77
93
|
/**
|
|
78
94
|
* feat-20260608-create-app-param-surface-trim / M1 / D-8 (q8 user lock):
|
|
@@ -218,20 +234,6 @@ export function makeZeroCameraFallbackSnapshot(): CameraSnapshot {
|
|
|
218
234
|
};
|
|
219
235
|
}
|
|
220
236
|
|
|
221
|
-
// feat-20260621-merge-directionallightshadow-into-directionallight M3 / m3-t2
|
|
222
|
-
// (D-7): host-clamp the merged DirectionalLight's pcfKernelSize to the nearest
|
|
223
|
-
// valid odd kernel in {1,3,5} before it reaches the View UBO float [128].
|
|
224
|
-
// lighting-directional.wgsl runs a constant-trip-count loop to MAX_PCF_HALF=2
|
|
225
|
-
// (merged 5.3-production-shadow-demos AC-14 variant-free pattern) and clips each
|
|
226
|
-
// iteration to half = (pcfKernelSize-1)/2, so the supported kernel set is
|
|
227
|
-
// {1,3,5} (cap 5). undefined (no shadow fields) defaults to 3.
|
|
228
|
-
export function clampPcfKernelSize(value: number | undefined): number {
|
|
229
|
-
if (value === undefined) return 3;
|
|
230
|
-
if (value <= 1) return 1;
|
|
231
|
-
if (value <= 3) return 3;
|
|
232
|
-
return 5;
|
|
233
|
-
}
|
|
234
|
-
|
|
235
237
|
/**
|
|
236
238
|
* Per-RenderSystem mutable frame state.
|
|
237
239
|
*
|
|
@@ -255,6 +257,12 @@ export interface RenderFrameState {
|
|
|
255
257
|
graphGeneration: number;
|
|
256
258
|
/** Number of successfully submitted TAA frames; failed attempts do not advance it. */
|
|
257
259
|
successfulTemporalFrameIndex?: number;
|
|
260
|
+
/** The renderer-owned accepted-submit temporal fact consumed by consumers. */
|
|
261
|
+
temporalFrame?: TemporalFrame;
|
|
262
|
+
/** The sole transaction that advances temporal history after queue.submit. */
|
|
263
|
+
readonly temporalFrameTransaction: TemporalFrameTransaction;
|
|
264
|
+
/** Staged input is consumed only by the graph submit owner. */
|
|
265
|
+
temporalFrameInput: TemporalFrameInput | undefined;
|
|
258
266
|
/** Optional graph resource lookup used by low-level record helpers and tests. */
|
|
259
267
|
perFrameGraph?: {
|
|
260
268
|
readonly getColorTargetDescriptor: (key: string) => ResolvedColorTargetDescriptor | undefined;
|
|
@@ -274,6 +282,35 @@ export interface RenderFrameState {
|
|
|
274
282
|
/** The sole compiled owner for compute, copy, feature, and raster work. */
|
|
275
283
|
compiledFrameGraph: CompiledRenderGraph<RenderPipelineFrame> | null;
|
|
276
284
|
compiledFrameGraphTopologyKey: string | null;
|
|
285
|
+
/** Monotonic generation of successfully promoted compiled graphs. */
|
|
286
|
+
compiledFrameGraphGeneration: number;
|
|
287
|
+
/**
|
|
288
|
+
* Last-known-good graph held while a volume topology candidate is tested.
|
|
289
|
+
* The candidate is promoted only after its command buffer is submitted;
|
|
290
|
+
* failed encoding/finish/submit restores this graph and its topology key.
|
|
291
|
+
*/
|
|
292
|
+
volumetricFogPreviousGraph: CompiledRenderGraph<RenderPipelineFrame> | null;
|
|
293
|
+
volumetricFogPreviousGraphKey: string | null;
|
|
294
|
+
volumetricFogCandidateGraph: CompiledRenderGraph<RenderPipelineFrame> | null;
|
|
295
|
+
/** Two renderer-owned parameter slots; only the pending slot is writable. */
|
|
296
|
+
volumetricFogParamsBuffers: [Buffer | null, Buffer | null];
|
|
297
|
+
/** Candidate parameter slot, promoted only after queue submission succeeds. */
|
|
298
|
+
volumetricFogParamsPendingSlot: 0 | 1 | null;
|
|
299
|
+
/** Parameter slot consumed by the last accepted volume frame. */
|
|
300
|
+
volumetricFogParamsAcceptedSlot: 0 | 1 | null;
|
|
301
|
+
/** CPU copy of the accepted parameter payload for degraded-frame staging. */
|
|
302
|
+
volumetricFogAcceptedParams: Float32Array | undefined;
|
|
303
|
+
/** CPU copy of the current candidate payload before submit. */
|
|
304
|
+
volumetricFogPendingParams: Float32Array | undefined;
|
|
305
|
+
/** Last candidate/accepted volume projection exposed through inspect(). */
|
|
306
|
+
volumetricFogInspection: VolumetricFogInspection;
|
|
307
|
+
/** Accepted volume POD/context retained while a later candidate degrades. */
|
|
308
|
+
volumetricFogAccepted: import('../render-system-extract').ExtractedVolumetricFog | undefined;
|
|
309
|
+
volumetricFogAcceptedContext: VolumetricFogFrameContext | undefined;
|
|
310
|
+
/** Accepted graph identity and ping-pong slot for temporal volume history. */
|
|
311
|
+
volumetricFogHistoryGraph: CompiledRenderGraph<RenderPipelineFrame> | null;
|
|
312
|
+
volumetricFogHistorySlot: 0 | 1 | null;
|
|
313
|
+
volumetricFogHistorySignature: VolumeTemporalSignature | null;
|
|
277
314
|
readonly retiredCompiledFrameGraphs: Set<CompiledRenderGraph<RenderPipelineFrame>>;
|
|
278
315
|
/** Physical outputs projected by typed graph passes for downstream observers. */
|
|
279
316
|
currentFrameObservationSource: FrameObservationSource | undefined;
|
|
@@ -300,8 +337,24 @@ export interface RenderFrameState {
|
|
|
300
337
|
/** Reusable HDRP cluster output buffers; sized once and grown only if the grid/cap changes. */
|
|
301
338
|
hdrpClusterGridScratch: Uint32Array | null;
|
|
302
339
|
hdrpLightIndexListScratch: Uint32Array | null;
|
|
303
|
-
/**
|
|
304
|
-
|
|
340
|
+
/** Device-owned membership binding; layout and device must match the active pipeline. */
|
|
341
|
+
hdrpClusterMembership: {
|
|
342
|
+
readonly device: RhiDevice;
|
|
343
|
+
readonly layout: BindGroupLayout;
|
|
344
|
+
readonly bindGroup: BindGroup;
|
|
345
|
+
/** Cluster buffer identity keeps this group aligned with grown bundles. */
|
|
346
|
+
readonly clusterGridBuffer: Buffer;
|
|
347
|
+
} | null;
|
|
348
|
+
/**
|
|
349
|
+
* Signature of the Standard lighting declaration accepted by the compiled
|
|
350
|
+
* graph. Payload uploads and membership bindings must match this signature;
|
|
351
|
+
* a failed candidate never changes it.
|
|
352
|
+
*/
|
|
353
|
+
standardLightingGraphSignature: string;
|
|
354
|
+
/** Last prepared Standard transport facts projected for Renderer.inspect(). */
|
|
355
|
+
standardLightingInspection?: StandardLightingInspection | undefined;
|
|
356
|
+
/** Last submitted point-shadow atlas budget projection. */
|
|
357
|
+
pointShadowInspection?: PointShadowInspection | undefined;
|
|
305
358
|
transientInstanceBuffers: InstanceBufferCacheEntry[];
|
|
306
359
|
warnedZeroLightStandard: boolean;
|
|
307
360
|
/**
|
|
@@ -456,20 +509,14 @@ export interface RenderFrameState {
|
|
|
456
509
|
* Install-time config projected into `RenderPipelineTopology.config`.
|
|
457
510
|
*/
|
|
458
511
|
installedPipelineConfig: RenderPipelineAsset['config'];
|
|
459
|
-
/**
|
|
460
|
-
* Whether the configured standard graph resolved to the clustered lane.
|
|
461
|
-
* Capability gating keeps URP forward bindings on WebGL2 fallback even
|
|
462
|
-
* when a clustered profile was requested.
|
|
463
|
-
*/
|
|
464
|
-
isHdrpActive: boolean;
|
|
465
512
|
/**
|
|
466
513
|
* feat-20260608-cluster-lighting M5 / w20 + M6 / w23 + M5 / w22:
|
|
467
|
-
* once-per-frame fire dedup set for
|
|
468
|
-
* (`
|
|
514
|
+
* once-per-frame fire dedup set for Standard per-frame fail-soft errors
|
|
515
|
+
* (`standard-light-budget-exceeded`, `standard-cluster-index-overflow`). Cleared
|
|
469
516
|
* at the end of each frame so the next frame re-fires if the condition
|
|
470
517
|
* persists. Set<string> keyed by RuntimeErrorCode literal.
|
|
471
518
|
*/
|
|
472
|
-
|
|
519
|
+
standardOncePerFrameFired: Set<string>;
|
|
473
520
|
/**
|
|
474
521
|
* feat-20260612-point-light-shadows-urp-hdrp M3 / T-M3-2 (plan-strategy §D-1).
|
|
475
522
|
* Lazily-allocated cube_array shadow atlas owned by the RenderSystem
|
|
@@ -606,6 +653,7 @@ export interface DirectionalShadowCache {
|
|
|
606
653
|
readonly graphTopologyKey: string | null;
|
|
607
654
|
readonly shadowMapSize: number;
|
|
608
655
|
readonly cascadeCount: number;
|
|
656
|
+
readonly directionalShadowQuality: DirectionalShadowQuality;
|
|
609
657
|
readonly lightViewProj: readonly Float32Array[];
|
|
610
658
|
readonly meshResidencyEpoch: number;
|
|
611
659
|
}
|
|
@@ -1,6 +1,8 @@
|
|
|
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';
|
|
5
|
+
import { resolveDirectionalShadowAtlasGrid } from '../typed-shadow-atlas';
|
|
4
6
|
import { configureSurface, type PipelineState, type RenderSystemInternals } from './render-context';
|
|
5
7
|
|
|
6
8
|
export function graphExecutionPhase(passName: string): RenderGraphExecutionPhase {
|
|
@@ -49,6 +51,21 @@ export function graphExecutionPhase(passName: string): RenderGraphExecutionPhase
|
|
|
49
51
|
}
|
|
50
52
|
}
|
|
51
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
|
+
|
|
52
69
|
export function acquireSwapChainTarget(
|
|
53
70
|
internals: RenderSystemInternals,
|
|
54
71
|
pipelineState: PipelineState,
|
|
@@ -111,17 +128,21 @@ export function resolveShadowMapSize(
|
|
|
111
128
|
internals: RenderSystemInternals,
|
|
112
129
|
lights: ExtractedLights,
|
|
113
130
|
): number | undefined {
|
|
131
|
+
if (lights.cascadeCount === undefined) return undefined;
|
|
114
132
|
const requested = lights.shadowMapSize;
|
|
115
133
|
if (!(requested !== undefined && requested > 0)) return requested;
|
|
116
134
|
const cascades = Math.max(1, Math.min(4, Math.round(lights.cascadeCount ?? 1)));
|
|
117
|
-
const
|
|
135
|
+
const atlasGrid = resolveDirectionalShadowAtlasGrid(cascades);
|
|
118
136
|
const maxDimension = internals.device.limits.maxTextureDimension2D;
|
|
119
137
|
if (!(maxDimension > 0)) return Math.floor(requested);
|
|
120
138
|
const depthTextureDimension =
|
|
121
139
|
internals.device.caps?.backendKind === 'wgpu-webgl2'
|
|
122
140
|
? Math.max(1, Math.floor(maxDimension / 2))
|
|
123
141
|
: maxDimension;
|
|
124
|
-
const maxPerTile = Math.max(
|
|
142
|
+
const maxPerTile = Math.max(
|
|
143
|
+
1,
|
|
144
|
+
Math.floor(depthTextureDimension / Math.max(atlasGrid.columns, atlasGrid.rows)),
|
|
145
|
+
);
|
|
125
146
|
return Math.max(1, Math.min(Math.floor(requested), maxPerTile));
|
|
126
147
|
}
|
|
127
148
|
|