@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
|
@@ -27,7 +27,7 @@ import type { MaterialCookProgramContext } from '@forgeax/engine-pack/material-c
|
|
|
27
27
|
// fire; no renderable; no dispatch.
|
|
28
28
|
// - case B (material === 0) : missing-spec sentinel; defaultMaterial
|
|
29
29
|
// Snapshot fills the slot. No fire.
|
|
30
|
-
// - case C (handle unresolved): assets.get(handle).err with the entity
|
|
30
|
+
// - case C (non-zero handle unresolved): assets.get(handle).err with the entity
|
|
31
31
|
// carrying the full T+MF+MR renderable
|
|
32
32
|
// archetype -> structured RhiError(
|
|
33
33
|
// `asset-not-registered`) routed through
|
|
@@ -61,8 +61,8 @@ import type { MaterialCookProgramContext } from '@forgeax/engine-pack/material-c
|
|
|
61
61
|
// material; hint literal: `'pass
|
|
62
62
|
// undefined or omit field to request
|
|
63
63
|
// default material'` (AC-10).
|
|
64
|
-
// - case C dangling-ref : `assets.get(handle).err`
|
|
65
|
-
// isRenderable === true) ->
|
|
64
|
+
// - case C dangling-ref : `assets.get(handle).err` for a non-zero
|
|
65
|
+
// handle (strict path, isRenderable === true) ->
|
|
66
66
|
// `RhiError({ code: 'asset-not-
|
|
67
67
|
// registered', detail: { assetHandle },
|
|
68
68
|
// hint: 'register material via
|
|
@@ -73,21 +73,16 @@ import type { MaterialCookProgramContext } from '@forgeax/engine-pack/material-c
|
|
|
73
73
|
// entity skipped from
|
|
74
74
|
// RenderableSnapshot[] +
|
|
75
75
|
// MaterialDispatchSnapshot[]; mirrors
|
|
76
|
-
// `MeshFilter.assetHandle` dangling path
|
|
76
|
+
// `MeshFilter.assetHandle` dangling path. A
|
|
77
|
+
// scalar shared<T> slot 0 is the unbound,
|
|
78
|
+
// non-renderable state and is skipped
|
|
77
79
|
// (charter proposition 5; AC-11).
|
|
78
80
|
//
|
|
79
|
-
//
|
|
80
|
-
//
|
|
81
|
-
//
|
|
82
|
-
//
|
|
83
|
-
//
|
|
84
|
-
// and residency facts. Invalid or stale associations route the existing
|
|
85
|
-
// typed `InstanceCollectionError` through the World error boundary; the
|
|
86
|
-
// record stage owns GPU residency and upload decisions.
|
|
87
|
-
//
|
|
88
|
-
// `SpriteInstances` remains the separate ECS-owned array-view path. Its
|
|
89
|
-
// snapshot is intentionally independent from renderer-owned Large Instances,
|
|
90
|
-
// so the extract stage does not duplicate collection storage or GPU policy.
|
|
81
|
+
// World owns Instances.transforms. Extraction borrows the managed array during
|
|
82
|
+
// the read phase and retains a detached projection only when its values change.
|
|
83
|
+
// RenderScene accepts that projection with the source publication; recording
|
|
84
|
+
// owns device residency, upload revisions and backend-specific chunking.
|
|
85
|
+
// SpriteInstances remains the independent 2D component and snapshot contract.
|
|
91
86
|
|
|
92
87
|
import type { AssetRegistry } from '@forgeax/engine-assets-runtime';
|
|
93
88
|
import {
|
|
@@ -96,7 +91,14 @@ import {
|
|
|
96
91
|
selectMaterialPassProgram,
|
|
97
92
|
walkMaterialPassesOverSharedRefs,
|
|
98
93
|
} from '@forgeax/engine-assets-runtime';
|
|
99
|
-
import
|
|
94
|
+
import {
|
|
95
|
+
type Component,
|
|
96
|
+
type ComponentSchema,
|
|
97
|
+
type EntityHandle,
|
|
98
|
+
type Query,
|
|
99
|
+
Time,
|
|
100
|
+
type World,
|
|
101
|
+
} from '@forgeax/engine-ecs';
|
|
100
102
|
import { readRenderArrayView, routeWorldError } from '@forgeax/engine-ecs/projection';
|
|
101
103
|
import { type Mat4, mat4, type Vec3, vec3 } from '@forgeax/engine-math';
|
|
102
104
|
import { AssetGuid, type AssetGuid as AssetGuidBytes } from '@forgeax/engine-pack/guid';
|
|
@@ -118,6 +120,7 @@ import type {
|
|
|
118
120
|
MaterialPass,
|
|
119
121
|
MaterialProgramAbi,
|
|
120
122
|
MaterialRenderState,
|
|
123
|
+
MaterialSurfaceModel,
|
|
121
124
|
MaterialTextureCoordinates,
|
|
122
125
|
MaterialTextureValue,
|
|
123
126
|
MeshLodLevel,
|
|
@@ -133,7 +136,7 @@ import {
|
|
|
133
136
|
import { buildCubeCameraFaceViews } from './capture/cube-views';
|
|
134
137
|
import {
|
|
135
138
|
antialiasFromF32,
|
|
136
|
-
|
|
139
|
+
BarrelDistortion,
|
|
137
140
|
CAMERA_EXPOSURE_MODE_MANUAL,
|
|
138
141
|
Camera,
|
|
139
142
|
CubeCamera,
|
|
@@ -148,8 +151,10 @@ import {
|
|
|
148
151
|
ScreenSpaceReflection,
|
|
149
152
|
tonemapFromF32,
|
|
150
153
|
tonemapToU32,
|
|
154
|
+
validateCameraBloom,
|
|
151
155
|
validateDynamicResolutionCamera,
|
|
152
156
|
} from './components';
|
|
157
|
+
import { validateBarrelDistortionParameters } from './components/barrel-distortion';
|
|
153
158
|
import { DepthOfField } from './components/depth-of-field';
|
|
154
159
|
import type { DirectionalShadowQuality } from './components/directional-shadow-filter';
|
|
155
160
|
import type { LightValidationError } from './components/light-helpers';
|
|
@@ -171,11 +176,12 @@ import {
|
|
|
171
176
|
depthOfFieldRequestFailure,
|
|
172
177
|
resolveDepthOfFieldParams,
|
|
173
178
|
} from './features/depth-of-field/depth-of-field-params';
|
|
179
|
+
import { resolveMotionBlurParams } from './features/motion-blur/motion-blur-params';
|
|
174
180
|
import type {
|
|
175
181
|
RenderFeatureHiddenEntityReport,
|
|
176
182
|
RenderFeatureWorldVisibilitySnapshot,
|
|
177
183
|
} from './features/types';
|
|
178
|
-
import type { InstanceCollectionId,
|
|
184
|
+
import type { InstanceCollectionId, InstanceProjectionStore } from './instances';
|
|
179
185
|
import type {
|
|
180
186
|
MeshMaterialBindingDiagnostic,
|
|
181
187
|
MeshMaterialBindingSource,
|
|
@@ -648,15 +654,16 @@ export interface SkyboxSnapshot {
|
|
|
648
654
|
}
|
|
649
655
|
|
|
650
656
|
/**
|
|
651
|
-
* Resource-owner projection for
|
|
657
|
+
* Resource-owner projection for an ECS VolumetricFog collection.
|
|
652
658
|
*
|
|
653
659
|
* The renderer carries the validated authoring facts and the source POD all
|
|
654
660
|
* the way to the record stage. No profile flag or source/catalog byte is
|
|
655
661
|
* allowed to enable the graph: `status: 'available'` is produced only after
|
|
656
662
|
* the ECS component, its shared TextureAsset, and the volume validator all
|
|
657
|
-
* agree on
|
|
663
|
+
* agree on every linear 3D density owner.
|
|
658
664
|
*/
|
|
659
665
|
export interface ExtractedVolumetricFog {
|
|
666
|
+
readonly additional?: readonly ExtractedVolumetricFog[];
|
|
660
667
|
readonly status: 'off' | 'available' | 'degraded';
|
|
661
668
|
readonly fog?: ValidatedVolumetricFog;
|
|
662
669
|
readonly densityHandle?: Handle<'TextureAsset', 'shared'>;
|
|
@@ -665,6 +672,8 @@ export interface ExtractedVolumetricFog {
|
|
|
665
672
|
readonly generation?: number;
|
|
666
673
|
readonly digest?: string;
|
|
667
674
|
readonly worldId?: number;
|
|
675
|
+
/** Canonical simulation time projected from this World for authored medium motion. */
|
|
676
|
+
readonly worldTimeSeconds?: number;
|
|
668
677
|
/** Required same-World light selected by the authoring component. */
|
|
669
678
|
readonly lightEntity?: EntityHandle;
|
|
670
679
|
readonly lightKind?: 'directional' | 'point' | 'spot';
|
|
@@ -816,6 +825,9 @@ export type RenderableReactiveReason =
|
|
|
816
825
|
export interface RenderableTemporalSnapshot {
|
|
817
826
|
readonly previousEpoch: number | undefined;
|
|
818
827
|
readonly previousSource: RenderablePreviousSource;
|
|
828
|
+
/** True only when current and previous geometry belong to one stable source identity. */
|
|
829
|
+
readonly motionValid: boolean;
|
|
830
|
+
/** Color-history invalidation is independent from motion validity. */
|
|
819
831
|
readonly reactive: boolean;
|
|
820
832
|
readonly reactiveReasons: readonly RenderableReactiveReason[];
|
|
821
833
|
readonly previousTransform: TransformSnapshot;
|
|
@@ -836,12 +848,12 @@ export interface InstancesSnapshot {
|
|
|
836
848
|
readonly collectionId?: InstanceCollectionId;
|
|
837
849
|
/** Packed column-major mat4 transforms (16 f32 per instance). */
|
|
838
850
|
readonly transforms: Float32Array;
|
|
851
|
+
/** Monotonic per-ordinal identity generations, when the collection owns them. */
|
|
852
|
+
readonly generations?: Uint32Array;
|
|
839
853
|
/** Number of instances (transforms.length / 16). */
|
|
840
854
|
readonly instanceCount: number;
|
|
841
855
|
/** Collection revision captured by this detached frame snapshot. */
|
|
842
856
|
readonly revision?: number;
|
|
843
|
-
/** Logical collection capacity at snapshot time. */
|
|
844
|
-
readonly capacity?: number;
|
|
845
857
|
/** Coalesced matrix ordinals dirtied since the previous authoring update. */
|
|
846
858
|
readonly dirtyRanges?: readonly {
|
|
847
859
|
readonly start: number;
|
|
@@ -927,6 +939,10 @@ export interface MaterialSnapshot {
|
|
|
927
939
|
readonly baseColor: Vec3;
|
|
928
940
|
readonly metallic: number;
|
|
929
941
|
readonly roughness: number;
|
|
942
|
+
/** Root-owned Surface model used only for typed pass routing. */
|
|
943
|
+
readonly surfaceModel?: MaterialSurfaceModel | undefined;
|
|
944
|
+
/** Whether this material publishes a Deferred pass consumed before the forward-only lane. */
|
|
945
|
+
readonly deferredPass?: boolean | undefined;
|
|
930
946
|
/** Authored Standard PBR specular color in linear runtime color space. */
|
|
931
947
|
readonly specularColor?: readonly [number, number, number] | undefined;
|
|
932
948
|
/**
|
|
@@ -1226,6 +1242,8 @@ export interface ExtractedFrame {
|
|
|
1226
1242
|
readonly environmentReady: boolean;
|
|
1227
1243
|
/** One resource-owner volume projection; absent means no authored fog. */
|
|
1228
1244
|
readonly volumetricFog?: ExtractedVolumetricFog;
|
|
1245
|
+
/** Resource-owner CloudLayer facts selected once at the extract boundary. */
|
|
1246
|
+
readonly cloudLayer?: import('./cloud/extract').ExtractedCloudLayer;
|
|
1229
1247
|
readonly renderables: RenderableSnapshot[];
|
|
1230
1248
|
/**
|
|
1231
1249
|
* Single dispatch list sorted by queue value (ascending, stable sort).
|
|
@@ -2442,6 +2460,13 @@ export function resolveMaterialSnapshot(
|
|
|
2442
2460
|
baseColor,
|
|
2443
2461
|
metallic: metallicPv,
|
|
2444
2462
|
roughness: roughnessPv,
|
|
2463
|
+
...(resolved.surface?.model === undefined ? {} : { surfaceModel: resolved.surface.model }),
|
|
2464
|
+
deferredPass: allPasses.some(
|
|
2465
|
+
(pass) =>
|
|
2466
|
+
String(
|
|
2467
|
+
(pass.renderState?.tags as Record<string, unknown> | undefined)?.LightMode ?? pass.name,
|
|
2468
|
+
) === 'Deferred',
|
|
2469
|
+
),
|
|
2445
2470
|
...(specularColorPv !== undefined && {
|
|
2446
2471
|
specularColor: [
|
|
2447
2472
|
specularColorPv[0] ?? 1,
|
|
@@ -2964,13 +2989,14 @@ export interface PreparedExtractContext {
|
|
|
2964
2989
|
request?: {
|
|
2965
2990
|
readonly vertexColorAvailable?: boolean;
|
|
2966
2991
|
readonly deformation?: 'rigid' | 'skin';
|
|
2992
|
+
readonly variantSet?: string;
|
|
2967
2993
|
readonly pass?: 'forward' | 'shadow' | 'depth';
|
|
2968
2994
|
readonly address?: 'direct' | 'scene-index';
|
|
2969
2995
|
},
|
|
2970
2996
|
) => MaterialShaderArtifact | undefined)
|
|
2971
2997
|
| undefined;
|
|
2972
|
-
/** Renderer-
|
|
2973
|
-
readonly instanceCollections:
|
|
2998
|
+
/** Renderer-private projection of World-authored instance matrices. */
|
|
2999
|
+
readonly instanceCollections: InstanceProjectionStore | undefined;
|
|
2974
3000
|
}
|
|
2975
3001
|
|
|
2976
3002
|
const ALL_VISIBLE: VisibilitySnapshot = {
|
|
@@ -2987,13 +3013,23 @@ function collectCameraSnapshots(world: World): CameraSnapshot[] {
|
|
|
2987
3013
|
const cameraQuery = world
|
|
2988
3014
|
.query({
|
|
2989
3015
|
read: [Camera],
|
|
2990
|
-
optional: [
|
|
3016
|
+
optional: [
|
|
3017
|
+
MotionBlur,
|
|
3018
|
+
DynamicResolution,
|
|
3019
|
+
ScreenSpaceReflection,
|
|
3020
|
+
DepthOfField,
|
|
3021
|
+
BarrelDistortion,
|
|
3022
|
+
],
|
|
2991
3023
|
with: [Transform, GlobalTransform],
|
|
2992
3024
|
})
|
|
2993
3025
|
.unwrap();
|
|
2994
3026
|
for (const row of cameraQuery) {
|
|
2995
3027
|
const cam = row.get(Camera);
|
|
2996
3028
|
const motionBlur = row.get(MotionBlur);
|
|
3029
|
+
const barrelDistortion = row.get(BarrelDistortion);
|
|
3030
|
+
const motionBlurResult = resolveMotionBlurParams(motionBlur);
|
|
3031
|
+
if (!motionBlurResult.ok) throw motionBlurResult.error;
|
|
3032
|
+
const motionBlurParams = motionBlurResult.value;
|
|
2997
3033
|
const depthOfField = row.get(DepthOfField);
|
|
2998
3034
|
const dynamicResolution = row.get(DynamicResolution);
|
|
2999
3035
|
const screenSpaceReflection = row.get(ScreenSpaceReflection);
|
|
@@ -3031,6 +3067,8 @@ function collectCameraSnapshots(world: World): CameraSnapshot[] {
|
|
|
3031
3067
|
const antialias = antialiasFromF32(cam.antialias);
|
|
3032
3068
|
const dynamicResolutionResult = validateDynamicResolutionCamera(dynamicResolution, antialias);
|
|
3033
3069
|
if (!dynamicResolutionResult.ok) throw dynamicResolutionResult.error;
|
|
3070
|
+
const barrelDistortionResult = validateBarrelDistortionParameters(barrelDistortion);
|
|
3071
|
+
if (!barrelDistortionResult.ok) throw barrelDistortionResult.error;
|
|
3034
3072
|
cameras.push({
|
|
3035
3073
|
entityKey: entity as number,
|
|
3036
3074
|
...(target === undefined ? {} : { target }),
|
|
@@ -3054,10 +3092,17 @@ function collectCameraSnapshots(world: World): CameraSnapshot[] {
|
|
|
3054
3092
|
...(dynamicResolutionResult.value === undefined
|
|
3055
3093
|
? {}
|
|
3056
3094
|
: { dynamicResolution: dynamicResolutionResult.value }),
|
|
3057
|
-
bloom:
|
|
3095
|
+
bloom: validateCameraBloom(
|
|
3096
|
+
cam.bloom,
|
|
3097
|
+
cam.bloomThreshold,
|
|
3098
|
+
cam.bloomIntensity,
|
|
3099
|
+
cam.bloomSoftKnee,
|
|
3100
|
+
cam.bloomScatter,
|
|
3101
|
+
),
|
|
3058
3102
|
bloomThreshold: cam.bloomThreshold,
|
|
3059
3103
|
bloomIntensity: cam.bloomIntensity,
|
|
3060
|
-
|
|
3104
|
+
bloomSoftKnee: cam.bloomSoftKnee,
|
|
3105
|
+
bloomScatter: cam.bloomScatter,
|
|
3061
3106
|
clearColor: [
|
|
3062
3107
|
cam.clearColor[0] ?? 0,
|
|
3063
3108
|
cam.clearColor[1] ?? 0,
|
|
@@ -3068,15 +3113,17 @@ function collectCameraSnapshots(world: World): CameraSnapshot[] {
|
|
|
3068
3113
|
? { depthOfField: depthOfFieldResult.value }
|
|
3069
3114
|
: {}),
|
|
3070
3115
|
...(depthOfFieldError === undefined ? {} : { depthOfFieldError }),
|
|
3071
|
-
...(
|
|
3116
|
+
...(motionBlurParams === undefined
|
|
3072
3117
|
? {}
|
|
3073
3118
|
: {
|
|
3074
3119
|
motionBlur: {
|
|
3075
|
-
shutterAngle:
|
|
3076
|
-
maxRadiusPixels:
|
|
3077
|
-
sampleCount:
|
|
3120
|
+
shutterAngle: motionBlurParams.shutterAngle,
|
|
3121
|
+
maxRadiusPixels: motionBlurParams.maxRadiusPixels,
|
|
3122
|
+
sampleCount: motionBlurParams.sampleCount,
|
|
3123
|
+
targetFps: motionBlurParams.targetFps,
|
|
3078
3124
|
},
|
|
3079
3125
|
}),
|
|
3126
|
+
...(barrelDistortion === undefined ? {} : { barrelDistortion: barrelDistortionResult.value }),
|
|
3080
3127
|
...(screenSpaceReflection === undefined
|
|
3081
3128
|
? {}
|
|
3082
3129
|
: {
|
|
@@ -3229,11 +3276,12 @@ export function prepareExtractContext(
|
|
|
3229
3276
|
request?: {
|
|
3230
3277
|
readonly vertexColorAvailable?: boolean;
|
|
3231
3278
|
readonly deformation?: 'rigid' | 'skin';
|
|
3279
|
+
readonly variantSet?: string;
|
|
3232
3280
|
readonly pass?: 'forward' | 'shadow' | 'depth';
|
|
3233
3281
|
readonly address?: 'direct' | 'scene-index';
|
|
3234
3282
|
},
|
|
3235
3283
|
) => MaterialShaderArtifact | undefined;
|
|
3236
|
-
readonly instanceCollections?:
|
|
3284
|
+
readonly instanceCollections?: InstanceProjectionStore;
|
|
3237
3285
|
} = {},
|
|
3238
3286
|
): PreparedExtractContext {
|
|
3239
3287
|
const renderables = options.renderables ?? 'full';
|
|
@@ -3332,8 +3380,11 @@ export function extractVolumeSnapshot(
|
|
|
3332
3380
|
assets: AssetRegistry | null | undefined,
|
|
3333
3381
|
worldInternal: WorldInternalView,
|
|
3334
3382
|
): ExtractedVolumetricFog | undefined {
|
|
3383
|
+
const elapsed = world.getResource(Time).elapsed;
|
|
3384
|
+
const worldTimeSeconds = Number.isFinite(elapsed) ? Math.max(0, elapsed) : 0;
|
|
3335
3385
|
const query = world.query({ read: [VolumetricFog] }).unwrap();
|
|
3336
3386
|
const authorings: VolumetricFogAuthoring[] = [];
|
|
3387
|
+
const members: ExtractedVolumetricFog[] = [];
|
|
3337
3388
|
let selectedLight:
|
|
3338
3389
|
| {
|
|
3339
3390
|
readonly entity: EntityHandle;
|
|
@@ -3342,15 +3393,9 @@ export function extractVolumeSnapshot(
|
|
|
3342
3393
|
readonly spotLightEntity?: EntityHandle;
|
|
3343
3394
|
}
|
|
3344
3395
|
| undefined;
|
|
3345
|
-
let first:
|
|
3346
|
-
| {
|
|
3347
|
-
readonly densityHandle: Handle<'TextureAsset', 'shared'>;
|
|
3348
|
-
readonly densityAsset: TextureAsset;
|
|
3349
|
-
readonly guid: string;
|
|
3350
|
-
}
|
|
3351
|
-
| undefined;
|
|
3352
3396
|
|
|
3353
3397
|
for (const row of query) {
|
|
3398
|
+
selectedLight = undefined;
|
|
3354
3399
|
const source = row.get(VolumetricFog);
|
|
3355
3400
|
if (source.light === null) continue;
|
|
3356
3401
|
const selected = resolveSelectedVolumetricLight(world, source.light);
|
|
@@ -3377,7 +3422,7 @@ export function extractVolumeSnapshot(
|
|
|
3377
3422
|
: resolved.error,
|
|
3378
3423
|
{ severity: Severity.Error, systemName: 'RenderSystem.extract (volumetric-density)' },
|
|
3379
3424
|
);
|
|
3380
|
-
return { status: 'degraded' };
|
|
3425
|
+
return { status: 'degraded', worldTimeSeconds };
|
|
3381
3426
|
}
|
|
3382
3427
|
const densityAsset = resolved.value;
|
|
3383
3428
|
const guid = assets?.guidOf(densityAsset) ?? `handle:${Number(densityHandle)}`;
|
|
@@ -3427,9 +3472,30 @@ export function extractVolumeSnapshot(
|
|
|
3427
3472
|
emission: [source.emission[0] ?? 0, source.emission[1] ?? 0, source.emission[2] ?? 0],
|
|
3428
3473
|
anisotropy: source.anisotropy,
|
|
3429
3474
|
maxDistance: source.maxDistance,
|
|
3475
|
+
sampling: source.sampling === 1 ? 'density' : 'noise',
|
|
3430
3476
|
};
|
|
3431
3477
|
authorings.push(authoring);
|
|
3432
|
-
|
|
3478
|
+
members.push({
|
|
3479
|
+
status: 'available',
|
|
3480
|
+
worldTimeSeconds,
|
|
3481
|
+
densityHandle,
|
|
3482
|
+
densityAsset,
|
|
3483
|
+
guid,
|
|
3484
|
+
generation: 1,
|
|
3485
|
+
digest: textureDigest(densityAsset),
|
|
3486
|
+
...(selectedLight === undefined
|
|
3487
|
+
? {}
|
|
3488
|
+
: {
|
|
3489
|
+
lightEntity: selectedLight.entity,
|
|
3490
|
+
lightKind: selectedLight.kind,
|
|
3491
|
+
...(selectedLight.pointLightEntity === undefined
|
|
3492
|
+
? {}
|
|
3493
|
+
: { pointLightEntity: selectedLight.pointLightEntity }),
|
|
3494
|
+
...(selectedLight.spotLightEntity === undefined
|
|
3495
|
+
? {}
|
|
3496
|
+
: { spotLightEntity: selectedLight.spotLightEntity }),
|
|
3497
|
+
}),
|
|
3498
|
+
});
|
|
3433
3499
|
}
|
|
3434
3500
|
|
|
3435
3501
|
if (authorings.length === 0) return undefined;
|
|
@@ -3439,54 +3505,18 @@ export function extractVolumeSnapshot(
|
|
|
3439
3505
|
severity: Severity.Error,
|
|
3440
3506
|
systemName: 'RenderSystem.extract (volumetric-fog)',
|
|
3441
3507
|
});
|
|
3442
|
-
return {
|
|
3443
|
-
status: 'degraded',
|
|
3444
|
-
...(first === undefined
|
|
3445
|
-
? {}
|
|
3446
|
-
: {
|
|
3447
|
-
densityHandle: first.densityHandle,
|
|
3448
|
-
densityAsset: first.densityAsset,
|
|
3449
|
-
guid: first.guid,
|
|
3450
|
-
generation: 1,
|
|
3451
|
-
digest: textureDigest(first.densityAsset),
|
|
3452
|
-
...(selectedLight === undefined
|
|
3453
|
-
? {}
|
|
3454
|
-
: {
|
|
3455
|
-
lightEntity: selectedLight.entity,
|
|
3456
|
-
lightKind: selectedLight.kind,
|
|
3457
|
-
...(selectedLight.pointLightEntity === undefined
|
|
3458
|
-
? {}
|
|
3459
|
-
: { pointLightEntity: selectedLight.pointLightEntity }),
|
|
3460
|
-
...(selectedLight.spotLightEntity === undefined
|
|
3461
|
-
? {}
|
|
3462
|
-
: { spotLightEntity: selectedLight.spotLightEntity }),
|
|
3463
|
-
}),
|
|
3464
|
-
}),
|
|
3465
|
-
};
|
|
3508
|
+
return { ...members[0], status: 'degraded' };
|
|
3466
3509
|
}
|
|
3467
|
-
if (extracted.value.status === 'off'
|
|
3468
|
-
const
|
|
3469
|
-
|
|
3470
|
-
|
|
3471
|
-
|
|
3472
|
-
|
|
3473
|
-
lightKind: selectedLight.kind,
|
|
3474
|
-
...(selectedLight.pointLightEntity === undefined
|
|
3475
|
-
? {}
|
|
3476
|
-
: { pointLightEntity: selectedLight.pointLightEntity }),
|
|
3477
|
-
...(selectedLight.spotLightEntity === undefined
|
|
3478
|
-
? {}
|
|
3479
|
-
: { spotLightEntity: selectedLight.spotLightEntity }),
|
|
3480
|
-
};
|
|
3510
|
+
if (extracted.value.status === 'off') return { status: 'off' };
|
|
3511
|
+
const validatedMembers = extracted.value.fogs.map((fog, index) => ({
|
|
3512
|
+
...members[index],
|
|
3513
|
+
status: 'available' as const,
|
|
3514
|
+
fog,
|
|
3515
|
+
}));
|
|
3481
3516
|
return {
|
|
3482
3517
|
status: 'available',
|
|
3483
|
-
|
|
3484
|
-
|
|
3485
|
-
densityAsset: first.densityAsset,
|
|
3486
|
-
guid: first.guid,
|
|
3487
|
-
generation: 1,
|
|
3488
|
-
digest: textureDigest(first.densityAsset),
|
|
3489
|
-
...selectedLightFields,
|
|
3518
|
+
...validatedMembers[0],
|
|
3519
|
+
additional: validatedMembers.slice(1),
|
|
3490
3520
|
};
|
|
3491
3521
|
}
|
|
3492
3522
|
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { World } from '@forgeax/engine-ecs';
|
|
2
|
+
import type { RenderSystemInternals } from './record/render-context';
|
|
3
|
+
import type { FramePresentation } from './render-contract';
|
|
4
|
+
import type { DispatchEntry, RenderableSnapshot } from './render-system-extract';
|
|
5
|
+
import { observeMaterialResidency } from './render-system-residency';
|
|
6
|
+
|
|
7
|
+
export interface FramePresentationProjection {
|
|
8
|
+
readonly renderables: readonly RenderableSnapshot[];
|
|
9
|
+
readonly presentation: FramePresentation;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Derive the startup presentation candidate from the current display workset.
|
|
14
|
+
* Shadow-only retained rows are deliberately excluded, while material facts
|
|
15
|
+
* still come from the producer-owned residency projection.
|
|
16
|
+
*/
|
|
17
|
+
export function projectFramePresentation(input: {
|
|
18
|
+
readonly hasCamera: boolean;
|
|
19
|
+
readonly environmentReady: boolean;
|
|
20
|
+
readonly hasEnvironment: boolean;
|
|
21
|
+
readonly submissionRenderables: readonly RenderableSnapshot[];
|
|
22
|
+
readonly submissionDispatch: readonly DispatchEntry[];
|
|
23
|
+
readonly preparedWorlds: readonly World[];
|
|
24
|
+
readonly internals: RenderSystemInternals;
|
|
25
|
+
}): FramePresentationProjection {
|
|
26
|
+
const displayRenderableIndices = new Set<number>();
|
|
27
|
+
for (const entry of input.submissionDispatch) {
|
|
28
|
+
if (entry.renderableIndex === undefined) continue;
|
|
29
|
+
if (entry.tags.LightMode !== 'ShadowCaster')
|
|
30
|
+
displayRenderableIndices.add(entry.renderableIndex);
|
|
31
|
+
}
|
|
32
|
+
const renderables = input.submissionRenderables.filter(
|
|
33
|
+
(_, index) =>
|
|
34
|
+
displayRenderableIndices.has(index) &&
|
|
35
|
+
input.submissionRenderables[index]?.authorVisible !== false,
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
let presentation: FramePresentation = 'ready';
|
|
39
|
+
if (input.hasCamera && (!input.environmentReady || !input.hasEnvironment)) {
|
|
40
|
+
presentation = 'pending';
|
|
41
|
+
} else if (input.hasCamera) {
|
|
42
|
+
for (const renderable of renderables) {
|
|
43
|
+
const materialWorld = input.preparedWorlds[renderable.worldId];
|
|
44
|
+
for (const material of renderable.materials) {
|
|
45
|
+
if (
|
|
46
|
+
observeMaterialResidency(materialWorld, material, input.internals).readiness === 'pending'
|
|
47
|
+
) {
|
|
48
|
+
presentation = 'pending';
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (presentation === 'pending') break;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return { renderables, presentation };
|
|
56
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
export type RendererProducerRootKind =
|
|
2
|
+
| 'backend-surface'
|
|
3
|
+
| 'shader-material-pipeline'
|
|
4
|
+
| 'mesh-texture-sampler'
|
|
5
|
+
| 'render-scene'
|
|
6
|
+
| 'gpu-driven'
|
|
7
|
+
| 'feature'
|
|
8
|
+
| 'external-source'
|
|
9
|
+
| 'render-graph'
|
|
10
|
+
| 'target-history'
|
|
11
|
+
| 'observation-lease';
|
|
12
|
+
|
|
13
|
+
export interface RendererProducerRoot {
|
|
14
|
+
readonly kind: RendererProducerRootKind;
|
|
15
|
+
readonly owner: string;
|
|
16
|
+
readonly candidateScope: 'device-scope';
|
|
17
|
+
readonly visibility: 'visible-workset' | 'non-visible-lazy';
|
|
18
|
+
readonly disabledWork: 'zero' | 'lazy';
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const PRODUCER_ROOT_MATRIX: readonly RendererProducerRoot[] = Object.freeze([
|
|
22
|
+
{
|
|
23
|
+
kind: 'backend-surface',
|
|
24
|
+
owner: 'backend-surface-owner',
|
|
25
|
+
candidateScope: 'device-scope',
|
|
26
|
+
visibility: 'visible-workset',
|
|
27
|
+
disabledWork: 'zero',
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
kind: 'shader-material-pipeline',
|
|
31
|
+
owner: 'shader-material-pipeline-owner',
|
|
32
|
+
candidateScope: 'device-scope',
|
|
33
|
+
visibility: 'visible-workset',
|
|
34
|
+
disabledWork: 'zero',
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
kind: 'mesh-texture-sampler',
|
|
38
|
+
owner: 'gpu-residency',
|
|
39
|
+
candidateScope: 'device-scope',
|
|
40
|
+
visibility: 'visible-workset',
|
|
41
|
+
disabledWork: 'lazy',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
kind: 'render-scene',
|
|
45
|
+
owner: 'persistent-render-scene',
|
|
46
|
+
candidateScope: 'device-scope',
|
|
47
|
+
visibility: 'visible-workset',
|
|
48
|
+
disabledWork: 'zero',
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
kind: 'gpu-driven',
|
|
52
|
+
owner: 'gpu-driven-production',
|
|
53
|
+
candidateScope: 'device-scope',
|
|
54
|
+
visibility: 'visible-workset',
|
|
55
|
+
disabledWork: 'zero',
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
kind: 'feature',
|
|
59
|
+
owner: 'render-feature-host',
|
|
60
|
+
candidateScope: 'device-scope',
|
|
61
|
+
visibility: 'visible-workset',
|
|
62
|
+
disabledWork: 'lazy',
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
kind: 'external-source',
|
|
66
|
+
owner: 'external-source-owner',
|
|
67
|
+
candidateScope: 'device-scope',
|
|
68
|
+
visibility: 'non-visible-lazy',
|
|
69
|
+
disabledWork: 'zero',
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
kind: 'render-graph',
|
|
73
|
+
owner: 'typed-frame-graph',
|
|
74
|
+
candidateScope: 'device-scope',
|
|
75
|
+
visibility: 'visible-workset',
|
|
76
|
+
disabledWork: 'zero',
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
kind: 'target-history',
|
|
80
|
+
owner: 'temporal-target-owner',
|
|
81
|
+
candidateScope: 'device-scope',
|
|
82
|
+
visibility: 'visible-workset',
|
|
83
|
+
disabledWork: 'zero',
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
kind: 'observation-lease',
|
|
87
|
+
owner: 'render-observation-owner',
|
|
88
|
+
candidateScope: 'device-scope',
|
|
89
|
+
visibility: 'non-visible-lazy',
|
|
90
|
+
disabledWork: 'zero',
|
|
91
|
+
},
|
|
92
|
+
]);
|
|
93
|
+
|
|
94
|
+
export function createRendererProducerRootMatrix(): readonly RendererProducerRoot[] {
|
|
95
|
+
return PRODUCER_ROOT_MATRIX;
|
|
96
|
+
}
|