@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/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/assets/asset-decoders.ts","../src/plugin.ts","../src/scene/visibility/gpu-frame-timing.ts","../src/ssr/composition.ts"],"names":["record","invalid","err","ok"],"mappings":"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","file":"index.mjs","sourcesContent":["import { validateCookedMaterialRecord } from '@forgeax/engine-pack';\nimport {\n type AssetDecoderContribution,\n type AssetKind,\n type AssetLoadError,\n err,\n MATERIAL_TEXTURE_SLOTS,\n type MaterialAsset,\n type MaterialChildAsset,\n type MaterialRootAsset,\n ok,\n type RenderPipelineAsset,\n type SamplerAsset,\n} from '@forgeax/engine-types';\n\nfunction invalid(guid: string, expected: string, reason: string) {\n return err({\n code: 'asset-package-invalid' as const,\n expected,\n hint: 'recook the render asset and publish its complete cooked payload',\n detail: { guid, reason },\n });\n}\n\nfunction record(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction validMaterial(value: unknown): value is MaterialAsset {\n if (!record(value) || value.kind !== 'material') return false;\n if (value.cooked !== undefined && !validateCookedMaterialRecord(value.cooked).ok) {\n return false;\n }\n if (value.passes !== undefined && !Array.isArray(value.passes)) return false;\n if (value.parameters !== undefined && !Array.isArray(value.parameters)) return false;\n if (\n value.parent !== undefined &&\n ['colorSpace', 'passes', 'parameters'].some((field) => Object.hasOwn(value, field))\n ) {\n return false;\n }\n return value.values === undefined || record(value.values);\n}\n\nfunction resolveMaterialWireRef(\n value: unknown,\n refs: readonly string[],\n field: string,\n guid: string,\n): ReturnType<typeof ok<string | number>> | ReturnType<typeof err<AssetLoadError>> {\n if (typeof value !== 'number') return ok(value as string | number);\n if (!Number.isSafeInteger(value) || value < 0 || refs[value] === undefined) {\n return err<AssetLoadError>({\n code: 'asset-package-invalid',\n expected: `${field} to reference a GUID through the material Pack refs[] table`,\n hint: 'recook the material so every texture or sampler ref has a matching refs[] entry',\n detail: { guid, reason: `${field} refs[${value}] is out of bounds` },\n });\n }\n return ok(refs[value] as string);\n}\n\nfunction resolveMaterialWireRefs(\n value: MaterialAsset,\n refs: readonly string[],\n guid: string,\n): ReturnType<typeof ok<MaterialAsset>> | ReturnType<typeof err<AssetLoadError>> {\n if (refs.length === 0) return ok(value);\n\n let changed = false;\n const wire = value as unknown as { readonly parent?: unknown };\n let parent = wire.parent;\n if (typeof parent === 'number') {\n const resolved = resolveMaterialWireRef(parent, refs, 'parent', guid);\n if (!resolved.ok) return resolved;\n parent = resolved.value;\n changed = true;\n }\n\n if (value.values === undefined) {\n if (!changed) return ok(value);\n if (parent !== undefined) {\n const child = value as MaterialChildAsset;\n return ok({ ...child, parent: parent as unknown as MaterialChildAsset['parent'] });\n }\n return ok(value);\n }\n\n const textureFields = new Set(\n value.parameters === undefined\n ? MATERIAL_TEXTURE_SLOTS\n : value.parameters\n .filter((parameter) => parameter.type === 'texture' || parameter.type === 'texture_cube')\n .map((parameter) => parameter.name),\n );\n const values = { ...value.values };\n for (const [field, raw] of Object.entries(values)) {\n if (typeof raw === 'number' && textureFields.has(field)) {\n const resolved = resolveMaterialWireRef(raw, refs, field, guid);\n if (!resolved.ok) return resolved;\n values[field] = resolved.value as NonNullable<MaterialAsset['values']>[string];\n changed = true;\n continue;\n }\n if (!record(raw)) continue;\n const rawRecord = raw as unknown as Record<string, unknown>;\n let rewritten: Record<string, unknown> | undefined;\n for (const key of ['texture', 'sampler'] as const) {\n if (!(key in rawRecord)) continue;\n const resolved = resolveMaterialWireRef(rawRecord[key], refs, `${field}.${key}`, guid);\n if (!resolved.ok) return resolved;\n if (resolved.value !== rawRecord[key]) {\n rewritten ??= { ...rawRecord };\n rewritten[key] = resolved.value;\n changed = true;\n }\n }\n if (rewritten !== undefined) {\n values[field] = rewritten as unknown as NonNullable<MaterialAsset['values']>[string];\n }\n }\n if (!changed) return ok(value);\n if (parent !== undefined) {\n const child = value as MaterialChildAsset;\n return ok({\n ...child,\n parent: parent as unknown as MaterialChildAsset['parent'],\n values,\n });\n }\n return ok({ ...value, values } as MaterialRootAsset);\n}\n\nexport const materialContribution: AssetDecoderContribution<MaterialAsset, 'material'> = {\n kind: { kind: 'material' } as AssetKind<MaterialAsset, 'material'>,\n consumer: 'Render MaterialScene',\n decoder: {\n async decode({ envelope }) {\n if (!validMaterial(envelope.payload)) {\n return invalid(\n envelope.guid,\n 'a material payload with cooked passes, parameters, and values',\n 'material owner validation failed',\n );\n }\n return resolveMaterialWireRefs(envelope.payload, envelope.refs, envelope.guid);\n },\n },\n};\n\nexport const samplerContribution: AssetDecoderContribution<SamplerAsset, 'sampler'> = {\n kind: { kind: 'sampler' } as AssetKind<SamplerAsset, 'sampler'>,\n consumer: 'Render DeviceScope',\n decoder: {\n async decode({ envelope }) {\n return envelope.payload.kind === 'sampler'\n ? ok(envelope.payload)\n : invalid(envelope.guid, 'a sampler payload', 'sampler owner validation failed');\n },\n },\n};\n\nexport const renderPipelineContribution: AssetDecoderContribution<\n RenderPipelineAsset,\n 'render-pipeline'\n> = {\n kind: { kind: 'render-pipeline' } as AssetKind<RenderPipelineAsset, 'render-pipeline'>,\n consumer: 'Render Pipeline',\n decoder: {\n async decode({ envelope }) {\n const payload = envelope.payload;\n return payload.kind === 'render-pipeline' && payload.pipelineId.trim().length > 0\n ? ok(payload)\n : invalid(\n envelope.guid,\n 'a render-pipeline payload with a pipelineId',\n 'render-pipeline owner validation failed',\n );\n },\n },\n};\n","import type { Component, World } from '@forgeax/engine-ecs';\nimport type { Plugin } from '@forgeax/engine-plugin';\nimport { Atmosphere } from './components/atmosphere';\nimport { Camera } from './components/camera';\nimport { DepthOfField } from './components/depth-of-field';\nimport { DirectionalLight } from './components/directional-light';\nimport { DynamicResolution } from './components/dynamic-resolution';\nimport { Instances } from './components/instances';\nimport { Layer } from './components/layer';\nimport { LightProbe } from './components/light-probe';\nimport { Lines } from './components/lines';\nimport { MeshFilter } from './components/mesh-filter';\nimport { MeshRenderer } from './components/mesh-renderer';\nimport { MotionBlur } from './components/motion-blur';\nimport { PointLight } from './components/point-light';\nimport { PointLightShadow } from './components/point-light-shadow';\nimport { Points } from './components/points';\nimport { PostProcessParams } from './components/post-process-params';\nimport { RectAreaLight } from './components/rect-area-light';\nimport { SceneInstance } from './components/scene-instance';\nimport { SkyboxBackground } from './components/skybox-background';\nimport { Skylight } from './components/skylight';\nimport { SortKey } from './components/sort-key';\nimport { SpotLight } from './components/spot-light';\nimport { SpriteAnimation } from './components/sprite-animation';\nimport { SpriteInstances } from './components/sprite-instances';\nimport { SpriteRegionOverride } from './components/sprite-region-override';\nimport { TileLayer } from './components/tile-layer';\nimport { Tilemap } from './components/tilemap';\nimport { Visibility } from './components/visibility';\n\nconst RENDER_COMPONENTS: readonly Component[] = [\n Atmosphere,\n Camera,\n DirectionalLight,\n DynamicResolution,\n DepthOfField,\n Instances,\n Layer,\n LightProbe,\n MeshFilter,\n MeshRenderer,\n MotionBlur,\n PointLight,\n PointLightShadow,\n Points,\n Lines,\n PostProcessParams,\n RectAreaLight,\n SceneInstance,\n SkyboxBackground,\n Skylight,\n SortKey,\n SpotLight,\n SpriteAnimation,\n SpriteInstances,\n SpriteRegionOverride,\n TileLayer,\n Tilemap,\n Visibility,\n];\n\nfunction registerRenderComponents(world: World): () => void {\n const leases = RENDER_COMPONENTS.map((component) =>\n world.components.register(component).unwrap(),\n );\n return () => {\n for (let index = leases.length - 1; index >= 0; index -= 1) leases[index]?.dispose();\n };\n}\n\n/** Install the built-in render ECS vocabulary in one World. */\nexport function renderComponentsPlugin(): Plugin {\n return {\n name: 'render-components',\n inject: ['world'],\n apply(ctx) {\n ctx.effect(() => registerRenderComponents(ctx.world), 'render/components');\n },\n };\n}\n","/** Renderer-owned timestamp facts spanning one graph and one queue submit. */\n\nexport interface GpuFrameTimingProtocol {\n readonly firstMarker: 'frame.first-pass';\n readonly terminalMarker: 'occlusion.resolve-copy';\n readonly sameGraph: true;\n readonly sameSubmit: true;\n}\n\nexport interface GpuFrameTiming {\n readonly frameId: number;\n readonly deviceGeneration: number;\n readonly protocol: GpuFrameTimingProtocol;\n aborted: boolean;\n submitId: number | undefined;\n}\n\nexport interface GpuFrameTimingRecord {\n readonly firstPassTimestampNs: number;\n readonly occlusionResolveTimestampNs: number;\n readonly submitted: boolean;\n readonly graphGeneration: number;\n readonly submitId: number;\n}\n\nexport interface GpuFrameTimingSample {\n readonly frameId: number;\n readonly deviceGeneration: number;\n readonly durationUs: number;\n readonly protocol: GpuFrameTimingProtocol;\n readonly graphGeneration: number;\n readonly submitId: number;\n}\n\nexport interface GpuFrameTimingSummary {\n readonly medianUs: number;\n readonly p95Us: number;\n readonly samples: number;\n}\n\nconst PROTOCOL: GpuFrameTimingProtocol = Object.freeze({\n firstMarker: 'frame.first-pass',\n terminalMarker: 'occlusion.resolve-copy',\n sameGraph: true,\n sameSubmit: true,\n});\n\nexport function createGpuFrameTiming(input: {\n readonly frameId: number;\n readonly deviceGeneration: number;\n}): GpuFrameTiming {\n return { ...input, protocol: PROTOCOL, aborted: false, submitId: undefined };\n}\n\nexport function recordGpuFrameTiming(\n timing: GpuFrameTiming,\n record: GpuFrameTimingRecord,\n): GpuFrameTimingSample {\n if (!record.submitted) {\n timing.aborted = true;\n throw new Error('GPU frame timing requires a submitted frame');\n }\n if (timing.aborted) throw new Error('GPU frame timing cannot cross a failed submit');\n if (timing.submitId !== undefined && timing.submitId !== record.submitId) {\n throw new Error('GPU frame timing markers must share one submit');\n }\n if (\n !Number.isFinite(record.firstPassTimestampNs) ||\n !Number.isFinite(record.occlusionResolveTimestampNs)\n ) {\n throw new Error('GPU frame timing requires finite timestamps');\n }\n if (record.occlusionResolveTimestampNs < record.firstPassTimestampNs) {\n throw new Error('GPU frame timing terminal marker precedes first marker');\n }\n timing.submitId = record.submitId;\n return Object.freeze({\n frameId: timing.frameId,\n deviceGeneration: timing.deviceGeneration,\n durationUs: (record.occlusionResolveTimestampNs - record.firstPassTimestampNs) / 1_000,\n protocol: PROTOCOL,\n graphGeneration: record.graphGeneration,\n submitId: record.submitId,\n });\n}\n\nfunction nearestRank(values: readonly number[], percentile: number): number {\n const sorted = [...values].sort((left, right) => left - right);\n return sorted[Math.max(0, Math.ceil(percentile * sorted.length) - 1)] ?? 0;\n}\n\nexport function summarizeGpuFrameTiming(\n samples: readonly GpuFrameTimingSample[],\n): GpuFrameTimingSummary {\n const values = samples.map((sample) => sample.durationUs);\n return Object.freeze({\n medianUs: nearestRank(values, 0.5),\n p95Us: nearestRank(values, 0.95),\n samples: values.length,\n });\n}\n","import { err, ok, type Result } from '@forgeax/engine-types';\n\n/** Linear HDR RGB used by the M0 composition contract. */\nexport type SsrReflectionColor = readonly [number, number, number];\n\nexport interface SsrCompositionInput {\n /** Screen-hit confidence. The parent SSR consumer supplies 0..1. */\n readonly c: number;\n /** The Standard BRDF specular lobe before SSR replacement. */\n readonly baseSpecular: SsrReflectionColor;\n /** The same-source BRDF-projected screen contribution. */\n readonly screenSpecular: SsrReflectionColor;\n /** The committed producer-owned environment contribution. */\n readonly fallbackSpecular: SsrReflectionColor;\n}\n\nexport interface SsrCompositionInputError {\n readonly code: 'ssr-composition-input-invalid';\n readonly expected: string;\n readonly hint: string;\n readonly detail: Readonly<{\n readonly field: 'c' | 'baseSpecular' | 'screenSpecular' | 'fallbackSpecular';\n }>;\n}\n\nexport type SsrCompositionResult = Result<SsrReflectionColor, SsrCompositionInputError>;\n\nfunction finiteColor(value: SsrReflectionColor): boolean {\n return value.length === 3 && value.every(Number.isFinite);\n}\n\nfunction invalid(\n field: SsrCompositionInputError['detail']['field'],\n expected: string,\n): SsrCompositionResult {\n return err({\n code: 'ssr-composition-input-invalid',\n expected,\n hint: 'preserve linear HDR and the bounded SSR confidence before composing',\n detail: Object.freeze({ field }),\n });\n}\n\n/**\n * Apply the M0 reflection replacement contract without owning an SSR pass.\n *\n * `c=0` returns the base Standard specular lobe. `c=1` replaces only that\n * lobe with the same-source screen contribution, subtracting the committed\n * environment contribution once. Hi-Z traversal, history and graph wiring\n * remain owned by the parent SSR feature.\n */\nexport function composeSsrReflection(input: SsrCompositionInput): SsrCompositionResult {\n if (!Number.isFinite(input.c) || input.c < 0 || input.c > 1) {\n return invalid('c', 'a finite confidence in the inclusive range 0..1');\n }\n for (const [field, value] of [\n ['baseSpecular', input.baseSpecular],\n ['screenSpecular', input.screenSpecular],\n ['fallbackSpecular', input.fallbackSpecular],\n ] as const) {\n if (!finiteColor(value)) {\n return invalid(field, 'three finite linear HDR RGB channels');\n }\n }\n const c = input.c;\n return ok(\n Object.freeze([\n input.baseSpecular[0] + c * (input.screenSpecular[0] - input.fallbackSpecular[0]),\n input.baseSpecular[1] + c * (input.screenSpecular[1] - input.fallbackSpecular[1]),\n input.baseSpecular[2] + c * (input.screenSpecular[2] - input.fallbackSpecular[2]),\n ]) as SsrReflectionColor,\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/assets/asset-decoders.ts","../src/examples/single-layer-medium-surface.ts","../src/plugin.ts","../src/publication/video.ts","../src/publication/publisher.ts","../src/scene/visibility/gpu-frame-timing.ts","../src/ssr/composition.ts","../src/transmission/oracle.ts","../src/transmission/single-layer-medium.ts"],"names":["err","source","row","ok","feature","record","invalid","clamp01","finiteColor"],"mappings":"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","file":"index.mjs","sourcesContent":["import { validateCookedMaterialRecord } from '@forgeax/engine-pack';\nimport {\n type AssetDecoderContribution,\n type AssetKind,\n type AssetLoadError,\n err,\n MATERIAL_TEXTURE_SLOTS,\n type MaterialAsset,\n type MaterialChildAsset,\n type MaterialRootAsset,\n ok,\n type RenderPipelineAsset,\n type SamplerAsset,\n} from '@forgeax/engine-types';\n\nfunction invalid(guid: string, expected: string, reason: string) {\n return err({\n code: 'asset-package-invalid' as const,\n expected,\n hint: 'recook the render asset and publish its complete cooked payload',\n detail: { guid, reason },\n });\n}\n\nfunction record(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction validMaterial(value: unknown): value is MaterialAsset {\n if (!record(value) || value.kind !== 'material') return false;\n if (value.cooked !== undefined && !validateCookedMaterialRecord(value.cooked).ok) {\n return false;\n }\n if (value.passes !== undefined && !Array.isArray(value.passes)) return false;\n if (value.parameters !== undefined && !Array.isArray(value.parameters)) return false;\n if (\n value.parent !== undefined &&\n ['colorSpace', 'passes', 'parameters'].some((field) => Object.hasOwn(value, field))\n ) {\n return false;\n }\n return value.values === undefined || record(value.values);\n}\n\nfunction resolveMaterialWireRef(\n value: unknown,\n refs: readonly string[],\n field: string,\n guid: string,\n): ReturnType<typeof ok<string | number>> | ReturnType<typeof err<AssetLoadError>> {\n if (typeof value !== 'number') return ok(value as string | number);\n if (!Number.isSafeInteger(value) || value < 0 || refs[value] === undefined) {\n return err<AssetLoadError>({\n code: 'asset-package-invalid',\n expected: `${field} to reference a GUID through the material Pack refs[] table`,\n hint: 'recook the material so every texture or sampler ref has a matching refs[] entry',\n detail: { guid, reason: `${field} refs[${value}] is out of bounds` },\n });\n }\n return ok(refs[value] as string);\n}\n\nfunction resolveMaterialWireRefs(\n value: MaterialAsset,\n refs: readonly string[],\n guid: string,\n): ReturnType<typeof ok<MaterialAsset>> | ReturnType<typeof err<AssetLoadError>> {\n if (refs.length === 0) return ok(value);\n\n let changed = false;\n const wire = value as unknown as { readonly parent?: unknown };\n let parent = wire.parent;\n if (typeof parent === 'number') {\n const resolved = resolveMaterialWireRef(parent, refs, 'parent', guid);\n if (!resolved.ok) return resolved;\n parent = resolved.value;\n changed = true;\n }\n\n if (value.values === undefined) {\n if (!changed) return ok(value);\n if (parent !== undefined) {\n const child = value as MaterialChildAsset;\n return ok({ ...child, parent: parent as unknown as MaterialChildAsset['parent'] });\n }\n return ok(value);\n }\n\n const textureFields = new Set(\n value.parameters === undefined\n ? MATERIAL_TEXTURE_SLOTS\n : value.parameters\n .filter((parameter) => parameter.type === 'texture' || parameter.type === 'texture_cube')\n .map((parameter) => parameter.name),\n );\n const values = { ...value.values };\n for (const [field, raw] of Object.entries(values)) {\n if (typeof raw === 'number' && textureFields.has(field)) {\n const resolved = resolveMaterialWireRef(raw, refs, field, guid);\n if (!resolved.ok) return resolved;\n values[field] = resolved.value as NonNullable<MaterialAsset['values']>[string];\n changed = true;\n continue;\n }\n if (!record(raw)) continue;\n const rawRecord = raw as unknown as Record<string, unknown>;\n let rewritten: Record<string, unknown> | undefined;\n for (const key of ['texture', 'sampler'] as const) {\n if (!(key in rawRecord)) continue;\n const resolved = resolveMaterialWireRef(rawRecord[key], refs, `${field}.${key}`, guid);\n if (!resolved.ok) return resolved;\n if (resolved.value !== rawRecord[key]) {\n rewritten ??= { ...rawRecord };\n rewritten[key] = resolved.value;\n changed = true;\n }\n }\n if (rewritten !== undefined) {\n values[field] = rewritten as unknown as NonNullable<MaterialAsset['values']>[string];\n }\n }\n if (!changed) return ok(value);\n if (parent !== undefined) {\n const child = value as MaterialChildAsset;\n return ok({\n ...child,\n parent: parent as unknown as MaterialChildAsset['parent'],\n values,\n });\n }\n return ok({ ...value, values } as MaterialRootAsset);\n}\n\nexport const materialContribution: AssetDecoderContribution<MaterialAsset, 'material'> = {\n kind: { kind: 'material' } as AssetKind<MaterialAsset, 'material'>,\n consumer: 'Render MaterialScene',\n decoder: {\n async decode({ envelope }) {\n if (!validMaterial(envelope.payload)) {\n return invalid(\n envelope.guid,\n 'a material payload with cooked passes, parameters, and values',\n 'material owner validation failed',\n );\n }\n return resolveMaterialWireRefs(envelope.payload, envelope.refs, envelope.guid);\n },\n },\n};\n\nexport const samplerContribution: AssetDecoderContribution<SamplerAsset, 'sampler'> = {\n kind: { kind: 'sampler' } as AssetKind<SamplerAsset, 'sampler'>,\n consumer: 'Render DeviceScope',\n decoder: {\n async decode({ envelope }) {\n return envelope.payload.kind === 'sampler'\n ? ok(envelope.payload)\n : invalid(envelope.guid, 'a sampler payload', 'sampler owner validation failed');\n },\n },\n};\n\nexport const renderPipelineContribution: AssetDecoderContribution<\n RenderPipelineAsset,\n 'render-pipeline'\n> = {\n kind: { kind: 'render-pipeline' } as AssetKind<RenderPipelineAsset, 'render-pipeline'>,\n consumer: 'Render Pipeline',\n decoder: {\n async decode({ envelope }) {\n const payload = envelope.payload;\n return payload.kind === 'render-pipeline' && payload.pipelineId.trim().length > 0\n ? ok(payload)\n : invalid(\n envelope.guid,\n 'a render-pipeline payload with a pipelineId',\n 'render-pipeline owner validation failed',\n );\n },\n },\n};\n","import type { MaterialRootAsset } from '@forgeax/engine-types';\n\n/**\n * A public root asset showing the model declaration and its bounded input.\n * The page is shared by every material instance; Render supplies the page\n * bytes and each instance publishes its own range.\n */\nexport const SINGLE_LAYER_MEDIUM_SURFACE_EXAMPLE = {\n kind: 'material',\n surface: {\n model: 'single-layer-medium',\n module: 'game::water_surface_a',\n dynamicInput: {\n name: 'waterEvents',\n fields: [\n { name: 'position', type: 'vec3<f32>' },\n { name: 'time', type: 'f32' },\n { name: 'eventId', type: 'u32' },\n ],\n maxRecords: 64,\n maxDomains: 8,\n maxPageBytes: 2048,\n maxBindings: 1,\n maxEventsPerSample: 8,\n },\n },\n passes: [\n {\n name: 'color',\n program: { module: 'forgeax::single-layer-medium' },\n },\n ],\n parameters: [],\n values: {},\n} as const satisfies MaterialRootAsset;\n\n/** Two different imported Surface implementations consuming one model ABI. */\nexport const SINGLE_LAYER_MEDIUM_SURFACE_EXAMPLES = [\n {\n module: 'game::water_surface_a',\n source: `#define_import_path game::water_surface_a\n#import forgeax_material::single_layer_medium_surface_v1::{SingleLayerMediumSurfaceInput, SingleLayerMediumSurfaceData}\nfn evaluate_surface(input : SingleLayerMediumSurfaceInput) -> SingleLayerMediumSurfaceData {\n let event = read_waterEvents(input.eventRangeStart);\n let normal = normalize(input.geometricNormalWS + vec3<f32>(0.0, 0.0, event.time * 0.02));\n return SingleLayerMediumSurfaceData(normal, 0.18, 1.0, 0.0, vec3<f32>(0.18, 0.06, 0.02), vec3<f32>(0.02, 0.04, 0.08), 1.333, 0.2, 1000.0);\n}`,\n },\n {\n module: 'game::water_surface_b',\n source: `#define_import_path game::water_surface_b\n#import forgeax_material::single_layer_medium_surface_v1::{SingleLayerMediumSurfaceInput, SingleLayerMediumSurfaceData}\nfn evaluate_surface(input : SingleLayerMediumSurfaceInput) -> SingleLayerMediumSurfaceData {\n let event = read_waterEvents(input.eventRangeStart);\n let normal = normalize(input.geometricNormalWS + vec3<f32>(event.position.xy * 0.01, 0.0));\n return SingleLayerMediumSurfaceData(normal, 0.32, 1.0, clamp(event.time * 0.1, 0.0, 1.0), vec3<f32>(0.04, 0.02, 0.01), vec3<f32>(0.08, 0.05, 0.02), 1.333, -0.1, 800.0);\n}`,\n },\n] as const;\n","import type { Component, World } from '@forgeax/engine-ecs';\nimport type { Plugin } from '@forgeax/engine-plugin';\nimport { Atmosphere } from './components/atmosphere';\nimport { BarrelDistortion } from './components/barrel-distortion';\nimport { Camera } from './components/camera';\nimport { CloudLayer } from './components/cloud-layer';\nimport { DepthOfField } from './components/depth-of-field';\nimport { DirectionalLight } from './components/directional-light';\nimport { DynamicResolution } from './components/dynamic-resolution';\nimport { Instances } from './components/instances';\nimport { Layer } from './components/layer';\nimport { LightProbe } from './components/light-probe';\nimport { Lines } from './components/lines';\nimport { MeshFilter } from './components/mesh-filter';\nimport { MeshRenderer } from './components/mesh-renderer';\nimport { MotionBlur } from './components/motion-blur';\nimport { PointLight } from './components/point-light';\nimport { PointLightShadow } from './components/point-light-shadow';\nimport { Points } from './components/points';\nimport { PostProcessParams } from './components/post-process-params';\nimport { RectAreaLight } from './components/rect-area-light';\nimport { SceneInstance } from './components/scene-instance';\nimport { SkyboxBackground } from './components/skybox-background';\nimport { Skylight } from './components/skylight';\nimport { SortKey } from './components/sort-key';\nimport { SpotLight } from './components/spot-light';\nimport { SpriteAnimation } from './components/sprite-animation';\nimport { SpriteInstances } from './components/sprite-instances';\nimport { SpriteRegionOverride } from './components/sprite-region-override';\nimport { TileLayer } from './components/tile-layer';\nimport { Tilemap } from './components/tilemap';\nimport { Visibility } from './components/visibility';\n\nconst RENDER_COMPONENTS: readonly Component[] = [\n Atmosphere,\n BarrelDistortion,\n Camera,\n CloudLayer,\n DirectionalLight,\n DynamicResolution,\n DepthOfField,\n Instances,\n Layer,\n LightProbe,\n MeshFilter,\n MeshRenderer,\n MotionBlur,\n PointLight,\n PointLightShadow,\n Points,\n Lines,\n PostProcessParams,\n RectAreaLight,\n SceneInstance,\n SkyboxBackground,\n Skylight,\n SortKey,\n SpotLight,\n SpriteAnimation,\n SpriteInstances,\n SpriteRegionOverride,\n TileLayer,\n Tilemap,\n Visibility,\n];\n\nfunction registerRenderComponents(world: World): () => void {\n const leases = RENDER_COMPONENTS.map((component) =>\n world.components.register(component).unwrap(),\n );\n return () => {\n for (let index = leases.length - 1; index >= 0; index -= 1) leases[index]?.dispose();\n };\n}\n\n/** Install the built-in render ECS vocabulary in one World. */\nexport function renderComponentsPlugin(): Plugin {\n return {\n name: 'render-components',\n inject: ['world'],\n apply(ctx) {\n ctx.effect(() => registerRenderComponents(ctx.world), 'render/components');\n },\n };\n}\n","import type { EntityHandle, World } from '@forgeax/engine-ecs';\nimport {\n VIDEO_SOURCE_PROVIDER_KEY,\n type VideoSourceProvider,\n videoSourceExtent,\n} from '@forgeax/engine-graphics-extras';\nimport type { Handle } from '@forgeax/engine-types';\nimport type { RenderPublication } from './contract';\n\n/** Native VideoFrame cloning shares decoded pixels; it never copies source ECS storage. */\nexport function publicationVideoFrames(\n world: World,\n consumers: ReadonlyMap<number, readonly number[]>,\n): RenderPublication['videoFrames'] {\n if (consumers.size === 0 || !world.hasResource(VIDEO_SOURCE_PROVIDER_KEY)) return [];\n const provider = world.getResource<VideoSourceProvider>(VIDEO_SOURCE_PROVIDER_KEY);\n const frames: RenderPublication['videoFrames'][number][] = [];\n try {\n for (const [entity, clips] of consumers)\n for (const clip of clips) {\n const source = provider.getSource(\n entity as EntityHandle,\n clip as Handle<'VideoAsset', 'shared'>,\n );\n if (source === undefined || videoSourceExtent(source) === undefined) continue;\n frames.push({ entity, clip, frame: new VideoFrame(source) });\n }\n return frames;\n } catch (cause) {\n for (const row of frames) row.frame.close();\n throw cause;\n }\n}\n","import {\n type AssetRegistry,\n RuntimeMaterialValue,\n RuntimeMeshVertices,\n resolveAssetHandle,\n} from '@forgeax/engine-assets-runtime';\nimport { type EntityHandle, Time, type World } from '@forgeax/engine-ecs';\nimport { AssetGuid } from '@forgeax/engine-pack/guid';\nimport type { RhiCaps } from '@forgeax/engine-rhi';\nimport { ChildOf, Children, GlobalTransform } from '@forgeax/engine-scene';\nimport { type Asset, err, type Handle, ok, type Result } from '@forgeax/engine-types';\nimport { Visibility } from '../components';\nimport { renderMaterialContext } from '../extract/material-context';\nimport type { RenderFeature } from '../features/types';\nimport {\n extractFrames,\n internSharedRefFromGuid,\n type MaterialSnapshot,\n type MaterialSnapshotCachesByWorld,\n type RenderableSnapshot,\n resolveMaterialSnapshot,\n} from '../render-system-extract';\nimport {\n createGlobalTransformChangeQuery,\n createRenderSourceState,\n isRenderableMember,\n RENDERABLE_SOURCE_COMPONENTS,\n} from '../scene/render-source';\nimport { registerRenderSourceSystems } from '../scene/source-systems';\nimport { getTransparentSortConfig } from '../systems/transparent-sort-config';\nimport { renderTargetMaterialSourceIdentity } from '../targets/material-source';\nimport {\n type RenderPublication,\n RenderPublicationError,\n type RenderPublicationIdentity,\n type RenderPublicationTemplate,\n} from './contract';\nimport { publicationDependencies, publicationFrameDependencies } from './dependencies';\nimport { publicationTargetSources, type RenderPublicationTargetOwner } from './targets';\nimport { publicationVideoFrames } from './video';\n\nexport interface RenderPublicationCandidate {\n readonly packet: RenderPublication;\n /** Call synchronously after successful postMessage; never wait for remote ACK. */\n accept(): void;\n discard(): void;\n}\n\n/** Source indices and asset dependencies only; the receiver owns the RenderScene. */\nexport function createRenderPublisher(\n world: World,\n assets: AssetRegistry,\n identity: RenderPublicationIdentity,\n capabilities?: RhiCaps,\n features: readonly RenderFeature<unknown>[] = [],\n targetOwner?: RenderPublicationTargetOwner,\n) {\n const pendingMeshContent = new Set<Handle<string, 'shared'>>();\n const releaseTransforms = registerRenderSourceSystems(world, assets, {\n updateMesh: (handle) => pendingMeshContent.add(handle),\n });\n const source = createRenderSourceState(world);\n const transforms = createGlobalTransformChangeQuery(world);\n const caches: MaterialSnapshotCachesByWorld = new WeakMap();\n const members = new Set<number>();\n const publishedPrograms = new Set<string>();\n const dependencies = new Map<number, readonly Handle<string, 'shared'>[]>();\n const consumers = new Map<Handle<string, 'shared'>, Set<number>>();\n const pending = new Set<number>();\n let videoConsumers = new Map<number, readonly number[]>();\n let pendingFeatures: RenderPublication['features'] = [];\n let pendingFeatureOwners: readonly RenderFeature<unknown>[] = [];\n const acknowledgedFeatures = new Set<string>();\n const jointsByEntity = new Map<number, readonly number[]>();\n const skinConsumers = new Map<number, Set<number>>();\n let frameDependencies = new Set<Handle<string, 'shared'>>();\n let catalogEpoch = -1,\n revision = 0,\n disposed = false,\n active = false;\n let lastScannedRows = 0,\n inFlight = false,\n allocations = 0;\n let storage = [new ArrayBuffer(0), new ArrayBuffer(0), new ArrayBuffer(0), new ArrayBuffer(0)];\n const buffer = (index: number, bytes: number): ArrayBuffer => {\n let value = storage[index] as ArrayBuffer;\n if (value.byteLength < bytes) {\n let capacity = Math.max(16, value.byteLength);\n while (capacity < bytes) capacity *= 2;\n value = new ArrayBuffer(capacity);\n storage[index] = value;\n allocations++;\n }\n return value;\n };\n\n const fail = (reason: RenderPublicationError['detail']['reason'], subject: string) =>\n err(new RenderPublicationError({ reason, subject }));\n\n return {\n identity,\n inspect: () => ({\n revision,\n members: members.size,\n assetCount: consumers.size,\n scannedRows: lastScannedRows,\n inFlight,\n allocations,\n }),\n prepare(\n sampleTimeSeconds: number,\n temporalReset = false,\n ): Result<RenderPublicationCandidate, RenderPublicationError> {\n if (disposed) return fail('disposed', 'publisher');\n if (active || inFlight) return fail('in-flight', 'publication storage has not been returned');\n const baseline = revision === 0;\n const featureSources = [...features];\n const batch = source.projection.read();\n lastScannedRows = batch.scannedRows;\n const changed = new Set(pending),\n removed = new Set<number>();\n const invalidated = new Set<Handle<string, 'shared'>>(pendingMeshContent);\n const runtimeChanged =\n batch.membershipChanged ||\n batch.changedComponents.includes(RuntimeMaterialValue) ||\n batch.changedComponents.includes(RuntimeMeshVertices);\n for (const index of batch.indices) {\n const previous = source.entities.get(index),\n current = source.projection.entity(index);\n if (\n previous !== undefined &&\n members.has(previous) &&\n (current !== previous || !isRenderableMember(world, previous))\n )\n removed.add(previous);\n if (runtimeChanged) {\n for (const handle of source.contentHandles.get(index) ?? [])\n invalidated.add(handle as Handle<string, 'shared'>);\n if (current !== undefined) {\n if (world.hasComponent(current, RuntimeMaterialValue))\n invalidated.add(world.get(current, RuntimeMaterialValue).unwrap().asset);\n if (world.hasComponent(current, RuntimeMeshVertices))\n invalidated.add(world.get(current, RuntimeMeshVertices).unwrap().asset);\n }\n }\n if (previous !== undefined)\n for (const consumer of skinConsumers.get(previous) ?? []) changed.add(consumer);\n if (current === undefined) continue;\n if (\n isRenderableMember(world, current) &&\n (baseline ||\n !members.has(current) ||\n RENDERABLE_SOURCE_COMPONENTS.some((component) =>\n source.projection.changed(current, component),\n ))\n )\n changed.add(current);\n if (\n batch.membershipChanged ||\n source.projection.changed(current, ChildOf) ||\n source.projection.changed(current, Visibility)\n ) {\n const queue = [current],\n visited = new Set<number>();\n while (queue.length) {\n const entity = queue.pop() as EntityHandle;\n if (visited.has(entity)) continue;\n visited.add(entity);\n if (isRenderableMember(world, entity)) changed.add(entity);\n if (world.hasComponent(entity, Children))\n queue.push(\n ...Array.from(\n world.get(entity, Children).unwrap().entities,\n (child) => child as EntityHandle,\n ),\n );\n }\n }\n }\n if (baseline || catalogEpoch !== assets.catalogEpoch) {\n for (const entity of members) changed.add(entity);\n for (const entity of source.entities.values())\n if (isRenderableMember(world, entity)) changed.add(entity);\n }\n for (const handle of invalidated)\n for (const entity of consumers.get(handle) ?? []) changed.add(entity);\n const matrixRows = new Map<number, Float32Array>();\n for (const span of transforms.spans().unwrap()) {\n const values = span.get(GlobalTransform).world;\n for (let row = 0; row < span.entities.length; row++) {\n const entity = span.entities[row] as EntityHandle;\n for (const consumer of skinConsumers.get(entity) ?? []) changed.add(consumer);\n if (members.has(entity) && !removed.has(entity)) {\n matrixRows.set(entity, values.subarray(row * 16, row * 16 + 16));\n pending.add(entity);\n }\n }\n }\n for (const entity of changed) pending.add(entity);\n let videoFrames: RenderPublication['videoFrames'] = [];\n try {\n const frame = extractFrames(\n [world],\n { cameraOwner: 0, resourceOwner: 0 },\n assets,\n undefined,\n caches,\n {\n ...(capabilities === undefined ? {} : renderMaterialContext(capabilities)),\n cull: 'none',\n retainHidden: true,\n renderables: changed.size ? { kind: 'partial', entitiesByWorld: [changed] } : 'none',\n },\n );\n const templates: RenderPublicationTemplate[] = [],\n templateIds = new Map<string, number>();\n const upserts: number[] = [];\n const programs = new Map<string, RenderPublication['programs'][number]>();\n const nextDependencies = new Map<number, readonly Handle<string, 'shared'>[]>();\n const assetRows = new Map<Handle<string, 'shared'>, Asset>();\n const byRenderable = new Map<number, RenderPublicationTemplate['dispatch'][number][]>();\n for (const { entityIndex: _entity, renderableIndex, ...dispatch } of frame.dispatch) {\n const rows = byRenderable.get(renderableIndex) ?? [];\n rows.push(dispatch);\n byRenderable.set(renderableIndex, rows);\n }\n const publishPrograms = (materials: readonly MaterialSnapshot[]) => {\n for (const material of materials) {\n const keys = new Set([\n ...Object.values(material.materialProgramKeys ?? {}),\n ...Object.values(material.materialSceneIndexProgramKeys ?? {}).map(\n (program) => program.specializationKey,\n ),\n ...(material.materialShaderId === undefined ||\n material.materialShaderId.startsWith('forgeax::')\n ? []\n : [material.materialShaderId]),\n ]);\n for (const key of keys) {\n if (publishedPrograms.has(key) || programs.has(key)) continue;\n const shader = assets.shaderRegistry.findMaterialArtifact(key);\n if (!shader.ok) throw shader.error;\n const artifact = assets.getMaterialArtifact(key);\n programs.set(key, {\n key,\n shader: {\n source: shader.value.source,\n paramSchema: shader.value.paramSchema,\n ...(shader.value.receipt === undefined ? {} : { receipt: shader.value.receipt }),\n },\n ...(artifact === undefined ? {} : { artifact }),\n });\n }\n }\n };\n for (let i = 0; i < frame.renderables.length; i++) {\n const row = frame.renderables[i] as RenderableSnapshot;\n if (row.skin) return fail('unsupported', 'source GPU skin receipt');\n const { worldId: _world, entityKey, transform, ...snapshot } = row;\n const template = { snapshot, dispatch: byRenderable.get(i) ?? [] };\n const key = JSON.stringify(template, (_key, value: unknown) =>\n value instanceof Map\n ? _key === 'textureSources'\n ? [...value].map(([name, source]) => [\n name,\n renderTargetMaterialSourceIdentity(source),\n ])\n : [...value]\n : ArrayBuffer.isView(value)\n ? Array.from(value as unknown as ArrayLike<number>)\n : value,\n );\n let templateId = templateIds.get(key);\n if (templateId === undefined) {\n templateId = templates.length;\n templateIds.set(key, templateId);\n templates.push(template);\n }\n upserts.push(entityKey, templateId);\n matrixRows.set(entityKey, transform.world);\n publishPrograms(row.materials);\n const handles = publicationDependencies(row);\n for (const lod of row.lods ?? []) {\n const handle = internSharedRefFromGuid(\n world,\n assets,\n AssetGuid.format(lod.mesh),\n 'MeshAsset',\n );\n if (handle !== undefined) handles.push(handle);\n }\n nextDependencies.set(entityKey, handles);\n for (const handle of handles) {\n if (\n !baseline &&\n (consumers.has(handle) || frameDependencies.has(handle)) &&\n !invalidated.has(handle) &&\n catalogEpoch === assets.catalogEpoch\n )\n continue;\n const value = resolveAssetHandle(world, handle);\n if (!value.ok) throw value.error;\n assetRows.set(handle, value.value);\n }\n }\n const featureRows = featureSources.map((feature) => {\n const data = feature\n .extract({\n worlds: [world],\n owner: 0,\n frameNumber: revision + 1,\n ...(capabilities === undefined ? {} : { caps: capabilities }),\n ...(frame.cameras[0] === undefined ? {} : { selectedCamera: frame.cameras[0] }),\n visibilitySnapshots: frame.featureVisibilitySnapshots,\n ...(frame.cloudLayer === undefined\n ? {}\n : { frame: { cloudLayer: frame.cloudLayer } }),\n })\n .unwrap();\n return { identity: feature.identity, data };\n });\n const nextFrameDependencies = new Set(publicationFrameDependencies(frame));\n const pendingGuids = featureSources.flatMap((feature) => {\n const row = featureRows.find((row) => row.identity === feature.identity);\n return row === undefined ? [] : [...(feature.assetDependencies?.(row.data) ?? [])];\n });\n const seenGuids = new Set<string>();\n for (const guid of pendingGuids) {\n const key = guid.toLowerCase();\n if (seenGuids.has(key)) continue;\n seenGuids.add(key);\n const asset = assets.lookup(key);\n const handle = internSharedRefFromGuid(world, assets, key, 'RenderFeatureAsset');\n if (asset === undefined || handle === undefined)\n throw new Error(`Missing feature asset ${guid}`);\n nextFrameDependencies.add(handle);\n for (const ref of assets.assetCatalog.get(key)?.refs ?? []) pendingGuids.push(ref.guid);\n if (asset.kind === 'material') {\n const material = resolveMaterialSnapshot(\n handle,\n world,\n assets,\n undefined,\n undefined,\n capabilities === undefined\n ? undefined\n : renderMaterialContext(capabilities).materialContext,\n );\n publishPrograms([material]);\n for (const dependency of publicationDependencies({\n assetHandle: handle,\n materials: [material],\n }))\n nextFrameDependencies.add(dependency);\n }\n }\n for (const handle of nextFrameDependencies) {\n if (\n !baseline &&\n (consumers.has(handle) || frameDependencies.has(handle)) &&\n !invalidated.has(handle) &&\n catalogEpoch === assets.catalogEpoch\n )\n continue;\n const value = resolveAssetHandle(world, handle);\n if (!value.ok) throw value.error;\n assetRows.set(handle, value.value);\n }\n const emitted = new Set(frame.renderables.map((row) => row.entityKey));\n for (const entity of changed)\n if (members.has(entity) && !emitted.has(entity)) removed.add(entity);\n for (const entity of removed) matrixRows.delete(entity);\n const nextVideoConsumers = new Map(videoConsumers);\n for (const entity of removed) nextVideoConsumers.delete(entity);\n for (const row of frame.renderables) {\n const clips = [\n ...new Set(\n row.materials.flatMap((material) => [\n ...(material.videoTextureFields?.values() ?? []),\n ]),\n ),\n ];\n if (clips.length > 0) nextVideoConsumers.set(row.entityKey, clips);\n else nextVideoConsumers.delete(row.entityKey);\n }\n videoFrames = publicationVideoFrames(world, nextVideoConsumers);\n\n const transformEntities = new Uint32Array(\n buffer(2, matrixRows.size * 4),\n 0,\n matrixRows.size,\n ),\n matrices = new Float32Array(buffer(3, matrixRows.size * 64), 0, matrixRows.size * 16);\n let index = 0;\n for (const [entity, matrix] of matrixRows) {\n transformEntities[index] = entity;\n matrices.set(matrix, index * 16);\n index++;\n }\n const {\n renderables: _rows,\n dispatch: _dispatch,\n visibilitySnapshots: _visibility,\n featureVisibilitySnapshots: _features,\n hiddenEntityReports: _hidden,\n shadowCasterEntityKeys: _casters,\n shadowCasterDrawKeys: _draws,\n shadowCasterMembership: _membership,\n ...metadata\n } = frame;\n const retired = new Set<Handle<string, 'shared'>>();\n const removedConsumers = new Set([...removed, ...nextDependencies.keys()]);\n const nextHandles = new Set([...nextDependencies.values()].flat());\n const removedCounts = new Map<Handle<string, 'shared'>, number>();\n for (const entity of removedConsumers)\n for (const handle of dependencies.get(entity) ?? [])\n removedCounts.set(handle, (removedCounts.get(handle) ?? 0) + 1);\n for (const [handle, count] of removedCounts)\n if (\n count === consumers.get(handle)?.size &&\n !nextHandles.has(handle) &&\n !nextFrameDependencies.has(handle)\n )\n retired.add(handle);\n for (const handle of frameDependencies) {\n if (\n !nextFrameDependencies.has(handle) &&\n !nextHandles.has(handle) &&\n (consumers.get(handle)?.size ?? 0) === (removedCounts.get(handle) ?? 0)\n )\n retired.add(handle);\n }\n const upsertColumn = new Uint32Array(buffer(0, upserts.length * 4), 0, upserts.length);\n upsertColumn.set(upserts);\n const removedColumn = new Uint32Array(buffer(1, removed.size * 4), 0, removed.size);\n removedColumn.set([...removed]);\n const packet: RenderPublication = {\n ...identity,\n revision: revision + 1,\n base: revision,\n baseline,\n time: { ...world.getResource(Time) },\n sampleTimeSeconds,\n temporalReset,\n transparentSort: getTransparentSortConfig(world),\n metadata,\n templates,\n videoFrames,\n targets: targetOwner?.snapshot() ?? [],\n targetSources: publicationTargetSources(templates),\n features: featureRows,\n programs: [...programs.values()],\n upserts: upsertColumn,\n removed: removedColumn,\n transformEntities,\n transforms: matrices,\n assets: [...assetRows].map(([handle, value]) => {\n const guid = assets.guidOf(value);\n return { handle, value, ...(guid === undefined ? {} : { guid }) };\n }),\n retiredAssets: [...retired],\n invalidatedAssets: [...invalidated],\n };\n batch.validate();\n active = true;\n let closed = false;\n return ok({\n packet,\n accept: () => {\n if (closed)\n throw new RenderPublicationError({ reason: 'revision', subject: 'closed candidate' });\n batch.accept();\n for (const handle of invalidated) pendingMeshContent.delete(handle);\n for (const key of programs.keys()) publishedPrograms.add(key);\n closed = true;\n active = false;\n inFlight = true;\n revision++;\n for (const row of videoFrames) row.frame.close();\n videoConsumers = nextVideoConsumers;\n pendingFeatures = featureRows;\n pendingFeatureOwners = featureSources;\n acknowledgedFeatures.clear();\n frameDependencies = nextFrameDependencies;\n catalogEpoch = assets.catalogEpoch;\n for (const entity of removedConsumers) {\n for (const handle of dependencies.get(entity) ?? []) {\n consumers.get(handle)?.delete(entity);\n if (consumers.get(handle)?.size === 0) consumers.delete(handle);\n }\n dependencies.delete(entity);\n }\n for (const entity of removedConsumers) {\n for (const joint of jointsByEntity.get(entity) ?? []) {\n const users = skinConsumers.get(joint);\n users?.delete(entity);\n if (users?.size === 0) skinConsumers.delete(joint);\n }\n jointsByEntity.delete(entity);\n }\n for (const row of frame.renderables) {\n if (row.skinJointEntities === undefined) continue;\n jointsByEntity.set(row.entityKey, row.skinJointEntities);\n for (const joint of row.skinJointEntities) {\n let users = skinConsumers.get(joint);\n if (users === undefined) {\n users = new Set();\n skinConsumers.set(joint, users);\n }\n users.add(row.entityKey);\n }\n }\n for (const entity of removed) members.delete(entity);\n for (const [entity, handles] of nextDependencies) {\n members.add(entity);\n dependencies.set(entity, handles);\n for (const handle of handles) {\n let users = consumers.get(handle);\n if (!users) {\n users = new Set();\n consumers.set(handle, users);\n }\n users.add(entity);\n }\n }\n for (const entity of matrixRows.keys()) pending.delete(entity);\n for (const entity of removed) pending.delete(entity);\n for (const sourceIndex of batch.indices) {\n const entity = source.projection.entity(sourceIndex);\n if (entity === undefined) {\n source.entities.delete(sourceIndex);\n source.contentHandles.delete(sourceIndex);\n } else {\n source.entities.set(sourceIndex, entity);\n const handles: number[] = [];\n if (world.hasComponent(entity, RuntimeMaterialValue))\n handles.push(world.get(entity, RuntimeMaterialValue).unwrap().asset);\n if (world.hasComponent(entity, RuntimeMeshVertices))\n handles.push(world.get(entity, RuntimeMeshVertices).unwrap().asset);\n if (handles.length) source.contentHandles.set(sourceIndex, handles);\n else source.contentHandles.delete(sourceIndex);\n }\n }\n },\n discard: () => {\n if (!closed) {\n closed = true;\n active = false;\n for (const row of videoFrames) row.frame.close();\n }\n },\n });\n } catch (cause) {\n for (const row of videoFrames) row.frame.close();\n return fail('unsupported', cause instanceof Error ? cause.message : String(cause));\n }\n },\n acknowledgeFeatures(\n acceptedRevision: number,\n receipts: readonly { readonly identity: string; readonly feedback: unknown }[],\n ): Result<void, RenderPublicationError> {\n if (disposed) return fail('disposed', 'publisher');\n if (!inFlight || revision !== acceptedRevision)\n return fail('revision', 'feature acknowledgment');\n const identities = new Set<string>();\n for (const receipt of receipts) {\n if (identities.has(receipt.identity) || acknowledgedFeatures.has(receipt.identity))\n return fail('revision', 'duplicate feature acknowledgment');\n const row = pendingFeatures.find((row) => row.identity === receipt.identity);\n const feature = pendingFeatureOwners.find(\n (feature) => feature.identity === receipt.identity,\n );\n if (row === undefined || feature === undefined)\n return fail('shape', 'unknown feature acknowledgment');\n identities.add(receipt.identity);\n }\n for (const receipt of receipts) {\n acknowledgedFeatures.add(receipt.identity);\n const row = pendingFeatures.find((row) => row.identity === receipt.identity);\n const feature = pendingFeatureOwners.find(\n (feature) => feature.identity === receipt.identity,\n );\n feature?.onSourceFrameSubmitted?.(row?.data, receipt.feedback);\n }\n return ok(undefined);\n },\n recycle(\n acceptedRevision: number,\n buffers: readonly ArrayBuffer[],\n ): Result<void, RenderPublicationError> {\n if (disposed) return fail('disposed', 'publisher');\n if (!inFlight || acceptedRevision !== revision)\n return fail('revision', 'returned storage revision');\n if (buffers.length !== 4 || buffers.some((value) => !(value instanceof ArrayBuffer)))\n return fail('shape', 'returned storage');\n storage = [...buffers];\n inFlight = false;\n return ok(undefined);\n },\n dispose() {\n if (disposed) return;\n disposed = true;\n releaseTransforms();\n members.clear();\n dependencies.clear();\n consumers.clear();\n pending.clear();\n pendingMeshContent.clear();\n videoConsumers.clear();\n pendingFeatures = [];\n pendingFeatureOwners = [];\n acknowledgedFeatures.clear();\n frameDependencies.clear();\n jointsByEntity.clear();\n skinConsumers.clear();\n },\n };\n}\n","/** Renderer-owned timestamp facts spanning one graph and one queue submit. */\n\nexport interface GpuFrameTimingProtocol {\n readonly firstMarker: 'frame.first-pass';\n readonly terminalMarker: 'occlusion.resolve-copy';\n readonly sameGraph: true;\n readonly sameSubmit: true;\n}\n\nexport interface GpuFrameTiming {\n readonly frameId: number;\n readonly deviceGeneration: number;\n readonly protocol: GpuFrameTimingProtocol;\n aborted: boolean;\n submitId: number | undefined;\n}\n\nexport interface GpuFrameTimingRecord {\n readonly firstPassTimestampNs: number;\n readonly occlusionResolveTimestampNs: number;\n readonly submitted: boolean;\n readonly graphGeneration: number;\n readonly submitId: number;\n}\n\nexport interface GpuFrameTimingSample {\n readonly frameId: number;\n readonly deviceGeneration: number;\n readonly durationUs: number;\n readonly protocol: GpuFrameTimingProtocol;\n readonly graphGeneration: number;\n readonly submitId: number;\n}\n\nexport interface GpuFrameTimingSummary {\n readonly medianUs: number;\n readonly p95Us: number;\n readonly samples: number;\n}\n\nconst PROTOCOL: GpuFrameTimingProtocol = Object.freeze({\n firstMarker: 'frame.first-pass',\n terminalMarker: 'occlusion.resolve-copy',\n sameGraph: true,\n sameSubmit: true,\n});\n\nexport function createGpuFrameTiming(input: {\n readonly frameId: number;\n readonly deviceGeneration: number;\n}): GpuFrameTiming {\n return { ...input, protocol: PROTOCOL, aborted: false, submitId: undefined };\n}\n\nexport function recordGpuFrameTiming(\n timing: GpuFrameTiming,\n record: GpuFrameTimingRecord,\n): GpuFrameTimingSample {\n if (!record.submitted) {\n timing.aborted = true;\n throw new Error('GPU frame timing requires a submitted frame');\n }\n if (timing.aborted) throw new Error('GPU frame timing cannot cross a failed submit');\n if (timing.submitId !== undefined && timing.submitId !== record.submitId) {\n throw new Error('GPU frame timing markers must share one submit');\n }\n if (\n !Number.isFinite(record.firstPassTimestampNs) ||\n !Number.isFinite(record.occlusionResolveTimestampNs)\n ) {\n throw new Error('GPU frame timing requires finite timestamps');\n }\n if (record.occlusionResolveTimestampNs < record.firstPassTimestampNs) {\n throw new Error('GPU frame timing terminal marker precedes first marker');\n }\n timing.submitId = record.submitId;\n return Object.freeze({\n frameId: timing.frameId,\n deviceGeneration: timing.deviceGeneration,\n durationUs: (record.occlusionResolveTimestampNs - record.firstPassTimestampNs) / 1_000,\n protocol: PROTOCOL,\n graphGeneration: record.graphGeneration,\n submitId: record.submitId,\n });\n}\n\nfunction nearestRank(values: readonly number[], percentile: number): number {\n const sorted = [...values].sort((left, right) => left - right);\n return sorted[Math.max(0, Math.ceil(percentile * sorted.length) - 1)] ?? 0;\n}\n\nexport function summarizeGpuFrameTiming(\n samples: readonly GpuFrameTimingSample[],\n): GpuFrameTimingSummary {\n const values = samples.map((sample) => sample.durationUs);\n return Object.freeze({\n medianUs: nearestRank(values, 0.5),\n p95Us: nearestRank(values, 0.95),\n samples: values.length,\n });\n}\n","import { err, ok, type Result } from '@forgeax/engine-types';\n\n/** Linear HDR RGB used by the M0 composition contract. */\nexport type SsrReflectionColor = readonly [number, number, number];\n\nexport interface SsrCompositionInput {\n /** Screen-hit confidence. The parent SSR consumer supplies 0..1. */\n readonly c: number;\n /** The Standard BRDF specular lobe before SSR replacement. */\n readonly baseSpecular: SsrReflectionColor;\n /** The same-source BRDF-projected screen contribution. */\n readonly screenSpecular: SsrReflectionColor;\n /** The committed producer-owned environment contribution. */\n readonly fallbackSpecular: SsrReflectionColor;\n}\n\nexport interface SsrCompositionInputError {\n readonly code: 'ssr-composition-input-invalid';\n readonly expected: string;\n readonly hint: string;\n readonly detail: Readonly<{\n readonly field: 'c' | 'baseSpecular' | 'screenSpecular' | 'fallbackSpecular';\n }>;\n}\n\nexport type SsrCompositionResult = Result<SsrReflectionColor, SsrCompositionInputError>;\n\nfunction finiteColor(value: SsrReflectionColor): boolean {\n return value.length === 3 && value.every(Number.isFinite);\n}\n\nfunction invalid(\n field: SsrCompositionInputError['detail']['field'],\n expected: string,\n): SsrCompositionResult {\n return err({\n code: 'ssr-composition-input-invalid',\n expected,\n hint: 'preserve linear HDR and the bounded SSR confidence before composing',\n detail: Object.freeze({ field }),\n });\n}\n\n/**\n * Apply the M0 reflection replacement contract without owning an SSR pass.\n *\n * `c=0` returns the base Standard specular lobe. `c=1` replaces only that\n * lobe with the same-source screen contribution, subtracting the committed\n * environment contribution once. Hi-Z traversal, history and graph wiring\n * remain owned by the parent SSR feature.\n */\nexport function composeSsrReflection(input: SsrCompositionInput): SsrCompositionResult {\n if (!Number.isFinite(input.c) || input.c < 0 || input.c > 1) {\n return invalid('c', 'a finite confidence in the inclusive range 0..1');\n }\n for (const [field, value] of [\n ['baseSpecular', input.baseSpecular],\n ['screenSpecular', input.screenSpecular],\n ['fallbackSpecular', input.fallbackSpecular],\n ] as const) {\n if (!finiteColor(value)) {\n return invalid(field, 'three finite linear HDR RGB channels');\n }\n }\n const c = input.c;\n return ok(\n Object.freeze([\n input.baseSpecular[0] + c * (input.screenSpecular[0] - input.fallbackSpecular[0]),\n input.baseSpecular[1] + c * (input.screenSpecular[1] - input.fallbackSpecular[1]),\n input.baseSpecular[2] + c * (input.screenSpecular[2] - input.fallbackSpecular[2]),\n ]) as SsrReflectionColor,\n );\n}\n","/** Pure CPU expectations for transmission math; this module has no GPU ownership. */\n\nexport type Color3 = readonly [number, number, number];\nexport type Uv2 = readonly [number, number];\n\nexport const DEFAULT_IOR = 1.5;\nexport const DEFAULT_GUARD_BAND = 0.02;\n\nexport interface TransmissionEnergy {\n readonly reflection: number;\n readonly transmission: number;\n readonly diffuse: number;\n readonly metallicResidual: number;\n}\n\nexport interface BackdropResolution {\n readonly source: 'refracted' | 'environment' | 'unrefracted';\n readonly color: Color3;\n}\n\nexport interface BackdropInputs {\n readonly uv: Uv2;\n readonly refracted?: Color3;\n readonly environment?: Color3;\n readonly unrefracted: Color3;\n readonly guardBand?: number;\n}\n\nconst clamp01 = (value: number): number => Math.min(Math.max(value, 0), 1);\n\nconst finiteOr = (value: number, fallback: number): number =>\n Number.isFinite(value) ? value : fallback;\n\nconst safeIor = (ior: number): number => {\n const candidate = finiteOr(ior, DEFAULT_IOR);\n return candidate >= 1 ? candidate : DEFAULT_IOR;\n};\n\n/** Returns dielectric F0 for air to a material with the supplied IOR. */\nexport function fresnelF0(ior: number): number {\n const ratio = (safeIor(ior) - 1) / (safeIor(ior) + 1);\n return ratio * ratio;\n}\n\n/**\n * Returns unpolarized dielectric reflectance. `eta` is incident IOR divided\n * by transmitted IOR, so values above one can produce total internal\n * reflection. This is a CPU oracle only; it does not sample a GPU resource.\n */\nexport function fresnelReflectance(cosTheta: number, eta: number): number {\n if (!Number.isFinite(cosTheta) || !Number.isFinite(eta) || eta <= 0) return 1;\n\n const cosIncident = clamp01(cosTheta);\n const sinTransmittedSquared = eta * eta * (1 - cosIncident * cosIncident);\n if (sinTransmittedSquared >= 1) return 1;\n\n const cosTransmitted = Math.sqrt(Math.max(0, 1 - sinTransmittedSquared));\n const perpendicularDenominator = cosIncident + eta * cosTransmitted;\n const parallelDenominator = eta * cosIncident + cosTransmitted;\n if (perpendicularDenominator === 0 || parallelDenominator === 0) return 1;\n\n const perpendicular = (cosIncident - eta * cosTransmitted) / perpendicularDenominator;\n const parallel = (eta * cosIncident - cosTransmitted) / parallelDenominator;\n return clamp01((perpendicular * perpendicular + parallel * parallel) / 2);\n}\n\nexport function splitTransmissionEnergy(input: {\n readonly transmission: number;\n readonly metallic: number;\n readonly cosTheta: number;\n readonly ior: number;\n}): TransmissionEnergy {\n const transmission = clamp01(finiteOr(input.transmission, 0));\n const metallic = clamp01(finiteOr(input.metallic, 0));\n const reflectance = fresnelReflectance(input.cosTheta, 1 / safeIor(input.ior));\n const nonMetal = 1 - metallic;\n const refracted = (1 - reflectance) * nonMetal;\n\n return {\n reflection: reflectance,\n transmission: refracted * transmission,\n diffuse: refracted * (1 - transmission),\n metallicResidual: (1 - reflectance) * metallic,\n };\n}\n\nexport function beerLambertAttenuation(\n color: Color3,\n thickness: number,\n distance?: number,\n): Color3 {\n if (\n !Number.isFinite(thickness) ||\n thickness <= 0 ||\n distance === undefined ||\n !Number.isFinite(distance) ||\n distance <= 0\n ) {\n return [1, 1, 1];\n }\n\n const exponent = thickness / distance;\n const attenuate = (component: number): number => {\n const safeComponent = clamp01(finiteOr(component, 0));\n return Math.min(Math.max(safeComponent ** exponent, 0), 1);\n };\n return [attenuate(color[0]), attenuate(color[1]), attenuate(color[2])];\n}\n\nexport function roughnessToLod(roughness: number, maxLod: number): number {\n const safeRoughness = clamp01(finiteOr(roughness, 0));\n const safeMaxLod = Math.max(finiteOr(maxLod, 0), 0);\n return safeRoughness * safeRoughness * safeMaxLod;\n}\n\nexport function isWithinGuardBand(uv: Uv2, guardBand = DEFAULT_GUARD_BAND): boolean {\n if (!uv.every(Number.isFinite) || !Number.isFinite(guardBand)) return false;\n const band = clamp01(guardBand);\n return uv.every((coordinate) => coordinate >= band && coordinate <= 1 - band);\n}\n\nexport function resolveRefractionBackdrop(input: BackdropInputs): BackdropResolution {\n if (\n isWithinGuardBand(input.uv, input.guardBand) &&\n input.refracted !== undefined &&\n isFiniteColor(input.refracted)\n ) {\n return { source: 'refracted', color: input.refracted };\n }\n if (input.environment !== undefined && isFiniteColor(input.environment)) {\n return { source: 'environment', color: input.environment };\n }\n if (isFiniteColor(input.unrefracted)) {\n return { source: 'unrefracted', color: input.unrefracted };\n }\n return { source: 'unrefracted', color: [0, 0, 0] };\n}\n\nexport function isFiniteColor(color: Color3): boolean {\n return color.length === 3 && color.every(Number.isFinite);\n}\n","import { type Color3, fresnelReflectance, type Uv2 } from './oracle.js';\n\nexport type MediumVector3 = readonly [number, number, number];\n\nexport interface SingleLayerMediumCoefficients {\n /** Linear, inverse-metre absorption coefficients. */\n readonly absorption: MediumVector3;\n /** Linear, inverse-metre scattering coefficients. */\n readonly scattering: MediumVector3;\n readonly ior: number;\n /** Henyey-Greenstein phase anisotropy in [-1, 1]. */\n readonly phaseG?: number;\n}\n\nexport interface SingleLayerMediumOptics {\n readonly sigmaT: MediumVector3;\n readonly transmittance: MediumVector3;\n /** Uniform-medium single-scatter integral sigmaS * (1 - T) / sigmaT. */\n readonly singleScatter: MediumVector3;\n readonly reflectance: number;\n readonly transmissionWeight: number;\n readonly phase: number;\n readonly distanceMeters: number;\n}\n\nexport type SingleLayerMediumBackgroundReason = 'front' | 'shore' | 'edge' | 'sky-miss';\n\nexport interface SingleLayerMediumBackgroundCandidate {\n readonly color: Color3;\n readonly depthMeters: number;\n readonly uv: Uv2;\n}\n\nexport interface SingleLayerMediumBackgroundInput {\n /** No-water color and raw depth must come from the same view identity. */\n readonly original: SingleLayerMediumBackgroundCandidate;\n /** Refracted candidate carries color and depth as one pair. */\n readonly refracted?: SingleLayerMediumBackgroundCandidate;\n readonly environment?: Color3;\n readonly surfaceDepthMeters: number;\n readonly maxDistanceMeters: number;\n readonly depthToleranceMeters?: number;\n}\n\nexport interface SingleLayerMediumBackgroundResolution {\n readonly source: 'refracted' | 'unrefracted' | 'environment';\n readonly reason?: SingleLayerMediumBackgroundReason;\n readonly candidate: SingleLayerMediumBackgroundCandidate | undefined;\n readonly color: Color3;\n readonly distanceMeters: number;\n}\n\nconst DEFAULT_MAX_DISTANCE_METERS = 1000;\nconst DEFAULT_DEPTH_TOLERANCE_METERS = 0.001;\nconst DEFAULT_IOR = 1.333;\n\nconst finiteOr = (value: number, fallback: number): number =>\n Number.isFinite(value) ? value : fallback;\n\nfunction oneMinusExpNeg(value: number): number {\n const x = Math.max(finiteOr(value, 0), 0);\n if (x < 1e-3) {\n const x2 = x * x;\n return x * (1 - x * 0.5 + x2 / 6 - (x * x2) / 24);\n }\n return -Math.expm1(-x);\n}\n\nfunction singleScatterIntegral(sigmaS: number, sigmaT: number, distance: number): number {\n const scattering = Math.max(finiteOr(sigmaS, 0), 0);\n const extinction = Math.max(finiteOr(sigmaT, 0), 0);\n const path = Math.max(finiteOr(distance, 0), 0);\n if (extinction === 0) return scattering * path;\n return (scattering * oneMinusExpNeg(extinction * path)) / extinction;\n}\n\nconst nonNegative = (value: number): number => Math.max(finiteOr(value, 0), 0);\n\nconst clamp01 = (value: number): number => Math.min(Math.max(finiteOr(value, 0), 0), 1);\n\n/** Test an endpoint against the undisturbed geometric water plane. */\nexport function isBelowSingleLayerMediumPlane(input: {\n readonly surfacePosition: MediumVector3;\n readonly geometricNormal: MediumVector3;\n readonly endpoint: MediumVector3;\n readonly epsilonMeters?: number;\n}): boolean {\n const [nx, ny, nz] = input.geometricNormal;\n const length = Math.hypot(nx, ny, nz);\n if (!Number.isFinite(length) || length <= 1e-8) return false;\n const signedDistance =\n ((input.endpoint[0] - input.surfacePosition[0]) * nx +\n (input.endpoint[1] - input.surfacePosition[1]) * ny +\n (input.endpoint[2] - input.surfacePosition[2]) * nz) /\n length;\n return Number.isFinite(signedDistance) && signedDistance <= (input.epsilonMeters ?? 0.001);\n}\n\nfunction vector3(input: MediumVector3 | undefined): MediumVector3 {\n return [nonNegative(input?.[0] ?? 0), nonNegative(input?.[1] ?? 0), nonNegative(input?.[2] ?? 0)];\n}\n\nfunction finiteColor(input: Color3 | undefined): input is Color3 {\n return input !== undefined && input.length === 3 && input.every(Number.isFinite);\n}\n\nfunction finiteUv(input: Uv2): boolean {\n return input.length === 2 && input.every(Number.isFinite);\n}\n\nfunction safeDistance(value: number, maxDistance: number): number {\n return Math.min(Math.max(finiteOr(value, 0), 0), maxDistance);\n}\n\n/**\n * Evaluate the stable analytic portion of the Engine's single-layer model.\n * Zero extinction uses the continuous limit and every returned component is\n * finite, even when an authored value is NaN or infinite.\n */\nexport function integrateSingleLayerMedium(input: {\n readonly coefficients: SingleLayerMediumCoefficients;\n readonly distanceMeters: number;\n readonly cosTheta: number;\n readonly phaseCosTheta?: number;\n /** Finite authored propagation bound; defaults to the conservative 1000 m bound. */\n readonly maxDistanceMeters?: number;\n}): SingleLayerMediumOptics {\n const absorption = vector3(input.coefficients.absorption);\n const scattering = vector3(input.coefficients.scattering);\n const sigmaT: MediumVector3 = [\n absorption[0] + scattering[0],\n absorption[1] + scattering[1],\n absorption[2] + scattering[2],\n ];\n const maxDistanceMeters = Math.min(\n Math.max(\n finiteOr(input.maxDistanceMeters ?? DEFAULT_MAX_DISTANCE_METERS, DEFAULT_MAX_DISTANCE_METERS),\n 0,\n ),\n 100000,\n );\n const distanceMeters = safeDistance(input.distanceMeters, maxDistanceMeters);\n const transmittance: MediumVector3 = [\n Number.isFinite(sigmaT[0]) && sigmaT[0] > 0 ? Math.exp(-sigmaT[0] * distanceMeters) : 1,\n Number.isFinite(sigmaT[1]) && sigmaT[1] > 0 ? Math.exp(-sigmaT[1] * distanceMeters) : 1,\n Number.isFinite(sigmaT[2]) && sigmaT[2] > 0 ? Math.exp(-sigmaT[2] * distanceMeters) : 1,\n ];\n const singleScatter: MediumVector3 = [\n singleScatterIntegral(scattering[0], sigmaT[0], distanceMeters),\n singleScatterIntegral(scattering[1], sigmaT[1], distanceMeters),\n singleScatterIntegral(scattering[2], sigmaT[2], distanceMeters),\n ];\n const iorCandidate = finiteOr(input.coefficients.ior, DEFAULT_IOR);\n const ior = iorCandidate >= 1 ? iorCandidate : DEFAULT_IOR;\n const reflectance = fresnelReflectance(input.cosTheta, 1 / ior);\n const transmissionWeight = 1 - reflectance;\n const phaseG = Math.min(Math.max(finiteOr(input.coefficients.phaseG ?? 0, 0), -1), 1);\n const phaseCosTheta = clamp01(input.phaseCosTheta ?? input.cosTheta);\n const phaseDenominator = Math.max(1 + phaseG * phaseG - 2 * phaseG * phaseCosTheta, 1e-6);\n const phase = (1 - phaseG * phaseG) / (4 * Math.PI * phaseDenominator ** 1.5);\n return {\n sigmaT,\n transmittance,\n singleScatter,\n reflectance,\n transmissionWeight,\n phase: finiteOr(phase, 1 / (4 * Math.PI)),\n distanceMeters,\n };\n}\n\n/** Compose linear HDR terms after exactly one Fresnel allocation. */\nexport function composeSingleLayerMediumColor(input: {\n readonly optics: SingleLayerMediumOptics;\n readonly background: Color3;\n readonly reflection: Color3;\n readonly foamColor?: Color3;\n readonly coverage?: number;\n readonly foam?: number;\n}): Color3 {\n const coverage = clamp01(input.coverage ?? 1);\n const foam = clamp01(input.foam ?? 0) * coverage;\n const foamColor = finiteColor(input.foamColor) ? input.foamColor : [1, 1, 1];\n const background = finiteColor(input.background) ? input.background : [0, 0, 0];\n const reflection = finiteColor(input.reflection) ? input.reflection : [0, 0, 0];\n const medium: MediumVector3 = [\n background[0] * input.optics.transmittance[0] + input.optics.singleScatter[0],\n background[1] * input.optics.transmittance[1] + input.optics.singleScatter[1],\n background[2] * input.optics.transmittance[2] + input.optics.singleScatter[2],\n ];\n const waterWeight = input.optics.transmissionWeight * coverage * (1 - foam);\n const reflectionWeight = input.optics.reflectance * coverage;\n const foamWeight = foam;\n return [\n finiteOr(\n reflection[0] * reflectionWeight + medium[0] * waterWeight + foamColor[0] * foamWeight,\n 0,\n ),\n finiteOr(\n reflection[1] * reflectionWeight + medium[1] * waterWeight + foamColor[1] * foamWeight,\n 0,\n ),\n finiteOr(\n reflection[2] * reflectionWeight + medium[2] * waterWeight + foamColor[2] * foamWeight,\n 0,\n ),\n ];\n}\n\nfunction validCandidate(\n candidate: SingleLayerMediumBackgroundCandidate | undefined,\n maxDistance: number,\n): candidate is SingleLayerMediumBackgroundCandidate {\n return (\n candidate !== undefined &&\n finiteColor(candidate.color) &&\n finiteUv(candidate.uv) &&\n Number.isFinite(candidate.depthMeters) &&\n candidate.depthMeters >= 0 &&\n candidate.depthMeters <= maxDistance\n );\n}\n\n/**\n * Resolve paired color/depth input with front, shore, edge, and sky-miss\n * reasons. Environment is a reflection/background fallback only; it is never\n * used as a riverbed transmission sample when a valid original pair exists.\n */\nexport function resolveSingleLayerMediumBackground(\n input: SingleLayerMediumBackgroundInput,\n): SingleLayerMediumBackgroundResolution {\n const maxDistance = Math.max(finiteOr(input.maxDistanceMeters, DEFAULT_MAX_DISTANCE_METERS), 0);\n const tolerance = Math.max(\n finiteOr(\n input.depthToleranceMeters ?? DEFAULT_DEPTH_TOLERANCE_METERS,\n DEFAULT_DEPTH_TOLERANCE_METERS,\n ),\n 0,\n );\n const surfaceDepth = finiteOr(input.surfaceDepthMeters, 0);\n if (\n validCandidate(input.refracted, maxDistance) &&\n input.refracted.uv.every((coordinate) => coordinate >= 0 && coordinate <= 1)\n ) {\n if (input.refracted.depthMeters + tolerance < surfaceDepth) {\n return {\n source: 'unrefracted',\n reason: 'front',\n candidate: validCandidate(input.original, maxDistance) ? input.original : undefined,\n color: validCandidate(input.original, maxDistance) ? input.original.color : [0, 0, 0],\n distanceMeters: validCandidate(input.original, maxDistance)\n ? Math.max(input.original.depthMeters - surfaceDepth, 0)\n : 0,\n };\n }\n return {\n source: 'refracted',\n candidate: input.refracted,\n color: input.refracted.color,\n distanceMeters: Math.max(input.refracted.depthMeters - surfaceDepth, 0),\n };\n }\n if (validCandidate(input.original, maxDistance)) {\n const reason: SingleLayerMediumBackgroundReason =\n input.refracted === undefined\n ? 'shore'\n : finiteUv(input.refracted.uv) &&\n input.refracted.uv.some((coordinate) => coordinate < 0 || coordinate > 1)\n ? 'edge'\n : 'shore';\n return {\n source: 'unrefracted',\n reason,\n candidate: input.original,\n color: input.original.color,\n distanceMeters: Math.max(input.original.depthMeters - surfaceDepth, 0),\n };\n }\n if (finiteColor(input.environment)) {\n return {\n source: 'environment',\n reason: 'sky-miss',\n candidate: undefined,\n color: input.environment,\n distanceMeters: maxDistance,\n };\n }\n return {\n source: 'environment',\n reason: 'sky-miss',\n candidate: undefined,\n color: [0, 0, 0],\n distanceMeters: maxDistance,\n };\n}\n\n/** Screen-space approximation of the Euclidean endpoint path, clamped to the declared maximum. */\nexport function estimateSingleLayerPathLength(input: {\n readonly surfacePosition: readonly [number, number, number];\n readonly backgroundPosition: readonly [number, number, number] | undefined;\n readonly maxDistanceMeters: number;\n}): { readonly distanceMeters: number; readonly valid: boolean } {\n const maxDistance = Math.max(finiteOr(input.maxDistanceMeters, DEFAULT_MAX_DISTANCE_METERS), 0);\n if (\n input.surfacePosition.length !== 3 ||\n input.backgroundPosition === undefined ||\n input.backgroundPosition.length !== 3 ||\n !input.surfacePosition.every(Number.isFinite) ||\n !input.backgroundPosition.every(Number.isFinite)\n ) {\n return { distanceMeters: maxDistance, valid: false };\n }\n const distance = Math.hypot(\n (input.backgroundPosition[0] ?? 0) - (input.surfacePosition[0] ?? 0),\n (input.backgroundPosition[1] ?? 0) - (input.surfacePosition[1] ?? 0),\n (input.backgroundPosition[2] ?? 0) - (input.surfacePosition[2] ?? 0),\n );\n return {\n distanceMeters: Math.min(Math.max(finiteOr(distance, maxDistance), 0), maxDistance),\n valid: Number.isFinite(distance),\n };\n}\n"]}
|
|
@@ -3,12 +3,14 @@
|
|
|
3
3
|
* implementation imports prevents the observation contract from reopening the
|
|
4
4
|
* extract/record dependency graph.
|
|
5
5
|
*/
|
|
6
|
+
import { type BarrelDistortionMapping } from './barrel-distortion';
|
|
6
7
|
import type { DirectionalShadowFilterLabel } from './components/directional-shadow-filter';
|
|
7
8
|
import type { GpuDrivenPreparationErrorCode, GpuDrivenPreparationErrorDetail } from './errors/gpu-driven';
|
|
8
9
|
import type { DepthOfFieldRequestFailure } from './features/depth-of-field/depth-of-field-params';
|
|
9
10
|
import type { PointsLinesInspection } from './points-lines/inspection';
|
|
10
11
|
import type { LodOcclusionInspection } from './scene/visibility/inspection';
|
|
11
12
|
import type { SsrAdmissionIdentity } from './ssr/identity';
|
|
13
|
+
import type { SurfaceGpuIndirectParameters } from './surface/submission-observation';
|
|
12
14
|
export type { LodOcclusionInspection, LodOcclusionInspectionRow, LodOcclusionWorldAttribution, LodOcclusionWorldInspection, } from './scene/visibility/inspection';
|
|
13
15
|
export interface LodOcclusionInspectionSummary extends LodOcclusionInspection {
|
|
14
16
|
readonly timing?: {
|
|
@@ -79,6 +81,30 @@ export interface BatchTopologyInspection {
|
|
|
79
81
|
readonly membershipAllocations?: number;
|
|
80
82
|
readonly candidateAdds?: number;
|
|
81
83
|
readonly candidateRemoves?: number;
|
|
84
|
+
/** Distinct resource classes represented by this topology. */
|
|
85
|
+
readonly resourceClassCount?: number;
|
|
86
|
+
/** Resource-class groups; range/page changes do not create a new class. */
|
|
87
|
+
readonly resourceClassSplits?: readonly {
|
|
88
|
+
readonly resourceIdentity: string;
|
|
89
|
+
readonly batchIds: readonly number[];
|
|
90
|
+
readonly candidateCount: number;
|
|
91
|
+
}[];
|
|
92
|
+
/** Reasons emitted only when more than one resource class is present. */
|
|
93
|
+
readonly resourceClassSplitReasons?: readonly string[];
|
|
94
|
+
}
|
|
95
|
+
/** Logical Engine allocation facts; physical VRAM residency is intentionally unknown. */
|
|
96
|
+
export interface GpuResourceAllocationInspection {
|
|
97
|
+
readonly unit: 'engine-allocation-bytes';
|
|
98
|
+
readonly physicalResidency: 'unknown';
|
|
99
|
+
readonly liveBytes: number;
|
|
100
|
+
readonly pendingRetirementBytes: number;
|
|
101
|
+
readonly peakBytes: number;
|
|
102
|
+
readonly successfulAllocationCount: number;
|
|
103
|
+
readonly successfulAllocationBytes: number;
|
|
104
|
+
readonly pendingRetirementCount: number;
|
|
105
|
+
readonly retiredBytes: number;
|
|
106
|
+
readonly failedAllocationRollbacks: number;
|
|
107
|
+
readonly failedAllocationRollbackBytes: number;
|
|
82
108
|
}
|
|
83
109
|
/**
|
|
84
110
|
* Detached evidence for the declarative feature host and typed graph. These
|
|
@@ -135,6 +161,31 @@ export interface RenderFeatureGraphInspection {
|
|
|
135
161
|
readonly preparedResourceKey: string | undefined;
|
|
136
162
|
};
|
|
137
163
|
}
|
|
164
|
+
/**
|
|
165
|
+
* Detached output-space barrel facts for the most recently accepted picture.
|
|
166
|
+
* The mapping, extent, and generation fields are one context; consumers must
|
|
167
|
+
* discard the whole projection when its device or frame is retired.
|
|
168
|
+
*/
|
|
169
|
+
export interface BarrelDistortionInspection {
|
|
170
|
+
readonly effectiveMapping: BarrelDistortionMapping | undefined;
|
|
171
|
+
readonly extent: {
|
|
172
|
+
readonly width: number;
|
|
173
|
+
readonly height: number;
|
|
174
|
+
} | undefined;
|
|
175
|
+
readonly frameId: number;
|
|
176
|
+
readonly deviceGeneration: number;
|
|
177
|
+
readonly graphGeneration: number;
|
|
178
|
+
readonly lastKnownGood: boolean;
|
|
179
|
+
}
|
|
180
|
+
export interface BarrelDistortionInspectionInput {
|
|
181
|
+
readonly effectiveMapping: BarrelDistortionMapping | undefined;
|
|
182
|
+
readonly frameId: number;
|
|
183
|
+
readonly deviceGeneration: number;
|
|
184
|
+
readonly graphGeneration: number;
|
|
185
|
+
readonly lastKnownGood: boolean;
|
|
186
|
+
}
|
|
187
|
+
/** Project one immutable, public barrel frame context. */
|
|
188
|
+
export declare function projectBarrelDistortionInspection(input: BarrelDistortionInspectionInput): BarrelDistortionInspection;
|
|
138
189
|
/** Detached material texture-source probe accounting for the last extract. */
|
|
139
190
|
export interface MaterialTextureSourceInspection {
|
|
140
191
|
readonly sourceFieldsVisited: number;
|
|
@@ -221,7 +272,7 @@ export interface GpuSceneInspection {
|
|
|
221
272
|
*/
|
|
222
273
|
export type GpuDrivenLane = 'gpu' | 'cpu-semantic' | 'cpu-deformation' | 'blocked';
|
|
223
274
|
/** Closed, machine-readable reasons for a lane decision or recovery state. */
|
|
224
|
-
export type GpuDrivenLaneReason = 'none' | 'capability' | 'unsupported' | 'resource-not-ready' | 'shadow-ownership' | 'capacity' | 'overflow' | 'stale-generation' | 'device-recovery' | 'skin-bounds-missing' | 'skin-address-missing';
|
|
275
|
+
export type GpuDrivenLaneReason = 'none' | 'reflection-fallback-mrt' | 'capability' | 'unsupported' | 'resource-not-ready' | 'shadow-ownership' | 'capacity' | 'overflow' | 'stale-generation' | 'device-recovery' | 'skin-bounds-missing' | 'skin-address-missing';
|
|
225
276
|
/**
|
|
226
277
|
* Detached producer failure facts carried by a blocked GPU lane. This keeps
|
|
227
278
|
* owner and recovery machine-readable at the same boundary as the lane
|
|
@@ -263,6 +314,25 @@ export interface GpuDrivenStructureMetrics {
|
|
|
263
314
|
readonly paletteUploadBytes: number;
|
|
264
315
|
}
|
|
265
316
|
export interface GpuDrivenProductionInspection {
|
|
317
|
+
/** Exact producer-selected Surface artifact prepared for the last candidate. */
|
|
318
|
+
readonly surfaceArtifact?: {
|
|
319
|
+
readonly material: string;
|
|
320
|
+
readonly specializationKey: string | undefined;
|
|
321
|
+
readonly variantSet: string | undefined;
|
|
322
|
+
readonly layoutIdentity: string;
|
|
323
|
+
readonly receiptIdentity: string;
|
|
324
|
+
readonly receiptGeneration: number;
|
|
325
|
+
readonly directEntry: string;
|
|
326
|
+
readonly sceneIndexEntry: string;
|
|
327
|
+
};
|
|
328
|
+
/** Lifetime count of Surface member-to-frame projections rebuilt after a topology change. */
|
|
329
|
+
readonly surfaceFrameRangeBuilds: number;
|
|
330
|
+
/** Lifetime count of admitted Surface members visited while rebuilding that projection. */
|
|
331
|
+
readonly surfaceFrameMemberScans: number;
|
|
332
|
+
/** Lifetime count of 48-byte Surface frame rows materialized for an actual GPU write. */
|
|
333
|
+
readonly surfaceFrameRowAllocations: number;
|
|
334
|
+
/** Lifetime count of writes to the one renderer-owned shared Surface frame-time value. */
|
|
335
|
+
readonly surfaceFrameTimeWrites: number;
|
|
266
336
|
/** Lifetime count of successful producer-side residency validation scans. */
|
|
267
337
|
readonly residencyValidationScans: number;
|
|
268
338
|
/** Lifetime count of validation rows reused without a CPU residency walk. */
|
|
@@ -317,6 +387,22 @@ export interface GpuDrivenProductionInspection {
|
|
|
317
387
|
readonly retryCount: number;
|
|
318
388
|
/** Generation of the last fully submitted GPU candidate, if any. */
|
|
319
389
|
readonly lastKnownGoodGeneration: number | undefined;
|
|
390
|
+
/** Aggregate logical allocation facts from available GPU-driven owners. */
|
|
391
|
+
readonly resourceAllocation?: GpuResourceAllocationInspection;
|
|
392
|
+
/** Per-owner facts; absent owners remain unavailable rather than zero-filled. */
|
|
393
|
+
readonly resourceAllocationOwners?: {
|
|
394
|
+
readonly gpuDrivenView?: GpuResourceAllocationInspection;
|
|
395
|
+
readonly materialRaster?: GpuResourceAllocationInspection;
|
|
396
|
+
readonly skinRaster?: GpuResourceAllocationInspection;
|
|
397
|
+
};
|
|
398
|
+
/** Resource-class split facts derived from batch.key.resourceIdentity. */
|
|
399
|
+
readonly resourceClassCount?: number;
|
|
400
|
+
readonly resourceClassSplitReasons?: readonly string[];
|
|
401
|
+
readonly resourceClassSplits?: readonly {
|
|
402
|
+
readonly resourceIdentity: string;
|
|
403
|
+
readonly batchIds: readonly number[];
|
|
404
|
+
readonly candidateCount: number;
|
|
405
|
+
}[];
|
|
320
406
|
}
|
|
321
407
|
export type DirectionalShadowEffectiveProfile = 'off' | DirectionalShadowFilterLabel | 'rhi-null-structural';
|
|
322
408
|
export type DirectionalShadowProfile = 'off' | DirectionalShadowFilterLabel;
|
|
@@ -575,6 +661,54 @@ export interface PersistentRenderSceneInspection {
|
|
|
575
661
|
};
|
|
576
662
|
/** Bounded retained authoring observations; no graph or backend handles. */
|
|
577
663
|
readonly pointsLines: readonly PointsLinesInspection[];
|
|
664
|
+
/** Last actually encoded Surface work, fenced by the renderer submission owner. */
|
|
665
|
+
readonly submission?: {
|
|
666
|
+
readonly sequence: number;
|
|
667
|
+
readonly frameId: number;
|
|
668
|
+
readonly requestedLane: 'direct' | 'gpu-driven';
|
|
669
|
+
readonly actualLane: 'direct' | 'gpu-driven';
|
|
670
|
+
/** Current-frame topology fact when a normal GPU lane was intentionally bypassed. */
|
|
671
|
+
readonly actualLaneReason?: GpuDrivenLaneReason;
|
|
672
|
+
readonly deviceGeneration: number;
|
|
673
|
+
readonly graphGeneration: number;
|
|
674
|
+
readonly viewIdentity: 'main:0';
|
|
675
|
+
readonly resourceGeneration: number | undefined;
|
|
676
|
+
readonly status: 'submitted' | 'completed';
|
|
677
|
+
readonly passes: readonly {
|
|
678
|
+
readonly pass: 'nearest-layer' | 'color';
|
|
679
|
+
/** Total commands actually encoded, including rows beyond the bounded sample. */
|
|
680
|
+
readonly commandCount: number;
|
|
681
|
+
readonly totalCommandCount: number;
|
|
682
|
+
readonly savedCommandCount: number;
|
|
683
|
+
readonly droppedCommandCount: number;
|
|
684
|
+
readonly truncated: boolean;
|
|
685
|
+
readonly memberEvidence: 'direct-command-members' | 'direct-command-members-truncated' | 'indirect-readback-required' | 'indirect-visible-readback' | 'indirect-visible-readback-truncated';
|
|
686
|
+
readonly memberIds?: readonly string[];
|
|
687
|
+
/** Decoded GPU command words bound to this submission/readback fence. */
|
|
688
|
+
readonly indirectParameters?: readonly SurfaceGpuIndirectParameters[];
|
|
689
|
+
readonly commands: readonly ({
|
|
690
|
+
readonly kind: 'draw' | 'draw-indexed';
|
|
691
|
+
readonly count: number;
|
|
692
|
+
readonly first: number;
|
|
693
|
+
readonly instanceCount: number;
|
|
694
|
+
readonly firstInstance: number;
|
|
695
|
+
readonly surfaceFrameBase: number;
|
|
696
|
+
readonly memberIds: readonly string[];
|
|
697
|
+
readonly pipelineIdentity: number;
|
|
698
|
+
readonly programEvidence: 'producer-receipt' | 'missing';
|
|
699
|
+
readonly receiptIdentity?: string;
|
|
700
|
+
readonly receiptGeneration?: number;
|
|
701
|
+
} | {
|
|
702
|
+
readonly kind: 'draw-indirect' | 'draw-indexed-indirect';
|
|
703
|
+
readonly indirectBufferIdentity: number;
|
|
704
|
+
readonly indirectOffset: number;
|
|
705
|
+
readonly pipelineIdentity: number;
|
|
706
|
+
readonly programEvidence: 'producer-receipt' | 'missing';
|
|
707
|
+
readonly receiptIdentity?: string;
|
|
708
|
+
readonly receiptGeneration?: number;
|
|
709
|
+
})[];
|
|
710
|
+
}[];
|
|
711
|
+
};
|
|
578
712
|
}
|
|
579
713
|
export type RenderSceneInspection = PersistentRenderSceneInspection & {
|
|
580
714
|
readonly gpuDriven: GpuDrivenProductionInspection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspection-types.d.ts","sourceRoot":"","sources":["../src/inspection-types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"inspection-types.d.ts","sourceRoot":"","sources":["../src/inspection-types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,uBAAuB,EAAiC,MAAM,qBAAqB,CAAC;AAClG,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AAC3F,OAAO,KAAK,EACV,6BAA6B,EAC7B,+BAA+B,EAChC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAC;AAClG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAErF,YAAY,EACV,sBAAsB,EACtB,yBAAyB,EACzB,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,+BAA+B,CAAC;AAEvC,MAAM,WAAW,6BAA8B,SAAQ,sBAAsB;IAC3E,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH;AAED;;;;GAIG;AACH,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,yBAAyB,EACzB,gBAAgB,EAChB,4BAA4B,EAC5B,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,YAAY,EACV,2BAA2B,EAC3B,oBAAoB,EACpB,2BAA2B,EAC3B,8BAA8B,GAC/B,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC;AAE7D,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,oBAAoB,GAAG,eAAe,CAWnF;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAEpF;AAED,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;AAE7D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,SAAS;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACzF,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,wFAAwF;IACxF,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,GAAG,UAAU,CAAC;CAC/C;AAED,eAAO,MAAM,oBAAoB,QAAO,eAiBtC,CAAC;AACH,YAAY,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAExE,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,oEAAoE;IACpE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,sDAAsD;IACtD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,8DAA8D;IAC9D,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,8DAA8D;IAC9D,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,2EAA2E;IAC3E,QAAQ,CAAC,mBAAmB,CAAC,EAAE,SAAS;QACtC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAClC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;QACrC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;KACjC,EAAE,CAAC;IACJ,yEAAyE;IACzE,QAAQ,CAAC,yBAAyB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACxD;AAED,yFAAyF;AACzF,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACzC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,6BAA6B,EAAE,MAAM,CAAC;CAChD;AAED;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,UAAU,EAAE,SAAS;QAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,8EAA8E;QAC9E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,4EAA4E;QAC5E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,EAAE,CAAC;IACJ,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;KAClC,CAAC;CACH;AAED,MAAM,WAAW,4BAA4B;IAC3C,4EAA4E;IAC5E,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;IAC1C,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;IAC1C,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;IAC1C,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;IAC1C,4EAA4E;IAC5E,QAAQ,CAAC,4BAA4B,EAAE,MAAM,CAAC;IAC9C,4EAA4E;IAC5E,QAAQ,CAAC,8BAA8B,EAAE,MAAM,CAAC;IAChD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,6BAA6B,EAAE,MAAM,CAAC;IAC/C,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;QACzC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;KAClD,CAAC;CACH;AAED;;;;GAIG;AACH,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,gBAAgB,EAAE,uBAAuB,GAAG,SAAS,CAAC;IAC/D,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IACjF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,gBAAgB,EAAE,uBAAuB,GAAG,SAAS,CAAC;IAC/D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC;AAED,0DAA0D;AAC1D,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,+BAA+B,GACrC,0BAA0B,CAgB5B;AAED,8EAA8E;AAC9E,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,SAAS;QAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;KACxB,EAAE,CAAC;IACJ,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7C;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvD,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7C;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,mBAAmB,GAAG,yBAAyB,GAAG,SAAS,CAAC;IAChF,QAAQ,CAAC,OAAO,EAAE,SAAS,0BAA0B,EAAE,CAAC;IACxD,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;QAC7C,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;QAC/C,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;QAC/C,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;QACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;QACzB,QAAQ,CAAC,cAAc,EAAE,+BAA+B,GAAG,SAAS,CAAC;KACtE,CAAC;CACH;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,KAAK,iBAAiB,GAAG,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,cAAc,GAAG,UAAU,CAAC;AAE9F,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,uBAAuB,CAAC,CAAC,CAAC;IAC9E,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,cAAc,GAAG,iBAAiB,GAAG,SAAS,CAAC;AAEnF,8EAA8E;AAC9E,MAAM,MAAM,mBAAmB,GAC3B,MAAM,GACN,yBAAyB,GACzB,YAAY,GACZ,aAAa,GACb,oBAAoB,GACpB,kBAAkB,GAClB,UAAU,GACV,UAAU,GACV,kBAAkB,GAClB,iBAAiB,GACjB,qBAAqB,GACrB,sBAAsB,CAAC;AAE3B;;;;GAIG;AACH,MAAM,WAAW,qCAAqC;IACpD,QAAQ,CAAC,IAAI,EAAE,6BAA6B,CAAC;IAC7C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,+BAA+B,CAAC;CAClD;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,oBAAoB,GAAG,cAAc,GAAG,aAAa,CAAC;IAClF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,yEAAyE;IACzE,QAAQ,CAAC,OAAO,CAAC,EAAE,qCAAqC,CAAC;CAC1D;AAED;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,6BAA6B;IAC5C,gFAAgF;IAChF,QAAQ,CAAC,eAAe,CAAC,EAAE;QACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;QAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;QACxC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;QACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;KAClC,CAAC;IACF,6FAA6F;IAC7F,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC,2FAA2F;IAC3F,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC,yFAAyF;IACzF,QAAQ,CAAC,0BAA0B,EAAE,MAAM,CAAC;IAC5C,0FAA0F;IAC1F,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,6EAA6E;IAC7E,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;IAC1C,6EAA6E;IAC7E,QAAQ,CAAC,4BAA4B,EAAE,MAAM,CAAC;IAC9C,2DAA2D;IAC3D,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,2DAA2D;IAC3D,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,6EAA6E;IAC7E,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,kEAAkE;IAClE,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,+DAA+D;IAC/D,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,6BAA6B,EAAE,MAAM,CAAC;IAC/C,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;IAC1C,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,+EAA+E;IAC/E,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,2DAA2D;IAC3D,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,mFAAmF;IACnF,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,uEAAuE;IACvE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,6EAA6E;IAC7E,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,uEAAuE;IACvE,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,kEAAkE;IAClE,QAAQ,CAAC,QAAQ,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACnD,6EAA6E;IAC7E,QAAQ,CAAC,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,0EAA0E;IAC1E,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,2DAA2D;IAC3D,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,4EAA4E;IAC5E,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,yDAAyD;IACzD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,oEAAoE;IACpE,QAAQ,CAAC,uBAAuB,EAAE,MAAM,GAAG,SAAS,CAAC;IACrD,2EAA2E;IAC3E,QAAQ,CAAC,kBAAkB,CAAC,EAAE,+BAA+B,CAAC;IAC9D,iFAAiF;IACjF,QAAQ,CAAC,wBAAwB,CAAC,EAAE;QAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,+BAA+B,CAAC;QACzD,QAAQ,CAAC,cAAc,CAAC,EAAE,+BAA+B,CAAC;QAC1D,QAAQ,CAAC,UAAU,CAAC,EAAE,+BAA+B,CAAC;KACvD,CAAC;IACF,0EAA0E;IAC1E,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,SAAS;QACtC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAClC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;QACrC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;KACjC,EAAE,CAAC;CACL;AAED,MAAM,MAAM,iCAAiC,GACzC,KAAK,GACL,4BAA4B,GAC5B,qBAAqB,CAAC;AAE1B,MAAM,MAAM,wBAAwB,GAAG,KAAK,GAAG,4BAA4B,CAAC;AAE5E,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,6EAA6E;AAC7E,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,SAAS,EAAE,wBAAwB,CAAC;IAC7C,QAAQ,CAAC,SAAS,EAAE,iCAAiC,CAAC;IACtD,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;IACtD,QAAQ,CAAC,cAAc,CAAC,EAAE,oBAAoB,GAAG,qBAAqB,GAAG,kBAAkB,CAAC;IAC5F,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,WAAW,GAAG,eAAe,CAAC;IACtD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,gCAAgC,CAAC;CACnD;AAED,MAAM,MAAM,kCAAkC,GAC1C;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAChF;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAElC,MAAM,MAAM,wBAAwB,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;AAExE,MAAM,MAAM,uBAAuB,GAAG,WAAW,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,aAAa,CAAC;AAEjG,0EAA0E;AAC1E,MAAM,WAAW,yBAAyB;IACxC,mEAAmE;IACnE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,6DAA6D;IAC7D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,+EAA+E;IAC/E,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,yEAAyE;IACzE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,wDAAwD;IACxD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,wBAAwB,CAAC;IAC1C,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAC;IACxC,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACpD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,CAAC,EAAE,oBAAoB,CAAC;CAC1C;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACnE,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9D,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,UAAU,CAAC;CACrC;AAED,MAAM,MAAM,8BAA8B,GACtC,SAAS,GACT,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,YAAY,CAAC;AAEjB,MAAM,MAAM,gCAAgC,GACxC,SAAS,GACT,cAAc,GACd,aAAa,GACb,WAAW,GACX,SAAS,GACT,OAAO,CAAC;AAEZ,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,OAAO,EAAE,yBAAyB,CAAC;IAC5C,QAAQ,CAAC,YAAY,CAAC,EAAE,8BAA8B,CAAC;IACvD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,cAAc,EAAE,gCAAgC,CAAC;CAC3D;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS;QAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,YAAY,CAAC;QACrD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAClC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;QACnC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAClC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;QAC1B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;QACrC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;QACpC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;KAC5C,EAAE,CAAC;IACJ,QAAQ,CAAC,SAAS,EAAE,kCAAkC,CAAC;IACvD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9C,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,kBAAkB,EAAE,yBAAyB,CAAC;IACvD,0EAA0E;IAC1E,QAAQ,CAAC,4BAA4B,EAAE,4BAA4B,CAAC;IACpE,gFAAgF;IAChF,QAAQ,CAAC,mBAAmB,CAAC,EAAE,SAAS,yBAAyB,EAAE,CAAC;IACpE,8EAA8E;IAC9E,QAAQ,CAAC,0BAA0B,CAAC,EAAE,iCAAiC,CAAC;CACzE;AAED,6EAA6E;AAC7E,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,CAAC;IAC7C,QAAQ,CAAC,UAAU,EAAE,+BAA+B,CAAC;IACrD,QAAQ,CAAC,MAAM,EAAE,kCAAkC,CAAC;IACpD,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE;QACnB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;QAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;QACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AAED,wFAAwF;AACxF,MAAM,MAAM,0BAA0B,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAC5F,MAAM,MAAM,wBAAwB,GAAG,SAAS,GAAG,gBAAgB,CAAC;AAEpE;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,0BAA0B,GAAG,aAAa,CAAC;IAC1D,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,cAAc,GAAG,aAAa,CAAC;IACpD,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACxD;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC;IACxC,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,uBAAuB,EAAE,uBAAuB,CAAC,CAAC;CAC9E;AAED,4EAA4E;AAC5E,MAAM,MAAM,4BAA4B,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,aAAa,CAAC;AAElG,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAC;IAC9C,QAAQ,CAAC,SAAS,EAAE;QAClB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,OAAO,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;QAC5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;KAC5C,CAAC;IACF,QAAQ,CAAC,SAAS,CAAC,EAAE,sBAAsB,CAAC,WAAW,CAAC,CAAC;IACzD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3E,QAAQ,CAAC,UAAU,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACzE,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,4BAA4B,CAAC;IACzD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,kFAAkF;IAClF,QAAQ,CAAC,KAAK,CAAC,EAAE,0BAA0B,CAAC;IAC5C,QAAQ,CAAC,cAAc,CAAC,EACpB,aAAa,GACb,0BAA0B,GAC1B,gBAAgB,GAChB,kBAAkB,GAClB,kBAAkB,GAClB,wBAAwB,GACxB,SAAS,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAC;IAC5C,6EAA6E;IAC7E,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAC;IACxC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,0EAA0E;IAC1E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,6DAA6D;IAC7D,QAAQ,CAAC,oBAAoB,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;IAC9C,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,wBAAwB,CAAC;IAC3D,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1B,kFAAkF;IAClF,QAAQ,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;IACnC,iFAAiF;IACjF,QAAQ,CAAC,SAAS,CAAC,EAAE,0BAA0B,CAAC;IAChD,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,iBAAiB,EAAE,mBAAmB,CAAC;IACrE,QAAQ,CAAC,WAAW,CAAC,EAAE,gBAAgB,GAAG,wBAAwB,GAAG,gBAAgB,CAAC;CACvF;AAED,MAAM,MAAM,uBAAuB,GAC/B,QAAQ,GACR,uBAAuB,GACvB,oBAAoB,GACpB,oBAAoB,GACpB,gBAAgB,GAChB,qBAAqB,CAAC;AAE1B,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,gBAAgB,EAAE,uBAAuB,GAAG,SAAS,CAAC;IAC/D,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,gEAAgE;IAChE,QAAQ,CAAC,mBAAmB,CAAC,EAAE;QAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;KAChC,CAAC;IACF,gFAAgF;IAChF,QAAQ,CAAC,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,CAAC;IAC3C,QAAQ,CAAC,GAAG,EACR;QAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;KAAE,GAC/B;QAAE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAA;KAAE,GACjF,CAAC;QAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;KAAE,GAAG,kBAAkB,CAAC,GACtD;QAAE,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAA;KAAE,GACtC;QAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;IACjC,4EAA4E;IAC5E,QAAQ,CAAC,WAAW,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACvD,mFAAmF;IACnF,QAAQ,CAAC,UAAU,CAAC,EAAE;QACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,aAAa,EAAE,QAAQ,GAAG,YAAY,CAAC;QAChD,QAAQ,CAAC,UAAU,EAAE,QAAQ,GAAG,YAAY,CAAC;QAC7C,qFAAqF;QACrF,QAAQ,CAAC,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;QAChD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC;QAChC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;QAChD,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAAC;QAC3C,QAAQ,CAAC,MAAM,EAAE,SAAS;YACxB,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC;YACzC,iFAAiF;YACjF,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;YAC9B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;YACnC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;YACnC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;YACrC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;YAC5B,QAAQ,CAAC,cAAc,EACnB,wBAAwB,GACxB,kCAAkC,GAClC,4BAA4B,GAC5B,2BAA2B,GAC3B,qCAAqC,CAAC;YAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;YACvC,yEAAyE;YACzE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,4BAA4B,EAAE,CAAC;YACtE,QAAQ,CAAC,QAAQ,EAAE,SAAS,CACxB;gBACE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAAC;gBACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBACvB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;gBAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;gBAC/B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;gBAClC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;gBACtC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;gBAClC,QAAQ,CAAC,eAAe,EAAE,kBAAkB,GAAG,SAAS,CAAC;gBACzD,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;gBAClC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;aACrC,GACD;gBACE,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,uBAAuB,CAAC;gBACzD,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;gBACxC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;gBAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;gBAClC,QAAQ,CAAC,eAAe,EAAE,kBAAkB,GAAG,SAAS,CAAC;gBACzD,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;gBAClC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;aACrC,CACJ,EAAE,CAAC;SACL,EAAE,CAAC;KACL,CAAC;CACH;AAED,MAAM,MAAM,qBAAqB,GAAG,+BAA+B,GAAG;IACpE,QAAQ,CAAC,SAAS,EAAE,6BAA6B,CAAC;CACnD,CAAC"}
|