@forgeax/engine-render 0.1.33 → 0.1.35
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 +1062 -127
- 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/device-feature-admission.d.ts +2 -2
- 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/host-contract.d.ts +6 -5
- package/dist/assembly/host-contract.d.ts.map +1 -1
- 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/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/render-target-host.d.ts +5 -0
- package/dist/assembly/render-target-host.d.ts.map +1 -1
- 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/webgpu-pbr-ready.d.ts +1 -0
- package/dist/assembly/webgpu-pbr-ready.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 +1 -1
- 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 +2 -1
- package/dist/assembly/webgpu-renderer.d.ts.map +1 -1
- package/dist/authoring.mjs +2 -4
- package/dist/authoring.mjs.map +1 -1
- package/dist/barrel-distortion.d.ts +47 -0
- package/dist/barrel-distortion.d.ts.map +1 -0
- package/dist/chunk-3XUBWRY2.mjs +1842 -0
- package/dist/chunk-3XUBWRY2.mjs.map +1 -0
- package/dist/{chunk-OO3DRYK7.mjs → chunk-G6HDNGY7.mjs} +2400 -1767
- package/dist/chunk-G6HDNGY7.mjs.map +1 -0
- package/dist/{chunk-ZDQWGQW7.mjs → chunk-LM5IE7GF.mjs} +4 -4
- package/dist/{chunk-ZDQWGQW7.mjs.map → chunk-LM5IE7GF.mjs.map} +1 -1
- package/dist/{chunk-VOZWDM3L.mjs → chunk-LNIUIKQ7.mjs} +1514 -498
- package/dist/chunk-LNIUIKQ7.mjs.map +1 -0
- package/dist/chunk-MXTWKZO4.mjs +3268 -0
- package/dist/chunk-MXTWKZO4.mjs.map +1 -0
- package/dist/chunk-MZ4C7EHF.mjs +6942 -0
- package/dist/chunk-MZ4C7EHF.mjs.map +1 -0
- package/dist/chunk-RIPAEGI6.mjs +48 -0
- package/dist/chunk-RIPAEGI6.mjs.map +1 -0
- package/dist/{chunk-LEAXOMYJ.mjs → chunk-SGPUJW3F.mjs} +117 -5
- package/dist/chunk-SGPUJW3F.mjs.map +1 -0
- package/dist/{chunk-PA5DRJNI.mjs → chunk-X2KA6WHM.mjs} +29 -4
- package/dist/chunk-X2KA6WHM.mjs.map +1 -0
- package/dist/{chunk-BLXGONR2.mjs → chunk-XSFB7XXQ.mjs} +51 -4
- package/dist/chunk-XSFB7XXQ.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/barrel-distortion.d.ts +13 -0
- package/dist/components/barrel-distortion.d.ts.map +1 -0
- 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/construct-renderer.d.ts +1 -1
- package/dist/construct-renderer.d.ts.map +1 -1
- package/dist/construct-renderer.mjs +8406 -5785
- package/dist/construct-renderer.mjs.map +1 -1
- package/dist/device/gpu-residency.d.ts +19 -19
- 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/errors/cloud.d.ts +59 -0
- package/dist/errors/cloud.d.ts.map +1 -0
- package/dist/errors/render.d.ts +20 -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 +5 -1
- package/dist/extract/contracts.d.ts.map +1 -1
- package/dist/extract/material-context.d.ts +7 -0
- package/dist/extract/material-context.d.ts.map +1 -0
- 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 +6 -2
- package/dist/features/error-reporting.d.ts.map +1 -1
- package/dist/features/host.d.ts +15 -0
- package/dist/features/host.d.ts.map +1 -1
- package/dist/features/plan.d.ts +10 -0
- package/dist/features/plan.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 +48 -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/glyph-text-layout-system.d.ts +1 -1
- package/dist/glyph-text-layout-system.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.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 +47 -3
- 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 +26 -2
- package/dist/gpu-driven/view-gpu.d.ts.map +1 -1
- package/dist/gpu-scene.d.ts +5 -0
- 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/frame-resources.d.ts.map +1 -1
- package/dist/ibl/skylight-bind-group.d.ts +14 -5
- package/dist/ibl/skylight-bind-group.d.ts.map +1 -1
- package/dist/index.d.ts +30 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +780 -9
- package/dist/index.mjs.map +1 -1
- package/dist/inspection-types.d.ts +135 -1
- 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 +47 -100
- package/dist/instances.d.ts.map +1 -1
- package/dist/internal.mjs +7 -8
- package/dist/internal.mjs.map +1 -1
- package/dist/pbr-pipeline.d.ts +22 -4
- 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/lut-gpu.d.ts +2 -2
- package/dist/pipeline/standard-output/lut-gpu.d.ts.map +1 -1
- package/dist/pipeline/standard-output/resources.d.ts +2 -2
- package/dist/pipeline/standard-output/resources.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.map +1 -1
- package/dist/pipeline-builder.d.ts +1 -1
- package/dist/pipeline-builder.d.ts.map +1 -1
- 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/publication/contract.d.ts +77 -0
- package/dist/publication/contract.d.ts.map +1 -0
- package/dist/publication/dependencies.d.ts +7 -0
- package/dist/publication/dependencies.d.ts.map +1 -0
- package/dist/publication/prepare-geometry.d.ts +9 -0
- package/dist/publication/prepare-geometry.d.ts.map +1 -0
- package/dist/publication/programs.d.ts +5 -0
- package/dist/publication/programs.d.ts.map +1 -0
- package/dist/publication/publisher.d.ts +33 -0
- package/dist/publication/publisher.d.ts.map +1 -0
- package/dist/publication/receiver.d.ts +29 -0
- package/dist/publication/receiver.d.ts.map +1 -0
- package/dist/publication/resource-scope.d.ts +18 -0
- package/dist/publication/resource-scope.d.ts.map +1 -0
- package/dist/publication/targets.d.ts +33 -0
- package/dist/publication/targets.d.ts.map +1 -0
- package/dist/publication/video.d.ts +5 -0
- package/dist/publication/video.d.ts.map +1 -0
- 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 +43 -9
- package/dist/record/frame-snapshot.d.ts.map +1 -1
- package/dist/record/frame.d.ts +15 -65
- 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/helpers.d.ts +2 -2
- package/dist/record/helpers.d.ts.map +1 -1
- package/dist/record/main-pass-geometry.d.ts +22 -6
- package/dist/record/main-pass-geometry.d.ts.map +1 -1
- package/dist/record/main-pass-material.d.ts +14 -10
- package/dist/record/main-pass-material.d.ts.map +1 -1
- package/dist/record/main-pass-sprite-draws.d.ts +3 -16
- 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/motion-blur-receipt.d.ts +11 -0
- package/dist/record/motion-blur-receipt.d.ts.map +1 -0
- package/dist/record/prepared-material-bindings.d.ts +3 -3
- package/dist/record/prepared-material-bindings.d.ts.map +1 -1
- 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 +24 -5
- 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 +1 -1
- package/dist/record/skybox-post-pass.d.ts.map +1 -1
- package/dist/record/sprite-instance-buffer.d.ts +31 -0
- package/dist/record/sprite-instance-buffer.d.ts.map +1 -0
- package/dist/record/target-capture-graph.d.ts +19 -0
- package/dist/record/target-capture-graph.d.ts.map +1 -0
- package/dist/record/typed-frame-graph.d.ts +24 -15
- 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 +14 -4
- 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 +46 -5
- 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 +103 -2
- 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 +18 -9
- 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-projections.d.ts +3 -2
- package/dist/render-system-projections.d.ts.map +1 -1
- 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 +22 -21
- 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 +18 -7
- package/dist/scene/render-scene.d.ts.map +1 -1
- package/dist/scene/render-source.d.ts +42 -0
- package/dist/scene/render-source.d.ts.map +1 -0
- package/dist/scene/source-systems.d.ts +6 -0
- package/dist/scene/source-systems.d.ts.map +1 -0
- 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/systems/skin-palette-types.d.ts +10 -0
- package/dist/systems/skin-palette-types.d.ts.map +1 -1
- package/dist/systems/transparent-dispatch.d.ts +2 -2
- package/dist/systems/transparent-dispatch.d.ts.map +1 -1
- package/dist/systems/transparent-sort-config.d.ts +2 -1
- package/dist/systems/transparent-sort-config.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 +6 -7
- 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/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 +14 -2
- package/dist/typed-render-graph-primitives.d.ts.map +1 -1
- package/dist/volume/component.d.ts +9 -4
- 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/package.json +22 -21
- package/src/__tests__/atmosphere-daylight.dawn.test.ts +72 -0
- package/src/__tests__/auto-exposure-transaction.integration.test.ts +4 -9
- 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__/construct-renderer-identity.unit.test.ts +49 -0
- package/src/__tests__/detached-recovery-graph.unit.test.ts +277 -0
- package/src/__tests__/device-feature-admission.unit.test.ts +3 -2
- 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__/factory-contract.integration.test.ts +295 -45
- package/src/__tests__/feature-depth-input.dawn.test.ts +129 -2
- 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-material-artifacts.unit.test.ts +143 -0
- package/src/__tests__/gpu-driven-pbr.dawn.test.ts +5 -6
- package/src/__tests__/gpu-driven-production.integration.test.ts +482 -3
- package/src/__tests__/gpu-driven-shadow-views.dawn.test.ts +6 -5
- package/src/__tests__/gpu-driven-view-gpu-evidence.ts +94 -6
- 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-scene.unit.test.ts +119 -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 +97 -305
- package/src/__tests__/instances-world-ownership.integration.test.ts +62 -0
- package/src/__tests__/ktx2-basis-gpu-consumer.dawn.test.ts +4 -1
- package/src/__tests__/main-pass-material-medium-selection.unit.test.ts +145 -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__/materials-standard-contract.unit.test.ts +0 -1
- 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 +13 -7
- 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 +66 -8
- package/src/__tests__/physical-material-budget.unit.test.ts +40 -0
- package/src/__tests__/prepared-graphics-capability.unit.test.ts +66 -2
- package/src/__tests__/probe-bindings.unit.test.ts +582 -1
- package/src/__tests__/probe-scene-dirty.integration.test.ts +28 -1
- 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 +8 -0
- package/src/__tests__/render-feature-diagnostics.unit.test.ts +15 -2
- package/src/__tests__/render-feature-error-reporting.unit.test.ts +21 -1
- 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-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 +20 -20
- 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 +42 -8
- package/src/__tests__/renderer-frame-generation-fence.integration.test.ts +16 -0
- package/src/__tests__/renderer-frame-transaction.integration.test.ts +26 -10
- package/src/__tests__/resource-allocation.unit.test.ts +123 -0
- 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 +15 -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-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.integration.test.ts +182 -1
- 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__/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 +4 -2
- package/src/__tests__/volumetric-fog-budget-recovery.integration.test.ts +30 -20
- 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 +113 -9
- package/src/__tests__/volumetric-fog-topology.unit.test.ts +5 -3
- 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/device-feature-admission.ts +2 -2
- 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/host-contract.ts +8 -5
- 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/recovery/device-loss-fanout.ts +13 -0
- package/src/assembly/recovery/renderer-recover.ts +50 -18
- package/src/assembly/render-feature-post-processes.ts +54 -0
- package/src/assembly/render-target-host.ts +57 -47
- package/src/assembly/renderer-facade.ts +7 -2
- 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 +3 -3
- package/src/assembly/webgpu-pbr-ready.ts +9 -1
- package/src/assembly/webgpu-ready-per-pass.ts +104 -0
- package/src/assembly/webgpu-ready.ts +116 -62
- 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 +303 -313
- package/src/assembly/webgpu-vertex-layouts.ts +1 -1
- package/src/barrel-distortion.ts +247 -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/barrel-distortion.ts +46 -0
- 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/sprite-instances.ts +1 -1
- package/src/construct-renderer.ts +1 -1
- package/src/device/gpu-residency.ts +26 -25
- package/src/dynamic-geometry.ts +12 -1
- package/src/errors/cloud.ts +103 -0
- package/src/errors/render.ts +47 -8
- package/src/examples/single-layer-medium-surface.ts +59 -0
- package/src/extract/camera.ts +15 -1
- package/src/extract/contracts.ts +5 -0
- package/src/extract/material-context.ts +21 -0
- package/src/features/barrel-distortion.ts +172 -0
- package/src/features/error-reporting.ts +26 -6
- package/src/features/host.ts +128 -19
- package/src/features/plan.ts +10 -0
- package/src/features/render-graph-contribution.ts +9 -0
- package/src/features/render-graph-raster.ts +45 -3
- package/src/features/targets.ts +66 -0
- package/src/features/types.ts +51 -0
- package/src/fullscreen-post-process-pass.ts +41 -9
- package/src/glyph-text-layout-system.ts +2 -2
- package/src/gpu-dirty-ranges.ts +48 -0
- package/src/gpu-driven/batch-topology.ts +53 -0
- package/src/gpu-driven/material-artifacts.ts +33 -25
- package/src/gpu-driven/prepared-draw.ts +12 -4
- package/src/gpu-driven/production-raster-material.ts +1894 -0
- package/src/gpu-driven/production-raster.ts +825 -784
- 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 +164 -10
- package/src/gpu-scene.ts +75 -84
- package/src/hdrp-buffers.ts +4 -3
- package/src/ibl/frame-resources.ts +0 -1
- package/src/ibl/skylight-bind-group.ts +62 -32
- package/src/index.ts +205 -9
- package/src/inspection-types.ts +162 -0
- package/src/instance-buffer-cache.ts +4 -4
- package/src/instances.ts +152 -569
- package/src/pbr-pipeline.ts +230 -30
- 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/lut-gpu.ts +3 -3
- package/src/pipeline/standard-output/resources.ts +2 -2
- package/src/pipeline/standard-output/types.ts +12 -1
- package/src/pipeline/standard-pipeline.ts +291 -18
- package/src/pipeline/standard-post.ts +90 -24
- package/src/pipeline-builder.ts +1 -1
- package/src/plugin.ts +4 -0
- package/src/points-lines/__tests__/points-lines.bench.ts +17 -8
- package/src/prepare/prepared-graphics-resolver.ts +2 -0
- package/src/publication/__tests__/derived-geometry.integration.test.ts +177 -0
- package/src/publication/__tests__/features.integration.test.ts +122 -0
- package/src/publication/__tests__/programs.unit.test.ts +25 -0
- package/src/publication/__tests__/publication.integration.test.ts +370 -0
- package/src/publication/__tests__/targets.integration.test.ts +120 -0
- package/src/publication/__tests__/video.browser.test.ts +50 -0
- package/src/publication/contract.ts +104 -0
- package/src/publication/dependencies.ts +54 -0
- package/src/publication/prepare-geometry.ts +94 -0
- package/src/publication/programs.ts +45 -0
- package/src/publication/publisher.ts +618 -0
- package/src/publication/receiver.ts +297 -0
- package/src/publication/resource-scope.ts +31 -0
- package/src/publication/targets.ts +182 -0
- package/src/publication/video.ts +33 -0
- package/src/record/__tests__/main-pass-geometry.unit.test.ts +30 -0
- package/src/record/__tests__/material-bg-cache.unit.test.ts +15 -1
- package/src/record/__tests__/sprite-material-abi.unit.test.ts +9 -11
- package/src/record/__tests__/temporal-payload.unit.test.ts +1 -1
- 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__/video-texture-view.unit.test.ts +9 -9
- 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 +855 -0
- package/src/record/fold-instance-buffer.ts +51 -0
- package/src/record/frame-lighting.ts +36 -2
- package/src/record/frame-snapshot.ts +45 -9
- package/src/record/frame.ts +258 -1105
- package/src/record/gpu-draw-receipts.ts +38 -0
- package/src/record/gpu-timing.ts +48 -5
- package/src/record/helpers.ts +2 -2
- package/src/record/main-pass-geometry.ts +272 -84
- package/src/record/main-pass-material.ts +102 -36
- package/src/record/main-pass-sprite-draws.ts +13 -217
- package/src/record/main-pass.ts +164 -27
- package/src/record/motion-blur-receipt.ts +91 -0
- package/src/record/prepared-material-bindings.ts +11 -6
- package/src/record/probe-blend-buffer.ts +180 -0
- package/src/record/recovery-pipeline.ts +35 -3
- package/src/record/render-context.ts +41 -5
- package/src/record/shadow-pass.ts +30 -4
- package/src/record/skybox-post-pass.ts +28 -4
- package/src/record/sprite-instance-buffer.ts +155 -0
- package/src/record/target-capture-graph.ts +258 -0
- package/src/record/typed-frame-graph.ts +776 -340
- package/src/record/view-ubo.ts +27 -4
- package/src/record/volume-params.ts +225 -0
- package/src/recovery/render-system-candidate.ts +243 -50
- package/src/reflection/record-owner.ts +7 -3
- package/src/render-contract.ts +54 -5
- package/src/render-graph-primitives.ts +7 -1
- package/src/render-pipeline.ts +130 -0
- package/src/render-system-extract-tail.ts +90 -78
- package/src/render-system-extract.ts +76 -76
- package/src/render-system-presentation.ts +56 -0
- package/src/render-system-producer-roots.ts +96 -0
- package/src/render-system-projections.ts +3 -2
- package/src/render-system-residency.ts +159 -0
- package/src/render-system.ts +421 -408
- package/src/scene/probe-blend.ts +96 -4
- package/src/scene/render-scene.ts +416 -337
- package/src/scene/render-source.ts +90 -0
- package/src/scene/source-systems.ts +33 -0
- 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 +5 -1
- package/src/systems/skin-palette-types.ts +11 -0
- package/src/systems/transparent-dispatch.ts +2 -2
- package/src/systems/transparent-sort-config.ts +3 -1
- 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/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 +70 -2
- package/src/volume/component.ts +10 -9
- package/src/volume/extract.ts +11 -5
- package/src/volume/inspection.ts +3 -0
- package/src/volume/passes.ts +87 -4
- package/src/volume/resources.ts +2 -1
- package/dist/chunk-3RTCJTH4.mjs +0 -1610
- package/dist/chunk-3RTCJTH4.mjs.map +0 -1
- package/dist/chunk-BLXGONR2.mjs.map +0 -1
- package/dist/chunk-ILQ5MEZF.mjs +0 -32
- package/dist/chunk-ILQ5MEZF.mjs.map +0 -1
- package/dist/chunk-LEAXOMYJ.mjs.map +0 -1
- package/dist/chunk-NB2S7ZRX.mjs +0 -1783
- package/dist/chunk-NB2S7ZRX.mjs.map +0 -1
- package/dist/chunk-NNQL7CB3.mjs +0 -1713
- package/dist/chunk-NNQL7CB3.mjs.map +0 -1
- package/dist/chunk-OO3DRYK7.mjs.map +0 -1
- package/dist/chunk-PA5DRJNI.mjs.map +0 -1
- package/dist/chunk-PLAXOOX5.mjs +0 -1907
- package/dist/chunk-PLAXOOX5.mjs.map +0 -1
- package/dist/chunk-RXZ3RGOU.mjs +0 -53
- package/dist/chunk-RXZ3RGOU.mjs.map +0 -1
- package/dist/chunk-VOZWDM3L.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,8 +60,9 @@ 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';
|
|
65
|
+
import type { PublishedRenderFrameInput, RenderPublicationIdentity } from './publication/contract';
|
|
58
66
|
import type { RenderSceneBounds } from './scene/render-scene-types.js';
|
|
59
67
|
import type { SsrAdmissionIdentity } from './ssr/identity.js';
|
|
60
68
|
import type {
|
|
@@ -94,6 +102,7 @@ import type {
|
|
|
94
102
|
GpuPassTimingOptions,
|
|
95
103
|
} from './record/gpu-pass-timing/index.js';
|
|
96
104
|
import type { VolumeTimingObservation } from './record/gpu-timing.js';
|
|
105
|
+
import type { SurfaceDynamicInputFrame } from './surface/dynamic-input.js';
|
|
97
106
|
import type { TemporalView } from './temporal/view.js';
|
|
98
107
|
import type { VolumetricFogInspection } from './volume/inspection.js';
|
|
99
108
|
|
|
@@ -189,6 +198,8 @@ export interface CameraSnapshot {
|
|
|
189
198
|
/** Target presentation rate; zero follows the accepted frame interval. */
|
|
190
199
|
readonly targetFps?: number;
|
|
191
200
|
};
|
|
201
|
+
/** Optional active-camera barrel projection, copied from the ECS schema. */
|
|
202
|
+
readonly barrelDistortion?: BarrelDistortionData;
|
|
192
203
|
}
|
|
193
204
|
|
|
194
205
|
/** Stable identity owned by the Standard feature host for output transform. */
|
|
@@ -370,6 +381,11 @@ export interface AtmosphereShaderSources {
|
|
|
370
381
|
* and never reach into AssetRegistry or World.
|
|
371
382
|
*/
|
|
372
383
|
export interface VolumetricFogFrameContext {
|
|
384
|
+
readonly additional?: readonly {
|
|
385
|
+
readonly densityTexture: Texture;
|
|
386
|
+
readonly densityView: TextureView;
|
|
387
|
+
readonly densityGeneration: number;
|
|
388
|
+
}[];
|
|
373
389
|
readonly densityTexture: Texture;
|
|
374
390
|
readonly densityView: TextureView;
|
|
375
391
|
readonly paramsBuffer: Buffer;
|
|
@@ -407,8 +423,8 @@ export interface SpotLightProjectorFrameContext {
|
|
|
407
423
|
* leases, receipts, inspection PODs, and recovery Result values.
|
|
408
424
|
*/
|
|
409
425
|
export interface Renderer {
|
|
410
|
-
/**
|
|
411
|
-
|
|
426
|
+
/** Publish one renderer-owned read-only Surface dynamic page for the next frame. */
|
|
427
|
+
setSurfaceDynamicInput(frame: SurfaceDynamicInputFrame | undefined): void;
|
|
412
428
|
attach(world: World): RenderResult<RenderWorldLease, RenderError>;
|
|
413
429
|
/** Prepare a standard MeshAsset for the active device generation. */
|
|
414
430
|
prepareDynamicGeometry(
|
|
@@ -431,7 +447,9 @@ export interface Renderer {
|
|
|
431
447
|
dynamicGeometryReceipt(candidate: DynamicGeometryCandidate): DynamicGeometryReceipt | undefined;
|
|
432
448
|
cancelDynamicGeometry(candidate: DynamicGeometryCandidate): Result<void, DynamicGeometryError>;
|
|
433
449
|
retireDynamicGeometry(candidate: DynamicGeometryCandidate): Result<void, DynamicGeometryError>;
|
|
434
|
-
draw(
|
|
450
|
+
draw(
|
|
451
|
+
input: RenderFrameInput | PublishedRenderFrameInput,
|
|
452
|
+
): RenderResult<FrameReceipt, RenderError>;
|
|
435
453
|
/**
|
|
436
454
|
* Arm one upcoming submitted frame for explicit color-domain observation.
|
|
437
455
|
* Observation buffers are not created, copied, mapped, or retained until a
|
|
@@ -499,6 +517,8 @@ export type RendererEvent =
|
|
|
499
517
|
readonly kind: 'frame-submitted';
|
|
500
518
|
readonly frameId: number;
|
|
501
519
|
readonly deviceGeneration: number;
|
|
520
|
+
/** Compiled graph identity paired with the submitted picture. */
|
|
521
|
+
readonly graphGeneration?: number;
|
|
502
522
|
/** The exact draw receipt, for observation when App owns the draw loop. */
|
|
503
523
|
readonly receipt: FrameReceipt;
|
|
504
524
|
};
|
|
@@ -553,13 +573,25 @@ export interface FrameObservationRequest {
|
|
|
553
573
|
export interface FrameReceipt {
|
|
554
574
|
readonly frameId: number;
|
|
555
575
|
readonly deviceGeneration: number;
|
|
576
|
+
/** Whether this frame can present the active scene without a readiness fallback. */
|
|
577
|
+
readonly presentation: FramePresentation;
|
|
556
578
|
/** Backend identity captured at submit and checked before observation. */
|
|
557
579
|
readonly backendId?: RhiCaps['backendKind'];
|
|
558
580
|
/** Monotonic compiled graph identity used by renderer-issued observations. */
|
|
559
581
|
readonly graphGeneration?: number;
|
|
582
|
+
/**
|
|
583
|
+
* Effective output mapping for the submitted camera, including identity
|
|
584
|
+
* when this receipt has an accepted camera context. `undefined` means that
|
|
585
|
+
* no submitted display context is available; consumers must fail closed and
|
|
586
|
+
* must not infer identity or read the live World camera.
|
|
587
|
+
*/
|
|
588
|
+
readonly barrelDistortion?: import('./barrel-distortion.js').BarrelDistortionMapping;
|
|
560
589
|
readonly completed: Promise<RenderResult<void, RenderError>>;
|
|
561
590
|
}
|
|
562
591
|
|
|
592
|
+
/** Producer-derived presentation readiness for one submitted frame. */
|
|
593
|
+
export type FramePresentation = 'pending' | 'ready';
|
|
594
|
+
|
|
563
595
|
/**
|
|
564
596
|
* The sole public draw input; World objects never cross this boundary. Render
|
|
565
597
|
* owns extraction and graph interpretation, while the host owns encoding,
|
|
@@ -586,6 +618,12 @@ export interface RenderFrameInput {
|
|
|
586
618
|
readonly fixedStep?: number;
|
|
587
619
|
/** Optional profiler correlation token owned by App and consumed by Render. */
|
|
588
620
|
readonly profileFrame?: ProfileFrameToken;
|
|
621
|
+
/**
|
|
622
|
+
* Select the geometry submission command lane while retaining the same
|
|
623
|
+
* extracted scene and material inputs. This is an acceptance/debug seam;
|
|
624
|
+
* both lanes remain subject to the ordinary resource and generation gates.
|
|
625
|
+
*/
|
|
626
|
+
readonly geometryLane?: 'automatic' | 'direct';
|
|
589
627
|
}
|
|
590
628
|
|
|
591
629
|
/** Detached, bounded observation metadata tied to one FrameReceipt and request. */
|
|
@@ -719,8 +757,12 @@ export interface RenderInspection {
|
|
|
719
757
|
readonly frameId: number;
|
|
720
758
|
readonly deviceGeneration: number;
|
|
721
759
|
};
|
|
760
|
+
/** Effective output mapping and accepted/LKG identity for the last picture. */
|
|
761
|
+
readonly barrelDistortion: import('./inspection-types').BarrelDistortionInspection;
|
|
722
762
|
/** Renderer-owned authored volume projection and submit/LKG state. */
|
|
723
763
|
readonly volumetricFog?: VolumetricFogInspection;
|
|
764
|
+
/** Renderer-owned procedural cloud projection from the latest resource-owner extract. */
|
|
765
|
+
readonly cloudLayer?: CloudLayerInspection;
|
|
724
766
|
readonly features: readonly string[];
|
|
725
767
|
/** Truthful lifecycle facts for every registered declarative feature. */
|
|
726
768
|
readonly featureDiagnostics: readonly RenderFeatureDiagnostics[];
|
|
@@ -737,6 +779,10 @@ export interface RenderInspection {
|
|
|
737
779
|
/** Standard MeshAsset dynamic-candidate lifecycle facts. */
|
|
738
780
|
readonly dynamicGeometry?: DynamicGeometryInspection;
|
|
739
781
|
readonly renderScene: RenderSceneInspection;
|
|
782
|
+
/** Detached logical allocation facts for graph-created render targets. */
|
|
783
|
+
readonly renderGraphResourceAllocation?: RenderGraphResourceAllocationInspection;
|
|
784
|
+
/** Detached logical allocation facts across graph generations. */
|
|
785
|
+
readonly renderGraphGenerationAllocation?: RenderGraphGenerationAllocationInspection;
|
|
740
786
|
readonly reflectionProbes: ReflectionProbeInspection;
|
|
741
787
|
/** Renderer-owned SSR dependency seam; consumer facts are projected from live owners. */
|
|
742
788
|
readonly ssrDependencies: SsrDependenciesInspection;
|
|
@@ -832,6 +878,7 @@ export type DrawOwnerOptions = {
|
|
|
832
878
|
/** Explicit pause/resume or replay lifecycle boundary for temporal owners. */
|
|
833
879
|
readonly temporalReset?: boolean;
|
|
834
880
|
readonly profileFrame?: ProfileFrameToken;
|
|
881
|
+
readonly geometryLane?: 'automatic' | 'direct';
|
|
835
882
|
};
|
|
836
883
|
|
|
837
884
|
/** Information attached to a device-loss notification. */
|
|
@@ -1018,6 +1065,8 @@ export type RenderPhaseSkipReason =
|
|
|
1018
1065
|
|
|
1019
1066
|
/** First-version options bag (intentionally empty; reserved for v0.1). */
|
|
1020
1067
|
export interface RendererOptions {
|
|
1068
|
+
/** Bind a source session before receiving any publication. */
|
|
1069
|
+
readonly publicationSource?: RenderPublicationIdentity;
|
|
1021
1070
|
/** Producer-owned features installed by the renderer host. */
|
|
1022
1071
|
readonly features?: readonly RenderFeature<unknown>[] | undefined;
|
|
1023
1072
|
/** Standard profile consumed by the single renderer-owned pipeline. */
|
|
@@ -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,
|
|
@@ -249,6 +250,8 @@ export interface RenderPipelineTopology {
|
|
|
249
250
|
readonly useFar: boolean;
|
|
250
251
|
}
|
|
251
252
|
| undefined;
|
|
253
|
+
/** Shape-only barrel admission; numeric mapping stays per-frame data. */
|
|
254
|
+
readonly barrelDistortion?: boolean | undefined;
|
|
252
255
|
};
|
|
253
256
|
/** Frame-stable Standard output policy; no raw RHI handles enter topology. */
|
|
254
257
|
readonly output?: {
|
|
@@ -285,6 +288,10 @@ export interface RenderPipelineTopology {
|
|
|
285
288
|
*/
|
|
286
289
|
readonly volumetricFog?: {
|
|
287
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
|
+
}[];
|
|
288
295
|
readonly lightKind?: 'directional' | 'point' | 'spot' | undefined;
|
|
289
296
|
readonly lightEntity?: number | undefined;
|
|
290
297
|
readonly pointLightEntity?: number | undefined;
|
|
@@ -333,6 +340,8 @@ export interface RenderPipelineTopology {
|
|
|
333
340
|
readonly standardLightingTopologySignature?: string | undefined;
|
|
334
341
|
/** Internal graph fact; renderer callers do not configure transmission demand. */
|
|
335
342
|
readonly transmissionDemand?: TransmissionDemand | undefined;
|
|
343
|
+
/** Whether the extracted frame contains a single-layer medium Surface. */
|
|
344
|
+
readonly singleLayerMedium?: boolean | undefined;
|
|
336
345
|
}
|
|
337
346
|
|
|
338
347
|
/** Resolve the built-in final-output dither policy from the pipeline asset. */
|
|
@@ -463,9 +472,30 @@ export interface RenderPipelineGpuDrivenProjection {
|
|
|
463
472
|
pass: RhiRenderPassEncoder,
|
|
464
473
|
resources: GraphResourceResolver,
|
|
465
474
|
frameResources: GpuDrivenStandardPbrFrameResources,
|
|
475
|
+
filter?: RenderPipelineGpuDrivenFilter,
|
|
476
|
+
fragmentEntryPoint?: string,
|
|
466
477
|
): void;
|
|
467
478
|
}
|
|
468
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
|
+
}
|
|
469
499
|
/** Exact scene rows selected by an indirect batch; palette offsets are global. */
|
|
470
500
|
export interface GpuDrivenSceneMeshBinding {
|
|
471
501
|
readonly meshBuffer: Buffer;
|
|
@@ -475,6 +505,8 @@ export interface GpuDrivenSceneMeshBinding {
|
|
|
475
505
|
|
|
476
506
|
/** Producer-owned Standard PBR resources resolved during graph execution. */
|
|
477
507
|
export interface GpuDrivenStandardPbrFrameResources {
|
|
508
|
+
/** Resource generation of the actual scene-index/indirect producer. */
|
|
509
|
+
readonly resourceGeneration?: number;
|
|
478
510
|
readonly materialBindGroups: (BindGroup | undefined)[];
|
|
479
511
|
/** Frame-global material slots keyed by the retained scene entity identity. */
|
|
480
512
|
readonly materialSlotIndicesByEntity: Map<number, readonly number[]>;
|
|
@@ -485,6 +517,56 @@ export interface GpuDrivenStandardPbrFrameResources {
|
|
|
485
517
|
colorFormats?: readonly TextureFormat[];
|
|
486
518
|
/** Exact producer-owned numeric Material table consumed by scene-index PBR. */
|
|
487
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;
|
|
488
570
|
resolveClusteredMeshBindGroup?: (binding: GpuDrivenSceneMeshBinding) => BindGroup;
|
|
489
571
|
}
|
|
490
572
|
|
|
@@ -512,6 +594,8 @@ export interface RenderPipelineBuildContext<FrameCtx extends RenderPipelineFrame
|
|
|
512
594
|
* inferring rgba16float support from the selected surface format.
|
|
513
595
|
*/
|
|
514
596
|
readonly capabilities?: Pick<RhiCaps, 'rgba16floatRenderable'>;
|
|
597
|
+
/** Renderer-derived cloud shadow size shared by graph allocation and projection. */
|
|
598
|
+
readonly cloudShadowResolution?: number;
|
|
515
599
|
/** Prepared typed graph resources owned by RenderSystem/RenderFrameState. */
|
|
516
600
|
readonly standardOutput?: {
|
|
517
601
|
readonly autoExposure?: {
|
|
@@ -541,6 +625,19 @@ export interface RenderPipelineBuildContext<FrameCtx extends RenderPipelineFrame
|
|
|
541
625
|
readonly currentStability: RenderPipelineTarget;
|
|
542
626
|
readonly previousStability: RenderPipelineTarget;
|
|
543
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
|
+
};
|
|
544
641
|
/** Renderer-owned SSR temporal history targets for the admitted spatial chain. */
|
|
545
642
|
readonly ssrHistory?: {
|
|
546
643
|
readonly previous: RenderPipelineTarget;
|
|
@@ -573,6 +670,15 @@ export interface RenderPipelineBuildContext<FrameCtx extends RenderPipelineFrame
|
|
|
573
670
|
semanticTargets?: readonly RenderPipelineTarget[],
|
|
574
671
|
namedTargets?: Readonly<Record<string, RenderPipelineTarget>>,
|
|
575
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[],
|
|
576
682
|
): Result<void, RenderPipelineBuildError>;
|
|
577
683
|
/** Prepare feature-owned shadow draws and their early compute producers once. */
|
|
578
684
|
contributeShadowFeatures?(): Result<
|
|
@@ -585,6 +691,30 @@ export interface RenderPipelineBuildContext<FrameCtx extends RenderPipelineFrame
|
|
|
585
691
|
): Result<void, RenderPipelineBuildError>;
|
|
586
692
|
/** Whether a producer-owned feature is installed for this graph build. */
|
|
587
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 }));
|
|
588
718
|
}
|
|
589
719
|
|
|
590
720
|
export type RenderPipelineBuildError = RenderGraphError | RenderError | RhiError;
|