@forgeax/engine-render 0.1.7 → 0.1.20
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 +140 -2
- package/dist/.tsbuildinfo +1 -1
- package/dist/assembly/backend-contract.d.ts +12 -0
- package/dist/assembly/backend-contract.d.ts.map +1 -1
- package/dist/assembly/factory.d.ts +26 -5
- package/dist/assembly/factory.d.ts.map +1 -1
- package/dist/assembly/host-contract.d.ts +4 -0
- package/dist/assembly/host-contract.d.ts.map +1 -1
- package/dist/assembly/renderer-frame-transaction.d.ts +39 -0
- package/dist/assembly/renderer-frame-transaction.d.ts.map +1 -0
- package/dist/assembly/renderer-inspection.d.ts +22 -0
- package/dist/assembly/renderer-inspection.d.ts.map +1 -0
- package/dist/assembly/renderer-lifecycle.d.ts +4 -0
- package/dist/assembly/renderer-lifecycle.d.ts.map +1 -0
- package/dist/authoring.mjs +4 -2
- package/dist/authoring.mjs.map +1 -1
- package/dist/chunk-4XINDLAY.mjs +9404 -0
- package/dist/chunk-4XINDLAY.mjs.map +1 -0
- package/dist/chunk-CDTWTHZR.mjs +752 -0
- package/dist/chunk-CDTWTHZR.mjs.map +1 -0
- package/dist/chunk-FJ6P52EE.mjs +46 -0
- package/dist/chunk-FJ6P52EE.mjs.map +1 -0
- package/dist/chunk-JDWARUOI.mjs +44 -0
- package/dist/chunk-JDWARUOI.mjs.map +1 -0
- package/dist/chunk-M2MP4ZOU.mjs +73 -0
- package/dist/chunk-M2MP4ZOU.mjs.map +1 -0
- package/dist/chunk-PCHBPYML.mjs +385 -0
- package/dist/chunk-PCHBPYML.mjs.map +1 -0
- package/dist/chunk-RXZ3RGOU.mjs +53 -0
- package/dist/chunk-RXZ3RGOU.mjs.map +1 -0
- package/dist/{chunk-YEJIUW7D.mjs → chunk-TBQJOK2L.mjs} +356 -543
- package/dist/chunk-TBQJOK2L.mjs.map +1 -0
- package/dist/{chunk-CQXZC5XI.mjs → chunk-VFPLTKCU.mjs} +79 -69
- package/dist/chunk-VFPLTKCU.mjs.map +1 -0
- package/dist/components/atmosphere.d.ts +9 -0
- package/dist/components/atmosphere.d.ts.map +1 -0
- package/dist/components/camera.d.ts +2 -1
- package/dist/components/camera.d.ts.map +1 -1
- package/dist/components/fog.d.ts +8 -0
- package/dist/components/fog.d.ts.map +1 -0
- package/dist/components/index.d.ts +3 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/light-helpers.d.ts.map +1 -1
- package/dist/components/motion-blur.d.ts +7 -0
- package/dist/components/motion-blur.d.ts.map +1 -0
- package/dist/components/spot-light.d.ts +12 -0
- package/dist/components/spot-light.d.ts.map +1 -1
- package/dist/construct-renderer.d.ts +2 -2
- package/dist/construct-renderer.d.ts.map +1 -1
- package/dist/construct-renderer.mjs +11146 -14507
- package/dist/construct-renderer.mjs.map +1 -1
- package/dist/device/device-scope.d.ts +4 -0
- package/dist/device/device-scope.d.ts.map +1 -1
- package/dist/device/gpu-residency.d.ts +19 -2
- package/dist/device/gpu-residency.d.ts.map +1 -1
- package/dist/environment/frame.d.ts +60 -0
- package/dist/environment/frame.d.ts.map +1 -0
- package/dist/environment/generation.d.ts +21 -0
- package/dist/environment/generation.d.ts.map +1 -0
- package/dist/environment/graph.d.ts +4 -0
- package/dist/environment/graph.d.ts.map +1 -0
- package/dist/environment/inspection.d.ts +48 -0
- package/dist/environment/inspection.d.ts.map +1 -0
- package/dist/environment/lifecycle.d.ts +39 -0
- package/dist/environment/lifecycle.d.ts.map +1 -0
- package/dist/environment/signature.d.ts +25 -0
- package/dist/environment/signature.d.ts.map +1 -0
- package/dist/errors/render.d.ts +204 -1
- package/dist/errors/render.d.ts.map +1 -1
- package/dist/extract/camera.d.ts +5 -0
- package/dist/extract/camera.d.ts.map +1 -0
- package/dist/extract/environment.d.ts +74 -0
- package/dist/extract/environment.d.ts.map +1 -0
- package/dist/extract/visibility.d.ts +1 -1
- package/dist/extract/visibility.d.ts.map +1 -1
- package/dist/features/host.d.ts +9 -2
- package/dist/features/host.d.ts.map +1 -1
- package/dist/features/motion-blur/motion-blur-feature.d.ts +16 -0
- package/dist/features/motion-blur/motion-blur-feature.d.ts.map +1 -0
- package/dist/features/motion-blur/motion-blur-params.d.ts +25 -0
- package/dist/features/motion-blur/motion-blur-params.d.ts.map +1 -0
- package/dist/features/plan.d.ts +17 -2
- package/dist/features/plan.d.ts.map +1 -1
- package/dist/features/prepared-gpu-work.d.ts +3 -1
- package/dist/features/prepared-gpu-work.d.ts.map +1 -1
- package/dist/features/prepared-graphics.d.ts +2 -1
- package/dist/features/prepared-graphics.d.ts.map +1 -1
- package/dist/features/render-graph-raster.d.ts +2 -1
- package/dist/features/render-graph-raster.d.ts.map +1 -1
- package/dist/features/targets.d.ts +3 -0
- package/dist/features/targets.d.ts.map +1 -1
- package/dist/features/types.d.ts +12 -0
- package/dist/features/types.d.ts.map +1 -1
- package/dist/fullscreen-post-process-pass.d.ts +7 -1
- package/dist/fullscreen-post-process-pass.d.ts.map +1 -1
- package/dist/gpu-scene.d.ts +2 -0
- package/dist/gpu-scene.d.ts.map +1 -1
- package/dist/gpu-usage.d.ts +2 -0
- package/dist/gpu-usage.d.ts.map +1 -1
- package/dist/ibl/skylight-bind-group.d.ts +5 -6
- package/dist/ibl/skylight-bind-group.d.ts.map +1 -1
- package/dist/index.d.ts +24 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +6 -4
- package/dist/index.mjs.map +1 -1
- package/dist/inspection-types.d.ts +43 -1
- package/dist/inspection-types.d.ts.map +1 -1
- package/dist/internal.d.ts +2 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.mjs +2 -0
- package/dist/light-buffer-layout.d.ts +20 -12
- package/dist/light-buffer-layout.d.ts.map +1 -1
- package/dist/materials.d.ts +22 -0
- package/dist/materials.d.ts.map +1 -1
- package/dist/pbr-pipeline.d.ts +16 -9
- package/dist/pbr-pipeline.d.ts.map +1 -1
- package/dist/pipeline/standard-forward-lane.d.ts.map +1 -1
- package/dist/pipeline/standard-pipeline.d.ts +3 -0
- package/dist/pipeline/standard-pipeline.d.ts.map +1 -1
- package/dist/pipeline/standard-post.d.ts +48 -0
- package/dist/pipeline/standard-post.d.ts.map +1 -0
- package/dist/pipeline/standard-profile.d.ts +12 -2
- package/dist/pipeline/standard-profile.d.ts.map +1 -1
- package/dist/pipeline-builder.d.ts +18 -0
- package/dist/pipeline-builder.d.ts.map +1 -1
- package/dist/pipeline-spec.d.ts.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/record/frame-lighting.d.ts +2 -0
- package/dist/record/frame-lighting.d.ts.map +1 -1
- package/dist/record/frame-snapshot.d.ts +137 -6
- 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 +6 -3
- package/dist/record/frame.d.ts.map +1 -1
- package/dist/record/gpu-timing.d.ts +32 -0
- package/dist/record/gpu-timing.d.ts.map +1 -0
- package/dist/record/main-pass-geometry.d.ts +11 -0
- package/dist/record/main-pass-geometry.d.ts.map +1 -1
- package/dist/record/main-pass-material.d.ts +9 -6
- package/dist/record/main-pass-material.d.ts.map +1 -1
- package/dist/record/main-pass-sprite-draws.d.ts +8 -1
- package/dist/record/main-pass-sprite-draws.d.ts.map +1 -1
- package/dist/record/main-pass.d.ts +2 -0
- package/dist/record/main-pass.d.ts.map +1 -1
- package/dist/record/mesh-ssbo.d.ts.map +1 -1
- package/dist/record/render-context.d.ts +81 -19
- package/dist/record/render-context.d.ts.map +1 -1
- package/dist/record/shadow-pass.d.ts.map +1 -1
- package/dist/record/skybox-post-pass.d.ts +1 -11
- package/dist/record/skybox-post-pass.d.ts.map +1 -1
- package/dist/record/typed-frame-graph.d.ts +36 -4
- package/dist/record/typed-frame-graph.d.ts.map +1 -1
- package/dist/record/view-ubo.d.ts +4 -1
- package/dist/record/view-ubo.d.ts.map +1 -1
- package/dist/render-contract.d.ts +157 -8
- package/dist/render-contract.d.ts.map +1 -1
- package/dist/render-data.d.ts +10 -6
- package/dist/render-data.d.ts.map +1 -1
- package/dist/render-graph-primitives.d.ts.map +1 -1
- package/dist/render-pipeline.d.ts +86 -6
- package/dist/render-pipeline.d.ts.map +1 -1
- package/dist/render-system-extract.d.ts +84 -8
- package/dist/render-system-extract.d.ts.map +1 -1
- package/dist/render-system.d.ts +30 -5
- package/dist/render-system.d.ts.map +1 -1
- package/dist/renderer-inspect.d.ts +29 -0
- package/dist/renderer-inspect.d.ts.map +1 -0
- package/dist/scene/render-scene.d.ts +36 -2
- package/dist/scene/render-scene.d.ts.map +1 -1
- package/dist/temporal/coverage.d.ts +42 -0
- package/dist/temporal/coverage.d.ts.map +1 -0
- package/dist/temporal/frame-coordinator.d.ts +99 -0
- package/dist/temporal/frame-coordinator.d.ts.map +1 -0
- package/dist/temporal/frame.d.ts +44 -0
- package/dist/temporal/frame.d.ts.map +1 -0
- package/dist/temporal/gpu.d.ts +39 -0
- package/dist/temporal/gpu.d.ts.map +1 -0
- package/dist/temporal/history.d.ts +37 -0
- package/dist/temporal/history.d.ts.map +1 -0
- package/dist/temporal/index.d.ts +7 -0
- package/dist/temporal/index.d.ts.map +1 -0
- package/dist/temporal/index.mjs +8 -0
- package/dist/temporal/index.mjs.map +1 -0
- package/dist/temporal/inspection.d.ts +36 -0
- package/dist/temporal/inspection.d.ts.map +1 -0
- package/dist/temporal/scene-data-catalog.d.ts +48 -0
- package/dist/temporal/scene-data-catalog.d.ts.map +1 -0
- package/dist/temporal/scene-data.d.ts +43 -0
- package/dist/temporal/scene-data.d.ts.map +1 -0
- package/dist/temporal/standard-scene-data.d.ts +61 -0
- package/dist/temporal/standard-scene-data.d.ts.map +1 -0
- package/dist/temporal/taa-history-resources.d.ts +22 -0
- package/dist/temporal/taa-history-resources.d.ts.map +1 -0
- package/dist/temporal/taa-history-store.d.ts +27 -0
- package/dist/temporal/taa-history-store.d.ts.map +1 -0
- package/dist/temporal/taa-resolve.d.ts +15 -0
- package/dist/temporal/taa-resolve.d.ts.map +1 -0
- package/dist/temporal/temporal-view.d.ts +40 -0
- package/dist/temporal/temporal-view.d.ts.map +1 -0
- package/dist/temporal/transaction.d.ts +9 -0
- package/dist/temporal/transaction.d.ts.map +1 -0
- package/dist/temporal/view.d.ts +56 -0
- package/dist/temporal/view.d.ts.map +1 -0
- package/dist/transmission/backdrop.d.ts +147 -0
- package/dist/transmission/backdrop.d.ts.map +1 -0
- package/dist/transmission/inspection.d.ts +57 -0
- package/dist/transmission/inspection.d.ts.map +1 -0
- package/dist/transmission/oracle.d.ts +42 -0
- package/dist/transmission/oracle.d.ts.map +1 -0
- package/dist/transmission/projection.d.ts +37 -0
- package/dist/transmission/projection.d.ts.map +1 -0
- package/dist/typed-render-graph-primitives.d.ts +30 -2
- package/dist/typed-render-graph-primitives.d.ts.map +1 -1
- package/dist/typed-shadow-atlas.d.ts +10 -0
- package/dist/typed-shadow-atlas.d.ts.map +1 -0
- package/dist/typed-shadow-passes.d.ts.map +1 -1
- package/dist/volume/capability.d.ts +57 -0
- package/dist/volume/capability.d.ts.map +1 -0
- package/dist/volume/component.d.ts +61 -0
- package/dist/volume/component.d.ts.map +1 -0
- package/dist/volume/extract.d.ts +11 -0
- package/dist/volume/extract.d.ts.map +1 -0
- package/dist/volume/inspection.d.ts +38 -0
- package/dist/volume/inspection.d.ts.map +1 -0
- package/dist/volume/passes.d.ts +38 -0
- package/dist/volume/passes.d.ts.map +1 -0
- package/dist/volume/recovery.d.ts +38 -0
- package/dist/volume/recovery.d.ts.map +1 -0
- package/dist/volume/resources.d.ts +57 -0
- package/dist/volume/resources.d.ts.map +1 -0
- package/dist/volume/temporal.d.ts +35 -0
- package/dist/volume/temporal.d.ts.map +1 -0
- package/package.json +24 -19
- package/src/__tests__/ai-user-cold-start.integration.test.ts +59 -0
- package/src/__tests__/ai-user-public-surface.test-d.ts +45 -0
- package/src/__tests__/bloom-exact-zero.unit.test.ts +202 -0
- package/src/__tests__/bloom-lifecycle.integration.test.ts +125 -0
- package/src/__tests__/construct-renderer-identity.unit.test.ts +4 -3
- package/src/__tests__/detached-inspection.integration.test.ts +177 -0
- package/src/__tests__/environment-fog-lanes.integration.test.ts +219 -0
- package/src/__tests__/environment-generation.integration.test.ts +141 -0
- package/src/__tests__/environment-selection.unit.test.ts +245 -0
- package/src/__tests__/factory-contract.integration.test.ts +1380 -9
- package/src/__tests__/frame-plan-contract.unit.test.ts +90 -0
- package/src/__tests__/fullscreen-feature-plan.unit.test.ts +7 -0
- package/src/__tests__/gpu-driven-production.integration.test.ts +74 -22
- package/src/__tests__/gpu-driven-view-graph.integration.test.ts +37 -0
- package/src/__tests__/gpu-scene.unit.test.ts +10 -0
- package/src/__tests__/injection-kind-owner.test-d.ts +2 -1
- package/src/__tests__/ktx2-basis-gpu-consumer.dawn.test.ts +14 -14
- package/src/__tests__/material-contract-inventory.unit.test.ts +62 -0
- package/src/__tests__/material-cooked-projection.unit.test.ts +18 -146
- package/src/__tests__/materials-transmission-validation.unit.test.ts +36 -0
- package/src/__tests__/mesh-buffer-usage-surface.unit.test.ts +1 -1
- package/src/__tests__/morph-feature-plan.unit.test.ts +7 -0
- package/src/__tests__/motion-blur.pixel.integration.test.ts +121 -0
- package/src/__tests__/public-surface.test-d.ts +15 -1
- package/src/__tests__/render-error-code-owner.test-d.ts +14 -0
- package/src/__tests__/render-error-detail-ssot.test-d.ts +11 -2
- package/src/__tests__/render-error-exhaustive.test-d.ts +3 -0
- package/src/__tests__/render-feature-errors.unit.test.ts +33 -3
- package/src/__tests__/render-feature-gpu-work.integration.test.ts +44 -0
- package/src/__tests__/render-feature-plan.test-d.ts +22 -89
- package/src/__tests__/render-scene-projection.unit.test.ts +28 -0
- package/src/__tests__/render-temporal-environment-consumer.browser.test.ts +26 -0
- package/src/__tests__/render-temporal-environment-consumer.dawn.test.ts +21 -0
- package/src/__tests__/renderer-factory-material-contract.unit.test.ts +423 -1
- package/src/__tests__/renderer-frame-transaction.integration.test.ts +405 -0
- package/src/__tests__/renderer-lifecycle.integration.test.ts +22 -0
- package/src/__tests__/scene-data-catalog.unit.test.ts +59 -0
- package/src/__tests__/scene-data-consumer.integration.test.ts +67 -0
- package/src/__tests__/scene-data-contract.test-d.ts +35 -0
- package/src/__tests__/scene-data-inspection.unit.test.ts +41 -0
- package/src/__tests__/scene-data-public-surface.test-d.ts +34 -0
- package/src/__tests__/shader-manifest-fixture.ts +111 -0
- package/src/__tests__/skinned-shadow-caster.test.ts +123 -0
- package/src/__tests__/standard-clustered-pipeline.unit.test.ts +24 -3
- package/src/__tests__/standard-pipeline.dawn.test.ts +15 -0
- package/src/__tests__/standard-pipeline.integration.test.ts +543 -1
- package/src/__tests__/standard-profile-oracle.unit.test.ts +12 -2
- package/src/__tests__/standard-temporal-producer.integration.test.ts +35 -0
- package/src/__tests__/surface-configuration.unit.test.ts +211 -12
- package/src/__tests__/taa-transaction.integration.test.ts +30 -0
- package/src/__tests__/temporal-admission.integration.test.ts +40 -0
- package/src/__tests__/temporal-coverage.unit.test.ts +35 -0
- package/src/__tests__/temporal-demand.unit.test.ts +44 -0
- package/src/__tests__/temporal-frame-coordinator.unit.test.ts +64 -0
- package/src/__tests__/temporal-graph-topology.unit.test.ts +51 -0
- package/src/__tests__/temporal-history-lifecycle.unit.test.ts +170 -0
- package/src/__tests__/temporal-performance.integration.test.ts +615 -0
- package/src/__tests__/temporal-reset-matrix.unit.test.ts +97 -0
- package/src/__tests__/temporal-transaction.integration.test.ts +60 -0
- package/src/__tests__/temporal-view.unit.test.ts +152 -0
- package/src/__tests__/transmission-prewarm.unit.test.ts +93 -0
- package/src/__tests__/typed-pipeline-topology.unit.test.ts +230 -1
- package/src/__tests__/urp-pipeline-targets.unit.test.ts +25 -1
- package/src/__tests__/urp-pipeline.unit.test.ts +4 -3
- package/src/__tests__/visibility-extract.integration.test.ts +27 -1
- package/src/__tests__/visibility-producer-matrix.integration.test.ts +10 -0
- package/src/__tests__/volume-optics-oracle.unit.test.ts +85 -0
- package/src/__tests__/volumetric-fog-budget-recovery.integration.test.ts +655 -0
- package/src/__tests__/volumetric-fog-component.unit.test.ts +71 -0
- package/src/__tests__/volumetric-fog-composite-stage-readback.dawn.test.ts +376 -0
- package/src/__tests__/volumetric-fog-errors.unit.test.ts +51 -0
- package/src/__tests__/volumetric-fog-inspection.unit.test.ts +77 -0
- package/src/__tests__/volumetric-fog-light-capability.unit.test.ts +19 -0
- package/src/__tests__/volumetric-fog-light-consumers.integration.test.ts +18 -0
- package/src/__tests__/volumetric-fog-light-errors.unit.test.ts +17 -0
- package/src/__tests__/volumetric-fog-light-topology.unit.test.ts +21 -0
- package/src/__tests__/volumetric-fog-light-transaction.integration.test.ts +53 -0
- package/src/__tests__/volumetric-fog-m9-watcher.integration.test.ts +27 -0
- package/src/__tests__/volumetric-fog-point-light-owner.integration.test.ts +44 -0
- package/src/__tests__/volumetric-fog-point-spot-accumulation.integration.test.ts +49 -0
- package/src/__tests__/volumetric-fog-point-spot-contract.unit.test.ts +28 -0
- package/src/__tests__/volumetric-fog-point-spot-lkg.integration.test.ts +65 -0
- package/src/__tests__/volumetric-fog-point-spot-selection.integration.test.ts +49 -0
- package/src/__tests__/volumetric-fog-point-spot-temporal.unit.test.ts +55 -0
- package/src/__tests__/volumetric-fog-projector-contract.unit.test.ts +22 -0
- package/src/__tests__/volumetric-fog-projector-inspection.unit.test.ts +12 -0
- package/src/__tests__/volumetric-fog-projector-surface-volume.integration.test.ts +11 -0
- package/src/__tests__/volumetric-fog-projector-transaction.integration.test.ts +26 -0
- package/src/__tests__/volumetric-fog-recovery.integration.test.ts +47 -0
- package/src/__tests__/volumetric-fog-selected-light-resolution.integration.test.ts +63 -0
- package/src/__tests__/volumetric-fog-spot-closure.integration.test.ts +26 -0
- package/src/__tests__/volumetric-fog-spot-contract.test-d.ts +21 -0
- package/src/__tests__/volumetric-fog-spot-contract.unit.test.ts +27 -0
- package/src/__tests__/volumetric-fog-spot-frame-optics.integration.test.ts +14 -0
- package/src/__tests__/volumetric-fog-spot-optics.integration.test.ts +29 -0
- package/src/__tests__/volumetric-fog-stage-readback.dawn.test.ts +550 -0
- package/src/__tests__/volumetric-fog-temporal-selected-light.unit.test.ts +33 -0
- package/src/__tests__/volumetric-fog-temporal.unit.test.ts +45 -0
- package/src/__tests__/volumetric-fog-topology.unit.test.ts +237 -0
- package/src/__tests__/volumetric-fog-transparent.integration.test.ts +27 -0
- package/src/assembly/backend-contract.ts +47 -1
- package/src/assembly/factory.ts +1480 -505
- package/src/assembly/host-contract.ts +4 -0
- package/src/assembly/renderer-frame-transaction.ts +75 -0
- package/src/assembly/renderer-inspection.ts +112 -0
- package/src/assembly/renderer-lifecycle.ts +6 -0
- package/src/components/__tests__/motion-blur.unit.test.ts +14 -0
- package/src/components/__tests__/schema-contract.unit.test.ts +6 -1
- package/src/components/atmosphere.ts +10 -0
- package/src/components/camera.ts +2 -1
- package/src/components/fog.ts +9 -0
- package/src/components/index.ts +3 -0
- package/src/components/light-helpers.ts +4 -0
- package/src/components/motion-blur.ts +8 -0
- package/src/components/spot-light.ts +22 -3
- package/src/construct-renderer.ts +40 -3
- package/src/device/device-scope.ts +15 -1
- package/src/device/gpu-residency.ts +168 -58
- package/src/environment/frame.ts +185 -0
- package/src/environment/generation.ts +23 -0
- package/src/environment/graph.ts +9 -0
- package/src/environment/inspection.ts +87 -0
- package/src/environment/lifecycle.ts +250 -0
- package/src/environment/signature.ts +55 -0
- package/src/errors/render.ts +404 -1
- package/src/extract/camera.ts +78 -0
- package/src/extract/environment.ts +171 -0
- package/src/extract/visibility.ts +38 -19
- package/src/features/host.ts +36 -5
- package/src/features/motion-blur/__tests__/motion-blur-feature.unit.test.ts +67 -0
- package/src/features/motion-blur/__tests__/motion-blur-params.unit.test.ts +53 -0
- package/src/features/motion-blur/motion-blur-feature.ts +119 -0
- package/src/features/motion-blur/motion-blur-params.ts +89 -0
- package/src/features/plan.ts +32 -3
- package/src/features/prepared-gpu-work.ts +21 -6
- package/src/features/prepared-graphics.ts +2 -1
- package/src/features/render-graph-raster.ts +2 -1
- package/src/features/targets.ts +24 -2
- package/src/features/types.ts +13 -0
- package/src/fullscreen-post-process-pass.ts +34 -4
- package/src/gpu-scene.ts +24 -0
- package/src/gpu-usage.ts +2 -0
- package/src/ibl/skylight-bind-group.ts +30 -38
- package/src/index.ts +104 -7
- package/src/inspection-types.ts +48 -0
- package/src/internal.ts +5 -0
- package/src/light-buffer-layout.ts +59 -26
- package/src/materials.ts +119 -24
- package/src/pbr-pipeline.ts +91 -29
- package/src/pipeline/standard-forward-lane.ts +178 -101
- package/src/pipeline/standard-pipeline.ts +176 -105
- package/src/pipeline/standard-post.ts +373 -0
- package/src/pipeline/standard-profile.ts +26 -3
- package/src/pipeline-builder.ts +102 -12
- package/src/pipeline-spec.ts +9 -0
- package/src/plugin.ts +2 -0
- package/src/record/__tests__/fullscreen-temporal-routing.unit.test.ts +25 -0
- package/src/record/__tests__/main-pass-geometry.unit.test.ts +47 -0
- package/src/record/__tests__/material-bg-cache.unit.test.ts +12 -1
- package/src/record/__tests__/material-pipeline-pending-cache.unit.test.ts +22 -0
- package/src/record/__tests__/sprite-material-abi.unit.test.ts +75 -0
- package/src/record/__tests__/standard-pbr-ubo-layout.unit.test.ts +67 -0
- package/src/record/__tests__/temporal-payload.unit.test.ts +164 -0
- package/src/record/__tests__/typed-frame-graph-plan.unit.test.ts +127 -0
- package/src/record/frame-lighting.ts +103 -89
- package/src/record/frame-snapshot.ts +170 -6
- package/src/record/frame-targets.ts +21 -8
- package/src/record/frame.ts +1014 -7
- package/src/record/gpu-timing.ts +224 -0
- package/src/record/main-pass-geometry.ts +86 -40
- package/src/record/main-pass-material.ts +120 -68
- package/src/record/main-pass-sprite-draws.ts +78 -101
- package/src/record/main-pass.ts +77 -4
- package/src/record/mesh-ssbo.ts +22 -3
- package/src/record/render-context.ts +194 -23
- package/src/record/shadow-pass.ts +197 -58
- package/src/record/skybox-post-pass.ts +97 -41
- package/src/record/typed-frame-graph.ts +704 -30
- package/src/record/view-ubo.ts +52 -4
- package/src/render-contract.ts +181 -6
- package/src/render-data.ts +50 -22
- package/src/render-graph-primitives.ts +18 -1
- package/src/render-pipeline.ts +144 -27
- package/src/render-system-extract.ts +522 -72
- package/src/render-system.ts +561 -41
- package/src/renderer-inspect.ts +66 -0
- package/src/scene/render-scene.ts +252 -7
- package/src/temporal/__tests__/taa-history-resources.unit.test.ts +45 -0
- package/src/temporal/coverage.ts +76 -0
- package/src/temporal/frame-coordinator.ts +311 -0
- package/src/temporal/frame.ts +128 -0
- package/src/temporal/gpu.ts +287 -0
- package/src/temporal/history.ts +92 -0
- package/src/temporal/index.ts +6 -0
- package/src/temporal/inspection.ts +97 -0
- package/src/temporal/scene-data-catalog.ts +200 -0
- package/src/temporal/scene-data.ts +149 -0
- package/src/temporal/standard-scene-data.ts +182 -0
- package/src/temporal/taa-history-resources.ts +128 -0
- package/src/temporal/taa-history-store.ts +79 -0
- package/src/temporal/taa-resolve.ts +34 -0
- package/src/temporal/temporal-view.ts +169 -0
- package/src/temporal/transaction.ts +17 -0
- package/src/temporal/view.ts +161 -0
- package/src/transmission/__tests__/capability.unit.test.ts +83 -0
- package/src/transmission/__tests__/composition.integration.test.ts +161 -0
- package/src/transmission/__tests__/inspection.unit.test.ts +241 -0
- package/src/transmission/__tests__/lifecycle.integration.test.ts +96 -0
- package/src/transmission/__tests__/oracle.unit.test.ts +131 -0
- package/src/transmission/__tests__/projection.unit.test.ts +71 -0
- package/src/transmission/__tests__/standard-transmission.dawn.test.ts +437 -0
- package/src/transmission/__tests__/transmission-backdrop-topology.unit.test.ts +109 -0
- package/src/transmission/__tests__/transmission-backdrop.dawn.test.ts +105 -0
- package/src/transmission/backdrop.ts +572 -0
- package/src/transmission/inspection.ts +190 -0
- package/src/transmission/oracle.ts +141 -0
- package/src/transmission/projection.ts +83 -0
- package/src/typed-render-graph-primitives.ts +194 -11
- package/src/typed-shadow-atlas.ts +17 -0
- package/src/typed-shadow-passes.ts +6 -5
- package/src/volume/capability.ts +173 -0
- package/src/volume/component.ts +110 -0
- package/src/volume/extract.ts +21 -0
- package/src/volume/inspection.ts +78 -0
- package/src/volume/passes.ts +680 -0
- package/src/volume/recovery.ts +86 -0
- package/src/volume/resources.ts +236 -0
- package/src/volume/temporal.ts +89 -0
- package/dist/__tests__/authoring-path.unit.test.d.ts +0 -2
- package/dist/__tests__/authoring-path.unit.test.d.ts.map +0 -1
- package/dist/__tests__/backend-selection-rhi-capture.test-d.d.ts +0 -2
- package/dist/__tests__/backend-selection-rhi-capture.test-d.d.ts.map +0 -1
- package/dist/__tests__/callback-inference.test-d.d.ts +0 -2
- package/dist/__tests__/callback-inference.test-d.d.ts.map +0 -1
- package/dist/__tests__/cluster-binner.test.d.ts +0 -2
- package/dist/__tests__/cluster-binner.test.d.ts.map +0 -1
- package/dist/__tests__/cluster-grid-default-surface.unit.test.d.ts +0 -2
- package/dist/__tests__/cluster-grid-default-surface.unit.test.d.ts.map +0 -1
- package/dist/__tests__/construct-renderer-identity.unit.test.d.ts +0 -2
- package/dist/__tests__/construct-renderer-identity.unit.test.d.ts.map +0 -1
- package/dist/__tests__/device-scope-lifecycle.unit.test.d.ts +0 -2
- package/dist/__tests__/device-scope-lifecycle.unit.test.d.ts.map +0 -1
- package/dist/__tests__/device-scope-stale-matrix.unit.test.d.ts +0 -2
- package/dist/__tests__/device-scope-stale-matrix.unit.test.d.ts.map +0 -1
- package/dist/__tests__/direct-extract-consumer-contract.test-d.d.ts +0 -2
- package/dist/__tests__/direct-extract-consumer-contract.test-d.d.ts.map +0 -1
- package/dist/__tests__/direct-light-snapshot.unit.test.d.ts +0 -2
- package/dist/__tests__/direct-light-snapshot.unit.test.d.ts.map +0 -1
- package/dist/__tests__/factory-contract.integration.test.d.ts +0 -2
- package/dist/__tests__/factory-contract.integration.test.d.ts.map +0 -1
- package/dist/__tests__/fallback-row-stride-surface.unit.test.d.ts +0 -2
- package/dist/__tests__/fallback-row-stride-surface.unit.test.d.ts.map +0 -1
- package/dist/__tests__/frame-observation.contract.test.d.ts +0 -2
- package/dist/__tests__/frame-observation.contract.test.d.ts.map +0 -1
- package/dist/__tests__/fullscreen-feature-plan.unit.test.d.ts +0 -2
- package/dist/__tests__/fullscreen-feature-plan.unit.test.d.ts.map +0 -1
- package/dist/__tests__/glyph-text-layout-recovery.unit.test.d.ts +0 -2
- package/dist/__tests__/glyph-text-layout-recovery.unit.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-driven-indirect-raster-evidence.d.ts +0 -6
- package/dist/__tests__/gpu-driven-indirect-raster-evidence.d.ts.map +0 -1
- package/dist/__tests__/gpu-driven-indirect-raster.browser.test.d.ts +0 -2
- package/dist/__tests__/gpu-driven-indirect-raster.browser.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-driven-indirect-raster.dawn.test.d.ts +0 -2
- package/dist/__tests__/gpu-driven-indirect-raster.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-driven-production.integration.test.d.ts +0 -2
- package/dist/__tests__/gpu-driven-production.integration.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-driven-scaling.unit.test.d.ts +0 -2
- package/dist/__tests__/gpu-driven-scaling.unit.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-driven-view-gpu-evidence.d.ts +0 -18
- package/dist/__tests__/gpu-driven-view-gpu-evidence.d.ts.map +0 -1
- package/dist/__tests__/gpu-driven-view-graph.integration.test.d.ts +0 -2
- package/dist/__tests__/gpu-driven-view-graph.integration.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-driven-view-reference.d.ts +0 -15
- package/dist/__tests__/gpu-driven-view-reference.d.ts.map +0 -1
- package/dist/__tests__/gpu-driven-view.browser.test.d.ts +0 -2
- package/dist/__tests__/gpu-driven-view.browser.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-driven-view.dawn.test.d.ts +0 -2
- package/dist/__tests__/gpu-driven-view.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-driven-view.unit.test.d.ts +0 -2
- package/dist/__tests__/gpu-driven-view.unit.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-resource-store-stride.unit.test.d.ts +0 -2
- package/dist/__tests__/gpu-resource-store-stride.unit.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-scene-render-graph-gpu.d.ts +0 -7
- package/dist/__tests__/gpu-scene-render-graph-gpu.d.ts.map +0 -1
- package/dist/__tests__/gpu-scene-render-graph.browser.test.d.ts +0 -2
- package/dist/__tests__/gpu-scene-render-graph.browser.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-scene-render-graph.dawn.test.d.ts +0 -2
- package/dist/__tests__/gpu-scene-render-graph.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-scene-schema.unit.test.d.ts +0 -2
- package/dist/__tests__/gpu-scene-schema.unit.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-scene.dawn.test.d.ts +0 -2
- package/dist/__tests__/gpu-scene.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-scene.unit.test.d.ts +0 -2
- package/dist/__tests__/gpu-scene.unit.test.d.ts.map +0 -1
- package/dist/__tests__/ibl/face-uniforms.unit.test.d.ts +0 -2
- package/dist/__tests__/ibl/face-uniforms.unit.test.d.ts.map +0 -1
- package/dist/__tests__/infinite-grid-no-vertex-probe.unit.test.d.ts +0 -2
- package/dist/__tests__/infinite-grid-no-vertex-probe.unit.test.d.ts.map +0 -1
- package/dist/__tests__/injection-kind-owner.test-d.d.ts +0 -2
- package/dist/__tests__/injection-kind-owner.test-d.d.ts.map +0 -1
- package/dist/__tests__/ktx2-basis-gpu-consumer.dawn.test.d.ts +0 -2
- package/dist/__tests__/ktx2-basis-gpu-consumer.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/light-buffer-layout.unit.test.d.ts +0 -2
- package/dist/__tests__/light-buffer-layout.unit.test.d.ts.map +0 -1
- package/dist/__tests__/material-contract-inventory.unit.test.d.ts +0 -2
- package/dist/__tests__/material-contract-inventory.unit.test.d.ts.map +0 -1
- package/dist/__tests__/material-cooked-projection.unit.test.d.ts +0 -2
- package/dist/__tests__/material-cooked-projection.unit.test.d.ts.map +0 -1
- package/dist/__tests__/material-snapshot-mutation.integration.test.d.ts +0 -2
- package/dist/__tests__/material-snapshot-mutation.integration.test.d.ts.map +0 -1
- package/dist/__tests__/material-static-dynamic-route.unit.test.d.ts +0 -2
- package/dist/__tests__/material-static-dynamic-route.unit.test.d.ts.map +0 -1
- package/dist/__tests__/material-stride-surface.unit.test.d.ts +0 -2
- package/dist/__tests__/material-stride-surface.unit.test.d.ts.map +0 -1
- package/dist/__tests__/mesh-buffer-usage-surface.unit.test.d.ts +0 -2
- package/dist/__tests__/mesh-buffer-usage-surface.unit.test.d.ts.map +0 -1
- package/dist/__tests__/mesh-material-bindings.unit.test.d.ts +0 -2
- package/dist/__tests__/mesh-material-bindings.unit.test.d.ts.map +0 -1
- package/dist/__tests__/mesh-stride-surface.unit.test.d.ts +0 -2
- package/dist/__tests__/mesh-stride-surface.unit.test.d.ts.map +0 -1
- package/dist/__tests__/morph-culling-reentry.dawn.test.d.ts +0 -2
- package/dist/__tests__/morph-culling-reentry.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/morph-feature-gpu-work.integration.test.d.ts +0 -2
- package/dist/__tests__/morph-feature-gpu-work.integration.test.d.ts.map +0 -1
- package/dist/__tests__/morph-feature-plan.unit.test.d.ts +0 -2
- package/dist/__tests__/morph-feature-plan.unit.test.d.ts.map +0 -1
- package/dist/__tests__/morph-visual-evidence.integration.test.d.ts +0 -2
- package/dist/__tests__/morph-visual-evidence.integration.test.d.ts.map +0 -1
- package/dist/__tests__/nineslice-handle-surface.unit.test.d.ts +0 -2
- package/dist/__tests__/nineslice-handle-surface.unit.test.d.ts.map +0 -1
- package/dist/__tests__/post-process-error-policy-owner.unit.test.d.ts +0 -2
- package/dist/__tests__/post-process-error-policy-owner.unit.test.d.ts.map +0 -1
- package/dist/__tests__/prepared-buffer-kind-owner.test-d.d.ts +0 -2
- package/dist/__tests__/prepared-buffer-kind-owner.test-d.d.ts.map +0 -1
- package/dist/__tests__/prepared-graphics-capability.unit.test.d.ts +0 -2
- package/dist/__tests__/prepared-graphics-capability.unit.test.d.ts.map +0 -1
- package/dist/__tests__/prepared-graphics-generation.unit.test.d.ts +0 -2
- package/dist/__tests__/prepared-graphics-generation.unit.test.d.ts.map +0 -1
- package/dist/__tests__/prepared-graphics-lifecycle.unit.test.d.ts +0 -2
- package/dist/__tests__/prepared-graphics-lifecycle.unit.test.d.ts.map +0 -1
- package/dist/__tests__/prepared-graphics-pipeline-warmup.unit.test.d.ts +0 -2
- package/dist/__tests__/prepared-graphics-pipeline-warmup.unit.test.d.ts.map +0 -1
- package/dist/__tests__/prepared-graphics-resolver.unit.test.d.ts +0 -2
- package/dist/__tests__/prepared-graphics-resolver.unit.test.d.ts.map +0 -1
- package/dist/__tests__/prepared-graphics-snapshot.unit.test.d.ts +0 -2
- package/dist/__tests__/prepared-graphics-snapshot.unit.test.d.ts.map +0 -1
- package/dist/__tests__/prepared-graphics-store.unit.test.d.ts +0 -2
- package/dist/__tests__/prepared-graphics-store.unit.test.d.ts.map +0 -1
- package/dist/__tests__/prepared-graphics-validation.unit.test.d.ts +0 -2
- package/dist/__tests__/prepared-graphics-validation.unit.test.d.ts.map +0 -1
- package/dist/__tests__/profiler-default-off.test.d.ts +0 -2
- package/dist/__tests__/profiler-default-off.test.d.ts.map +0 -1
- package/dist/__tests__/profiler-phase-catalog.test.d.ts +0 -2
- package/dist/__tests__/profiler-phase-catalog.test.d.ts.map +0 -1
- package/dist/__tests__/profiler-phase-integration.test.d.ts +0 -2
- package/dist/__tests__/profiler-phase-integration.test.d.ts.map +0 -1
- package/dist/__tests__/profiler-phase-token.test.d.ts +0 -2
- package/dist/__tests__/profiler-phase-token.test.d.ts.map +0 -1
- package/dist/__tests__/public-surface.test-d.d.ts +0 -2
- package/dist/__tests__/public-surface.test-d.d.ts.map +0 -1
- package/dist/__tests__/recover-error-policy-owner.unit.test.d.ts +0 -2
- package/dist/__tests__/recover-error-policy-owner.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-error-code-owner.test-d.d.ts +0 -2
- package/dist/__tests__/render-error-code-owner.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-error-detail-ssot.test-d.d.ts +0 -2
- package/dist/__tests__/render-error-detail-ssot.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-error-exhaustive.test-d.d.ts +0 -2
- package/dist/__tests__/render-error-exhaustive.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-assembly.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-assembly.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-context.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-context.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-contract.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-contract.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-diagnostics.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-diagnostics.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-docs.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-docs.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-errors.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-errors.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-gpu-work.integration.test.d.ts +0 -2
- package/dist/__tests__/render-feature-gpu-work.integration.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-plan.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-plan.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-plan.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-plan.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-prepared-diagnostics.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-prepared-diagnostics.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-prepared-errors.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-prepared-errors.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-prepared-graphics-docs.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-prepared-graphics-docs.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-prepared-graphics-isolation.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-prepared-graphics-isolation.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-prepared-graphics-negative.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-prepared-graphics-negative.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-prepared-graphics.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-prepared-graphics.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-prepared-graphics.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-prepared-graphics.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-public-surface.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-public-surface.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-retry.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-retry.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-scheduling.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-scheduling.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-stage-failed-policy-owner.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-stage-failed-policy-owner.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-stage-fault-recovery.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-stage-fault-recovery.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-visibility-context.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-visibility-context.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-visibility-context.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-visibility-context.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-zero-work.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-zero-work.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-graph-compute-raster-gpu.d.ts +0 -7
- package/dist/__tests__/render-graph-compute-raster-gpu.d.ts.map +0 -1
- package/dist/__tests__/render-graph-compute-raster.browser.test.d.ts +0 -2
- package/dist/__tests__/render-graph-compute-raster.browser.test.d.ts.map +0 -1
- package/dist/__tests__/render-graph-compute-raster.dawn.test.d.ts +0 -2
- package/dist/__tests__/render-graph-compute-raster.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/render-graph-hzb-gpu.d.ts +0 -7
- package/dist/__tests__/render-graph-hzb-gpu.d.ts.map +0 -1
- package/dist/__tests__/render-graph-hzb.browser.test.d.ts +0 -2
- package/dist/__tests__/render-graph-hzb.browser.test.d.ts.map +0 -1
- package/dist/__tests__/render-graph-hzb.dawn.test.d.ts +0 -2
- package/dist/__tests__/render-graph-hzb.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/render-graph-primitives.unit.test.d.ts +0 -2
- package/dist/__tests__/render-graph-primitives.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-graph-storage-indirect-gpu.d.ts +0 -12
- package/dist/__tests__/render-graph-storage-indirect-gpu.d.ts.map +0 -1
- package/dist/__tests__/render-graph-storage-indirect.browser.test.d.ts +0 -2
- package/dist/__tests__/render-graph-storage-indirect.browser.test.d.ts.map +0 -1
- package/dist/__tests__/render-graph-storage-indirect.dawn.test.d.ts +0 -2
- package/dist/__tests__/render-graph-storage-indirect.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/render-scene-projection.unit.test.d.ts +0 -2
- package/dist/__tests__/render-scene-projection.unit.test.d.ts.map +0 -1
- package/dist/__tests__/renderer-factory-material-contract.unit.test.d.ts +0 -2
- package/dist/__tests__/renderer-factory-material-contract.unit.test.d.ts.map +0 -1
- package/dist/__tests__/renderer-lifecycle.integration.test.d.ts +0 -2
- package/dist/__tests__/renderer-lifecycle.integration.test.d.ts.map +0 -1
- package/dist/__tests__/rhi-backend-package-boundary.unit.test.d.ts +0 -2
- package/dist/__tests__/rhi-backend-package-boundary.unit.test.d.ts.map +0 -1
- package/dist/__tests__/scriptable-pack-consumer.test-d.d.ts +0 -2
- package/dist/__tests__/scriptable-pack-consumer.test-d.d.ts.map +0 -1
- package/dist/__tests__/shader-stage-surface.unit.test.d.ts +0 -2
- package/dist/__tests__/shader-stage-surface.unit.test.d.ts.map +0 -1
- package/dist/__tests__/ssao-config.unit.test.d.ts +0 -2
- package/dist/__tests__/ssao-config.unit.test.d.ts.map +0 -1
- package/dist/__tests__/ssao-kernel-surface.unit.test.d.ts +0 -2
- package/dist/__tests__/ssao-kernel-surface.unit.test.d.ts.map +0 -1
- package/dist/__tests__/standard-clustered-pipeline.unit.test.d.ts +0 -2
- package/dist/__tests__/standard-clustered-pipeline.unit.test.d.ts.map +0 -1
- package/dist/__tests__/standard-descriptors.test-d.d.ts +0 -2
- package/dist/__tests__/standard-descriptors.test-d.d.ts.map +0 -1
- package/dist/__tests__/standard-pipeline.dawn.test.d.ts +0 -2
- package/dist/__tests__/standard-pipeline.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/standard-pipeline.integration.test.d.ts +0 -2
- package/dist/__tests__/standard-pipeline.integration.test.d.ts.map +0 -1
- package/dist/__tests__/standard-profile-oracle.unit.test.d.ts +0 -2
- package/dist/__tests__/standard-profile-oracle.unit.test.d.ts.map +0 -1
- package/dist/__tests__/surface-configuration.unit.test.d.ts +0 -2
- package/dist/__tests__/surface-configuration.unit.test.d.ts.map +0 -1
- package/dist/__tests__/texture-usage-surface.unit.test.d.ts +0 -2
- package/dist/__tests__/texture-usage-surface.unit.test.d.ts.map +0 -1
- package/dist/__tests__/typed-pipeline-topology.unit.test.d.ts +0 -2
- package/dist/__tests__/typed-pipeline-topology.unit.test.d.ts.map +0 -1
- package/dist/__tests__/urp-pipeline-targets.unit.test.d.ts +0 -2
- package/dist/__tests__/urp-pipeline-targets.unit.test.d.ts.map +0 -1
- package/dist/__tests__/urp-pipeline.unit.test.d.ts +0 -2
- package/dist/__tests__/urp-pipeline.unit.test.d.ts.map +0 -1
- package/dist/__tests__/vertex-color-pipeline.unit.test.d.ts +0 -2
- package/dist/__tests__/vertex-color-pipeline.unit.test.d.ts.map +0 -1
- package/dist/__tests__/vertex-layout-consumer.unit.test.d.ts +0 -2
- package/dist/__tests__/vertex-layout-consumer.unit.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-diagnostics.integration.test.d.ts +0 -2
- package/dist/__tests__/visibility-diagnostics.integration.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-extract.integration.test.d.ts +0 -2
- package/dist/__tests__/visibility-extract.integration.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-extract.perf.test.d.ts +0 -2
- package/dist/__tests__/visibility-extract.perf.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-feature-dedup.integration.test.d.ts +0 -2
- package/dist/__tests__/visibility-feature-dedup.integration.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-hidden-report.unit.test.d.ts +0 -2
- package/dist/__tests__/visibility-hidden-report.unit.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-instances.integration.test.d.ts +0 -2
- package/dist/__tests__/visibility-instances.integration.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-multi-world.integration.test.d.ts +0 -2
- package/dist/__tests__/visibility-multi-world.integration.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-producer-matrix.integration.test.d.ts +0 -2
- package/dist/__tests__/visibility-producer-matrix.integration.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-producer-matrix.unit.test.d.ts +0 -2
- package/dist/__tests__/visibility-producer-matrix.unit.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-public-surface.test-d.d.ts +0 -2
- package/dist/__tests__/visibility-public-surface.test-d.d.ts.map +0 -1
- package/dist/__tests__/visibility-resolver.unit.test.d.ts +0 -2
- package/dist/__tests__/visibility-resolver.unit.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-resource-short-circuit.unit.test.d.ts +0 -2
- package/dist/__tests__/visibility-resource-short-circuit.unit.test.d.ts.map +0 -1
- package/dist/__tests__/visibility-snapshot-contract.unit.test.d.ts +0 -2
- package/dist/__tests__/visibility-snapshot-contract.unit.test.d.ts.map +0 -1
- package/dist/__tests__/vocabulary.unit.test.d.ts +0 -2
- package/dist/__tests__/vocabulary.unit.test.d.ts.map +0 -1
- package/dist/chunk-CQXZC5XI.mjs.map +0 -1
- package/dist/chunk-HCOGPHKS.mjs +0 -93
- package/dist/chunk-HCOGPHKS.mjs.map +0 -1
- package/dist/chunk-YEJIUW7D.mjs.map +0 -1
- package/dist/components/__tests__/points-lines-admission.unit.test.d.ts +0 -2
- package/dist/components/__tests__/points-lines-admission.unit.test.d.ts.map +0 -1
- package/dist/components/__tests__/points-lines-schema.unit.test.d.ts +0 -2
- package/dist/components/__tests__/points-lines-schema.unit.test.d.ts.map +0 -1
- package/dist/components/__tests__/schema-contract.unit.test.d.ts +0 -2
- package/dist/components/__tests__/schema-contract.unit.test.d.ts.map +0 -1
- package/dist/components/__tests__/schema-parity.unit.test.d.ts +0 -2
- package/dist/components/__tests__/schema-parity.unit.test.d.ts.map +0 -1
- package/dist/components/__tests__/visibility-schema.unit.test.d.ts +0 -2
- package/dist/components/__tests__/visibility-schema.unit.test.d.ts.map +0 -1
- package/dist/points-lines/__tests__/bounds.unit.test.d.ts +0 -2
- package/dist/points-lines/__tests__/bounds.unit.test.d.ts.map +0 -1
- package/dist/points-lines/__tests__/cache-recovery.unit.test.d.ts +0 -2
- package/dist/points-lines/__tests__/cache-recovery.unit.test.d.ts.map +0 -1
- package/dist/points-lines/__tests__/inspection-lanes.integration.test.d.ts +0 -2
- package/dist/points-lines/__tests__/inspection-lanes.integration.test.d.ts.map +0 -1
- package/dist/points-lines/__tests__/inspection.unit.test.d.ts +0 -2
- package/dist/points-lines/__tests__/inspection.unit.test.d.ts.map +0 -1
- package/dist/points-lines/__tests__/lane-structural.integration.test.d.ts +0 -2
- package/dist/points-lines/__tests__/lane-structural.integration.test.d.ts.map +0 -1
- package/dist/points-lines/__tests__/points-lines.bench.d.ts +0 -2
- package/dist/points-lines/__tests__/points-lines.bench.d.ts.map +0 -1
- package/dist/points-lines/__tests__/raster-lane.integration.test.d.ts +0 -2
- package/dist/points-lines/__tests__/raster-lane.integration.test.d.ts.map +0 -1
- package/dist/points-lines/__tests__/snapshot.unit.test.d.ts +0 -2
- package/dist/points-lines/__tests__/snapshot.unit.test.d.ts.map +0 -1
- package/dist/points-lines/__tests__/view-ubo.unit.test.d.ts +0 -2
- package/dist/points-lines/__tests__/view-ubo.unit.test.d.ts.map +0 -1
- package/dist/record/__tests__/material-bg-cache.unit.test.d.ts +0 -2
- package/dist/record/__tests__/material-bg-cache.unit.test.d.ts.map +0 -1
- package/dist/record/__tests__/material-slot-plan.unit.test.d.ts +0 -2
- package/dist/record/__tests__/material-slot-plan.unit.test.d.ts.map +0 -1
- package/dist/record/__tests__/typed-frame-graph-plan.unit.test.d.ts +0 -2
- package/dist/record/__tests__/typed-frame-graph-plan.unit.test.d.ts.map +0 -1
- package/dist/record/__tests__/video-texture-view.unit.test.d.ts +0 -2
- package/dist/record/__tests__/video-texture-view.unit.test.d.ts.map +0 -1
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import { defineComponent, Entity } from '@forgeax/engine-ecs';
|
|
2
|
-
import { TONEMAP_SHADER_MODE } from '@forgeax/engine-shader';
|
|
3
1
|
import { err, ok } from '@forgeax/engine-types';
|
|
4
|
-
import { projectHierarchy } from '@forgeax/engine-scene';
|
|
5
2
|
|
|
6
3
|
// src/errors/render.ts
|
|
7
4
|
var LifecycleConstructionError = class extends Error {
|
|
@@ -15,6 +12,17 @@ var LifecycleConstructionError = class extends Error {
|
|
|
15
12
|
this.detail = detail;
|
|
16
13
|
}
|
|
17
14
|
};
|
|
15
|
+
var TemporalFrameSubmitError = class extends Error {
|
|
16
|
+
code = "temporal-frame-submit-rejected";
|
|
17
|
+
expected = "the staged frame is accepted by queue.submit before temporal facts advance";
|
|
18
|
+
hint = "inspect the queue submission and retry the frame after the device is available";
|
|
19
|
+
detail;
|
|
20
|
+
constructor(reason) {
|
|
21
|
+
super(`temporal-frame-submit-rejected: ${reason}`);
|
|
22
|
+
this.name = "TemporalFrameSubmitError";
|
|
23
|
+
this.detail = { reason };
|
|
24
|
+
}
|
|
25
|
+
};
|
|
18
26
|
var ShadowInvalidConfigError = class extends Error {
|
|
19
27
|
code = "shadow-invalid-config";
|
|
20
28
|
expected;
|
|
@@ -205,6 +213,17 @@ var MaterialSkinAttrMissingError = class extends Error {
|
|
|
205
213
|
this.detail = { entity, missing };
|
|
206
214
|
}
|
|
207
215
|
};
|
|
216
|
+
var TransmissionCapabilityMissingError = class extends Error {
|
|
217
|
+
code = "transmission-capability-missing";
|
|
218
|
+
expected = "the renderer exposes the transmission capability for this material";
|
|
219
|
+
hint = "disable transmission or provide the renderer capability before drawing";
|
|
220
|
+
detail;
|
|
221
|
+
constructor(material, stage, evidence) {
|
|
222
|
+
super(`transmission capability is missing for material '${material}'`);
|
|
223
|
+
this.name = "TransmissionCapabilityMissingError";
|
|
224
|
+
this.detail = { material, capability: "transmission", stage, ...evidence };
|
|
225
|
+
}
|
|
226
|
+
};
|
|
208
227
|
var renderFeatureRecoveryHintByRecovery = {
|
|
209
228
|
"next-frame": (featureIdentity, stage) => `correct '${featureIdentity}' ${stage} data and retry on the next frame`,
|
|
210
229
|
"renderer-recover": (featureIdentity, _stage) => `wait for renderer recovery before retrying '${featureIdentity}'`,
|
|
@@ -335,6 +354,26 @@ var ObservationUnavailableError = class extends Error {
|
|
|
335
354
|
this.detail = { reason, recovery };
|
|
336
355
|
}
|
|
337
356
|
};
|
|
357
|
+
var SceneDataUnavailableError = class extends Error {
|
|
358
|
+
code = "scene-data-unavailable";
|
|
359
|
+
expected = "the requested semantic scene data is available for the active plan";
|
|
360
|
+
hint;
|
|
361
|
+
detail;
|
|
362
|
+
constructor(detail) {
|
|
363
|
+
const hint = detail.recovery === "enable-capability" ? "enable rgba16floatRenderable and retry the current frame" : detail.recovery === "renderer-recover" ? "wait for renderer recovery, then retry the frame" : "restore the producer coverage and retry on the next frame";
|
|
364
|
+
super(`scene data '${detail.schema}' unavailable for '${detail.featureIdentity}'`);
|
|
365
|
+
this.name = "SceneDataUnavailableError";
|
|
366
|
+
this.hint = hint;
|
|
367
|
+
this.detail = Object.freeze({
|
|
368
|
+
...detail,
|
|
369
|
+
missingContributorIds: Object.freeze([...detail.missingContributorIds].slice(0, 32)),
|
|
370
|
+
omittedMissingContributorCount: Math.max(
|
|
371
|
+
detail.omittedMissingContributorCount,
|
|
372
|
+
Math.max(0, detail.missingContributorIds.length - 32)
|
|
373
|
+
)
|
|
374
|
+
});
|
|
375
|
+
}
|
|
376
|
+
};
|
|
338
377
|
var FrameReceiptStaleError = class extends Error {
|
|
339
378
|
code = "frame-receipt-stale";
|
|
340
379
|
expected = "the observation receipt belongs to the active device generation";
|
|
@@ -357,6 +396,75 @@ var RendererContractFailureError = class extends Error {
|
|
|
357
396
|
this.detail = { operation, cause };
|
|
358
397
|
}
|
|
359
398
|
};
|
|
399
|
+
var EnvironmentSourceConflictError = class extends Error {
|
|
400
|
+
code = "environment-source-conflict";
|
|
401
|
+
expected = "exactly one environment source owns the frame";
|
|
402
|
+
hint = "remove all but one image or atmosphere environment owner";
|
|
403
|
+
detail;
|
|
404
|
+
constructor(owners) {
|
|
405
|
+
super("environment source owners conflict");
|
|
406
|
+
this.name = "EnvironmentSourceConflictError";
|
|
407
|
+
this.detail = { owners: owners.map((owner) => Object.freeze({ ...owner })) };
|
|
408
|
+
}
|
|
409
|
+
};
|
|
410
|
+
var FogCardinalityError = class extends Error {
|
|
411
|
+
code = "fog-cardinality";
|
|
412
|
+
expected = "zero or one Fog owner contributes to a frame";
|
|
413
|
+
hint = "remove extra Fog owners so the resource owner has at most one";
|
|
414
|
+
detail;
|
|
415
|
+
constructor(count) {
|
|
416
|
+
super(`Fog owner cardinality is ${count}`);
|
|
417
|
+
this.name = "FogCardinalityError";
|
|
418
|
+
this.detail = { count };
|
|
419
|
+
}
|
|
420
|
+
};
|
|
421
|
+
var TaaCapsInsufficientError = class extends Error {
|
|
422
|
+
code = "taa-caps-insufficient";
|
|
423
|
+
expected = "the backend exposes the capabilities required by TAA";
|
|
424
|
+
hint = "select a backend with the required TAA capabilities or disable TAA on Camera";
|
|
425
|
+
detail;
|
|
426
|
+
constructor(required, available) {
|
|
427
|
+
super("TAA capabilities are insufficient");
|
|
428
|
+
this.name = "TaaCapsInsufficientError";
|
|
429
|
+
this.detail = { required: [...required], available: [...available] };
|
|
430
|
+
}
|
|
431
|
+
};
|
|
432
|
+
var EnvironmentGenerationFailedError = class extends Error {
|
|
433
|
+
code = "environment-generation-failed";
|
|
434
|
+
expected = "the selected environment generation completes its owner stage";
|
|
435
|
+
hint = "inspect the stage and sourceKey, then retry after correcting the environment";
|
|
436
|
+
detail;
|
|
437
|
+
constructor(sourceKey, stage) {
|
|
438
|
+
super(`environment generation failed during ${stage}`);
|
|
439
|
+
this.name = "EnvironmentGenerationFailedError";
|
|
440
|
+
this.detail = { sourceKey, stage };
|
|
441
|
+
}
|
|
442
|
+
};
|
|
443
|
+
var AtmosphereInvalidParameterError = class extends Error {
|
|
444
|
+
code = "atmosphere-invalid-parameter";
|
|
445
|
+
expected;
|
|
446
|
+
hint;
|
|
447
|
+
detail;
|
|
448
|
+
constructor(field, value, range) {
|
|
449
|
+
super(`Atmosphere.${field} is invalid`);
|
|
450
|
+
this.name = "AtmosphereInvalidParameterError";
|
|
451
|
+
this.detail = { field, value };
|
|
452
|
+
const rangeText = Number.isFinite(range.max) ? `[${range.min}, ${range.max}]` : `>= ${range.min}`;
|
|
453
|
+
this.expected = `Atmosphere.${field} must be finite and ${rangeText}`;
|
|
454
|
+
this.hint = `set Atmosphere.${field} to a finite value ${rangeText}`;
|
|
455
|
+
}
|
|
456
|
+
};
|
|
457
|
+
var OwnerStageFailedError = class extends Error {
|
|
458
|
+
code = "owner-stage-failed";
|
|
459
|
+
expected = "the owner completes its current frame stage";
|
|
460
|
+
hint = "inspect the owner and stage, keep the last-known-good frame, and retry";
|
|
461
|
+
detail;
|
|
462
|
+
constructor(owner, stage) {
|
|
463
|
+
super(`${owner} owner failed during ${stage}`);
|
|
464
|
+
this.name = "OwnerStageFailedError";
|
|
465
|
+
this.detail = { owner, stage };
|
|
466
|
+
}
|
|
467
|
+
};
|
|
360
468
|
var RENDERER_OPERATION_ERROR_POLICY = {
|
|
361
469
|
"world-lease-invalid": {
|
|
362
470
|
expected: "every render World is represented by a live lease owned by this Renderer",
|
|
@@ -494,349 +602,246 @@ var PointsLinesPrepareFailedError = class extends Error {
|
|
|
494
602
|
this.detail = detail;
|
|
495
603
|
}
|
|
496
604
|
};
|
|
497
|
-
var
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
var TONEMAP_CINEON = TONEMAP_SHADER_MODE.cineon;
|
|
507
|
-
var TONEMAP_ACES_FILMIC = TONEMAP_SHADER_MODE.acesFilmic;
|
|
508
|
-
var TONEMAP_AGX = TONEMAP_SHADER_MODE.agx;
|
|
509
|
-
var TONEMAP_NEUTRAL = TONEMAP_SHADER_MODE.neutral;
|
|
510
|
-
function tonemapFromF32(value) {
|
|
511
|
-
switch (value) {
|
|
512
|
-
case TONEMAP_REINHARD_EXTENDED:
|
|
513
|
-
return "reinhard-extended";
|
|
514
|
-
case TONEMAP_REINHARD:
|
|
515
|
-
return "reinhard";
|
|
516
|
-
case TONEMAP_LINEAR:
|
|
517
|
-
return "linear";
|
|
518
|
-
case TONEMAP_CINEON:
|
|
519
|
-
return "cineon";
|
|
520
|
-
case TONEMAP_ACES_FILMIC:
|
|
521
|
-
return "aces-filmic";
|
|
522
|
-
case TONEMAP_AGX:
|
|
523
|
-
return "agx";
|
|
524
|
-
case TONEMAP_NEUTRAL:
|
|
525
|
-
return "neutral";
|
|
526
|
-
default:
|
|
527
|
-
return "none";
|
|
605
|
+
var VolumeOwnerConflictError = class extends Error {
|
|
606
|
+
code = "volume-owner-conflict";
|
|
607
|
+
expected = "exactly one global VolumetricFog owner is authored";
|
|
608
|
+
hint = "remove additional VolumetricFog owners and retry extraction";
|
|
609
|
+
detail;
|
|
610
|
+
constructor(ownerCount) {
|
|
611
|
+
super(`volume-owner-conflict: received ${ownerCount} owners`);
|
|
612
|
+
this.name = "VolumeOwnerConflictError";
|
|
613
|
+
this.detail = { ownerCount };
|
|
528
614
|
}
|
|
529
|
-
}
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
return TONEMAP_CINEON;
|
|
540
|
-
case "aces-filmic":
|
|
541
|
-
return TONEMAP_ACES_FILMIC;
|
|
542
|
-
case "agx":
|
|
543
|
-
return TONEMAP_AGX;
|
|
544
|
-
case "neutral":
|
|
545
|
-
return TONEMAP_NEUTRAL;
|
|
546
|
-
case "none":
|
|
547
|
-
return TONEMAP_NONE;
|
|
615
|
+
};
|
|
616
|
+
var VolumeDensityShapeMismatchError = class extends Error {
|
|
617
|
+
code = "volume-density-shape-mismatch";
|
|
618
|
+
expected = "density is a linear 3D TextureAsset";
|
|
619
|
+
hint = "bind a verified linear texture with viewDimension 3d";
|
|
620
|
+
detail;
|
|
621
|
+
constructor(guid, viewDimension) {
|
|
622
|
+
super(`volume-density-shape-mismatch: ${viewDimension} density is not 3d`);
|
|
623
|
+
this.name = "VolumeDensityShapeMismatchError";
|
|
624
|
+
this.detail = { guid, viewDimension };
|
|
548
625
|
}
|
|
549
|
-
|
|
626
|
+
};
|
|
627
|
+
var VolumeInvalidBoundsError = class extends Error {
|
|
628
|
+
code = "volume-invalid-bounds";
|
|
629
|
+
expected = "bounds are finite and max is greater than min on every axis";
|
|
630
|
+
hint = "set finite non-degenerate volume bounds";
|
|
631
|
+
detail;
|
|
632
|
+
constructor(bounds) {
|
|
633
|
+
super("volume-invalid-bounds: bounds must be finite and non-degenerate");
|
|
634
|
+
this.name = "VolumeInvalidBoundsError";
|
|
635
|
+
this.detail = bounds;
|
|
636
|
+
}
|
|
637
|
+
};
|
|
638
|
+
var VolumeInvalidParametersError = class extends Error {
|
|
639
|
+
code = "volume-invalid-parameters";
|
|
640
|
+
expected = "volume parameters remain finite and inside their closed ranges";
|
|
641
|
+
hint = "repair extinction, albedo, emission, anisotropy, or maxDistance";
|
|
642
|
+
detail;
|
|
643
|
+
constructor(input) {
|
|
644
|
+
const field = input.maxDistance !== void 0 && input.maxDistance <= 0 ? "maxDistance" : "parameters";
|
|
645
|
+
const value = field === "maxDistance" ? input.maxDistance : input.anisotropy;
|
|
646
|
+
super(`volume-invalid-parameters: ${field} is outside the authored range`);
|
|
647
|
+
this.name = "VolumeInvalidParametersError";
|
|
648
|
+
this.detail = { field, value };
|
|
649
|
+
}
|
|
650
|
+
};
|
|
651
|
+
|
|
652
|
+
// src/temporal/scene-data.ts
|
|
653
|
+
var SCENE_DATA_TEMPORAL_V1_SCHEMA = "forgeax::scene-data::temporal-v1";
|
|
654
|
+
var SCENE_DATA_TEMPORAL_V1_DESCRIPTOR = Object.freeze({
|
|
655
|
+
schema: SCENE_DATA_TEMPORAL_V1_SCHEMA,
|
|
656
|
+
format: "rgba16float",
|
|
657
|
+
sampleCount: 1,
|
|
658
|
+
extent: "render-resolution",
|
|
659
|
+
clearValue: [0, 0, -1, 1],
|
|
660
|
+
channels: Object.freeze({
|
|
661
|
+
motionUv: "rg",
|
|
662
|
+
viewDepth: "b-log2-1-plus-depth",
|
|
663
|
+
reactive: "a"
|
|
664
|
+
})
|
|
665
|
+
});
|
|
666
|
+
var targetOwners = /* @__PURE__ */ new WeakMap();
|
|
667
|
+
function registerSceneDataTarget(target, owner) {
|
|
668
|
+
targetOwners.set(target, owner);
|
|
550
669
|
}
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
var ANTIALIAS_MSAA = 2;
|
|
554
|
-
var ANTIALIAS_TAA = 3;
|
|
555
|
-
function antialiasFromF32(value) {
|
|
556
|
-
if (value === ANTIALIAS_NONE) return "none";
|
|
557
|
-
if (value === ANTIALIAS_FXAA) return "fxaa";
|
|
558
|
-
if (value === ANTIALIAS_MSAA) return "msaa";
|
|
559
|
-
if (value === ANTIALIAS_TAA) return "taa";
|
|
560
|
-
throw new RangeError(
|
|
561
|
-
`Invalid antialias value: ${value}. Expected ${ANTIALIAS_NONE} (none), ${ANTIALIAS_FXAA} (fxaa), ${ANTIALIAS_MSAA} (msaa), or ${ANTIALIAS_TAA} (taa).`
|
|
562
|
-
);
|
|
670
|
+
function sceneDataTargetOwner(target) {
|
|
671
|
+
return typeof target === "object" && target !== null ? targetOwners.get(target) : void 0;
|
|
563
672
|
}
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
673
|
+
function sceneDataTokenMismatch(operation, reason, owner, target) {
|
|
674
|
+
const detail = reason === "generation-mismatch" ? {
|
|
675
|
+
featureIdentity: owner.featureIdentity,
|
|
676
|
+
order: -1,
|
|
677
|
+
stage: "contribute",
|
|
678
|
+
operation,
|
|
679
|
+
resourceKind: "attachment",
|
|
680
|
+
reason,
|
|
681
|
+
expectedGeneration: owner.generation,
|
|
682
|
+
actualGeneration: targetOwners.get(target)?.generation ?? -1,
|
|
683
|
+
recovery: "renderer-recover"
|
|
684
|
+
} : reason === "foreign-feature" ? {
|
|
685
|
+
featureIdentity: owner.featureIdentity,
|
|
686
|
+
order: -1,
|
|
687
|
+
stage: "contribute",
|
|
688
|
+
operation,
|
|
689
|
+
resourceKind: "attachment",
|
|
690
|
+
reason,
|
|
691
|
+
expectedFeatureIdentity: owner.featureIdentity,
|
|
692
|
+
actualFeatureIdentity: targetOwners.get(target)?.featureIdentity ?? "unknown",
|
|
693
|
+
recovery: "next-frame"
|
|
694
|
+
} : reason === "foreign-kind" ? {
|
|
695
|
+
featureIdentity: owner.featureIdentity,
|
|
696
|
+
order: -1,
|
|
697
|
+
stage: "contribute",
|
|
698
|
+
operation,
|
|
699
|
+
resourceKind: "attachment",
|
|
700
|
+
reason,
|
|
701
|
+
expectedKind: "attachment",
|
|
702
|
+
actualKind: "pipeline",
|
|
703
|
+
recovery: "next-frame"
|
|
704
|
+
} : {
|
|
705
|
+
featureIdentity: owner.featureIdentity,
|
|
706
|
+
order: -1,
|
|
707
|
+
stage: "contribute",
|
|
708
|
+
operation,
|
|
709
|
+
resourceKind: "attachment",
|
|
710
|
+
reason,
|
|
711
|
+
expectedLayout: "sampled-read-temporal-v1",
|
|
712
|
+
actualLayout: target?.access ?? "unknown",
|
|
713
|
+
recovery: "next-frame"
|
|
714
|
+
};
|
|
715
|
+
return new RenderFeaturePreparedStateMismatchError(detail);
|
|
572
716
|
}
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
far: { type: "f32" },
|
|
578
|
-
projection: { type: "f32", default: 0 },
|
|
579
|
-
left: { type: "f32", default: -1 },
|
|
580
|
-
right: { type: "f32", default: 1 },
|
|
581
|
-
bottom: { type: "f32", default: -1 },
|
|
582
|
-
top: { type: "f32", default: 1 },
|
|
583
|
-
tonemap: { type: "f32", default: 0 },
|
|
584
|
-
exposure: { type: "f32", default: 1 },
|
|
585
|
-
whitePoint: { type: "f32", default: 4 },
|
|
586
|
-
antialias: { type: "f32", default: 0 },
|
|
587
|
-
historyVersion: { type: "u32", default: 0 },
|
|
588
|
-
bloom: { type: "f32", default: 0 },
|
|
589
|
-
bloomThreshold: { type: "f32", default: 1 },
|
|
590
|
-
bloomIntensity: { type: "f32", default: 1 },
|
|
591
|
-
bloomBlurRadius: { type: "f32", default: 4 },
|
|
592
|
-
// feat-20260709 M3 / D-3: clear-color is one inline `array<f32,4>` column.
|
|
593
|
-
// The earlier 4-scalar form (clearR/G/B/A) was chosen when this was believed
|
|
594
|
-
// to be the only SoA-safe shape; the Transform (pos/quat/scale) and light
|
|
595
|
-
// (direction/color) precedents disprove that -- an `array<f32,N>` IS an
|
|
596
|
-
// inline stride-N SoA column, read on the hot path as `col[i*N+a]` with zero
|
|
597
|
-
// allocation, so collapsing four scalars into one column removes three field
|
|
598
|
-
// names a reader must track without changing the storage layout or read
|
|
599
|
-
// pattern. The default `[0, 0, 0, 0]` is transparent black; explicit alpha
|
|
600
|
-
// stays visible through the same public array field.
|
|
601
|
-
clearColor: { type: "array<f32, 4>", default: new Float32Array([0, 0, 0, 0]) },
|
|
602
|
-
// feat-20260617-host-engine-contract-and-video-cutscene / M3 / D-4: the
|
|
603
|
-
// aspect-sync sidecar on the createApp(canvas) path writes
|
|
604
|
-
// canvas.width / canvas.height into `aspect` every frame when this flag is
|
|
605
|
-
// true. Reuses the existing `bool` column tier (AnimationPlayer.paused /
|
|
606
|
-
// AudioSource.playing precedent) -- zero ECS infrastructure change. Default
|
|
607
|
-
// true so demos that never touch aspect track the canvas automatically
|
|
608
|
-
// (charter P1 default-is-correct); set false for render-to-texture /
|
|
609
|
-
// split-screen cameras that drive aspect themselves. Read it via
|
|
610
|
-
// world.get (readRow narrows bool -> JS boolean); the query-bundle path
|
|
611
|
-
// returns a raw 0/1 number (the `!== 0` always-true trap).
|
|
612
|
-
autoAspect: { type: "bool", default: true }
|
|
613
|
-
});
|
|
614
|
-
function cameraPodFromDefaults() {
|
|
615
|
-
const base = {};
|
|
616
|
-
for (const [key, field] of Object.entries(Camera.fields)) {
|
|
617
|
-
if ("default" in field && field.default !== void 0) {
|
|
618
|
-
base[key] = field.default;
|
|
619
|
-
}
|
|
620
|
-
}
|
|
621
|
-
return base;
|
|
717
|
+
function isSceneDataTarget(value) {
|
|
718
|
+
if (value === null || typeof value !== "object") return false;
|
|
719
|
+
const candidate = value;
|
|
720
|
+
return candidate.kind === "scene-data" && candidate.schema === SCENE_DATA_TEMPORAL_V1_SCHEMA && candidate.access === "sampled-read" && candidate.format === "rgba16float" && candidate.sampleCount === 1 && candidate.extent === "render-resolution" && targetOwners.has(value);
|
|
622
721
|
}
|
|
623
|
-
function
|
|
624
|
-
|
|
625
|
-
// cameraPodFromDefaults() reads autoAspect's schema default (true), so an
|
|
626
|
-
// omitted opts.autoAspect lands the default-correct value; an explicit
|
|
627
|
-
// false overrides it below (D-4: factory one-step opt-out, charter P1).
|
|
628
|
-
...cameraPodFromDefaults(),
|
|
629
|
-
fov: opts.fov,
|
|
630
|
-
aspect: opts.aspect,
|
|
631
|
-
near: opts.near ?? 0.1,
|
|
632
|
-
far: opts.far ?? 100,
|
|
633
|
-
projection: CAMERA_PROJECTION_PERSPECTIVE,
|
|
634
|
-
...opts.autoAspect !== void 0 ? { autoAspect: opts.autoAspect } : {}
|
|
635
|
-
};
|
|
722
|
+
function sceneDataTargetAsAttachment(_target) {
|
|
723
|
+
throw new TypeError("SceneDataTarget is sampled-read-only and cannot be used as an attachment");
|
|
636
724
|
}
|
|
637
|
-
function
|
|
725
|
+
function sceneDataError(error) {
|
|
726
|
+
return error;
|
|
727
|
+
}
|
|
728
|
+
function availability(options) {
|
|
729
|
+
if (options.recovering) return { status: "unavailable", reason: "renderer-recovering" };
|
|
730
|
+
if (!options.rgba16floatRenderable)
|
|
731
|
+
return { status: "unavailable", reason: "capability-missing" };
|
|
732
|
+
if (options.producerPresent === false)
|
|
733
|
+
return { status: "unavailable", reason: "producer-missing" };
|
|
734
|
+
if (options.coverageComplete === false)
|
|
735
|
+
return { status: "unavailable", reason: "coverage-incomplete" };
|
|
638
736
|
return {
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
aspect: 1,
|
|
642
|
-
near: opts.near ?? 0.1,
|
|
643
|
-
far: opts.far ?? 100,
|
|
644
|
-
projection: CAMERA_PROJECTION_ORTHOGRAPHIC,
|
|
645
|
-
left: opts.left,
|
|
646
|
-
right: opts.right,
|
|
647
|
-
bottom: opts.bottom,
|
|
648
|
-
top: opts.top
|
|
737
|
+
status: "available",
|
|
738
|
+
completeness: options.reactiveFallback ? "exact-with-reactive-fallback" : "exact"
|
|
649
739
|
};
|
|
650
740
|
}
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
mapSize: { type: "f32", default: 2048 },
|
|
667
|
-
depthBias: { type: "f32", default: 5e-3 },
|
|
668
|
-
normalBias: { type: "f32", default: 0.05 },
|
|
669
|
-
// Sole shadow coverage knob (feat replaces nearPlane/farPlane). The PSSM
|
|
670
|
-
// near end derives from the active camera near; shadowDistance is the far
|
|
671
|
-
// reach. Default 200 world units (matches UE-style "dynamic shadow
|
|
672
|
-
// distance"; the old farPlane default was 50).
|
|
673
|
-
shadowDistance: { type: "f32", default: 200 },
|
|
674
|
-
pcfKernelSize: { type: "f32", default: 3 }
|
|
675
|
-
});
|
|
676
|
-
var Instances = defineComponent("Instances", {
|
|
677
|
-
transforms: { type: "array<f32>" }
|
|
678
|
-
});
|
|
679
|
-
var Layer = defineComponent("Layer", {
|
|
680
|
-
value: { type: "i32", default: 0 }
|
|
681
|
-
});
|
|
682
|
-
var Lines = defineComponent(
|
|
683
|
-
"Lines",
|
|
684
|
-
{
|
|
685
|
-
widthPx: { type: "f32", default: 1 }
|
|
686
|
-
},
|
|
687
|
-
{
|
|
688
|
-
meta: {
|
|
689
|
-
quickStart: "Attach Lines to render line-list MeshAsset pairs in screen pixels.",
|
|
690
|
-
diagnostics: "Inspect widthPx at the points-lines admission boundary.",
|
|
691
|
-
recovery: "Use points-lines-invalid-style for non-finite or non-positive widthPx values.",
|
|
692
|
-
boundaries: "Lines owns raster width only; MeshFilter and MeshRenderer own geometry and material."
|
|
693
|
-
}
|
|
694
|
-
}
|
|
695
|
-
);
|
|
696
|
-
var MeshFilter = defineComponent("MeshFilter", {
|
|
697
|
-
assetHandle: { type: "shared<MeshAsset>" }
|
|
698
|
-
});
|
|
699
|
-
var MeshRenderer = defineComponent("MeshRenderer", {
|
|
700
|
-
materials: { type: "array<shared<MaterialAsset>>", default: [] }
|
|
701
|
-
});
|
|
702
|
-
var PointLight = defineComponent("PointLight", {
|
|
703
|
-
// color carries an explicit layer-2 default [1,1,1] (white); the array
|
|
704
|
-
// layer-3 fallback is all-zero, so the default MUST be explicit (D-5).
|
|
705
|
-
color: { type: "array<f32, 3>", default: new Float32Array([1, 1, 1]) },
|
|
706
|
-
intensity: { type: "f32", default: 1 },
|
|
707
|
-
range: { type: "f32", default: 10 }
|
|
708
|
-
});
|
|
709
|
-
var PointLightShadow = defineComponent("PointLightShadow", {
|
|
710
|
-
mapSize: { type: "f32", default: 512 },
|
|
711
|
-
depthBias: { type: "f32", default: 5e-3 },
|
|
712
|
-
normalBias: { type: "f32", default: 0.05 },
|
|
713
|
-
nearPlane: { type: "f32", default: 0.1 },
|
|
714
|
-
farPlane: { type: "f32", default: 25 },
|
|
715
|
-
pcfKernelSize: { type: "f32", default: 3 }
|
|
716
|
-
});
|
|
717
|
-
var PointShapeValue = Object.freeze({
|
|
718
|
-
square: 0,
|
|
719
|
-
circle: 1
|
|
720
|
-
});
|
|
721
|
-
function pointShapeFromU32(value) {
|
|
722
|
-
switch (value) {
|
|
723
|
-
case PointShapeValue.square:
|
|
724
|
-
return "square";
|
|
725
|
-
case PointShapeValue.circle:
|
|
726
|
-
return "circle";
|
|
727
|
-
default:
|
|
728
|
-
return void 0;
|
|
729
|
-
}
|
|
741
|
+
function createTarget(owner) {
|
|
742
|
+
const target = Object.freeze({
|
|
743
|
+
kind: "scene-data",
|
|
744
|
+
schema: SCENE_DATA_TEMPORAL_V1_SCHEMA,
|
|
745
|
+
access: "sampled-read",
|
|
746
|
+
format: "rgba16float",
|
|
747
|
+
sampleCount: 1,
|
|
748
|
+
extent: "render-resolution"
|
|
749
|
+
});
|
|
750
|
+
registerSceneDataTarget(target, {
|
|
751
|
+
featureIdentity: owner.featureIdentity,
|
|
752
|
+
planIdentity: owner.planIdentity,
|
|
753
|
+
generation: owner.generation
|
|
754
|
+
});
|
|
755
|
+
return target;
|
|
730
756
|
}
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
boundaries: "Points owns raster size and shape only; MeshFilter and MeshRenderer own geometry and material."
|
|
743
|
-
}
|
|
744
|
-
}
|
|
745
|
-
);
|
|
746
|
-
var schema = {
|
|
747
|
-
shader: "string",
|
|
748
|
-
data: "buffer"
|
|
749
|
-
};
|
|
750
|
-
var PostProcessParams = defineComponent("PostProcessParams", schema);
|
|
751
|
-
var SceneInstance = defineComponent(
|
|
752
|
-
"SceneInstance",
|
|
753
|
-
{
|
|
754
|
-
source: { type: "shared<SceneAsset>" },
|
|
755
|
-
mapping: { type: "array<entity>" },
|
|
756
|
-
// The unique slot is the ECS storage seam for the instance's structured
|
|
757
|
-
// runtime payload; keep the nested semantic visible to schema consumers.
|
|
758
|
-
state: { type: "unique<SceneInstanceState>", shape: "nested" }
|
|
759
|
-
},
|
|
760
|
-
{ transient: true }
|
|
761
|
-
);
|
|
762
|
-
var SKYBOX_MODE_CUBEMAP = 0;
|
|
763
|
-
var SkyboxBackground = defineComponent("SkyboxBackground", {
|
|
764
|
-
// The GPU skybox projection is render-owned presentation state; restore
|
|
765
|
-
// keeps the portable mode/rotation controls and lets the owner re-resolve
|
|
766
|
-
// the environment asset on the target world.
|
|
767
|
-
equirect: { type: "shared<EquirectAsset>", simulationTransient: true },
|
|
768
|
-
mode: { type: "f32", default: SKYBOX_MODE_CUBEMAP },
|
|
769
|
-
rotation: { type: "array<f32, 4>", default: new Float32Array([0, 0, 0, 1]) }
|
|
770
|
-
});
|
|
771
|
-
var Skylight = defineComponent("Skylight", {
|
|
772
|
-
// The GPU equirect-to-cubemap projection is render-owned presentation
|
|
773
|
-
// state. Record/restore preserves the portable lighting controls while the
|
|
774
|
-
// render owner resolves this asset again on the target world.
|
|
775
|
-
equirect: { type: "shared<EquirectAsset>", simulationTransient: true },
|
|
776
|
-
// color carries an explicit layer-2 default [1,1,1] (white); the array
|
|
777
|
-
// layer-3 fallback is all-zero, so the default MUST be explicit (D-5).
|
|
778
|
-
color: { type: "array<f32, 3>", default: new Float32Array([1, 1, 1]) },
|
|
779
|
-
intensity: { type: "f32", default: 1 },
|
|
780
|
-
rotation: { type: "array<f32, 4>", default: new Float32Array([0, 0, 0, 1]) }
|
|
781
|
-
});
|
|
782
|
-
var SortKey = defineComponent("SortKey", {
|
|
783
|
-
value: { type: "f32", default: 0 }
|
|
784
|
-
});
|
|
785
|
-
var SpotLight = defineComponent("SpotLight", {
|
|
786
|
-
// direction has no default (D-5): omitting it lands the array layer-3
|
|
787
|
-
// all-zero, which validate() rejects. color carries an explicit layer-2
|
|
788
|
-
// default [1,1,1] (white); the array layer-3 fallback is all-zero.
|
|
789
|
-
direction: { type: "array<f32, 3>" },
|
|
790
|
-
color: { type: "array<f32, 3>", default: new Float32Array([1, 1, 1]) },
|
|
791
|
-
intensity: { type: "f32", default: 1 },
|
|
792
|
-
range: { type: "f32", default: 10 },
|
|
793
|
-
innerConeDeg: { type: "f32", default: 0 },
|
|
794
|
-
outerConeDeg: { type: "f32", default: 45 },
|
|
795
|
-
// Shadow opt-out gate: defaults to true so zero-config spawns cast shadows.
|
|
796
|
-
castShadow: { type: "bool", default: true },
|
|
797
|
-
// 6 shadow fields aligned with DirectionalLight (plan-strategy D-6).
|
|
798
|
-
mapSize: { type: "f32", default: 2048 },
|
|
799
|
-
depthBias: { type: "f32", default: 5e-3 },
|
|
800
|
-
normalBias: { type: "f32", default: 0.05 },
|
|
801
|
-
nearPlane: { type: "f32", default: 0.1 },
|
|
802
|
-
farPlane: { type: "f32", default: 50 },
|
|
803
|
-
pcfKernelSize: { type: "f32", default: 3 }
|
|
804
|
-
});
|
|
805
|
-
var VisibilityStateValue = Object.freeze({
|
|
806
|
-
inherited: 0,
|
|
807
|
-
hidden: 1,
|
|
808
|
-
visible: 2
|
|
809
|
-
});
|
|
810
|
-
function visibilityStateFromU32(value) {
|
|
811
|
-
switch (value) {
|
|
812
|
-
case VisibilityStateValue.inherited:
|
|
813
|
-
return "inherited";
|
|
814
|
-
case VisibilityStateValue.hidden:
|
|
815
|
-
return "hidden";
|
|
816
|
-
case VisibilityStateValue.visible:
|
|
817
|
-
return "visible";
|
|
818
|
-
default:
|
|
819
|
-
return void 0;
|
|
820
|
-
}
|
|
757
|
+
function tokenError(catalog, operation) {
|
|
758
|
+
return sceneDataTokenMismatch(
|
|
759
|
+
operation,
|
|
760
|
+
"foreign-kind",
|
|
761
|
+
{
|
|
762
|
+
featureIdentity: catalog.featureIdentity,
|
|
763
|
+
planIdentity: catalog.planIdentity,
|
|
764
|
+
generation: catalog.generation
|
|
765
|
+
},
|
|
766
|
+
void 0
|
|
767
|
+
);
|
|
821
768
|
}
|
|
822
|
-
|
|
823
|
-
"
|
|
824
|
-
{
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
769
|
+
function unavailableError(options, reason) {
|
|
770
|
+
const recovery = reason === "capability-missing" ? "enable-capability" : reason === "renderer-recovering" ? "renderer-recover" : "next-frame";
|
|
771
|
+
return new SceneDataUnavailableError({
|
|
772
|
+
featureIdentity: options.featureIdentity,
|
|
773
|
+
schema: SCENE_DATA_TEMPORAL_V1_SCHEMA,
|
|
774
|
+
lane: options.lane ?? "direct",
|
|
775
|
+
reason,
|
|
776
|
+
missingContributorIds: options.missingContributorIds ?? [],
|
|
777
|
+
omittedMissingContributorCount: 0,
|
|
778
|
+
recovery
|
|
779
|
+
});
|
|
780
|
+
}
|
|
781
|
+
function createSceneDataCatalog(options) {
|
|
782
|
+
const state = availability(options);
|
|
783
|
+
const owner = {
|
|
784
|
+
featureIdentity: options.featureIdentity,
|
|
785
|
+
planIdentity: options.planIdentity,
|
|
786
|
+
generation: options.generation
|
|
787
|
+
};
|
|
788
|
+
const missing = [...options.missingContributorIds ?? []];
|
|
789
|
+
const inspectionBase = {
|
|
790
|
+
schema: SCENE_DATA_TEMPORAL_V1_SCHEMA,
|
|
791
|
+
generation: options.generation,
|
|
792
|
+
planIdentity: options.planIdentity,
|
|
793
|
+
lane: options.lane ?? "direct",
|
|
794
|
+
missingContributorIds: Object.freeze(missing.slice(0, 32)),
|
|
795
|
+
omittedMissingContributorCount: Math.max(0, missing.length - 32)
|
|
796
|
+
};
|
|
797
|
+
return {
|
|
798
|
+
schema: SCENE_DATA_TEMPORAL_V1_SCHEMA,
|
|
799
|
+
generation: options.generation,
|
|
800
|
+
planIdentity: options.planIdentity,
|
|
801
|
+
availability: state,
|
|
802
|
+
require(schema) {
|
|
803
|
+
if (schema !== SCENE_DATA_TEMPORAL_V1_SCHEMA || state.status !== "available") {
|
|
804
|
+
if (state.status === "unavailable") throw unavailableError(options, state.reason);
|
|
805
|
+
throw tokenError(options, "require scene-data target");
|
|
806
|
+
}
|
|
807
|
+
return createTarget(options);
|
|
808
|
+
},
|
|
809
|
+
validate(target, generation = options.generation) {
|
|
810
|
+
const targetOwner = sceneDataTargetOwner(target);
|
|
811
|
+
if (targetOwner === void 0) {
|
|
812
|
+
return err(
|
|
813
|
+
sceneDataTokenMismatch("validate scene-data target", "foreign-feature", owner, target)
|
|
814
|
+
);
|
|
815
|
+
}
|
|
816
|
+
if (targetOwner.planIdentity !== owner.planIdentity || targetOwner.featureIdentity !== owner.featureIdentity) {
|
|
817
|
+
return err(
|
|
818
|
+
sceneDataTokenMismatch("validate scene-data target", "foreign-feature", owner, target)
|
|
819
|
+
);
|
|
820
|
+
}
|
|
821
|
+
if (generation !== owner.generation || targetOwner.generation !== owner.generation) {
|
|
822
|
+
return err(
|
|
823
|
+
sceneDataTokenMismatch(
|
|
824
|
+
"validate scene-data target",
|
|
825
|
+
"generation-mismatch",
|
|
826
|
+
owner,
|
|
827
|
+
target
|
|
828
|
+
)
|
|
829
|
+
);
|
|
830
|
+
}
|
|
831
|
+
if (target.access !== "sampled-read") {
|
|
832
|
+
return err(
|
|
833
|
+
sceneDataTokenMismatch("validate scene-data target", "layout-mismatch", owner, target)
|
|
834
|
+
);
|
|
835
|
+
}
|
|
836
|
+
return ok(target);
|
|
837
|
+
},
|
|
838
|
+
inspect() {
|
|
839
|
+
return Object.freeze(
|
|
840
|
+
state.status === "available" ? { ...inspectionBase, status: state.status, completeness: state.completeness } : { ...inspectionBase, status: state.status, reason: state.reason }
|
|
841
|
+
);
|
|
837
842
|
}
|
|
838
|
-
}
|
|
839
|
-
|
|
843
|
+
};
|
|
844
|
+
}
|
|
840
845
|
|
|
841
846
|
// src/pipeline/standard-profile.ts
|
|
842
847
|
var STANDARD_PIPELINE_ID = "forgeax::standard";
|
|
@@ -845,6 +850,14 @@ var DEFAULT_CLUSTER_GRID = { x: 16, y: 9, z: 24 };
|
|
|
845
850
|
var CLUSTER_GRID_STRIDE_U32 = 2;
|
|
846
851
|
var LIGHT_INDEX_LIST_CAPACITY = 1048576;
|
|
847
852
|
var MAX_LIGHTS = 256;
|
|
853
|
+
var STANDARD_POST_STAGE_NAMES = [
|
|
854
|
+
"transparent-blend",
|
|
855
|
+
"bloom",
|
|
856
|
+
"output-transform",
|
|
857
|
+
"fxaa",
|
|
858
|
+
"post-effect",
|
|
859
|
+
"present"
|
|
860
|
+
];
|
|
848
861
|
var DEFAULT_STANDARD_PROFILE = Object.freeze({
|
|
849
862
|
pipelineId: STANDARD_PIPELINE_ID,
|
|
850
863
|
lightCount: 32,
|
|
@@ -858,15 +871,18 @@ var DEFAULT_STANDARD_PROFILE = Object.freeze({
|
|
|
858
871
|
antialias: "fxaa",
|
|
859
872
|
sky: true,
|
|
860
873
|
fallback: "native",
|
|
861
|
-
postStages:
|
|
874
|
+
postStages: STANDARD_POST_STAGE_NAMES
|
|
862
875
|
});
|
|
876
|
+
function resolveVolumetricFogProfile(profile) {
|
|
877
|
+
return profile.volumetricFog ?? { quality: "high", depth: 64, tileSize: 4 };
|
|
878
|
+
}
|
|
863
879
|
function resolveStandardLane(profile, capabilities) {
|
|
864
880
|
if (!capabilities.compute || !capabilities.storageBuffer) return "cpu-webgl2";
|
|
865
881
|
return profile.lighting;
|
|
866
882
|
}
|
|
867
883
|
|
|
868
884
|
// src/render-contract.ts
|
|
869
|
-
var
|
|
885
|
+
var STANDARD_OUTPUT_TRANSFORM_FEATURE_ID = "forgeax::standard::output-transform";
|
|
870
886
|
var RENDER_GRAPH_EXECUTION_PHASE_CATALOG = [
|
|
871
887
|
"record/graph-execute/point-shadow",
|
|
872
888
|
"record/graph-execute/cluster-binner-upload",
|
|
@@ -883,7 +899,8 @@ var RENDER_GRAPH_EXECUTION_PHASE_CATALOG = [
|
|
|
883
899
|
"record/graph-execute/forward/material-bind-groups",
|
|
884
900
|
"record/graph-execute/forward/pipeline-selection",
|
|
885
901
|
"record/graph-execute/forward/draw-submit",
|
|
886
|
-
"record/graph-execute/
|
|
902
|
+
"record/graph-execute/output-transform",
|
|
903
|
+
"record/graph-execute/present",
|
|
887
904
|
"record/graph-execute/debug-overlay",
|
|
888
905
|
"record/graph-execute/shadow",
|
|
889
906
|
"record/graph-execute/spot-shadow",
|
|
@@ -942,211 +959,7 @@ var RENDER_PHASE_CATALOG = [
|
|
|
942
959
|
"record",
|
|
943
960
|
...RENDER_RECORD_PHASE_CATALOG
|
|
944
961
|
];
|
|
945
|
-
function invalidStyle(input, component, field, value, expected) {
|
|
946
|
-
return err(new PointsLinesInvalidStyleError({ entity: input.entity, component, field, value, expected }));
|
|
947
|
-
}
|
|
948
|
-
function topologyMismatch(input, submesh, expected, actual) {
|
|
949
|
-
return err(new PointsLinesTopologyMismatchError({ entity: input.entity, submesh, expected, actual }));
|
|
950
|
-
}
|
|
951
|
-
function checkStyle(input) {
|
|
952
|
-
const hasPoints = input.points !== void 0;
|
|
953
|
-
const hasLines = input.lines !== void 0;
|
|
954
|
-
if (hasPoints && hasLines) {
|
|
955
|
-
return invalidStyle(
|
|
956
|
-
input,
|
|
957
|
-
"Points/Lines",
|
|
958
|
-
"components",
|
|
959
|
-
"Points + Lines",
|
|
960
|
-
"exactly one style component"
|
|
961
|
-
);
|
|
962
|
-
}
|
|
963
|
-
if (!hasPoints && !hasLines) {
|
|
964
|
-
return invalidStyle(input, "Points/Lines", "components", void 0, "one style component");
|
|
965
|
-
}
|
|
966
|
-
if (hasPoints) {
|
|
967
|
-
const sizePx = input.points?.sizePx ?? 4;
|
|
968
|
-
const shapeValue = input.points?.shape ?? PointShapeValue.square;
|
|
969
|
-
const shape = pointShapeFromU32(shapeValue);
|
|
970
|
-
if (!Number.isFinite(sizePx) || sizePx <= 0) {
|
|
971
|
-
return invalidStyle(input, "Points", "sizePx", sizePx, "finite sizePx > 0");
|
|
972
|
-
}
|
|
973
|
-
if (shape === void 0) {
|
|
974
|
-
return invalidStyle(input, "Points", "shape", shapeValue, "shape is 'square' or 'circle'");
|
|
975
|
-
}
|
|
976
|
-
return ok({ component: "Points", shape, sizePx });
|
|
977
|
-
}
|
|
978
|
-
const widthPx = input.lines?.widthPx ?? 1;
|
|
979
|
-
if (!Number.isFinite(widthPx) || widthPx <= 0) {
|
|
980
|
-
return invalidStyle(input, "Lines", "widthPx", widthPx, "finite widthPx > 0");
|
|
981
|
-
}
|
|
982
|
-
return ok({ component: "Lines", widthPx });
|
|
983
|
-
}
|
|
984
|
-
function checkTopology(input, component) {
|
|
985
|
-
const expected = component === "Points" ? "point-list" : "line-list";
|
|
986
|
-
let pointCount = 0;
|
|
987
|
-
let segmentCount = 0;
|
|
988
|
-
const acceptedSubmeshes = [];
|
|
989
|
-
let sawNonEmpty = false;
|
|
990
|
-
for (const [submeshIndex, submesh] of input.mesh.submeshes.entries()) {
|
|
991
|
-
const indexed = input.mesh.indices !== void 0 && submesh.indexCount > 0;
|
|
992
|
-
const elementCount = indexed ? submesh.indexCount : submesh.vertexCount;
|
|
993
|
-
if (elementCount === 0) continue;
|
|
994
|
-
sawNonEmpty = true;
|
|
995
|
-
if (component === "Lines" && submesh.topology === "line-strip") {
|
|
996
|
-
return err(
|
|
997
|
-
new PointsLinesStyleUnsupportedError({
|
|
998
|
-
lane: "admission",
|
|
999
|
-
field: "topology",
|
|
1000
|
-
member: "line-strip",
|
|
1001
|
-
supported: ["line-list"]
|
|
1002
|
-
})
|
|
1003
|
-
);
|
|
1004
|
-
}
|
|
1005
|
-
if (submesh.topology !== expected) {
|
|
1006
|
-
return topologyMismatch(input, submeshIndex, expected, submesh.topology);
|
|
1007
|
-
}
|
|
1008
|
-
if (component === "Lines" && elementCount % 2 !== 0) {
|
|
1009
|
-
return topologyMismatch(input, submeshIndex, "line-list pairs", "line-list odd tail");
|
|
1010
|
-
}
|
|
1011
|
-
acceptedSubmeshes.push(submeshIndex);
|
|
1012
|
-
if (component === "Points") pointCount += elementCount;
|
|
1013
|
-
else segmentCount += elementCount / 2;
|
|
1014
|
-
}
|
|
1015
|
-
if (!sawNonEmpty) return topologyMismatch(input, 0, expected, "empty-range");
|
|
1016
|
-
return ok({ pointCount, segmentCount, submeshes: acceptedSubmeshes });
|
|
1017
|
-
}
|
|
1018
|
-
function checkMaterial(input) {
|
|
1019
|
-
const passes = input.material.passes ?? [];
|
|
1020
|
-
const unlitModules = /* @__PURE__ */ new Set(["forgeax_material::unlit", "forgeax::default-unlit"]);
|
|
1021
|
-
if (passes.length !== 1 || passes[0] === void 0) {
|
|
1022
|
-
const pass2 = passes.find(
|
|
1023
|
-
(candidate) => candidate.name === "deferred" || candidate.name === "shadow-caster"
|
|
1024
|
-
) ?? passes[0];
|
|
1025
|
-
return err(
|
|
1026
|
-
new PointsLinesMaterialUnsupportedError({
|
|
1027
|
-
entity: input.entity,
|
|
1028
|
-
material: input.materialId ?? "<anonymous>",
|
|
1029
|
-
pass: pass2?.name ?? "<empty>",
|
|
1030
|
-
module: pass2?.program.module ?? "<empty>",
|
|
1031
|
-
reason: "points-lines admission requires one unlit forward pass"
|
|
1032
|
-
})
|
|
1033
|
-
);
|
|
1034
|
-
}
|
|
1035
|
-
const pass = passes[0];
|
|
1036
|
-
const lightMode = pass.renderState?.tags?.LightMode;
|
|
1037
|
-
if (!unlitModules.has(pass.program.module) || pass.name !== "forward" || lightMode === "ShadowCaster") {
|
|
1038
|
-
return err(
|
|
1039
|
-
new PointsLinesMaterialUnsupportedError({
|
|
1040
|
-
entity: input.entity,
|
|
1041
|
-
material: input.materialId ?? "<anonymous>",
|
|
1042
|
-
pass: pass.name,
|
|
1043
|
-
module: pass.program.module,
|
|
1044
|
-
reason: "points-lines admission requires an engine-owned unlit forward pass"
|
|
1045
|
-
})
|
|
1046
|
-
);
|
|
1047
|
-
}
|
|
1048
|
-
return ok(void 0);
|
|
1049
|
-
}
|
|
1050
|
-
function admitPointsLines(input) {
|
|
1051
|
-
const style = checkStyle(input);
|
|
1052
|
-
if (!style.ok) return style;
|
|
1053
|
-
const topology = checkTopology(input, style.value.component);
|
|
1054
|
-
if (!topology.ok) return topology;
|
|
1055
|
-
const material = checkMaterial(input);
|
|
1056
|
-
if (!material.ok) return material;
|
|
1057
|
-
if (style.value.component === "Points" && input.limits?.maxPoints !== void 0) {
|
|
1058
|
-
if (topology.value.pointCount > input.limits.maxPoints) {
|
|
1059
|
-
return err(
|
|
1060
|
-
new PointsLinesBudgetExceededError({
|
|
1061
|
-
lane: "admission",
|
|
1062
|
-
requested: topology.value.pointCount,
|
|
1063
|
-
limit: input.limits.maxPoints,
|
|
1064
|
-
unit: "points"
|
|
1065
|
-
})
|
|
1066
|
-
);
|
|
1067
|
-
}
|
|
1068
|
-
}
|
|
1069
|
-
if (style.value.component === "Lines" && input.limits?.maxSegments !== void 0) {
|
|
1070
|
-
if (topology.value.segmentCount > input.limits.maxSegments) {
|
|
1071
|
-
return err(
|
|
1072
|
-
new PointsLinesBudgetExceededError({
|
|
1073
|
-
lane: "admission",
|
|
1074
|
-
requested: topology.value.segmentCount,
|
|
1075
|
-
limit: input.limits.maxSegments,
|
|
1076
|
-
unit: "segments"
|
|
1077
|
-
})
|
|
1078
|
-
);
|
|
1079
|
-
}
|
|
1080
|
-
}
|
|
1081
|
-
return ok({ ...style.value, ...topology.value });
|
|
1082
|
-
}
|
|
1083
|
-
function resolveVisibility(world, hierarchy = projectHierarchy(world)) {
|
|
1084
|
-
const query = world.query({ read: [Entity], optional: [Visibility] });
|
|
1085
|
-
let intentCount = 0;
|
|
1086
|
-
let hasAnyHiddenIntent = false;
|
|
1087
|
-
if (query.ok) {
|
|
1088
|
-
for (const row of query.value) {
|
|
1089
|
-
const visibility = row.get(Visibility);
|
|
1090
|
-
if (visibility === void 0) continue;
|
|
1091
|
-
intentCount += 1;
|
|
1092
|
-
if (visibility.state === VisibilityStateValue.hidden) {
|
|
1093
|
-
hasAnyHiddenIntent = true;
|
|
1094
|
-
}
|
|
1095
|
-
}
|
|
1096
|
-
}
|
|
1097
|
-
let resolveEntity;
|
|
1098
|
-
let hasIntent;
|
|
1099
|
-
const ensureResolver = () => {
|
|
1100
|
-
if (resolveEntity !== void 0) return;
|
|
1101
|
-
const intentByEntity = /* @__PURE__ */ new Map();
|
|
1102
|
-
if (query.ok) {
|
|
1103
|
-
for (const row of query.value) {
|
|
1104
|
-
const raw = row.get(Visibility);
|
|
1105
|
-
const intent = raw === void 0 ? void 0 : visibilityStateFromU32(raw.state);
|
|
1106
|
-
if (intent !== void 0) {
|
|
1107
|
-
intentByEntity.set(row.entity, intent);
|
|
1108
|
-
}
|
|
1109
|
-
}
|
|
1110
|
-
}
|
|
1111
|
-
hasIntent = (entity) => intentByEntity.has(entity);
|
|
1112
|
-
const resolved = /* @__PURE__ */ new Map();
|
|
1113
|
-
const resolving = /* @__PURE__ */ new Set();
|
|
1114
|
-
resolveEntity = (entity) => {
|
|
1115
|
-
const existing = resolved.get(entity);
|
|
1116
|
-
if (existing !== void 0) return existing;
|
|
1117
|
-
if (resolving.has(entity)) return void 0;
|
|
1118
|
-
const intent = intentByEntity.get(entity) ?? "inherited";
|
|
1119
|
-
resolving.add(entity);
|
|
1120
|
-
let result;
|
|
1121
|
-
if (intent === "hidden") {
|
|
1122
|
-
result = { intent, effective: "hidden", source: "self" };
|
|
1123
|
-
} else if (intent === "visible") {
|
|
1124
|
-
result = { intent, effective: "visible", source: "self" };
|
|
1125
|
-
} else {
|
|
1126
|
-
const parent = hierarchy.getParent(entity);
|
|
1127
|
-
const parentResult = parent === void 0 ? void 0 : resolveEntity?.(parent);
|
|
1128
|
-
result = parentResult === void 0 ? { intent, effective: "visible", source: "default" } : { intent, effective: parentResult.effective, source: "parent" };
|
|
1129
|
-
}
|
|
1130
|
-
resolving.delete(entity);
|
|
1131
|
-
resolved.set(entity, result);
|
|
1132
|
-
return result;
|
|
1133
|
-
};
|
|
1134
|
-
};
|
|
1135
|
-
return {
|
|
1136
|
-
diagnostics: hierarchy.diagnostics,
|
|
1137
|
-
hasAnyIntent: intentCount > 0,
|
|
1138
|
-
hasAnyHiddenIntent,
|
|
1139
|
-
get(entity) {
|
|
1140
|
-
ensureResolver();
|
|
1141
|
-
return hasIntent?.(entity) ? resolveEntity?.(entity) : void 0;
|
|
1142
|
-
},
|
|
1143
|
-
effective(entity) {
|
|
1144
|
-
ensureResolver();
|
|
1145
|
-
return resolveEntity?.(entity)?.effective ?? "visible";
|
|
1146
|
-
}
|
|
1147
|
-
};
|
|
1148
|
-
}
|
|
1149
962
|
|
|
1150
|
-
export {
|
|
1151
|
-
//# sourceMappingURL=chunk-
|
|
1152
|
-
//# sourceMappingURL=chunk-
|
|
963
|
+
export { AtmosphereInvalidParameterError, CLUSTER_GRID_STRIDE_U32, DEFAULT_CLUSTER_GRID, DEFAULT_STANDARD_PROFILE, EnvironmentGenerationFailedError, EnvironmentSourceConflictError, EquirectProjectionFailedError, FogCardinalityError, FrameReceiptStaleError, HdrpDeferredCapsInsufficientError, HdrpIndexListOverflowError, HdrpLightBudgetExceededError, LIGHT_INDEX_LIST_CAPACITY, LifecycleConstructionError, MAX_LIGHTS, MaterialSkinAttrMissingError, ObservationUnavailableError, OwnerStageFailedError, PointShadowAtlasBoundsViolationError, PointShadowAtlasUninitializedError, PointsLinesBudgetExceededError, PointsLinesInvalidStyleError, PointsLinesMaterialUnsupportedError, PointsLinesPrepareFailedError, PointsLinesStyleUnsupportedError, PointsLinesTopologyMismatchError, RENDER_PHASE_CATALOG, RenderFeatureCapabilityMissingError, RenderFeatureDrawRecordingFailedError, RenderFeaturePreparationFailedError, RenderFeaturePreparedStateMismatchError, RenderFeatureRegistrationConflictError, RenderFeatureStageFailedError, RendererContractFailureError, RendererOperationError, SCENE_DATA_TEMPORAL_V1_DESCRIPTOR, SCENE_DATA_TEMPORAL_V1_SCHEMA, STANDARD_LIGHT_COUNTS, STANDARD_OUTPUT_TRANSFORM_FEATURE_ID, STANDARD_PIPELINE_ID, STANDARD_POST_STAGE_NAMES, SceneDataUnavailableError, ShadowInvalidConfigError, SkinMaterialMismatchError, SkinPaletteOverflowError, TaaCapsInsufficientError, TemporalFrameSubmitError, TransmissionCapabilityMissingError, VertexColorVariantConflictError, VideoUploadUnsupportedError, VolumeDensityShapeMismatchError, VolumeInvalidBoundsError, VolumeInvalidParametersError, VolumeOwnerConflictError, createSceneDataCatalog, isSceneDataTarget, registerSceneDataTarget, resolveStandardLane, resolveVolumetricFogProfile, sceneDataError, sceneDataTargetAsAttachment, sceneDataTargetOwner, sceneDataTokenMismatch };
|
|
964
|
+
//# sourceMappingURL=chunk-TBQJOK2L.mjs.map
|
|
965
|
+
//# sourceMappingURL=chunk-TBQJOK2L.mjs.map
|