@forgeax/engine-render 0.1.32 → 0.1.34
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 +1374 -142
- package/dist/assembly/analytic-fog-registration.d.ts +3 -0
- package/dist/assembly/analytic-fog-registration.d.ts.map +1 -0
- package/dist/assembly/backend-contract.d.ts +2 -0
- package/dist/assembly/backend-contract.d.ts.map +1 -1
- package/dist/assembly/barrel-distortion-inspection.d.ts +3 -0
- package/dist/assembly/barrel-distortion-inspection.d.ts.map +1 -0
- package/dist/assembly/canvas-draw-guard.d.ts +3 -0
- package/dist/assembly/canvas-draw-guard.d.ts.map +1 -0
- package/dist/assembly/cloud-shadow-entry.d.ts +4 -0
- package/dist/assembly/cloud-shadow-entry.d.ts.map +1 -0
- package/dist/assembly/dynamic-geometry-host.d.ts +4 -1
- package/dist/assembly/dynamic-geometry-host.d.ts.map +1 -1
- package/dist/assembly/dynamic-geometry-runtime.d.ts +1 -1
- package/dist/assembly/dynamic-geometry-runtime.d.ts.map +1 -1
- package/dist/assembly/factory.d.ts +1 -1
- package/dist/assembly/factory.d.ts.map +1 -1
- package/dist/assembly/fxaa-registration.d.ts +4 -0
- package/dist/assembly/fxaa-registration.d.ts.map +1 -0
- package/dist/assembly/host-contract.d.ts +3 -3
- package/dist/assembly/host-contract.d.ts.map +1 -1
- package/dist/assembly/lod-observation.d.ts +4 -0
- package/dist/assembly/lod-observation.d.ts.map +1 -0
- package/dist/assembly/material/assembly.d.ts.map +1 -1
- package/dist/assembly/material/pipeline-helpers.d.ts +5 -0
- package/dist/assembly/material/pipeline-helpers.d.ts.map +1 -1
- package/dist/assembly/material-shader-policy.d.ts +16 -2
- package/dist/assembly/material-shader-policy.d.ts.map +1 -1
- package/dist/assembly/material-shader-prewarm.d.ts.map +1 -1
- package/dist/assembly/motion-blur-registration.d.ts +3 -0
- package/dist/assembly/motion-blur-registration.d.ts.map +1 -0
- package/dist/assembly/recovery/device-loss-fanout.d.ts.map +1 -1
- package/dist/assembly/recovery/renderer-recover.d.ts +2 -0
- package/dist/assembly/recovery/renderer-recover.d.ts.map +1 -1
- package/dist/assembly/render-feature-post-processes.d.ts +6 -0
- package/dist/assembly/render-feature-post-processes.d.ts.map +1 -0
- package/dist/assembly/renderer-facade.d.ts.map +1 -1
- package/dist/assembly/renderer-feature-inspection.d.ts +1 -1
- package/dist/assembly/renderer-feature-inspection.d.ts.map +1 -1
- package/dist/assembly/renderer-frame-transaction.d.ts +12 -0
- package/dist/assembly/renderer-frame-transaction.d.ts.map +1 -1
- package/dist/assembly/renderer-inspection.d.ts +11 -0
- package/dist/assembly/renderer-inspection.d.ts.map +1 -1
- package/dist/assembly/temporal-post-process-prewarm.d.ts +13 -0
- package/dist/assembly/temporal-post-process-prewarm.d.ts.map +1 -0
- package/dist/assembly/webgpu-pbr-ready.d.ts +1 -0
- package/dist/assembly/webgpu-pbr-ready.d.ts.map +1 -1
- package/dist/assembly/webgpu-ready-contract.d.ts +4 -3
- package/dist/assembly/webgpu-ready-contract.d.ts.map +1 -1
- package/dist/assembly/webgpu-ready-per-pass.d.ts +39 -0
- package/dist/assembly/webgpu-ready-per-pass.d.ts.map +1 -0
- package/dist/assembly/webgpu-ready.d.ts +2 -2
- package/dist/assembly/webgpu-ready.d.ts.map +1 -1
- package/dist/assembly/webgpu-renderer-bootstrap.d.ts.map +1 -1
- package/dist/assembly/webgpu-renderer-observation-owner.d.ts +35 -0
- package/dist/assembly/webgpu-renderer-observation-owner.d.ts.map +1 -0
- package/dist/assembly/webgpu-renderer.d.ts +1 -1
- package/dist/assembly/webgpu-renderer.d.ts.map +1 -1
- package/dist/authoring.mjs +1 -1
- package/dist/barrel-distortion.d.ts +47 -0
- package/dist/barrel-distortion.d.ts.map +1 -0
- package/dist/bloom-admission.d.ts +13 -0
- package/dist/bloom-admission.d.ts.map +1 -0
- package/dist/{chunk-PA5DRJNI.mjs → chunk-ELJFJ2BU.mjs} +2 -2
- package/dist/chunk-ELJFJ2BU.mjs.map +1 -0
- package/dist/{chunk-JCIRYQ4V.mjs → chunk-HEB564WF.mjs} +10 -4
- package/dist/chunk-HEB564WF.mjs.map +1 -0
- package/dist/{chunk-JRIPCMYC.mjs → chunk-MKDIT2EM.mjs} +1584 -375
- package/dist/chunk-MKDIT2EM.mjs.map +1 -0
- package/dist/{chunk-S665NJNF.mjs → chunk-OCDLEI6I.mjs} +3 -3
- package/dist/{chunk-S665NJNF.mjs.map → chunk-OCDLEI6I.mjs.map} +1 -1
- package/dist/chunk-ODZWR6JQ.mjs +4927 -0
- package/dist/chunk-ODZWR6JQ.mjs.map +1 -0
- package/dist/{chunk-DRR7D3KX.mjs → chunk-SHFUFJ5N.mjs} +192 -18
- package/dist/chunk-SHFUFJ5N.mjs.map +1 -0
- package/dist/{chunk-4NNZQCL3.mjs → chunk-UI5SFODX.mjs} +223 -277
- package/dist/chunk-UI5SFODX.mjs.map +1 -0
- package/dist/{chunk-GWCEMDVR.mjs → chunk-UINHLCZA.mjs} +787 -80
- package/dist/chunk-UINHLCZA.mjs.map +1 -0
- package/dist/{chunk-6TFBXLRJ.mjs → chunk-WEX45HKH.mjs} +222 -337
- package/dist/chunk-WEX45HKH.mjs.map +1 -0
- package/dist/cloud/density.d.ts +55 -0
- package/dist/cloud/density.d.ts.map +1 -0
- package/dist/cloud/extract.d.ts +25 -0
- package/dist/cloud/extract.d.ts.map +1 -0
- package/dist/cloud/feature.d.ts +57 -0
- package/dist/cloud/feature.d.ts.map +1 -0
- package/dist/cloud/frame-context.d.ts +8 -0
- package/dist/cloud/frame-context.d.ts.map +1 -0
- package/dist/cloud/inspection.d.ts +59 -0
- package/dist/cloud/inspection.d.ts.map +1 -0
- package/dist/cloud/optics.d.ts +56 -0
- package/dist/cloud/optics.d.ts.map +1 -0
- package/dist/cloud/parameters.d.ts +73 -0
- package/dist/cloud/parameters.d.ts.map +1 -0
- package/dist/cloud/resources.d.ts +60 -0
- package/dist/cloud/resources.d.ts.map +1 -0
- package/dist/cloud/shadow.d.ts +42 -0
- package/dist/cloud/shadow.d.ts.map +1 -0
- package/dist/cloud/temporal.d.ts +74 -0
- package/dist/cloud/temporal.d.ts.map +1 -0
- package/dist/components/atmosphere.d.ts +2 -0
- package/dist/components/atmosphere.d.ts.map +1 -1
- package/dist/components/barrel-distortion.d.ts +13 -0
- package/dist/components/barrel-distortion.d.ts.map +1 -0
- package/dist/components/camera.d.ts +20 -4
- package/dist/components/camera.d.ts.map +1 -1
- package/dist/components/cloud-layer.d.ts +29 -0
- package/dist/components/cloud-layer.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 +20 -6
- package/dist/components/instances.d.ts.map +1 -1
- package/dist/components/mesh-filter.d.ts +6 -5
- package/dist/components/mesh-filter.d.ts.map +1 -1
- package/dist/components/motion-blur.d.ts +1 -0
- package/dist/components/motion-blur.d.ts.map +1 -1
- package/dist/construct-renderer.d.ts +1 -1
- package/dist/construct-renderer.d.ts.map +1 -1
- package/dist/construct-renderer.mjs +9751 -3528
- package/dist/construct-renderer.mjs.map +1 -1
- package/dist/device/gpu-residency.d.ts +6 -0
- package/dist/device/gpu-residency.d.ts.map +1 -1
- package/dist/dynamic-geometry.d.ts +5 -1
- package/dist/dynamic-geometry.d.ts.map +1 -1
- package/dist/environment/analytic-fog.d.ts +6 -0
- package/dist/environment/analytic-fog.d.ts.map +1 -0
- package/dist/errors/cloud.d.ts +59 -0
- package/dist/errors/cloud.d.ts.map +1 -0
- package/dist/errors/render.d.ts +23 -5
- package/dist/errors/render.d.ts.map +1 -1
- package/dist/examples/single-layer-medium-surface.d.ts +47 -0
- package/dist/examples/single-layer-medium-surface.d.ts.map +1 -0
- package/dist/extract/camera.d.ts.map +1 -1
- package/dist/extract/contracts.d.ts +12 -1
- package/dist/extract/contracts.d.ts.map +1 -1
- package/dist/extract/environment.d.ts +2 -0
- package/dist/extract/environment.d.ts.map +1 -1
- package/dist/features/barrel-distortion.d.ts +29 -0
- package/dist/features/barrel-distortion.d.ts.map +1 -0
- package/dist/features/error-reporting.d.ts +17 -0
- package/dist/features/error-reporting.d.ts.map +1 -0
- package/dist/features/host.d.ts +15 -0
- package/dist/features/host.d.ts.map +1 -1
- package/dist/features/motion-blur/motion-blur-feature.d.ts +20 -2
- package/dist/features/motion-blur/motion-blur-feature.d.ts.map +1 -1
- package/dist/features/motion-blur/motion-blur-params.d.ts +21 -0
- package/dist/features/motion-blur/motion-blur-params.d.ts.map +1 -1
- package/dist/features/motion-blur/motion-blur-runtime.d.ts +54 -0
- package/dist/features/motion-blur/motion-blur-runtime.d.ts.map +1 -0
- package/dist/features/plan.d.ts +15 -4
- package/dist/features/plan.d.ts.map +1 -1
- package/dist/features/prepared-gpu-work.d.ts +9 -5
- package/dist/features/prepared-gpu-work.d.ts.map +1 -1
- package/dist/features/render-graph-compute.d.ts.map +1 -1
- package/dist/features/render-graph-contribution.d.ts +5 -0
- package/dist/features/render-graph-contribution.d.ts.map +1 -1
- package/dist/features/render-graph-raster.d.ts +1 -0
- package/dist/features/render-graph-raster.d.ts.map +1 -1
- package/dist/features/targets.d.ts +2 -0
- package/dist/features/targets.d.ts.map +1 -1
- package/dist/features/types.d.ts +44 -0
- package/dist/features/types.d.ts.map +1 -1
- package/dist/fullscreen-post-process-pass.d.ts +15 -7
- package/dist/fullscreen-post-process-pass.d.ts.map +1 -1
- package/dist/gpu-dirty-ranges.d.ts +11 -0
- package/dist/gpu-dirty-ranges.d.ts.map +1 -0
- package/dist/gpu-driven/batch-topology.d.ts +17 -0
- package/dist/gpu-driven/batch-topology.d.ts.map +1 -1
- package/dist/gpu-driven/material-artifacts.d.ts +6 -0
- package/dist/gpu-driven/material-artifacts.d.ts.map +1 -1
- package/dist/gpu-driven/prepared-draw.d.ts +7 -0
- package/dist/gpu-driven/prepared-draw.d.ts.map +1 -1
- package/dist/gpu-driven/production-raster-material.d.ts +178 -0
- package/dist/gpu-driven/production-raster-material.d.ts.map +1 -0
- package/dist/gpu-driven/production-raster.d.ts +50 -4
- package/dist/gpu-driven/production-raster.d.ts.map +1 -1
- package/dist/gpu-driven/resource-allocation.d.ts +31 -0
- package/dist/gpu-driven/resource-allocation.d.ts.map +1 -0
- package/dist/gpu-driven/shadow-ownership.d.ts +14 -0
- package/dist/gpu-driven/shadow-ownership.d.ts.map +1 -0
- package/dist/gpu-driven/view-gpu.d.ts +35 -2
- package/dist/gpu-driven/view-gpu.d.ts.map +1 -1
- package/dist/gpu-scene.d.ts +11 -1
- package/dist/gpu-scene.d.ts.map +1 -1
- package/dist/hdrp-buffers.d.ts +2 -2
- package/dist/hdrp-buffers.d.ts.map +1 -1
- package/dist/ibl/skylight-bind-group.d.ts +10 -1
- package/dist/ibl/skylight-bind-group.d.ts.map +1 -1
- package/dist/index.d.ts +31 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +258 -8
- package/dist/index.mjs.map +1 -1
- package/dist/inspection-types.d.ts +178 -3
- package/dist/inspection-types.d.ts.map +1 -1
- package/dist/instance-buffer-cache.d.ts +4 -4
- package/dist/instance-buffer-cache.d.ts.map +1 -1
- package/dist/instances.d.ts +49 -94
- package/dist/instances.d.ts.map +1 -1
- package/dist/internal.mjs +7 -7
- package/dist/pbr-pipeline.d.ts +19 -1
- package/dist/pbr-pipeline.d.ts.map +1 -1
- package/dist/pipeline/single-layer-medium-passes.d.ts +73 -0
- package/dist/pipeline/single-layer-medium-passes.d.ts.map +1 -0
- package/dist/pipeline/standard-forward-lane.d.ts.map +1 -1
- package/dist/pipeline/standard-output/graph.d.ts.map +1 -1
- package/dist/pipeline/standard-output/types.d.ts +4 -2
- package/dist/pipeline/standard-output/types.d.ts.map +1 -1
- package/dist/pipeline/standard-pipeline.d.ts.map +1 -1
- package/dist/pipeline/standard-post.d.ts +28 -19
- package/dist/pipeline/standard-post.d.ts.map +1 -1
- package/dist/pipeline-builder.d.ts +1 -1
- package/dist/pipeline-builder.d.ts.map +1 -1
- package/dist/pipeline-spec.d.ts +2 -2
- package/dist/plugin.d.ts.map +1 -1
- package/dist/prepare/prepared-graphics-resolver.d.ts +2 -0
- package/dist/prepare/prepared-graphics-resolver.d.ts.map +1 -1
- package/dist/record/barrel-distortion-frame.d.ts +15 -0
- package/dist/record/barrel-distortion-frame.d.ts.map +1 -0
- package/dist/record/dynamic-geometry-consumption.d.ts +10 -2
- package/dist/record/dynamic-geometry-consumption.d.ts.map +1 -1
- package/dist/record/fold-buckets.d.ts +95 -0
- package/dist/record/fold-buckets.d.ts.map +1 -0
- package/dist/record/fold-instance-buffer.d.ts +6 -0
- package/dist/record/fold-instance-buffer.d.ts.map +1 -0
- package/dist/record/frame-lighting.d.ts +1 -0
- package/dist/record/frame-lighting.d.ts.map +1 -1
- package/dist/record/frame-snapshot.d.ts +40 -3
- 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 +14 -62
- package/dist/record/frame.d.ts.map +1 -1
- package/dist/record/gpu-draw-receipts.d.ts +11 -0
- package/dist/record/gpu-draw-receipts.d.ts.map +1 -0
- package/dist/record/gpu-timing.d.ts +8 -0
- package/dist/record/gpu-timing.d.ts.map +1 -1
- package/dist/record/main-pass-geometry.d.ts +21 -5
- package/dist/record/main-pass-geometry.d.ts.map +1 -1
- package/dist/record/main-pass-material.d.ts +7 -1
- package/dist/record/main-pass-material.d.ts.map +1 -1
- package/dist/record/main-pass-sprite-draws.d.ts.map +1 -1
- package/dist/record/main-pass.d.ts +13 -2
- package/dist/record/main-pass.d.ts.map +1 -1
- package/dist/record/mesh-ssbo.d.ts +6 -5
- package/dist/record/mesh-ssbo.d.ts.map +1 -1
- package/dist/record/motion-blur-receipt.d.ts +11 -0
- package/dist/record/motion-blur-receipt.d.ts.map +1 -0
- package/dist/record/probe-blend-buffer.d.ts +16 -0
- package/dist/record/probe-blend-buffer.d.ts.map +1 -0
- package/dist/record/recovery-pipeline.d.ts.map +1 -1
- package/dist/record/render-context.d.ts +34 -31
- package/dist/record/render-context.d.ts.map +1 -1
- package/dist/record/shadow-pass.d.ts +2 -0
- package/dist/record/shadow-pass.d.ts.map +1 -1
- package/dist/record/skybox-post-pass.d.ts +6 -4
- package/dist/record/skybox-post-pass.d.ts.map +1 -1
- package/dist/record/typed-frame-graph.d.ts +22 -2
- package/dist/record/typed-frame-graph.d.ts.map +1 -1
- package/dist/record/view-ubo.d.ts +11 -3
- package/dist/record/view-ubo.d.ts.map +1 -1
- package/dist/record/volume-params.d.ts +9 -0
- package/dist/record/volume-params.d.ts.map +1 -0
- package/dist/recovery/render-system-candidate.d.ts +10 -0
- package/dist/recovery/render-system-candidate.d.ts.map +1 -1
- package/dist/reflection/record-owner.d.ts.map +1 -1
- package/dist/render-contract.d.ts +66 -8
- package/dist/render-contract.d.ts.map +1 -1
- package/dist/render-graph-primitives.d.ts.map +1 -1
- package/dist/render-pipeline.d.ts +106 -3
- package/dist/render-pipeline.d.ts.map +1 -1
- package/dist/render-system-extract-tail.d.ts +3 -2
- package/dist/render-system-extract-tail.d.ts.map +1 -1
- package/dist/render-system-extract.d.ts +24 -10
- package/dist/render-system-extract.d.ts.map +1 -1
- package/dist/render-system-presentation.d.ts +23 -0
- package/dist/render-system-presentation.d.ts.map +1 -0
- package/dist/render-system-producer-roots.d.ts +10 -0
- package/dist/render-system-producer-roots.d.ts.map +1 -0
- package/dist/render-system-residency.d.ts +12 -0
- package/dist/render-system-residency.d.ts.map +1 -0
- package/dist/render-system.d.ts +26 -15
- package/dist/render-system.d.ts.map +1 -1
- package/dist/scene/probe-blend.d.ts +27 -0
- package/dist/scene/probe-blend.d.ts.map +1 -1
- package/dist/scene/render-scene.d.ts +14 -5
- package/dist/scene/render-scene.d.ts.map +1 -1
- package/dist/ssao-buffers.d.ts +9 -0
- package/dist/ssao-buffers.d.ts.map +1 -1
- package/dist/surface/dynamic-input.d.ts +133 -0
- package/dist/surface/dynamic-input.d.ts.map +1 -0
- package/dist/surface/gpu-driven.d.ts +41 -0
- package/dist/surface/gpu-driven.d.ts.map +1 -0
- package/dist/surface/submission-observation.d.ts +136 -0
- package/dist/surface/submission-observation.d.ts.map +1 -0
- package/dist/systems/skin-palette-allocator.d.ts.map +1 -1
- package/dist/temporal/frame-coordinator.d.ts.map +1 -1
- package/dist/temporal/frame.d.ts +7 -0
- package/dist/temporal/frame.d.ts.map +1 -1
- package/dist/temporal/gpu.d.ts +13 -1
- package/dist/temporal/gpu.d.ts.map +1 -1
- package/dist/temporal/index.mjs +5 -5
- package/dist/temporal/inspection.d.ts.map +1 -1
- package/dist/temporal/standard-scene-data.d.ts.map +1 -1
- package/dist/temporal/target-coverage-attachment.d.ts.map +1 -1
- package/dist/temporal/view.d.ts +6 -1
- package/dist/temporal/view.d.ts.map +1 -1
- package/dist/transmission/single-layer-medium.d.ts +89 -0
- package/dist/transmission/single-layer-medium.d.ts.map +1 -0
- package/dist/typed-render-graph-primitives.d.ts +24 -9
- package/dist/typed-render-graph-primitives.d.ts.map +1 -1
- package/dist/volume/component.d.ts +9 -5
- package/dist/volume/component.d.ts.map +1 -1
- package/dist/volume/extract.d.ts +1 -1
- package/dist/volume/extract.d.ts.map +1 -1
- package/dist/volume/inspection.d.ts +2 -0
- package/dist/volume/inspection.d.ts.map +1 -1
- package/dist/volume/passes.d.ts +4 -1
- package/dist/volume/passes.d.ts.map +1 -1
- package/dist/volume/resources.d.ts.map +1 -1
- package/dist/volume/temporal.d.ts +3 -1
- package/dist/volume/temporal.d.ts.map +1 -1
- package/package.json +22 -21
- package/src/__tests__/analytic-fog-graph.unit.test.ts +199 -0
- package/src/__tests__/analytic-fog-optics.unit.test.ts +38 -0
- package/src/__tests__/atmosphere-daylight.dawn.test.ts +72 -0
- package/src/__tests__/barrel-distortion-lkg.integration.test.ts +353 -0
- package/src/__tests__/barrel-distortion.dawn.test.ts +41 -0
- package/src/__tests__/barrel-distortion.unit.test.ts +364 -0
- package/src/__tests__/bloom-exact-zero.unit.test.ts +112 -18
- package/src/__tests__/bloom-lifecycle.integration.test.ts +17 -4
- package/src/__tests__/construct-renderer-identity.unit.test.ts +49 -0
- package/src/__tests__/detached-recovery-graph.unit.test.ts +277 -0
- package/src/__tests__/device-loss-fanout.unit.test.ts +36 -1
- package/src/__tests__/docs-gate-green.unit.test.ts +112 -1
- package/src/__tests__/dynamic-resolution-plugin.integration.test.ts +20 -0
- package/src/__tests__/environment-fog-lanes.integration.test.ts +14 -0
- package/src/__tests__/environment-selection.unit.test.ts +12 -0
- package/src/__tests__/factory-contract.integration.test.ts +626 -113
- package/src/__tests__/feature-depth-input.dawn.test.ts +129 -2
- package/src/__tests__/frame-camera-selection.unit.test.ts +39 -1
- package/src/__tests__/frame-plan-contract.unit.test.ts +2 -0
- package/src/__tests__/fullscreen-feature-plan.unit.test.ts +14 -3
- package/src/__tests__/gpu-dirty-ranges.unit.test.ts +22 -0
- package/src/__tests__/gpu-driven-baseline.characterization.test.ts +16 -3
- package/src/__tests__/gpu-driven-batch-topology-pbr.unit.test.ts +12 -0
- package/src/__tests__/gpu-driven-indirect-raster-evidence.ts +2 -1
- package/src/__tests__/gpu-driven-material-artifacts.unit.test.ts +143 -0
- package/src/__tests__/gpu-driven-pbr.dawn.test.ts +2 -2
- package/src/__tests__/gpu-driven-production.integration.test.ts +482 -3
- package/src/__tests__/gpu-driven-shadow-views.dawn.test.ts +7 -6
- package/src/__tests__/gpu-driven-shadow-views.integration.test.ts +1 -1
- package/src/__tests__/gpu-driven-view-gpu-evidence.ts +103 -4
- package/src/__tests__/gpu-driven-view-graph.integration.test.ts +18 -2
- package/src/__tests__/gpu-driven-view.browser.test.ts +5 -8
- package/src/__tests__/gpu-driven-view.dawn.test.ts +6 -2
- package/src/__tests__/gpu-driven-view.unit.test.ts +1 -1
- package/src/__tests__/gpu-pass-timing-lifecycle.integration.test.ts +1 -0
- package/src/__tests__/gpu-pass-timing.browser.test.ts +6 -4
- package/src/__tests__/gpu-pass-timing.rhi-null.unit.test.ts +1 -0
- package/src/__tests__/gpu-resource-store-stride.unit.test.ts +12 -0
- package/src/__tests__/gpu-scene.unit.test.ts +210 -9
- package/src/__tests__/instance-allocation-failure.unit.test.ts +57 -0
- package/src/__tests__/instances-culling.integration.test.ts +10 -36
- package/src/__tests__/instances-store.unit.test.ts +105 -238
- package/src/__tests__/instances-world-ownership.integration.test.ts +62 -0
- package/src/__tests__/main-pass-material-medium-selection.unit.test.ts +146 -0
- package/src/__tests__/material-shader-prewarm.unit.test.ts +59 -0
- package/src/__tests__/material-snapshot-mutation.integration.test.ts +39 -1
- package/src/__tests__/mesh-submission-lifetime.unit.test.ts +31 -0
- package/src/__tests__/morph-culling-reentry.dawn.test.ts +5 -5
- package/src/__tests__/morph-visual-evidence.integration.test.ts +8 -7
- package/src/__tests__/motion-blur-compute.dawn.test.ts +589 -0
- package/src/__tests__/motion-blur.pixel.integration.test.ts +2 -2
- package/src/__tests__/nineslice-handle-surface.unit.test.ts +4 -4
- package/src/__tests__/pbr-view-layout.unit.test.ts +9 -0
- package/src/__tests__/physical-clearcoat.integration.test.ts +58 -0
- package/src/__tests__/prepared-gpu-driven-pbr.integration.test.ts +21 -0
- package/src/__tests__/prepared-graphics-capability.unit.test.ts +66 -2
- package/src/__tests__/prepared-graphics-lifecycle.unit.test.ts +86 -0
- package/src/__tests__/probe-bindings.unit.test.ts +582 -1
- package/src/__tests__/probe-scene-dirty.integration.test.ts +28 -1
- package/src/__tests__/public-surface.test-d.ts +8 -0
- package/src/__tests__/receipt-observation-retirement.unit.test.ts +65 -0
- package/src/__tests__/recovery-candidate-prepare.contract.test.ts +69 -0
- package/src/__tests__/render-error-code-owner.test-d.ts +9 -0
- package/src/__tests__/render-feature-diagnostics.unit.test.ts +15 -2
- package/src/__tests__/render-feature-error-reporting.unit.test.ts +44 -0
- package/src/__tests__/render-feature-prepared-diagnostics.unit.test.ts +10 -1
- package/src/__tests__/render-feature-retry.unit.test.ts +12 -1
- package/src/__tests__/render-feature-stage-fault-recovery.unit.test.ts +23 -0
- package/src/__tests__/render-scene-mixed-updates.integration.test.ts +145 -19
- package/src/__tests__/render-scene-projection.unit.test.ts +36 -11
- package/src/__tests__/render-scene-temporal-retry.unit.test.ts +37 -6
- package/src/__tests__/render-target-probe-soak.perf.test.ts +2 -2
- package/src/__tests__/render-temporal-environment-consumer.browser.test.ts +3 -3
- package/src/__tests__/render-temporal-environment-consumer.dawn.test.ts +5 -2
- package/src/__tests__/renderer-factory-material-contract.unit.test.ts +41 -7
- package/src/__tests__/renderer-frame-generation-fence.integration.test.ts +16 -0
- package/src/__tests__/renderer-frame-transaction.integration.test.ts +33 -11
- package/src/__tests__/resource-allocation.unit.test.ts +123 -0
- package/src/__tests__/shader-manifest-fixture.ts +4 -4
- package/src/__tests__/single-layer-medium-passes.unit.test.ts +275 -0
- package/src/__tests__/skin-motion-regression.unit.test.ts +70 -1
- package/src/__tests__/skin-palette-recycling.dawn.test.ts +97 -0
- package/src/__tests__/skinned-shadow-caster.test.ts +17 -0
- package/src/__tests__/ssr-carrier-public-contract.unit.test.ts +21 -0
- package/src/__tests__/ssr-gpu-dispatch.browser.test.ts +4 -4
- package/src/__tests__/ssr-gpu-dispatch.dawn.test.ts +2 -2
- package/src/__tests__/ssr-gpu-dispatch.ts +1 -1
- package/src/__tests__/ssr-receiver-coverage.dawn.test.ts +6 -2
- package/src/__tests__/standard-lighting-write.unit.test.ts +2 -1
- package/src/__tests__/standard-output-chain-contract.unit.test.ts +28 -0
- package/src/__tests__/standard-pbr-artifact-assembly.unit.test.ts +46 -1
- package/src/__tests__/standard-pipeline.dawn.test.ts +1 -1
- package/src/__tests__/standard-pipeline.integration.test.ts +200 -9
- package/src/__tests__/surface-dynamic-buffer-lifecycle.unit.test.ts +506 -0
- package/src/__tests__/surface-submission-observation.unit.test.ts +812 -0
- package/src/__tests__/temporal-history-lifecycle.unit.test.ts +32 -0
- package/src/__tests__/temporal-performance.integration.test.ts +3 -3
- package/src/__tests__/temporal-reset-matrix.unit.test.ts +10 -0
- package/src/__tests__/temporal-view.unit.test.ts +2 -1
- package/src/__tests__/typed-pipeline-topology.unit.test.ts +20 -4
- package/src/__tests__/visibility-instances.integration.test.ts +7 -19
- package/src/__tests__/visibility-producer-matrix.integration.test.ts +9 -20
- package/src/__tests__/volume-optics-oracle.unit.test.ts +7 -3
- package/src/__tests__/volumetric-fog-budget-recovery.integration.test.ts +189 -15
- package/src/__tests__/volumetric-fog-errors.unit.test.ts +4 -3
- package/src/__tests__/volumetric-fog-multiple.unit.test.ts +55 -0
- package/src/__tests__/volumetric-fog-spot-frame-optics.integration.test.ts +1 -1
- package/src/__tests__/volumetric-fog-stage-readback.dawn.test.ts +558 -68
- package/src/__tests__/volumetric-fog-temporal.unit.test.ts +27 -0
- package/src/__tests__/volumetric-fog-topology.unit.test.ts +23 -5
- package/src/assembly/analytic-fog-registration.ts +14 -0
- package/src/assembly/backend-contract.ts +30 -0
- package/src/assembly/barrel-distortion-inspection.ts +22 -0
- package/src/assembly/canvas-draw-guard.ts +11 -0
- package/src/assembly/cloud-shadow-entry.ts +22 -0
- package/src/assembly/dynamic-geometry-host.ts +65 -37
- package/src/assembly/dynamic-geometry-runtime.ts +7 -1
- package/src/assembly/factory.ts +2 -30
- package/src/assembly/fxaa-registration.ts +17 -0
- package/src/assembly/host-contract.ts +3 -3
- package/src/assembly/lod-observation.ts +12 -0
- package/src/assembly/material/assembly.ts +25 -13
- package/src/assembly/material/pipeline-helpers.ts +53 -12
- package/src/assembly/material-shader-policy.ts +55 -0
- package/src/assembly/material-shader-prewarm.ts +21 -10
- package/src/assembly/motion-blur-registration.ts +17 -0
- package/src/assembly/recovery/device-loss-fanout.ts +13 -0
- package/src/assembly/recovery/renderer-recover.ts +41 -18
- package/src/assembly/render-feature-post-processes.ts +54 -0
- package/src/assembly/renderer-facade.ts +6 -1
- package/src/assembly/renderer-feature-inspection.ts +8 -2
- package/src/assembly/renderer-frame-transaction.ts +23 -0
- package/src/assembly/renderer-inspection.ts +28 -0
- package/src/assembly/skin-palette-owner.ts +1 -1
- package/src/assembly/temporal-post-process-prewarm.ts +40 -0
- package/src/assembly/webgpu-pbr-ready.ts +9 -1
- package/src/assembly/webgpu-ready-contract.ts +8 -3
- package/src/assembly/webgpu-ready-per-pass.ts +104 -0
- package/src/assembly/webgpu-ready.ts +296 -306
- package/src/assembly/webgpu-renderer-bootstrap.ts +0 -12
- package/src/assembly/webgpu-renderer-observation-owner.ts +222 -0
- package/src/assembly/webgpu-renderer.ts +228 -281
- package/src/assembly/webgpu-vertex-layouts.ts +1 -1
- package/src/barrel-distortion.ts +247 -0
- package/src/bloom-admission.ts +21 -0
- package/src/cloud/__tests__/cloud-density-parity.dawn.test.ts +173 -0
- package/src/cloud/__tests__/cloud-layer-framebuffer-y.dawn.test.ts +265 -0
- package/src/cloud/__tests__/cloud-layer.browser.test.ts +432 -0
- package/src/cloud/__tests__/cloud-layer.unit.test.ts +634 -0
- package/src/cloud/density.ts +600 -0
- package/src/cloud/extract.ts +110 -0
- package/src/cloud/feature.ts +1810 -0
- package/src/cloud/frame-context.ts +42 -0
- package/src/cloud/inspection.ts +130 -0
- package/src/cloud/optics.ts +285 -0
- package/src/cloud/parameters.ts +255 -0
- package/src/cloud/resources.ts +122 -0
- package/src/cloud/shadow.ts +167 -0
- package/src/cloud/temporal.ts +226 -0
- package/src/components/__tests__/motion-blur.unit.test.ts +1 -0
- package/src/components/atmosphere.ts +4 -0
- package/src/components/barrel-distortion.ts +46 -0
- package/src/components/camera.ts +66 -10
- package/src/components/cloud-layer.ts +47 -0
- package/src/components/index.ts +2 -0
- package/src/components/instances.ts +18 -45
- package/src/components/mesh-filter.ts +11 -9
- package/src/components/motion-blur.ts +1 -0
- package/src/components/sprite-instances.ts +1 -1
- package/src/construct-renderer.ts +1 -1
- package/src/device/gpu-residency.ts +56 -12
- package/src/dynamic-geometry.ts +12 -1
- package/src/environment/analytic-fog.ts +44 -0
- package/src/environment/background.ts +2 -2
- package/src/errors/cloud.ts +103 -0
- package/src/errors/render.ts +58 -8
- package/src/examples/single-layer-medium-surface.ts +59 -0
- package/src/extract/camera.ts +35 -8
- package/src/extract/contracts.ts +12 -0
- package/src/extract/environment.ts +4 -0
- package/src/features/barrel-distortion.ts +172 -0
- package/src/features/error-reporting.ts +98 -0
- package/src/features/host.ts +138 -24
- package/src/features/motion-blur/__tests__/motion-blur-feature.unit.test.ts +111 -1
- package/src/features/motion-blur/__tests__/motion-blur-params.unit.test.ts +58 -3
- package/src/features/motion-blur/motion-blur-feature.ts +1519 -15
- package/src/features/motion-blur/motion-blur-params.ts +70 -2
- package/src/features/motion-blur/motion-blur-runtime.ts +176 -0
- package/src/features/plan.ts +33 -8
- package/src/features/prepared-gpu-work.ts +86 -35
- package/src/features/render-graph-compute.ts +13 -5
- package/src/features/render-graph-contribution.ts +11 -0
- package/src/features/render-graph-raster.ts +45 -3
- package/src/features/targets.ts +66 -0
- package/src/features/types.ts +47 -0
- package/src/fullscreen-post-process-pass.ts +41 -9
- package/src/gpu-dirty-ranges.ts +48 -0
- package/src/gpu-driven/batch-topology.ts +53 -0
- package/src/gpu-driven/material-artifacts.ts +35 -32
- package/src/gpu-driven/prepared-draw.ts +27 -14
- package/src/gpu-driven/production-raster-material.ts +1894 -0
- package/src/gpu-driven/production-raster.ts +904 -787
- package/src/gpu-driven/resource-allocation.ts +142 -0
- package/src/gpu-driven/shadow-ownership.ts +71 -0
- package/src/gpu-driven/view-gpu.ts +181 -10
- package/src/gpu-scene.ts +259 -101
- package/src/hdrp-buffers.ts +4 -3
- package/src/ibl/skylight-bind-group.ts +49 -7
- package/src/index.ts +228 -9
- package/src/inspection-types.ts +222 -2
- package/src/instance-buffer-cache.ts +4 -4
- package/src/instances.ts +151 -492
- package/src/pbr-pipeline.ts +219 -13
- package/src/pipeline/single-layer-medium-passes.ts +267 -0
- package/src/pipeline/standard-forward-lane.ts +313 -57
- package/src/pipeline/standard-output/graph.ts +8 -2
- package/src/pipeline/standard-output/types.ts +12 -1
- package/src/pipeline/standard-pipeline.ts +291 -18
- package/src/pipeline/standard-post.ts +397 -102
- package/src/pipeline-builder.ts +1 -1
- package/src/pipeline-spec.ts +5 -5
- package/src/plugin.ts +4 -0
- package/src/points-lines/__tests__/points-lines.bench.ts +17 -8
- package/src/points-lines/__tests__/view-ubo.unit.test.ts +2 -1
- package/src/prepare/prepared-graphics-resolver.ts +2 -0
- package/src/record/__tests__/main-pass-geometry.unit.test.ts +30 -0
- package/src/record/__tests__/sprite-material-abi.unit.test.ts +1 -1
- package/src/record/__tests__/temporal-payload.unit.test.ts +3 -2
- package/src/record/__tests__/transparent-group2-selection.unit.test.ts +11 -0
- package/src/record/__tests__/typed-frame-graph-plan.unit.test.ts +1 -0
- package/src/record/__tests__/view-ubo-layout.unit.test.ts +4 -3
- package/src/record/barrel-distortion-frame.ts +110 -0
- package/src/record/dynamic-geometry-consumption.ts +39 -9
- package/src/record/fold-buckets.ts +852 -0
- package/src/record/fold-instance-buffer.ts +51 -0
- package/src/record/frame-lighting.ts +36 -2
- package/src/record/frame-snapshot.ts +44 -4
- package/src/record/frame-targets.ts +10 -6
- package/src/record/frame.ts +373 -1099
- package/src/record/gpu-draw-receipts.ts +38 -0
- package/src/record/gpu-timing.ts +48 -5
- package/src/record/main-pass-geometry.ts +281 -83
- package/src/record/main-pass-material.ts +66 -4
- package/src/record/main-pass-sprite-draws.ts +13 -66
- package/src/record/main-pass.ts +156 -20
- package/src/record/mesh-ssbo.ts +43 -6
- package/src/record/motion-blur-receipt.ts +91 -0
- package/src/record/probe-blend-buffer.ts +180 -0
- package/src/record/recovery-pipeline.ts +35 -3
- package/src/record/render-context.ts +51 -31
- package/src/record/shadow-pass.ts +36 -2
- package/src/record/skybox-post-pass.ts +150 -200
- package/src/record/typed-frame-graph.ts +824 -44
- package/src/record/view-ubo.ts +26 -3
- package/src/record/volume-params.ts +225 -0
- package/src/recovery/render-system-candidate.ts +257 -52
- package/src/reflection/record-owner.ts +7 -3
- package/src/render-contract.ts +71 -8
- package/src/render-graph-primitives.ts +7 -1
- package/src/render-pipeline.ts +136 -1
- package/src/render-system-extract-tail.ts +72 -60
- package/src/render-system-extract.ts +117 -87
- package/src/render-system-presentation.ts +56 -0
- package/src/render-system-producer-roots.ts +96 -0
- package/src/render-system-residency.ts +159 -0
- package/src/render-system.ts +601 -482
- package/src/scene/probe-blend.ts +96 -4
- package/src/scene/render-scene.ts +431 -281
- package/src/ssao-buffers.ts +95 -2
- package/src/surface/__tests__/dynamic-input.unit.test.ts +374 -0
- package/src/surface/__tests__/gpu-driven.unit.test.ts +87 -0
- package/src/surface/dynamic-input.ts +658 -0
- package/src/surface/gpu-driven.ts +147 -0
- package/src/surface/submission-observation.ts +517 -0
- package/src/systems/skin-palette-allocator.ts +4 -1
- package/src/temporal/__tests__/temporal-frame-transaction.unit.test.ts +36 -0
- package/src/temporal/frame-coordinator.ts +8 -1
- package/src/temporal/frame.ts +20 -0
- package/src/temporal/gpu.ts +101 -17
- package/src/temporal/inspection.ts +7 -1
- package/src/temporal/standard-scene-data.ts +5 -0
- package/src/temporal/target-coverage-attachment.ts +4 -0
- package/src/temporal/view.ts +13 -2
- package/src/transmission/__tests__/single-layer-medium.unit.test.ts +149 -0
- package/src/transmission/__tests__/standard-transmission.dawn.test.ts +12 -11
- package/src/transmission/single-layer-medium.ts +322 -0
- package/src/typed-render-graph-primitives.ts +191 -50
- package/src/volume/component.ts +10 -10
- package/src/volume/extract.ts +11 -5
- package/src/volume/inspection.ts +3 -0
- package/src/volume/passes.ts +95 -8
- package/src/volume/resources.ts +2 -1
- package/src/volume/temporal.ts +11 -0
- package/dist/chunk-4NNZQCL3.mjs.map +0 -1
- package/dist/chunk-6TFBXLRJ.mjs.map +0 -1
- package/dist/chunk-DRR7D3KX.mjs.map +0 -1
- package/dist/chunk-GWCEMDVR.mjs.map +0 -1
- package/dist/chunk-JCIRYQ4V.mjs.map +0 -1
- package/dist/chunk-JRIPCMYC.mjs.map +0 -1
- package/dist/chunk-LULCA3OF.mjs +0 -1713
- package/dist/chunk-LULCA3OF.mjs.map +0 -1
- package/dist/chunk-PA5DRJNI.mjs.map +0 -1
package/src/render-contract.ts
CHANGED
|
@@ -3,7 +3,12 @@ import type { World } from '@forgeax/engine-ecs';
|
|
|
3
3
|
import type { RenderReadLease } from '@forgeax/engine-ecs/projection';
|
|
4
4
|
import type { Vec3 } from '@forgeax/engine-math';
|
|
5
5
|
import type { ProfileFrameToken, Profiler } from '@forgeax/engine-profiler';
|
|
6
|
-
import type {
|
|
6
|
+
import type {
|
|
7
|
+
ColorValueDomain,
|
|
8
|
+
RenderGraphError,
|
|
9
|
+
RenderGraphGenerationAllocationInspection,
|
|
10
|
+
RenderGraphResourceAllocationInspection,
|
|
11
|
+
} from '@forgeax/engine-render-graph';
|
|
7
12
|
import type {
|
|
8
13
|
BindGroupLayout,
|
|
9
14
|
Buffer,
|
|
@@ -24,6 +29,8 @@ import type {
|
|
|
24
29
|
import type { SkinError } from '@forgeax/engine-skinning';
|
|
25
30
|
import type { ImageError } from '@forgeax/engine-types';
|
|
26
31
|
import type { RhiBackendInstrumentation } from './assembly/backend-contract.js';
|
|
32
|
+
import type { CloudLayerInspection } from './cloud/inspection.js';
|
|
33
|
+
import type { BarrelDistortionData } from './components/barrel-distortion.js';
|
|
27
34
|
import type { Antialias, BloomEnabled, CameraExposure, Tonemap } from './components/camera.js';
|
|
28
35
|
import type { DynamicResolutionData } from './components/dynamic-resolution.js';
|
|
29
36
|
import type { ScreenSpaceReflectionData } from './components/screen-space-reflection.js';
|
|
@@ -53,7 +60,7 @@ import type {
|
|
|
53
60
|
TemporalTargetInspection,
|
|
54
61
|
TransmissionInspection,
|
|
55
62
|
} from './inspection-types.js';
|
|
56
|
-
import type { InstanceCollectionInspection
|
|
63
|
+
import type { InstanceCollectionInspection } from './instances.js';
|
|
57
64
|
import type { RenderExtent } from './pipeline/render-extent.js';
|
|
58
65
|
import type { RenderSceneBounds } from './scene/render-scene-types.js';
|
|
59
66
|
import type { SsrAdmissionIdentity } from './ssr/identity.js';
|
|
@@ -94,6 +101,7 @@ import type {
|
|
|
94
101
|
GpuPassTimingOptions,
|
|
95
102
|
} from './record/gpu-pass-timing/index.js';
|
|
96
103
|
import type { VolumeTimingObservation } from './record/gpu-timing.js';
|
|
104
|
+
import type { SurfaceDynamicInputFrame } from './surface/dynamic-input.js';
|
|
97
105
|
import type { TemporalView } from './temporal/view.js';
|
|
98
106
|
import type { VolumetricFogInspection } from './volume/inspection.js';
|
|
99
107
|
|
|
@@ -170,7 +178,8 @@ export interface CameraSnapshot {
|
|
|
170
178
|
readonly bloom: BloomEnabled;
|
|
171
179
|
readonly bloomThreshold: number;
|
|
172
180
|
readonly bloomIntensity: number;
|
|
173
|
-
readonly
|
|
181
|
+
readonly bloomSoftKnee: number;
|
|
182
|
+
readonly bloomScatter: number;
|
|
174
183
|
readonly clearColor: readonly [number, number, number, number];
|
|
175
184
|
/** Optional active-camera SSR authoring fact, copied from the ECS schema. */
|
|
176
185
|
readonly screenSpaceReflection?: ScreenSpaceReflectionData;
|
|
@@ -185,7 +194,11 @@ export interface CameraSnapshot {
|
|
|
185
194
|
readonly shutterAngle: number;
|
|
186
195
|
readonly maxRadiusPixels: number;
|
|
187
196
|
readonly sampleCount: number;
|
|
197
|
+
/** Target presentation rate; zero follows the accepted frame interval. */
|
|
198
|
+
readonly targetFps?: number;
|
|
188
199
|
};
|
|
200
|
+
/** Optional active-camera barrel projection, copied from the ECS schema. */
|
|
201
|
+
readonly barrelDistortion?: BarrelDistortionData;
|
|
189
202
|
}
|
|
190
203
|
|
|
191
204
|
/** Stable identity owned by the Standard feature host for output transform. */
|
|
@@ -367,6 +380,11 @@ export interface AtmosphereShaderSources {
|
|
|
367
380
|
* and never reach into AssetRegistry or World.
|
|
368
381
|
*/
|
|
369
382
|
export interface VolumetricFogFrameContext {
|
|
383
|
+
readonly additional?: readonly {
|
|
384
|
+
readonly densityTexture: Texture;
|
|
385
|
+
readonly densityView: TextureView;
|
|
386
|
+
readonly densityGeneration: number;
|
|
387
|
+
}[];
|
|
370
388
|
readonly densityTexture: Texture;
|
|
371
389
|
readonly densityView: TextureView;
|
|
372
390
|
readonly paramsBuffer: Buffer;
|
|
@@ -404,8 +422,8 @@ export interface SpotLightProjectorFrameContext {
|
|
|
404
422
|
* leases, receipts, inspection PODs, and recovery Result values.
|
|
405
423
|
*/
|
|
406
424
|
export interface Renderer {
|
|
407
|
-
/**
|
|
408
|
-
|
|
425
|
+
/** Publish one renderer-owned read-only Surface dynamic page for the next frame. */
|
|
426
|
+
setSurfaceDynamicInput(frame: SurfaceDynamicInputFrame | undefined): void;
|
|
409
427
|
attach(world: World): RenderResult<RenderWorldLease, RenderError>;
|
|
410
428
|
/** Prepare a standard MeshAsset for the active device generation. */
|
|
411
429
|
prepareDynamicGeometry(
|
|
@@ -496,6 +514,8 @@ export type RendererEvent =
|
|
|
496
514
|
readonly kind: 'frame-submitted';
|
|
497
515
|
readonly frameId: number;
|
|
498
516
|
readonly deviceGeneration: number;
|
|
517
|
+
/** Compiled graph identity paired with the submitted picture. */
|
|
518
|
+
readonly graphGeneration?: number;
|
|
499
519
|
/** The exact draw receipt, for observation when App owns the draw loop. */
|
|
500
520
|
readonly receipt: FrameReceipt;
|
|
501
521
|
};
|
|
@@ -550,13 +570,25 @@ export interface FrameObservationRequest {
|
|
|
550
570
|
export interface FrameReceipt {
|
|
551
571
|
readonly frameId: number;
|
|
552
572
|
readonly deviceGeneration: number;
|
|
573
|
+
/** Whether this frame can present the active scene without a readiness fallback. */
|
|
574
|
+
readonly presentation: FramePresentation;
|
|
553
575
|
/** Backend identity captured at submit and checked before observation. */
|
|
554
576
|
readonly backendId?: RhiCaps['backendKind'];
|
|
555
577
|
/** Monotonic compiled graph identity used by renderer-issued observations. */
|
|
556
578
|
readonly graphGeneration?: number;
|
|
579
|
+
/**
|
|
580
|
+
* Effective output mapping for the submitted camera, including identity
|
|
581
|
+
* when this receipt has an accepted camera context. `undefined` means that
|
|
582
|
+
* no submitted display context is available; consumers must fail closed and
|
|
583
|
+
* must not infer identity or read the live World camera.
|
|
584
|
+
*/
|
|
585
|
+
readonly barrelDistortion?: import('./barrel-distortion.js').BarrelDistortionMapping;
|
|
557
586
|
readonly completed: Promise<RenderResult<void, RenderError>>;
|
|
558
587
|
}
|
|
559
588
|
|
|
589
|
+
/** Producer-derived presentation readiness for one submitted frame. */
|
|
590
|
+
export type FramePresentation = 'pending' | 'ready';
|
|
591
|
+
|
|
560
592
|
/**
|
|
561
593
|
* The sole public draw input; World objects never cross this boundary. Render
|
|
562
594
|
* owns extraction and graph interpretation, while the host owns encoding,
|
|
@@ -566,10 +598,29 @@ export interface RenderFrameInput {
|
|
|
566
598
|
readonly leases: readonly RenderWorldLease[];
|
|
567
599
|
readonly camera: FrameCamera;
|
|
568
600
|
readonly environment: FrameEnvironment;
|
|
601
|
+
/**
|
|
602
|
+
* Monotonic host render-sample time in seconds. This is captured before ECS
|
|
603
|
+
* applies its simulation delta clamp, then accepted with frame submission.
|
|
604
|
+
* Omitting it keeps direct renderer callers on the ECS-clock fallback.
|
|
605
|
+
*/
|
|
606
|
+
readonly sampleTimeSeconds?: number;
|
|
607
|
+
/**
|
|
608
|
+
* Mark the next submitted frame as a fresh temporal baseline. App sets this
|
|
609
|
+
* on resume so a short wall-clock pause cannot be mistaken for a valid
|
|
610
|
+
* motion pair; direct replay callers may use the same explicit lifecycle
|
|
611
|
+
* boundary.
|
|
612
|
+
*/
|
|
613
|
+
readonly temporalReset?: boolean;
|
|
569
614
|
/** Fixed-step publication consumed by dynamic geometry candidates. */
|
|
570
615
|
readonly fixedStep?: number;
|
|
571
616
|
/** Optional profiler correlation token owned by App and consumed by Render. */
|
|
572
617
|
readonly profileFrame?: ProfileFrameToken;
|
|
618
|
+
/**
|
|
619
|
+
* Select the geometry submission command lane while retaining the same
|
|
620
|
+
* extracted scene and material inputs. This is an acceptance/debug seam;
|
|
621
|
+
* both lanes remain subject to the ordinary resource and generation gates.
|
|
622
|
+
*/
|
|
623
|
+
readonly geometryLane?: 'automatic' | 'direct';
|
|
573
624
|
}
|
|
574
625
|
|
|
575
626
|
/** Detached, bounded observation metadata tied to one FrameReceipt and request. */
|
|
@@ -703,8 +754,12 @@ export interface RenderInspection {
|
|
|
703
754
|
readonly frameId: number;
|
|
704
755
|
readonly deviceGeneration: number;
|
|
705
756
|
};
|
|
757
|
+
/** Effective output mapping and accepted/LKG identity for the last picture. */
|
|
758
|
+
readonly barrelDistortion: import('./inspection-types').BarrelDistortionInspection;
|
|
706
759
|
/** Renderer-owned authored volume projection and submit/LKG state. */
|
|
707
760
|
readonly volumetricFog?: VolumetricFogInspection;
|
|
761
|
+
/** Renderer-owned procedural cloud projection from the latest resource-owner extract. */
|
|
762
|
+
readonly cloudLayer?: CloudLayerInspection;
|
|
708
763
|
readonly features: readonly string[];
|
|
709
764
|
/** Truthful lifecycle facts for every registered declarative feature. */
|
|
710
765
|
readonly featureDiagnostics: readonly RenderFeatureDiagnostics[];
|
|
@@ -721,6 +776,10 @@ export interface RenderInspection {
|
|
|
721
776
|
/** Standard MeshAsset dynamic-candidate lifecycle facts. */
|
|
722
777
|
readonly dynamicGeometry?: DynamicGeometryInspection;
|
|
723
778
|
readonly renderScene: RenderSceneInspection;
|
|
779
|
+
/** Detached logical allocation facts for graph-created render targets. */
|
|
780
|
+
readonly renderGraphResourceAllocation?: RenderGraphResourceAllocationInspection;
|
|
781
|
+
/** Detached logical allocation facts across graph generations. */
|
|
782
|
+
readonly renderGraphGenerationAllocation?: RenderGraphGenerationAllocationInspection;
|
|
724
783
|
readonly reflectionProbes: ReflectionProbeInspection;
|
|
725
784
|
/** Renderer-owned SSR dependency seam; consumer facts are projected from live owners. */
|
|
726
785
|
readonly ssrDependencies: SsrDependenciesInspection;
|
|
@@ -811,7 +870,12 @@ export type DrawOwnerOptions = {
|
|
|
811
870
|
readonly resourceOwner: number;
|
|
812
871
|
/** Optional FrameCamera entity selection; absent preserves ActiveCamera semantics. */
|
|
813
872
|
readonly cameraEntityKey?: number;
|
|
873
|
+
/** Monotonic host render-sample time in seconds, before the ECS delta clamp. */
|
|
874
|
+
readonly sampleTimeSeconds?: number;
|
|
875
|
+
/** Explicit pause/resume or replay lifecycle boundary for temporal owners. */
|
|
876
|
+
readonly temporalReset?: boolean;
|
|
814
877
|
readonly profileFrame?: ProfileFrameToken;
|
|
878
|
+
readonly geometryLane?: 'automatic' | 'direct';
|
|
815
879
|
};
|
|
816
880
|
|
|
817
881
|
/** Information attached to a device-loss notification. */
|
|
@@ -909,9 +973,8 @@ export const RENDER_GRAPH_EXECUTION_PHASE_CATALOG = [
|
|
|
909
973
|
'record/graph-execute/skybox',
|
|
910
974
|
'record/graph-execute/main',
|
|
911
975
|
'record/graph-execute/fxaa',
|
|
912
|
-
'record/graph-execute/bloom-
|
|
913
|
-
'record/graph-execute/bloom-
|
|
914
|
-
'record/graph-execute/bloom-blur-v',
|
|
976
|
+
'record/graph-execute/bloom-downsample',
|
|
977
|
+
'record/graph-execute/bloom-upsample',
|
|
915
978
|
'record/graph-execute/bloom-composite',
|
|
916
979
|
'record/graph-execute/ssr-hiz',
|
|
917
980
|
'record/graph-execute/ssr-trace',
|
|
@@ -586,7 +586,13 @@ function dispatchFullscreenPass(
|
|
|
586
586
|
detail: { readsKey: reads[0] ?? 'ldrColor', passName: name },
|
|
587
587
|
});
|
|
588
588
|
}
|
|
589
|
-
recordFxaaPass(
|
|
589
|
+
recordFxaaPass(
|
|
590
|
+
requireRenderGraphRecordContext(ctx),
|
|
591
|
+
resolveCtx,
|
|
592
|
+
graphPass,
|
|
593
|
+
paramsOverride,
|
|
594
|
+
graphOutputFormat,
|
|
595
|
+
);
|
|
590
596
|
return;
|
|
591
597
|
}
|
|
592
598
|
const lookup = ctx.runtime.lookupPostProcess;
|
package/src/render-pipeline.ts
CHANGED
|
@@ -41,6 +41,7 @@ import type { DepthOfFieldSide } from './components/depth-of-field';
|
|
|
41
41
|
import type { DirectionalShadowFilterLabel } from './components/directional-shadow-filter';
|
|
42
42
|
import type { RenderError } from './errors/render';
|
|
43
43
|
import type { RenderFeatureTargetKind } from './features/targets';
|
|
44
|
+
import type { RenderFeaturePlacement } from './features/types';
|
|
44
45
|
import type { ShadowViewIdentity, ShadowViewProjection } from './gpu-driven/shadow-views';
|
|
45
46
|
import {
|
|
46
47
|
GPU_TEXTURE_USAGE_COPY_SRC,
|
|
@@ -224,6 +225,8 @@ export interface RenderPipelineTopology {
|
|
|
224
225
|
readonly clearOnly?: boolean | undefined;
|
|
225
226
|
/** Selected atmosphere requires the graph-owned sky producer and background. */
|
|
226
227
|
readonly atmosphere?: boolean | undefined;
|
|
228
|
+
/** Finite-depth distance / exponential-height fog; no volume history. */
|
|
229
|
+
readonly analyticFog?: boolean | undefined;
|
|
227
230
|
/** Whether Standard main draws carry the producer-owned fallback MRT. */
|
|
228
231
|
readonly reflectionFallback?: { readonly enabled: boolean } | undefined;
|
|
229
232
|
readonly surface: {
|
|
@@ -235,7 +238,10 @@ export interface RenderPipelineTopology {
|
|
|
235
238
|
};
|
|
236
239
|
/** Renderer-owned immutable dimensions for Standard graph consumers. */
|
|
237
240
|
readonly extent?: RenderExtent;
|
|
238
|
-
readonly camera: Pick<
|
|
241
|
+
readonly camera: Pick<
|
|
242
|
+
RenderPipelineContext['camera'],
|
|
243
|
+
'tonemap' | 'antialias' | 'bloom' | 'bloomIntensity'
|
|
244
|
+
> & {
|
|
239
245
|
/** Shape-only DoF admission; optical values remain per-frame UBO data. */
|
|
240
246
|
readonly depthOfField?:
|
|
241
247
|
| {
|
|
@@ -244,6 +250,8 @@ export interface RenderPipelineTopology {
|
|
|
244
250
|
readonly useFar: boolean;
|
|
245
251
|
}
|
|
246
252
|
| undefined;
|
|
253
|
+
/** Shape-only barrel admission; numeric mapping stays per-frame data. */
|
|
254
|
+
readonly barrelDistortion?: boolean | undefined;
|
|
247
255
|
};
|
|
248
256
|
/** Frame-stable Standard output policy; no raw RHI handles enter topology. */
|
|
249
257
|
readonly output?: {
|
|
@@ -280,6 +288,10 @@ export interface RenderPipelineTopology {
|
|
|
280
288
|
*/
|
|
281
289
|
readonly volumetricFog?: {
|
|
282
290
|
readonly enabled: boolean;
|
|
291
|
+
readonly additional?: readonly {
|
|
292
|
+
readonly format: TextureFormat;
|
|
293
|
+
readonly extent: { readonly width: number; readonly height: number; readonly depth: number };
|
|
294
|
+
}[];
|
|
283
295
|
readonly lightKind?: 'directional' | 'point' | 'spot' | undefined;
|
|
284
296
|
readonly lightEntity?: number | undefined;
|
|
285
297
|
readonly pointLightEntity?: number | undefined;
|
|
@@ -328,6 +340,8 @@ export interface RenderPipelineTopology {
|
|
|
328
340
|
readonly standardLightingTopologySignature?: string | undefined;
|
|
329
341
|
/** Internal graph fact; renderer callers do not configure transmission demand. */
|
|
330
342
|
readonly transmissionDemand?: TransmissionDemand | undefined;
|
|
343
|
+
/** Whether the extracted frame contains a single-layer medium Surface. */
|
|
344
|
+
readonly singleLayerMedium?: boolean | undefined;
|
|
331
345
|
}
|
|
332
346
|
|
|
333
347
|
/** Resolve the built-in final-output dither policy from the pipeline asset. */
|
|
@@ -458,9 +472,30 @@ export interface RenderPipelineGpuDrivenProjection {
|
|
|
458
472
|
pass: RhiRenderPassEncoder,
|
|
459
473
|
resources: GraphResourceResolver,
|
|
460
474
|
frameResources: GpuDrivenStandardPbrFrameResources,
|
|
475
|
+
filter?: RenderPipelineGpuDrivenFilter,
|
|
476
|
+
fragmentEntryPoint?: string,
|
|
461
477
|
): void;
|
|
462
478
|
}
|
|
463
479
|
|
|
480
|
+
/** Material family selected by a typed scene pass for GPU-driven encoding. */
|
|
481
|
+
export type RenderPipelineGpuDrivenFilter =
|
|
482
|
+
| 'opaque'
|
|
483
|
+
| 'deferred-opaque'
|
|
484
|
+
| 'forward-only-opaque'
|
|
485
|
+
| 'single-layer-medium';
|
|
486
|
+
|
|
487
|
+
/** Graph-paired inputs available to a single-layer medium Surface pass. */
|
|
488
|
+
export interface RenderPipelineSurfaceMediumPair {
|
|
489
|
+
/** The resolved opaque scene color produced by the shared Standard owner. */
|
|
490
|
+
readonly opaqueColor: GraphTextureView;
|
|
491
|
+
/** Raw depth copy is backend-dependent and remains explicit when unavailable. */
|
|
492
|
+
readonly rawDepth:
|
|
493
|
+
| { readonly status: 'available'; readonly view: GraphTextureView }
|
|
494
|
+
| {
|
|
495
|
+
readonly status: 'unavailable';
|
|
496
|
+
readonly reason: 'depth-copy-unavailable';
|
|
497
|
+
};
|
|
498
|
+
}
|
|
464
499
|
/** Exact scene rows selected by an indirect batch; palette offsets are global. */
|
|
465
500
|
export interface GpuDrivenSceneMeshBinding {
|
|
466
501
|
readonly meshBuffer: Buffer;
|
|
@@ -470,6 +505,8 @@ export interface GpuDrivenSceneMeshBinding {
|
|
|
470
505
|
|
|
471
506
|
/** Producer-owned Standard PBR resources resolved during graph execution. */
|
|
472
507
|
export interface GpuDrivenStandardPbrFrameResources {
|
|
508
|
+
/** Resource generation of the actual scene-index/indirect producer. */
|
|
509
|
+
readonly resourceGeneration?: number;
|
|
473
510
|
readonly materialBindGroups: (BindGroup | undefined)[];
|
|
474
511
|
/** Frame-global material slots keyed by the retained scene entity identity. */
|
|
475
512
|
readonly materialSlotIndicesByEntity: Map<number, readonly number[]>;
|
|
@@ -480,6 +517,56 @@ export interface GpuDrivenStandardPbrFrameResources {
|
|
|
480
517
|
colorFormats?: readonly TextureFormat[];
|
|
481
518
|
/** Exact producer-owned numeric Material table consumed by scene-index PBR. */
|
|
482
519
|
readonly sceneMaterialBuffer: Buffer;
|
|
520
|
+
/** Renderer-owned generic Surface page and frame/range metadata. */
|
|
521
|
+
readonly surfaceDynamicInput?: {
|
|
522
|
+
readonly page: Buffer;
|
|
523
|
+
readonly frame: Buffer;
|
|
524
|
+
readonly sharedFrame: Buffer;
|
|
525
|
+
readonly pageBytes: number;
|
|
526
|
+
readonly frameBytes: number;
|
|
527
|
+
readonly sharedFrameBytes: number;
|
|
528
|
+
};
|
|
529
|
+
/**
|
|
530
|
+
* Resolve the complete direct Surface slot-3 closure for one retained draw.
|
|
531
|
+
* The producer validates the stable draw identity and instance count before
|
|
532
|
+
* publishing a bind group; record never derives a frame-row address.
|
|
533
|
+
*/
|
|
534
|
+
readonly surfaceDirectInstances?: (input: {
|
|
535
|
+
readonly worldId: number;
|
|
536
|
+
readonly entityKey: number;
|
|
537
|
+
readonly drawItemIndex: number;
|
|
538
|
+
readonly instanceCount: number;
|
|
539
|
+
readonly firstInstanceOrdinal?: number;
|
|
540
|
+
readonly instanceBuffer: Buffer;
|
|
541
|
+
readonly probeBuffer?: Buffer;
|
|
542
|
+
readonly probeOffset?: number;
|
|
543
|
+
}) => Result<
|
|
544
|
+
{
|
|
545
|
+
readonly bindGroup: BindGroup;
|
|
546
|
+
readonly dynamicOffsets: readonly number[];
|
|
547
|
+
readonly frameBase: number;
|
|
548
|
+
/** Public Surface member identities covered by the recorded command. */
|
|
549
|
+
readonly memberIds: readonly string[];
|
|
550
|
+
},
|
|
551
|
+
RhiError
|
|
552
|
+
>;
|
|
553
|
+
/** Frame-local sink fed only by actual Surface draw commands. */
|
|
554
|
+
readonly surfaceSubmissionObservation?: import('./surface/submission-observation').SurfaceSubmissionCandidate;
|
|
555
|
+
/** Existing Standard clustered group(2), supplied by the main-pass owner. */
|
|
556
|
+
clusterBindGroup?: BindGroup | undefined;
|
|
557
|
+
/** Rebind the same cluster resources around one batch-local mesh row page. */
|
|
558
|
+
clusterBindGroupForMesh?:
|
|
559
|
+
| ((meshBuffer: Buffer, bindingBytes: number) => BindGroup | undefined)
|
|
560
|
+
| undefined;
|
|
561
|
+
/** Rebind clustered lighting around the scene-index Mesh/Palette/Morph page. */
|
|
562
|
+
clusterBindGroupForSkin?:
|
|
563
|
+
| ((
|
|
564
|
+
meshBuffer: Buffer,
|
|
565
|
+
meshBindingBytes: number,
|
|
566
|
+
paletteBuffer: Buffer,
|
|
567
|
+
paletteBindingWindowBytes: number,
|
|
568
|
+
) => BindGroup | undefined)
|
|
569
|
+
| undefined;
|
|
483
570
|
resolveClusteredMeshBindGroup?: (binding: GpuDrivenSceneMeshBinding) => BindGroup;
|
|
484
571
|
}
|
|
485
572
|
|
|
@@ -507,6 +594,8 @@ export interface RenderPipelineBuildContext<FrameCtx extends RenderPipelineFrame
|
|
|
507
594
|
* inferring rgba16float support from the selected surface format.
|
|
508
595
|
*/
|
|
509
596
|
readonly capabilities?: Pick<RhiCaps, 'rgba16floatRenderable'>;
|
|
597
|
+
/** Renderer-derived cloud shadow size shared by graph allocation and projection. */
|
|
598
|
+
readonly cloudShadowResolution?: number;
|
|
510
599
|
/** Prepared typed graph resources owned by RenderSystem/RenderFrameState. */
|
|
511
600
|
readonly standardOutput?: {
|
|
512
601
|
readonly autoExposure?: {
|
|
@@ -536,6 +625,19 @@ export interface RenderPipelineBuildContext<FrameCtx extends RenderPipelineFrame
|
|
|
536
625
|
readonly currentStability: RenderPipelineTarget;
|
|
537
626
|
readonly previousStability: RenderPipelineTarget;
|
|
538
627
|
};
|
|
628
|
+
/**
|
|
629
|
+
* Renderer-owned CloudLayer transport history. Each pair is backed by the
|
|
630
|
+
* same submit-fenced temporal owner as TAA, while the three attachments keep
|
|
631
|
+
* radiance, transmittance and representative depth in separate typed lanes.
|
|
632
|
+
*/
|
|
633
|
+
readonly cloudHistory?: {
|
|
634
|
+
readonly currentRadiance: RenderPipelineTarget;
|
|
635
|
+
readonly previousRadiance: RenderPipelineTarget;
|
|
636
|
+
readonly currentTransmittance: RenderPipelineTarget;
|
|
637
|
+
readonly previousTransmittance: RenderPipelineTarget;
|
|
638
|
+
readonly currentDepth: RenderPipelineTarget;
|
|
639
|
+
readonly previousDepth: RenderPipelineTarget;
|
|
640
|
+
};
|
|
539
641
|
/** Renderer-owned SSR temporal history targets for the admitted spatial chain. */
|
|
540
642
|
readonly ssrHistory?: {
|
|
541
643
|
readonly previous: RenderPipelineTarget;
|
|
@@ -568,6 +670,15 @@ export interface RenderPipelineBuildContext<FrameCtx extends RenderPipelineFrame
|
|
|
568
670
|
semanticTargets?: readonly RenderPipelineTarget[],
|
|
569
671
|
namedTargets?: Readonly<Record<string, RenderPipelineTarget>>,
|
|
570
672
|
standardSurfaceAccesses?: readonly GraphAccess[],
|
|
673
|
+
featureSelectionOrPlacement?:
|
|
674
|
+
| {
|
|
675
|
+
/** Project only these identities at this ordered stage. */
|
|
676
|
+
readonly include?: readonly string[];
|
|
677
|
+
/** Keep these identities for a later ordered stage. */
|
|
678
|
+
readonly exclude?: readonly string[];
|
|
679
|
+
}
|
|
680
|
+
| RenderFeaturePlacement,
|
|
681
|
+
passNames?: readonly string[],
|
|
571
682
|
): Result<void, RenderPipelineBuildError>;
|
|
572
683
|
/** Prepare feature-owned shadow draws and their early compute producers once. */
|
|
573
684
|
contributeShadowFeatures?(): Result<
|
|
@@ -580,6 +691,30 @@ export interface RenderPipelineBuildContext<FrameCtx extends RenderPipelineFrame
|
|
|
580
691
|
): Result<void, RenderPipelineBuildError>;
|
|
581
692
|
/** Whether a producer-owned feature is installed for this graph build. */
|
|
582
693
|
hasFeature?(identity: string): boolean;
|
|
694
|
+
/** Whether a producer-owned feature has executable work at this graph build. */
|
|
695
|
+
hasFeatureWork?(identity: string, placement?: RenderFeaturePlacement): boolean;
|
|
696
|
+
/** Whether a producer-owned feature has a resolved raster pass this frame. */
|
|
697
|
+
hasFeatureRasterWork?(identity: string, placement?: RenderFeaturePlacement): boolean;
|
|
698
|
+
}
|
|
699
|
+
|
|
700
|
+
/** Project the six CloudLayer history attachments into feature target aliases. */
|
|
701
|
+
export function renderPipelineCloudHistoryTargets(input: {
|
|
702
|
+
readonly currentRadiance: RenderPipelineTarget;
|
|
703
|
+
readonly previousRadiance: RenderPipelineTarget;
|
|
704
|
+
readonly currentTransmittance: RenderPipelineTarget;
|
|
705
|
+
readonly previousTransmittance: RenderPipelineTarget;
|
|
706
|
+
readonly currentDepth: RenderPipelineTarget;
|
|
707
|
+
readonly previousDepth: RenderPipelineTarget;
|
|
708
|
+
}): readonly RenderPipelineFeatureTarget[] {
|
|
709
|
+
const entries: readonly (readonly [string, RenderPipelineTarget])[] = [
|
|
710
|
+
['cloud-history-radiance-previous', input.previousRadiance],
|
|
711
|
+
['cloud-history-radiance-current', input.currentRadiance],
|
|
712
|
+
['cloud-history-transmittance-previous', input.previousTransmittance],
|
|
713
|
+
['cloud-history-transmittance-current', input.currentTransmittance],
|
|
714
|
+
['cloud-history-depth-previous', input.previousDepth],
|
|
715
|
+
['cloud-history-depth-current', input.currentDepth],
|
|
716
|
+
];
|
|
717
|
+
return entries.map(([name, target]) => ({ name, kind: 'scene-color' as const, ...target }));
|
|
583
718
|
}
|
|
584
719
|
|
|
585
720
|
export type RenderPipelineBuildError = RenderGraphError | RenderError | RhiError;
|