@forgeax/engine-render 0.1.32 → 0.1.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1374 -142
- package/dist/assembly/analytic-fog-registration.d.ts +3 -0
- package/dist/assembly/analytic-fog-registration.d.ts.map +1 -0
- package/dist/assembly/backend-contract.d.ts +2 -0
- package/dist/assembly/backend-contract.d.ts.map +1 -1
- package/dist/assembly/barrel-distortion-inspection.d.ts +3 -0
- package/dist/assembly/barrel-distortion-inspection.d.ts.map +1 -0
- package/dist/assembly/canvas-draw-guard.d.ts +3 -0
- package/dist/assembly/canvas-draw-guard.d.ts.map +1 -0
- package/dist/assembly/cloud-shadow-entry.d.ts +4 -0
- package/dist/assembly/cloud-shadow-entry.d.ts.map +1 -0
- package/dist/assembly/dynamic-geometry-host.d.ts +4 -1
- package/dist/assembly/dynamic-geometry-host.d.ts.map +1 -1
- package/dist/assembly/dynamic-geometry-runtime.d.ts +1 -1
- package/dist/assembly/dynamic-geometry-runtime.d.ts.map +1 -1
- package/dist/assembly/factory.d.ts +1 -1
- package/dist/assembly/factory.d.ts.map +1 -1
- package/dist/assembly/fxaa-registration.d.ts +4 -0
- package/dist/assembly/fxaa-registration.d.ts.map +1 -0
- package/dist/assembly/host-contract.d.ts +3 -3
- package/dist/assembly/host-contract.d.ts.map +1 -1
- package/dist/assembly/lod-observation.d.ts +4 -0
- package/dist/assembly/lod-observation.d.ts.map +1 -0
- package/dist/assembly/material/assembly.d.ts.map +1 -1
- package/dist/assembly/material/pipeline-helpers.d.ts +5 -0
- package/dist/assembly/material/pipeline-helpers.d.ts.map +1 -1
- package/dist/assembly/material-shader-policy.d.ts +16 -2
- package/dist/assembly/material-shader-policy.d.ts.map +1 -1
- package/dist/assembly/material-shader-prewarm.d.ts.map +1 -1
- package/dist/assembly/motion-blur-registration.d.ts +3 -0
- package/dist/assembly/motion-blur-registration.d.ts.map +1 -0
- package/dist/assembly/recovery/device-loss-fanout.d.ts.map +1 -1
- package/dist/assembly/recovery/renderer-recover.d.ts +2 -0
- package/dist/assembly/recovery/renderer-recover.d.ts.map +1 -1
- package/dist/assembly/render-feature-post-processes.d.ts +6 -0
- package/dist/assembly/render-feature-post-processes.d.ts.map +1 -0
- package/dist/assembly/renderer-facade.d.ts.map +1 -1
- package/dist/assembly/renderer-feature-inspection.d.ts +1 -1
- package/dist/assembly/renderer-feature-inspection.d.ts.map +1 -1
- package/dist/assembly/renderer-frame-transaction.d.ts +12 -0
- package/dist/assembly/renderer-frame-transaction.d.ts.map +1 -1
- package/dist/assembly/renderer-inspection.d.ts +11 -0
- package/dist/assembly/renderer-inspection.d.ts.map +1 -1
- package/dist/assembly/temporal-post-process-prewarm.d.ts +13 -0
- package/dist/assembly/temporal-post-process-prewarm.d.ts.map +1 -0
- package/dist/assembly/webgpu-pbr-ready.d.ts +1 -0
- package/dist/assembly/webgpu-pbr-ready.d.ts.map +1 -1
- package/dist/assembly/webgpu-ready-contract.d.ts +4 -3
- package/dist/assembly/webgpu-ready-contract.d.ts.map +1 -1
- package/dist/assembly/webgpu-ready-per-pass.d.ts +39 -0
- package/dist/assembly/webgpu-ready-per-pass.d.ts.map +1 -0
- package/dist/assembly/webgpu-ready.d.ts +2 -2
- package/dist/assembly/webgpu-ready.d.ts.map +1 -1
- package/dist/assembly/webgpu-renderer-bootstrap.d.ts.map +1 -1
- package/dist/assembly/webgpu-renderer-observation-owner.d.ts +35 -0
- package/dist/assembly/webgpu-renderer-observation-owner.d.ts.map +1 -0
- package/dist/assembly/webgpu-renderer.d.ts +1 -1
- package/dist/assembly/webgpu-renderer.d.ts.map +1 -1
- package/dist/authoring.mjs +1 -1
- package/dist/barrel-distortion.d.ts +47 -0
- package/dist/barrel-distortion.d.ts.map +1 -0
- package/dist/bloom-admission.d.ts +13 -0
- package/dist/bloom-admission.d.ts.map +1 -0
- package/dist/{chunk-PA5DRJNI.mjs → chunk-ELJFJ2BU.mjs} +2 -2
- package/dist/chunk-ELJFJ2BU.mjs.map +1 -0
- package/dist/{chunk-JCIRYQ4V.mjs → chunk-HEB564WF.mjs} +10 -4
- package/dist/chunk-HEB564WF.mjs.map +1 -0
- package/dist/{chunk-JRIPCMYC.mjs → chunk-MKDIT2EM.mjs} +1584 -375
- package/dist/chunk-MKDIT2EM.mjs.map +1 -0
- package/dist/{chunk-S665NJNF.mjs → chunk-OCDLEI6I.mjs} +3 -3
- package/dist/{chunk-S665NJNF.mjs.map → chunk-OCDLEI6I.mjs.map} +1 -1
- package/dist/chunk-ODZWR6JQ.mjs +4927 -0
- package/dist/chunk-ODZWR6JQ.mjs.map +1 -0
- package/dist/{chunk-DRR7D3KX.mjs → chunk-SHFUFJ5N.mjs} +192 -18
- package/dist/chunk-SHFUFJ5N.mjs.map +1 -0
- package/dist/{chunk-4NNZQCL3.mjs → chunk-UI5SFODX.mjs} +223 -277
- package/dist/chunk-UI5SFODX.mjs.map +1 -0
- package/dist/{chunk-GWCEMDVR.mjs → chunk-UINHLCZA.mjs} +787 -80
- package/dist/chunk-UINHLCZA.mjs.map +1 -0
- package/dist/{chunk-6TFBXLRJ.mjs → chunk-WEX45HKH.mjs} +222 -337
- package/dist/chunk-WEX45HKH.mjs.map +1 -0
- package/dist/cloud/density.d.ts +55 -0
- package/dist/cloud/density.d.ts.map +1 -0
- package/dist/cloud/extract.d.ts +25 -0
- package/dist/cloud/extract.d.ts.map +1 -0
- package/dist/cloud/feature.d.ts +57 -0
- package/dist/cloud/feature.d.ts.map +1 -0
- package/dist/cloud/frame-context.d.ts +8 -0
- package/dist/cloud/frame-context.d.ts.map +1 -0
- package/dist/cloud/inspection.d.ts +59 -0
- package/dist/cloud/inspection.d.ts.map +1 -0
- package/dist/cloud/optics.d.ts +56 -0
- package/dist/cloud/optics.d.ts.map +1 -0
- package/dist/cloud/parameters.d.ts +73 -0
- package/dist/cloud/parameters.d.ts.map +1 -0
- package/dist/cloud/resources.d.ts +60 -0
- package/dist/cloud/resources.d.ts.map +1 -0
- package/dist/cloud/shadow.d.ts +42 -0
- package/dist/cloud/shadow.d.ts.map +1 -0
- package/dist/cloud/temporal.d.ts +74 -0
- package/dist/cloud/temporal.d.ts.map +1 -0
- package/dist/components/atmosphere.d.ts +2 -0
- package/dist/components/atmosphere.d.ts.map +1 -1
- package/dist/components/barrel-distortion.d.ts +13 -0
- package/dist/components/barrel-distortion.d.ts.map +1 -0
- package/dist/components/camera.d.ts +20 -4
- package/dist/components/camera.d.ts.map +1 -1
- package/dist/components/cloud-layer.d.ts +29 -0
- package/dist/components/cloud-layer.d.ts.map +1 -0
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/instances.d.ts +20 -6
- package/dist/components/instances.d.ts.map +1 -1
- package/dist/components/mesh-filter.d.ts +6 -5
- package/dist/components/mesh-filter.d.ts.map +1 -1
- package/dist/components/motion-blur.d.ts +1 -0
- package/dist/components/motion-blur.d.ts.map +1 -1
- package/dist/construct-renderer.d.ts +1 -1
- package/dist/construct-renderer.d.ts.map +1 -1
- package/dist/construct-renderer.mjs +9751 -3528
- package/dist/construct-renderer.mjs.map +1 -1
- package/dist/device/gpu-residency.d.ts +6 -0
- package/dist/device/gpu-residency.d.ts.map +1 -1
- package/dist/dynamic-geometry.d.ts +5 -1
- package/dist/dynamic-geometry.d.ts.map +1 -1
- package/dist/environment/analytic-fog.d.ts +6 -0
- package/dist/environment/analytic-fog.d.ts.map +1 -0
- package/dist/errors/cloud.d.ts +59 -0
- package/dist/errors/cloud.d.ts.map +1 -0
- package/dist/errors/render.d.ts +23 -5
- package/dist/errors/render.d.ts.map +1 -1
- package/dist/examples/single-layer-medium-surface.d.ts +47 -0
- package/dist/examples/single-layer-medium-surface.d.ts.map +1 -0
- package/dist/extract/camera.d.ts.map +1 -1
- package/dist/extract/contracts.d.ts +12 -1
- package/dist/extract/contracts.d.ts.map +1 -1
- package/dist/extract/environment.d.ts +2 -0
- package/dist/extract/environment.d.ts.map +1 -1
- package/dist/features/barrel-distortion.d.ts +29 -0
- package/dist/features/barrel-distortion.d.ts.map +1 -0
- package/dist/features/error-reporting.d.ts +17 -0
- package/dist/features/error-reporting.d.ts.map +1 -0
- package/dist/features/host.d.ts +15 -0
- package/dist/features/host.d.ts.map +1 -1
- package/dist/features/motion-blur/motion-blur-feature.d.ts +20 -2
- package/dist/features/motion-blur/motion-blur-feature.d.ts.map +1 -1
- package/dist/features/motion-blur/motion-blur-params.d.ts +21 -0
- package/dist/features/motion-blur/motion-blur-params.d.ts.map +1 -1
- package/dist/features/motion-blur/motion-blur-runtime.d.ts +54 -0
- package/dist/features/motion-blur/motion-blur-runtime.d.ts.map +1 -0
- package/dist/features/plan.d.ts +15 -4
- package/dist/features/plan.d.ts.map +1 -1
- package/dist/features/prepared-gpu-work.d.ts +9 -5
- package/dist/features/prepared-gpu-work.d.ts.map +1 -1
- package/dist/features/render-graph-compute.d.ts.map +1 -1
- package/dist/features/render-graph-contribution.d.ts +5 -0
- package/dist/features/render-graph-contribution.d.ts.map +1 -1
- package/dist/features/render-graph-raster.d.ts +1 -0
- package/dist/features/render-graph-raster.d.ts.map +1 -1
- package/dist/features/targets.d.ts +2 -0
- package/dist/features/targets.d.ts.map +1 -1
- package/dist/features/types.d.ts +44 -0
- package/dist/features/types.d.ts.map +1 -1
- package/dist/fullscreen-post-process-pass.d.ts +15 -7
- package/dist/fullscreen-post-process-pass.d.ts.map +1 -1
- package/dist/gpu-dirty-ranges.d.ts +11 -0
- package/dist/gpu-dirty-ranges.d.ts.map +1 -0
- package/dist/gpu-driven/batch-topology.d.ts +17 -0
- package/dist/gpu-driven/batch-topology.d.ts.map +1 -1
- package/dist/gpu-driven/material-artifacts.d.ts +6 -0
- package/dist/gpu-driven/material-artifacts.d.ts.map +1 -1
- package/dist/gpu-driven/prepared-draw.d.ts +7 -0
- package/dist/gpu-driven/prepared-draw.d.ts.map +1 -1
- package/dist/gpu-driven/production-raster-material.d.ts +178 -0
- package/dist/gpu-driven/production-raster-material.d.ts.map +1 -0
- package/dist/gpu-driven/production-raster.d.ts +50 -4
- package/dist/gpu-driven/production-raster.d.ts.map +1 -1
- package/dist/gpu-driven/resource-allocation.d.ts +31 -0
- package/dist/gpu-driven/resource-allocation.d.ts.map +1 -0
- package/dist/gpu-driven/shadow-ownership.d.ts +14 -0
- package/dist/gpu-driven/shadow-ownership.d.ts.map +1 -0
- package/dist/gpu-driven/view-gpu.d.ts +35 -2
- package/dist/gpu-driven/view-gpu.d.ts.map +1 -1
- package/dist/gpu-scene.d.ts +11 -1
- package/dist/gpu-scene.d.ts.map +1 -1
- package/dist/hdrp-buffers.d.ts +2 -2
- package/dist/hdrp-buffers.d.ts.map +1 -1
- package/dist/ibl/skylight-bind-group.d.ts +10 -1
- package/dist/ibl/skylight-bind-group.d.ts.map +1 -1
- package/dist/index.d.ts +31 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +258 -8
- package/dist/index.mjs.map +1 -1
- package/dist/inspection-types.d.ts +178 -3
- package/dist/inspection-types.d.ts.map +1 -1
- package/dist/instance-buffer-cache.d.ts +4 -4
- package/dist/instance-buffer-cache.d.ts.map +1 -1
- package/dist/instances.d.ts +49 -94
- package/dist/instances.d.ts.map +1 -1
- package/dist/internal.mjs +7 -7
- package/dist/pbr-pipeline.d.ts +19 -1
- package/dist/pbr-pipeline.d.ts.map +1 -1
- package/dist/pipeline/single-layer-medium-passes.d.ts +73 -0
- package/dist/pipeline/single-layer-medium-passes.d.ts.map +1 -0
- package/dist/pipeline/standard-forward-lane.d.ts.map +1 -1
- package/dist/pipeline/standard-output/graph.d.ts.map +1 -1
- package/dist/pipeline/standard-output/types.d.ts +4 -2
- package/dist/pipeline/standard-output/types.d.ts.map +1 -1
- package/dist/pipeline/standard-pipeline.d.ts.map +1 -1
- package/dist/pipeline/standard-post.d.ts +28 -19
- package/dist/pipeline/standard-post.d.ts.map +1 -1
- package/dist/pipeline-builder.d.ts +1 -1
- package/dist/pipeline-builder.d.ts.map +1 -1
- package/dist/pipeline-spec.d.ts +2 -2
- package/dist/plugin.d.ts.map +1 -1
- package/dist/prepare/prepared-graphics-resolver.d.ts +2 -0
- package/dist/prepare/prepared-graphics-resolver.d.ts.map +1 -1
- package/dist/record/barrel-distortion-frame.d.ts +15 -0
- package/dist/record/barrel-distortion-frame.d.ts.map +1 -0
- package/dist/record/dynamic-geometry-consumption.d.ts +10 -2
- package/dist/record/dynamic-geometry-consumption.d.ts.map +1 -1
- package/dist/record/fold-buckets.d.ts +95 -0
- package/dist/record/fold-buckets.d.ts.map +1 -0
- package/dist/record/fold-instance-buffer.d.ts +6 -0
- package/dist/record/fold-instance-buffer.d.ts.map +1 -0
- package/dist/record/frame-lighting.d.ts +1 -0
- package/dist/record/frame-lighting.d.ts.map +1 -1
- package/dist/record/frame-snapshot.d.ts +40 -3
- package/dist/record/frame-snapshot.d.ts.map +1 -1
- package/dist/record/frame-targets.d.ts.map +1 -1
- package/dist/record/frame.d.ts +14 -62
- package/dist/record/frame.d.ts.map +1 -1
- package/dist/record/gpu-draw-receipts.d.ts +11 -0
- package/dist/record/gpu-draw-receipts.d.ts.map +1 -0
- package/dist/record/gpu-timing.d.ts +8 -0
- package/dist/record/gpu-timing.d.ts.map +1 -1
- package/dist/record/main-pass-geometry.d.ts +21 -5
- package/dist/record/main-pass-geometry.d.ts.map +1 -1
- package/dist/record/main-pass-material.d.ts +7 -1
- package/dist/record/main-pass-material.d.ts.map +1 -1
- package/dist/record/main-pass-sprite-draws.d.ts.map +1 -1
- package/dist/record/main-pass.d.ts +13 -2
- package/dist/record/main-pass.d.ts.map +1 -1
- package/dist/record/mesh-ssbo.d.ts +6 -5
- package/dist/record/mesh-ssbo.d.ts.map +1 -1
- package/dist/record/motion-blur-receipt.d.ts +11 -0
- package/dist/record/motion-blur-receipt.d.ts.map +1 -0
- package/dist/record/probe-blend-buffer.d.ts +16 -0
- package/dist/record/probe-blend-buffer.d.ts.map +1 -0
- package/dist/record/recovery-pipeline.d.ts.map +1 -1
- package/dist/record/render-context.d.ts +34 -31
- package/dist/record/render-context.d.ts.map +1 -1
- package/dist/record/shadow-pass.d.ts +2 -0
- package/dist/record/shadow-pass.d.ts.map +1 -1
- package/dist/record/skybox-post-pass.d.ts +6 -4
- package/dist/record/skybox-post-pass.d.ts.map +1 -1
- package/dist/record/typed-frame-graph.d.ts +22 -2
- package/dist/record/typed-frame-graph.d.ts.map +1 -1
- package/dist/record/view-ubo.d.ts +11 -3
- package/dist/record/view-ubo.d.ts.map +1 -1
- package/dist/record/volume-params.d.ts +9 -0
- package/dist/record/volume-params.d.ts.map +1 -0
- package/dist/recovery/render-system-candidate.d.ts +10 -0
- package/dist/recovery/render-system-candidate.d.ts.map +1 -1
- package/dist/reflection/record-owner.d.ts.map +1 -1
- package/dist/render-contract.d.ts +66 -8
- package/dist/render-contract.d.ts.map +1 -1
- package/dist/render-graph-primitives.d.ts.map +1 -1
- package/dist/render-pipeline.d.ts +106 -3
- package/dist/render-pipeline.d.ts.map +1 -1
- package/dist/render-system-extract-tail.d.ts +3 -2
- package/dist/render-system-extract-tail.d.ts.map +1 -1
- package/dist/render-system-extract.d.ts +24 -10
- package/dist/render-system-extract.d.ts.map +1 -1
- package/dist/render-system-presentation.d.ts +23 -0
- package/dist/render-system-presentation.d.ts.map +1 -0
- package/dist/render-system-producer-roots.d.ts +10 -0
- package/dist/render-system-producer-roots.d.ts.map +1 -0
- package/dist/render-system-residency.d.ts +12 -0
- package/dist/render-system-residency.d.ts.map +1 -0
- package/dist/render-system.d.ts +26 -15
- package/dist/render-system.d.ts.map +1 -1
- package/dist/scene/probe-blend.d.ts +27 -0
- package/dist/scene/probe-blend.d.ts.map +1 -1
- package/dist/scene/render-scene.d.ts +14 -5
- package/dist/scene/render-scene.d.ts.map +1 -1
- package/dist/ssao-buffers.d.ts +9 -0
- package/dist/ssao-buffers.d.ts.map +1 -1
- package/dist/surface/dynamic-input.d.ts +133 -0
- package/dist/surface/dynamic-input.d.ts.map +1 -0
- package/dist/surface/gpu-driven.d.ts +41 -0
- package/dist/surface/gpu-driven.d.ts.map +1 -0
- package/dist/surface/submission-observation.d.ts +136 -0
- package/dist/surface/submission-observation.d.ts.map +1 -0
- package/dist/systems/skin-palette-allocator.d.ts.map +1 -1
- package/dist/temporal/frame-coordinator.d.ts.map +1 -1
- package/dist/temporal/frame.d.ts +7 -0
- package/dist/temporal/frame.d.ts.map +1 -1
- package/dist/temporal/gpu.d.ts +13 -1
- package/dist/temporal/gpu.d.ts.map +1 -1
- package/dist/temporal/index.mjs +5 -5
- package/dist/temporal/inspection.d.ts.map +1 -1
- package/dist/temporal/standard-scene-data.d.ts.map +1 -1
- package/dist/temporal/target-coverage-attachment.d.ts.map +1 -1
- package/dist/temporal/view.d.ts +6 -1
- package/dist/temporal/view.d.ts.map +1 -1
- package/dist/transmission/single-layer-medium.d.ts +89 -0
- package/dist/transmission/single-layer-medium.d.ts.map +1 -0
- package/dist/typed-render-graph-primitives.d.ts +24 -9
- package/dist/typed-render-graph-primitives.d.ts.map +1 -1
- package/dist/volume/component.d.ts +9 -5
- package/dist/volume/component.d.ts.map +1 -1
- package/dist/volume/extract.d.ts +1 -1
- package/dist/volume/extract.d.ts.map +1 -1
- package/dist/volume/inspection.d.ts +2 -0
- package/dist/volume/inspection.d.ts.map +1 -1
- package/dist/volume/passes.d.ts +4 -1
- package/dist/volume/passes.d.ts.map +1 -1
- package/dist/volume/resources.d.ts.map +1 -1
- package/dist/volume/temporal.d.ts +3 -1
- package/dist/volume/temporal.d.ts.map +1 -1
- package/package.json +22 -21
- package/src/__tests__/analytic-fog-graph.unit.test.ts +199 -0
- package/src/__tests__/analytic-fog-optics.unit.test.ts +38 -0
- package/src/__tests__/atmosphere-daylight.dawn.test.ts +72 -0
- package/src/__tests__/barrel-distortion-lkg.integration.test.ts +353 -0
- package/src/__tests__/barrel-distortion.dawn.test.ts +41 -0
- package/src/__tests__/barrel-distortion.unit.test.ts +364 -0
- package/src/__tests__/bloom-exact-zero.unit.test.ts +112 -18
- package/src/__tests__/bloom-lifecycle.integration.test.ts +17 -4
- package/src/__tests__/construct-renderer-identity.unit.test.ts +49 -0
- package/src/__tests__/detached-recovery-graph.unit.test.ts +277 -0
- package/src/__tests__/device-loss-fanout.unit.test.ts +36 -1
- package/src/__tests__/docs-gate-green.unit.test.ts +112 -1
- package/src/__tests__/dynamic-resolution-plugin.integration.test.ts +20 -0
- package/src/__tests__/environment-fog-lanes.integration.test.ts +14 -0
- package/src/__tests__/environment-selection.unit.test.ts +12 -0
- package/src/__tests__/factory-contract.integration.test.ts +626 -113
- package/src/__tests__/feature-depth-input.dawn.test.ts +129 -2
- package/src/__tests__/frame-camera-selection.unit.test.ts +39 -1
- package/src/__tests__/frame-plan-contract.unit.test.ts +2 -0
- package/src/__tests__/fullscreen-feature-plan.unit.test.ts +14 -3
- package/src/__tests__/gpu-dirty-ranges.unit.test.ts +22 -0
- package/src/__tests__/gpu-driven-baseline.characterization.test.ts +16 -3
- package/src/__tests__/gpu-driven-batch-topology-pbr.unit.test.ts +12 -0
- package/src/__tests__/gpu-driven-indirect-raster-evidence.ts +2 -1
- package/src/__tests__/gpu-driven-material-artifacts.unit.test.ts +143 -0
- package/src/__tests__/gpu-driven-pbr.dawn.test.ts +2 -2
- package/src/__tests__/gpu-driven-production.integration.test.ts +482 -3
- package/src/__tests__/gpu-driven-shadow-views.dawn.test.ts +7 -6
- package/src/__tests__/gpu-driven-shadow-views.integration.test.ts +1 -1
- package/src/__tests__/gpu-driven-view-gpu-evidence.ts +103 -4
- package/src/__tests__/gpu-driven-view-graph.integration.test.ts +18 -2
- package/src/__tests__/gpu-driven-view.browser.test.ts +5 -8
- package/src/__tests__/gpu-driven-view.dawn.test.ts +6 -2
- package/src/__tests__/gpu-driven-view.unit.test.ts +1 -1
- package/src/__tests__/gpu-pass-timing-lifecycle.integration.test.ts +1 -0
- package/src/__tests__/gpu-pass-timing.browser.test.ts +6 -4
- package/src/__tests__/gpu-pass-timing.rhi-null.unit.test.ts +1 -0
- package/src/__tests__/gpu-resource-store-stride.unit.test.ts +12 -0
- package/src/__tests__/gpu-scene.unit.test.ts +210 -9
- package/src/__tests__/instance-allocation-failure.unit.test.ts +57 -0
- package/src/__tests__/instances-culling.integration.test.ts +10 -36
- package/src/__tests__/instances-store.unit.test.ts +105 -238
- package/src/__tests__/instances-world-ownership.integration.test.ts +62 -0
- package/src/__tests__/main-pass-material-medium-selection.unit.test.ts +146 -0
- package/src/__tests__/material-shader-prewarm.unit.test.ts +59 -0
- package/src/__tests__/material-snapshot-mutation.integration.test.ts +39 -1
- package/src/__tests__/mesh-submission-lifetime.unit.test.ts +31 -0
- package/src/__tests__/morph-culling-reentry.dawn.test.ts +5 -5
- package/src/__tests__/morph-visual-evidence.integration.test.ts +8 -7
- package/src/__tests__/motion-blur-compute.dawn.test.ts +589 -0
- package/src/__tests__/motion-blur.pixel.integration.test.ts +2 -2
- package/src/__tests__/nineslice-handle-surface.unit.test.ts +4 -4
- package/src/__tests__/pbr-view-layout.unit.test.ts +9 -0
- package/src/__tests__/physical-clearcoat.integration.test.ts +58 -0
- package/src/__tests__/prepared-gpu-driven-pbr.integration.test.ts +21 -0
- package/src/__tests__/prepared-graphics-capability.unit.test.ts +66 -2
- package/src/__tests__/prepared-graphics-lifecycle.unit.test.ts +86 -0
- package/src/__tests__/probe-bindings.unit.test.ts +582 -1
- package/src/__tests__/probe-scene-dirty.integration.test.ts +28 -1
- package/src/__tests__/public-surface.test-d.ts +8 -0
- package/src/__tests__/receipt-observation-retirement.unit.test.ts +65 -0
- package/src/__tests__/recovery-candidate-prepare.contract.test.ts +69 -0
- package/src/__tests__/render-error-code-owner.test-d.ts +9 -0
- package/src/__tests__/render-feature-diagnostics.unit.test.ts +15 -2
- package/src/__tests__/render-feature-error-reporting.unit.test.ts +44 -0
- package/src/__tests__/render-feature-prepared-diagnostics.unit.test.ts +10 -1
- package/src/__tests__/render-feature-retry.unit.test.ts +12 -1
- package/src/__tests__/render-feature-stage-fault-recovery.unit.test.ts +23 -0
- package/src/__tests__/render-scene-mixed-updates.integration.test.ts +145 -19
- package/src/__tests__/render-scene-projection.unit.test.ts +36 -11
- package/src/__tests__/render-scene-temporal-retry.unit.test.ts +37 -6
- package/src/__tests__/render-target-probe-soak.perf.test.ts +2 -2
- package/src/__tests__/render-temporal-environment-consumer.browser.test.ts +3 -3
- package/src/__tests__/render-temporal-environment-consumer.dawn.test.ts +5 -2
- package/src/__tests__/renderer-factory-material-contract.unit.test.ts +41 -7
- package/src/__tests__/renderer-frame-generation-fence.integration.test.ts +16 -0
- package/src/__tests__/renderer-frame-transaction.integration.test.ts +33 -11
- package/src/__tests__/resource-allocation.unit.test.ts +123 -0
- package/src/__tests__/shader-manifest-fixture.ts +4 -4
- package/src/__tests__/single-layer-medium-passes.unit.test.ts +275 -0
- package/src/__tests__/skin-motion-regression.unit.test.ts +70 -1
- package/src/__tests__/skin-palette-recycling.dawn.test.ts +97 -0
- package/src/__tests__/skinned-shadow-caster.test.ts +17 -0
- package/src/__tests__/ssr-carrier-public-contract.unit.test.ts +21 -0
- package/src/__tests__/ssr-gpu-dispatch.browser.test.ts +4 -4
- package/src/__tests__/ssr-gpu-dispatch.dawn.test.ts +2 -2
- package/src/__tests__/ssr-gpu-dispatch.ts +1 -1
- package/src/__tests__/ssr-receiver-coverage.dawn.test.ts +6 -2
- package/src/__tests__/standard-lighting-write.unit.test.ts +2 -1
- package/src/__tests__/standard-output-chain-contract.unit.test.ts +28 -0
- package/src/__tests__/standard-pbr-artifact-assembly.unit.test.ts +46 -1
- package/src/__tests__/standard-pipeline.dawn.test.ts +1 -1
- package/src/__tests__/standard-pipeline.integration.test.ts +200 -9
- package/src/__tests__/surface-dynamic-buffer-lifecycle.unit.test.ts +506 -0
- package/src/__tests__/surface-submission-observation.unit.test.ts +812 -0
- package/src/__tests__/temporal-history-lifecycle.unit.test.ts +32 -0
- package/src/__tests__/temporal-performance.integration.test.ts +3 -3
- package/src/__tests__/temporal-reset-matrix.unit.test.ts +10 -0
- package/src/__tests__/temporal-view.unit.test.ts +2 -1
- package/src/__tests__/typed-pipeline-topology.unit.test.ts +20 -4
- package/src/__tests__/visibility-instances.integration.test.ts +7 -19
- package/src/__tests__/visibility-producer-matrix.integration.test.ts +9 -20
- package/src/__tests__/volume-optics-oracle.unit.test.ts +7 -3
- package/src/__tests__/volumetric-fog-budget-recovery.integration.test.ts +189 -15
- package/src/__tests__/volumetric-fog-errors.unit.test.ts +4 -3
- package/src/__tests__/volumetric-fog-multiple.unit.test.ts +55 -0
- package/src/__tests__/volumetric-fog-spot-frame-optics.integration.test.ts +1 -1
- package/src/__tests__/volumetric-fog-stage-readback.dawn.test.ts +558 -68
- package/src/__tests__/volumetric-fog-temporal.unit.test.ts +27 -0
- package/src/__tests__/volumetric-fog-topology.unit.test.ts +23 -5
- package/src/assembly/analytic-fog-registration.ts +14 -0
- package/src/assembly/backend-contract.ts +30 -0
- package/src/assembly/barrel-distortion-inspection.ts +22 -0
- package/src/assembly/canvas-draw-guard.ts +11 -0
- package/src/assembly/cloud-shadow-entry.ts +22 -0
- package/src/assembly/dynamic-geometry-host.ts +65 -37
- package/src/assembly/dynamic-geometry-runtime.ts +7 -1
- package/src/assembly/factory.ts +2 -30
- package/src/assembly/fxaa-registration.ts +17 -0
- package/src/assembly/host-contract.ts +3 -3
- package/src/assembly/lod-observation.ts +12 -0
- package/src/assembly/material/assembly.ts +25 -13
- package/src/assembly/material/pipeline-helpers.ts +53 -12
- package/src/assembly/material-shader-policy.ts +55 -0
- package/src/assembly/material-shader-prewarm.ts +21 -10
- package/src/assembly/motion-blur-registration.ts +17 -0
- package/src/assembly/recovery/device-loss-fanout.ts +13 -0
- package/src/assembly/recovery/renderer-recover.ts +41 -18
- package/src/assembly/render-feature-post-processes.ts +54 -0
- package/src/assembly/renderer-facade.ts +6 -1
- package/src/assembly/renderer-feature-inspection.ts +8 -2
- package/src/assembly/renderer-frame-transaction.ts +23 -0
- package/src/assembly/renderer-inspection.ts +28 -0
- package/src/assembly/skin-palette-owner.ts +1 -1
- package/src/assembly/temporal-post-process-prewarm.ts +40 -0
- package/src/assembly/webgpu-pbr-ready.ts +9 -1
- package/src/assembly/webgpu-ready-contract.ts +8 -3
- package/src/assembly/webgpu-ready-per-pass.ts +104 -0
- package/src/assembly/webgpu-ready.ts +296 -306
- package/src/assembly/webgpu-renderer-bootstrap.ts +0 -12
- package/src/assembly/webgpu-renderer-observation-owner.ts +222 -0
- package/src/assembly/webgpu-renderer.ts +228 -281
- package/src/assembly/webgpu-vertex-layouts.ts +1 -1
- package/src/barrel-distortion.ts +247 -0
- package/src/bloom-admission.ts +21 -0
- package/src/cloud/__tests__/cloud-density-parity.dawn.test.ts +173 -0
- package/src/cloud/__tests__/cloud-layer-framebuffer-y.dawn.test.ts +265 -0
- package/src/cloud/__tests__/cloud-layer.browser.test.ts +432 -0
- package/src/cloud/__tests__/cloud-layer.unit.test.ts +634 -0
- package/src/cloud/density.ts +600 -0
- package/src/cloud/extract.ts +110 -0
- package/src/cloud/feature.ts +1810 -0
- package/src/cloud/frame-context.ts +42 -0
- package/src/cloud/inspection.ts +130 -0
- package/src/cloud/optics.ts +285 -0
- package/src/cloud/parameters.ts +255 -0
- package/src/cloud/resources.ts +122 -0
- package/src/cloud/shadow.ts +167 -0
- package/src/cloud/temporal.ts +226 -0
- package/src/components/__tests__/motion-blur.unit.test.ts +1 -0
- package/src/components/atmosphere.ts +4 -0
- package/src/components/barrel-distortion.ts +46 -0
- package/src/components/camera.ts +66 -10
- package/src/components/cloud-layer.ts +47 -0
- package/src/components/index.ts +2 -0
- package/src/components/instances.ts +18 -45
- package/src/components/mesh-filter.ts +11 -9
- package/src/components/motion-blur.ts +1 -0
- package/src/components/sprite-instances.ts +1 -1
- package/src/construct-renderer.ts +1 -1
- package/src/device/gpu-residency.ts +56 -12
- package/src/dynamic-geometry.ts +12 -1
- package/src/environment/analytic-fog.ts +44 -0
- package/src/environment/background.ts +2 -2
- package/src/errors/cloud.ts +103 -0
- package/src/errors/render.ts +58 -8
- package/src/examples/single-layer-medium-surface.ts +59 -0
- package/src/extract/camera.ts +35 -8
- package/src/extract/contracts.ts +12 -0
- package/src/extract/environment.ts +4 -0
- package/src/features/barrel-distortion.ts +172 -0
- package/src/features/error-reporting.ts +98 -0
- package/src/features/host.ts +138 -24
- package/src/features/motion-blur/__tests__/motion-blur-feature.unit.test.ts +111 -1
- package/src/features/motion-blur/__tests__/motion-blur-params.unit.test.ts +58 -3
- package/src/features/motion-blur/motion-blur-feature.ts +1519 -15
- package/src/features/motion-blur/motion-blur-params.ts +70 -2
- package/src/features/motion-blur/motion-blur-runtime.ts +176 -0
- package/src/features/plan.ts +33 -8
- package/src/features/prepared-gpu-work.ts +86 -35
- package/src/features/render-graph-compute.ts +13 -5
- package/src/features/render-graph-contribution.ts +11 -0
- package/src/features/render-graph-raster.ts +45 -3
- package/src/features/targets.ts +66 -0
- package/src/features/types.ts +47 -0
- package/src/fullscreen-post-process-pass.ts +41 -9
- package/src/gpu-dirty-ranges.ts +48 -0
- package/src/gpu-driven/batch-topology.ts +53 -0
- package/src/gpu-driven/material-artifacts.ts +35 -32
- package/src/gpu-driven/prepared-draw.ts +27 -14
- package/src/gpu-driven/production-raster-material.ts +1894 -0
- package/src/gpu-driven/production-raster.ts +904 -787
- package/src/gpu-driven/resource-allocation.ts +142 -0
- package/src/gpu-driven/shadow-ownership.ts +71 -0
- package/src/gpu-driven/view-gpu.ts +181 -10
- package/src/gpu-scene.ts +259 -101
- package/src/hdrp-buffers.ts +4 -3
- package/src/ibl/skylight-bind-group.ts +49 -7
- package/src/index.ts +228 -9
- package/src/inspection-types.ts +222 -2
- package/src/instance-buffer-cache.ts +4 -4
- package/src/instances.ts +151 -492
- package/src/pbr-pipeline.ts +219 -13
- package/src/pipeline/single-layer-medium-passes.ts +267 -0
- package/src/pipeline/standard-forward-lane.ts +313 -57
- package/src/pipeline/standard-output/graph.ts +8 -2
- package/src/pipeline/standard-output/types.ts +12 -1
- package/src/pipeline/standard-pipeline.ts +291 -18
- package/src/pipeline/standard-post.ts +397 -102
- package/src/pipeline-builder.ts +1 -1
- package/src/pipeline-spec.ts +5 -5
- package/src/plugin.ts +4 -0
- package/src/points-lines/__tests__/points-lines.bench.ts +17 -8
- package/src/points-lines/__tests__/view-ubo.unit.test.ts +2 -1
- package/src/prepare/prepared-graphics-resolver.ts +2 -0
- package/src/record/__tests__/main-pass-geometry.unit.test.ts +30 -0
- package/src/record/__tests__/sprite-material-abi.unit.test.ts +1 -1
- package/src/record/__tests__/temporal-payload.unit.test.ts +3 -2
- package/src/record/__tests__/transparent-group2-selection.unit.test.ts +11 -0
- package/src/record/__tests__/typed-frame-graph-plan.unit.test.ts +1 -0
- package/src/record/__tests__/view-ubo-layout.unit.test.ts +4 -3
- package/src/record/barrel-distortion-frame.ts +110 -0
- package/src/record/dynamic-geometry-consumption.ts +39 -9
- package/src/record/fold-buckets.ts +852 -0
- package/src/record/fold-instance-buffer.ts +51 -0
- package/src/record/frame-lighting.ts +36 -2
- package/src/record/frame-snapshot.ts +44 -4
- package/src/record/frame-targets.ts +10 -6
- package/src/record/frame.ts +373 -1099
- package/src/record/gpu-draw-receipts.ts +38 -0
- package/src/record/gpu-timing.ts +48 -5
- package/src/record/main-pass-geometry.ts +281 -83
- package/src/record/main-pass-material.ts +66 -4
- package/src/record/main-pass-sprite-draws.ts +13 -66
- package/src/record/main-pass.ts +156 -20
- package/src/record/mesh-ssbo.ts +43 -6
- package/src/record/motion-blur-receipt.ts +91 -0
- package/src/record/probe-blend-buffer.ts +180 -0
- package/src/record/recovery-pipeline.ts +35 -3
- package/src/record/render-context.ts +51 -31
- package/src/record/shadow-pass.ts +36 -2
- package/src/record/skybox-post-pass.ts +150 -200
- package/src/record/typed-frame-graph.ts +824 -44
- package/src/record/view-ubo.ts +26 -3
- package/src/record/volume-params.ts +225 -0
- package/src/recovery/render-system-candidate.ts +257 -52
- package/src/reflection/record-owner.ts +7 -3
- package/src/render-contract.ts +71 -8
- package/src/render-graph-primitives.ts +7 -1
- package/src/render-pipeline.ts +136 -1
- package/src/render-system-extract-tail.ts +72 -60
- package/src/render-system-extract.ts +117 -87
- package/src/render-system-presentation.ts +56 -0
- package/src/render-system-producer-roots.ts +96 -0
- package/src/render-system-residency.ts +159 -0
- package/src/render-system.ts +601 -482
- package/src/scene/probe-blend.ts +96 -4
- package/src/scene/render-scene.ts +431 -281
- package/src/ssao-buffers.ts +95 -2
- package/src/surface/__tests__/dynamic-input.unit.test.ts +374 -0
- package/src/surface/__tests__/gpu-driven.unit.test.ts +87 -0
- package/src/surface/dynamic-input.ts +658 -0
- package/src/surface/gpu-driven.ts +147 -0
- package/src/surface/submission-observation.ts +517 -0
- package/src/systems/skin-palette-allocator.ts +4 -1
- package/src/temporal/__tests__/temporal-frame-transaction.unit.test.ts +36 -0
- package/src/temporal/frame-coordinator.ts +8 -1
- package/src/temporal/frame.ts +20 -0
- package/src/temporal/gpu.ts +101 -17
- package/src/temporal/inspection.ts +7 -1
- package/src/temporal/standard-scene-data.ts +5 -0
- package/src/temporal/target-coverage-attachment.ts +4 -0
- package/src/temporal/view.ts +13 -2
- package/src/transmission/__tests__/single-layer-medium.unit.test.ts +149 -0
- package/src/transmission/__tests__/standard-transmission.dawn.test.ts +12 -11
- package/src/transmission/single-layer-medium.ts +322 -0
- package/src/typed-render-graph-primitives.ts +191 -50
- package/src/volume/component.ts +10 -10
- package/src/volume/extract.ts +11 -5
- package/src/volume/inspection.ts +3 -0
- package/src/volume/passes.ts +95 -8
- package/src/volume/resources.ts +2 -1
- package/src/volume/temporal.ts +11 -0
- package/dist/chunk-4NNZQCL3.mjs.map +0 -1
- package/dist/chunk-6TFBXLRJ.mjs.map +0 -1
- package/dist/chunk-DRR7D3KX.mjs.map +0 -1
- package/dist/chunk-GWCEMDVR.mjs.map +0 -1
- package/dist/chunk-JCIRYQ4V.mjs.map +0 -1
- package/dist/chunk-JRIPCMYC.mjs.map +0 -1
- package/dist/chunk-LULCA3OF.mjs +0 -1713
- package/dist/chunk-LULCA3OF.mjs.map +0 -1
- package/dist/chunk-PA5DRJNI.mjs.map +0 -1
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { GlyphText } from './chunk-ILQ5MEZF.mjs';
|
|
2
|
-
import { MeshRenderer, MeshFilter, DirectionalLight, validateDirectionalLightData, PointLight, computeInvRangeSquared, SpotLight, degToCos, RectAreaLight, validateRectAreaLightData, directionalShadowQualityFromF32, PointLightShadow, Skylight, LightProbe, validateLightProbeData, SkyboxBackground, Atmosphere, Instances, Layer, Points, Lines, SortKey, resolveMeshMaterialBindings, pointShapeFromU32, PostProcessParams, buildCubeCameraFaceViews, CubeCamera, cubeCameraUpdateIntentFromF32, ReflectionProbe, reflectionProbeUpdateIntentFromF32, tonemapToU32, resolveVisibility, Fog, VolumetricFog, resolveSelectedVolumetricLight, extractVolumetricFog, MotionBlur, DynamicResolution, ScreenSpaceReflection, DepthOfField, Camera, cameraProjectionFromF32, resolveDepthOfFieldParams, depthOfFieldRequestFailure, CAMERA_EXPOSURE_MODE_MANUAL, cameraExposureFromColumns, antialiasFromF32, validateDynamicResolutionCamera,
|
|
3
|
-
import { SpriteRegionOverride, SpriteInstances, selectActiveCameraIndex, getActiveCamera } from './chunk-
|
|
4
|
-
import { PROBE_BLEND_RECORD_CAPACITY, GPU_BUFFER_USAGE_MAP_READ, GPU_BUFFER_USAGE_VERTEX, GPU_BUFFER_USAGE_COPY_DST, gpuDrivenShadowDrawKey, IES_SLICE_CAPACITY, COOKIE_SLICE_CAPACITY, isStandardPbrSkinMaterialShader, buildGpuDrivenDraws, worldEntityKey, gpuDrivenSourceDrawItemIndex, selectPasses, resolveRenderTargetMaterialSource, isCanonicalStandardPbrMaterialShader, PROBE_BLEND_RECORD_BYTE_SIZE, GPU_BUFFER_USAGE_UNIFORM, GPU_BUFFER_USAGE_QUERY_RESOLVE, GPU_BUFFER_USAGE_COPY_SRC, COOKIE_SLICE_SIZE, isStandardPbrMaterialShader } from './chunk-
|
|
5
|
-
import { STANDARD_OUTPUT_TRANSFORM_FEATURE_ID, SHADOW_ATLAS_DEFAULT_LAYERS, MaterialSkinAttrMissingError, SkinMaterialMismatchError,
|
|
2
|
+
import { freezeBarrelDistortionMapping, MeshRenderer, MeshFilter, DirectionalLight, extractCloudLayer, validateDirectionalLightData, PointLight, computeInvRangeSquared, SpotLight, degToCos, RectAreaLight, validateRectAreaLightData, directionalShadowQualityFromF32, PointLightShadow, Skylight, LightProbe, validateLightProbeData, SkyboxBackground, Atmosphere, selectEnvironment, Instances, Layer, Points, Lines, SortKey, resolveMeshMaterialBindings, pointShapeFromU32, PostProcessParams, buildCubeCameraFaceViews, CubeCamera, cubeCameraUpdateIntentFromF32, ReflectionProbe, reflectionProbeUpdateIntentFromF32, tonemapToU32, resolveVisibility, Fog, VolumetricFog, resolveSelectedVolumetricLight, extractVolumetricFog, MotionBlur, DynamicResolution, ScreenSpaceReflection, DepthOfField, BarrelDistortion, Camera, cameraProjectionFromF32, resolveDepthOfFieldParams, depthOfFieldRequestFailure, CAMERA_EXPOSURE_MODE_MANUAL, cameraExposureFromColumns, antialiasFromF32, validateDynamicResolutionCamera, validateBarrelDistortionParameters, validateCameraBloom, tonemapFromF32 } from './chunk-UINHLCZA.mjs';
|
|
3
|
+
import { SpriteRegionOverride, SpriteInstances, selectActiveCameraIndex, getActiveCamera } from './chunk-ELJFJ2BU.mjs';
|
|
4
|
+
import { PROBE_BLEND_RECORD_CAPACITY, GPU_BUFFER_USAGE_MAP_READ, GPU_BUFFER_USAGE_VERTEX, GPU_BUFFER_USAGE_COPY_DST, gpuDrivenShadowDrawKey, IES_SLICE_CAPACITY, COOKIE_SLICE_CAPACITY, isStandardPbrSkinMaterialShader, buildGpuDrivenDraws, worldEntityKey, gpuDrivenSourceDrawItemIndex, selectPasses, resolveRenderTargetMaterialSource, isCanonicalStandardPbrMaterialShader, PROBE_BLEND_RECORD_BYTE_SIZE, GPU_BUFFER_USAGE_UNIFORM, GPU_BUFFER_USAGE_QUERY_RESOLVE, GPU_BUFFER_USAGE_COPY_SRC, COOKIE_SLICE_SIZE, isStandardPbrMaterialShader } from './chunk-SHFUFJ5N.mjs';
|
|
5
|
+
import { MotionBlurValidationError, STANDARD_OUTPUT_TRANSFORM_FEATURE_ID, SHADOW_ATLAS_DEFAULT_LAYERS, MaterialSkinAttrMissingError, SkinMaterialMismatchError, validateInstanceTransforms, ShadowInvalidConfigError, resolveMotionBlurParams, GPU_TEXTURE_USAGE_COPY_SRC, GPU_TEXTURE_USAGE_COPY_DST, GPU_TEXTURE_USAGE_TEXTURE_BINDING, GPU_TEXTURE_USAGE_STORAGE_BINDING, GPU_TEXTURE_USAGE_RENDER_ATTACHMENT } from './chunk-WEX45HKH.mjs';
|
|
6
6
|
import { R_MIN, ok, err, TextError, toShared, handleSlot, AssetError, ASSET_ERROR_HINTS, materialValuesToLinearRuntime, derive, unpackSlot, materialGuidText } from '@forgeax/engine-types';
|
|
7
7
|
import { err as err$1, ok as ok$1, RhiError } from '@forgeax/engine-rhi';
|
|
8
8
|
import { resolveAssetHandle, walkMaterialPassesOverSharedRefs, selectMaterialPassProgram, materialParametersToParamSchema as materialParametersToParamSchema$1 } from '@forgeax/engine-assets-runtime';
|
|
9
|
+
import { Time } from '@forgeax/engine-ecs';
|
|
9
10
|
import { SpawnLightInvalidBoundsError, routeWorldError, SpriteInstancesMutuallyExclusiveWithInstancesError, SpriteInstancesRequiresSpriteShaderError, SpriteInstancesCountMismatchError, readRenderArrayView } from '@forgeax/engine-ecs/projection';
|
|
10
11
|
import { vec3, mat4, frustum, box3 } from '@forgeax/engine-math';
|
|
11
12
|
import { AssetGuid } from '@forgeax/engine-pack/guid';
|
|
@@ -183,6 +184,35 @@ function projectLightInspection(input) {
|
|
|
183
184
|
function lightInspectionIdentity(topology, generation) {
|
|
184
185
|
return `${topology}:generation-${generation}`;
|
|
185
186
|
}
|
|
187
|
+
var emptyBloomInspection = () => ({
|
|
188
|
+
graphStatus: "empty",
|
|
189
|
+
enabled: false,
|
|
190
|
+
levelCount: 0,
|
|
191
|
+
levelDimensions: [],
|
|
192
|
+
downsamplePassCount: 0,
|
|
193
|
+
upsamplePassCount: 0,
|
|
194
|
+
targetCount: 0,
|
|
195
|
+
targetBytes: 0,
|
|
196
|
+
resourceCount: 0,
|
|
197
|
+
passCount: 0,
|
|
198
|
+
encodeCount: 0,
|
|
199
|
+
bindGroupCount: 0,
|
|
200
|
+
uploadCount: 0,
|
|
201
|
+
residentChildBytes: 0,
|
|
202
|
+
generation: 0,
|
|
203
|
+
state: "off"
|
|
204
|
+
});
|
|
205
|
+
function projectBarrelDistortionInspection(input) {
|
|
206
|
+
const effectiveMapping = input.effectiveMapping === void 0 ? void 0 : freezeBarrelDistortionMapping(input.effectiveMapping);
|
|
207
|
+
return Object.freeze({
|
|
208
|
+
effectiveMapping,
|
|
209
|
+
extent: effectiveMapping === void 0 ? void 0 : Object.freeze({ width: effectiveMapping.width, height: effectiveMapping.height }),
|
|
210
|
+
frameId: input.frameId,
|
|
211
|
+
deviceGeneration: input.deviceGeneration,
|
|
212
|
+
graphGeneration: input.graphGeneration,
|
|
213
|
+
lastKnownGood: input.lastKnownGood
|
|
214
|
+
});
|
|
215
|
+
}
|
|
186
216
|
|
|
187
217
|
// src/prepare/extended-lighting/state.ts
|
|
188
218
|
function createExtendedLightingState(generation) {
|
|
@@ -938,8 +968,8 @@ var OcclusionRenderRuntime = class {
|
|
|
938
968
|
if (this.queryLatencySamplesUs.length === 0) {
|
|
939
969
|
return { median: 0, p95: 0, last: this.lastQueryLatencyUs };
|
|
940
970
|
}
|
|
941
|
-
const
|
|
942
|
-
const rank = (percentile) =>
|
|
971
|
+
const sorted = [...this.queryLatencySamplesUs].sort((left, right) => left - right);
|
|
972
|
+
const rank = (percentile) => sorted[Math.max(0, Math.ceil(sorted.length * percentile) - 1)] ?? 0;
|
|
943
973
|
return {
|
|
944
974
|
median: rank(0.5),
|
|
945
975
|
p95: rank(0.95),
|
|
@@ -1224,181 +1254,6 @@ function runtimeError(hint) {
|
|
|
1224
1254
|
});
|
|
1225
1255
|
}
|
|
1226
1256
|
|
|
1227
|
-
// src/environment/signature.ts
|
|
1228
|
-
function sorted(items) {
|
|
1229
|
-
return [...items].sort((left, right) => left.entityKey - right.entityKey);
|
|
1230
|
-
}
|
|
1231
|
-
function environmentSignature(input) {
|
|
1232
|
-
return JSON.stringify({
|
|
1233
|
-
environments: sorted(input.environments),
|
|
1234
|
-
fogs: sorted(input.fogs),
|
|
1235
|
-
suns: sorted(input.suns)
|
|
1236
|
-
});
|
|
1237
|
-
}
|
|
1238
|
-
function environmentOnlySignature(input) {
|
|
1239
|
-
return JSON.stringify({
|
|
1240
|
-
environments: sorted(input.environments),
|
|
1241
|
-
suns: sorted(input.suns)
|
|
1242
|
-
});
|
|
1243
|
-
}
|
|
1244
|
-
function fogOnlySignature(input) {
|
|
1245
|
-
return JSON.stringify({ fogs: sorted(input.fogs) });
|
|
1246
|
-
}
|
|
1247
|
-
function environmentFactSignatures(input) {
|
|
1248
|
-
return {
|
|
1249
|
-
environmentSignature: environmentOnlySignature(input),
|
|
1250
|
-
fogSignature: fogOnlySignature(input),
|
|
1251
|
-
signature: environmentSignature(input)
|
|
1252
|
-
};
|
|
1253
|
-
}
|
|
1254
|
-
|
|
1255
|
-
// src/extract/environment.ts
|
|
1256
|
-
var ATMOSPHERE_PARAMETER_RANGES = Object.freeze({
|
|
1257
|
-
turbidity: Object.freeze({ min: 1, max: 20 }),
|
|
1258
|
-
rayleigh: Object.freeze({ min: 0, max: Number.POSITIVE_INFINITY }),
|
|
1259
|
-
mieCoefficient: Object.freeze({ min: 0, max: Number.POSITIVE_INFINITY }),
|
|
1260
|
-
mieDirectionalG: Object.freeze({ min: 0, max: 0.999 }),
|
|
1261
|
-
sunAngularRadius: Object.freeze({ min: 0, max: Number.POSITIVE_INFINITY })
|
|
1262
|
-
});
|
|
1263
|
-
function validateFogParameters(candidate) {
|
|
1264
|
-
if (candidate.color.length !== 3) {
|
|
1265
|
-
return {
|
|
1266
|
-
field: "color",
|
|
1267
|
-
value: candidate.color.length,
|
|
1268
|
-
expected: "exactly three finite channels in [0, 1]"
|
|
1269
|
-
};
|
|
1270
|
-
}
|
|
1271
|
-
for (let index = 0; index < candidate.color.length; index += 1) {
|
|
1272
|
-
const value = candidate.color[index];
|
|
1273
|
-
if (value === void 0 || !Number.isFinite(value) || value < 0 || value > 1) {
|
|
1274
|
-
return {
|
|
1275
|
-
field: `color[${index}]`,
|
|
1276
|
-
value: value ?? Number.NaN,
|
|
1277
|
-
expected: "a finite number in [0, 1]"
|
|
1278
|
-
};
|
|
1279
|
-
}
|
|
1280
|
-
}
|
|
1281
|
-
if (!Number.isFinite(candidate.density) || candidate.density < 0) {
|
|
1282
|
-
return { field: "density", value: candidate.density, expected: "a finite number >= 0" };
|
|
1283
|
-
}
|
|
1284
|
-
if (!Number.isFinite(candidate.heightFalloff) || candidate.heightFalloff < 0) {
|
|
1285
|
-
return {
|
|
1286
|
-
field: "heightFalloff",
|
|
1287
|
-
value: candidate.heightFalloff,
|
|
1288
|
-
expected: "a finite number >= 0"
|
|
1289
|
-
};
|
|
1290
|
-
}
|
|
1291
|
-
if (!Number.isFinite(candidate.maxOpacity) || candidate.maxOpacity < 0 || candidate.maxOpacity > 1) {
|
|
1292
|
-
return {
|
|
1293
|
-
field: "maxOpacity",
|
|
1294
|
-
value: candidate.maxOpacity,
|
|
1295
|
-
expected: "a finite number in [0, 1]"
|
|
1296
|
-
};
|
|
1297
|
-
}
|
|
1298
|
-
return void 0;
|
|
1299
|
-
}
|
|
1300
|
-
function validateAtmosphereParameters(parameters) {
|
|
1301
|
-
for (const field of Object.keys(ATMOSPHERE_PARAMETER_RANGES)) {
|
|
1302
|
-
const value = parameters[field];
|
|
1303
|
-
const range = ATMOSPHERE_PARAMETER_RANGES[field];
|
|
1304
|
-
if (!Number.isFinite(value) || value < range.min || value > range.max) {
|
|
1305
|
-
return new AtmosphereInvalidParameterError(field, value, range);
|
|
1306
|
-
}
|
|
1307
|
-
}
|
|
1308
|
-
return void 0;
|
|
1309
|
-
}
|
|
1310
|
-
|
|
1311
|
-
// src/environment/frame.ts
|
|
1312
|
-
var SKYLIGHT_RECOVERY_FALLBACK = Object.freeze({
|
|
1313
|
-
kind: "skylight",
|
|
1314
|
-
active: false
|
|
1315
|
-
});
|
|
1316
|
-
var EnvironmentSelectionParameterError = class extends Error {
|
|
1317
|
-
code = "environment-selection-invalid";
|
|
1318
|
-
expected;
|
|
1319
|
-
hint;
|
|
1320
|
-
detail;
|
|
1321
|
-
constructor(field, value, expected) {
|
|
1322
|
-
super(`environment selection field ${field} is invalid`);
|
|
1323
|
-
this.name = "EnvironmentSelectionParameterError";
|
|
1324
|
-
this.expected = expected;
|
|
1325
|
-
this.hint = `set ${field} to a finite value satisfying ${expected}`;
|
|
1326
|
-
this.detail = { field, value };
|
|
1327
|
-
}
|
|
1328
|
-
};
|
|
1329
|
-
var SunCardinalityError = class extends Error {
|
|
1330
|
-
code = "sun-cardinality";
|
|
1331
|
-
expected = "atmosphere has exactly one sun owner";
|
|
1332
|
-
hint = "add exactly one DirectionalLight sun for the atmosphere owner";
|
|
1333
|
-
detail;
|
|
1334
|
-
constructor(value) {
|
|
1335
|
-
super(`atmosphere sun cardinality is ${value}`);
|
|
1336
|
-
this.name = "SunCardinalityError";
|
|
1337
|
-
this.detail = { field: "sun", value };
|
|
1338
|
-
}
|
|
1339
|
-
};
|
|
1340
|
-
function freezeCandidate(candidate) {
|
|
1341
|
-
return Object.freeze(candidate);
|
|
1342
|
-
}
|
|
1343
|
-
function freezeFog(candidate) {
|
|
1344
|
-
return Object.freeze({
|
|
1345
|
-
...candidate,
|
|
1346
|
-
color: Object.freeze([...candidate.color])
|
|
1347
|
-
});
|
|
1348
|
-
}
|
|
1349
|
-
function selectEnvironment(input) {
|
|
1350
|
-
if (input.environments.length > 1) {
|
|
1351
|
-
return err(
|
|
1352
|
-
new EnvironmentSourceConflictError(
|
|
1353
|
-
[...input.environments].sort((left, right) => left.entityKey - right.entityKey).map(({ kind, entityKey, sourceKey }) => ({ kind, entityKey, sourceKey }))
|
|
1354
|
-
)
|
|
1355
|
-
);
|
|
1356
|
-
}
|
|
1357
|
-
if (input.fogs.length > 1) return err(new FogCardinalityError(input.fogs.length));
|
|
1358
|
-
const selectedFog = input.fogs[0];
|
|
1359
|
-
if (selectedFog !== void 0) {
|
|
1360
|
-
const issue = validateFogParameters(selectedFog);
|
|
1361
|
-
if (issue !== void 0) {
|
|
1362
|
-
return err(new EnvironmentSelectionParameterError(issue.field, issue.value, issue.expected));
|
|
1363
|
-
}
|
|
1364
|
-
}
|
|
1365
|
-
const selected = input.environments[0];
|
|
1366
|
-
if (selected?.kind === "atmosphere") {
|
|
1367
|
-
const invalid = validateAtmosphereParameters(selected.atmosphere);
|
|
1368
|
-
if (invalid !== void 0) return err(invalid);
|
|
1369
|
-
}
|
|
1370
|
-
if (selected?.kind === "atmosphere" && input.suns.length !== 1) {
|
|
1371
|
-
return err(new SunCardinalityError(input.suns.length));
|
|
1372
|
-
}
|
|
1373
|
-
const source = selected === void 0 ? { kind: "none" } : selected.kind === "atmosphere" ? {
|
|
1374
|
-
kind: "atmosphere",
|
|
1375
|
-
entityKey: selected.entityKey,
|
|
1376
|
-
sourceKey: selected.sourceKey,
|
|
1377
|
-
atmosphere: Object.freeze({ ...selected.atmosphere })
|
|
1378
|
-
} : {
|
|
1379
|
-
kind: "image",
|
|
1380
|
-
entityKey: selected.entityKey,
|
|
1381
|
-
sourceKey: selected.sourceKey
|
|
1382
|
-
};
|
|
1383
|
-
const sun = input.suns[0] === void 0 ? void 0 : freezeCandidate({ ...input.suns[0] });
|
|
1384
|
-
const fog = selectedFog === void 0 ? void 0 : freezeFog(selectedFog);
|
|
1385
|
-
const signatureInput = {
|
|
1386
|
-
environments: selected === void 0 ? [] : [selected],
|
|
1387
|
-
fogs: selectedFog === void 0 ? [] : [selectedFog],
|
|
1388
|
-
suns: input.suns
|
|
1389
|
-
};
|
|
1390
|
-
const signatures = environmentFactSignatures(signatureInput);
|
|
1391
|
-
const result = {
|
|
1392
|
-
source: Object.freeze(source),
|
|
1393
|
-
fog,
|
|
1394
|
-
...signatures,
|
|
1395
|
-
revision: 0,
|
|
1396
|
-
sun
|
|
1397
|
-
};
|
|
1398
|
-
Object.defineProperty(result, "lane", { value: input.lane, enumerable: false });
|
|
1399
|
-
return ok(Object.freeze(result));
|
|
1400
|
-
}
|
|
1401
|
-
|
|
1402
1257
|
// src/extract/directional-shadow-projection.ts
|
|
1403
1258
|
function projectDirectionalShadow(fits, mapSize, shadowFilter, shadowAngularRadius, maxPenumbraTexels) {
|
|
1404
1259
|
if (!Number.isFinite(mapSize) || mapSize < 1) return void 0;
|
|
@@ -2054,9 +1909,10 @@ function extractFrames(worlds, owner, assets, pipelineState, materialSnapshotCac
|
|
|
2054
1909
|
});
|
|
2055
1910
|
const frame = extractFrame(world, prepared);
|
|
2056
1911
|
framesByWorld.set(wi, frame);
|
|
2057
|
-
} catch (
|
|
1912
|
+
} catch (err5) {
|
|
1913
|
+
if (err5 instanceof MotionBlurValidationError) throw err5;
|
|
2058
1914
|
try {
|
|
2059
|
-
createWorldInternalView(world)._routeError(
|
|
1915
|
+
createWorldInternalView(world)._routeError(err5, {
|
|
2060
1916
|
severity: Severity.Error,
|
|
2061
1917
|
systemName: `RenderSystem.extractFrames(world[${wi}])`
|
|
2062
1918
|
});
|
|
@@ -2216,6 +2072,7 @@ function extractFrames(worlds, owner, assets, pipelineState, materialSnapshotCac
|
|
|
2216
2072
|
directionalCsmDirection
|
|
2217
2073
|
};
|
|
2218
2074
|
const volumetricFog = resourceOwnerFrame?.volumetricFog;
|
|
2075
|
+
const cloudLayer = resourceOwnerFrame?.cloudLayer;
|
|
2219
2076
|
const skylight = resourceOwnerFrame?.skylight;
|
|
2220
2077
|
const skylightCount = resourceOwnerFrame?.skylightCount ?? 0;
|
|
2221
2078
|
const skybox = resourceOwnerFrame?.skybox;
|
|
@@ -2271,6 +2128,7 @@ function extractFrames(worlds, owner, assets, pipelineState, materialSnapshotCac
|
|
|
2271
2128
|
reflectionProbes,
|
|
2272
2129
|
lights,
|
|
2273
2130
|
...volumetricFog === void 0 ? {} : { volumetricFog: { ...volumetricFog, worldId: resourceOwner } },
|
|
2131
|
+
...cloudLayer === void 0 ? {} : { cloudLayer },
|
|
2274
2132
|
renderables,
|
|
2275
2133
|
dispatch: dispatchEntries,
|
|
2276
2134
|
shadowCasterEntityKeys,
|
|
@@ -2360,6 +2218,16 @@ function extractFrame(world, context) {
|
|
|
2360
2218
|
const directionalLightQuery = world.query({ read: [DirectionalLight] }).unwrap();
|
|
2361
2219
|
const worldInternal = createWorldInternalView(world);
|
|
2362
2220
|
let volumetricFog = extractVolumeSnapshot(world, assets, worldInternal);
|
|
2221
|
+
let cloudLayer;
|
|
2222
|
+
const extractedCloudLayer = extractCloudLayer(world);
|
|
2223
|
+
if (extractedCloudLayer.ok) {
|
|
2224
|
+
cloudLayer = extractedCloudLayer.value;
|
|
2225
|
+
} else {
|
|
2226
|
+
worldInternal._routeError(extractedCloudLayer.error, {
|
|
2227
|
+
severity: Severity.Error,
|
|
2228
|
+
systemName: "RenderSystem.extract (cloud-layer)"
|
|
2229
|
+
});
|
|
2230
|
+
}
|
|
2363
2231
|
const cameraRoles = selectCameraRoles(world, context.cameraEntityKey);
|
|
2364
2232
|
const cameras = [...cameraRoles.display];
|
|
2365
2233
|
const auxiliaryCameras = cameraRoles.auxiliary;
|
|
@@ -2927,7 +2795,9 @@ function extractFrame(world, context) {
|
|
|
2927
2795
|
rayleigh: value.rayleigh,
|
|
2928
2796
|
mieCoefficient: value.mieCoefficient,
|
|
2929
2797
|
mieDirectionalG: value.mieDirectionalG,
|
|
2930
|
-
sunAngularRadius: value.sunAngularRadius
|
|
2798
|
+
sunAngularRadius: value.sunAngularRadius,
|
|
2799
|
+
circumsolarStrength: value.circumsolarStrength,
|
|
2800
|
+
circumsolarWidth: value.circumsolarWidth
|
|
2931
2801
|
};
|
|
2932
2802
|
environmentCandidates.push({
|
|
2933
2803
|
kind: "atmosphere",
|
|
@@ -3015,7 +2885,6 @@ function extractFrame(world, context) {
|
|
|
3015
2885
|
let dispatch = [];
|
|
3016
2886
|
const shadowMembershipEntries = [];
|
|
3017
2887
|
const materialSnapshotCache = /* @__PURE__ */ new Map();
|
|
3018
|
-
const instanceSnapshotCache = /* @__PURE__ */ new Map();
|
|
3019
2888
|
const skinnedMaterialSnapshotCache = /* @__PURE__ */ new Map();
|
|
3020
2889
|
const meshRendererQuery = context.renderables === "none" ? [] : world.query({
|
|
3021
2890
|
read: [MeshRenderer],
|
|
@@ -3052,14 +2921,18 @@ function extractFrame(world, context) {
|
|
|
3052
2921
|
const flushPendingDispatch = (pending) => {
|
|
3053
2922
|
for (const entry of pending) dispatch.push(entry);
|
|
3054
2923
|
};
|
|
3055
|
-
|
|
3056
|
-
|
|
3057
|
-
|
|
2924
|
+
const requestedRows = renderableEntities === void 0 ? meshRendererQuery : {
|
|
2925
|
+
*[Symbol.iterator]() {
|
|
2926
|
+
for (const entity of renderableEntities) {
|
|
2927
|
+
const row = meshRendererQuery.at(entity);
|
|
2928
|
+
if (row !== void 0) yield row;
|
|
2929
|
+
}
|
|
3058
2930
|
}
|
|
2931
|
+
};
|
|
2932
|
+
for (const row of requestedRows) {
|
|
3059
2933
|
const hasTransform = row.has(Transform);
|
|
3060
2934
|
const meshFilter = row.get(MeshFilter);
|
|
3061
|
-
const
|
|
3062
|
-
const hasInstances = instancesData !== void 0;
|
|
2935
|
+
const hasInstances = row.has(Instances);
|
|
3063
2936
|
const skin = row.get(Skin);
|
|
3064
2937
|
const morphWeightsView = worldInternal._getArrayView(row.entity, MorphWeights, "weights");
|
|
3065
2938
|
const hasMeshFilter = meshFilter !== void 0;
|
|
@@ -3085,6 +2958,9 @@ function extractFrame(world, context) {
|
|
|
3085
2958
|
if (!authorVisible && !retainHidden) {
|
|
3086
2959
|
continue;
|
|
3087
2960
|
}
|
|
2961
|
+
if (isRenderable && fAssetHandle === 0) {
|
|
2962
|
+
continue;
|
|
2963
|
+
}
|
|
3088
2964
|
const layerVal = fLayerValue ?? 0;
|
|
3089
2965
|
const pendingDispatch = [];
|
|
3090
2966
|
const materialsView = worldInternal._getArrayView(entity, MeshRenderer, "materials");
|
|
@@ -3270,28 +3146,28 @@ function extractFrame(world, context) {
|
|
|
3270
3146
|
} else {
|
|
3271
3147
|
const resolvedResult = walkMaterialPassesOverSharedRefs(world, tagged, assets);
|
|
3272
3148
|
if (!resolvedResult.ok) {
|
|
3273
|
-
const
|
|
3274
|
-
switch (
|
|
3149
|
+
const err5 = resolvedResult.error;
|
|
3150
|
+
switch (err5.code) {
|
|
3275
3151
|
case "material-parent-not-found":
|
|
3276
3152
|
case "material-no-effective-pass":
|
|
3277
3153
|
case "material-value-unknown":
|
|
3278
3154
|
case "material-value-type-mismatch":
|
|
3279
3155
|
case "material-contract-program-mismatch":
|
|
3280
|
-
worldInternal._routeError(
|
|
3156
|
+
worldInternal._routeError(err5, {
|
|
3281
3157
|
severity: Severity.Error,
|
|
3282
|
-
systemName: `RenderSystem.extract (${
|
|
3158
|
+
systemName: `RenderSystem.extract (${err5.code})`
|
|
3283
3159
|
});
|
|
3284
3160
|
break;
|
|
3285
3161
|
case "material-circular-inheritance":
|
|
3286
|
-
worldInternal._routeError(
|
|
3162
|
+
worldInternal._routeError(err5, {
|
|
3287
3163
|
severity: Severity.Error,
|
|
3288
3164
|
systemName: "RenderSystem.extract (material-circular-inheritance)"
|
|
3289
3165
|
});
|
|
3290
3166
|
break;
|
|
3291
3167
|
default:
|
|
3292
|
-
worldInternal._routeError(
|
|
3168
|
+
worldInternal._routeError(err5, {
|
|
3293
3169
|
severity: Severity.Error,
|
|
3294
|
-
systemName: `RenderSystem.extract (_materialWalk: ${
|
|
3170
|
+
systemName: `RenderSystem.extract (_materialWalk: ${err5.code})`
|
|
3295
3171
|
});
|
|
3296
3172
|
}
|
|
3297
3173
|
continue;
|
|
@@ -3548,6 +3424,12 @@ function extractFrame(world, context) {
|
|
|
3548
3424
|
baseColor,
|
|
3549
3425
|
metallic: metallicPv,
|
|
3550
3426
|
roughness: roughnessPv,
|
|
3427
|
+
...resolved.surface?.model === void 0 ? {} : { surfaceModel: resolved.surface.model },
|
|
3428
|
+
deferredPass: allPasses.some(
|
|
3429
|
+
(pass) => String(
|
|
3430
|
+
pass.renderState?.tags?.LightMode ?? pass.name
|
|
3431
|
+
) === "Deferred"
|
|
3432
|
+
),
|
|
3551
3433
|
...specularColorPv !== void 0 && {
|
|
3552
3434
|
specularColor: [
|
|
3553
3435
|
specularColorPv[0] ?? 1,
|
|
@@ -3898,44 +3780,26 @@ function extractFrame(world, context) {
|
|
|
3898
3780
|
};
|
|
3899
3781
|
let instancesSnap;
|
|
3900
3782
|
if (hasInstances) {
|
|
3901
|
-
const
|
|
3902
|
-
|
|
3903
|
-
if (
|
|
3904
|
-
|
|
3905
|
-
new InstanceCollectionError(
|
|
3906
|
-
"instance-collection-invalid",
|
|
3907
|
-
"Instances.collectionId references a live renderer-owned collection",
|
|
3908
|
-
"create the collection through renderer.instances before attaching Instances",
|
|
3909
|
-
{
|
|
3910
|
-
operation: "inspect",
|
|
3911
|
-
expected: "a positive collectionId with a live renderer owner",
|
|
3912
|
-
actual: Number(collectionId ?? 0),
|
|
3913
|
-
...collectionId === void 0 ? {} : { collectionId }
|
|
3914
|
-
}
|
|
3915
|
-
)
|
|
3916
|
-
);
|
|
3917
|
-
if (collectionId !== void 0)
|
|
3918
|
-
instanceSnapshotCache.set(collectionId, collectionResult);
|
|
3919
|
-
}
|
|
3920
|
-
if (collectionResult === void 0) continue;
|
|
3921
|
-
if (!collectionResult.ok) {
|
|
3922
|
-
worldInternal._routeError(collectionResult.error, {
|
|
3783
|
+
const transforms = worldInternal._getArrayView(entity, Instances, "transforms") ?? new Float32Array();
|
|
3784
|
+
const invalid = validateInstanceTransforms(transforms);
|
|
3785
|
+
if (invalid !== void 0) {
|
|
3786
|
+
worldInternal._routeError(invalid, {
|
|
3923
3787
|
severity: Severity.Error,
|
|
3924
|
-
systemName: "RenderSystem.extract (Instances
|
|
3788
|
+
systemName: "RenderSystem.extract (Instances transforms)"
|
|
3925
3789
|
});
|
|
3926
3790
|
continue;
|
|
3927
3791
|
}
|
|
3792
|
+
const projected = instanceCollections?.project(world, entity, transforms);
|
|
3928
3793
|
instancesSnap = {
|
|
3929
|
-
transforms:
|
|
3930
|
-
instanceCount:
|
|
3931
|
-
collectionId: collectionResult.value.collectionId,
|
|
3932
|
-
revision: collectionResult.value.revision,
|
|
3933
|
-
capacity: collectionResult.value.capacity,
|
|
3934
|
-
dirtyRanges: collectionResult.value.dirtyRanges,
|
|
3794
|
+
transforms: projected?.transforms ?? new Float32Array(transforms),
|
|
3795
|
+
instanceCount: transforms.length / 16,
|
|
3935
3796
|
cacheKey: entity,
|
|
3936
|
-
|
|
3937
|
-
|
|
3938
|
-
|
|
3797
|
+
archVersion: projected === void 0 ? archVersion : 0,
|
|
3798
|
+
...projected === void 0 ? {} : {
|
|
3799
|
+
collectionId: projected.collectionId,
|
|
3800
|
+
revision: projected.revision,
|
|
3801
|
+
generations: projected.generations
|
|
3802
|
+
}
|
|
3939
3803
|
};
|
|
3940
3804
|
}
|
|
3941
3805
|
const baseRenderable = {
|
|
@@ -4123,6 +3987,7 @@ function extractFrame(world, context) {
|
|
|
4123
3987
|
environment,
|
|
4124
3988
|
environmentReady: true,
|
|
4125
3989
|
...volumetricFog === void 0 ? {} : { volumetricFog },
|
|
3990
|
+
...cloudLayer === void 0 ? {} : { cloudLayer },
|
|
4126
3991
|
renderables,
|
|
4127
3992
|
dispatch,
|
|
4128
3993
|
shadowCasterEntityKeys,
|
|
@@ -4823,6 +4688,12 @@ function resolveMaterialSnapshot(handleRaw, world, assetsRef, materialSnapshotCa
|
|
|
4823
4688
|
baseColor,
|
|
4824
4689
|
metallic: metallicPv,
|
|
4825
4690
|
roughness: roughnessPv,
|
|
4691
|
+
...resolved.surface?.model === void 0 ? {} : { surfaceModel: resolved.surface.model },
|
|
4692
|
+
deferredPass: allPasses.some(
|
|
4693
|
+
(pass) => String(
|
|
4694
|
+
pass.renderState?.tags?.LightMode ?? pass.name
|
|
4695
|
+
) === "Deferred"
|
|
4696
|
+
),
|
|
4826
4697
|
...specularColorPv !== void 0 && {
|
|
4827
4698
|
specularColor: [
|
|
4828
4699
|
specularColorPv[0] ?? 1,
|
|
@@ -5072,12 +4943,22 @@ function collectCameraSnapshots(world) {
|
|
|
5072
4943
|
const cameras = [];
|
|
5073
4944
|
const cameraQuery = world.query({
|
|
5074
4945
|
read: [Camera],
|
|
5075
|
-
optional: [
|
|
4946
|
+
optional: [
|
|
4947
|
+
MotionBlur,
|
|
4948
|
+
DynamicResolution,
|
|
4949
|
+
ScreenSpaceReflection,
|
|
4950
|
+
DepthOfField,
|
|
4951
|
+
BarrelDistortion
|
|
4952
|
+
],
|
|
5076
4953
|
with: [Transform, GlobalTransform]
|
|
5077
4954
|
}).unwrap();
|
|
5078
4955
|
for (const row of cameraQuery) {
|
|
5079
4956
|
const cam = row.get(Camera);
|
|
5080
4957
|
const motionBlur = row.get(MotionBlur);
|
|
4958
|
+
const barrelDistortion = row.get(BarrelDistortion);
|
|
4959
|
+
const motionBlurResult = resolveMotionBlurParams(motionBlur);
|
|
4960
|
+
if (!motionBlurResult.ok) throw motionBlurResult.error;
|
|
4961
|
+
const motionBlurParams = motionBlurResult.value;
|
|
5081
4962
|
const depthOfField = row.get(DepthOfField);
|
|
5082
4963
|
const dynamicResolution = row.get(DynamicResolution);
|
|
5083
4964
|
const screenSpaceReflection = row.get(ScreenSpaceReflection);
|
|
@@ -5105,6 +4986,8 @@ function collectCameraSnapshots(world) {
|
|
|
5105
4986
|
const antialias = antialiasFromF32(cam.antialias);
|
|
5106
4987
|
const dynamicResolutionResult = validateDynamicResolutionCamera(dynamicResolution, antialias);
|
|
5107
4988
|
if (!dynamicResolutionResult.ok) throw dynamicResolutionResult.error;
|
|
4989
|
+
const barrelDistortionResult = validateBarrelDistortionParameters(barrelDistortion);
|
|
4990
|
+
if (!barrelDistortionResult.ok) throw barrelDistortionResult.error;
|
|
5108
4991
|
cameras.push({
|
|
5109
4992
|
entityKey: entity,
|
|
5110
4993
|
...target === void 0 ? {} : { target },
|
|
@@ -5126,10 +5009,17 @@ function collectCameraSnapshots(world) {
|
|
|
5126
5009
|
...output === void 0 ? {} : { output },
|
|
5127
5010
|
antialias,
|
|
5128
5011
|
...dynamicResolutionResult.value === void 0 ? {} : { dynamicResolution: dynamicResolutionResult.value },
|
|
5129
|
-
bloom:
|
|
5012
|
+
bloom: validateCameraBloom(
|
|
5013
|
+
cam.bloom,
|
|
5014
|
+
cam.bloomThreshold,
|
|
5015
|
+
cam.bloomIntensity,
|
|
5016
|
+
cam.bloomSoftKnee,
|
|
5017
|
+
cam.bloomScatter
|
|
5018
|
+
),
|
|
5130
5019
|
bloomThreshold: cam.bloomThreshold,
|
|
5131
5020
|
bloomIntensity: cam.bloomIntensity,
|
|
5132
|
-
|
|
5021
|
+
bloomSoftKnee: cam.bloomSoftKnee,
|
|
5022
|
+
bloomScatter: cam.bloomScatter,
|
|
5133
5023
|
clearColor: [
|
|
5134
5024
|
cam.clearColor[0] ?? 0,
|
|
5135
5025
|
cam.clearColor[1] ?? 0,
|
|
@@ -5138,13 +5028,15 @@ function collectCameraSnapshots(world) {
|
|
|
5138
5028
|
],
|
|
5139
5029
|
...depthOfFieldResult.ok && depthOfFieldResult.value !== void 0 ? { depthOfField: depthOfFieldResult.value } : {},
|
|
5140
5030
|
...depthOfFieldError === void 0 ? {} : { depthOfFieldError },
|
|
5141
|
-
...
|
|
5031
|
+
...motionBlurParams === void 0 ? {} : {
|
|
5142
5032
|
motionBlur: {
|
|
5143
|
-
shutterAngle:
|
|
5144
|
-
maxRadiusPixels:
|
|
5145
|
-
sampleCount:
|
|
5033
|
+
shutterAngle: motionBlurParams.shutterAngle,
|
|
5034
|
+
maxRadiusPixels: motionBlurParams.maxRadiusPixels,
|
|
5035
|
+
sampleCount: motionBlurParams.sampleCount,
|
|
5036
|
+
targetFps: motionBlurParams.targetFps
|
|
5146
5037
|
}
|
|
5147
5038
|
},
|
|
5039
|
+
...barrelDistortion === void 0 ? {} : { barrelDistortion: barrelDistortionResult.value },
|
|
5148
5040
|
...screenSpaceReflection === void 0 ? {} : {
|
|
5149
5041
|
screenSpaceReflection: {
|
|
5150
5042
|
maxDistance: screenSpaceReflection.maxDistance,
|
|
@@ -5320,11 +5212,14 @@ function textureDigest(texture2) {
|
|
|
5320
5212
|
return `fnv1a:${hash.toString(16).padStart(8, "0")}`;
|
|
5321
5213
|
}
|
|
5322
5214
|
function extractVolumeSnapshot(world, assets, worldInternal) {
|
|
5215
|
+
const elapsed = world.getResource(Time).elapsed;
|
|
5216
|
+
const worldTimeSeconds = Number.isFinite(elapsed) ? Math.max(0, elapsed) : 0;
|
|
5323
5217
|
const query = world.query({ read: [VolumetricFog] }).unwrap();
|
|
5324
5218
|
const authorings = [];
|
|
5219
|
+
const members = [];
|
|
5325
5220
|
let selectedLight;
|
|
5326
|
-
let first;
|
|
5327
5221
|
for (const row of query) {
|
|
5222
|
+
selectedLight = void 0;
|
|
5328
5223
|
const source = row.get(VolumetricFog);
|
|
5329
5224
|
if (source.light === null) continue;
|
|
5330
5225
|
const selected = resolveSelectedVolumetricLight(world, source.light);
|
|
@@ -5349,7 +5244,7 @@ function extractVolumeSnapshot(world, assets, worldInternal) {
|
|
|
5349
5244
|
}) : resolved.error,
|
|
5350
5245
|
{ severity: Severity.Error, systemName: "RenderSystem.extract (volumetric-density)" }
|
|
5351
5246
|
);
|
|
5352
|
-
return { status: "degraded" };
|
|
5247
|
+
return { status: "degraded", worldTimeSeconds };
|
|
5353
5248
|
}
|
|
5354
5249
|
const densityAsset = resolved.value;
|
|
5355
5250
|
const guid = assets?.guidOf(densityAsset) ?? `handle:${Number(densityHandle)}`;
|
|
@@ -5392,10 +5287,25 @@ function extractVolumeSnapshot(world, assets, worldInternal) {
|
|
|
5392
5287
|
albedo: [source.albedo[0] ?? 0, source.albedo[1] ?? 0, source.albedo[2] ?? 0],
|
|
5393
5288
|
emission: [source.emission[0] ?? 0, source.emission[1] ?? 0, source.emission[2] ?? 0],
|
|
5394
5289
|
anisotropy: source.anisotropy,
|
|
5395
|
-
maxDistance: source.maxDistance
|
|
5290
|
+
maxDistance: source.maxDistance,
|
|
5291
|
+
sampling: source.sampling === 1 ? "density" : "noise"
|
|
5396
5292
|
};
|
|
5397
5293
|
authorings.push(authoring);
|
|
5398
|
-
|
|
5294
|
+
members.push({
|
|
5295
|
+
status: "available",
|
|
5296
|
+
worldTimeSeconds,
|
|
5297
|
+
densityHandle,
|
|
5298
|
+
densityAsset,
|
|
5299
|
+
guid,
|
|
5300
|
+
generation: 1,
|
|
5301
|
+
digest: textureDigest(densityAsset),
|
|
5302
|
+
...selectedLight === void 0 ? {} : {
|
|
5303
|
+
lightEntity: selectedLight.entity,
|
|
5304
|
+
lightKind: selectedLight.kind,
|
|
5305
|
+
...selectedLight.pointLightEntity === void 0 ? {} : { pointLightEntity: selectedLight.pointLightEntity },
|
|
5306
|
+
...selectedLight.spotLightEntity === void 0 ? {} : { spotLightEntity: selectedLight.spotLightEntity }
|
|
5307
|
+
}
|
|
5308
|
+
});
|
|
5399
5309
|
}
|
|
5400
5310
|
if (authorings.length === 0) return void 0;
|
|
5401
5311
|
const extracted = extractVolumetricFog(authorings);
|
|
@@ -5404,39 +5314,18 @@ function extractVolumeSnapshot(world, assets, worldInternal) {
|
|
|
5404
5314
|
severity: Severity.Error,
|
|
5405
5315
|
systemName: "RenderSystem.extract (volumetric-fog)"
|
|
5406
5316
|
});
|
|
5407
|
-
return {
|
|
5408
|
-
status: "degraded",
|
|
5409
|
-
...first === void 0 ? {} : {
|
|
5410
|
-
densityHandle: first.densityHandle,
|
|
5411
|
-
densityAsset: first.densityAsset,
|
|
5412
|
-
guid: first.guid,
|
|
5413
|
-
generation: 1,
|
|
5414
|
-
digest: textureDigest(first.densityAsset),
|
|
5415
|
-
...selectedLight === void 0 ? {} : {
|
|
5416
|
-
lightEntity: selectedLight.entity,
|
|
5417
|
-
lightKind: selectedLight.kind,
|
|
5418
|
-
...selectedLight.pointLightEntity === void 0 ? {} : { pointLightEntity: selectedLight.pointLightEntity },
|
|
5419
|
-
...selectedLight.spotLightEntity === void 0 ? {} : { spotLightEntity: selectedLight.spotLightEntity }
|
|
5420
|
-
}
|
|
5421
|
-
}
|
|
5422
|
-
};
|
|
5317
|
+
return { ...members[0], status: "degraded" };
|
|
5423
5318
|
}
|
|
5424
|
-
if (extracted.value.status === "off"
|
|
5425
|
-
const
|
|
5426
|
-
|
|
5427
|
-
|
|
5428
|
-
|
|
5429
|
-
|
|
5430
|
-
};
|
|
5319
|
+
if (extracted.value.status === "off") return { status: "off" };
|
|
5320
|
+
const validatedMembers = extracted.value.fogs.map((fog, index) => ({
|
|
5321
|
+
...members[index],
|
|
5322
|
+
status: "available",
|
|
5323
|
+
fog
|
|
5324
|
+
}));
|
|
5431
5325
|
return {
|
|
5432
5326
|
status: "available",
|
|
5433
|
-
|
|
5434
|
-
|
|
5435
|
-
densityAsset: first.densityAsset,
|
|
5436
|
-
guid: first.guid,
|
|
5437
|
-
generation: 1,
|
|
5438
|
-
digest: textureDigest(first.densityAsset),
|
|
5439
|
-
...selectedLightFields
|
|
5327
|
+
...validatedMembers[0],
|
|
5328
|
+
additional: validatedMembers.slice(1)
|
|
5440
5329
|
};
|
|
5441
5330
|
}
|
|
5442
5331
|
var PROBE_R_MIN = R_MIN;
|
|
@@ -5737,6 +5626,17 @@ var ProbeBlendSceneProjection = class {
|
|
|
5737
5626
|
};
|
|
5738
5627
|
lastDirtyVisitCount = 0;
|
|
5739
5628
|
lastDirtyReasons = [];
|
|
5629
|
+
bufferProjectionSource = Object.freeze({});
|
|
5630
|
+
bufferProjection = Object.freeze({
|
|
5631
|
+
sourceIdentity: this.bufferProjectionSource,
|
|
5632
|
+
revision: 0,
|
|
5633
|
+
baseRevision: 0,
|
|
5634
|
+
capacity: 1,
|
|
5635
|
+
records: Object.freeze([]),
|
|
5636
|
+
dirtyRecords: Object.freeze([]),
|
|
5637
|
+
removedCacheKeys: Object.freeze([])
|
|
5638
|
+
});
|
|
5639
|
+
resultRecords = Object.freeze([]);
|
|
5740
5640
|
recordFacts = /* @__PURE__ */ new Map();
|
|
5741
5641
|
getRecord(objectKey) {
|
|
5742
5642
|
return this.records.get(objectKey);
|
|
@@ -5744,6 +5644,10 @@ var ProbeBlendSceneProjection = class {
|
|
|
5744
5644
|
hasRecords() {
|
|
5745
5645
|
return this.records.size > 0;
|
|
5746
5646
|
}
|
|
5647
|
+
/** Stable upload projection; rebuilt only when probe/object facts change. */
|
|
5648
|
+
recordBufferProjection() {
|
|
5649
|
+
return this.bufferProjection;
|
|
5650
|
+
}
|
|
5747
5651
|
inspect() {
|
|
5748
5652
|
return {
|
|
5749
5653
|
activeContributorCount: this.lastActiveContributorCount,
|
|
@@ -5804,6 +5708,23 @@ var ProbeBlendSceneProjection = class {
|
|
|
5804
5708
|
const dirtyReasons = [];
|
|
5805
5709
|
const affectedObjectKeys = /* @__PURE__ */ new Set();
|
|
5806
5710
|
const previous = this.previous;
|
|
5711
|
+
if (previous !== void 0 && previous.objects === input.objects && input.worldRevision === previous.worldRevision && input.retainSkyResidualRecords === previous.retainSkyResidualRecords && sameProbeFacts(input.probes, previous.probes) && sameSkyFacts(input, previous)) {
|
|
5712
|
+
return {
|
|
5713
|
+
records: this.resultRecords,
|
|
5714
|
+
contributors: [],
|
|
5715
|
+
activeContributorCount: this.lastActiveContributorCount,
|
|
5716
|
+
admittedProbeCount: this.lastAdmittedProbeCount,
|
|
5717
|
+
coverage: this.lastCoverage,
|
|
5718
|
+
skyResidualFraction: 1 - this.lastCoverage,
|
|
5719
|
+
dirtyReasons: [],
|
|
5720
|
+
affectedObjectKeys: [],
|
|
5721
|
+
visits: 0,
|
|
5722
|
+
allocations: 0,
|
|
5723
|
+
uploads: 0,
|
|
5724
|
+
receipt: this.lastReceipt,
|
|
5725
|
+
...this.lastError === void 0 ? {} : { error: this.lastError }
|
|
5726
|
+
};
|
|
5727
|
+
}
|
|
5807
5728
|
const objectKeys = input.objects.map((object) => String(object.objectKey)).sort();
|
|
5808
5729
|
const previousObjectKeys = previous?.objects.map((object) => String(object.objectKey)).sort() ?? [];
|
|
5809
5730
|
if (previous === void 0 || !sameList(objectKeys, previousObjectKeys)) {
|
|
@@ -5812,7 +5733,7 @@ var ProbeBlendSceneProjection = class {
|
|
|
5812
5733
|
}
|
|
5813
5734
|
if (previous !== void 0 && input.worldRevision !== previous.worldRevision)
|
|
5814
5735
|
dirtyReasons.push("world");
|
|
5815
|
-
if (previous !== void 0 && !sameProbeFacts(input.probes, previous.probes))
|
|
5736
|
+
if (previous !== void 0 && (!sameProbeFacts(input.probes, previous.probes) || input.retainSkyResidualRecords !== previous.retainSkyResidualRecords))
|
|
5816
5737
|
dirtyReasons.push("probe-fact");
|
|
5817
5738
|
if (previous !== void 0 && !sameSkyFacts(input, previous)) dirtyReasons.push("sky");
|
|
5818
5739
|
const previousObjects = new Map(previous?.objects.map((object) => [object.objectKey, object]));
|
|
@@ -5889,7 +5810,7 @@ var ProbeBlendSceneProjection = class {
|
|
|
5889
5810
|
let record;
|
|
5890
5811
|
if (admission.error !== void 0) firstError ??= admission.error;
|
|
5891
5812
|
if (admission.admitted.length === 0) {
|
|
5892
|
-
if (input.probes.length === 0) {
|
|
5813
|
+
if (input.probes.length === 0 && input.retainSkyResidualRecords !== true) {
|
|
5893
5814
|
nextRecords.delete(object.objectKey);
|
|
5894
5815
|
this.recordFacts.delete(object.objectKey);
|
|
5895
5816
|
continue;
|
|
@@ -5946,8 +5867,9 @@ var ProbeBlendSceneProjection = class {
|
|
|
5946
5867
|
firstError ??= admission.error;
|
|
5947
5868
|
}
|
|
5948
5869
|
const allocations = previous === void 0 ? nextRecords.size : 0;
|
|
5870
|
+
const resultRecords = Object.freeze([...nextRecords.values()]);
|
|
5949
5871
|
const result = {
|
|
5950
|
-
records:
|
|
5872
|
+
records: resultRecords,
|
|
5951
5873
|
contributors: firstTerms,
|
|
5952
5874
|
activeContributorCount: firstActiveCount,
|
|
5953
5875
|
admittedProbeCount: firstAdmittedCount,
|
|
@@ -5961,14 +5883,38 @@ var ProbeBlendSceneProjection = class {
|
|
|
5961
5883
|
receipt: firstReceipt,
|
|
5962
5884
|
...firstError === void 0 ? {} : { error: firstError }
|
|
5963
5885
|
};
|
|
5886
|
+
const projectedRecords = Object.freeze(
|
|
5887
|
+
[...nextRecords].map(([objectKey, record]) => Object.freeze({ cacheKey: objectKey, record }))
|
|
5888
|
+
);
|
|
5889
|
+
const dirtyRecords = Object.freeze(
|
|
5890
|
+
projectedRecords.filter(({ record }) => affectedObjectKeys.has(record.objectKey))
|
|
5891
|
+
);
|
|
5892
|
+
const removedCacheKeys = Object.freeze(
|
|
5893
|
+
[...this.records.keys()].filter((objectKey) => !nextRecords.has(objectKey))
|
|
5894
|
+
);
|
|
5895
|
+
const capacity = projectedRecords.reduce(
|
|
5896
|
+
(value, { record }) => Math.max(value, record.objectKey + 2),
|
|
5897
|
+
1
|
|
5898
|
+
);
|
|
5964
5899
|
this.previous = input;
|
|
5965
5900
|
this.records = nextRecords;
|
|
5901
|
+
this.resultRecords = resultRecords;
|
|
5902
|
+
const baseRevision = this.bufferProjection.revision;
|
|
5903
|
+
this.bufferProjection = Object.freeze({
|
|
5904
|
+
sourceIdentity: this.bufferProjectionSource,
|
|
5905
|
+
revision: baseRevision + 1,
|
|
5906
|
+
baseRevision,
|
|
5907
|
+
capacity,
|
|
5908
|
+
records: projectedRecords,
|
|
5909
|
+
dirtyRecords,
|
|
5910
|
+
removedCacheKeys
|
|
5911
|
+
});
|
|
5966
5912
|
this.lastError = firstError;
|
|
5967
5913
|
this.lastReceipt = firstReceipt;
|
|
5968
5914
|
this.lastActiveContributorCount = firstActiveCount;
|
|
5969
5915
|
this.lastAdmittedProbeCount = firstAdmittedCount;
|
|
5970
5916
|
this.lastCoverage = firstCoverage;
|
|
5971
|
-
this.lastFinite =
|
|
5917
|
+
this.lastFinite = this.resultRecords.every(
|
|
5972
5918
|
(record) => record.bytes.length === PROBE_BLEND_RECORD_BYTE_SIZE
|
|
5973
5919
|
);
|
|
5974
5920
|
this.lastSky = input.sky ?? (input.skyIrradiance === void 0 ? { available: false, irradiance: [0, 0, 0], fallbackReason: "no-skylight" } : { available: true, irradiance: input.skyIrradiance });
|
|
@@ -5978,6 +5924,6 @@ var ProbeBlendSceneProjection = class {
|
|
|
5978
5924
|
}
|
|
5979
5925
|
};
|
|
5980
5926
|
|
|
5981
|
-
export { InstanceBoundsCache, OcclusionRenderRuntime, PROBE_MAX_CONTRIBUTORS, ProbeBlendSceneProjection,
|
|
5982
|
-
//# sourceMappingURL=chunk-
|
|
5983
|
-
//# sourceMappingURL=chunk-
|
|
5927
|
+
export { InstanceBoundsCache, OcclusionRenderRuntime, PROBE_MAX_CONTRIBUTORS, ProbeBlendSceneProjection, SSR_HISTORY_FORMAT, SsrHistoryOwner, admitProbeContributors, blendLightProbes, buildRectAreaWorldFrame, buildShadowFrusta, createCookieProjectionMatrixData, createExtendedLightingState, createSsrHistoryOwner, createSsrSpatialResources, emptyBloomInspection, estimateSsrSpatialMemory, extractFrames, fingerprintNumericArray, glyphTextLayoutSystem, primitiveKey, primitiveKeyId, projectBarrelDistortionInspection, projectExtendedLightingInspection, promoteExtendedLightingCandidate, recordExtendedLightingFailure, rectAreaFacesPoint, scaledProbeWeight, setOcclusionRuntimeTestHooks, viewKey, viewKeyId };
|
|
5928
|
+
//# sourceMappingURL=chunk-UI5SFODX.mjs.map
|
|
5929
|
+
//# sourceMappingURL=chunk-UI5SFODX.mjs.map
|