@forgeax/engine-render 0.1.28 → 0.1.30
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 +856 -126
- package/dist/assembly/atmosphere-shader-prewarm.d.ts +6 -0
- package/dist/assembly/atmosphere-shader-prewarm.d.ts.map +1 -0
- package/dist/assembly/device-feature-admission.d.ts +4 -3
- package/dist/assembly/device-feature-admission.d.ts.map +1 -1
- package/dist/assembly/dynamic-geometry-host.d.ts +27 -0
- package/dist/assembly/dynamic-geometry-host.d.ts.map +1 -1
- package/dist/assembly/dynamic-geometry-runtime.d.ts +20 -0
- package/dist/assembly/dynamic-geometry-runtime.d.ts.map +1 -0
- package/dist/assembly/factory.d.ts +3 -1
- package/dist/assembly/factory.d.ts.map +1 -1
- package/dist/assembly/gpu-driven-owner.d.ts +10 -0
- package/dist/assembly/gpu-driven-owner.d.ts.map +1 -0
- package/dist/assembly/host-contract.d.ts +14 -0
- package/dist/assembly/host-contract.d.ts.map +1 -1
- package/dist/assembly/material/assembly.d.ts +31 -1
- package/dist/assembly/material/assembly.d.ts.map +1 -1
- package/dist/assembly/material/pipeline-helpers.d.ts +24 -0
- package/dist/assembly/material/pipeline-helpers.d.ts.map +1 -0
- package/dist/assembly/material-shader-policy.d.ts +3 -1
- package/dist/assembly/material-shader-policy.d.ts.map +1 -1
- package/dist/assembly/recovery/device-loss-fanout.d.ts.map +1 -1
- package/dist/assembly/recovery/failure-location.d.ts +12 -0
- package/dist/assembly/recovery/failure-location.d.ts.map +1 -0
- package/dist/assembly/recovery/recovery-attempt.d.ts +1 -6
- package/dist/assembly/recovery/recovery-attempt.d.ts.map +1 -1
- package/dist/assembly/recovery/renderer-recover.d.ts +7 -4
- package/dist/assembly/recovery/renderer-recover.d.ts.map +1 -1
- package/dist/assembly/renderer-facade.d.ts.map +1 -1
- package/dist/assembly/renderer-feature-inspection.d.ts +5 -0
- package/dist/assembly/renderer-feature-inspection.d.ts.map +1 -0
- package/dist/assembly/renderer-frame-transaction.d.ts +19 -0
- package/dist/assembly/renderer-frame-transaction.d.ts.map +1 -1
- package/dist/assembly/renderer-helpers.d.ts +3 -0
- package/dist/assembly/renderer-helpers.d.ts.map +1 -1
- package/dist/assembly/renderer-inspection.d.ts +4 -0
- package/dist/assembly/renderer-inspection.d.ts.map +1 -1
- package/dist/assembly/shader-prewarm-policy.d.ts +7 -1
- package/dist/assembly/shader-prewarm-policy.d.ts.map +1 -1
- package/dist/assembly/skin-palette-owner.d.ts +8 -0
- package/dist/assembly/skin-palette-owner.d.ts.map +1 -0
- package/dist/assembly/ssr-shader-prewarm.d.ts +6 -0
- package/dist/assembly/ssr-shader-prewarm.d.ts.map +1 -0
- package/dist/assembly/webgpu-device-loss.d.ts +15 -0
- package/dist/assembly/webgpu-device-loss.d.ts.map +1 -0
- package/dist/assembly/webgpu-pbr-ready.d.ts +38 -0
- package/dist/assembly/webgpu-pbr-ready.d.ts.map +1 -0
- package/dist/assembly/webgpu-ready-mipmap.d.ts +11 -0
- package/dist/assembly/webgpu-ready-mipmap.d.ts.map +1 -0
- package/dist/assembly/webgpu-ready.d.ts +7 -3
- package/dist/assembly/webgpu-ready.d.ts.map +1 -1
- package/dist/assembly/webgpu-renderer-bootstrap.d.ts +10 -0
- package/dist/assembly/webgpu-renderer-bootstrap.d.ts.map +1 -0
- package/dist/assembly/webgpu-renderer-contract.d.ts +62 -0
- package/dist/assembly/webgpu-renderer-contract.d.ts.map +1 -0
- package/dist/assembly/webgpu-renderer-guards.d.ts +9 -0
- package/dist/assembly/webgpu-renderer-guards.d.ts.map +1 -0
- package/dist/assembly/webgpu-renderer-observation.d.ts +6 -0
- package/dist/assembly/webgpu-renderer-observation.d.ts.map +1 -0
- package/dist/assembly/webgpu-renderer-recovery-failure.d.ts +12 -0
- package/dist/assembly/webgpu-renderer-recovery-failure.d.ts.map +1 -0
- package/dist/assembly/webgpu-renderer.d.ts +7 -141
- package/dist/assembly/webgpu-renderer.d.ts.map +1 -1
- package/dist/assembly/webgpu-vertex-layouts.d.ts +28 -84
- package/dist/assembly/webgpu-vertex-layouts.d.ts.map +1 -1
- package/dist/authoring.mjs +2 -2
- package/dist/capture/scene-projection.d.ts +41 -0
- package/dist/capture/scene-projection.d.ts.map +1 -0
- package/dist/{chunk-J52NMQKR.mjs → chunk-7MQ3XBSP.mjs} +1098 -844
- package/dist/chunk-7MQ3XBSP.mjs.map +1 -0
- package/dist/{chunk-GF523LHF.mjs → chunk-BLXGONR2.mjs} +30 -12
- package/dist/chunk-BLXGONR2.mjs.map +1 -0
- package/dist/{chunk-VSL23LZE.mjs → chunk-C3DDSXYK.mjs} +1188 -463
- package/dist/chunk-C3DDSXYK.mjs.map +1 -0
- package/dist/{chunk-IQMKJLNU.mjs → chunk-FUUO4UND.mjs} +443 -30
- package/dist/chunk-FUUO4UND.mjs.map +1 -0
- package/dist/{chunk-J6KACNOH.mjs → chunk-JRBDO2KB.mjs} +617 -7
- package/dist/chunk-JRBDO2KB.mjs.map +1 -0
- package/dist/{chunk-GE3SDD72.mjs → chunk-MDQJPY3T.mjs} +20 -40
- package/dist/chunk-MDQJPY3T.mjs.map +1 -0
- package/dist/{chunk-MYJ5RPJO.mjs → chunk-NO4WZCAH.mjs} +3 -3
- package/dist/chunk-NO4WZCAH.mjs.map +1 -0
- package/dist/{chunk-RBDBZ5R7.mjs → chunk-PA5DRJNI.mjs} +2 -2
- package/dist/chunk-PA5DRJNI.mjs.map +1 -0
- package/dist/{chunk-MBU4ZVE7.mjs → chunk-PSEQ6QPH.mjs} +4655 -892
- package/dist/chunk-PSEQ6QPH.mjs.map +1 -0
- package/dist/{chunk-JAASCMXA.mjs → chunk-S5UE2T5P.mjs} +289 -41
- package/dist/chunk-S5UE2T5P.mjs.map +1 -0
- package/dist/components/camera.d.ts +62 -2
- package/dist/components/camera.d.ts.map +1 -1
- package/dist/components/directional-light.d.ts +2 -2
- package/dist/components/dynamic-resolution.d.ts +15 -0
- package/dist/components/dynamic-resolution.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/instances.d.ts +6 -20
- package/dist/components/instances.d.ts.map +1 -1
- package/dist/components/light-helpers.d.ts.map +1 -1
- package/dist/components/reflection-probe.d.ts +1 -0
- package/dist/components/reflection-probe.d.ts.map +1 -1
- package/dist/components/scene-instance.d.ts +2 -1
- package/dist/components/scene-instance.d.ts.map +1 -1
- package/dist/components/screen-space-reflection.d.ts +14 -0
- package/dist/components/screen-space-reflection.d.ts.map +1 -0
- package/dist/components/skylight.d.ts +4 -1
- package/dist/components/skylight.d.ts.map +1 -1
- package/dist/construct-renderer.mjs +14809 -7570
- 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 +3 -14
- package/dist/device/gpu-residency.d.ts.map +1 -1
- package/dist/dynamic-geometry.d.ts.map +1 -1
- package/dist/environment/background.d.ts +7 -0
- package/dist/environment/background.d.ts.map +1 -0
- package/dist/environment/ibl.d.ts +11 -0
- package/dist/environment/ibl.d.ts.map +1 -0
- package/dist/environment/storage.d.ts +14 -0
- package/dist/environment/storage.d.ts.map +1 -0
- package/dist/errors/gpu-driven.d.ts +6 -3
- package/dist/errors/gpu-driven.d.ts.map +1 -1
- package/dist/errors/render.d.ts +41 -4
- package/dist/errors/render.d.ts.map +1 -1
- package/dist/extract/camera.d.ts.map +1 -1
- package/dist/extract/contracts.d.ts +7 -0
- package/dist/extract/contracts.d.ts.map +1 -1
- package/dist/extract/gpu-driven.d.ts +50 -3
- package/dist/extract/gpu-driven.d.ts.map +1 -1
- package/dist/features/host.d.ts +23 -1
- package/dist/features/host.d.ts.map +1 -1
- package/dist/features/noise-texture.d.ts +17 -0
- package/dist/features/noise-texture.d.ts.map +1 -0
- package/dist/features/plan.d.ts +83 -2
- package/dist/features/plan.d.ts.map +1 -1
- package/dist/features/prepared-gpu-work.d.ts +37 -4
- package/dist/features/prepared-gpu-work.d.ts.map +1 -1
- package/dist/features/prepared-graphics-store.d.ts.map +1 -1
- package/dist/features/prepared-graphics.d.ts +5 -0
- package/dist/features/prepared-graphics.d.ts.map +1 -1
- package/dist/features/render-graph-compute.d.ts +5 -3
- package/dist/features/render-graph-compute.d.ts.map +1 -1
- package/dist/features/render-graph-contribution.d.ts +11 -3
- package/dist/features/render-graph-contribution.d.ts.map +1 -1
- package/dist/features/render-graph-raster.d.ts +19 -3
- package/dist/features/render-graph-raster.d.ts.map +1 -1
- package/dist/features/types.d.ts +11 -0
- package/dist/features/types.d.ts.map +1 -1
- package/dist/fullscreen-post-process-pass.d.ts +2 -0
- package/dist/fullscreen-post-process-pass.d.ts.map +1 -1
- package/dist/gpu-driven/batch-topology.d.ts +34 -1
- package/dist/gpu-driven/batch-topology.d.ts.map +1 -1
- package/dist/gpu-driven/material-artifacts.d.ts +24 -0
- package/dist/gpu-driven/material-artifacts.d.ts.map +1 -0
- package/dist/gpu-driven/material-bindings.d.ts +7 -0
- package/dist/gpu-driven/material-bindings.d.ts.map +1 -0
- package/dist/gpu-driven/pbr-program.d.ts +10 -0
- package/dist/gpu-driven/pbr-program.d.ts.map +1 -0
- package/dist/gpu-driven/prepared-draw.d.ts +2 -0
- package/dist/gpu-driven/prepared-draw.d.ts.map +1 -1
- package/dist/gpu-driven/production-raster.d.ts +169 -27
- package/dist/gpu-driven/production-raster.d.ts.map +1 -1
- package/dist/gpu-driven/shadow-views.d.ts +126 -0
- package/dist/gpu-driven/shadow-views.d.ts.map +1 -0
- package/dist/gpu-driven/view-gpu.d.ts +18 -2
- package/dist/gpu-driven/view-gpu.d.ts.map +1 -1
- package/dist/gpu-resource.d.ts +5 -2
- package/dist/gpu-resource.d.ts.map +1 -1
- package/dist/gpu-scene-schema.d.ts +2 -8
- package/dist/gpu-scene-schema.d.ts.map +1 -1
- package/dist/gpu-scene.d.ts +14 -0
- package/dist/gpu-scene.d.ts.map +1 -1
- package/dist/gpu-texture-usage.d.ts +1 -0
- package/dist/gpu-texture-usage.d.ts.map +1 -1
- package/dist/hdrp-buffers.d.ts +9 -0
- package/dist/hdrp-buffers.d.ts.map +1 -1
- package/dist/ibl/IblPipelineCache.d.ts +2 -0
- package/dist/ibl/IblPipelineCache.d.ts.map +1 -1
- package/dist/ibl/frame-resources.d.ts +8 -0
- package/dist/ibl/frame-resources.d.ts.map +1 -0
- package/dist/ibl/skylight-bind-group.d.ts +3 -1
- package/dist/ibl/skylight-bind-group.d.ts.map +1 -1
- package/dist/index.d.ts +87 -75
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +10 -8
- package/dist/index.mjs.map +1 -1
- package/dist/inspection-types.d.ts +180 -1
- package/dist/inspection-types.d.ts.map +1 -1
- package/dist/instances-derived-bounds.d.ts +11 -0
- package/dist/instances-derived-bounds.d.ts.map +1 -1
- package/dist/instances.d.ts +89 -44
- package/dist/instances.d.ts.map +1 -1
- package/dist/internal.d.ts +3 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.mjs +117 -9
- package/dist/internal.mjs.map +1 -1
- package/dist/lifecycle.d.ts +2 -1
- package/dist/lifecycle.d.ts.map +1 -1
- package/dist/material-row.d.ts +15 -0
- package/dist/material-row.d.ts.map +1 -0
- package/dist/materials.d.ts +15 -0
- package/dist/materials.d.ts.map +1 -1
- package/dist/pbr-pipeline.d.ts +23 -5
- package/dist/pbr-pipeline.d.ts.map +1 -1
- package/dist/pipeline/render-extent.d.ts +51 -0
- package/dist/pipeline/render-extent.d.ts.map +1 -0
- package/dist/pipeline/standard-build-context.d.ts +7 -0
- package/dist/pipeline/standard-build-context.d.ts.map +1 -0
- package/dist/pipeline/standard-forward-lane.d.ts +3 -2
- package/dist/pipeline/standard-forward-lane.d.ts.map +1 -1
- package/dist/pipeline/standard-output/auto-exposure/capability.d.ts +12 -0
- package/dist/pipeline/standard-output/auto-exposure/capability.d.ts.map +1 -0
- package/dist/pipeline/standard-output/auto-exposure/gpu.d.ts +70 -0
- package/dist/pipeline/standard-output/auto-exposure/gpu.d.ts.map +1 -0
- package/dist/pipeline/standard-output/auto-exposure/graph.d.ts +75 -0
- package/dist/pipeline/standard-output/auto-exposure/graph.d.ts.map +1 -0
- package/dist/pipeline/standard-output/auto-exposure/inspection.d.ts +111 -0
- package/dist/pipeline/standard-output/auto-exposure/inspection.d.ts.map +1 -0
- package/dist/pipeline/standard-output/auto-exposure/oracle.d.ts +16 -0
- package/dist/pipeline/standard-output/auto-exposure/oracle.d.ts.map +1 -0
- package/dist/pipeline/standard-output/auto-exposure/preset.d.ts +14 -0
- package/dist/pipeline/standard-output/auto-exposure/preset.d.ts.map +1 -0
- package/dist/pipeline/standard-output/auto-exposure/state.d.ts +46 -0
- package/dist/pipeline/standard-output/auto-exposure/state.d.ts.map +1 -0
- package/dist/pipeline/standard-output/color-transform.d.ts +27 -0
- package/dist/pipeline/standard-output/color-transform.d.ts.map +1 -0
- package/dist/pipeline/standard-output/graph.d.ts +15 -0
- package/dist/pipeline/standard-output/graph.d.ts.map +1 -0
- package/dist/pipeline/standard-output/lut-admission.d.ts +29 -0
- package/dist/pipeline/standard-output/lut-admission.d.ts.map +1 -0
- package/dist/pipeline/standard-output/lut-gpu.d.ts +48 -0
- package/dist/pipeline/standard-output/lut-gpu.d.ts.map +1 -0
- package/dist/pipeline/standard-output/lut-state.d.ts +68 -0
- package/dist/pipeline/standard-output/lut-state.d.ts.map +1 -0
- package/dist/pipeline/standard-output/resources.d.ts +10 -0
- package/dist/pipeline/standard-output/resources.d.ts.map +1 -0
- package/dist/pipeline/standard-output/types.d.ts +39 -0
- package/dist/pipeline/standard-output/types.d.ts.map +1 -0
- package/dist/pipeline/standard-pipeline.d.ts.map +1 -1
- package/dist/pipeline/standard-post.d.ts +2 -2
- package/dist/pipeline/standard-post.d.ts.map +1 -1
- package/dist/pipeline/standard-profile.d.ts +2 -1
- package/dist/pipeline/standard-profile.d.ts.map +1 -1
- package/dist/pipeline-builder.d.ts +5 -2
- package/dist/pipeline-builder.d.ts.map +1 -1
- package/dist/pipeline-spec-types.d.ts +4 -0
- package/dist/pipeline-spec-types.d.ts.map +1 -1
- package/dist/pipeline-spec.d.ts +1 -9
- package/dist/pipeline-spec.d.ts.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/points-lines/standard-owner.d.ts +1 -1
- package/dist/points-lines/standard-owner.d.ts.map +1 -1
- package/dist/post-process-errors.d.ts +9 -2
- package/dist/post-process-errors.d.ts.map +1 -1
- package/dist/prepare/extended-lighting/resources.d.ts +3 -3
- package/dist/prepare/prepared-graphics-resolver.d.ts +6 -1
- package/dist/prepare/prepared-graphics-resolver.d.ts.map +1 -1
- package/dist/record/dynamic-geometry-consumption.d.ts +15 -0
- package/dist/record/dynamic-geometry-consumption.d.ts.map +1 -0
- package/dist/record/frame-lighting.d.ts +3 -3
- package/dist/record/frame-lighting.d.ts.map +1 -1
- package/dist/record/frame-snapshot.d.ts +109 -13
- 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 +41 -5
- package/dist/record/frame.d.ts.map +1 -1
- package/dist/record/main-pass-geometry.d.ts +13 -9
- package/dist/record/main-pass-geometry.d.ts.map +1 -1
- package/dist/record/main-pass-material.d.ts +43 -3
- package/dist/record/main-pass-material.d.ts.map +1 -1
- package/dist/record/main-pass-sprite-draws.d.ts +2 -10
- package/dist/record/main-pass-sprite-draws.d.ts.map +1 -1
- package/dist/record/main-pass.d.ts +14 -2
- package/dist/record/main-pass.d.ts.map +1 -1
- package/dist/record/mesh-ssbo.d.ts +15 -6
- package/dist/record/mesh-ssbo.d.ts.map +1 -1
- package/dist/record/prepared-material-bindings.d.ts +19 -0
- package/dist/record/prepared-material-bindings.d.ts.map +1 -0
- package/dist/record/recovery-pipeline.d.ts +1 -0
- package/dist/record/recovery-pipeline.d.ts.map +1 -1
- package/dist/record/render-context.d.ts +101 -22
- package/dist/record/render-context.d.ts.map +1 -1
- package/dist/record/shadow-pass.d.ts +62 -7
- package/dist/record/shadow-pass.d.ts.map +1 -1
- package/dist/record/skybox-post-pass.d.ts +1 -1
- package/dist/record/skybox-post-pass.d.ts.map +1 -1
- package/dist/record/typed-frame-graph.d.ts +39 -8
- package/dist/record/typed-frame-graph.d.ts.map +1 -1
- package/dist/record/view-ubo.d.ts +1 -0
- package/dist/record/view-ubo.d.ts.map +1 -1
- package/dist/recovery/render-system-candidate.d.ts +10 -2
- package/dist/recovery/render-system-candidate.d.ts.map +1 -1
- package/dist/recovery/render-system-roots.d.ts +11 -0
- package/dist/recovery/render-system-roots.d.ts.map +1 -0
- package/dist/recovery/types.d.ts +76 -0
- package/dist/recovery/types.d.ts.map +1 -0
- package/dist/reflection/background.d.ts +14 -0
- package/dist/reflection/background.d.ts.map +1 -0
- package/dist/reflection/filter.d.ts.map +1 -1
- package/dist/reflection/projection.d.ts +1 -0
- package/dist/reflection/projection.d.ts.map +1 -1
- package/dist/reflection/record-owner.d.ts +4 -4
- package/dist/reflection/record-owner.d.ts.map +1 -1
- package/dist/render-contract.d.ts +211 -53
- 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 +81 -6
- package/dist/render-pipeline.d.ts.map +1 -1
- package/dist/render-system-extract-tail.d.ts +15 -6
- package/dist/render-system-extract-tail.d.ts.map +1 -1
- package/dist/render-system-extract.d.ts +128 -41
- package/dist/render-system-extract.d.ts.map +1 -1
- package/dist/render-system-projections.d.ts +22 -0
- package/dist/render-system-projections.d.ts.map +1 -0
- package/dist/render-system.d.ts +27 -77
- package/dist/render-system.d.ts.map +1 -1
- package/dist/scene/render-scene-types.d.ts +14 -7
- package/dist/scene/render-scene-types.d.ts.map +1 -1
- package/dist/scene/render-scene.d.ts +31 -11
- package/dist/scene/render-scene.d.ts.map +1 -1
- package/dist/scene/shadow-visibility.d.ts +5 -0
- package/dist/scene/shadow-visibility.d.ts.map +1 -0
- package/dist/ssao-config.d.ts +8 -6
- package/dist/ssao-config.d.ts.map +1 -1
- package/dist/ssr/admission.d.ts +70 -1
- package/dist/ssr/admission.d.ts.map +1 -1
- package/dist/ssr/compose.d.ts +13 -0
- package/dist/ssr/compose.d.ts.map +1 -0
- package/dist/ssr/errors.d.ts +35 -0
- package/dist/ssr/errors.d.ts.map +1 -1
- package/dist/ssr/graph.d.ts +60 -0
- package/dist/ssr/graph.d.ts.map +1 -0
- package/dist/ssr/history.d.ts +97 -0
- package/dist/ssr/history.d.ts.map +1 -0
- package/dist/ssr/hiz.d.ts +37 -0
- package/dist/ssr/hiz.d.ts.map +1 -0
- package/dist/ssr/inspection.d.ts +42 -0
- package/dist/ssr/inspection.d.ts.map +1 -0
- package/dist/ssr/resources.d.ts +58 -0
- package/dist/ssr/resources.d.ts.map +1 -0
- package/dist/ssr/temporal.d.ts +38 -0
- package/dist/ssr/temporal.d.ts.map +1 -0
- package/dist/systems/skin-palette-allocator.d.ts +32 -10
- package/dist/systems/skin-palette-allocator.d.ts.map +1 -1
- package/dist/systems/skin-palette-types.d.ts +15 -0
- package/dist/systems/skin-palette-types.d.ts.map +1 -1
- package/dist/systems/transparent-dispatch.d.ts +9 -0
- package/dist/systems/transparent-dispatch.d.ts.map +1 -0
- package/dist/targets/material-source.d.ts +7 -0
- package/dist/targets/material-source.d.ts.map +1 -1
- package/dist/temporal/frame-coordinator.d.ts +7 -0
- package/dist/temporal/frame-coordinator.d.ts.map +1 -1
- package/dist/temporal/gpu.d.ts +8 -0
- package/dist/temporal/gpu.d.ts.map +1 -1
- package/dist/temporal/history.d.ts.map +1 -1
- package/dist/temporal/index.mjs +6 -6
- package/dist/temporal/inspection.d.ts.map +1 -1
- package/dist/temporal/standard-scene-data.d.ts +4 -2
- package/dist/temporal/standard-scene-data.d.ts.map +1 -1
- package/dist/temporal/target-coverage-attachment.d.ts +15 -0
- package/dist/temporal/target-coverage-attachment.d.ts.map +1 -0
- package/dist/temporal/temporal-view.d.ts +6 -0
- package/dist/temporal/temporal-view.d.ts.map +1 -1
- package/dist/temporal/view.d.ts +6 -0
- package/dist/temporal/view.d.ts.map +1 -1
- package/dist/typed-render-graph-primitives.d.ts +41 -1
- package/dist/typed-render-graph-primitives.d.ts.map +1 -1
- package/dist/typed-shadow-passes.d.ts +3 -1
- package/dist/typed-shadow-passes.d.ts.map +1 -1
- package/dist/volume/component.d.ts +1 -0
- package/dist/volume/component.d.ts.map +1 -1
- package/dist/volume/temporal.d.ts +6 -0
- package/dist/volume/temporal.d.ts.map +1 -1
- package/package.json +21 -20
- package/src/__tests__/auto-exposure-gpu-evidence.ts +291 -0
- package/src/__tests__/auto-exposure-inspection.unit.test.ts +80 -0
- package/src/__tests__/auto-exposure-transaction.integration.test.ts +99 -0
- package/src/__tests__/auto-exposure.browser.test.ts +33 -0
- package/src/__tests__/auto-exposure.dawn.test.ts +33 -0
- package/src/__tests__/capture-scene-projection.unit.test.ts +24 -0
- package/src/__tests__/detached-inspection.integration.test.ts +5 -0
- package/src/__tests__/device-feature-admission.unit.test.ts +15 -24
- package/src/__tests__/device-loss-fanout.unit.test.ts +43 -0
- package/src/__tests__/device-scope-lifecycle.unit.test.ts +18 -0
- package/src/__tests__/device-scope-stale-matrix.unit.test.ts +18 -0
- package/src/__tests__/docs-gate-green.unit.test.ts +3 -3
- package/src/__tests__/dynamic-geometry-batch.unit.test.ts +157 -0
- package/src/__tests__/dynamic-geometry.unit.test.ts +36 -0
- package/src/__tests__/dynamic-resolution-plugin.integration.test.ts +81 -0
- package/src/__tests__/factory-contract.integration.test.ts +231 -9
- package/src/__tests__/fallback-row-stride-surface.unit.test.ts +19 -0
- package/src/__tests__/feature-depth-input.dawn.test.ts +121 -0
- package/src/__tests__/feature-noise.unit.test.ts +38 -0
- package/src/__tests__/fixtures/taa-resolve-pinned-baseline.wgsl +301 -0
- package/src/__tests__/frame-camera-selection.unit.test.ts +131 -0
- package/src/__tests__/frame-observation.contract.test.ts +21 -0
- package/src/__tests__/frame-plan-contract.unit.test.ts +24 -0
- package/src/__tests__/frame-targets.unit.test.ts +24 -0
- package/src/__tests__/fullscreen-feature-plan.unit.test.ts +3 -0
- package/src/__tests__/gpu-driven-baseline.characterization.test.ts +79 -0
- package/src/__tests__/gpu-driven-batch-topology-pbr.unit.test.ts +307 -7
- package/src/__tests__/gpu-driven-indirect-raster-evidence.ts +122 -142
- package/src/__tests__/gpu-driven-indirect-raster.browser.test.ts +10 -1
- package/src/__tests__/gpu-driven-lod-cache.unit.test.ts +261 -0
- package/src/__tests__/gpu-driven-mesh-world-identity.unit.test.ts +346 -0
- package/src/__tests__/gpu-driven-pbr.dawn.test.ts +1422 -0
- package/src/__tests__/gpu-driven-pbr.integration.test.ts +21 -0
- package/src/__tests__/gpu-driven-production-fixture.ts +96 -0
- package/src/__tests__/gpu-driven-production.integration.test.ts +1076 -106
- package/src/__tests__/gpu-driven-scaling.unit.test.ts +1 -3
- package/src/__tests__/gpu-driven-shadow-views.browser.test.ts +63 -0
- package/src/__tests__/gpu-driven-shadow-views.dawn.test.ts +294 -0
- package/src/__tests__/gpu-driven-shadow-views.integration.test.ts +97 -0
- package/src/__tests__/gpu-driven-shadow-views.unit.test.ts +168 -0
- package/src/__tests__/gpu-driven-skin-contract.test-d.ts +11 -0
- package/src/__tests__/gpu-driven-view-gpu-evidence.ts +72 -20
- package/src/__tests__/gpu-driven-view-graph.integration.test.ts +30 -9
- package/src/__tests__/gpu-driven-view.unit.test.ts +160 -52
- package/src/__tests__/gpu-pass-timing-browser-runner.ts +15 -0
- package/src/__tests__/gpu-pass-timing.browser.test.ts +20 -2
- package/src/__tests__/gpu-resource-scope.unit.test.ts +71 -0
- package/src/__tests__/gpu-resource-store-stride.unit.test.ts +42 -0
- package/src/__tests__/gpu-scene-render-graph-gpu.ts +19 -5
- package/src/__tests__/gpu-scene.dawn.test.ts +40 -13
- package/src/__tests__/gpu-scene.unit.test.ts +613 -33
- package/src/__tests__/instances-culling.integration.test.ts +36 -10
- package/src/__tests__/instances-derived-bounds.unit.test.ts +54 -0
- package/src/__tests__/instances-store.unit.test.ts +242 -39
- package/src/__tests__/ktx2-basis-gpu-consumer.dawn.test.ts +6 -0
- package/src/__tests__/lighting-scene-roundtrip.integration.test.ts +13 -16
- package/src/__tests__/lut-lkg-transaction.integration.test.ts +122 -0
- package/src/__tests__/material-contract-inventory.unit.test.ts +5 -6
- package/src/__tests__/material-dispatch-shader-id.unit.test.ts +51 -0
- package/src/__tests__/material-lane-selection.unit.test.ts +60 -0
- package/src/__tests__/material-numeric-upload.unit.test.ts +53 -0
- package/src/__tests__/material-texture-handles.unit.test.ts +18 -0
- package/src/__tests__/material-texture-source.unit.test.ts +87 -0
- package/src/__tests__/materials-authoring-validation.unit.test.ts +41 -0
- package/src/__tests__/materials-standard-contract.unit.test.ts +57 -3
- package/src/__tests__/mesh-buffer-usage-surface.unit.test.ts +4 -0
- package/src/__tests__/mesh-submission-lifetime.unit.test.ts +8 -0
- package/src/__tests__/morph-neutral-admission.unit.test.ts +19 -0
- package/src/__tests__/normal-fallback.dawn.test.ts +122 -0
- package/src/__tests__/particle-material-input-layout.unit.test.ts +104 -0
- package/src/__tests__/physical-clearcoat.integration.test.ts +42 -3
- package/src/__tests__/pipeline-texture-specialization.unit.test.ts +138 -0
- package/src/__tests__/point-shadow-inspection.unit.test.ts +2 -0
- package/src/__tests__/post-process-error-policy-owner.unit.test.ts +6 -5
- package/src/__tests__/prepared-gpu-driven-pbr-contract.test-d.ts +31 -0
- package/src/__tests__/prepared-gpu-driven-pbr-contract.unit.test.ts +39 -0
- package/src/__tests__/prepared-gpu-driven-pbr.integration.test.ts +251 -9
- package/src/__tests__/prepared-graphics-capability.unit.test.ts +21 -0
- package/src/__tests__/prepared-graphics-pipeline-warmup.unit.test.ts +6 -2
- package/src/__tests__/profiler-phase-catalog.test.ts +5 -0
- package/src/__tests__/public-surface.test-d.ts +3 -0
- package/src/__tests__/recovery-candidate-prepare.contract.test.ts +30 -12
- package/src/__tests__/reflection-fallback-async-publication.unit.test.ts +171 -0
- package/src/__tests__/reflection-probe-authoring.unit.test.ts +12 -10
- package/src/__tests__/reflection-probe-box.dawn.test.ts +71 -0
- package/src/__tests__/reflection-probe-filter.unit.test.ts +9 -0
- package/src/__tests__/reflection-probe-orientation.dawn.test.ts +294 -0
- package/src/__tests__/reflection-probe-record-owner.characterization.unit.test.ts +5 -14
- package/src/__tests__/reflection-probe-updates.unit.test.ts +129 -0
- package/src/__tests__/render-error-code-owner.test-d.ts +7 -0
- package/src/__tests__/render-error-detail-ssot.test-d.ts +27 -1
- package/src/__tests__/render-error-exhaustive.test-d.ts +15 -0
- package/src/__tests__/render-extent.unit.test.ts +63 -0
- package/src/__tests__/render-feature-gpu-work.integration.test.ts +285 -2
- package/src/__tests__/render-feature-plan.unit.test.ts +245 -0
- package/src/__tests__/render-feature-shadow-order.unit.test.ts +228 -0
- package/src/__tests__/render-feature-zero-work.unit.test.ts +35 -1
- package/src/__tests__/render-graph-fallback.integration.test.ts +2 -2
- package/src/__tests__/render-owner-cohesion.unit.test.ts +55 -0
- package/src/__tests__/render-scene-mixed-updates.integration.test.ts +426 -0
- package/src/__tests__/render-scene-projection.unit.test.ts +915 -23
- package/src/__tests__/render-scene-resource-updates.integration.test.ts +214 -0
- package/src/__tests__/render-scene-skin-lifecycle.integration.test.ts +173 -0
- package/src/__tests__/render-scene-temporal-retry.unit.test.ts +133 -0
- package/src/__tests__/render-target-material-source.test-d.ts +27 -3
- package/src/__tests__/renderer-factory-material-contract.unit.test.ts +233 -9
- package/src/__tests__/renderer-frame-transaction.integration.test.ts +923 -5
- package/src/__tests__/shader-manifest-fixture.ts +45 -0
- package/src/__tests__/skin-motion-regression.unit.test.ts +0 -33
- package/src/__tests__/skin-palette-persistent.integration.test.ts +28 -0
- package/src/__tests__/skin-palette-persistent.unit.test.ts +247 -0
- package/src/__tests__/skinned-shadow-caster.test.ts +125 -14
- package/src/__tests__/specular-environment-scale.dawn.test.ts +158 -0
- package/src/__tests__/ssao-config.unit.test.ts +7 -0
- package/src/__tests__/ssao-surface.dawn.test.ts +252 -0
- package/src/__tests__/ssr-admission-matrix.integration.test.ts +7 -1
- package/src/__tests__/ssr-confidence-compose.unit.test.ts +84 -0
- package/src/__tests__/ssr-coordinate-oracle.unit.test.ts +28 -0
- package/src/__tests__/ssr-cube-silhouette.dawn.test.ts +270 -0
- package/src/__tests__/ssr-format-probe-gating.integration.test.ts +82 -0
- package/src/__tests__/ssr-gpu-dispatch.browser.test.ts +99 -0
- package/src/__tests__/ssr-gpu-dispatch.dawn.test.ts +116 -0
- package/src/__tests__/ssr-gpu-dispatch.ts +951 -0
- package/src/__tests__/ssr-graph-topology.unit.test.ts +104 -0
- package/src/__tests__/ssr-history-filter.dawn.test.ts +198 -0
- package/src/__tests__/ssr-hit-color.dawn.test.ts +273 -0
- package/src/__tests__/ssr-hiz-odd-reduction.dawn.test.ts +569 -0
- package/src/__tests__/ssr-hiz-rescue.dawn.test.ts +279 -0
- package/src/__tests__/ssr-hiz.browser.test.ts +150 -0
- package/src/__tests__/ssr-hiz.dawn.test.ts +150 -0
- package/src/__tests__/ssr-hiz.unit.test.ts +56 -0
- package/src/__tests__/ssr-inspection.unit.test.ts +105 -0
- package/src/__tests__/ssr-memory-budget.unit.test.ts +45 -0
- package/src/__tests__/ssr-performance-sequence-aggregation.unit.test.ts +15 -0
- package/src/__tests__/ssr-public-surface.test-d.ts +37 -0
- package/src/__tests__/ssr-receiver-coverage.dawn.test.ts +387 -0
- package/src/__tests__/ssr-reflection-mip-reducer.dawn.test.ts +309 -0
- package/src/__tests__/ssr-reprojection-probe.ts +90 -0
- package/src/__tests__/ssr-roughness-mip.dawn.test.ts +163 -0
- package/src/__tests__/ssr-shader-prewarm.unit.test.ts +59 -0
- package/src/__tests__/ssr-spatial.integration.test.ts +141 -0
- package/src/__tests__/ssr-stable-lattice.dawn.test.ts +475 -0
- package/src/__tests__/ssr-temporal-history.unit.test.ts +202 -0
- package/src/__tests__/ssr-texel-crossing.dawn.test.ts +448 -0
- package/src/__tests__/ssr-zero-work.integration.test.ts +87 -0
- package/src/__tests__/standard-cluster-variant-resolution.unit.test.ts +84 -12
- package/src/__tests__/standard-clustered-pipeline.unit.test.ts +29 -0
- package/src/__tests__/standard-output-chain-contract.unit.test.ts +99 -0
- package/src/__tests__/standard-output-chain.integration.test.ts +73 -0
- package/src/__tests__/standard-output-gpu-evidence.ts +205 -0
- package/src/__tests__/standard-output.browser.test.ts +15 -0
- package/src/__tests__/standard-output.dawn.test.ts +15 -0
- package/src/__tests__/standard-pbr-artifact-assembly.unit.test.ts +275 -0
- package/src/__tests__/standard-pipeline.integration.test.ts +320 -3
- package/src/__tests__/standard-profile-oracle.unit.test.ts +49 -0
- package/src/__tests__/standard-surface-lighting.unit.test.ts +41 -0
- package/src/__tests__/standard-texture-specialization.dawn.test.ts +141 -0
- package/src/__tests__/surface-adjacent-regressions.integration.test.ts +6 -3
- package/src/__tests__/taa-coverage-edge.dawn.test.ts +199 -0
- package/src/__tests__/taa-history-clipping.dawn.test.ts +328 -0
- package/src/__tests__/taa-neighborhood-equivalence.dawn.test.ts +782 -0
- package/src/__tests__/taa-stability-feedback.browser.test.ts +23 -0
- package/src/__tests__/taa-stability-feedback.dawn.test.ts +68 -0
- package/src/__tests__/taa-stability-feedback.ts +342 -0
- package/src/__tests__/temporal-history-lifecycle.unit.test.ts +49 -7
- package/src/__tests__/temporal-reset-matrix.unit.test.ts +9 -0
- package/src/__tests__/temporal-transaction.integration.test.ts +28 -0
- package/src/__tests__/temporal-view.unit.test.ts +17 -0
- package/src/__tests__/texture-usage-surface.unit.test.ts +4 -2
- package/src/__tests__/transmission-prewarm.unit.test.ts +57 -0
- package/src/__tests__/typed-pipeline-topology.unit.test.ts +109 -4
- package/src/__tests__/typed-scene-pass-material-cache.integration.test.ts +126 -0
- package/src/__tests__/vertex-layouts-ssot.unit.test.ts +47 -0
- package/src/__tests__/visibility-extract.perf.test.ts +20 -8
- package/src/__tests__/visibility-instances.integration.test.ts +19 -7
- package/src/__tests__/visibility-producer-matrix.integration.test.ts +20 -9
- package/src/__tests__/volumetric-fog-stage-readback.dawn.test.ts +62 -13
- package/src/__tests__/volumetric-fog-topology.unit.test.ts +7 -7
- package/src/assembly/atmosphere-shader-prewarm.ts +39 -0
- package/src/assembly/device-feature-admission.ts +9 -4
- package/src/assembly/dynamic-geometry-host.ts +284 -163
- package/src/assembly/dynamic-geometry-runtime.ts +71 -0
- package/src/assembly/factory.ts +4 -0
- package/src/assembly/gpu-driven-owner.ts +29 -0
- package/src/assembly/host-contract.ts +19 -0
- package/src/assembly/material/assembly.ts +383 -1
- package/src/assembly/material/pipeline-helpers.ts +100 -0
- package/src/assembly/material-shader-policy.ts +110 -46
- package/src/assembly/recovery/device-loss-fanout.ts +5 -0
- package/src/assembly/recovery/failure-location.ts +62 -0
- package/src/assembly/recovery/recovery-attempt.ts +2 -29
- package/src/assembly/recovery/renderer-recover.ts +16 -17
- package/src/assembly/renderer-facade.ts +34 -1
- package/src/assembly/renderer-feature-inspection.ts +13 -0
- package/src/assembly/renderer-frame-transaction.ts +63 -0
- package/src/assembly/renderer-helpers.ts +26 -0
- package/src/assembly/renderer-inspection.ts +6 -0
- package/src/assembly/shader-prewarm-policy.ts +46 -1
- package/src/assembly/skin-palette-owner.ts +21 -0
- package/src/assembly/ssr-shader-prewarm.ts +41 -0
- package/src/assembly/webgpu-device-loss.ts +75 -0
- package/src/assembly/webgpu-pbr-ready.ts +232 -0
- package/src/assembly/webgpu-ready-mipmap.ts +26 -0
- package/src/assembly/webgpu-ready.ts +161 -131
- package/src/assembly/webgpu-renderer-bootstrap.ts +85 -0
- package/src/assembly/webgpu-renderer-contract.ts +69 -0
- package/src/assembly/webgpu-renderer-guards.ts +32 -0
- package/src/assembly/webgpu-renderer-observation.ts +43 -0
- package/src/assembly/webgpu-renderer-recovery-failure.ts +62 -0
- package/src/assembly/webgpu-renderer.ts +744 -730
- package/src/assembly/webgpu-vertex-layouts.ts +233 -87
- package/src/capture/scene-projection.ts +37 -0
- package/src/components/__tests__/camera-exposure.contract.unit.test.ts +153 -0
- package/src/components/__tests__/dynamic-resolution-schema.unit.test.ts +65 -0
- package/src/components/__tests__/light-radius.integration.test.ts +59 -0
- package/src/components/camera.ts +287 -7
- package/src/components/directional-light.ts +3 -3
- package/src/components/dynamic-resolution.ts +67 -0
- package/src/components/index.ts +2 -0
- package/src/components/instances.ts +45 -18
- package/src/components/light-helpers.ts +6 -1
- package/src/components/reflection-probe.ts +1 -0
- package/src/components/scene-instance.ts +2 -1
- package/src/components/screen-space-reflection.ts +21 -0
- package/src/components/skylight.ts +4 -1
- package/src/components/sprite-animation.ts +2 -2
- package/src/components/sprite-instances.ts +1 -1
- package/src/device/device-scope.ts +13 -7
- package/src/device/gpu-residency.ts +45 -42
- package/src/dynamic-geometry.ts +13 -8
- package/src/environment/background.ts +281 -0
- package/src/environment/ibl.ts +211 -0
- package/src/environment/storage.ts +63 -0
- package/src/errors/gpu-driven.ts +49 -8
- package/src/errors/render.ts +91 -3
- package/src/extract/camera.ts +37 -1
- package/src/extract/contracts.ts +10 -0
- package/src/extract/gpu-driven.ts +240 -10
- package/src/features/host.ts +237 -19
- package/src/features/noise-texture.ts +91 -0
- package/src/features/plan.ts +553 -24
- package/src/features/prepared-gpu-work.ts +631 -49
- package/src/features/prepared-graphics-store.ts +31 -0
- package/src/features/prepared-graphics.ts +5 -0
- package/src/features/render-graph-compute.ts +41 -8
- package/src/features/render-graph-contribution.ts +141 -3
- package/src/features/render-graph-raster.ts +143 -30
- package/src/features/types.ts +11 -0
- package/src/fullscreen-post-process-pass.ts +3 -0
- package/src/gpu-driven/batch-topology.ts +452 -108
- package/src/gpu-driven/material-artifacts.ts +179 -0
- package/src/gpu-driven/material-bindings.ts +41 -0
- package/src/gpu-driven/pbr-program.ts +31 -0
- package/src/gpu-driven/prepared-draw.ts +42 -6
- package/src/gpu-driven/production-raster.ts +2806 -716
- package/src/gpu-driven/shadow-views.ts +539 -0
- package/src/gpu-driven/view-gpu.ts +188 -41
- package/src/gpu-resource.ts +21 -2
- package/src/gpu-scene-schema.ts +61 -11
- package/src/gpu-scene.ts +197 -99
- package/src/gpu-texture-usage.ts +1 -0
- package/src/hdrp-buffers.ts +141 -36
- package/src/ibl/IblPipelineCache.ts +5 -0
- package/src/ibl/frame-resources.ts +38 -0
- package/src/ibl/skylight-bind-group.ts +32 -21
- package/src/index.ts +194 -75
- package/src/inspection-types.ts +207 -1
- package/src/instances-derived-bounds.ts +258 -34
- package/src/instances.ts +459 -150
- package/src/internal.ts +22 -0
- package/src/lifecycle.ts +2 -0
- package/src/material-row.ts +194 -0
- package/src/materials.ts +44 -8
- package/src/pbr-pipeline.ts +172 -19
- package/src/pipeline/render-extent.ts +111 -0
- package/src/pipeline/standard-build-context.ts +7 -0
- package/src/pipeline/standard-forward-lane.ts +74 -29
- package/src/pipeline/standard-output/__tests__/lut-admission.unit.test.ts +103 -0
- package/src/pipeline/standard-output/auto-exposure/__tests__/capability.unit.test.ts +40 -0
- package/src/pipeline/standard-output/auto-exposure/__tests__/gpu.contract.unit.test.ts +125 -0
- package/src/pipeline/standard-output/auto-exposure/__tests__/graph.contract.unit.test.ts +94 -0
- package/src/pipeline/standard-output/auto-exposure/__tests__/oracle.test.ts +108 -0
- package/src/pipeline/standard-output/auto-exposure/__tests__/preset.test.ts +26 -0
- package/src/pipeline/standard-output/auto-exposure/capability.ts +38 -0
- package/src/pipeline/standard-output/auto-exposure/gpu.ts +567 -0
- package/src/pipeline/standard-output/auto-exposure/graph.ts +221 -0
- package/src/pipeline/standard-output/auto-exposure/inspection.ts +231 -0
- package/src/pipeline/standard-output/auto-exposure/oracle.ts +291 -0
- package/src/pipeline/standard-output/auto-exposure/preset.ts +28 -0
- package/src/pipeline/standard-output/auto-exposure/state.ts +156 -0
- package/src/pipeline/standard-output/color-transform.ts +124 -0
- package/src/pipeline/standard-output/graph.ts +139 -0
- package/src/pipeline/standard-output/lut-admission.ts +121 -0
- package/src/pipeline/standard-output/lut-gpu.ts +399 -0
- package/src/pipeline/standard-output/lut-state.ts +176 -0
- package/src/pipeline/standard-output/resources.ts +121 -0
- package/src/pipeline/standard-output/types.ts +58 -0
- package/src/pipeline/standard-pipeline.ts +232 -70
- package/src/pipeline/standard-post.ts +190 -27
- package/src/pipeline/standard-profile.ts +2 -1
- package/src/pipeline-builder.ts +28 -9
- package/src/pipeline-spec-types.ts +4 -0
- package/src/pipeline-spec.ts +37 -29
- package/src/plugin.ts +4 -0
- package/src/points-lines/standard-owner.ts +6 -14
- package/src/post-process-errors.ts +26 -18
- package/src/prepare/__tests__/extended-lighting-capability.unit.test.ts +2 -2
- package/src/prepare/extended-lighting/resources.ts +3 -3
- package/src/prepare/prepared-graphics-resolver.ts +9 -2
- package/src/record/__tests__/main-pass-geometry.unit.test.ts +68 -0
- package/src/record/__tests__/material-bg-cache.unit.test.ts +45 -0
- package/src/record/__tests__/material-slot-plan.unit.test.ts +57 -0
- package/src/record/__tests__/mesh-ssbo.unit.test.ts +40 -1
- package/src/record/__tests__/recovery-pipeline.unit.test.ts +20 -1
- package/src/record/__tests__/sprite-material-abi.unit.test.ts +41 -6
- package/src/record/__tests__/temporal-payload.unit.test.ts +2 -0
- package/src/record/__tests__/typed-frame-graph-plan.unit.test.ts +45 -0
- package/src/record/__tests__/view-ubo-layout.unit.test.ts +5 -0
- package/src/record/dynamic-geometry-consumption.ts +59 -0
- package/src/record/frame-lighting.ts +15 -12
- package/src/record/frame-snapshot.ts +146 -34
- package/src/record/frame-targets.ts +9 -0
- package/src/record/frame.ts +838 -170
- package/src/record/main-pass-geometry.ts +209 -103
- package/src/record/main-pass-material.ts +157 -40
- package/src/record/main-pass-sprite-draws.ts +16 -107
- package/src/record/main-pass.ts +141 -12
- package/src/record/material-uniforms.ts +1 -1
- package/src/record/mesh-ssbo.ts +59 -15
- package/src/record/prepared-material-bindings.ts +238 -0
- package/src/record/recovery-pipeline.ts +69 -90
- package/src/record/render-context.ts +123 -24
- package/src/record/shadow-pass.ts +1389 -230
- package/src/record/skybox-post-pass.ts +14 -3
- package/src/record/typed-frame-graph.ts +1064 -47
- package/src/record/view-ubo.ts +12 -1
- package/src/recovery/render-system-candidate.ts +135 -68
- package/src/recovery/render-system-roots.ts +113 -0
- package/src/recovery/types.ts +77 -0
- package/src/reflection/background.ts +151 -0
- package/src/reflection/filter.ts +3 -0
- package/src/reflection/projection.ts +16 -6
- package/src/reflection/record-owner.ts +308 -140
- package/src/render-contract.ts +237 -49
- package/src/render-graph-primitives.ts +34 -5
- package/src/render-pipeline.ts +90 -2
- package/src/render-system-extract-tail.ts +431 -162
- package/src/render-system-extract.ts +478 -119
- package/src/render-system-projections.ts +241 -0
- package/src/render-system.ts +715 -828
- package/src/scene/render-scene-types.ts +13 -4
- package/src/scene/render-scene.ts +577 -355
- package/src/scene/shadow-visibility.ts +21 -0
- package/src/ssao-config.ts +25 -8
- package/src/ssr/admission.ts +380 -14
- package/src/ssr/compose.ts +144 -0
- package/src/ssr/errors.ts +48 -0
- package/src/ssr/graph.ts +797 -0
- package/src/ssr/history.ts +436 -0
- package/src/ssr/hiz.ts +124 -0
- package/src/ssr/inspection.ts +124 -0
- package/src/ssr/resources.ts +202 -0
- package/src/ssr/temporal.ts +164 -0
- package/src/systems/skin-palette-allocator.ts +495 -148
- package/src/systems/skin-palette-types.ts +17 -0
- package/src/systems/transparent-dispatch.ts +90 -0
- package/src/targets/material-source.ts +34 -0
- package/src/temporal/coverage.ts +1 -1
- package/src/temporal/frame-coordinator.ts +23 -2
- package/src/temporal/gpu.ts +79 -12
- package/src/temporal/history.ts +3 -1
- package/src/temporal/inspection.ts +2 -1
- package/src/temporal/standard-scene-data.ts +10 -2
- package/src/temporal/target-coverage-attachment.ts +72 -0
- package/src/temporal/temporal-view.ts +11 -2
- package/src/temporal/view.ts +12 -2
- package/src/transmission/__tests__/standard-transmission.dawn.test.ts +219 -139
- package/src/typed-render-graph-primitives.ts +304 -74
- package/src/typed-shadow-passes.ts +122 -12
- package/src/volume/component.ts +1 -0
- package/src/volume/passes.ts +3 -3
- package/src/volume/temporal.ts +10 -0
- package/dist/chunk-GE3SDD72.mjs.map +0 -1
- package/dist/chunk-GF523LHF.mjs.map +0 -1
- package/dist/chunk-IQMKJLNU.mjs.map +0 -1
- package/dist/chunk-J52NMQKR.mjs.map +0 -1
- package/dist/chunk-J6KACNOH.mjs.map +0 -1
- package/dist/chunk-JAASCMXA.mjs.map +0 -1
- package/dist/chunk-MBU4ZVE7.mjs.map +0 -1
- package/dist/chunk-MYJ5RPJO.mjs.map +0 -1
- package/dist/chunk-RBDBZ5R7.mjs.map +0 -1
- package/dist/chunk-VSL23LZE.mjs.map +0 -1
- package/src/__tests__/instances-world-ownership.integration.test.ts +0 -62
- package/src/scene/__tests__/changed-block-summary.candidate.test.ts +0 -36
|
@@ -6,13 +6,20 @@ import type {
|
|
|
6
6
|
RenderGraphError,
|
|
7
7
|
ResolveContext,
|
|
8
8
|
} from '@forgeax/engine-render-graph';
|
|
9
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
type Buffer,
|
|
11
|
+
RhiError,
|
|
12
|
+
type Texture,
|
|
13
|
+
type TextureFormat,
|
|
14
|
+
type TextureView,
|
|
15
|
+
} from '@forgeax/engine-rhi';
|
|
10
16
|
import { ok, type PassKind, type PassSelector, type Result } from '@forgeax/engine-types';
|
|
11
17
|
import {
|
|
12
18
|
GPU_TEXTURE_USAGE_COPY_SRC,
|
|
13
19
|
GPU_TEXTURE_USAGE_RENDER_ATTACHMENT,
|
|
14
20
|
GPU_TEXTURE_USAGE_TEXTURE_BINDING,
|
|
15
21
|
} from './gpu-texture-usage';
|
|
22
|
+
import { GPU_BUFFER_USAGE_COPY_DST, GPU_BUFFER_USAGE_MAP_READ } from './gpu-usage';
|
|
16
23
|
import { buildPerFrameBindGroups } from './record/frame-lighting';
|
|
17
24
|
import { encodeMainPass } from './record/main-pass';
|
|
18
25
|
import type {
|
|
@@ -88,6 +95,136 @@ function resolvedDepthView(
|
|
|
88
95
|
return view.value;
|
|
89
96
|
}
|
|
90
97
|
|
|
98
|
+
export type TypedFrameObservationDomain = 'linear-hdr' | 'linear-ldr' | 'final-srgb';
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* One graph-owned copy destination for a receipt-bound color-domain capture.
|
|
102
|
+
* The buffer is created by the same encoder transaction as the source copy;
|
|
103
|
+
* callers map it only after the matching receipt fence resolves.
|
|
104
|
+
*/
|
|
105
|
+
export interface TypedFrameObservationCapture {
|
|
106
|
+
readonly domain: TypedFrameObservationDomain;
|
|
107
|
+
/** Native source format is required so consumers can decode BGRA surfaces truthfully. */
|
|
108
|
+
readonly format: TextureFormat;
|
|
109
|
+
readonly device: import('@forgeax/engine-rhi').RhiDevice;
|
|
110
|
+
readonly texture: Texture;
|
|
111
|
+
readonly buffer: Buffer;
|
|
112
|
+
readonly frameNumber: number;
|
|
113
|
+
readonly deviceGeneration: number;
|
|
114
|
+
readonly graphGeneration: number;
|
|
115
|
+
readonly backendId: string;
|
|
116
|
+
readonly width: number;
|
|
117
|
+
readonly height: number;
|
|
118
|
+
readonly bytesPerRow: number;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
function observationBytesPerPixel(format: TextureFormat): number {
|
|
122
|
+
return format === 'rgba16float' ? 8 : 4;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
function observationBytesPerRow(width: number, format: TextureFormat): number {
|
|
126
|
+
const unaligned = width * observationBytesPerPixel(format);
|
|
127
|
+
return Math.ceil(unaligned / 256) * 256;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
function addObservationCapturePass(
|
|
131
|
+
graph: RenderGraphBuilder<RenderPipelineFrame>,
|
|
132
|
+
target: RenderPipelineTarget,
|
|
133
|
+
domain: TypedFrameObservationDomain,
|
|
134
|
+
): Result<void, RenderGraphError> {
|
|
135
|
+
return graph.addCopyPass(`${domain}-observation`, {
|
|
136
|
+
accesses: [{ resource: target.view, usage: 'copy-src' }],
|
|
137
|
+
encode: ({ encoder, frame, resources }) => {
|
|
138
|
+
const texture = resources.texture(target.texture);
|
|
139
|
+
if (!texture.ok) throw texture.error;
|
|
140
|
+
const internal = frame as _InternalRenderPipelineContext;
|
|
141
|
+
// The RenderSystem frame counter is the identity used by
|
|
142
|
+
// observeCurrentFrame after this submission. The public receipt counter
|
|
143
|
+
// is intentionally separate and is only used by receipt-bound copies;
|
|
144
|
+
// using observationFrameId here makes a current source look stale by one
|
|
145
|
+
// frame to the legacy same-frame observer.
|
|
146
|
+
if (domain === 'linear-hdr') {
|
|
147
|
+
internal.frameState.currentFrameObservationSource = {
|
|
148
|
+
texture: texture.value,
|
|
149
|
+
descriptor: {
|
|
150
|
+
texture: texture.value,
|
|
151
|
+
format: target.format,
|
|
152
|
+
size: { width: frame.targetW, height: frame.targetH },
|
|
153
|
+
usage:
|
|
154
|
+
GPU_TEXTURE_USAGE_COPY_SRC |
|
|
155
|
+
GPU_TEXTURE_USAGE_RENDER_ATTACHMENT |
|
|
156
|
+
GPU_TEXTURE_USAGE_TEXTURE_BINDING,
|
|
157
|
+
sample: target.sampleCount,
|
|
158
|
+
},
|
|
159
|
+
frameId: internal.frameState.frameNumber,
|
|
160
|
+
pipelineId: 'forgeax::standard',
|
|
161
|
+
backendId: frame.runtime.device.caps.backendKind,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
const owner = frame.runtime.observationCaptureOwner;
|
|
165
|
+
if (owner === undefined) {
|
|
166
|
+
// Standalone graph-contract tests do not assemble a renderer owner.
|
|
167
|
+
// Preserve the legacy HDR source projection without allocating an
|
|
168
|
+
// unowned readback buffer; production frames always inject the owner.
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
// Observation is an explicit host demand, not a property of every
|
|
172
|
+
// submitted frame. The graph keeps its copy pass declaration so the
|
|
173
|
+
// committed topology remains inspectable, but ordinary production
|
|
174
|
+
// frames must not allocate a MAP_READ buffer or enqueue a copy.
|
|
175
|
+
// The source projection is different: the Renderer owns the current
|
|
176
|
+
// linear-HDR texture for every submitted frame, even when no host asked
|
|
177
|
+
// for a MAP_READ copy. Consumers such as the auto-exposure meter use
|
|
178
|
+
// this same-frame source; publishing it only on an explicit capture
|
|
179
|
+
// would make ordinary frames appear to have no observation source.
|
|
180
|
+
if (!frame.runtime.observationCaptureDomains?.includes(domain)) return;
|
|
181
|
+
const width = frame.targetW;
|
|
182
|
+
const height = frame.targetH;
|
|
183
|
+
const bytesPerRow = observationBytesPerRow(width, target.format);
|
|
184
|
+
const created = frame.runtime.device.createBuffer({
|
|
185
|
+
label: `${domain}-observation-readback`,
|
|
186
|
+
size: bytesPerRow * height,
|
|
187
|
+
usage: GPU_BUFFER_USAGE_COPY_DST | GPU_BUFFER_USAGE_MAP_READ,
|
|
188
|
+
mappedAtCreation: false,
|
|
189
|
+
});
|
|
190
|
+
if (!created.ok) throw created.error;
|
|
191
|
+
try {
|
|
192
|
+
encoder.copyTextureToBuffer(
|
|
193
|
+
{ texture: texture.value, mipLevel: 0, origin: { x: 0, y: 0, z: 0 } },
|
|
194
|
+
{ buffer: created.value, bytesPerRow, rowsPerImage: height },
|
|
195
|
+
{ width, height, depthOrArrayLayers: 1 },
|
|
196
|
+
);
|
|
197
|
+
// Publish the graph fence through the renderer runtime before any
|
|
198
|
+
// capture is registered. The assembly consumes this renderer-issued
|
|
199
|
+
// value for the receipt; it never derives the expected fence from the
|
|
200
|
+
// first capture in an otherwise untrusted capture set.
|
|
201
|
+
frame.runtime.observationGraphGeneration = internal.frameState.graphGeneration;
|
|
202
|
+
owner.register({
|
|
203
|
+
domain,
|
|
204
|
+
format: target.format,
|
|
205
|
+
device: frame.runtime.device,
|
|
206
|
+
texture: texture.value,
|
|
207
|
+
buffer: created.value,
|
|
208
|
+
// The assembly reserves this public receipt identity before encoding.
|
|
209
|
+
// The frame-state counter is an internal record counter and is not an
|
|
210
|
+
// identity source when non-receipt frames are recorded.
|
|
211
|
+
frameNumber: frame.runtime.observationFrameId ?? internal.frameState.frameNumber,
|
|
212
|
+
deviceGeneration: frame.runtime.deviceGeneration ?? 0,
|
|
213
|
+
graphGeneration: internal.frameState.graphGeneration,
|
|
214
|
+
backendId: frame.runtime.device.caps.backendKind,
|
|
215
|
+
width,
|
|
216
|
+
height,
|
|
217
|
+
bytesPerRow,
|
|
218
|
+
});
|
|
219
|
+
} catch (cause) {
|
|
220
|
+
const destroyed = frame.runtime.device.destroyBuffer(created.value);
|
|
221
|
+
if (!destroyed.ok) throw destroyed.error;
|
|
222
|
+
throw cause;
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
|
|
91
228
|
function legacyResolver(
|
|
92
229
|
resources: GraphResourceResolver,
|
|
93
230
|
targets: Readonly<Record<string, RenderPipelineTarget>>,
|
|
@@ -119,6 +256,7 @@ export function addTypedSkyboxPass(
|
|
|
119
256
|
}
|
|
120
257
|
|
|
121
258
|
export interface TypedScenePassOptions {
|
|
259
|
+
readonly environment?: import('./environment/ibl').GraphEnvironment | undefined;
|
|
122
260
|
readonly name: string;
|
|
123
261
|
readonly color: RenderPipelineTarget;
|
|
124
262
|
readonly depth: RenderPipelineTarget;
|
|
@@ -131,9 +269,14 @@ export interface TypedScenePassOptions {
|
|
|
131
269
|
readonly passKind?: PassKind | undefined;
|
|
132
270
|
readonly colorTargets?: readonly RenderPipelineTarget[] | undefined;
|
|
133
271
|
readonly clearColor?: readonly [number, number, number, number] | undefined;
|
|
134
|
-
readonly colorLoadOp?: GPULoadOp | undefined;
|
|
272
|
+
readonly colorLoadOp?: GPULoadOp | readonly GPULoadOp[] | undefined;
|
|
135
273
|
readonly depthLoadOp?: GPULoadOp | undefined;
|
|
274
|
+
readonly coverageOnly?: boolean | undefined;
|
|
136
275
|
readonly recordMode?: 'opaque' | 'transmission' | 'transparent' | undefined;
|
|
276
|
+
/** Exclude material/pass pairs consumed by an earlier graph lane. */
|
|
277
|
+
readonly excludeSelector?: PassSelector | undefined;
|
|
278
|
+
/** Require material membership in another lane without selecting its entries. */
|
|
279
|
+
readonly includeSelector?: PassSelector | undefined;
|
|
137
280
|
readonly transmissionBackdrop?: GraphTextureView | undefined;
|
|
138
281
|
readonly extraAccesses?: readonly GraphAccess[] | undefined;
|
|
139
282
|
readonly gpuDriven?: RenderPipelineGpuDrivenProjection | undefined;
|
|
@@ -158,6 +301,12 @@ export function addTypedScenePass(
|
|
|
158
301
|
...(options.transmissionBackdrop === undefined
|
|
159
302
|
? []
|
|
160
303
|
: [{ resource: options.transmissionBackdrop, usage: 'sampled-read' as const }]),
|
|
304
|
+
...(options.environment === undefined
|
|
305
|
+
? []
|
|
306
|
+
: [options.environment.irradiance, options.environment.prefilter].map((resource) => ({
|
|
307
|
+
resource,
|
|
308
|
+
usage: 'sampled-read' as const,
|
|
309
|
+
}))),
|
|
161
310
|
...(options.extraAccesses ?? []),
|
|
162
311
|
...(options.gpuDriven?.accesses ?? []),
|
|
163
312
|
];
|
|
@@ -171,7 +320,10 @@ export function addTypedScenePass(
|
|
|
171
320
|
...(index === 0 && options.resolve !== undefined
|
|
172
321
|
? { resolveTarget: options.resolve.view }
|
|
173
322
|
: {}),
|
|
174
|
-
loadOp:
|
|
323
|
+
loadOp:
|
|
324
|
+
(typeof options.colorLoadOp === 'string'
|
|
325
|
+
? options.colorLoadOp
|
|
326
|
+
: options.colorLoadOp?.[index]) ?? 'clear',
|
|
175
327
|
storeOp: 'store',
|
|
176
328
|
clearValue: {
|
|
177
329
|
r: options.clearColor?.[0] ?? 0,
|
|
@@ -228,47 +380,75 @@ export function addTypedScenePass(
|
|
|
228
380
|
true,
|
|
229
381
|
internal.standardLighting,
|
|
230
382
|
);
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
383
|
+
// GPU-driven indirect draws are encoded by `recordMainPass` after it
|
|
384
|
+
// has populated the frame-global material bind-group receipt. Encoding
|
|
385
|
+
// here would race that producer and either observe an empty receipt or
|
|
386
|
+
// issue the same indirect draw twice. Keep this wrapper responsible for
|
|
387
|
+
// resolving graph-owned attachments; the main-pass owner orders the
|
|
388
|
+
// material producer before the GPU consumer.
|
|
234
389
|
// The context carries the frame's primary occlusion projection for
|
|
235
390
|
// pipeline construction, but only the pass that owns that projection
|
|
236
391
|
// may begin its query. Forwarding it to deferred/temporal scene passes
|
|
237
392
|
// leaves their descriptors without an occlusionQuerySet and makes Dawn
|
|
238
393
|
// reject beginOcclusionQuery in those passes.
|
|
239
394
|
const activeOcclusion = options.occlusion;
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
395
|
+
const passContext: _InternalRenderPipelineContext = {
|
|
396
|
+
...internal,
|
|
397
|
+
...(options.environment === undefined
|
|
398
|
+
? {}
|
|
399
|
+
: {
|
|
400
|
+
environmentIbl: {
|
|
401
|
+
irradiance: resolvedView(resources, options.environment.irradiance),
|
|
402
|
+
prefilter: resolvedView(resources, options.environment.prefilter),
|
|
403
|
+
},
|
|
404
|
+
}),
|
|
405
|
+
...(activeOcclusion === undefined ? {} : { occlusion: activeOcclusion }),
|
|
406
|
+
geometryColorView: colorViews[0] ?? null,
|
|
407
|
+
geometryDepthView: depthView,
|
|
408
|
+
geometryColorResolveView: resolveView,
|
|
409
|
+
transparentColorFormat: colorTargets[0]?.format as GPUTextureFormat,
|
|
410
|
+
...((options.passKind === 'deferred'
|
|
411
|
+
? colorTargets[3]?.format
|
|
412
|
+
: colorTargets[1]?.format) === 'rgba16float'
|
|
413
|
+
? { reflectionFallbackColorFormat: 'rgba16float' as const }
|
|
414
|
+
: {}),
|
|
415
|
+
msaaActive: colorTargets[0]?.sampleCount === 4,
|
|
416
|
+
viewBindGroup: groups.viewBindGroup,
|
|
417
|
+
meshBindGroup: groups.meshBindGroup,
|
|
418
|
+
hdrpClusterBindGroup: groups.hdrpClusterBindGroup,
|
|
419
|
+
hdrpClusterMembershipBindGroup: groups.hdrpClusterMembershipBindGroup,
|
|
420
|
+
...(ssao === undefined ? {} : { hdrpSsaoBlurredView: ssao }),
|
|
421
|
+
};
|
|
422
|
+
encodeMainPass(passContext, pass, options.selector, {
|
|
423
|
+
colorViews,
|
|
424
|
+
colorFormats: colorTargets.map((target) => target.format as GPUTextureFormat),
|
|
425
|
+
depthView,
|
|
426
|
+
passKind: options.passKind ?? 'forward',
|
|
427
|
+
...(options.clearColor === undefined ? {} : { clearColor: options.clearColor }),
|
|
428
|
+
...(options.recordMode === undefined ? {} : { recordMode: options.recordMode }),
|
|
429
|
+
...(options.coverageOnly === undefined ? {} : { coverageOnly: options.coverageOnly }),
|
|
430
|
+
...(options.excludeSelector === undefined
|
|
431
|
+
? {}
|
|
432
|
+
: { excludeSelector: options.excludeSelector }),
|
|
433
|
+
...(options.includeSelector === undefined
|
|
434
|
+
? {}
|
|
435
|
+
: { includeSelector: options.includeSelector }),
|
|
436
|
+
...(options.transmissionBackdrop === undefined
|
|
437
|
+
? {}
|
|
438
|
+
: { transmissionBackdropView: transmissionBackdrop }),
|
|
439
|
+
...(options.gpuDriven === undefined
|
|
440
|
+
? {}
|
|
441
|
+
: { gpuDriven: { projection: options.gpuDriven, resources } }),
|
|
442
|
+
});
|
|
443
|
+
// encodeMainPass receives a pass-local context so attachment and
|
|
444
|
+
// bind-group overrides stay isolated. Its material UBO payload cache is
|
|
445
|
+
// frame-owned, however: return it to the original context so the next
|
|
446
|
+
// Standard scene pass can reuse the same validated slot projection.
|
|
447
|
+
// This remains frame-local and keeps the existing writeBuffer, texture
|
|
448
|
+
// readiness, UV-scale, and missing-texture diagnostic behavior intact.
|
|
449
|
+
if (passContext.materialUboPayloadCache !== undefined) {
|
|
450
|
+
internal.materialUboPayloadCache = passContext.materialUboPayloadCache;
|
|
451
|
+
}
|
|
272
452
|
if (activeOcclusion !== undefined) {
|
|
273
453
|
const proxyResult = activeOcclusion.encodeProxyBounds(pass);
|
|
274
454
|
if (!proxyResult.ok) throw proxyResult.error;
|
|
@@ -282,30 +462,8 @@ export function addTypedFrameObservationPass(
|
|
|
282
462
|
target: RenderPipelineTarget,
|
|
283
463
|
pipelineId: 'forgeax::standard',
|
|
284
464
|
): Result<void, RenderGraphError> {
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
encode: ({ frame, resources }) => {
|
|
288
|
-
const internal = frame as _InternalRenderPipelineContext;
|
|
289
|
-
const texture = resources.texture(target.texture);
|
|
290
|
-
if (!texture.ok) throw texture.error;
|
|
291
|
-
internal.frameState.currentFrameObservationSource = {
|
|
292
|
-
texture: texture.value,
|
|
293
|
-
descriptor: {
|
|
294
|
-
texture: texture.value,
|
|
295
|
-
format: target.format,
|
|
296
|
-
size: { width: frame.targetW, height: frame.targetH },
|
|
297
|
-
usage:
|
|
298
|
-
GPU_TEXTURE_USAGE_COPY_SRC |
|
|
299
|
-
GPU_TEXTURE_USAGE_RENDER_ATTACHMENT |
|
|
300
|
-
GPU_TEXTURE_USAGE_TEXTURE_BINDING,
|
|
301
|
-
sample: target.sampleCount,
|
|
302
|
-
},
|
|
303
|
-
frameId: internal.frameState.frameNumber,
|
|
304
|
-
pipelineId,
|
|
305
|
-
backendId: frame.runtime.device.caps.backendKind,
|
|
306
|
-
};
|
|
307
|
-
},
|
|
308
|
-
});
|
|
465
|
+
void pipelineId;
|
|
466
|
+
return addObservationCapturePass(graph, target, 'linear-hdr');
|
|
309
467
|
}
|
|
310
468
|
|
|
311
469
|
/** Publish the same-frame fallback MRT as a detached, copy-readable source. */
|
|
@@ -508,6 +666,8 @@ export function addTypedSsaoPasses(
|
|
|
508
666
|
export interface TypedFullscreenPassOptions {
|
|
509
667
|
readonly name: string;
|
|
510
668
|
readonly shader: string;
|
|
669
|
+
/** Optional fragment entry point override for composed fullscreen shaders. */
|
|
670
|
+
readonly fragmentEntryPoint?: string | undefined;
|
|
511
671
|
readonly input: RenderPipelineTarget;
|
|
512
672
|
readonly output: RenderPipelineTarget;
|
|
513
673
|
readonly outputOnly?: boolean | undefined;
|
|
@@ -525,12 +685,20 @@ export interface TypedFullscreenPassOptions {
|
|
|
525
685
|
|
|
526
686
|
export interface TypedTemporalResolveTargets {
|
|
527
687
|
readonly scene: RenderPipelineTarget;
|
|
688
|
+
/** Output-domain coverage produced by the Standard raster witness. */
|
|
689
|
+
readonly coverage?: RenderPipelineTarget | undefined;
|
|
690
|
+
/** Paired output-domain depth used to keep the producer observable. */
|
|
691
|
+
readonly coverageDepth?: RenderPipelineTarget | undefined;
|
|
692
|
+
/** Optional producer-owned R-channel reactivity in current screen space. */
|
|
693
|
+
readonly secondaryReactivity?: GraphTextureView;
|
|
528
694
|
readonly currentTemporal: RenderPipelineTarget;
|
|
529
695
|
readonly depth: RenderPipelineTarget;
|
|
530
696
|
readonly historyColor: RenderPipelineTarget;
|
|
531
697
|
readonly historyTemporal: RenderPipelineTarget;
|
|
698
|
+
readonly historyStability: RenderPipelineTarget;
|
|
532
699
|
readonly writeColor: RenderPipelineTarget;
|
|
533
700
|
readonly writeTemporal: RenderPipelineTarget;
|
|
701
|
+
readonly writeStability: RenderPipelineTarget;
|
|
534
702
|
}
|
|
535
703
|
|
|
536
704
|
export function addTypedTemporalResolvePass(
|
|
@@ -541,10 +709,21 @@ export function addTypedTemporalResolvePass(
|
|
|
541
709
|
accesses: [
|
|
542
710
|
{ resource: targets.scene.view, usage: 'sampled-read' },
|
|
543
711
|
{ resource: targets.currentTemporal.view, usage: 'sampled-read' },
|
|
712
|
+
...(targets.coverage === undefined
|
|
713
|
+
? []
|
|
714
|
+
: [{ resource: targets.coverage.view, usage: 'sampled-read' as const }]),
|
|
715
|
+
...(targets.coverageDepth === undefined
|
|
716
|
+
? []
|
|
717
|
+
: [{ resource: targets.coverageDepth.view, usage: 'sampled-read' as const }]),
|
|
544
718
|
{ resource: targets.historyColor.view, usage: 'sampled-read' },
|
|
545
719
|
{ resource: targets.historyTemporal.view, usage: 'sampled-read' },
|
|
720
|
+
{ resource: targets.historyStability.view, usage: 'sampled-read' },
|
|
721
|
+
...(targets.secondaryReactivity === undefined
|
|
722
|
+
? []
|
|
723
|
+
: [{ resource: targets.secondaryReactivity, usage: 'sampled-read' as const }]),
|
|
546
724
|
{ resource: targets.writeColor.view, usage: 'color-attachment' },
|
|
547
725
|
{ resource: targets.writeTemporal.view, usage: 'color-attachment' },
|
|
726
|
+
{ resource: targets.writeStability.view, usage: 'color-attachment' },
|
|
548
727
|
],
|
|
549
728
|
colorAttachments: [
|
|
550
729
|
{
|
|
@@ -559,6 +738,12 @@ export function addTypedTemporalResolvePass(
|
|
|
559
738
|
storeOp: 'store',
|
|
560
739
|
clearValue: { r: 0, g: 0, b: 0, a: 0 },
|
|
561
740
|
},
|
|
741
|
+
{
|
|
742
|
+
view: targets.writeStability.view,
|
|
743
|
+
loadOp: 'clear',
|
|
744
|
+
storeOp: 'store',
|
|
745
|
+
clearValue: { r: 0, g: 0, b: 0, a: 0 },
|
|
746
|
+
},
|
|
562
747
|
],
|
|
563
748
|
encode: ({ pass, frame, resources }) => {
|
|
564
749
|
const internal = frame as _InternalRenderPipelineContext;
|
|
@@ -574,11 +759,12 @@ export function addTypedTemporalResolvePass(
|
|
|
574
759
|
const currentTemporal = resolvedView(resources, targets.currentTemporal.view);
|
|
575
760
|
const historyColor = resolvedView(resources, targets.historyColor.view);
|
|
576
761
|
const historyTemporal = resolvedView(resources, targets.historyTemporal.view);
|
|
762
|
+
const historyStability = resolvedView(resources, targets.historyStability.view);
|
|
577
763
|
const params = getTemporalParamsBuffer(state);
|
|
578
|
-
if (params === undefined || built.sampler === null) {
|
|
764
|
+
if (params === undefined || built.sampler === null || built.temporalSampler === null) {
|
|
579
765
|
throwTemporalEncodeFailure('TAA resolve has an admitted params buffer and sampler');
|
|
580
766
|
}
|
|
581
|
-
const payload = new ArrayBuffer(
|
|
767
|
+
const payload = new ArrayBuffer(32);
|
|
582
768
|
new Float32Array(payload).set([
|
|
583
769
|
frame.camera.temporal?.currentJitterUv?.[0] ?? 0,
|
|
584
770
|
frame.camera.temporal?.currentJitterUv?.[1] ?? 0,
|
|
@@ -586,6 +772,8 @@ export function addTypedTemporalResolvePass(
|
|
|
586
772
|
const words = new Uint32Array(payload);
|
|
587
773
|
words[2] = state.valid && (frame.camera.temporal?.historyValid ?? true) ? 1 : 0;
|
|
588
774
|
words[3] = frame.camera.temporal?.temporalFrameIndex ?? 0;
|
|
775
|
+
words[4] = Number(targets.secondaryReactivity !== undefined);
|
|
776
|
+
words[5] = Number(targets.coverage !== undefined);
|
|
589
777
|
const written = frame.runtime.device.queue.writeBuffer(params, 0, new Uint8Array(payload));
|
|
590
778
|
if (!written.ok)
|
|
591
779
|
throwTemporalEncodeFailure('TAA resolve params upload succeeds', written.error);
|
|
@@ -598,20 +786,41 @@ export function addTypedTemporalResolvePass(
|
|
|
598
786
|
{ binding: 2, resource: { kind: 'textureView', value: historyColor } },
|
|
599
787
|
{ binding: 3, resource: { kind: 'sampler', value: built.sampler } },
|
|
600
788
|
{ binding: 4, resource: { kind: 'textureView', value: historyTemporal } },
|
|
601
|
-
{ binding: 5, resource: { kind: 'sampler', value: built.
|
|
789
|
+
{ binding: 5, resource: { kind: 'sampler', value: built.temporalSampler } },
|
|
602
790
|
{ binding: 6, resource: { kind: 'textureView', value: currentTemporal } },
|
|
603
|
-
{ binding: 7, resource: { kind: 'sampler', value: built.
|
|
791
|
+
{ binding: 7, resource: { kind: 'sampler', value: built.temporalSampler } },
|
|
604
792
|
{ binding: 8, resource: { kind: 'buffer', value: { buffer: params } } },
|
|
793
|
+
{ binding: 9, resource: { kind: 'textureView', value: historyStability } },
|
|
794
|
+
{
|
|
795
|
+
binding: 10,
|
|
796
|
+
resource: {
|
|
797
|
+
kind: 'textureView',
|
|
798
|
+
value:
|
|
799
|
+
targets.secondaryReactivity === undefined
|
|
800
|
+
? currentTemporal
|
|
801
|
+
: resolvedView(resources, targets.secondaryReactivity),
|
|
802
|
+
},
|
|
803
|
+
},
|
|
804
|
+
{
|
|
805
|
+
binding: 11,
|
|
806
|
+
resource: {
|
|
807
|
+
kind: 'textureView',
|
|
808
|
+
value:
|
|
809
|
+
targets.coverage === undefined
|
|
810
|
+
? currentTemporal
|
|
811
|
+
: resolvedView(resources, targets.coverage.view),
|
|
812
|
+
},
|
|
813
|
+
},
|
|
605
814
|
] as never,
|
|
606
815
|
});
|
|
607
816
|
if (!bindGroup.ok) {
|
|
608
817
|
throwTemporalEncodeFailure('TAA resolve bind group creation succeeds', bindGroup.error);
|
|
609
818
|
}
|
|
610
|
-
const pipeline = frame.runtime.getPostProcessPipeline?.(
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
targets.
|
|
614
|
-
);
|
|
819
|
+
const pipeline = frame.runtime.getPostProcessPipeline?.('forgeax.taa-resolve', built.layout, [
|
|
820
|
+
targets.writeColor.format,
|
|
821
|
+
targets.writeTemporal.format,
|
|
822
|
+
targets.writeStability.format,
|
|
823
|
+
] as GPUTextureFormat[]);
|
|
615
824
|
if (pipeline === null || pipeline === undefined) {
|
|
616
825
|
throwTemporalEncodeFailure('TAA resolve pipeline is ready before frame encoding');
|
|
617
826
|
}
|
|
@@ -680,6 +889,9 @@ export function addTypedFullscreenPass(
|
|
|
680
889
|
: {
|
|
681
890
|
paramsOverride: options.paramsTransform(frame.postProcessParams.get(options.shader)),
|
|
682
891
|
}),
|
|
892
|
+
...(options.fragmentEntryPoint === undefined
|
|
893
|
+
? {}
|
|
894
|
+
: { fragmentEntryPoint: options.fragmentEntryPoint }),
|
|
683
895
|
});
|
|
684
896
|
},
|
|
685
897
|
});
|
|
@@ -746,11 +958,20 @@ export function addTypedOutputTransformPass(
|
|
|
746
958
|
graph: RenderGraphBuilder<RenderPipelineFrame>,
|
|
747
959
|
input: RenderPipelineTarget,
|
|
748
960
|
output: RenderPipelineTarget,
|
|
749
|
-
options: {
|
|
961
|
+
options: {
|
|
962
|
+
readonly outputOnly?: boolean;
|
|
963
|
+
readonly dither?: boolean;
|
|
964
|
+
readonly name?: string | undefined;
|
|
965
|
+
readonly fragmentEntryPoint?: string | undefined;
|
|
966
|
+
} = {},
|
|
750
967
|
): Result<void, RenderGraphError> {
|
|
751
968
|
const outputOnly = options.outputOnly ?? false;
|
|
752
|
-
|
|
753
|
-
|
|
969
|
+
if (options.fragmentEntryPoint === 'fs_encode_only') {
|
|
970
|
+
const ldrCapture = addObservationCapturePass(graph, input, 'linear-ldr');
|
|
971
|
+
if (!ldrCapture.ok) return ldrCapture;
|
|
972
|
+
}
|
|
973
|
+
const transformed = addTypedFullscreenPass(graph, {
|
|
974
|
+
name: options.name ?? (outputOnly ? 'present' : 'output-transform'),
|
|
754
975
|
shader: STANDARD_OUTPUT_TRANSFORM_FEATURE_ID,
|
|
755
976
|
input,
|
|
756
977
|
output,
|
|
@@ -770,5 +991,14 @@ export function addTypedOutputTransformPass(
|
|
|
770
991
|
},
|
|
771
992
|
}
|
|
772
993
|
: {}),
|
|
994
|
+
...(options.fragmentEntryPoint === undefined
|
|
995
|
+
? {}
|
|
996
|
+
: { fragmentEntryPoint: options.fragmentEntryPoint }),
|
|
773
997
|
});
|
|
998
|
+
if (!transformed.ok) return transformed;
|
|
999
|
+
if (options.fragmentEntryPoint === 'fs_encode_only') {
|
|
1000
|
+
const finalCapture = addObservationCapturePass(graph, output, 'final-srgb');
|
|
1001
|
+
if (!finalCapture.ok) return finalCapture;
|
|
1002
|
+
}
|
|
1003
|
+
return ok(undefined);
|
|
774
1004
|
}
|