@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
package/src/render-contract.ts
CHANGED
|
@@ -23,13 +23,16 @@ import type {
|
|
|
23
23
|
} from '@forgeax/engine-rhi';
|
|
24
24
|
import type { SkinError } from '@forgeax/engine-skinning';
|
|
25
25
|
import type { ImageError } from '@forgeax/engine-types';
|
|
26
|
-
import type { RhiBackendInstrumentation } from './assembly/backend-contract';
|
|
27
|
-
import type { Antialias, BloomEnabled, Tonemap } from './components/camera';
|
|
28
|
-
import type {
|
|
29
|
-
import type {
|
|
30
|
-
import type {
|
|
31
|
-
import type {
|
|
32
|
-
import type {
|
|
26
|
+
import type { RhiBackendInstrumentation } from './assembly/backend-contract.js';
|
|
27
|
+
import type { Antialias, BloomEnabled, CameraExposure, Tonemap } from './components/camera.js';
|
|
28
|
+
import type { DynamicResolutionData } from './components/dynamic-resolution.js';
|
|
29
|
+
import type { ScreenSpaceReflectionData } from './components/screen-space-reflection.js';
|
|
30
|
+
import type { EnvironmentInspection } from './environment/inspection.js';
|
|
31
|
+
import type { GpuDrivenPreparationError } from './errors/gpu-driven.js';
|
|
32
|
+
import type { RecoveryOutcome, RecoveryPhase } from './errors/recover.js';
|
|
33
|
+
import type { RenderError } from './errors/render.js';
|
|
34
|
+
import type { RenderFeature, RenderFeatureDiagnostics } from './features/types.js';
|
|
35
|
+
import type { PostProcessShaderEntry } from './fullscreen-post-process-pass.js';
|
|
33
36
|
import type {
|
|
34
37
|
BloomInspection,
|
|
35
38
|
DirectionalShadowInspection,
|
|
@@ -37,13 +40,18 @@ import type {
|
|
|
37
40
|
LodOcclusionInspection,
|
|
38
41
|
MotionBlurInspection,
|
|
39
42
|
ReflectionProbeInspection,
|
|
43
|
+
RenderFeatureGraphInspection,
|
|
44
|
+
RenderFeatureHostInspection,
|
|
40
45
|
RenderSceneInspection,
|
|
41
46
|
SsrDependenciesInspection,
|
|
47
|
+
SsrSpatialInspection,
|
|
42
48
|
TemporalTargetInspection,
|
|
43
49
|
TransmissionInspection,
|
|
44
|
-
} from './inspection-types';
|
|
45
|
-
import type { InstanceCollectionInspection } from './instances';
|
|
46
|
-
import type {
|
|
50
|
+
} from './inspection-types.js';
|
|
51
|
+
import type { InstanceCollectionInspection, InstanceCollectionStore } from './instances.js';
|
|
52
|
+
import type { RenderExtent } from './pipeline/render-extent.js';
|
|
53
|
+
import type { RenderSceneBounds } from './scene/render-scene-types.js';
|
|
54
|
+
import type { SsrAdmissionIdentity } from './ssr/identity.js';
|
|
47
55
|
import type {
|
|
48
56
|
RenderTarget,
|
|
49
57
|
RenderTargetDescriptor,
|
|
@@ -52,11 +60,11 @@ import type {
|
|
|
52
60
|
RenderTargetReadbackTicket,
|
|
53
61
|
RenderTargetTextureSource,
|
|
54
62
|
RenderTargetTextureSourceOptions,
|
|
55
|
-
} from './targets/contracts';
|
|
56
|
-
import type { TemporalInspection } from './temporal/inspection';
|
|
63
|
+
} from './targets/contracts.js';
|
|
64
|
+
import type { TemporalInspection } from './temporal/inspection.js';
|
|
57
65
|
|
|
58
|
-
export type { TransmissionInspection } from './inspection-types';
|
|
59
|
-
export type { PointsLinesInspection } from './points-lines/inspection';
|
|
66
|
+
export type { TransmissionInspection } from './inspection-types.js';
|
|
67
|
+
export type { PointsLinesInspection } from './points-lines/inspection.js';
|
|
60
68
|
|
|
61
69
|
import type {
|
|
62
70
|
DynamicGeometryCandidate,
|
|
@@ -65,27 +73,29 @@ import type {
|
|
|
65
73
|
DynamicGeometryOrdering,
|
|
66
74
|
DynamicGeometryPrepareInput,
|
|
67
75
|
DynamicGeometryReceipt,
|
|
68
|
-
} from './dynamic-geometry';
|
|
76
|
+
} from './dynamic-geometry.js';
|
|
69
77
|
import type {
|
|
70
78
|
IblBindingInspection,
|
|
71
79
|
MeshMaterialBindingObservation,
|
|
72
|
-
} from './mesh-material-bindings';
|
|
73
|
-
import type { StandardLightingInspection } from './pipeline/standard-lighting/inspection';
|
|
74
|
-
import type {
|
|
75
|
-
import type {
|
|
76
|
-
import type {
|
|
80
|
+
} from './mesh-material-bindings.js';
|
|
81
|
+
import type { StandardLightingInspection } from './pipeline/standard-lighting/inspection.js';
|
|
82
|
+
import type { AutoExposureInspection } from './pipeline/standard-output/auto-exposure/inspection.js';
|
|
83
|
+
import type { StandardLutInspection } from './pipeline/standard-output/lut-state.js';
|
|
84
|
+
import type { StandardProfile } from './pipeline/standard-profile.js';
|
|
85
|
+
import type { PointShadowInspection } from './point-shadow-inspection.js';
|
|
86
|
+
import type { PostProcessError } from './post-process-errors.js';
|
|
77
87
|
import type {
|
|
78
88
|
GpuPassTimingObservation,
|
|
79
89
|
GpuPassTimingOptions,
|
|
80
90
|
} from './record/gpu-pass-timing/index.js';
|
|
81
|
-
import type { VolumeTimingObservation } from './record/gpu-timing';
|
|
82
|
-
import type { TemporalView } from './temporal/view';
|
|
83
|
-
import type { VolumetricFogInspection } from './volume/inspection';
|
|
91
|
+
import type { VolumeTimingObservation } from './record/gpu-timing.js';
|
|
92
|
+
import type { TemporalView } from './temporal/view.js';
|
|
93
|
+
import type { VolumetricFogInspection } from './volume/inspection.js';
|
|
84
94
|
|
|
85
95
|
export type {
|
|
86
96
|
CubeCameraFace,
|
|
87
97
|
CubeCameraUpdateIntent,
|
|
88
|
-
} from './components/cube-camera';
|
|
98
|
+
} from './components/cube-camera.js';
|
|
89
99
|
|
|
90
100
|
export interface CubeCameraSnapshot {
|
|
91
101
|
readonly entityKey?: number;
|
|
@@ -105,6 +115,15 @@ export type RenderResult<T, E> =
|
|
|
105
115
|
/** The only World data boundary accepted by the M6 renderer contract. */
|
|
106
116
|
export type RenderWorldLease = RenderReadLease;
|
|
107
117
|
|
|
118
|
+
/** Camera-owned color/exposure facts projected once at the frame boundary. */
|
|
119
|
+
export interface CameraOutputSnapshot {
|
|
120
|
+
readonly exposure: CameraExposure;
|
|
121
|
+
readonly temperature: number;
|
|
122
|
+
readonly tint: number;
|
|
123
|
+
readonly colorLut: number;
|
|
124
|
+
readonly colorLutStrength: number;
|
|
125
|
+
}
|
|
126
|
+
|
|
108
127
|
/**
|
|
109
128
|
* Camera facts shared by extract, record, and scene owners.
|
|
110
129
|
*
|
|
@@ -138,12 +157,18 @@ export interface CameraSnapshot {
|
|
|
138
157
|
readonly tonemap: Tonemap;
|
|
139
158
|
readonly exposure: number;
|
|
140
159
|
readonly whitePoint: number;
|
|
160
|
+
/** Camera schema output projection consumed by Standard prepare/inspection. */
|
|
161
|
+
readonly output?: CameraOutputSnapshot;
|
|
141
162
|
readonly antialias: Antialias;
|
|
163
|
+
/** Optional detached Camera companion for fixed or adaptive scaling. */
|
|
164
|
+
readonly dynamicResolution?: DynamicResolutionData;
|
|
142
165
|
readonly bloom: BloomEnabled;
|
|
143
166
|
readonly bloomThreshold: number;
|
|
144
167
|
readonly bloomIntensity: number;
|
|
145
168
|
readonly bloomBlurRadius: number;
|
|
146
169
|
readonly clearColor: readonly [number, number, number, number];
|
|
170
|
+
/** Optional active-camera SSR authoring fact, copied from the ECS schema. */
|
|
171
|
+
readonly screenSpaceReflection?: ScreenSpaceReflectionData;
|
|
147
172
|
/** Renderer-owned temporal projection used by Standard's TAA producer. */
|
|
148
173
|
readonly temporal?: TemporalView;
|
|
149
174
|
/** Active-camera motion blur parameters, present only when demanded. */
|
|
@@ -165,8 +190,8 @@ export type {
|
|
|
165
190
|
EnvironmentSource,
|
|
166
191
|
FogFrame,
|
|
167
192
|
FramePlan,
|
|
168
|
-
} from './extract/environment';
|
|
169
|
-
export type { TemporalView } from './temporal/view';
|
|
193
|
+
} from './extract/environment.js';
|
|
194
|
+
export type { TemporalView } from './temporal/view.js';
|
|
170
195
|
|
|
171
196
|
/**
|
|
172
197
|
* Render-graph state exposed to pipeline declarations. Concrete pipeline
|
|
@@ -188,8 +213,43 @@ interface RenderPipelineStateView {
|
|
|
188
213
|
* RenderSystemRuntime structurally satisfies this contract, but the public
|
|
189
214
|
* frame surface does not depend on that assembly owner.
|
|
190
215
|
*/
|
|
216
|
+
interface RenderPipelineObservationCapture {
|
|
217
|
+
readonly domain: 'linear-hdr' | 'linear-ldr' | 'final-srgb';
|
|
218
|
+
readonly format: TextureFormat;
|
|
219
|
+
readonly device: RhiDevice;
|
|
220
|
+
readonly texture: Texture;
|
|
221
|
+
readonly buffer: Buffer;
|
|
222
|
+
readonly frameNumber: number;
|
|
223
|
+
readonly deviceGeneration: number;
|
|
224
|
+
readonly graphGeneration: number;
|
|
225
|
+
readonly backendId: string;
|
|
226
|
+
readonly width: number;
|
|
227
|
+
readonly height: number;
|
|
228
|
+
readonly bytesPerRow: number;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
interface RenderPipelineObservationCaptureOwner {
|
|
232
|
+
readonly register: (capture: RenderPipelineObservationCapture) => void;
|
|
233
|
+
readonly consume: (frameNumber: number) => readonly RenderPipelineObservationCapture[];
|
|
234
|
+
readonly drain: () => readonly RenderPipelineObservationCapture[];
|
|
235
|
+
}
|
|
236
|
+
|
|
191
237
|
interface RenderPipelineRuntime {
|
|
192
238
|
readonly device: RhiDevice;
|
|
239
|
+
/** Current renderer device generation used to fence graph captures. */
|
|
240
|
+
readonly deviceGeneration?: number | undefined;
|
|
241
|
+
/** Public receipt identity reserved for the frame currently being encoded. */
|
|
242
|
+
readonly observationFrameId?: number | undefined;
|
|
243
|
+
/** Renderer-issued graph fence populated by the graph owner during encoding. */
|
|
244
|
+
observationGraphGeneration?: number | undefined;
|
|
245
|
+
/** Per-renderer bridge for receipt-bound graph color captures. */
|
|
246
|
+
readonly observationCaptureOwner?: RenderPipelineObservationCaptureOwner | undefined;
|
|
247
|
+
/**
|
|
248
|
+
* Domains armed for the frame currently being encoded. An absent or empty
|
|
249
|
+
* set is the normal zero-cost path; typed graph capture passes remain
|
|
250
|
+
* declared for topology inspection but do not allocate or copy anything.
|
|
251
|
+
*/
|
|
252
|
+
readonly observationCaptureDomains?: readonly FrameObservationDomain[] | undefined;
|
|
193
253
|
/** Runtime-owned shader module factory used by built-in graph producers. */
|
|
194
254
|
readonly shaderModuleFactory?: {
|
|
195
255
|
createShaderModule(input: {
|
|
@@ -200,6 +260,16 @@ interface RenderPipelineRuntime {
|
|
|
200
260
|
RhiError
|
|
201
261
|
>;
|
|
202
262
|
};
|
|
263
|
+
/** Immediate factory used by same-frame built-in producers after runtime warm-up. */
|
|
264
|
+
readonly immediateShaderModuleFactory?: {
|
|
265
|
+
createShaderModule(input: {
|
|
266
|
+
readonly code: string;
|
|
267
|
+
readonly label?: string | undefined;
|
|
268
|
+
}): import('@forgeax/engine-types').Result<
|
|
269
|
+
import('@forgeax/engine-rhi').ShaderModule,
|
|
270
|
+
RhiError
|
|
271
|
+
>;
|
|
272
|
+
};
|
|
203
273
|
readonly errorRegistry: { fire(error: RendererError): void };
|
|
204
274
|
readonly debugOverlay?: RenderDebugOverlay | undefined;
|
|
205
275
|
readonly lookupPostProcess?: (id: string) => PostProcessShaderEntry | undefined;
|
|
@@ -207,7 +277,7 @@ interface RenderPipelineRuntime {
|
|
|
207
277
|
readonly getPostProcessPipeline?: (
|
|
208
278
|
id: string,
|
|
209
279
|
bgl: BindGroupLayout,
|
|
210
|
-
|
|
280
|
+
colorFormats: readonly GPUTextureFormat[],
|
|
211
281
|
entry?: PostProcessShaderEntry,
|
|
212
282
|
) => RhiRenderPipeline | null;
|
|
213
283
|
}
|
|
@@ -237,6 +307,8 @@ export interface RenderPipelineContext {
|
|
|
237
307
|
readonly clear: readonly [number, number, number, number] | number[];
|
|
238
308
|
readonly targetW: number;
|
|
239
309
|
readonly targetH: number;
|
|
310
|
+
/** Renderer-owned output/internal dimensions shared by Standard consumers. */
|
|
311
|
+
readonly extent?: RenderExtent;
|
|
240
312
|
readonly currentTexture: Texture;
|
|
241
313
|
readonly camera: CameraSnapshot;
|
|
242
314
|
/** Per-frame post-process parameter bytes keyed by shader id. */
|
|
@@ -250,6 +322,10 @@ export interface RenderPipelineContext {
|
|
|
250
322
|
readonly spotLightProjector?: SpotLightProjectorFrameContext;
|
|
251
323
|
/** Build-time composed utility sources for the renderer-owned volume passes. */
|
|
252
324
|
readonly volumetricFogShaders?: VolumetricFogShaderSources;
|
|
325
|
+
/** Build-time composed utility sources for the renderer-owned SSR passes. */
|
|
326
|
+
readonly ssrShaders?: SsrShaderSources;
|
|
327
|
+
/** Build-time composed utility sources for the renderer-owned atmosphere passes. */
|
|
328
|
+
readonly atmosphereShaders?: AtmosphereShaderSources;
|
|
253
329
|
}
|
|
254
330
|
|
|
255
331
|
/** Stable utility entry-point sources emitted by the shader manifest. */
|
|
@@ -260,6 +336,22 @@ export interface VolumetricFogShaderSources {
|
|
|
260
336
|
readonly composite: string;
|
|
261
337
|
}
|
|
262
338
|
|
|
339
|
+
/** Stable utility entry-point sources emitted by the shader manifest. */
|
|
340
|
+
export interface SsrShaderSources {
|
|
341
|
+
readonly hiz: string;
|
|
342
|
+
readonly hizReduce: string;
|
|
343
|
+
readonly trace: string;
|
|
344
|
+
readonly temporal: string;
|
|
345
|
+
readonly compose: string;
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
/** Stable analytic-atmosphere entry-point sources emitted by the shader manifest. */
|
|
349
|
+
export interface AtmosphereShaderSources {
|
|
350
|
+
readonly ibl: string;
|
|
351
|
+
readonly cube: string;
|
|
352
|
+
readonly background: string;
|
|
353
|
+
}
|
|
354
|
+
|
|
263
355
|
/**
|
|
264
356
|
* GPU resources for one validated volumetric-fog candidate. The record stage
|
|
265
357
|
* owns residency and parameter uploads; graph passes consume this narrow view
|
|
@@ -304,6 +396,7 @@ export interface SpotLightProjectorFrameContext {
|
|
|
304
396
|
*/
|
|
305
397
|
export interface Renderer {
|
|
306
398
|
/** Renderer-owned authoring and update path for large instance collections. */
|
|
399
|
+
readonly instances: InstanceCollectionStore;
|
|
307
400
|
attach(world: World): RenderResult<RenderWorldLease, RenderError>;
|
|
308
401
|
/** Prepare a standard MeshAsset for the active device generation. */
|
|
309
402
|
prepareDynamicGeometry(
|
|
@@ -314,10 +407,31 @@ export interface Renderer {
|
|
|
314
407
|
candidate: DynamicGeometryCandidate,
|
|
315
408
|
ordering: DynamicGeometryOrdering,
|
|
316
409
|
): Result<DynamicGeometryCandidate, DynamicGeometryError>;
|
|
410
|
+
/**
|
|
411
|
+
* Atomically swap distinct entities in one attached World. Returned failures
|
|
412
|
+
* retain old bindings; an uncertain rollback throws to require paired rebuild.
|
|
413
|
+
* Invoke inside PhysicsWorld.admitDerivedShapeCandidates commitGeometry.
|
|
414
|
+
*/
|
|
415
|
+
acceptDynamicGeometryCandidates(
|
|
416
|
+
candidates: readonly DynamicGeometryCandidate[],
|
|
417
|
+
ordering: DynamicGeometryOrdering,
|
|
418
|
+
): Result<readonly DynamicGeometryCandidate[], DynamicGeometryError>;
|
|
317
419
|
dynamicGeometryReceipt(candidate: DynamicGeometryCandidate): DynamicGeometryReceipt | undefined;
|
|
318
420
|
cancelDynamicGeometry(candidate: DynamicGeometryCandidate): Result<void, DynamicGeometryError>;
|
|
319
421
|
retireDynamicGeometry(candidate: DynamicGeometryCandidate): Result<void, DynamicGeometryError>;
|
|
320
422
|
draw(input: RenderFrameInput): RenderResult<FrameReceipt, RenderError>;
|
|
423
|
+
/**
|
|
424
|
+
* Arm one upcoming submitted frame for explicit color-domain observation.
|
|
425
|
+
* Observation buffers are not created, copied, mapped, or retained until a
|
|
426
|
+
* host calls this method before `draw()`. The demand is consumed only by a
|
|
427
|
+
* successful submit; a failed frame keeps it armed for a retry.
|
|
428
|
+
*
|
|
429
|
+
* This optional extension keeps older injected Renderer test doubles source
|
|
430
|
+
* compatible while concrete Engine renderers always implement it.
|
|
431
|
+
*/
|
|
432
|
+
requestObservation?: (
|
|
433
|
+
domains: readonly FrameObservationDomain[],
|
|
434
|
+
) => RenderResult<void, RenderError>;
|
|
321
435
|
createRenderTarget(descriptor: RenderTargetDescriptor): RenderResult<RenderTarget, RenderError>;
|
|
322
436
|
resizeRenderTarget(
|
|
323
437
|
target: RenderTarget,
|
|
@@ -334,6 +448,8 @@ export interface Renderer {
|
|
|
334
448
|
destroyRenderTarget(target: RenderTarget): RenderResult<void, RenderError>;
|
|
335
449
|
setProfile(profile: RenderProfile): RenderResult<void, RenderError>;
|
|
336
450
|
state(): RendererState;
|
|
451
|
+
/** Detached world bounds for one record in the last extracted World; undefined if unavailable. */
|
|
452
|
+
bounds(world: World, entity: number): RenderSceneBounds | undefined;
|
|
337
453
|
inspect(): RenderInspection;
|
|
338
454
|
observe(
|
|
339
455
|
receipt: FrameReceipt,
|
|
@@ -371,6 +487,8 @@ export type RendererEvent =
|
|
|
371
487
|
readonly kind: 'frame-submitted';
|
|
372
488
|
readonly frameId: number;
|
|
373
489
|
readonly deviceGeneration: number;
|
|
490
|
+
/** The exact draw receipt, for observation when App owns the draw loop. */
|
|
491
|
+
readonly receipt: FrameReceipt;
|
|
374
492
|
};
|
|
375
493
|
|
|
376
494
|
/** Package-local listener alias used by the renderer assembly implementation. */
|
|
@@ -400,8 +518,17 @@ export interface FrameEnvironment {
|
|
|
400
518
|
* only with the matching FrameReceipt after `receipt.completed` and returns a
|
|
401
519
|
* structured Result error when the generation or frame identity is stale.
|
|
402
520
|
*/
|
|
521
|
+
export type FrameObservationDomain = 'linear-hdr' | 'linear-ldr' | 'final-srgb';
|
|
522
|
+
|
|
523
|
+
export type FrameObservationInclude =
|
|
524
|
+
| 'timings'
|
|
525
|
+
| 'draws'
|
|
526
|
+
| 'bindings'
|
|
527
|
+
| 'target-readbacks'
|
|
528
|
+
| FrameObservationDomain;
|
|
529
|
+
|
|
403
530
|
export interface FrameObservationRequest {
|
|
404
|
-
readonly include: readonly
|
|
531
|
+
readonly include: readonly FrameObservationInclude[];
|
|
405
532
|
readonly targetReadbacks?: readonly RenderTargetReadbackTicket[];
|
|
406
533
|
}
|
|
407
534
|
|
|
@@ -414,6 +541,10 @@ export interface FrameObservationRequest {
|
|
|
414
541
|
export interface FrameReceipt {
|
|
415
542
|
readonly frameId: number;
|
|
416
543
|
readonly deviceGeneration: number;
|
|
544
|
+
/** Backend identity captured at submit and checked before observation. */
|
|
545
|
+
readonly backendId?: RhiCaps['backendKind'];
|
|
546
|
+
/** Monotonic compiled graph identity used by renderer-issued observations. */
|
|
547
|
+
readonly graphGeneration?: number;
|
|
417
548
|
readonly completed: Promise<RenderResult<void, RenderError>>;
|
|
418
549
|
}
|
|
419
550
|
|
|
@@ -436,16 +567,44 @@ export interface RenderFrameInput {
|
|
|
436
567
|
export interface FrameReceiptObservation {
|
|
437
568
|
readonly frameId: number;
|
|
438
569
|
readonly deviceGeneration: number;
|
|
439
|
-
readonly include: readonly
|
|
570
|
+
readonly include: readonly FrameObservationInclude[];
|
|
440
571
|
/** Receipt-bound Render-owned GPU pass facts; absent when not requested. */
|
|
441
572
|
readonly timings?: GpuPassTimingObservation | undefined;
|
|
442
573
|
/** Receipt-bound volume GPU timing facts; absent when not requested. */
|
|
443
574
|
readonly volumeTimings?: VolumeTimingObservation | undefined;
|
|
444
575
|
readonly targetReadbacks?: readonly RenderTargetReadbackData[];
|
|
576
|
+
/** Independent raw bytes captured from the requested linear/display domains. */
|
|
577
|
+
readonly observations?: readonly FrameDomainObservation[] | undefined;
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
export interface FrameDomainObservation {
|
|
581
|
+
readonly domain: FrameObservationDomain;
|
|
582
|
+
readonly bytes: Uint8Array;
|
|
583
|
+
readonly metadata: {
|
|
584
|
+
readonly frameId: number;
|
|
585
|
+
readonly deviceGeneration: number;
|
|
586
|
+
readonly backendId?: RhiCaps['backendKind'];
|
|
587
|
+
/** Native texture format of the copied attachment, including BGRA order. */
|
|
588
|
+
readonly format: TextureFormat;
|
|
589
|
+
readonly graphGeneration: number;
|
|
590
|
+
readonly textureIdentity: number;
|
|
591
|
+
readonly readbackIdentity: number;
|
|
592
|
+
readonly width: number;
|
|
593
|
+
readonly height: number;
|
|
594
|
+
readonly bytesPerRow: number;
|
|
595
|
+
readonly footprint: {
|
|
596
|
+
readonly resourceCount: number;
|
|
597
|
+
readonly bindGroupCount: number;
|
|
598
|
+
};
|
|
599
|
+
};
|
|
445
600
|
}
|
|
446
601
|
|
|
447
602
|
/** Stable backend facts for the Standard output transform projection. */
|
|
448
603
|
export interface RenderOutputInspection {
|
|
604
|
+
/** Camera-owned auto-exposure facts, detached from GPU state when available. */
|
|
605
|
+
readonly autoExposure?: AutoExposureInspection;
|
|
606
|
+
/** Renderer-owned detached LUT residency and receipt facts. */
|
|
607
|
+
readonly standardLut?: StandardLutInspection;
|
|
449
608
|
readonly outputTransform?: typeof STANDARD_OUTPUT_TRANSFORM_FEATURE_ID;
|
|
450
609
|
readonly displayEncoded: boolean;
|
|
451
610
|
readonly intermediateFormat?: TextureFormat;
|
|
@@ -493,6 +652,15 @@ export interface RenderObservationInspection {
|
|
|
493
652
|
/** Exact pass names and target descriptor from the committed graph. */
|
|
494
653
|
readonly passNames: readonly string[];
|
|
495
654
|
readonly standardOutputColor?: RenderStandardOutputColorInspection;
|
|
655
|
+
/** Monotonic, renderer-owned observation resource facts; no GPU handles. */
|
|
656
|
+
readonly resourceStats?: {
|
|
657
|
+
readonly allocationCount: number;
|
|
658
|
+
readonly liveCount: number;
|
|
659
|
+
readonly peakLiveCount: number;
|
|
660
|
+
readonly mapCount: number;
|
|
661
|
+
readonly readbackCount: number;
|
|
662
|
+
readonly liveByteLength: number;
|
|
663
|
+
};
|
|
496
664
|
}
|
|
497
665
|
|
|
498
666
|
/**
|
|
@@ -531,6 +699,12 @@ export interface RenderInspection {
|
|
|
531
699
|
readonly features: readonly string[];
|
|
532
700
|
/** Truthful lifecycle facts for every registered declarative feature. */
|
|
533
701
|
readonly featureDiagnostics: readonly RenderFeatureDiagnostics[];
|
|
702
|
+
/** Detached signature and prepared-resource counters for feature planning. */
|
|
703
|
+
readonly featureHost?: RenderFeatureHostInspection;
|
|
704
|
+
/** Detached typed-graph compile/reuse and candidate lifecycle counters. */
|
|
705
|
+
readonly featureGraph?: RenderFeatureGraphInspection;
|
|
706
|
+
/** Detached material texture-source probe counters from the last extract. */
|
|
707
|
+
readonly materialTextureSources?: import('./inspection-types').MaterialTextureSourceInspection;
|
|
534
708
|
readonly frustumStats: { readonly culled: number; readonly total: number };
|
|
535
709
|
readonly visibilityStats: { readonly explicitlyHidden: number };
|
|
536
710
|
/** Renderer-owned large-instance residency and upload facts. */
|
|
@@ -541,6 +715,8 @@ export interface RenderInspection {
|
|
|
541
715
|
readonly reflectionProbes: ReflectionProbeInspection;
|
|
542
716
|
/** Renderer-owned SSR dependency seam; consumer facts are projected from live owners. */
|
|
543
717
|
readonly ssrDependencies: SsrDependenciesInspection;
|
|
718
|
+
/** Renderer-owned SSR spatial status and bounded execution facts. */
|
|
719
|
+
readonly ssr: SsrSpatialInspection;
|
|
544
720
|
/** Last completed transmission candidate facts, detached from GPU handles. */
|
|
545
721
|
readonly transmission?: TransmissionInspection;
|
|
546
722
|
/** Last prepared Standard transport facts, detached from GPU handles. */
|
|
@@ -583,16 +759,12 @@ export interface RenderInspection {
|
|
|
583
759
|
readonly lastGeneration: number | undefined;
|
|
584
760
|
};
|
|
585
761
|
};
|
|
586
|
-
/**
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
readonly
|
|
592
|
-
readonly endpoint: 'surface.storage.raw';
|
|
593
|
-
readonly capability: RenderOutputInspection['capability'];
|
|
594
|
-
readonly presentationProof?: RhiCanvasSurfacePresentationProof;
|
|
595
|
-
readonly error: RenderOutputInspection['error'];
|
|
762
|
+
/**
|
|
763
|
+
* Output-transform facts from the same committed graph and physical surface.
|
|
764
|
+
* Keep this as one named subtree so AI consumers do not have to guess which
|
|
765
|
+
* detached fields belong to the output contract versus renderer lifecycle.
|
|
766
|
+
*/
|
|
767
|
+
readonly output: RenderOutputInspection;
|
|
596
768
|
readonly observation: RenderObservationInspection;
|
|
597
769
|
readonly environment: EnvironmentInspection;
|
|
598
770
|
readonly temporal: TemporalInspection;
|
|
@@ -626,6 +798,8 @@ export interface RenderInspection {
|
|
|
626
798
|
export type DrawOwnerOptions = {
|
|
627
799
|
readonly cameraOwner: number;
|
|
628
800
|
readonly resourceOwner: number;
|
|
801
|
+
/** Optional FrameCamera entity selection; absent preserves ActiveCamera semantics. */
|
|
802
|
+
readonly cameraEntityKey?: number;
|
|
629
803
|
readonly profileFrame?: ProfileFrameToken;
|
|
630
804
|
};
|
|
631
805
|
|
|
@@ -649,17 +823,18 @@ export type RendererLostListener = (info: RendererLostInfo) => void;
|
|
|
649
823
|
* exception), NOT the eliminated cross-cluster `RuntimeError` SSOT (D-3).
|
|
650
824
|
*
|
|
651
825
|
* Composition = `RhiError | RenderError | AssetRuntimeError | SkinError |
|
|
652
|
-
* PostProcessError`.
|
|
653
|
-
*
|
|
654
|
-
*
|
|
655
|
-
*
|
|
656
|
-
*
|
|
657
|
-
* `
|
|
658
|
-
* `
|
|
826
|
+
* GpuDrivenPreparationError | PostProcessError`. The GPU preparation arm is
|
|
827
|
+
* the renderer-owned producer contract: its closed `code` and typed `detail`
|
|
828
|
+
* identify the material, geometry, skin, generation, or shadow owner without making
|
|
829
|
+
* RHI errors carry render policy. `RecoverError` and `EngineEnvironmentError`
|
|
830
|
+
* are intentionally excluded — neither is ever emitted through the Renderer
|
|
831
|
+
* event stream (`RecoverError` returns from `recover()`,
|
|
832
|
+
* `EngineEnvironmentError` throws at construction).
|
|
659
833
|
*
|
|
660
834
|
* AI consumers do `switch (err.code)` over the union: the disjoint
|
|
661
835
|
* `RhiErrorCode` / `RenderErrorCode` / `AssetRuntimeErrorCode` / `SkinErrorCode`
|
|
662
|
-
* / `PostProcessErrorCode` literal sets let
|
|
836
|
+
* / `GpuDrivenPreparationErrorCode` / `PostProcessErrorCode` literal sets let
|
|
837
|
+
* TS narrow each arm to the concrete
|
|
663
838
|
* class (charter P3 union discoverability — every fan-out member is reachable
|
|
664
839
|
* in an exhaustive switch, no untyped escape). Example:
|
|
665
840
|
*
|
|
@@ -670,7 +845,8 @@ export type RendererLostListener = (info: RendererLostInfo) => void;
|
|
|
670
845
|
* case 'asset-not-registered': // AssetRuntimeError arm, err narrowed here
|
|
671
846
|
* return report(err.hint);
|
|
672
847
|
* // ...one arm per RhiErrorCode | RenderErrorCode | AssetRuntimeErrorCode
|
|
673
|
-
* // | SkinErrorCode |
|
|
848
|
+
* // | SkinErrorCode | GpuDrivenPreparationErrorCode |
|
|
849
|
+
* // PostProcessErrorCode member; no default needed,
|
|
674
850
|
* // TS flags every unhandled code at compile time.
|
|
675
851
|
* }
|
|
676
852
|
* });
|
|
@@ -681,6 +857,7 @@ export type RendererError =
|
|
|
681
857
|
| RenderGraphError
|
|
682
858
|
| ImageError
|
|
683
859
|
| RenderError
|
|
860
|
+
| GpuDrivenPreparationError
|
|
684
861
|
| AssetRuntimeError
|
|
685
862
|
| SkinError
|
|
686
863
|
| PostProcessError;
|
|
@@ -725,6 +902,11 @@ export const RENDER_GRAPH_EXECUTION_PHASE_CATALOG = [
|
|
|
725
902
|
'record/graph-execute/bloom-blur-h',
|
|
726
903
|
'record/graph-execute/bloom-blur-v',
|
|
727
904
|
'record/graph-execute/bloom-composite',
|
|
905
|
+
'record/graph-execute/ssr-hiz',
|
|
906
|
+
'record/graph-execute/ssr-trace',
|
|
907
|
+
'record/graph-execute/ssr-temporal',
|
|
908
|
+
'record/graph-execute/ssr-reflection-mip',
|
|
909
|
+
'record/graph-execute/ssr-compose',
|
|
728
910
|
'record/graph-execute/other',
|
|
729
911
|
] as const;
|
|
730
912
|
|
|
@@ -814,11 +996,17 @@ export interface RendererOptions {
|
|
|
814
996
|
readonly profiler?: Profiler | undefined;
|
|
815
997
|
/** Explicitly request timestamp-query for receipt-bound GPU profiling. */
|
|
816
998
|
readonly captureGpuTimings?: boolean | undefined;
|
|
999
|
+
/** Opt into full-frame reflection fallback pixel readback and hashing for diagnostics. */
|
|
1000
|
+
readonly captureReflectionFallbackReadback?: boolean | undefined;
|
|
817
1001
|
/** Optional host-owned RHI lifecycle instrumentation, such as recording. */
|
|
818
1002
|
readonly rhiInstrumentation?: RhiBackendInstrumentation | undefined;
|
|
819
1003
|
/** Optional bounded GPU pass timing facts; this is not frame latency. */
|
|
820
1004
|
readonly gpuPassTiming?: GpuPassTimingOptions | undefined;
|
|
821
|
-
/**
|
|
1005
|
+
/**
|
|
1006
|
+
* Exact source/tree/lock/build identity binding for the renderer-owned SSR seam.
|
|
1007
|
+
* Opts into one format-capability probe during device-generation initialization;
|
|
1008
|
+
* camera ScreenSpaceReflection still controls all per-frame SSR work.
|
|
1009
|
+
*/
|
|
822
1010
|
readonly ssrIdentity?: SsrAdmissionIdentity | undefined;
|
|
823
1011
|
// feat-20260608-create-app-param-surface-trim / M1 / AC-02: `clearColor`
|
|
824
1012
|
// was deleted as a one-cut breaking change (AGENTS.md Change stance +
|
|
@@ -15,6 +15,7 @@ import type {
|
|
|
15
15
|
TextureFormat,
|
|
16
16
|
TextureView,
|
|
17
17
|
} from '@forgeax/engine-rhi';
|
|
18
|
+
import { RhiError } from '@forgeax/engine-rhi';
|
|
18
19
|
import {
|
|
19
20
|
buildFullscreenPostProcessPass,
|
|
20
21
|
createFullscreenBindGroup,
|
|
@@ -28,7 +29,7 @@ import type { _InternalRenderPipelineContext } from './record/render-context';
|
|
|
28
29
|
import { recordFxaaPass } from './record/skybox-post-pass';
|
|
29
30
|
import type { RenderPipelineContext } from './render-contract';
|
|
30
31
|
import { getOrCreateSsaoBuffers, getOrCreateSsaoFallbackTexture } from './ssao-buffers';
|
|
31
|
-
import { getSsaoParameters } from './ssao-config';
|
|
32
|
+
import { getSsaoParameters, SSAO_SAMPLE_COUNTS } from './ssao-config';
|
|
32
33
|
|
|
33
34
|
type DepthResolutionContext = Pick<_InternalRenderPipelineContext, 'runtime'> & {
|
|
34
35
|
readonly frameState: {
|
|
@@ -198,6 +199,12 @@ function ensureSsaoRecordCompanions(internals: _InternalRenderPipelineContext):
|
|
|
198
199
|
function buildSsaoUniformPayload(internals: _InternalRenderPipelineContext): Float32Array {
|
|
199
200
|
const { camera, frameState } = internals;
|
|
200
201
|
const sProj = computeProjectionMatrix(camera);
|
|
202
|
+
if (camera.temporal?.currentJitterUv !== undefined) {
|
|
203
|
+
const jitter = mat4.identity(mat4.create());
|
|
204
|
+
jitter[12] = camera.temporal.currentJitterUv[0] * 2;
|
|
205
|
+
jitter[13] = camera.temporal.currentJitterUv[1] * -2;
|
|
206
|
+
mat4.multiply(sProj, jitter, sProj);
|
|
207
|
+
}
|
|
201
208
|
const sView = computeViewMatrix(camera);
|
|
202
209
|
const invProj = mat4.create();
|
|
203
210
|
mat4.invert(invProj, sProj);
|
|
@@ -214,6 +221,7 @@ function buildSsaoUniformPayload(internals: _InternalRenderPipelineContext): Flo
|
|
|
214
221
|
out[48] = parameters.intensity;
|
|
215
222
|
out[49] = parameters.radius;
|
|
216
223
|
out[50] = parameters.bias;
|
|
224
|
+
out[51] = SSAO_SAMPLE_COUNTS[parameters.quality];
|
|
217
225
|
return out;
|
|
218
226
|
}
|
|
219
227
|
|
|
@@ -256,7 +264,19 @@ export function recordSsaoCalcPass(
|
|
|
256
264
|
const { runtime, pipelineState, encoder } = _c;
|
|
257
265
|
const pp = pipelineState.perPassResources;
|
|
258
266
|
|
|
259
|
-
if (
|
|
267
|
+
if (runtime.device.caps.backendKind === 'wgpu-webgl2') {
|
|
268
|
+
throw new RhiError({
|
|
269
|
+
code: 'feature-not-enabled',
|
|
270
|
+
expected: 'SSAO raw depth sampling on a WebGPU-capable backend',
|
|
271
|
+
hint: 'use WebGPU for SSAO or disable StandardProfile.ssao on the GLES fallback',
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
if (pp.ssaoCalcPipeline === null || pp.ssaoBgl === null) {
|
|
275
|
+
throw new PostProcessError({
|
|
276
|
+
code: 'post-process-not-found',
|
|
277
|
+
detail: { id: 'forgeax::post::ssao-calc' },
|
|
278
|
+
});
|
|
279
|
+
}
|
|
260
280
|
if (graphViews === undefined && (resolveCtx === undefined || ssaoRawKey === undefined)) return;
|
|
261
281
|
|
|
262
282
|
const ssaoRawView =
|
|
@@ -392,7 +412,12 @@ export function recordSsaoBlurPass(
|
|
|
392
412
|
const { runtime, pipelineState, encoder } = _c;
|
|
393
413
|
const pp = pipelineState.perPassResources;
|
|
394
414
|
|
|
395
|
-
if (pp.ssaoBlurPipeline === null || pp.ssaoBgl === null)
|
|
415
|
+
if (pp.ssaoBlurPipeline === null || pp.ssaoBgl === null) {
|
|
416
|
+
throw new PostProcessError({
|
|
417
|
+
code: 'post-process-not-found',
|
|
418
|
+
detail: { id: 'forgeax::post::ssao-blur' },
|
|
419
|
+
});
|
|
420
|
+
}
|
|
396
421
|
if (
|
|
397
422
|
graphViews === undefined &&
|
|
398
423
|
(resolveCtx === undefined || ssaoBlurredKey === undefined || ssaoRawKey === undefined)
|
|
@@ -551,6 +576,7 @@ function dispatchFullscreenPass(
|
|
|
551
576
|
graphOutputFormat?: GPUTextureFormat,
|
|
552
577
|
graphDepthView?: TextureView,
|
|
553
578
|
paramsOverride?: Uint8Array,
|
|
579
|
+
fragmentEntryPoint?: string,
|
|
554
580
|
): void {
|
|
555
581
|
if (shader === 'fxaa') {
|
|
556
582
|
if (resolveCtx === undefined) {
|
|
@@ -559,7 +585,7 @@ function dispatchFullscreenPass(
|
|
|
559
585
|
detail: { readsKey: reads[0] ?? 'ldrColor', passName: name },
|
|
560
586
|
});
|
|
561
587
|
}
|
|
562
|
-
recordFxaaPass(requireRenderGraphRecordContext(ctx), resolveCtx, graphPass);
|
|
588
|
+
recordFxaaPass(requireRenderGraphRecordContext(ctx), resolveCtx, graphPass, paramsOverride);
|
|
563
589
|
return;
|
|
564
590
|
}
|
|
565
591
|
const lookup = ctx.runtime.lookupPostProcess;
|
|
@@ -773,7 +799,8 @@ function dispatchFullscreenPass(
|
|
|
773
799
|
const lookupPipeline = ctx.runtime.getPostProcessPipeline;
|
|
774
800
|
if (lookupPipeline === undefined) return;
|
|
775
801
|
const postColorFormat = writeFormat;
|
|
776
|
-
const
|
|
802
|
+
const pipelineEntry = fragmentEntryPoint === undefined ? entry : { ...entry, fragmentEntryPoint };
|
|
803
|
+
const pipeline = lookupPipeline(shader, built.bindGroupLayout, [postColorFormat], pipelineEntry);
|
|
777
804
|
if (pipeline === null) return;
|
|
778
805
|
const handle = built.createHandle(name, pipeline, paramsBuffer);
|
|
779
806
|
|
|
@@ -814,6 +841,7 @@ export function encodeFullscreenPass(
|
|
|
814
841
|
readonly rawSwapchainOutput?: boolean | undefined;
|
|
815
842
|
readonly depthView?: TextureView | undefined;
|
|
816
843
|
readonly paramsOverride?: Uint8Array | undefined;
|
|
844
|
+
readonly fragmentEntryPoint?: string | undefined;
|
|
817
845
|
},
|
|
818
846
|
): void {
|
|
819
847
|
dispatchFullscreenPass(
|
|
@@ -829,5 +857,6 @@ export function encodeFullscreenPass(
|
|
|
829
857
|
input.outputFormat,
|
|
830
858
|
input.depthView,
|
|
831
859
|
input.paramsOverride,
|
|
860
|
+
input.fragmentEntryPoint,
|
|
832
861
|
);
|
|
833
862
|
}
|