@forgeax/engine-render 0.1.27 → 0.1.29
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 +842 -124
- package/dist/assembly/atmosphere-shader-prewarm.d.ts +6 -0
- package/dist/assembly/atmosphere-shader-prewarm.d.ts.map +1 -0
- package/dist/assembly/dynamic-geometry-host.d.ts +52 -0
- package/dist/assembly/dynamic-geometry-host.d.ts.map +1 -0
- 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 +19 -0
- package/dist/assembly/host-contract.d.ts.map +1 -1
- package/dist/assembly/material/assembly.d.ts +7 -0
- package/dist/assembly/material/assembly.d.ts.map +1 -1
- 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/failure-location.d.ts +12 -0
- package/dist/assembly/recovery/failure-location.d.ts.map +1 -0
- package/dist/assembly/recovery/renderer-recover.d.ts +6 -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 +6 -0
- 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 +3 -3
- package/dist/{chunk-ADHHVYLW.mjs → chunk-33XZFTQU.mjs} +245 -39
- package/dist/chunk-33XZFTQU.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-KM2NOX2I.mjs → chunk-BQVQOQJH.mjs} +958 -254
- package/dist/chunk-BQVQOQJH.mjs.map +1 -0
- package/dist/{chunk-HKXTW355.mjs → chunk-BTWH7BP4.mjs} +386 -17
- package/dist/chunk-BTWH7BP4.mjs.map +1 -0
- package/dist/{chunk-TMIASV2N.mjs → chunk-FUODTTIA.mjs} +3934 -676
- package/dist/chunk-FUODTTIA.mjs.map +1 -0
- package/dist/{chunk-FJ6P52EE.mjs → chunk-ILQ5MEZF.mjs} +3 -17
- package/dist/chunk-ILQ5MEZF.mjs.map +1 -0
- package/dist/{chunk-E34VL5VI.mjs → chunk-JQTSEI3Z.mjs} +3 -3
- package/dist/{chunk-E34VL5VI.mjs.map → chunk-JQTSEI3Z.mjs.map} +1 -1
- package/dist/{chunk-GE3SDD72.mjs → chunk-NICXSHAT.mjs} +16 -38
- package/dist/chunk-NICXSHAT.mjs.map +1 -0
- package/dist/{chunk-ZZ4YQ474.mjs → chunk-NRNXBLIJ.mjs} +577 -7
- package/dist/chunk-NRNXBLIJ.mjs.map +1 -0
- package/dist/{chunk-JDWARUOI.mjs → chunk-PA5DRJNI.mjs} +17 -3
- package/dist/chunk-PA5DRJNI.mjs.map +1 -0
- package/dist/{chunk-XDP6XE5V.mjs → chunk-S4DNKQYQ.mjs} +1118 -446
- package/dist/chunk-S4DNKQYQ.mjs.map +1 -0
- package/dist/components/camera.d.ts +62 -2
- package/dist/components/camera.d.ts.map +1 -1
- package/dist/components/index.d.ts +1 -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/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/construct-renderer.mjs +13805 -7186
- package/dist/construct-renderer.mjs.map +1 -1
- package/dist/device/gpu-residency.d.ts +11 -17
- package/dist/device/gpu-residency.d.ts.map +1 -1
- package/dist/device/mesh-residency-lifetime.d.ts +21 -0
- package/dist/device/mesh-residency-lifetime.d.ts.map +1 -0
- package/dist/dynamic-geometry.d.ts +125 -0
- package/dist/dynamic-geometry.d.ts.map +1 -0
- package/dist/environment/background.d.ts +6 -0
- package/dist/environment/background.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 +7 -4
- package/dist/errors/render.d.ts.map +1 -1
- package/dist/extract/camera.d.ts.map +1 -1
- package/dist/extract/gpu-driven.d.ts +33 -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/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.map +1 -1
- package/dist/gpu-driven/production-raster.d.ts +144 -23
- 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-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 +6 -0
- package/dist/hdrp-buffers.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.map +1 -1
- package/dist/index.d.ts +21 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +8 -7
- package/dist/index.mjs.map +1 -1
- package/dist/inspection-types.d.ts +164 -0
- 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 +118 -10
- 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 +5 -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 +21 -5
- package/dist/pbr-pipeline.d.ts.map +1 -1
- 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-builder.d.ts +2 -1
- 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/points-lines/standard-owner.d.ts +1 -1
- package/dist/points-lines/standard-owner.d.ts.map +1 -1
- 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 +106 -5
- 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 +39 -4
- package/dist/record/frame.d.ts.map +1 -1
- package/dist/record/main-pass-geometry.d.ts +7 -8
- package/dist/record/main-pass-geometry.d.ts.map +1 -1
- package/dist/record/main-pass-material.d.ts +38 -1
- 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 +12 -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 +2 -9
- package/dist/record/recovery-pipeline.d.ts.map +1 -1
- package/dist/record/render-context.d.ts +76 -26
- 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 +35 -7
- 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/record-owner.d.ts +0 -2
- package/dist/reflection/record-owner.d.ts.map +1 -1
- package/dist/render-contract.d.ts +185 -30
- 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 +64 -5
- package/dist/render-pipeline.d.ts.map +1 -1
- package/dist/render-system-extract-tail.d.ts +7 -5
- package/dist/render-system-extract-tail.d.ts.map +1 -1
- package/dist/render-system-extract.d.ts +101 -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 +34 -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 +29 -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/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 +2 -1
- package/dist/temporal/standard-scene-data.d.ts.map +1 -1
- package/dist/temporal/temporal-view.d.ts +2 -0
- package/dist/temporal/temporal-view.d.ts.map +1 -1
- package/dist/typed-render-graph-primitives.d.ts +35 -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/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__/detached-inspection.integration.test.ts +5 -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-host.unit.test.ts +1123 -0
- package/src/__tests__/dynamic-geometry.unit.test.ts +233 -0
- package/src/__tests__/factory-contract.integration.test.ts +73 -22
- 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-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 +287 -6
- 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 +264 -0
- package/src/__tests__/gpu-driven-mesh-world-identity.unit.test.ts +349 -0
- package/src/__tests__/gpu-driven-pbr.dawn.test.ts +1417 -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 +1075 -93
- 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 +159 -52
- package/src/__tests__/gpu-pass-timing.browser.test.ts +6 -1
- 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 +559 -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 +52 -2
- package/src/__tests__/mesh-buffer-usage-surface.unit.test.ts +4 -0
- package/src/__tests__/mesh-submission-lifetime.unit.test.ts +53 -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 +37 -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__/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 +35 -4
- 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 +104 -0
- package/src/__tests__/reflection-probe-record-owner.characterization.unit.test.ts +2 -1
- package/src/__tests__/render-error-code-owner.test-d.ts +4 -0
- package/src/__tests__/render-error-detail-ssot.test-d.ts +22 -0
- package/src/__tests__/render-error-exhaustive.test-d.ts +15 -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 +914 -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 +61 -1
- package/src/__tests__/renderer-frame-transaction.integration.test.ts +923 -5
- package/src/__tests__/shader-manifest-fixture.ts +39 -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 +118 -14
- package/src/__tests__/specular-environment-scale.dawn.test.ts +156 -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-format-probe-gating.integration.test.ts +82 -0
- package/src/__tests__/ssr-gpu-dispatch.browser.test.ts +91 -0
- package/src/__tests__/ssr-gpu-dispatch.dawn.test.ts +112 -0
- package/src/__tests__/ssr-gpu-dispatch.ts +946 -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 +44 -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 +38 -0
- package/src/__tests__/standard-pipeline.integration.test.ts +320 -3
- package/src/__tests__/standard-profile-oracle.unit.test.ts +22 -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 +193 -0
- package/src/__tests__/taa-history-clipping.dawn.test.ts +328 -0
- package/src/__tests__/taa-neighborhood-equivalence.dawn.test.ts +778 -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 +341 -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__/texture-usage-surface.unit.test.ts +4 -2
- 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/assembly/atmosphere-shader-prewarm.ts +38 -0
- package/src/assembly/dynamic-geometry-host.ts +887 -0
- 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 +36 -0
- package/src/assembly/material/assembly.ts +38 -0
- package/src/assembly/material-shader-policy.ts +71 -28
- package/src/assembly/recovery/failure-location.ts +62 -0
- package/src/assembly/recovery/renderer-recover.ts +19 -17
- package/src/assembly/renderer-facade.ts +29 -0
- 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 +32 -0
- 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 +142 -121
- 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 +675 -614
- package/src/assembly/webgpu-vertex-layouts.ts +233 -87
- package/src/components/__tests__/camera-exposure.contract.unit.test.ts +153 -0
- package/src/components/camera.ts +287 -7
- package/src/components/index.ts +1 -0
- package/src/components/instances.ts +45 -18
- package/src/components/scene-instance.ts +2 -1
- package/src/components/screen-space-reflection.ts +21 -0
- package/src/components/sprite-animation.ts +3 -3
- package/src/components/sprite-instances.ts +1 -1
- package/src/device/gpu-residency.ts +96 -93
- package/src/device/mesh-residency-lifetime.ts +73 -0
- package/src/dynamic-geometry.ts +736 -0
- package/src/environment/background.ts +263 -0
- package/src/errors/gpu-driven.ts +39 -5
- package/src/errors/render.ts +27 -3
- package/src/extract/camera.ts +26 -1
- package/src/extract/gpu-driven.ts +185 -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 +424 -102
- package/src/gpu-driven/pbr-program.ts +31 -0
- package/src/gpu-driven/prepared-draw.ts +29 -4
- package/src/gpu-driven/production-raster.ts +2267 -694
- package/src/gpu-driven/shadow-views.ts +539 -0
- package/src/gpu-driven/view-gpu.ts +188 -41
- package/src/gpu-scene-schema.ts +52 -11
- package/src/gpu-scene.ts +186 -99
- package/src/gpu-texture-usage.ts +1 -0
- package/src/hdrp-buffers.ts +72 -36
- package/src/ibl/frame-resources.ts +38 -0
- package/src/ibl/skylight-bind-group.ts +5 -4
- package/src/index.ts +125 -1
- package/src/inspection-types.ts +191 -0
- 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 +145 -0
- package/src/materials.ts +44 -8
- package/src/pbr-pipeline.ts +159 -17
- package/src/pipeline/standard-forward-lane.ts +52 -24
- 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 +192 -59
- package/src/pipeline/standard-post.ts +186 -27
- package/src/pipeline-builder.ts +16 -6
- package/src/pipeline-spec-types.ts +4 -0
- package/src/pipeline-spec.ts +37 -29
- package/src/points-lines/standard-owner.ts +6 -14
- package/src/prepare/prepared-graphics-resolver.ts +9 -2
- package/src/record/__tests__/material-slot-plan.unit.test.ts +48 -0
- package/src/record/__tests__/mesh-ssbo.unit.test.ts +40 -1
- package/src/record/__tests__/recovery-pipeline.unit.test.ts +2 -29
- package/src/record/__tests__/sprite-material-abi.unit.test.ts +36 -5
- 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 +12 -11
- package/src/record/frame-snapshot.ts +133 -23
- package/src/record/frame-targets.ts +9 -0
- package/src/record/frame.ts +727 -133
- package/src/record/main-pass-geometry.ts +162 -98
- package/src/record/main-pass-material.ts +115 -26
- package/src/record/main-pass-sprite-draws.ts +18 -107
- package/src/record/main-pass.ts +78 -8
- package/src/record/material-uniforms.ts +1 -1
- package/src/record/mesh-ssbo.ts +59 -15
- package/src/record/prepared-material-bindings.ts +234 -0
- package/src/record/recovery-pipeline.ts +59 -136
- package/src/record/render-context.ts +92 -22
- package/src/record/shadow-pass.ts +1231 -209
- package/src/record/skybox-post-pass.ts +14 -3
- package/src/record/typed-frame-graph.ts +1006 -53
- package/src/record/view-ubo.ts +11 -0
- package/src/recovery/render-system-candidate.ts +90 -66
- package/src/recovery/render-system-roots.ts +113 -0
- package/src/recovery/types.ts +77 -0
- package/src/reflection/record-owner.ts +26 -54
- package/src/render-contract.ts +219 -25
- package/src/render-graph-primitives.ts +6 -2
- package/src/render-pipeline.ts +70 -1
- package/src/render-system-extract-tail.ts +409 -160
- package/src/render-system-extract.ts +376 -102
- package/src/render-system-projections.ts +241 -0
- package/src/render-system.ts +692 -791
- package/src/scene/render-scene-types.ts +13 -4
- package/src/scene/render-scene.ts +569 -355
- package/src/scene/shadow-visibility.ts +21 -0
- 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 +777 -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 +74 -12
- package/src/temporal/history.ts +3 -1
- package/src/temporal/inspection.ts +2 -1
- package/src/temporal/standard-scene-data.ts +3 -1
- package/src/temporal/temporal-view.ts +3 -0
- package/src/transmission/__tests__/standard-transmission.dawn.test.ts +204 -139
- package/src/typed-render-graph-primitives.ts +266 -74
- package/src/typed-shadow-passes.ts +122 -12
- package/src/volume/temporal.ts +10 -0
- package/dist/chunk-ADHHVYLW.mjs.map +0 -1
- package/dist/chunk-FJ6P52EE.mjs.map +0 -1
- package/dist/chunk-GE3SDD72.mjs.map +0 -1
- package/dist/chunk-GF523LHF.mjs.map +0 -1
- package/dist/chunk-HKXTW355.mjs.map +0 -1
- package/dist/chunk-JDWARUOI.mjs.map +0 -1
- package/dist/chunk-KM2NOX2I.mjs.map +0 -1
- package/dist/chunk-TMIASV2N.mjs.map +0 -1
- package/dist/chunk-XDP6XE5V.mjs.map +0 -1
- package/dist/chunk-ZZ4YQ474.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
|
@@ -24,8 +24,10 @@ import type {
|
|
|
24
24
|
import type { SkinError } from '@forgeax/engine-skinning';
|
|
25
25
|
import type { ImageError } from '@forgeax/engine-types';
|
|
26
26
|
import type { RhiBackendInstrumentation } from './assembly/backend-contract';
|
|
27
|
-
import type { Antialias, BloomEnabled, Tonemap } from './components/camera';
|
|
27
|
+
import type { Antialias, BloomEnabled, CameraExposure, Tonemap } from './components/camera';
|
|
28
|
+
import type { ScreenSpaceReflectionData } from './components/screen-space-reflection';
|
|
28
29
|
import type { EnvironmentInspection } from './environment/inspection';
|
|
30
|
+
import type { GpuDrivenPreparationError } from './errors/gpu-driven';
|
|
29
31
|
import type { RecoveryOutcome, RecoveryPhase } from './errors/recover';
|
|
30
32
|
import type { RenderError } from './errors/render';
|
|
31
33
|
import type { RenderFeature, RenderFeatureDiagnostics } from './features/types';
|
|
@@ -37,12 +39,16 @@ import type {
|
|
|
37
39
|
LodOcclusionInspection,
|
|
38
40
|
MotionBlurInspection,
|
|
39
41
|
ReflectionProbeInspection,
|
|
42
|
+
RenderFeatureGraphInspection,
|
|
43
|
+
RenderFeatureHostInspection,
|
|
40
44
|
RenderSceneInspection,
|
|
41
45
|
SsrDependenciesInspection,
|
|
46
|
+
SsrSpatialInspection,
|
|
42
47
|
TemporalTargetInspection,
|
|
43
48
|
TransmissionInspection,
|
|
44
49
|
} from './inspection-types';
|
|
45
|
-
import type { InstanceCollectionInspection } from './instances';
|
|
50
|
+
import type { InstanceCollectionInspection, InstanceCollectionStore } from './instances';
|
|
51
|
+
import type { RenderSceneBounds } from './scene/render-scene-types';
|
|
46
52
|
import type { SsrAdmissionIdentity } from './ssr/identity';
|
|
47
53
|
import type {
|
|
48
54
|
RenderTarget,
|
|
@@ -58,11 +64,21 @@ import type { TemporalInspection } from './temporal/inspection';
|
|
|
58
64
|
export type { TransmissionInspection } from './inspection-types';
|
|
59
65
|
export type { PointsLinesInspection } from './points-lines/inspection';
|
|
60
66
|
|
|
67
|
+
import type {
|
|
68
|
+
DynamicGeometryCandidate,
|
|
69
|
+
DynamicGeometryError,
|
|
70
|
+
DynamicGeometryInspection,
|
|
71
|
+
DynamicGeometryOrdering,
|
|
72
|
+
DynamicGeometryPrepareInput,
|
|
73
|
+
DynamicGeometryReceipt,
|
|
74
|
+
} from './dynamic-geometry';
|
|
61
75
|
import type {
|
|
62
76
|
IblBindingInspection,
|
|
63
77
|
MeshMaterialBindingObservation,
|
|
64
78
|
} from './mesh-material-bindings';
|
|
65
79
|
import type { StandardLightingInspection } from './pipeline/standard-lighting/inspection';
|
|
80
|
+
import type { AutoExposureInspection } from './pipeline/standard-output/auto-exposure/inspection';
|
|
81
|
+
import type { StandardLutInspection } from './pipeline/standard-output/lut-state';
|
|
66
82
|
import type { StandardProfile } from './pipeline/standard-profile';
|
|
67
83
|
import type { PointShadowInspection } from './point-shadow-inspection';
|
|
68
84
|
import type { PostProcessError } from './post-process-errors';
|
|
@@ -97,6 +113,15 @@ export type RenderResult<T, E> =
|
|
|
97
113
|
/** The only World data boundary accepted by the M6 renderer contract. */
|
|
98
114
|
export type RenderWorldLease = RenderReadLease;
|
|
99
115
|
|
|
116
|
+
/** Camera-owned color/exposure facts projected once at the frame boundary. */
|
|
117
|
+
export interface CameraOutputSnapshot {
|
|
118
|
+
readonly exposure: CameraExposure;
|
|
119
|
+
readonly temperature: number;
|
|
120
|
+
readonly tint: number;
|
|
121
|
+
readonly colorLut: number;
|
|
122
|
+
readonly colorLutStrength: number;
|
|
123
|
+
}
|
|
124
|
+
|
|
100
125
|
/**
|
|
101
126
|
* Camera facts shared by extract, record, and scene owners.
|
|
102
127
|
*
|
|
@@ -130,12 +155,16 @@ export interface CameraSnapshot {
|
|
|
130
155
|
readonly tonemap: Tonemap;
|
|
131
156
|
readonly exposure: number;
|
|
132
157
|
readonly whitePoint: number;
|
|
158
|
+
/** Camera schema output projection consumed by Standard prepare/inspection. */
|
|
159
|
+
readonly output?: CameraOutputSnapshot;
|
|
133
160
|
readonly antialias: Antialias;
|
|
134
161
|
readonly bloom: BloomEnabled;
|
|
135
162
|
readonly bloomThreshold: number;
|
|
136
163
|
readonly bloomIntensity: number;
|
|
137
164
|
readonly bloomBlurRadius: number;
|
|
138
165
|
readonly clearColor: readonly [number, number, number, number];
|
|
166
|
+
/** Optional active-camera SSR authoring fact, copied from the ECS schema. */
|
|
167
|
+
readonly screenSpaceReflection?: ScreenSpaceReflectionData;
|
|
139
168
|
/** Renderer-owned temporal projection used by Standard's TAA producer. */
|
|
140
169
|
readonly temporal?: TemporalView;
|
|
141
170
|
/** Active-camera motion blur parameters, present only when demanded. */
|
|
@@ -180,8 +209,43 @@ interface RenderPipelineStateView {
|
|
|
180
209
|
* RenderSystemRuntime structurally satisfies this contract, but the public
|
|
181
210
|
* frame surface does not depend on that assembly owner.
|
|
182
211
|
*/
|
|
212
|
+
interface RenderPipelineObservationCapture {
|
|
213
|
+
readonly domain: 'linear-hdr' | 'linear-ldr' | 'final-srgb';
|
|
214
|
+
readonly format: TextureFormat;
|
|
215
|
+
readonly device: RhiDevice;
|
|
216
|
+
readonly texture: Texture;
|
|
217
|
+
readonly buffer: Buffer;
|
|
218
|
+
readonly frameNumber: number;
|
|
219
|
+
readonly deviceGeneration: number;
|
|
220
|
+
readonly graphGeneration: number;
|
|
221
|
+
readonly backendId: string;
|
|
222
|
+
readonly width: number;
|
|
223
|
+
readonly height: number;
|
|
224
|
+
readonly bytesPerRow: number;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
interface RenderPipelineObservationCaptureOwner {
|
|
228
|
+
readonly register: (capture: RenderPipelineObservationCapture) => void;
|
|
229
|
+
readonly consume: (frameNumber: number) => readonly RenderPipelineObservationCapture[];
|
|
230
|
+
readonly drain: () => readonly RenderPipelineObservationCapture[];
|
|
231
|
+
}
|
|
232
|
+
|
|
183
233
|
interface RenderPipelineRuntime {
|
|
184
234
|
readonly device: RhiDevice;
|
|
235
|
+
/** Current renderer device generation used to fence graph captures. */
|
|
236
|
+
readonly deviceGeneration?: number | undefined;
|
|
237
|
+
/** Public receipt identity reserved for the frame currently being encoded. */
|
|
238
|
+
readonly observationFrameId?: number | undefined;
|
|
239
|
+
/** Renderer-issued graph fence populated by the graph owner during encoding. */
|
|
240
|
+
observationGraphGeneration?: number | undefined;
|
|
241
|
+
/** Per-renderer bridge for receipt-bound graph color captures. */
|
|
242
|
+
readonly observationCaptureOwner?: RenderPipelineObservationCaptureOwner | undefined;
|
|
243
|
+
/**
|
|
244
|
+
* Domains armed for the frame currently being encoded. An absent or empty
|
|
245
|
+
* set is the normal zero-cost path; typed graph capture passes remain
|
|
246
|
+
* declared for topology inspection but do not allocate or copy anything.
|
|
247
|
+
*/
|
|
248
|
+
readonly observationCaptureDomains?: readonly FrameObservationDomain[] | undefined;
|
|
185
249
|
/** Runtime-owned shader module factory used by built-in graph producers. */
|
|
186
250
|
readonly shaderModuleFactory?: {
|
|
187
251
|
createShaderModule(input: {
|
|
@@ -192,6 +256,16 @@ interface RenderPipelineRuntime {
|
|
|
192
256
|
RhiError
|
|
193
257
|
>;
|
|
194
258
|
};
|
|
259
|
+
/** Immediate factory used by same-frame built-in producers after runtime warm-up. */
|
|
260
|
+
readonly immediateShaderModuleFactory?: {
|
|
261
|
+
createShaderModule(input: {
|
|
262
|
+
readonly code: string;
|
|
263
|
+
readonly label?: string | undefined;
|
|
264
|
+
}): import('@forgeax/engine-types').Result<
|
|
265
|
+
import('@forgeax/engine-rhi').ShaderModule,
|
|
266
|
+
RhiError
|
|
267
|
+
>;
|
|
268
|
+
};
|
|
195
269
|
readonly errorRegistry: { fire(error: RendererError): void };
|
|
196
270
|
readonly debugOverlay?: RenderDebugOverlay | undefined;
|
|
197
271
|
readonly lookupPostProcess?: (id: string) => PostProcessShaderEntry | undefined;
|
|
@@ -199,7 +273,7 @@ interface RenderPipelineRuntime {
|
|
|
199
273
|
readonly getPostProcessPipeline?: (
|
|
200
274
|
id: string,
|
|
201
275
|
bgl: BindGroupLayout,
|
|
202
|
-
|
|
276
|
+
colorFormats: readonly GPUTextureFormat[],
|
|
203
277
|
entry?: PostProcessShaderEntry,
|
|
204
278
|
) => RhiRenderPipeline | null;
|
|
205
279
|
}
|
|
@@ -242,6 +316,10 @@ export interface RenderPipelineContext {
|
|
|
242
316
|
readonly spotLightProjector?: SpotLightProjectorFrameContext;
|
|
243
317
|
/** Build-time composed utility sources for the renderer-owned volume passes. */
|
|
244
318
|
readonly volumetricFogShaders?: VolumetricFogShaderSources;
|
|
319
|
+
/** Build-time composed utility sources for the renderer-owned SSR passes. */
|
|
320
|
+
readonly ssrShaders?: SsrShaderSources;
|
|
321
|
+
/** Build-time composed utility sources for the renderer-owned atmosphere passes. */
|
|
322
|
+
readonly atmosphereShaders?: AtmosphereShaderSources;
|
|
245
323
|
}
|
|
246
324
|
|
|
247
325
|
/** Stable utility entry-point sources emitted by the shader manifest. */
|
|
@@ -252,6 +330,21 @@ export interface VolumetricFogShaderSources {
|
|
|
252
330
|
readonly composite: string;
|
|
253
331
|
}
|
|
254
332
|
|
|
333
|
+
/** Stable utility entry-point sources emitted by the shader manifest. */
|
|
334
|
+
export interface SsrShaderSources {
|
|
335
|
+
readonly hiz: string;
|
|
336
|
+
readonly hizReduce: string;
|
|
337
|
+
readonly trace: string;
|
|
338
|
+
readonly temporal: string;
|
|
339
|
+
readonly compose: string;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
/** Stable analytic-atmosphere entry-point sources emitted by the shader manifest. */
|
|
343
|
+
export interface AtmosphereShaderSources {
|
|
344
|
+
readonly cube: string;
|
|
345
|
+
readonly background: string;
|
|
346
|
+
}
|
|
347
|
+
|
|
255
348
|
/**
|
|
256
349
|
* GPU resources for one validated volumetric-fog candidate. The record stage
|
|
257
350
|
* owns residency and parameter uploads; graph passes consume this narrow view
|
|
@@ -296,8 +389,33 @@ export interface SpotLightProjectorFrameContext {
|
|
|
296
389
|
*/
|
|
297
390
|
export interface Renderer {
|
|
298
391
|
/** Renderer-owned authoring and update path for large instance collections. */
|
|
392
|
+
readonly instances: InstanceCollectionStore;
|
|
299
393
|
attach(world: World): RenderResult<RenderWorldLease, RenderError>;
|
|
394
|
+
/** Prepare a standard MeshAsset for the active device generation. */
|
|
395
|
+
prepareDynamicGeometry(
|
|
396
|
+
input: DynamicGeometryPrepareInput,
|
|
397
|
+
): Result<DynamicGeometryCandidate, DynamicGeometryError>;
|
|
398
|
+
/** Admit a prepared candidate; publication is tied to the next FrameReceipt. */
|
|
399
|
+
acceptDynamicGeometry(
|
|
400
|
+
candidate: DynamicGeometryCandidate,
|
|
401
|
+
ordering: DynamicGeometryOrdering,
|
|
402
|
+
): Result<DynamicGeometryCandidate, DynamicGeometryError>;
|
|
403
|
+
dynamicGeometryReceipt(candidate: DynamicGeometryCandidate): DynamicGeometryReceipt | undefined;
|
|
404
|
+
cancelDynamicGeometry(candidate: DynamicGeometryCandidate): Result<void, DynamicGeometryError>;
|
|
405
|
+
retireDynamicGeometry(candidate: DynamicGeometryCandidate): Result<void, DynamicGeometryError>;
|
|
300
406
|
draw(input: RenderFrameInput): RenderResult<FrameReceipt, RenderError>;
|
|
407
|
+
/**
|
|
408
|
+
* Arm one upcoming submitted frame for explicit color-domain observation.
|
|
409
|
+
* Observation buffers are not created, copied, mapped, or retained until a
|
|
410
|
+
* host calls this method before `draw()`. The demand is consumed only by a
|
|
411
|
+
* successful submit; a failed frame keeps it armed for a retry.
|
|
412
|
+
*
|
|
413
|
+
* This optional extension keeps older injected Renderer test doubles source
|
|
414
|
+
* compatible while concrete Engine renderers always implement it.
|
|
415
|
+
*/
|
|
416
|
+
requestObservation?: (
|
|
417
|
+
domains: readonly FrameObservationDomain[],
|
|
418
|
+
) => RenderResult<void, RenderError>;
|
|
301
419
|
createRenderTarget(descriptor: RenderTargetDescriptor): RenderResult<RenderTarget, RenderError>;
|
|
302
420
|
resizeRenderTarget(
|
|
303
421
|
target: RenderTarget,
|
|
@@ -314,6 +432,8 @@ export interface Renderer {
|
|
|
314
432
|
destroyRenderTarget(target: RenderTarget): RenderResult<void, RenderError>;
|
|
315
433
|
setProfile(profile: RenderProfile): RenderResult<void, RenderError>;
|
|
316
434
|
state(): RendererState;
|
|
435
|
+
/** Detached world bounds for one record in the last extracted World; undefined if unavailable. */
|
|
436
|
+
bounds(world: World, entity: number): RenderSceneBounds | undefined;
|
|
317
437
|
inspect(): RenderInspection;
|
|
318
438
|
observe(
|
|
319
439
|
receipt: FrameReceipt,
|
|
@@ -351,6 +471,8 @@ export type RendererEvent =
|
|
|
351
471
|
readonly kind: 'frame-submitted';
|
|
352
472
|
readonly frameId: number;
|
|
353
473
|
readonly deviceGeneration: number;
|
|
474
|
+
/** The exact receipt returned by the renderer's submit boundary. */
|
|
475
|
+
readonly receipt: FrameReceipt;
|
|
354
476
|
};
|
|
355
477
|
|
|
356
478
|
/** Package-local listener alias used by the renderer assembly implementation. */
|
|
@@ -380,8 +502,17 @@ export interface FrameEnvironment {
|
|
|
380
502
|
* only with the matching FrameReceipt after `receipt.completed` and returns a
|
|
381
503
|
* structured Result error when the generation or frame identity is stale.
|
|
382
504
|
*/
|
|
505
|
+
export type FrameObservationDomain = 'linear-hdr' | 'linear-ldr' | 'final-srgb';
|
|
506
|
+
|
|
507
|
+
export type FrameObservationInclude =
|
|
508
|
+
| 'timings'
|
|
509
|
+
| 'draws'
|
|
510
|
+
| 'bindings'
|
|
511
|
+
| 'target-readbacks'
|
|
512
|
+
| FrameObservationDomain;
|
|
513
|
+
|
|
383
514
|
export interface FrameObservationRequest {
|
|
384
|
-
readonly include: readonly
|
|
515
|
+
readonly include: readonly FrameObservationInclude[];
|
|
385
516
|
readonly targetReadbacks?: readonly RenderTargetReadbackTicket[];
|
|
386
517
|
}
|
|
387
518
|
|
|
@@ -394,6 +525,10 @@ export interface FrameObservationRequest {
|
|
|
394
525
|
export interface FrameReceipt {
|
|
395
526
|
readonly frameId: number;
|
|
396
527
|
readonly deviceGeneration: number;
|
|
528
|
+
/** Backend identity captured at submit and checked before observation. */
|
|
529
|
+
readonly backendId?: RhiCaps['backendKind'];
|
|
530
|
+
/** Monotonic compiled graph identity used by renderer-issued observations. */
|
|
531
|
+
readonly graphGeneration?: number;
|
|
397
532
|
readonly completed: Promise<RenderResult<void, RenderError>>;
|
|
398
533
|
}
|
|
399
534
|
|
|
@@ -406,6 +541,8 @@ export interface RenderFrameInput {
|
|
|
406
541
|
readonly leases: readonly RenderWorldLease[];
|
|
407
542
|
readonly camera: FrameCamera;
|
|
408
543
|
readonly environment: FrameEnvironment;
|
|
544
|
+
/** Fixed-step publication consumed by dynamic geometry candidates. */
|
|
545
|
+
readonly fixedStep?: number;
|
|
409
546
|
/** Optional profiler correlation token owned by App and consumed by Render. */
|
|
410
547
|
readonly profileFrame?: ProfileFrameToken;
|
|
411
548
|
}
|
|
@@ -414,16 +551,44 @@ export interface RenderFrameInput {
|
|
|
414
551
|
export interface FrameReceiptObservation {
|
|
415
552
|
readonly frameId: number;
|
|
416
553
|
readonly deviceGeneration: number;
|
|
417
|
-
readonly include: readonly
|
|
554
|
+
readonly include: readonly FrameObservationInclude[];
|
|
418
555
|
/** Receipt-bound Render-owned GPU pass facts; absent when not requested. */
|
|
419
556
|
readonly timings?: GpuPassTimingObservation | undefined;
|
|
420
557
|
/** Receipt-bound volume GPU timing facts; absent when not requested. */
|
|
421
558
|
readonly volumeTimings?: VolumeTimingObservation | undefined;
|
|
422
559
|
readonly targetReadbacks?: readonly RenderTargetReadbackData[];
|
|
560
|
+
/** Independent raw bytes captured from the requested linear/display domains. */
|
|
561
|
+
readonly observations?: readonly FrameDomainObservation[] | undefined;
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
export interface FrameDomainObservation {
|
|
565
|
+
readonly domain: FrameObservationDomain;
|
|
566
|
+
readonly bytes: Uint8Array;
|
|
567
|
+
readonly metadata: {
|
|
568
|
+
readonly frameId: number;
|
|
569
|
+
readonly deviceGeneration: number;
|
|
570
|
+
readonly backendId?: RhiCaps['backendKind'];
|
|
571
|
+
/** Native texture format of the copied attachment, including BGRA order. */
|
|
572
|
+
readonly format: TextureFormat;
|
|
573
|
+
readonly graphGeneration: number;
|
|
574
|
+
readonly textureIdentity: number;
|
|
575
|
+
readonly readbackIdentity: number;
|
|
576
|
+
readonly width: number;
|
|
577
|
+
readonly height: number;
|
|
578
|
+
readonly bytesPerRow: number;
|
|
579
|
+
readonly footprint: {
|
|
580
|
+
readonly resourceCount: number;
|
|
581
|
+
readonly bindGroupCount: number;
|
|
582
|
+
};
|
|
583
|
+
};
|
|
423
584
|
}
|
|
424
585
|
|
|
425
586
|
/** Stable backend facts for the Standard output transform projection. */
|
|
426
587
|
export interface RenderOutputInspection {
|
|
588
|
+
/** Camera-owned auto-exposure facts, detached from GPU state when available. */
|
|
589
|
+
readonly autoExposure?: AutoExposureInspection;
|
|
590
|
+
/** Renderer-owned detached LUT residency and receipt facts. */
|
|
591
|
+
readonly standardLut?: StandardLutInspection;
|
|
427
592
|
readonly outputTransform?: typeof STANDARD_OUTPUT_TRANSFORM_FEATURE_ID;
|
|
428
593
|
readonly displayEncoded: boolean;
|
|
429
594
|
readonly intermediateFormat?: TextureFormat;
|
|
@@ -471,6 +636,15 @@ export interface RenderObservationInspection {
|
|
|
471
636
|
/** Exact pass names and target descriptor from the committed graph. */
|
|
472
637
|
readonly passNames: readonly string[];
|
|
473
638
|
readonly standardOutputColor?: RenderStandardOutputColorInspection;
|
|
639
|
+
/** Monotonic, renderer-owned observation resource facts; no GPU handles. */
|
|
640
|
+
readonly resourceStats?: {
|
|
641
|
+
readonly allocationCount: number;
|
|
642
|
+
readonly liveCount: number;
|
|
643
|
+
readonly peakLiveCount: number;
|
|
644
|
+
readonly mapCount: number;
|
|
645
|
+
readonly readbackCount: number;
|
|
646
|
+
readonly liveByteLength: number;
|
|
647
|
+
};
|
|
474
648
|
}
|
|
475
649
|
|
|
476
650
|
/**
|
|
@@ -509,14 +683,24 @@ export interface RenderInspection {
|
|
|
509
683
|
readonly features: readonly string[];
|
|
510
684
|
/** Truthful lifecycle facts for every registered declarative feature. */
|
|
511
685
|
readonly featureDiagnostics: readonly RenderFeatureDiagnostics[];
|
|
686
|
+
/** Detached signature and prepared-resource counters for feature planning. */
|
|
687
|
+
readonly featureHost?: RenderFeatureHostInspection;
|
|
688
|
+
/** Detached typed-graph compile/reuse and candidate lifecycle counters. */
|
|
689
|
+
readonly featureGraph?: RenderFeatureGraphInspection;
|
|
690
|
+
/** Detached material texture-source probe counters from the last extract. */
|
|
691
|
+
readonly materialTextureSources?: import('./inspection-types').MaterialTextureSourceInspection;
|
|
512
692
|
readonly frustumStats: { readonly culled: number; readonly total: number };
|
|
513
693
|
readonly visibilityStats: { readonly explicitlyHidden: number };
|
|
514
694
|
/** Renderer-owned large-instance residency and upload facts. */
|
|
515
695
|
readonly instanceCollections: readonly InstanceCollectionInspection[];
|
|
696
|
+
/** Standard MeshAsset dynamic-candidate lifecycle facts. */
|
|
697
|
+
readonly dynamicGeometry?: DynamicGeometryInspection;
|
|
516
698
|
readonly renderScene: RenderSceneInspection;
|
|
517
699
|
readonly reflectionProbes: ReflectionProbeInspection;
|
|
518
700
|
/** Renderer-owned SSR dependency seam; consumer facts are projected from live owners. */
|
|
519
701
|
readonly ssrDependencies: SsrDependenciesInspection;
|
|
702
|
+
/** Renderer-owned SSR spatial status and bounded execution facts. */
|
|
703
|
+
readonly ssr: SsrSpatialInspection;
|
|
520
704
|
/** Last completed transmission candidate facts, detached from GPU handles. */
|
|
521
705
|
readonly transmission?: TransmissionInspection;
|
|
522
706
|
/** Last prepared Standard transport facts, detached from GPU handles. */
|
|
@@ -559,16 +743,12 @@ export interface RenderInspection {
|
|
|
559
743
|
readonly lastGeneration: number | undefined;
|
|
560
744
|
};
|
|
561
745
|
};
|
|
562
|
-
/**
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
readonly
|
|
568
|
-
readonly endpoint: 'surface.storage.raw';
|
|
569
|
-
readonly capability: RenderOutputInspection['capability'];
|
|
570
|
-
readonly presentationProof?: RhiCanvasSurfacePresentationProof;
|
|
571
|
-
readonly error: RenderOutputInspection['error'];
|
|
746
|
+
/**
|
|
747
|
+
* Output-transform facts from the same committed graph and physical surface.
|
|
748
|
+
* Keep this as one named subtree so AI consumers do not have to guess which
|
|
749
|
+
* detached fields belong to the output contract versus renderer lifecycle.
|
|
750
|
+
*/
|
|
751
|
+
readonly output: RenderOutputInspection;
|
|
572
752
|
readonly observation: RenderObservationInspection;
|
|
573
753
|
readonly environment: EnvironmentInspection;
|
|
574
754
|
readonly temporal: TemporalInspection;
|
|
@@ -602,6 +782,8 @@ export interface RenderInspection {
|
|
|
602
782
|
export type DrawOwnerOptions = {
|
|
603
783
|
readonly cameraOwner: number;
|
|
604
784
|
readonly resourceOwner: number;
|
|
785
|
+
/** Optional FrameCamera entity selection; absent preserves ActiveCamera semantics. */
|
|
786
|
+
readonly cameraEntityKey?: number;
|
|
605
787
|
readonly profileFrame?: ProfileFrameToken;
|
|
606
788
|
};
|
|
607
789
|
|
|
@@ -625,17 +807,18 @@ export type RendererLostListener = (info: RendererLostInfo) => void;
|
|
|
625
807
|
* exception), NOT the eliminated cross-cluster `RuntimeError` SSOT (D-3).
|
|
626
808
|
*
|
|
627
809
|
* Composition = `RhiError | RenderError | AssetRuntimeError | SkinError |
|
|
628
|
-
* PostProcessError`.
|
|
629
|
-
*
|
|
630
|
-
*
|
|
631
|
-
*
|
|
632
|
-
*
|
|
633
|
-
* `
|
|
634
|
-
* `
|
|
810
|
+
* GpuDrivenPreparationError | PostProcessError`. The GPU preparation arm is
|
|
811
|
+
* the renderer-owned producer contract: its closed `code` and typed `detail`
|
|
812
|
+
* identify the material, geometry, skin, generation, or shadow owner without making
|
|
813
|
+
* RHI errors carry render policy. `RecoverError` and `EngineEnvironmentError`
|
|
814
|
+
* are intentionally excluded — neither is ever emitted through the Renderer
|
|
815
|
+
* event stream (`RecoverError` returns from `recover()`,
|
|
816
|
+
* `EngineEnvironmentError` throws at construction).
|
|
635
817
|
*
|
|
636
818
|
* AI consumers do `switch (err.code)` over the union: the disjoint
|
|
637
819
|
* `RhiErrorCode` / `RenderErrorCode` / `AssetRuntimeErrorCode` / `SkinErrorCode`
|
|
638
|
-
* / `PostProcessErrorCode` literal sets let
|
|
820
|
+
* / `GpuDrivenPreparationErrorCode` / `PostProcessErrorCode` literal sets let
|
|
821
|
+
* TS narrow each arm to the concrete
|
|
639
822
|
* class (charter P3 union discoverability — every fan-out member is reachable
|
|
640
823
|
* in an exhaustive switch, no untyped escape). Example:
|
|
641
824
|
*
|
|
@@ -646,7 +829,8 @@ export type RendererLostListener = (info: RendererLostInfo) => void;
|
|
|
646
829
|
* case 'asset-not-registered': // AssetRuntimeError arm, err narrowed here
|
|
647
830
|
* return report(err.hint);
|
|
648
831
|
* // ...one arm per RhiErrorCode | RenderErrorCode | AssetRuntimeErrorCode
|
|
649
|
-
* // | SkinErrorCode |
|
|
832
|
+
* // | SkinErrorCode | GpuDrivenPreparationErrorCode |
|
|
833
|
+
* // PostProcessErrorCode member; no default needed,
|
|
650
834
|
* // TS flags every unhandled code at compile time.
|
|
651
835
|
* }
|
|
652
836
|
* });
|
|
@@ -657,6 +841,7 @@ export type RendererError =
|
|
|
657
841
|
| RenderGraphError
|
|
658
842
|
| ImageError
|
|
659
843
|
| RenderError
|
|
844
|
+
| GpuDrivenPreparationError
|
|
660
845
|
| AssetRuntimeError
|
|
661
846
|
| SkinError
|
|
662
847
|
| PostProcessError;
|
|
@@ -701,6 +886,11 @@ export const RENDER_GRAPH_EXECUTION_PHASE_CATALOG = [
|
|
|
701
886
|
'record/graph-execute/bloom-blur-h',
|
|
702
887
|
'record/graph-execute/bloom-blur-v',
|
|
703
888
|
'record/graph-execute/bloom-composite',
|
|
889
|
+
'record/graph-execute/ssr-hiz',
|
|
890
|
+
'record/graph-execute/ssr-trace',
|
|
891
|
+
'record/graph-execute/ssr-temporal',
|
|
892
|
+
'record/graph-execute/ssr-reflection-mip',
|
|
893
|
+
'record/graph-execute/ssr-compose',
|
|
704
894
|
'record/graph-execute/other',
|
|
705
895
|
] as const;
|
|
706
896
|
|
|
@@ -794,7 +984,11 @@ export interface RendererOptions {
|
|
|
794
984
|
readonly rhiInstrumentation?: RhiBackendInstrumentation | undefined;
|
|
795
985
|
/** Optional bounded GPU pass timing facts; this is not frame latency. */
|
|
796
986
|
readonly gpuPassTiming?: GpuPassTimingOptions | undefined;
|
|
797
|
-
/**
|
|
987
|
+
/**
|
|
988
|
+
* Exact source/tree/lock/build identity binding for the renderer-owned SSR seam.
|
|
989
|
+
* Opts into one format-capability probe during device-generation initialization;
|
|
990
|
+
* camera ScreenSpaceReflection still controls all per-frame SSR work.
|
|
991
|
+
*/
|
|
798
992
|
readonly ssrIdentity?: SsrAdmissionIdentity | undefined;
|
|
799
993
|
// feat-20260608-create-app-param-surface-trim / M1 / AC-02: `clearColor`
|
|
800
994
|
// was deleted as a one-cut breaking change (AGENTS.md Change stance +
|
|
@@ -551,6 +551,7 @@ function dispatchFullscreenPass(
|
|
|
551
551
|
graphOutputFormat?: GPUTextureFormat,
|
|
552
552
|
graphDepthView?: TextureView,
|
|
553
553
|
paramsOverride?: Uint8Array,
|
|
554
|
+
fragmentEntryPoint?: string,
|
|
554
555
|
): void {
|
|
555
556
|
if (shader === 'fxaa') {
|
|
556
557
|
if (resolveCtx === undefined) {
|
|
@@ -559,7 +560,7 @@ function dispatchFullscreenPass(
|
|
|
559
560
|
detail: { readsKey: reads[0] ?? 'ldrColor', passName: name },
|
|
560
561
|
});
|
|
561
562
|
}
|
|
562
|
-
recordFxaaPass(requireRenderGraphRecordContext(ctx), resolveCtx, graphPass);
|
|
563
|
+
recordFxaaPass(requireRenderGraphRecordContext(ctx), resolveCtx, graphPass, paramsOverride);
|
|
563
564
|
return;
|
|
564
565
|
}
|
|
565
566
|
const lookup = ctx.runtime.lookupPostProcess;
|
|
@@ -773,7 +774,8 @@ function dispatchFullscreenPass(
|
|
|
773
774
|
const lookupPipeline = ctx.runtime.getPostProcessPipeline;
|
|
774
775
|
if (lookupPipeline === undefined) return;
|
|
775
776
|
const postColorFormat = writeFormat;
|
|
776
|
-
const
|
|
777
|
+
const pipelineEntry = fragmentEntryPoint === undefined ? entry : { ...entry, fragmentEntryPoint };
|
|
778
|
+
const pipeline = lookupPipeline(shader, built.bindGroupLayout, [postColorFormat], pipelineEntry);
|
|
777
779
|
if (pipeline === null) return;
|
|
778
780
|
const handle = built.createHandle(name, pipeline, paramsBuffer);
|
|
779
781
|
|
|
@@ -814,6 +816,7 @@ export function encodeFullscreenPass(
|
|
|
814
816
|
readonly rawSwapchainOutput?: boolean | undefined;
|
|
815
817
|
readonly depthView?: TextureView | undefined;
|
|
816
818
|
readonly paramsOverride?: Uint8Array | undefined;
|
|
819
|
+
readonly fragmentEntryPoint?: string | undefined;
|
|
817
820
|
},
|
|
818
821
|
): void {
|
|
819
822
|
dispatchFullscreenPass(
|
|
@@ -829,5 +832,6 @@ export function encodeFullscreenPass(
|
|
|
829
832
|
input.outputFormat,
|
|
830
833
|
input.depthView,
|
|
831
834
|
input.paramsOverride,
|
|
835
|
+
input.fragmentEntryPoint,
|
|
832
836
|
);
|
|
833
837
|
}
|
package/src/render-pipeline.ts
CHANGED
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
import type {
|
|
18
18
|
ColorValueDomain,
|
|
19
19
|
GraphAccess,
|
|
20
|
+
GraphBuffer,
|
|
20
21
|
GraphResourceResolver,
|
|
21
22
|
GraphTexture,
|
|
22
23
|
GraphTextureDescriptor,
|
|
@@ -28,6 +29,7 @@ import type {
|
|
|
28
29
|
} from '@forgeax/engine-render-graph';
|
|
29
30
|
import type {
|
|
30
31
|
BindGroup,
|
|
32
|
+
Buffer,
|
|
31
33
|
RhiCaps,
|
|
32
34
|
RhiError,
|
|
33
35
|
RhiRenderPassEncoder,
|
|
@@ -38,6 +40,7 @@ import type { Tonemap } from './components/camera';
|
|
|
38
40
|
import type { DirectionalShadowFilterLabel } from './components/directional-shadow-filter';
|
|
39
41
|
import type { RenderError } from './errors/render';
|
|
40
42
|
import type { RenderFeatureTargetKind } from './features/targets';
|
|
43
|
+
import type { ShadowViewIdentity, ShadowViewProjection } from './gpu-driven/shadow-views';
|
|
41
44
|
import {
|
|
42
45
|
GPU_TEXTURE_USAGE_COPY_SRC,
|
|
43
46
|
GPU_TEXTURE_USAGE_RENDER_ATTACHMENT,
|
|
@@ -45,8 +48,9 @@ import {
|
|
|
45
48
|
import type { StandardTopologyInputValue } from './pipeline/standard-lighting/topology';
|
|
46
49
|
import { STANDARD_POST_STAGE_NAMES, type StandardProfile } from './pipeline/standard-profile';
|
|
47
50
|
import type { SurfaceProfile } from './record/render-context';
|
|
48
|
-
import type { RenderPipelineContext } from './render-contract';
|
|
51
|
+
import type { FrameObservationDomain, RenderPipelineContext } from './render-contract';
|
|
49
52
|
import type { OcclusionFrameProjection } from './scene/visibility/occlusion-runtime';
|
|
53
|
+
import type { SsrSpatialAdmission } from './ssr/admission';
|
|
50
54
|
import type { TransmissionDemand } from './transmission/projection';
|
|
51
55
|
|
|
52
56
|
export type { RenderPipelineContext } from './render-contract';
|
|
@@ -216,6 +220,8 @@ export interface RenderPipelineTopology {
|
|
|
216
220
|
* clear directly to the surface.
|
|
217
221
|
*/
|
|
218
222
|
readonly clearOnly?: boolean | undefined;
|
|
223
|
+
/** Selected atmosphere requires the graph-owned sky producer and background. */
|
|
224
|
+
readonly atmosphere?: boolean | undefined;
|
|
219
225
|
/** Whether Standard main draws carry the producer-owned fallback MRT. */
|
|
220
226
|
readonly reflectionFallback?: { readonly enabled: boolean } | undefined;
|
|
221
227
|
readonly surface: {
|
|
@@ -226,6 +232,19 @@ export interface RenderPipelineTopology {
|
|
|
226
232
|
readonly profile?: SurfaceProfile | undefined;
|
|
227
233
|
};
|
|
228
234
|
readonly camera: Pick<RenderPipelineContext['camera'], 'tonemap' | 'antialias' | 'bloom'>;
|
|
235
|
+
/** Frame-stable Standard output policy; no raw RHI handles enter topology. */
|
|
236
|
+
readonly output?: {
|
|
237
|
+
readonly autoExposure: boolean;
|
|
238
|
+
/** Camera-owned Bradford white balance is part of the same output pass. */
|
|
239
|
+
readonly whiteBalance?: boolean;
|
|
240
|
+
readonly temperature?: number;
|
|
241
|
+
readonly tint?: number;
|
|
242
|
+
readonly colorLut: boolean;
|
|
243
|
+
readonly colorLutStrength: number;
|
|
244
|
+
readonly lutSourceKey?: string;
|
|
245
|
+
};
|
|
246
|
+
/** Detached spatial SSR admission; graph resources remain renderer-owned. */
|
|
247
|
+
readonly ssr?: SsrSpatialAdmission | undefined;
|
|
229
248
|
readonly temporal?: {
|
|
230
249
|
readonly taa: boolean;
|
|
231
250
|
readonly motionBlur: boolean;
|
|
@@ -425,11 +444,25 @@ export interface RenderPipelineGpuDrivenProjection {
|
|
|
425
444
|
viewBindGroup: BindGroup,
|
|
426
445
|
pass: RhiRenderPassEncoder,
|
|
427
446
|
resources: GraphResourceResolver,
|
|
447
|
+
frameResources: GpuDrivenStandardPbrFrameResources,
|
|
428
448
|
): void;
|
|
429
449
|
}
|
|
430
450
|
|
|
451
|
+
/** Producer-owned Standard PBR resources resolved during graph execution. */
|
|
452
|
+
export interface GpuDrivenStandardPbrFrameResources {
|
|
453
|
+
readonly materialBindGroups: (BindGroup | undefined)[];
|
|
454
|
+
/** Frame-global material slots keyed by the retained scene entity identity. */
|
|
455
|
+
readonly materialSlotIndicesByEntity: Map<number, readonly number[]>;
|
|
456
|
+
readonly instancesBindGroup: BindGroup;
|
|
457
|
+
readonly materialStride: number;
|
|
458
|
+
/** Exact producer-owned numeric Material table consumed by scene-index PBR. */
|
|
459
|
+
readonly sceneMaterialBuffer: Buffer;
|
|
460
|
+
}
|
|
461
|
+
|
|
431
462
|
export interface RenderPipelineBuildContext<FrameCtx extends RenderPipelineFrame> {
|
|
432
463
|
readonly graph: RenderGraphBuilder<FrameCtx>;
|
|
464
|
+
/** Explicit receipt-bound color domains requested for this frame. */
|
|
465
|
+
readonly observationCaptureDomains?: readonly FrameObservationDomain[] | undefined;
|
|
433
466
|
/**
|
|
434
467
|
* The single prepared Standard lighting projection for this frame. The
|
|
435
468
|
* Forward and Deferred adapters consume this value; they never inspect raw
|
|
@@ -442,6 +475,23 @@ export interface RenderPipelineBuildContext<FrameCtx extends RenderPipelineFrame
|
|
|
442
475
|
* inferring rgba16float support from the selected surface format.
|
|
443
476
|
*/
|
|
444
477
|
readonly capabilities?: Pick<RhiCaps, 'rgba16floatRenderable'>;
|
|
478
|
+
/** Prepared typed graph resources owned by RenderSystem/RenderFrameState. */
|
|
479
|
+
readonly standardOutput?: {
|
|
480
|
+
readonly autoExposure?: {
|
|
481
|
+
readonly histogram: GraphBuffer;
|
|
482
|
+
readonly state: GraphBuffer;
|
|
483
|
+
readonly candidate: GraphBuffer;
|
|
484
|
+
/** Authored camera/time parameters consumed by the GPU adapt stage. */
|
|
485
|
+
readonly parameters: GraphBuffer;
|
|
486
|
+
};
|
|
487
|
+
readonly colorLut?: {
|
|
488
|
+
readonly view: GraphTextureView;
|
|
489
|
+
readonly sampler: import('@forgeax/engine-rhi').Sampler;
|
|
490
|
+
readonly strength: number;
|
|
491
|
+
readonly bindGroupLayout: import('@forgeax/engine-rhi').BindGroupLayout;
|
|
492
|
+
readonly bindGroup: BindGroup;
|
|
493
|
+
};
|
|
494
|
+
};
|
|
445
495
|
/**
|
|
446
496
|
* Renderer-owned TAA history targets. The graph sees only imported typed
|
|
447
497
|
* targets; opaque RHI handles remain inside RenderFrameState.
|
|
@@ -451,6 +501,16 @@ export interface RenderPipelineBuildContext<FrameCtx extends RenderPipelineFrame
|
|
|
451
501
|
readonly previousColor: RenderPipelineTarget;
|
|
452
502
|
readonly currentTemporal: RenderPipelineTarget;
|
|
453
503
|
readonly previousTemporal: RenderPipelineTarget;
|
|
504
|
+
readonly currentStability: RenderPipelineTarget;
|
|
505
|
+
readonly previousStability: RenderPipelineTarget;
|
|
506
|
+
};
|
|
507
|
+
/** Renderer-owned SSR temporal history targets for the admitted spatial chain. */
|
|
508
|
+
readonly ssrHistory?: {
|
|
509
|
+
readonly previous: RenderPipelineTarget;
|
|
510
|
+
readonly output: RenderPipelineTarget;
|
|
511
|
+
readonly previousSurface: RenderPipelineTarget;
|
|
512
|
+
readonly outputSurface: RenderPipelineTarget;
|
|
513
|
+
readonly params: GraphBuffer;
|
|
454
514
|
};
|
|
455
515
|
/** Renderer-owned, prewarmed encoder for one graph mip level. */
|
|
456
516
|
readonly encodeTransmissionMip?: (input: {
|
|
@@ -467,11 +527,20 @@ export interface RenderPipelineBuildContext<FrameCtx extends RenderPipelineFrame
|
|
|
467
527
|
readonly format: TextureFormat;
|
|
468
528
|
readonly sampleCount: 1 | 4;
|
|
469
529
|
}): Result<RenderPipelineGpuDrivenProjection | undefined, RenderPipelineBuildError>;
|
|
530
|
+
projectGpuDrivenShadow?(
|
|
531
|
+
identity: ShadowViewIdentity,
|
|
532
|
+
): Result<ShadowViewProjection | undefined, RenderGraphError>;
|
|
470
533
|
contributeFeatures(
|
|
471
534
|
targets: readonly RenderPipelineFeatureTarget[],
|
|
472
535
|
semanticTargets?: readonly RenderPipelineTarget[],
|
|
473
536
|
namedTargets?: Readonly<Record<string, RenderPipelineTarget>>,
|
|
537
|
+
standardSurfaceAccesses?: readonly GraphAccess[],
|
|
474
538
|
): Result<void, RenderPipelineBuildError>;
|
|
539
|
+
/** Prepare feature-owned shadow draws and their early compute producers once. */
|
|
540
|
+
contributeShadowFeatures?(): Result<
|
|
541
|
+
import('./features/render-graph-raster').RenderFeatureShadowDraws<FrameCtx> | undefined,
|
|
542
|
+
RenderPipelineBuildError
|
|
543
|
+
>;
|
|
475
544
|
/** Add renderer-owned cube capture work to the active pipeline graph. */
|
|
476
545
|
contributeCubeCaptures?(): Result<void, RenderPipelineBuildError>;
|
|
477
546
|
/** Whether a producer-owned feature is installed for this graph build. */
|