@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
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
|
+
DEFAULT_VERTEX_ATTRIBUTE_MAP,
|
|
2
3
|
deriveVertexLayoutProjection,
|
|
3
4
|
type VertexLayoutProjection,
|
|
4
5
|
} from '@forgeax/engine-geometry';
|
|
5
|
-
import type {
|
|
6
|
-
MaterialRenderState,
|
|
7
|
-
PassKind,
|
|
8
|
-
PrimitiveTopology,
|
|
9
|
-
VertexAttributeMap,
|
|
10
|
-
} from '@forgeax/engine-types';
|
|
6
|
+
import type { MaterialRenderState, PassKind, PrimitiveTopology } from '@forgeax/engine-types';
|
|
11
7
|
import { SPRITE_PREMULTIPLIED_ALPHA_BLEND } from '../materials';
|
|
12
8
|
import {
|
|
13
9
|
isStandardPbrMaterialShader,
|
|
@@ -42,6 +38,7 @@ import type {
|
|
|
42
38
|
export interface RecoveryPipelineReadiness {
|
|
43
39
|
readonly pipelineSpecs: readonly PipelineSpec[];
|
|
44
40
|
/** Re-resolve every candidate request and assert a stable cache hit. */
|
|
41
|
+
readonly assertPreparedCache: () => void;
|
|
45
42
|
readonly assertFirstRecoveryFrame: () => void;
|
|
46
43
|
}
|
|
47
44
|
|
|
@@ -53,6 +50,7 @@ export interface RecoveryPipelineReadiness {
|
|
|
53
50
|
*/
|
|
54
51
|
export function createRecoveryColdWorkGuard(): RecoveryColdWorkGuard {
|
|
55
52
|
let armed = false;
|
|
53
|
+
let recording = false;
|
|
56
54
|
let finished = false;
|
|
57
55
|
let pipelineColdWork = 0;
|
|
58
56
|
let uploadColdWork = 0;
|
|
@@ -71,11 +69,17 @@ export function createRecoveryColdWorkGuard(): RecoveryColdWorkGuard {
|
|
|
71
69
|
pipelineColdWork = 0;
|
|
72
70
|
uploadColdWork = 0;
|
|
73
71
|
},
|
|
72
|
+
beginFrame(): void {
|
|
73
|
+
recording = true;
|
|
74
|
+
},
|
|
75
|
+
endFrame(): void {
|
|
76
|
+
recording = false;
|
|
77
|
+
},
|
|
74
78
|
notePipelineColdWork(): void {
|
|
75
|
-
if (armed && !finished) fail('pipeline');
|
|
79
|
+
if (armed && recording && !finished) fail('pipeline');
|
|
76
80
|
},
|
|
77
81
|
noteUploadColdWork(): void {
|
|
78
|
-
if (armed && !finished) fail('upload');
|
|
82
|
+
if (armed && recording && !finished) fail('upload');
|
|
79
83
|
},
|
|
80
84
|
finish(): void {
|
|
81
85
|
if (!armed || finished) return;
|
|
@@ -96,13 +100,6 @@ interface RecoveryPipelineRequest {
|
|
|
96
100
|
readonly resolve: () => MaterialShaderPipelineEntry | null;
|
|
97
101
|
}
|
|
98
102
|
|
|
99
|
-
const DEFAULT_VERTEX_ATTRIBUTES: VertexAttributeMap = {
|
|
100
|
-
position: new Float32Array(0),
|
|
101
|
-
normal: new Float32Array(0),
|
|
102
|
-
uv: new Float32Array(0),
|
|
103
|
-
tangent: new Float32Array(0),
|
|
104
|
-
};
|
|
105
|
-
|
|
106
103
|
function optionalRenderState(
|
|
107
104
|
state: MaterialRenderState | undefined,
|
|
108
105
|
): { readonly renderState: MaterialRenderState } | Record<string, never> {
|
|
@@ -174,6 +171,9 @@ function addRequest(input: {
|
|
|
174
171
|
readonly additionalColorFormats?: readonly GPUTextureFormat[];
|
|
175
172
|
readonly depthFormatOverride?: GPUTextureFormat | null;
|
|
176
173
|
readonly vertexLayoutProjection?: VertexLayoutProjection;
|
|
174
|
+
readonly vertexEntry?: string;
|
|
175
|
+
readonly fragmentEntry?: string;
|
|
176
|
+
readonly layoutKindOverride?: 'pbr' | 'pbr-skin';
|
|
177
177
|
readonly preserveUndefinedVariant?: boolean;
|
|
178
178
|
readonly variantAlreadyResolved?: boolean;
|
|
179
179
|
}): void {
|
|
@@ -204,6 +204,8 @@ function addRequest(input: {
|
|
|
204
204
|
id: input.materialShaderId,
|
|
205
205
|
passKind,
|
|
206
206
|
variantSet: resolvedVariantSet,
|
|
207
|
+
...(input.vertexEntry === undefined ? {} : { vertexEntry: input.vertexEntry }),
|
|
208
|
+
...(input.fragmentEntry === undefined ? {} : { fragmentEntry: input.fragmentEntry }),
|
|
207
209
|
}),
|
|
208
210
|
attachments: Object.freeze({
|
|
209
211
|
colorFormats: Object.freeze([...colorFormats]),
|
|
@@ -213,7 +215,7 @@ function addRequest(input: {
|
|
|
213
215
|
geometry: Object.freeze({
|
|
214
216
|
topology: input.topology ?? 'triangle-list',
|
|
215
217
|
stripIndexFormat: input.indexFormat,
|
|
216
|
-
vertexLayout:
|
|
218
|
+
vertexLayout: DEFAULT_VERTEX_ATTRIBUTE_MAP,
|
|
217
219
|
...(projection === undefined ? {} : { vertexLayoutProjection: projection }),
|
|
218
220
|
...(shaderUvSetCount !== undefined && shaderUvSetCount > 1
|
|
219
221
|
? {
|
|
@@ -243,8 +245,11 @@ function addRequest(input: {
|
|
|
243
245
|
undefined,
|
|
244
246
|
projection,
|
|
245
247
|
undefined,
|
|
248
|
+
input.layoutKindOverride,
|
|
246
249
|
undefined,
|
|
247
250
|
input.additionalColorFormats,
|
|
251
|
+
input.vertexEntry,
|
|
252
|
+
input.fragmentEntry,
|
|
248
253
|
) ?? null;
|
|
249
254
|
input.requests.push({ spec, resolve });
|
|
250
255
|
}
|
|
@@ -261,12 +266,7 @@ function addStandardMaterialRequests(input: {
|
|
|
261
266
|
readonly colorFormatOverride?: GPUTextureFormat;
|
|
262
267
|
readonly reflectionFallbackAvailable: boolean;
|
|
263
268
|
}): void {
|
|
264
|
-
const pointsLinesProjection = deriveVertexLayoutProjection(
|
|
265
|
-
position: new Float32Array(0),
|
|
266
|
-
normal: new Float32Array(0),
|
|
267
|
-
uv: new Float32Array(0),
|
|
268
|
-
tangent: new Float32Array(0),
|
|
269
|
-
});
|
|
269
|
+
const pointsLinesProjection = deriveVertexLayoutProjection(DEFAULT_VERTEX_ATTRIBUTE_MAP);
|
|
270
270
|
for (const entry of input.validated) {
|
|
271
271
|
if (entry.source.pointsLines !== undefined) {
|
|
272
272
|
const pointsLinesMaterial = entry.source.material;
|
|
@@ -299,7 +299,7 @@ function addStandardMaterialRequests(input: {
|
|
|
299
299
|
// The probe record is an object-level ABI extension of the built-in
|
|
300
300
|
// Standard PBR family. Recovery must request the same variant that the
|
|
301
301
|
// live record path will select, otherwise the first post-recovery draw
|
|
302
|
-
// discovers
|
|
302
|
+
// discovers avoidable cold PSO work.
|
|
303
303
|
const probeBlendRecordAvailable =
|
|
304
304
|
input.internals.device.caps.storageBuffer && entry.source.probeBlendRecord !== undefined;
|
|
305
305
|
const standardPbrCapabilityVariantSet = standardTopologyVariantSet(
|
|
@@ -376,9 +376,7 @@ function addStandardMaterialRequests(input: {
|
|
|
376
376
|
: undefined
|
|
377
377
|
: entry.variantSet === undefined
|
|
378
378
|
? materialCapabilityVariantSet
|
|
379
|
-
: materialCapabilityVariantSet
|
|
380
|
-
? entry.variantSet
|
|
381
|
-
: `${materialCapabilityVariantSet}+${entry.variantSet}`;
|
|
379
|
+
: `${materialCapabilityVariantSet}+${entry.variantSet}`;
|
|
382
380
|
const reflectionFallbackVariant =
|
|
383
381
|
input.reflectionFallbackAvailable && materialShaderId === 'forgeax::default-standard-pbr'
|
|
384
382
|
? (() => {
|
|
@@ -527,80 +525,60 @@ function addShadowRequests(input: {
|
|
|
527
525
|
readonly validated: readonly ValidatedRenderable[];
|
|
528
526
|
readonly dispatch: readonly DispatchEntry[];
|
|
529
527
|
}): void {
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
materialShaderId
|
|
536
|
-
isHdrTarget: false,
|
|
537
|
-
topology: 'triangle-list',
|
|
538
|
-
variantSet: shadowCasterVariantSet(input.internals.device.caps.storageBuffer, false),
|
|
539
|
-
passKind: 'shadow-caster',
|
|
540
|
-
sampleCount: 1,
|
|
541
|
-
variantAlreadyResolved: true,
|
|
542
|
-
});
|
|
543
|
-
const customByRenderable = new Map<
|
|
544
|
-
number,
|
|
545
|
-
Map<number, { id: string; state: MaterialRenderState | undefined }>
|
|
546
|
-
>();
|
|
547
|
-
for (const dispatch of input.dispatch) {
|
|
548
|
-
if (dispatch.tags.LightMode !== 'ShadowCaster' || dispatch.materialShaderId === undefined)
|
|
528
|
+
// Recovery has no record context, so it cannot use the context-backed
|
|
529
|
+
// shadowShaderMap. Group the producer dispatch facts directly and warm every
|
|
530
|
+
// authored ShadowCaster pass for the matching renderable/material pair.
|
|
531
|
+
const dispatches = new Map<number, Map<number, DispatchEntry[]>>();
|
|
532
|
+
for (const candidate of input.dispatch) {
|
|
533
|
+
if (candidate.tags.LightMode !== 'ShadowCaster' || candidate.materialShaderId === undefined)
|
|
549
534
|
continue;
|
|
550
|
-
|
|
551
|
-
if (
|
|
552
|
-
|
|
553
|
-
|
|
535
|
+
const byMaterial = dispatches.get(candidate.renderableIndex);
|
|
536
|
+
if (byMaterial === undefined) {
|
|
537
|
+
dispatches.set(candidate.renderableIndex, new Map([[candidate.materialHandle, [candidate]]]));
|
|
538
|
+
} else {
|
|
539
|
+
const entries = byMaterial.get(candidate.materialHandle);
|
|
540
|
+
if (entries === undefined) byMaterial.set(candidate.materialHandle, [candidate]);
|
|
541
|
+
else entries.push(candidate);
|
|
554
542
|
}
|
|
555
|
-
materials.set(dispatch.materialHandle, {
|
|
556
|
-
id: dispatch.materialShaderId,
|
|
557
|
-
state: dispatch.renderState,
|
|
558
|
-
});
|
|
559
543
|
}
|
|
560
544
|
for (const entry of input.validated) {
|
|
561
|
-
const
|
|
562
|
-
(submesh
|
|
563
|
-
);
|
|
564
|
-
if (triangles.length === 0) continue;
|
|
565
|
-
if (entry.source.skin !== undefined) {
|
|
566
|
-
addRequest({
|
|
567
|
-
requests: input.requests,
|
|
568
|
-
requestKeys: input.requestKeys,
|
|
569
|
-
internals: input.internals,
|
|
570
|
-
pipelineState: input.pipelineState,
|
|
571
|
-
materialShaderId: SHADOW_CASTER_SHADER_ID,
|
|
572
|
-
isHdrTarget: false,
|
|
573
|
-
topology: entry.mesh.submeshes[0]?.topology ?? 'triangle-list',
|
|
574
|
-
indexFormat: entry.mesh.indexFormat,
|
|
575
|
-
variantSet: shadowCasterVariantSet(input.internals.device.caps.storageBuffer, true),
|
|
576
|
-
passKind: 'shadow-caster',
|
|
577
|
-
sampleCount: 1,
|
|
578
|
-
vertexLayoutProjection: entry.mesh.layoutProjection,
|
|
579
|
-
variantAlreadyResolved: true,
|
|
580
|
-
});
|
|
581
|
-
}
|
|
582
|
-
for (const submesh of triangles) {
|
|
545
|
+
for (const submesh of entry.mesh.submeshes) {
|
|
546
|
+
if (submesh.topology !== 'triangle-list' && submesh.topology !== 'triangle-strip') continue;
|
|
583
547
|
const material = entry.source.materials[submesh.materialSlot] ?? entry.source.material;
|
|
584
|
-
const
|
|
585
|
-
.get(entry.renderableIndex)
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
548
|
+
const shadowDispatches =
|
|
549
|
+
dispatches.get(entry.renderableIndex)?.get(material.materialHandle ?? 0) ?? [];
|
|
550
|
+
for (const dispatch of shadowDispatches.length === 0 ? [undefined] : shadowDispatches) {
|
|
551
|
+
const materialShaderId =
|
|
552
|
+
dispatch?.materialShaderId === 'forgeax::default-standard-pbr' ||
|
|
553
|
+
dispatch?.materialShaderId === undefined
|
|
554
|
+
? SHADOW_CASTER_SHADER_ID
|
|
555
|
+
: dispatch.materialShaderId;
|
|
592
556
|
addRequest({
|
|
593
557
|
requests: input.requests,
|
|
594
558
|
requestKeys: input.requestKeys,
|
|
595
559
|
internals: input.internals,
|
|
596
560
|
pipelineState: input.pipelineState,
|
|
597
|
-
materialShaderId
|
|
561
|
+
materialShaderId,
|
|
598
562
|
isHdrTarget: false,
|
|
599
|
-
...optionalRenderState(
|
|
600
|
-
topology:
|
|
563
|
+
...optionalRenderState(dispatch?.renderState),
|
|
564
|
+
topology: submesh.topology,
|
|
565
|
+
indexFormat: entry.mesh.indexFormat,
|
|
566
|
+
...optionalVariant(
|
|
567
|
+
materialShaderId === SHADOW_CASTER_SHADER_ID
|
|
568
|
+
? shadowCasterVariantSet(
|
|
569
|
+
input.internals.device.caps.storageBuffer,
|
|
570
|
+
entry.source.skin !== undefined,
|
|
571
|
+
)
|
|
572
|
+
: undefined,
|
|
573
|
+
),
|
|
601
574
|
passKind: 'shadow-caster',
|
|
602
575
|
sampleCount: 1,
|
|
603
|
-
|
|
576
|
+
vertexLayoutProjection: entry.mesh.layoutProjection,
|
|
577
|
+
layoutKindOverride: entry.source.skin === undefined ? 'pbr' : 'pbr-skin',
|
|
578
|
+
...(dispatch?.vertexEntry === undefined ? {} : { vertexEntry: dispatch.vertexEntry }),
|
|
579
|
+
...(dispatch?.fragmentEntry === undefined
|
|
580
|
+
? {}
|
|
581
|
+
: { fragmentEntry: dispatch.fragmentEntry }),
|
|
604
582
|
variantAlreadyResolved: true,
|
|
605
583
|
});
|
|
606
584
|
}
|
|
@@ -671,7 +649,7 @@ export function prepareRecoveryPipelineReadiness(input: {
|
|
|
671
649
|
dispatch: input.dispatch,
|
|
672
650
|
});
|
|
673
651
|
}
|
|
674
|
-
const
|
|
652
|
+
const assertPreparedCache = (): void => {
|
|
675
653
|
for (const request of requests) {
|
|
676
654
|
const first = request.resolve();
|
|
677
655
|
const second = request.resolve();
|
|
@@ -687,9 +665,10 @@ export function prepareRecoveryPipelineReadiness(input: {
|
|
|
687
665
|
}
|
|
688
666
|
}
|
|
689
667
|
};
|
|
690
|
-
|
|
668
|
+
assertPreparedCache();
|
|
691
669
|
return {
|
|
692
670
|
pipelineSpecs: Object.freeze(requests.map((request) => request.spec)),
|
|
693
|
-
|
|
671
|
+
assertPreparedCache,
|
|
672
|
+
assertFirstRecoveryFrame: assertPreparedCache,
|
|
694
673
|
};
|
|
695
674
|
}
|
|
@@ -15,6 +15,7 @@ import type {
|
|
|
15
15
|
RhiDevice,
|
|
16
16
|
RenderPipeline as RhiRenderPipeline,
|
|
17
17
|
Sampler,
|
|
18
|
+
ShaderModule,
|
|
18
19
|
Texture,
|
|
19
20
|
TextureFormat,
|
|
20
21
|
TextureView,
|
|
@@ -40,6 +41,9 @@ import type { MeshGpuHandles } from '../device/gpu-residency';
|
|
|
40
41
|
import type { EngineMetrics } from '../engine-metrics';
|
|
41
42
|
import type { RenderFeatureHost } from '../features/host';
|
|
42
43
|
import type { RenderFeatureShaderModuleMode } from '../features/types';
|
|
44
|
+
import type { GpuDrivenPbrProgram } from '../gpu-driven/pbr-program';
|
|
45
|
+
import type { GpuDrivenShadowBatchProjection } from '../gpu-driven/production-raster';
|
|
46
|
+
import type { ShadowViewStatePool } from '../gpu-driven/shadow-views';
|
|
43
47
|
import {
|
|
44
48
|
GPU_TEXTURE_USAGE_COPY_SRC,
|
|
45
49
|
GPU_TEXTURE_USAGE_RENDER_ATTACHMENT,
|
|
@@ -56,7 +60,9 @@ import type { PointsLinesInspection } from '../points-lines/inspection';
|
|
|
56
60
|
import type { PointsLinesRecordPlan } from '../points-lines/record';
|
|
57
61
|
import type { ReflectionProbeTable } from '../reflection/gpu-table';
|
|
58
62
|
import type { ReflectionProbeSelectionResult } from '../reflection/projection';
|
|
63
|
+
import type { FrameObservationDomain } from '../render-contract';
|
|
59
64
|
import type { SsrAdmissionIdentity } from '../ssr/identity';
|
|
65
|
+
import type { TypedFrameObservationCapture } from '../typed-render-graph-primitives';
|
|
60
66
|
import type { GpuPassTimingReason } from './gpu-pass-timing/errors';
|
|
61
67
|
import type {
|
|
62
68
|
GpuPassTimingCapture,
|
|
@@ -82,7 +88,7 @@ export interface ReflectionProbeRecordState {
|
|
|
82
88
|
>;
|
|
83
89
|
/** Demand is derived from this frame's renderable/source selection. */
|
|
84
90
|
readonly fallbackDemand?: boolean;
|
|
85
|
-
/**
|
|
91
|
+
/** Non-neutral sources require a nonzero diagnostic sample when capture is enabled. */
|
|
86
92
|
readonly fallbackHasNonNeutral?: boolean;
|
|
87
93
|
readonly completeSubmission: (
|
|
88
94
|
submitted: boolean,
|
|
@@ -109,27 +115,19 @@ export interface MaterialShaderPipelineEntry {
|
|
|
109
115
|
readonly group2Contract: PipelineGroup2Contract;
|
|
110
116
|
}
|
|
111
117
|
|
|
112
|
-
/**
|
|
113
|
-
* Armed only for the first published recovery frame. Candidate preparation
|
|
114
|
-
* must make every pipeline and static residency lookup a cache hit before this
|
|
115
|
-
* guard is armed; a miss is a hard failure before queue submission.
|
|
116
|
-
*/
|
|
117
|
-
export interface RecoveryColdWorkGuard {
|
|
118
|
-
arm(): void;
|
|
119
|
-
notePipelineColdWork(): void;
|
|
120
|
-
noteUploadColdWork(): void;
|
|
121
|
-
finish(): void;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
118
|
import type {
|
|
119
|
+
AtmosphereShaderSources,
|
|
125
120
|
RenderDebugOverlay,
|
|
126
121
|
RenderPipelineContext,
|
|
127
122
|
RenderRecordPhase,
|
|
123
|
+
SsrShaderSources,
|
|
128
124
|
VolumetricFogShaderSources,
|
|
129
125
|
} from '../render-contract';
|
|
126
|
+
import type { GpuDrivenStandardPbrFrameResources } from '../render-pipeline';
|
|
130
127
|
import type {
|
|
131
128
|
DispatchEntry,
|
|
132
129
|
MaterialSnapshot,
|
|
130
|
+
ShadowCasterMembership,
|
|
133
131
|
SkyboxSnapshot,
|
|
134
132
|
SkylightSnapshot,
|
|
135
133
|
} from '../render-system-extract';
|
|
@@ -146,11 +144,43 @@ import type {
|
|
|
146
144
|
} from './frame-snapshot';
|
|
147
145
|
import type { FoldDispatchPlan } from './mesh-ssbo';
|
|
148
146
|
|
|
147
|
+
/**
|
|
148
|
+
* Armed only for the first published recovery frame. Candidate preparation
|
|
149
|
+
* must make every pipeline and static residency lookup a cache hit before this
|
|
150
|
+
* guard is armed; a miss during draw is a hard failure before queue submission.
|
|
151
|
+
* Explicit preparation between draws remains allowed, including new geometry
|
|
152
|
+
* admitted on the first fixed step after device recovery.
|
|
153
|
+
*/
|
|
154
|
+
export interface RecoveryColdWorkGuard {
|
|
155
|
+
arm(): void;
|
|
156
|
+
beginFrame(): void;
|
|
157
|
+
endFrame(): void;
|
|
158
|
+
notePipelineColdWork(): void;
|
|
159
|
+
noteUploadColdWork(): void;
|
|
160
|
+
finish(): void;
|
|
161
|
+
}
|
|
162
|
+
|
|
149
163
|
export interface RenderSystemRuntime {
|
|
150
164
|
readonly device: RhiDevice;
|
|
165
|
+
/** Current renderer device generation used to fence receipt-bound captures. */
|
|
166
|
+
readonly deviceGeneration?: number;
|
|
167
|
+
/** Public receipt identity reserved before graph encoding. */
|
|
168
|
+
readonly observationFrameId?: number | undefined;
|
|
169
|
+
/** Graph identity written by the typed graph for the current receipt. */
|
|
170
|
+
observationGraphGeneration?: number | undefined;
|
|
171
|
+
/** Renderer-owned capture bridge consumed after queue submission. */
|
|
172
|
+
readonly observationCaptureOwner?:
|
|
173
|
+
| {
|
|
174
|
+
register(capture: TypedFrameObservationCapture): void;
|
|
175
|
+
consume(frameNumber: number): readonly TypedFrameObservationCapture[];
|
|
176
|
+
drain(): readonly TypedFrameObservationCapture[];
|
|
177
|
+
}
|
|
178
|
+
| undefined;
|
|
151
179
|
/** Internal backend-fixture hook evaluated at the submit transaction edge. */
|
|
152
180
|
readonly beforeSubmit?: ((device: RhiDevice) => RhiError | undefined) | undefined;
|
|
153
181
|
readonly deviceScope: DeviceScope;
|
|
182
|
+
/** Domains explicitly armed for the frame being encoded. */
|
|
183
|
+
readonly observationCaptureDomains?: readonly FrameObservationDomain[] | undefined;
|
|
154
184
|
/** Resolve a recorder/backend wrapper before configuring the native surface. */
|
|
155
185
|
readonly resolveSurfaceDevice?: (device: RhiDevice) => Result<RhiDevice, RhiError>;
|
|
156
186
|
readonly errorRegistry: RhiErrorListenerRegistry;
|
|
@@ -164,6 +194,16 @@ export interface RenderSystemRuntime {
|
|
|
164
194
|
/** Producer-owned cooked Standard PBR artifact used by GPU-driven projection. */
|
|
165
195
|
readonly getMaterialShaderArtifact?: (
|
|
166
196
|
materialShaderId: string,
|
|
197
|
+
request?:
|
|
198
|
+
| {
|
|
199
|
+
readonly vertexColorAvailable?: boolean;
|
|
200
|
+
readonly deformation?: 'rigid' | 'skin';
|
|
201
|
+
readonly clustered?: boolean;
|
|
202
|
+
readonly reflectionFallback?: boolean;
|
|
203
|
+
readonly pass?: 'forward' | 'shadow' | 'depth';
|
|
204
|
+
readonly address?: 'direct' | 'scene-index';
|
|
205
|
+
}
|
|
206
|
+
| boolean,
|
|
167
207
|
) => MaterialShaderArtifact | undefined;
|
|
168
208
|
readonly getMaterialShaderPipeline?: (
|
|
169
209
|
materialShaderId: string,
|
|
@@ -181,10 +221,14 @@ export interface RenderSystemRuntime {
|
|
|
181
221
|
vertexLayout?: string,
|
|
182
222
|
vertexLayoutProjection?: VertexLayoutProjection,
|
|
183
223
|
shaderModuleMode?: RenderFeatureShaderModuleMode,
|
|
184
|
-
layoutKindOverride?: 'pbr' | 'pbr-skin',
|
|
224
|
+
layoutKindOverride?: 'pbr' | 'pbr-skin' | 'gpu-driven-pbr' | 'gpu-driven-skin',
|
|
225
|
+
/** Optional vertex entry override for receipt-owned scene-index passes. */
|
|
226
|
+
vertexEntryPoint?: string,
|
|
185
227
|
additionalColorFormats?: readonly GPUTextureFormat[],
|
|
186
228
|
vertexEntry?: string,
|
|
187
229
|
fragmentEntry?: string,
|
|
230
|
+
particleInputLanes?: number,
|
|
231
|
+
fragmentConstants?: Readonly<Record<string, number>>,
|
|
188
232
|
) => RhiRenderPipeline | null;
|
|
189
233
|
readonly getMaterialShaderPipelineEntry?: (
|
|
190
234
|
materialShaderId: string,
|
|
@@ -202,22 +246,36 @@ export interface RenderSystemRuntime {
|
|
|
202
246
|
vertexLayout?: string,
|
|
203
247
|
vertexLayoutProjection?: VertexLayoutProjection,
|
|
204
248
|
shaderModuleMode?: RenderFeatureShaderModuleMode,
|
|
205
|
-
layoutKindOverride?: 'pbr' | 'pbr-skin',
|
|
249
|
+
layoutKindOverride?: 'pbr' | 'pbr-skin' | 'gpu-driven-pbr' | 'gpu-driven-skin',
|
|
250
|
+
/** Optional vertex entry override for receipt-owned scene-index passes. */
|
|
251
|
+
vertexEntryPoint?: string,
|
|
206
252
|
additionalColorFormats?: readonly GPUTextureFormat[],
|
|
207
253
|
vertexEntry?: string,
|
|
208
254
|
fragmentEntry?: string,
|
|
255
|
+
particleInputLanes?: number,
|
|
256
|
+
fragmentConstants?: Readonly<Record<string, number>>,
|
|
209
257
|
) => MaterialShaderPipelineEntry | null;
|
|
210
258
|
/** Reflection-derived UV count included in the material PipelineSpec cache key. */
|
|
211
259
|
readonly getMaterialShaderUvSetCount?: (materialShaderId: string) => number | undefined;
|
|
212
260
|
readonly getMaterialShaderBindingContract?: (
|
|
213
261
|
materialShaderId: string,
|
|
214
|
-
) =>
|
|
262
|
+
) =>
|
|
263
|
+
| 'group-0'
|
|
264
|
+
| 'group-0-resource'
|
|
265
|
+
| 'view-only'
|
|
266
|
+
| 'view-and-scene-depth'
|
|
267
|
+
| 'render-material-with-scene-depth'
|
|
268
|
+
| 'render-material-and-scene-depth'
|
|
269
|
+
| 'render-material';
|
|
215
270
|
readonly getParamSchema?: (materialShaderId: string) => readonly ParamSchemaEntry[] | undefined;
|
|
216
271
|
readonly getMaterialBindGroupLayout?: (
|
|
217
272
|
materialShaderId: string,
|
|
218
273
|
materialParamSchema?: readonly ParamSchemaEntry[],
|
|
219
274
|
) => BindGroupLayout | undefined;
|
|
220
|
-
|
|
275
|
+
/** Handle-first factory for built-in same-frame GPU producers. */
|
|
276
|
+
readonly immediateShaderModuleFactory?: PipelineBuilderShaderModuleFactory;
|
|
277
|
+
/** Optional guard for the first recovery frame's cold-work boundary. */
|
|
278
|
+
readonly recoveryColdWorkGuard?: RecoveryColdWorkGuard | undefined;
|
|
221
279
|
readonly metrics: EngineMetrics;
|
|
222
280
|
readonly lookupPostProcess?: (
|
|
223
281
|
id: string,
|
|
@@ -226,7 +284,7 @@ export interface RenderSystemRuntime {
|
|
|
226
284
|
readonly getPostProcessPipeline?: (
|
|
227
285
|
id: string,
|
|
228
286
|
bgl: BindGroupLayout,
|
|
229
|
-
|
|
287
|
+
colorFormats: readonly GPUTextureFormat[],
|
|
230
288
|
entry?: import('../fullscreen-post-process-pass').PostProcessShaderEntry,
|
|
231
289
|
) => RhiRenderPipeline | null;
|
|
232
290
|
/** Candidate-owned post-process pipelines transferred at publication. */
|
|
@@ -371,15 +429,27 @@ export interface PipelineState {
|
|
|
371
429
|
readonly probeInstancesBindGroupLayout?: BindGroupLayout;
|
|
372
430
|
readonly identityInstanceBuffer: Buffer;
|
|
373
431
|
readonly defaultSampler: Sampler;
|
|
374
|
-
readonly nearestSampler: Sampler;
|
|
375
432
|
readonly fallbackTextureView: TextureView;
|
|
376
433
|
readonly unlitPipeline: RhiRenderPipeline | null;
|
|
377
434
|
readonly standardPipeline: RhiRenderPipeline | null;
|
|
435
|
+
/** Producer-owned Standard PBR module for this device generation. */
|
|
436
|
+
readonly standardPbrShaderModule: ShaderModule | null;
|
|
437
|
+
/** Producer-owned skinned Standard PBR module for this device generation. */
|
|
438
|
+
readonly pbrSkinShaderModule: ShaderModule | null;
|
|
439
|
+
/** Producer-resolved Standard PBR UV ABI count for geometry projection. */
|
|
440
|
+
readonly standardPbrShaderUvSetCount: number;
|
|
378
441
|
readonly unlitPipelineMsaa: RhiRenderPipeline | null;
|
|
379
442
|
readonly unlitPipelineHdrMsaa: RhiRenderPipeline | null;
|
|
380
443
|
readonly pbrPipelineLayout: PipelineLayout | null;
|
|
444
|
+
/** Dedicated slot-3 layout for scene-index GPU-driven Standard PBR draws. */
|
|
445
|
+
readonly gpuDrivenInstancesBindGroupLayout?: BindGroupLayout | null;
|
|
446
|
+
readonly gpuDrivenPbrPipelineLayout?: PipelineLayout | null;
|
|
447
|
+
/** Device-owned shader modules paired with their exact Standard PBR receipts. */
|
|
448
|
+
readonly gpuDrivenPbrPrograms?: ReadonlyMap<string, GpuDrivenPbrProgram>;
|
|
449
|
+
readonly gpuDrivenPbrSkinPipelineLayout?: PipelineLayout | null;
|
|
381
450
|
readonly pbrProbePipelineLayout?: PipelineLayout | null;
|
|
382
451
|
readonly hdrpPbrPipelineLayout: PipelineLayout | null;
|
|
452
|
+
readonly hdrpMeshBindGroupLayout?: BindGroupLayout | null;
|
|
383
453
|
readonly hdrpProbePbrPipelineLayout?: PipelineLayout | null;
|
|
384
454
|
readonly hdrpClusterMembershipPipeline: ComputePipeline | null;
|
|
385
455
|
readonly hdrpClusterMembershipBindGroupLayout: BindGroupLayout | null;
|
|
@@ -420,6 +490,7 @@ export interface RenderSystemInternals extends RenderSystemRuntime {
|
|
|
420
490
|
readonly build?: string | undefined;
|
|
421
491
|
/** Host identity binding for the renderer-owned SSR dependency seam. */
|
|
422
492
|
readonly ssrIdentity?: SsrAdmissionIdentity | undefined;
|
|
493
|
+
readonly captureReflectionFallbackReadback?: boolean | undefined;
|
|
423
494
|
readonly standardProfile?: StandardProfile | undefined;
|
|
424
495
|
readonly standardPipeline: RenderFrameState['activePipeline'];
|
|
425
496
|
readonly featureHost?: RenderFeatureHost | undefined;
|
|
@@ -453,7 +524,7 @@ export interface RenderSystemInternals extends RenderSystemRuntime {
|
|
|
453
524
|
| ((
|
|
454
525
|
entry: import('../fullscreen-post-process-pass').PostProcessShaderEntry,
|
|
455
526
|
bgl: BindGroupLayout,
|
|
456
|
-
|
|
527
|
+
colorFormats: readonly GPUTextureFormat[],
|
|
457
528
|
label: string,
|
|
458
529
|
) => RhiRenderPipeline | null)
|
|
459
530
|
| undefined;
|
|
@@ -469,9 +540,15 @@ export interface RenderSystemInternals extends RenderSystemRuntime {
|
|
|
469
540
|
) => void;
|
|
470
541
|
/** Composed renderer utility sources installed atomically at build-ready. */
|
|
471
542
|
volumetricFogShaders?: VolumetricFogShaderSources | undefined;
|
|
543
|
+
/** Composed renderer utility sources installed atomically at build-ready. */
|
|
544
|
+
ssrShaders?: SsrShaderSources | undefined;
|
|
545
|
+
/** Composed renderer utility sources installed atomically at build-ready. */
|
|
546
|
+
atmosphereShaders?: AtmosphereShaderSources | undefined;
|
|
472
547
|
}
|
|
473
548
|
|
|
474
549
|
export interface _StandardForwardSceneView {
|
|
550
|
+
readonly environmentIbl?: { readonly irradiance: TextureView; readonly prefilter: TextureView };
|
|
551
|
+
readonly captureDispatch?: readonly DispatchEntry[];
|
|
475
552
|
readonly assets: AssetRegistry;
|
|
476
553
|
readonly store: import('../device/gpu-residency').GpuResidencyCache;
|
|
477
554
|
readonly pipelineState: PipelineState;
|
|
@@ -492,9 +569,6 @@ export interface _StandardForwardSceneView {
|
|
|
492
569
|
readonly profilePhase?: <T>(phase: RenderRecordPhase, action: () => T) => T;
|
|
493
570
|
readonly directionalShadowCacheReuse: boolean;
|
|
494
571
|
readonly world: World;
|
|
495
|
-
readonly gpuDrivenEntityKeys: ReadonlySet<number>;
|
|
496
|
-
/** Renderer-local world namespace paired with gpuDrivenEntityKeys. */
|
|
497
|
-
readonly gpuDrivenWorldKeys?: readonly number[];
|
|
498
572
|
readonly tonemapActive: boolean;
|
|
499
573
|
readonly geometryColorView: TextureView | null;
|
|
500
574
|
readonly geometryDepthView: TextureView | null;
|
|
@@ -513,8 +587,33 @@ export interface _StandardForwardSceneView {
|
|
|
513
587
|
readonly foldDispatchPlan: FoldDispatchPlan | null;
|
|
514
588
|
readonly materialSlotIndices: readonly (readonly number[])[];
|
|
515
589
|
readonly materialSlots: readonly MaterialSnapshot[];
|
|
516
|
-
readonly materialSlotOwners: readonly
|
|
590
|
+
readonly materialSlotOwners: readonly ValidatedRenderable[];
|
|
517
591
|
readonly materialSlotCount: number;
|
|
592
|
+
/** Filled by main-pass material producers before the GPU-driven raster tail. */
|
|
593
|
+
readonly gpuDrivenStandardPbrFrameResources?: GpuDrivenStandardPbrFrameResources;
|
|
594
|
+
/** Scene table retained by the renderer even when no draw is GPU-admitted. */
|
|
595
|
+
readonly gpuDrivenSceneMaterialBuffer?: Buffer;
|
|
596
|
+
/** Concrete main-pass draw identities already claimed by the capable GPU lane. */
|
|
597
|
+
readonly gpuDrivenDrawKeys?: ReadonlySet<string>;
|
|
598
|
+
readonly gpuDrivenShadowViews?: ShadowViewStatePool;
|
|
599
|
+
readonly gpuDrivenShadowBatchProjections?: ReadonlyMap<
|
|
600
|
+
string,
|
|
601
|
+
ReadonlyMap<number, GpuDrivenShadowBatchProjection>
|
|
602
|
+
>;
|
|
603
|
+
/** Concrete ShadowCaster keys already claimed by the capable GPU subset. */
|
|
604
|
+
readonly gpuDrivenShadowDrawKeys?: ReadonlySet<string>;
|
|
605
|
+
/** View-scoped ShadowCaster claims for exact CPU residual routing. */
|
|
606
|
+
readonly gpuDrivenShadowDrawKeysByView?: ReadonlyMap<string, ReadonlySet<string>>;
|
|
607
|
+
/** Extracted structured ShadowCaster ownership facts. */
|
|
608
|
+
readonly shadowCasterMembership?: readonly ShadowCasterMembership[];
|
|
609
|
+
/** Complete retained ShadowCaster rows, including camera-culled casters. */
|
|
610
|
+
readonly shadowValidatedOrdered?: readonly ValidatedRenderable[];
|
|
611
|
+
/** Dispatch entries remapped to the complete retained ShadowCaster rows. */
|
|
612
|
+
readonly shadowDispatch?: readonly DispatchEntry[];
|
|
613
|
+
/** Mesh-SSBO slot base reserved for the retained ShadowCaster rows. */
|
|
614
|
+
readonly shadowMeshSsboBase?: number;
|
|
615
|
+
/** Renderer-stable world keys used by ShadowCaster ownership identities. */
|
|
616
|
+
readonly shadowCasterWorldKeys?: readonly number[];
|
|
518
617
|
readonly pointsLines: PointsLinesRecordOwner | undefined;
|
|
519
618
|
readonly materialBgAssemblyCache: Map<string, MaterialBgAssemblyCacheEntry>;
|
|
520
619
|
/** Record-stage proof callback; invoked only after a real draw command is encoded. */
|