@forgeax/engine-render 0.1.4 → 0.1.7
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 +268 -640
- package/dist/.tsbuildinfo +1 -1
- package/dist/__tests__/device-scope-lifecycle.unit.test.d.ts +2 -0
- package/dist/__tests__/device-scope-lifecycle.unit.test.d.ts.map +1 -0
- package/dist/__tests__/device-scope-stale-matrix.unit.test.d.ts +2 -0
- package/dist/__tests__/device-scope-stale-matrix.unit.test.d.ts.map +1 -0
- package/dist/__tests__/fullscreen-feature-plan.unit.test.d.ts +2 -0
- package/dist/__tests__/fullscreen-feature-plan.unit.test.d.ts.map +1 -0
- package/dist/__tests__/gpu-driven-indirect-raster-evidence.d.ts.map +1 -1
- package/dist/__tests__/gpu-driven-view-gpu-evidence.d.ts +6 -0
- package/dist/__tests__/gpu-driven-view-gpu-evidence.d.ts.map +1 -1
- package/dist/{gpu-driven/view-reference.d.ts → __tests__/gpu-driven-view-reference.d.ts} +4 -4
- package/dist/__tests__/gpu-driven-view-reference.d.ts.map +1 -0
- package/dist/__tests__/gpu-scene-render-graph-gpu.d.ts.map +1 -1
- package/dist/__tests__/ibl/face-uniforms.unit.test.d.ts +2 -0
- package/dist/__tests__/ibl/face-uniforms.unit.test.d.ts.map +1 -0
- package/dist/__tests__/morph-feature-plan.unit.test.d.ts +2 -0
- package/dist/__tests__/morph-feature-plan.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-plan.test-d.d.ts +2 -0
- package/dist/__tests__/render-feature-plan.test-d.d.ts.map +1 -0
- package/dist/__tests__/render-feature-plan.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-plan.unit.test.d.ts.map +1 -0
- package/dist/__tests__/ssao-config.unit.test.d.ts +2 -0
- package/dist/__tests__/ssao-config.unit.test.d.ts.map +1 -0
- package/dist/__tests__/standard-clustered-pipeline.unit.test.d.ts +2 -0
- package/dist/__tests__/standard-clustered-pipeline.unit.test.d.ts.map +1 -0
- package/dist/__tests__/standard-descriptors.test-d.d.ts +2 -0
- package/dist/__tests__/standard-descriptors.test-d.d.ts.map +1 -0
- package/dist/__tests__/standard-pipeline.dawn.test.d.ts +2 -0
- package/dist/__tests__/standard-pipeline.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/standard-pipeline.integration.test.d.ts +2 -0
- package/dist/__tests__/standard-pipeline.integration.test.d.ts.map +1 -0
- package/dist/__tests__/standard-profile-oracle.unit.test.d.ts +2 -0
- package/dist/__tests__/standard-profile-oracle.unit.test.d.ts.map +1 -0
- package/dist/__tests__/visibility-resource-short-circuit.unit.test.d.ts +2 -0
- package/dist/__tests__/visibility-resource-short-circuit.unit.test.d.ts.map +1 -0
- package/dist/{renderer/backend-selection.d.ts → assembly/backend-contract.d.ts} +15 -4
- package/dist/assembly/backend-contract.d.ts.map +1 -0
- package/dist/assembly/factory.d.ts +214 -0
- package/dist/assembly/factory.d.ts.map +1 -0
- package/dist/assembly/host-contract.d.ts +84 -0
- package/dist/assembly/host-contract.d.ts.map +1 -0
- package/dist/{renderer → assembly}/material/assembly.d.ts +0 -1
- package/dist/{renderer → assembly}/material/assembly.d.ts.map +1 -1
- package/dist/assembly/material/pipeline-projection.d.ts +30 -0
- package/dist/assembly/material/pipeline-projection.d.ts.map +1 -0
- package/dist/authoring.d.ts +11 -11
- package/dist/authoring.d.ts.map +1 -1
- package/dist/authoring.mjs +25 -3
- package/dist/authoring.mjs.map +1 -1
- package/dist/chunk-CQXZC5XI.mjs +182 -0
- package/dist/chunk-CQXZC5XI.mjs.map +1 -0
- package/dist/chunk-HCOGPHKS.mjs +93 -0
- package/dist/chunk-HCOGPHKS.mjs.map +1 -0
- package/dist/chunk-YEJIUW7D.mjs +1152 -0
- package/dist/chunk-YEJIUW7D.mjs.map +1 -0
- package/dist/components/__tests__/points-lines-admission.unit.test.d.ts +2 -0
- package/dist/components/__tests__/points-lines-admission.unit.test.d.ts.map +1 -0
- package/dist/components/__tests__/points-lines-schema.unit.test.d.ts +2 -0
- package/dist/components/__tests__/points-lines-schema.unit.test.d.ts.map +1 -0
- package/dist/components/__tests__/schema-contract.unit.test.d.ts +2 -0
- package/dist/components/__tests__/schema-contract.unit.test.d.ts.map +1 -0
- package/dist/components/glyph-text.d.ts +1 -1
- package/dist/components/glyph-text.d.ts.map +1 -1
- package/dist/components/index.d.ts +4 -2
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/instances.d.ts +1 -1
- package/dist/components/instances.d.ts.map +1 -1
- package/dist/components/light-helpers.d.ts +1 -1
- package/dist/components/light-helpers.d.ts.map +1 -1
- package/dist/components/lines.d.ts +5 -0
- package/dist/components/lines.d.ts.map +1 -0
- package/dist/components/mesh-filter.d.ts +7 -7
- package/dist/components/mesh-filter.d.ts.map +1 -1
- package/dist/components/points.d.ts +15 -0
- package/dist/components/points.d.ts.map +1 -0
- package/dist/components/scene-instance.d.ts +11 -11
- package/dist/components/skybox-background.d.ts +56 -0
- package/dist/components/skybox-background.d.ts.map +1 -0
- package/dist/components/skylight.d.ts +55 -0
- package/dist/components/skylight.d.ts.map +1 -0
- package/dist/components/sprite-animation.d.ts +2 -3
- package/dist/components/sprite-animation.d.ts.map +1 -1
- package/dist/components/sprite-instances.d.ts +1 -1
- package/dist/components/sprite-playback-mode.d.ts +6 -1
- package/dist/components/sprite-playback-mode.d.ts.map +1 -1
- package/dist/components/sprite-region-override.d.ts +2 -3
- package/dist/components/sprite-region-override.d.ts.map +1 -1
- package/dist/components/tile-layer.d.ts +5 -0
- package/dist/components/tile-layer.d.ts.map +1 -1
- package/dist/construct-renderer.d.ts +18 -1
- package/dist/construct-renderer.d.ts.map +1 -1
- package/dist/construct-renderer.mjs +27463 -4
- package/dist/construct-renderer.mjs.map +1 -1
- package/dist/debug-draw-glue.d.ts +2 -53
- package/dist/debug-draw-glue.d.ts.map +1 -1
- package/dist/device/device-scope.d.ts +83 -0
- package/dist/device/device-scope.d.ts.map +1 -0
- package/dist/{gpu-resource-store.d.ts → device/gpu-residency.d.ts} +91 -48
- package/dist/device/gpu-residency.d.ts.map +1 -0
- package/dist/device/resource-types.d.ts +8 -0
- package/dist/device/resource-types.d.ts.map +1 -0
- package/dist/engine-metrics.d.ts +2 -2
- package/dist/engine-metrics.d.ts.map +1 -1
- package/dist/errors/recover.d.ts +28 -1
- package/dist/errors/recover.d.ts.map +1 -1
- package/dist/errors/render.d.ts +320 -248
- package/dist/errors/render.d.ts.map +1 -1
- package/dist/features/fullscreen.d.ts +19 -0
- package/dist/features/fullscreen.d.ts.map +1 -0
- package/dist/features/host.d.ts +32 -26
- package/dist/features/host.d.ts.map +1 -1
- package/dist/features/morph/morph-feature.d.ts +39 -5
- package/dist/features/morph/morph-feature.d.ts.map +1 -1
- package/dist/features/plan.d.ts +182 -0
- package/dist/features/plan.d.ts.map +1 -0
- package/dist/features/prepared-gpu-work.d.ts +21 -17
- package/dist/features/prepared-gpu-work.d.ts.map +1 -1
- package/dist/features/prepared-graphics-store.d.ts +2 -1
- package/dist/features/prepared-graphics-store.d.ts.map +1 -1
- package/dist/features/prepared-graphics.d.ts +11 -21
- package/dist/features/prepared-graphics.d.ts.map +1 -1
- package/dist/features/render-graph-compute.d.ts +2 -2
- package/dist/features/render-graph-compute.d.ts.map +1 -1
- package/dist/features/render-graph-contribution.d.ts +4 -7
- package/dist/features/render-graph-contribution.d.ts.map +1 -1
- package/dist/features/render-graph-raster.d.ts +7 -3
- package/dist/features/render-graph-raster.d.ts.map +1 -1
- package/dist/features/render-graph-resources.d.ts +6 -6
- package/dist/features/render-graph-resources.d.ts.map +1 -1
- package/dist/features/targets.d.ts +5 -5
- package/dist/features/targets.d.ts.map +1 -1
- package/dist/features/types.d.ts +11 -190
- package/dist/features/types.d.ts.map +1 -1
- package/dist/features/vocabulary.d.ts +14 -0
- package/dist/features/vocabulary.d.ts.map +1 -0
- package/dist/fullscreen-post-process-pass.d.ts +4 -25
- package/dist/fullscreen-post-process-pass.d.ts.map +1 -1
- package/dist/glyph-text-layout-system.d.ts +3 -2
- package/dist/glyph-text-layout-system.d.ts.map +1 -1
- package/dist/gpu-driven/batch-topology.d.ts +6 -75
- package/dist/gpu-driven/batch-topology.d.ts.map +1 -1
- package/dist/gpu-driven/production-raster.d.ts +13 -112
- package/dist/gpu-driven/production-raster.d.ts.map +1 -1
- package/dist/gpu-driven/view-gpu.d.ts +10 -66
- package/dist/gpu-driven/view-gpu.d.ts.map +1 -1
- package/dist/gpu-resource.d.ts +3 -3
- package/dist/gpu-scene-schema.d.ts +1 -94
- package/dist/gpu-scene-schema.d.ts.map +1 -1
- package/dist/gpu-scene.d.ts +7 -33
- package/dist/gpu-scene.d.ts.map +1 -1
- package/dist/hdrp-buffers.d.ts +3 -53
- package/dist/hdrp-buffers.d.ts.map +1 -1
- package/dist/ibl/IblPipelineCache.d.ts +74 -180
- package/dist/ibl/IblPipelineCache.d.ts.map +1 -1
- package/dist/ibl/skylight-bind-group.d.ts +1 -1
- package/dist/index.d.ts +17 -43
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +167 -3
- package/dist/index.mjs.map +1 -1
- package/dist/inspection-types.d.ts +72 -0
- package/dist/inspection-types.d.ts.map +1 -0
- package/dist/instance-buffer-cache.d.ts +1 -4
- package/dist/instance-buffer-cache.d.ts.map +1 -1
- package/dist/internal.d.ts +1 -73
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.mjs +1 -43
- package/dist/internal.mjs.map +1 -1
- package/dist/lifecycle.d.ts +36 -2
- package/dist/lifecycle.d.ts.map +1 -1
- package/dist/materials.d.ts +0 -3
- package/dist/materials.d.ts.map +1 -1
- package/dist/mesh-material-bindings.d.ts +0 -1
- package/dist/mesh-material-bindings.d.ts.map +1 -1
- package/dist/pbr-pipeline.d.ts +77 -29
- package/dist/pbr-pipeline.d.ts.map +1 -1
- package/dist/pipeline/standard-forward-lane.d.ts +5 -0
- package/dist/pipeline/standard-forward-lane.d.ts.map +1 -0
- package/dist/pipeline/standard-pipeline.d.ts +31 -0
- package/dist/pipeline/standard-pipeline.d.ts.map +1 -0
- package/dist/pipeline/standard-profile.d.ts +40 -0
- package/dist/pipeline/standard-profile.d.ts.map +1 -0
- package/dist/pipeline-builder.d.ts +3 -3
- package/dist/pipeline-builder.d.ts.map +1 -1
- package/dist/pipeline-spec-types.d.ts +24 -0
- package/dist/pipeline-spec-types.d.ts.map +1 -0
- package/dist/pipeline-spec.d.ts +16 -155
- package/dist/pipeline-spec.d.ts.map +1 -1
- package/dist/plugin.d.ts +1 -14
- package/dist/plugin.d.ts.map +1 -1
- package/dist/points-lines/__tests__/bounds.unit.test.d.ts +2 -0
- package/dist/points-lines/__tests__/bounds.unit.test.d.ts.map +1 -0
- package/dist/points-lines/__tests__/cache-recovery.unit.test.d.ts +2 -0
- package/dist/points-lines/__tests__/cache-recovery.unit.test.d.ts.map +1 -0
- package/dist/points-lines/__tests__/inspection-lanes.integration.test.d.ts +2 -0
- package/dist/points-lines/__tests__/inspection-lanes.integration.test.d.ts.map +1 -0
- package/dist/points-lines/__tests__/inspection.unit.test.d.ts +2 -0
- package/dist/points-lines/__tests__/inspection.unit.test.d.ts.map +1 -0
- package/dist/points-lines/__tests__/lane-structural.integration.test.d.ts +2 -0
- package/dist/points-lines/__tests__/lane-structural.integration.test.d.ts.map +1 -0
- package/dist/points-lines/__tests__/points-lines.bench.d.ts +2 -0
- package/dist/points-lines/__tests__/points-lines.bench.d.ts.map +1 -0
- package/dist/points-lines/__tests__/raster-lane.integration.test.d.ts +2 -0
- package/dist/points-lines/__tests__/raster-lane.integration.test.d.ts.map +1 -0
- package/dist/points-lines/__tests__/snapshot.unit.test.d.ts +2 -0
- package/dist/points-lines/__tests__/snapshot.unit.test.d.ts.map +1 -0
- package/dist/points-lines/__tests__/view-ubo.unit.test.d.ts +2 -0
- package/dist/points-lines/__tests__/view-ubo.unit.test.d.ts.map +1 -0
- package/dist/points-lines/admission.d.ts +36 -0
- package/dist/points-lines/admission.d.ts.map +1 -0
- package/dist/points-lines/bounds.d.ts +8 -0
- package/dist/points-lines/bounds.d.ts.map +1 -0
- package/dist/points-lines/expansion-cache.d.ts +28 -0
- package/dist/points-lines/expansion-cache.d.ts.map +1 -0
- package/dist/points-lines/inspection.d.ts +53 -0
- package/dist/points-lines/inspection.d.ts.map +1 -0
- package/dist/points-lines/prepare.d.ts +67 -0
- package/dist/points-lines/prepare.d.ts.map +1 -0
- package/dist/points-lines/record.d.ts +60 -0
- package/dist/points-lines/record.d.ts.map +1 -0
- package/dist/points-lines/snapshot.d.ts +49 -0
- package/dist/points-lines/snapshot.d.ts.map +1 -0
- package/dist/post-process-errors.d.ts +18 -18
- package/dist/post-process-errors.d.ts.map +1 -1
- package/dist/prepare/prepared-graphics-resolver.d.ts +2 -5
- package/dist/prepare/prepared-graphics-resolver.d.ts.map +1 -1
- package/dist/record/__tests__/typed-frame-graph-plan.unit.test.d.ts +2 -0
- package/dist/record/__tests__/typed-frame-graph-plan.unit.test.d.ts.map +1 -0
- package/dist/record/frame-lighting.d.ts +7 -73
- package/dist/record/frame-lighting.d.ts.map +1 -1
- package/dist/record/frame-snapshot.d.ts +44 -44
- package/dist/record/frame-snapshot.d.ts.map +1 -1
- package/dist/record/frame-targets.d.ts +5 -38
- package/dist/record/frame-targets.d.ts.map +1 -1
- package/dist/record/frame.d.ts +64 -52
- package/dist/record/frame.d.ts.map +1 -1
- package/dist/record/helpers.d.ts +3 -2
- package/dist/record/helpers.d.ts.map +1 -1
- package/dist/record/main-pass-geometry.d.ts +12 -4
- package/dist/record/main-pass-geometry.d.ts.map +1 -1
- package/dist/record/main-pass-material.d.ts +90 -59
- package/dist/record/main-pass-material.d.ts.map +1 -1
- package/dist/record/main-pass-sprite-draws.d.ts +28 -3
- package/dist/record/main-pass-sprite-draws.d.ts.map +1 -1
- package/dist/record/main-pass.d.ts +1 -1
- package/dist/record/main-pass.d.ts.map +1 -1
- package/dist/record/mesh-ssbo.d.ts +276 -3
- package/dist/record/mesh-ssbo.d.ts.map +1 -1
- package/dist/record/render-context.d.ts +252 -0
- package/dist/record/render-context.d.ts.map +1 -0
- package/dist/record/shadow-pass.d.ts +15 -88
- package/dist/record/shadow-pass.d.ts.map +1 -1
- package/dist/record/skybox-post-pass.d.ts +1 -1
- package/dist/record/skybox-post-pass.d.ts.map +1 -1
- package/dist/record/typed-frame-graph.d.ts +29 -7
- package/dist/record/typed-frame-graph.d.ts.map +1 -1
- package/dist/record/view-ubo.d.ts +9 -3
- package/dist/record/view-ubo.d.ts.map +1 -1
- package/dist/render-contract.d.ts +424 -0
- package/dist/render-contract.d.ts.map +1 -0
- package/dist/render-data.d.ts.map +1 -1
- package/dist/render-graph-primitives.d.ts +14 -362
- package/dist/render-graph-primitives.d.ts.map +1 -1
- package/dist/render-pipeline.d.ts +25 -64
- package/dist/render-pipeline.d.ts.map +1 -1
- package/dist/render-system-extract.d.ts +110 -338
- package/dist/render-system-extract.d.ts.map +1 -1
- package/dist/render-system.d.ts +24 -713
- package/dist/render-system.d.ts.map +1 -1
- package/dist/scene/render-scene-types.d.ts +61 -0
- package/dist/scene/render-scene-types.d.ts.map +1 -0
- package/dist/scene/render-scene.d.ts +112 -0
- package/dist/scene/render-scene.d.ts.map +1 -0
- package/dist/scene-instances/post-spawn-resolve-joints.d.ts +2 -5
- package/dist/scene-instances/post-spawn-resolve-joints.d.ts.map +1 -1
- package/dist/ssao-buffers.d.ts +22 -3
- package/dist/ssao-buffers.d.ts.map +1 -1
- package/dist/systems/skin-palette-allocator.d.ts +2 -4
- package/dist/systems/skin-palette-allocator.d.ts.map +1 -1
- package/dist/systems/skin-palette-types.d.ts +14 -0
- package/dist/systems/skin-palette-types.d.ts.map +1 -0
- package/dist/systems/transparent-sort-config.d.ts +23 -2
- package/dist/systems/transparent-sort-config.d.ts.map +1 -1
- package/dist/tilemap-chunk-extract-system.d.ts +4 -3
- package/dist/tilemap-chunk-extract-system.d.ts.map +1 -1
- package/dist/typed-render-graph-primitives.d.ts +2 -4
- package/dist/typed-render-graph-primitives.d.ts.map +1 -1
- package/dist/typed-shadow-passes.d.ts +3 -3
- package/dist/typed-shadow-passes.d.ts.map +1 -1
- package/package.json +23 -23
- package/src/__tests__/authoring-path.unit.test.ts +9 -0
- package/src/__tests__/backend-selection-rhi-capture.test-d.ts +1 -1
- package/src/__tests__/callback-inference.test-d.ts +6 -3
- package/src/__tests__/cluster-grid-default-surface.unit.test.ts +7 -4
- package/src/__tests__/construct-renderer-identity.unit.test.ts +15 -2
- package/src/__tests__/device-scope-lifecycle.unit.test.ts +151 -0
- package/src/__tests__/device-scope-stale-matrix.unit.test.ts +42 -0
- package/src/__tests__/direct-extract-consumer-contract.test-d.ts +8 -19
- package/src/__tests__/direct-light-snapshot.unit.test.ts +3 -13
- package/src/__tests__/factory-contract.integration.test.ts +158 -209
- package/src/__tests__/fallback-row-stride-surface.unit.test.ts +1 -4
- package/src/__tests__/frame-observation.contract.test.ts +17 -8
- package/src/__tests__/fullscreen-feature-plan.unit.test.ts +32 -0
- package/src/__tests__/glyph-text-layout-recovery.unit.test.ts +6 -11
- package/src/__tests__/gpu-driven-indirect-raster-evidence.ts +21 -18
- package/src/__tests__/gpu-driven-production.integration.test.ts +32 -205
- package/src/__tests__/gpu-driven-scaling.unit.test.ts +4 -7
- package/src/__tests__/gpu-driven-view-gpu-evidence.ts +87 -8
- package/src/__tests__/gpu-driven-view-graph.integration.test.ts +170 -8
- package/src/{gpu-driven/view-reference.ts → __tests__/gpu-driven-view-reference.ts} +4 -3
- package/src/__tests__/gpu-driven-view.browser.test.ts +12 -1
- package/src/__tests__/gpu-driven-view.dawn.test.ts +12 -1
- package/src/__tests__/gpu-driven-view.unit.test.ts +11 -267
- package/src/__tests__/gpu-resource-store-stride.unit.test.ts +3 -3
- package/src/__tests__/gpu-scene-render-graph-gpu.ts +2 -3
- package/src/__tests__/gpu-scene.dawn.test.ts +2 -6
- package/src/__tests__/gpu-scene.unit.test.ts +10 -24
- package/src/__tests__/ibl/face-uniforms.unit.test.ts +46 -0
- package/src/__tests__/infinite-grid-no-vertex-probe.unit.test.ts +34 -66
- package/src/__tests__/ktx2-basis-gpu-consumer.dawn.test.ts +14 -5
- package/src/__tests__/light-buffer-layout.unit.test.ts +4 -49
- package/src/__tests__/material-cooked-projection.unit.test.ts +31 -58
- package/src/__tests__/material-snapshot-mutation.integration.test.ts +10 -15
- package/src/__tests__/material-static-dynamic-route.unit.test.ts +31 -50
- package/src/__tests__/material-stride-surface.unit.test.ts +2 -2
- package/src/__tests__/mesh-buffer-usage-surface.unit.test.ts +7 -8
- package/src/__tests__/morph-culling-reentry.dawn.test.ts +29 -38
- package/src/__tests__/morph-feature-gpu-work.integration.test.ts +45 -43
- package/src/__tests__/morph-feature-plan.unit.test.ts +53 -0
- package/src/__tests__/morph-visual-evidence.integration.test.ts +47 -33
- package/src/__tests__/nineslice-handle-surface.unit.test.ts +11 -6
- package/src/__tests__/post-process-error-policy-owner.unit.test.ts +6 -13
- package/src/__tests__/prepared-graphics-capability.unit.test.ts +6 -81
- package/src/__tests__/prepared-graphics-generation.unit.test.ts +3 -17
- package/src/__tests__/prepared-graphics-lifecycle.unit.test.ts +6 -74
- package/src/__tests__/prepared-graphics-resolver.unit.test.ts +1 -3
- package/src/__tests__/prepared-graphics-snapshot.unit.test.ts +2 -2
- package/src/__tests__/profiler-default-off.test.ts +1 -1
- package/src/__tests__/profiler-phase-catalog.test.ts +2 -2
- package/src/__tests__/profiler-phase-integration.test.ts +5 -13
- package/src/__tests__/profiler-phase-token.test.ts +3 -8
- package/src/__tests__/public-surface.test-d.ts +65 -3
- package/src/__tests__/recover-error-policy-owner.unit.test.ts +1 -21
- package/src/__tests__/render-error-code-owner.test-d.ts +24 -23
- package/src/__tests__/render-error-detail-ssot.test-d.ts +0 -95
- package/src/__tests__/render-error-exhaustive.test-d.ts +27 -1
- package/src/__tests__/render-feature-assembly.test-d.ts +8 -16
- package/src/__tests__/render-feature-context.test-d.ts +16 -40
- package/src/__tests__/render-feature-contract.test-d.ts +9 -18
- package/src/__tests__/render-feature-diagnostics.unit.test.ts +6 -8
- package/src/__tests__/render-feature-docs.unit.test.ts +8 -7
- package/src/__tests__/render-feature-gpu-work.integration.test.ts +14 -75
- package/src/__tests__/render-feature-plan.test-d.ts +161 -0
- package/src/__tests__/render-feature-plan.unit.test.ts +170 -0
- package/src/__tests__/render-feature-prepared-diagnostics.unit.test.ts +8 -19
- package/src/__tests__/render-feature-prepared-errors.test-d.ts +3 -6
- package/src/__tests__/render-feature-prepared-graphics-docs.unit.test.ts +10 -71
- package/src/__tests__/render-feature-prepared-graphics-isolation.unit.test.ts +11 -61
- package/src/__tests__/render-feature-prepared-graphics-negative.test-d.ts +20 -43
- package/src/__tests__/render-feature-prepared-graphics.test-d.ts +56 -78
- package/src/__tests__/render-feature-public-surface.test-d.ts +6 -24
- package/src/__tests__/render-feature-retry.unit.test.ts +7 -48
- package/src/__tests__/render-feature-scheduling.unit.test.ts +15 -27
- package/src/__tests__/render-feature-stage-failed-policy-owner.unit.test.ts +0 -9
- package/src/__tests__/render-feature-stage-fault-recovery.unit.test.ts +19 -109
- package/src/__tests__/render-feature-visibility-context.test-d.ts +1 -6
- package/src/__tests__/render-feature-visibility-context.unit.test.ts +1 -2
- package/src/__tests__/render-feature-zero-work.unit.test.ts +14 -20
- package/src/__tests__/render-scene-projection.unit.test.ts +73 -111
- package/src/__tests__/renderer-factory-material-contract.unit.test.ts +82 -95
- package/src/__tests__/renderer-lifecycle.integration.test.ts +49 -1
- package/src/__tests__/shader-stage-surface.unit.test.ts +14 -9
- package/src/__tests__/ssao-config.unit.test.ts +36 -0
- package/src/__tests__/ssao-kernel-surface.unit.test.ts +4 -5
- package/src/__tests__/standard-clustered-pipeline.unit.test.ts +28 -0
- package/src/__tests__/standard-descriptors.test-d.ts +22 -0
- package/src/__tests__/standard-pipeline.dawn.test.ts +61 -0
- package/src/__tests__/standard-pipeline.integration.test.ts +124 -0
- package/src/__tests__/standard-profile-oracle.unit.test.ts +62 -0
- package/src/__tests__/surface-configuration.unit.test.ts +1 -2
- package/src/__tests__/texture-usage-surface.unit.test.ts +3 -6
- package/src/__tests__/typed-pipeline-topology.unit.test.ts +40 -206
- package/src/__tests__/urp-pipeline-targets.unit.test.ts +1 -11
- package/src/__tests__/urp-pipeline.unit.test.ts +2 -2
- package/src/__tests__/vertex-color-pipeline.unit.test.ts +10 -2
- package/src/__tests__/vertex-layout-consumer.unit.test.ts +1 -1
- package/src/__tests__/visibility-diagnostics.integration.test.ts +7 -11
- package/src/__tests__/visibility-extract.integration.test.ts +20 -11
- package/src/__tests__/visibility-extract.perf.test.ts +66 -32
- package/src/__tests__/visibility-feature-dedup.integration.test.ts +2 -4
- package/src/__tests__/visibility-hidden-report.unit.test.ts +1 -2
- package/src/__tests__/visibility-instances.integration.test.ts +7 -11
- package/src/__tests__/visibility-multi-world.integration.test.ts +38 -6
- package/src/__tests__/visibility-producer-matrix.integration.test.ts +18 -41
- package/src/__tests__/visibility-public-surface.test-d.ts +10 -9
- package/src/__tests__/visibility-resolver.unit.test.ts +2 -1
- package/src/__tests__/visibility-resource-short-circuit.unit.test.ts +80 -0
- package/src/__tests__/visibility-snapshot-contract.unit.test.ts +2 -1
- package/src/__tests__/vocabulary.unit.test.ts +1 -1
- package/src/assembly/backend-contract.ts +57 -0
- package/src/{renderer/renderer-factory.ts → assembly/factory.ts} +1741 -2699
- package/src/assembly/host-contract.ts +101 -0
- package/src/{renderer → assembly}/material/assembly.ts +2 -7
- package/src/assembly/material/pipeline-projection.ts +63 -0
- package/src/authoring.ts +15 -22
- package/src/components/__tests__/points-lines-admission.unit.test.ts +219 -0
- package/src/components/__tests__/points-lines-schema.unit.test.ts +56 -0
- package/src/components/__tests__/schema-contract.unit.test.ts +10 -0
- package/src/components/glyph-text.ts +3 -2
- package/src/components/index.ts +14 -9
- package/src/components/instances.ts +4 -5
- package/src/components/light-helpers.ts +1 -1
- package/src/components/lines.ts +18 -0
- package/src/components/mesh-filter.ts +11 -10
- package/src/components/points.ts +40 -0
- package/src/components/post-process-params.ts +3 -3
- package/src/components/scene-instance.ts +12 -12
- package/src/components/skybox-background.ts +103 -0
- package/src/components/{environment.ts → skylight.ts} +2 -110
- package/src/components/sprite-animation.ts +3 -4
- package/src/components/sprite-instances.ts +2 -2
- package/src/components/sprite-playback-mode.ts +7 -1
- package/src/components/sprite-region-override.ts +2 -3
- package/src/components/tile-layer.ts +8 -2
- package/src/construct-renderer.ts +67 -4
- package/src/debug-draw-glue.ts +8 -129
- package/src/device/device-scope.ts +306 -0
- package/src/{gpu-resource-store.ts → device/gpu-residency.ts} +540 -639
- package/src/device/resource-types.ts +20 -0
- package/src/engine-metrics.ts +12 -19
- package/src/errors/recover.ts +45 -3
- package/src/errors/render.ts +469 -429
- package/src/features/fullscreen.ts +46 -0
- package/src/features/host.ts +575 -309
- package/src/features/morph/morph-feature.ts +195 -105
- package/src/features/plan.ts +447 -0
- package/src/features/prepared-gpu-work.ts +72 -15
- package/src/features/prepared-graphics-store.ts +20 -6
- package/src/features/prepared-graphics.ts +12 -71
- package/src/features/render-graph-compute.ts +14 -5
- package/src/features/render-graph-contribution.ts +43 -63
- package/src/features/render-graph-raster.ts +32 -8
- package/src/features/render-graph-resources.ts +25 -23
- package/src/features/targets.ts +8 -21
- package/src/features/types.ts +39 -227
- package/src/features/vocabulary.ts +24 -0
- package/src/fullscreen-post-process-pass.ts +14 -57
- package/src/glyph-text-layout-system.ts +70 -96
- package/src/gpu-driven/batch-topology.ts +24 -202
- package/src/gpu-driven/production-raster.ts +99 -1109
- package/src/gpu-driven/view-gpu.ts +46 -192
- package/src/gpu-resource.ts +4 -4
- package/src/gpu-scene-schema.ts +11 -99
- package/src/gpu-scene.ts +231 -364
- package/src/hdrp-buffers.ts +12 -221
- package/src/ibl/IblPipelineCache.ts +471 -711
- package/src/ibl/skylight-bind-group.ts +4 -4
- package/src/index.ts +75 -217
- package/src/inspection-types.ts +80 -0
- package/src/instance-buffer-cache.ts +1 -29
- package/src/internal.ts +6 -85
- package/src/lifecycle.ts +64 -19
- package/src/materials.ts +7 -29
- package/src/mesh-material-bindings.ts +0 -1
- package/src/pbr-pipeline.ts +441 -53
- package/src/{urp-pipeline.ts → pipeline/standard-forward-lane.ts} +38 -149
- package/src/{hdrp-pipeline.ts → pipeline/standard-pipeline.ts} +221 -191
- package/src/pipeline/standard-profile.ts +65 -0
- package/src/pipeline-builder.ts +60 -64
- package/src/pipeline-spec-types.ts +28 -0
- package/src/pipeline-spec.ts +72 -609
- package/src/plugin.ts +7 -75
- package/src/points-lines/__tests__/bounds.unit.test.ts +21 -0
- package/src/points-lines/__tests__/cache-recovery.unit.test.ts +157 -0
- package/src/points-lines/__tests__/inspection-lanes.integration.test.ts +146 -0
- package/src/points-lines/__tests__/inspection.unit.test.ts +173 -0
- package/src/points-lines/__tests__/lane-structural.integration.test.ts +122 -0
- package/src/points-lines/__tests__/points-lines.bench.ts +400 -0
- package/src/points-lines/__tests__/raster-lane.integration.test.ts +44 -0
- package/src/points-lines/__tests__/snapshot.unit.test.ts +101 -0
- package/src/points-lines/__tests__/view-ubo.unit.test.ts +73 -0
- package/src/points-lines/admission.ts +238 -0
- package/src/points-lines/bounds.ts +23 -0
- package/src/points-lines/expansion-cache.ts +215 -0
- package/src/points-lines/inspection.ts +97 -0
- package/src/points-lines/prepare.ts +177 -0
- package/src/points-lines/record.ts +125 -0
- package/src/points-lines/snapshot.ts +130 -0
- package/src/post-process-errors.ts +31 -33
- package/src/prepare/prepared-graphics-resolver.ts +5 -4
- package/src/record/__tests__/material-slot-plan.unit.test.ts +1 -33
- package/src/record/__tests__/typed-frame-graph-plan.unit.test.ts +41 -0
- package/src/record/__tests__/video-texture-view.unit.test.ts +1 -1
- package/src/record/frame-lighting.ts +88 -197
- package/src/record/frame-snapshot.ts +45 -60
- package/src/record/frame-targets.ts +8 -243
- package/src/record/frame.ts +521 -797
- package/src/record/helpers.ts +6 -11
- package/src/record/main-pass-geometry.ts +198 -147
- package/src/record/main-pass-material.ts +517 -190
- package/src/record/main-pass-sprite-draws.ts +199 -118
- package/src/record/main-pass.ts +166 -144
- package/src/record/mesh-ssbo.ts +517 -38
- package/src/record/render-context.ts +384 -0
- package/src/record/shadow-pass.ts +154 -1843
- package/src/record/skybox-post-pass.ts +14 -15
- package/src/record/typed-frame-graph.ts +224 -262
- package/src/record/view-ubo.ts +53 -37
- package/src/render-contract.ts +582 -0
- package/src/render-data.ts +3 -3
- package/src/render-graph-primitives.ts +76 -851
- package/src/render-pipeline.ts +104 -188
- package/src/render-system-extract.ts +1114 -1732
- package/src/render-system.ts +614 -1939
- package/src/scene/render-scene-types.ts +67 -0
- package/src/scene/render-scene.ts +1087 -0
- package/src/scene-instances/post-spawn-resolve-joints.ts +4 -7
- package/src/ssao-buffers.ts +167 -8
- package/src/systems/skin-palette-allocator.ts +21 -64
- package/src/systems/skin-palette-types.ts +14 -0
- package/src/systems/transparent-sort-config.ts +25 -3
- package/src/tilemap-chunk-extract-system.ts +53 -70
- package/src/typed-render-graph-primitives.ts +35 -24
- package/src/typed-shadow-passes.ts +26 -56
- package/dist/__tests__/analytic-sky-contract.test.d.ts +0 -2
- package/dist/__tests__/analytic-sky-contract.test.d.ts.map +0 -1
- package/dist/__tests__/analytic-sky-falsify.test.d.ts +0 -2
- package/dist/__tests__/analytic-sky-falsify.test.d.ts.map +0 -1
- package/dist/__tests__/assets-runtime-handoff.integration.test.d.ts +0 -2
- package/dist/__tests__/assets-runtime-handoff.integration.test.d.ts.map +0 -1
- package/dist/__tests__/backend-selection.integration.test.d.ts +0 -2
- package/dist/__tests__/backend-selection.integration.test.d.ts.map +0 -1
- package/dist/__tests__/camera-temporal.test-d.d.ts +0 -2
- package/dist/__tests__/camera-temporal.test-d.d.ts.map +0 -1
- package/dist/__tests__/camera-temporal.test.d.ts +0 -2
- package/dist/__tests__/camera-temporal.test.d.ts.map +0 -1
- package/dist/__tests__/directional-shadow-probe-atlas-layout.unit.test.d.ts +0 -2
- package/dist/__tests__/directional-shadow-probe-atlas-layout.unit.test.d.ts.map +0 -1
- package/dist/__tests__/environment-inspection.test.d.ts +0 -2
- package/dist/__tests__/environment-inspection.test.d.ts.map +0 -1
- package/dist/__tests__/fog-ai-user.fixture.d.ts +0 -2
- package/dist/__tests__/fog-ai-user.fixture.d.ts.map +0 -1
- package/dist/__tests__/fog-custom-render-feature.fixture.d.ts +0 -16
- package/dist/__tests__/fog-custom-render-feature.fixture.d.ts.map +0 -1
- package/dist/__tests__/fog-custom-render-feature.integration.test.d.ts +0 -2
- package/dist/__tests__/fog-custom-render-feature.integration.test.d.ts.map +0 -1
- package/dist/__tests__/fog-inspection.integration.test.d.ts +0 -2
- package/dist/__tests__/fog-inspection.integration.test.d.ts.map +0 -1
- package/dist/__tests__/fog-owner-state.integration.test.d.ts +0 -2
- package/dist/__tests__/fog-owner-state.integration.test.d.ts.map +0 -1
- package/dist/__tests__/fog-pipeline-topology.integration.test.d.ts +0 -2
- package/dist/__tests__/fog-pipeline-topology.integration.test.d.ts.map +0 -1
- package/dist/__tests__/fog-public-surface.integration.test.d.ts +0 -2
- package/dist/__tests__/fog-public-surface.integration.test.d.ts.map +0 -1
- package/dist/__tests__/fog-ray-contract.integration.test.d.ts +0 -2
- package/dist/__tests__/fog-ray-contract.integration.test.d.ts.map +0 -1
- package/dist/__tests__/fog-source-absence.integration.test.d.ts +0 -2
- package/dist/__tests__/fog-source-absence.integration.test.d.ts.map +0 -1
- package/dist/__tests__/fog-temporal.integration.test.d.ts +0 -2
- package/dist/__tests__/fog-temporal.integration.test.d.ts.map +0 -1
- package/dist/__tests__/frame-chain.unit.test.d.ts +0 -2
- package/dist/__tests__/frame-chain.unit.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-scene-field-type-owner.test-d.d.ts +0 -2
- package/dist/__tests__/gpu-scene-field-type-owner.test-d.d.ts.map +0 -1
- package/dist/__tests__/hdrp-pipeline.unit.test.d.ts +0 -2
- package/dist/__tests__/hdrp-pipeline.unit.test.d.ts.map +0 -1
- package/dist/__tests__/ibl/ibl-fallback.unit.test.d.ts +0 -2
- package/dist/__tests__/ibl/ibl-fallback.unit.test.d.ts.map +0 -1
- package/dist/__tests__/material-derived-error-stop-draw.integration.test.d.ts +0 -2
- package/dist/__tests__/material-derived-error-stop-draw.integration.test.d.ts.map +0 -1
- package/dist/__tests__/material-derived-payload.integration.test.d.ts +0 -2
- package/dist/__tests__/material-derived-payload.integration.test.d.ts.map +0 -1
- package/dist/__tests__/materials.unit.test.d.ts +0 -2
- package/dist/__tests__/materials.unit.test.d.ts.map +0 -1
- package/dist/__tests__/param-schema-projection-census.unit.test.d.ts +0 -2
- package/dist/__tests__/param-schema-projection-census.unit.test.d.ts.map +0 -1
- package/dist/__tests__/persistent-render-scene.unit.test.d.ts +0 -2
- package/dist/__tests__/persistent-render-scene.unit.test.d.ts.map +0 -1
- package/dist/__tests__/pipeline-error-policy-owner.unit.test.d.ts +0 -2
- package/dist/__tests__/pipeline-error-policy-owner.unit.test.d.ts.map +0 -1
- package/dist/__tests__/pipeline-pass-trace.test.d.ts +0 -2
- package/dist/__tests__/pipeline-pass-trace.test.d.ts.map +0 -1
- package/dist/__tests__/pipeline-stage-owner.test-d.d.ts +0 -2
- package/dist/__tests__/pipeline-stage-owner.test-d.d.ts.map +0 -1
- package/dist/__tests__/plugin.test.d.ts +0 -2
- package/dist/__tests__/plugin.test.d.ts.map +0 -1
- package/dist/__tests__/prepared-graphics-backend-matrix.unit.test.d.ts +0 -2
- package/dist/__tests__/prepared-graphics-backend-matrix.unit.test.d.ts.map +0 -1
- package/dist/__tests__/prepared-graphics-resolver-recording.unit.test.d.ts +0 -2
- package/dist/__tests__/prepared-graphics-resolver-recording.unit.test.d.ts.map +0 -1
- package/dist/__tests__/public-pipeline-id.test-d.d.ts +0 -2
- package/dist/__tests__/public-pipeline-id.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-dispatch-membership.unit.test.d.ts +0 -2
- package/dist/__tests__/render-dispatch-membership.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-construction.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-construction.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-error-code-owner.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-error-code-owner.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-gpu-buffer-usage-owner.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-gpu-buffer-usage-owner.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-graph.integration.test.d.ts +0 -2
- package/dist/__tests__/render-feature-graph.integration.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-graphics-staging.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-graphics-staging.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-order.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-order.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-prepared-graphics-recording.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-prepared-graphics-recording.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-staging.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-staging.unit.test.d.ts.map +0 -1
- package/dist/__tests__/renderer-render-scene-public.test-d.d.ts +0 -2
- package/dist/__tests__/renderer-render-scene-public.test-d.d.ts.map +0 -1
- package/dist/__tests__/scene-temporal-coverage.unit.test.d.ts +0 -2
- package/dist/__tests__/scene-temporal-coverage.unit.test.d.ts.map +0 -1
- package/dist/__tests__/sun-snapshot-consumers.test.d.ts +0 -2
- package/dist/__tests__/sun-snapshot-consumers.test.d.ts.map +0 -1
- package/dist/__tests__/surface-backend-kind-owner.test-d.d.ts +0 -2
- package/dist/__tests__/surface-backend-kind-owner.test-d.d.ts.map +0 -1
- package/dist/__tests__/taa-history-store.unit.test.d.ts +0 -2
- package/dist/__tests__/taa-history-store.unit.test.d.ts.map +0 -1
- package/dist/__tests__/temporal-frame-transaction.integration.test.d.ts +0 -2
- package/dist/__tests__/temporal-frame-transaction.integration.test.d.ts.map +0 -1
- package/dist/__tests__/temporal-inspection.unit.test.d.ts +0 -2
- package/dist/__tests__/temporal-inspection.unit.test.d.ts.map +0 -1
- package/dist/assets/__tests__/asset-decoders.unit.test.d.ts +0 -2
- package/dist/assets/__tests__/asset-decoders.unit.test.d.ts.map +0 -1
- package/dist/assets/__tests__/mipmap-generator.unit.test.d.ts +0 -2
- package/dist/assets/__tests__/mipmap-generator.unit.test.d.ts.map +0 -1
- package/dist/assets/__tests__/render-asset-port.unit.test.d.ts +0 -2
- package/dist/assets/__tests__/render-asset-port.unit.test.d.ts.map +0 -1
- package/dist/assets/__tests__/resolve-render-asset.unit.test.d.ts +0 -2
- package/dist/assets/__tests__/resolve-render-asset.unit.test.d.ts.map +0 -1
- package/dist/chunk-DJIMFYX6.mjs +0 -1439
- package/dist/chunk-DJIMFYX6.mjs.map +0 -1
- package/dist/chunk-F2SIOCRM.mjs +0 -7423
- package/dist/chunk-F2SIOCRM.mjs.map +0 -1
- package/dist/chunk-JMSB7AR4.mjs +0 -3
- package/dist/chunk-JMSB7AR4.mjs.map +0 -1
- package/dist/chunk-KHI6K4C6.mjs +0 -659
- package/dist/chunk-KHI6K4C6.mjs.map +0 -1
- package/dist/chunk-PORZOL2V.mjs +0 -569
- package/dist/chunk-PORZOL2V.mjs.map +0 -1
- package/dist/chunk-UOJGMDGP.mjs +0 -29913
- package/dist/chunk-UOJGMDGP.mjs.map +0 -1
- package/dist/components/__tests__/atmosphere-red.test.d.ts +0 -2
- package/dist/components/__tests__/atmosphere-red.test.d.ts.map +0 -1
- package/dist/components/__tests__/atmosphere.test.d.ts +0 -2
- package/dist/components/__tests__/atmosphere.test.d.ts.map +0 -1
- package/dist/components/__tests__/fog.test-d.d.ts +0 -2
- package/dist/components/__tests__/fog.test-d.d.ts.map +0 -1
- package/dist/components/__tests__/fog.test.d.ts +0 -2
- package/dist/components/__tests__/fog.test.d.ts.map +0 -1
- package/dist/components/atmosphere.d.ts +0 -18
- package/dist/components/atmosphere.d.ts.map +0 -1
- package/dist/components/environment.d.ts +0 -115
- package/dist/components/environment.d.ts.map +0 -1
- package/dist/deferred-lighting.d.ts +0 -13
- package/dist/deferred-lighting.d.ts.map +0 -1
- package/dist/dynamic-texture-store.d.ts +0 -42
- package/dist/dynamic-texture-store.d.ts.map +0 -1
- package/dist/environment/__tests__/failure-injection.test.d.ts +0 -2
- package/dist/environment/__tests__/failure-injection.test.d.ts.map +0 -1
- package/dist/environment/__tests__/generation-red.test.d.ts +0 -2
- package/dist/environment/__tests__/generation-red.test.d.ts.map +0 -1
- package/dist/environment/__tests__/generation.test.d.ts +0 -2
- package/dist/environment/__tests__/generation.test.d.ts.map +0 -1
- package/dist/environment/__tests__/graph-transaction.test.d.ts +0 -2
- package/dist/environment/__tests__/graph-transaction.test.d.ts.map +0 -1
- package/dist/environment/__tests__/inspection-red.test.d.ts +0 -2
- package/dist/environment/__tests__/inspection-red.test.d.ts.map +0 -1
- package/dist/environment/__tests__/lifecycle-evidence.test.d.ts +0 -2
- package/dist/environment/__tests__/lifecycle-evidence.test.d.ts.map +0 -1
- package/dist/environment/__tests__/pipeline-topology.test.d.ts +0 -2
- package/dist/environment/__tests__/pipeline-topology.test.d.ts.map +0 -1
- package/dist/environment/__tests__/readiness.test.d.ts +0 -2
- package/dist/environment/__tests__/readiness.test.d.ts.map +0 -1
- package/dist/environment/__tests__/recovery.test.d.ts +0 -2
- package/dist/environment/__tests__/recovery.test.d.ts.map +0 -1
- package/dist/environment/__tests__/resize-dispose.test.d.ts +0 -2
- package/dist/environment/__tests__/resize-dispose.test.d.ts.map +0 -1
- package/dist/environment/__tests__/signature-red.test.d.ts +0 -2
- package/dist/environment/__tests__/signature-red.test.d.ts.map +0 -1
- package/dist/environment/__tests__/signature.test.d.ts +0 -2
- package/dist/environment/__tests__/signature.test.d.ts.map +0 -1
- package/dist/environment/descriptors.d.ts +0 -2
- package/dist/environment/descriptors.d.ts.map +0 -1
- package/dist/environment/extracted-environment.d.ts +0 -53
- package/dist/environment/extracted-environment.d.ts.map +0 -1
- package/dist/environment/generation.d.ts +0 -62
- package/dist/environment/generation.d.ts.map +0 -1
- package/dist/environment/gpu-bundle.d.ts +0 -23
- package/dist/environment/gpu-bundle.d.ts.map +0 -1
- package/dist/environment/graph.d.ts +0 -108
- package/dist/environment/graph.d.ts.map +0 -1
- package/dist/environment/inspection.d.ts +0 -48
- package/dist/environment/inspection.d.ts.map +0 -1
- package/dist/environment/lifecycle.d.ts +0 -22
- package/dist/environment/lifecycle.d.ts.map +0 -1
- package/dist/environment/readiness.d.ts +0 -29
- package/dist/environment/readiness.d.ts.map +0 -1
- package/dist/environment/signature.d.ts +0 -70
- package/dist/environment/signature.d.ts.map +0 -1
- package/dist/extract/__tests__/directional-csm-domain.unit.test.d.ts +0 -2
- package/dist/extract/__tests__/directional-csm-domain.unit.test.d.ts.map +0 -1
- package/dist/extract/__tests__/environment-source.test.d.ts +0 -2
- package/dist/extract/__tests__/environment-source.test.d.ts.map +0 -1
- package/dist/extract/__tests__/schema-readers.unit.test.d.ts +0 -2
- package/dist/extract/__tests__/schema-readers.unit.test.d.ts.map +0 -1
- package/dist/extract/directional-csm.d.ts +0 -129
- package/dist/extract/directional-csm.d.ts.map +0 -1
- package/dist/extract/index.d.ts +0 -5
- package/dist/extract/index.d.ts.map +0 -1
- package/dist/extract/material-interface.d.ts +0 -56
- package/dist/extract/material-interface.d.ts.map +0 -1
- package/dist/extract/schema-readers.d.ts +0 -20
- package/dist/extract/schema-readers.d.ts.map +0 -1
- package/dist/features/graph-contribution.d.ts +0 -64
- package/dist/features/graph-contribution.d.ts.map +0 -1
- package/dist/features/index.d.ts +0 -21
- package/dist/features/index.d.ts.map +0 -1
- package/dist/features/morph/index.d.ts +0 -3
- package/dist/features/morph/index.d.ts.map +0 -1
- package/dist/features/morph/morph-bounds.d.ts +0 -42
- package/dist/features/morph/morph-bounds.d.ts.map +0 -1
- package/dist/features/scene-temporal.d.ts +0 -45
- package/dist/features/scene-temporal.d.ts.map +0 -1
- package/dist/features/taa-resolve.d.ts +0 -21
- package/dist/features/taa-resolve.d.ts.map +0 -1
- package/dist/frame-chain.d.ts +0 -14
- package/dist/frame-chain.d.ts.map +0 -1
- package/dist/gpu-driven/view-reference.d.ts.map +0 -1
- package/dist/gpu-resource-store.d.ts.map +0 -1
- package/dist/hdrp-cluster-membership.d.ts +0 -2
- package/dist/hdrp-cluster-membership.d.ts.map +0 -1
- package/dist/hdrp-pipeline.d.ts +0 -36
- package/dist/hdrp-pipeline.d.ts.map +0 -1
- package/dist/ibl/cubemap-projection.d.ts +0 -23
- package/dist/ibl/cubemap-projection.d.ts.map +0 -1
- package/dist/ibl/face-uniforms.d.ts +0 -65
- package/dist/ibl/face-uniforms.d.ts.map +0 -1
- package/dist/mesh-update-errors.d.ts +0 -71
- package/dist/mesh-update-errors.d.ts.map +0 -1
- package/dist/mipmap-generator.d.ts +0 -39
- package/dist/mipmap-generator.d.ts.map +0 -1
- package/dist/param-schema-projection-census.d.ts +0 -18
- package/dist/param-schema-projection-census.d.ts.map +0 -1
- package/dist/persistent-render-scene.d.ts +0 -158
- package/dist/persistent-render-scene.d.ts.map +0 -1
- package/dist/pipeline/index.d.ts +0 -11
- package/dist/pipeline/index.d.ts.map +0 -1
- package/dist/pipeline-errors.d.ts +0 -110
- package/dist/pipeline-errors.d.ts.map +0 -1
- package/dist/prepare/__tests__/schema-readers.unit.test.d.ts +0 -2
- package/dist/prepare/__tests__/schema-readers.unit.test.d.ts.map +0 -1
- package/dist/prepare/index.d.ts +0 -4
- package/dist/prepare/index.d.ts.map +0 -1
- package/dist/prepare/schema-readers.d.ts +0 -11
- package/dist/prepare/schema-readers.d.ts.map +0 -1
- package/dist/record/__tests__/environment-record.test.d.ts +0 -2
- package/dist/record/__tests__/environment-record.test.d.ts.map +0 -1
- package/dist/record/__tests__/frame-targets.unit.test.d.ts +0 -2
- package/dist/record/__tests__/frame-targets.unit.test.d.ts.map +0 -1
- package/dist/record/__tests__/membership-timing.unit.test.d.ts +0 -2
- package/dist/record/__tests__/membership-timing.unit.test.d.ts.map +0 -1
- package/dist/record/__tests__/render-submission.integration.test.d.ts +0 -2
- package/dist/record/__tests__/render-submission.integration.test.d.ts.map +0 -1
- package/dist/record/__tests__/render-submission.perf.test.d.ts +0 -2
- package/dist/record/__tests__/render-submission.perf.test.d.ts.map +0 -1
- package/dist/record/__tests__/shadow-submit-mode.unit.test.d.ts +0 -2
- package/dist/record/__tests__/shadow-submit-mode.unit.test.d.ts.map +0 -1
- package/dist/record/__tests__/view-ubo-layout.unit.test.d.ts +0 -2
- package/dist/record/__tests__/view-ubo-layout.unit.test.d.ts.map +0 -1
- package/dist/record/frame-observation.d.ts +0 -38
- package/dist/record/frame-observation.d.ts.map +0 -1
- package/dist/record/index.d.ts +0 -15
- package/dist/record/index.d.ts.map +0 -1
- package/dist/record/main-pass-skin.d.ts +0 -46
- package/dist/record/main-pass-skin.d.ts.map +0 -1
- package/dist/record/main-pass-sprite.d.ts +0 -69
- package/dist/record/main-pass-sprite.d.ts.map +0 -1
- package/dist/record/material-payload.d.ts +0 -43
- package/dist/record/material-payload.d.ts.map +0 -1
- package/dist/record/material-slot-plan.d.ts +0 -26
- package/dist/record/material-slot-plan.d.ts.map +0 -1
- package/dist/record/membership-timing.d.ts +0 -232
- package/dist/record/membership-timing.d.ts.map +0 -1
- package/dist/record/shadow-caster-uniform.d.ts +0 -8
- package/dist/record/shadow-caster-uniform.d.ts.map +0 -1
- package/dist/record/shadow-submit-mode.d.ts +0 -66
- package/dist/record/shadow-submit-mode.d.ts.map +0 -1
- package/dist/render-dispatch-membership.d.ts +0 -47
- package/dist/render-dispatch-membership.d.ts.map +0 -1
- package/dist/render-pipeline-context.d.ts +0 -289
- package/dist/render-pipeline-context.d.ts.map +0 -1
- package/dist/render-pipeline-target.d.ts +0 -16
- package/dist/render-pipeline-target.d.ts.map +0 -1
- package/dist/render-scene-projection.d.ts +0 -174
- package/dist/render-scene-projection.d.ts.map +0 -1
- package/dist/render-system-fold.d.ts +0 -266
- package/dist/render-system-fold.d.ts.map +0 -1
- package/dist/renderer/asset-service.d.ts +0 -10
- package/dist/renderer/asset-service.d.ts.map +0 -1
- package/dist/renderer/backend-selection.d.ts.map +0 -1
- package/dist/renderer/environment-classify.d.ts +0 -6
- package/dist/renderer/environment-classify.d.ts.map +0 -1
- package/dist/renderer/environment-error.d.ts +0 -13
- package/dist/renderer/environment-error.d.ts.map +0 -1
- package/dist/renderer/material/pipeline-projection.d.ts +0 -91
- package/dist/renderer/material/pipeline-projection.d.ts.map +0 -1
- package/dist/renderer/renderer-factory.d.ts +0 -289
- package/dist/renderer/renderer-factory.d.ts.map +0 -1
- package/dist/renderer.d.ts +0 -771
- package/dist/renderer.d.ts.map +0 -1
- package/dist/scene-utils/collect-subtree.d.ts +0 -11
- package/dist/scene-utils/collect-subtree.d.ts.map +0 -1
- package/dist/ssao-data.d.ts +0 -34
- package/dist/ssao-data.d.ts.map +0 -1
- package/dist/surface-format.d.ts +0 -10
- package/dist/surface-format.d.ts.map +0 -1
- package/dist/taa-history-store.d.ts +0 -88
- package/dist/taa-history-store.d.ts.map +0 -1
- package/dist/temporal-coverage.d.ts +0 -35
- package/dist/temporal-coverage.d.ts.map +0 -1
- package/dist/temporal-frame-transaction.d.ts +0 -92
- package/dist/temporal-frame-transaction.d.ts.map +0 -1
- package/dist/temporal-inspection.d.ts +0 -57
- package/dist/temporal-inspection.d.ts.map +0 -1
- package/dist/temporal-view.d.ts +0 -43
- package/dist/temporal-view.d.ts.map +0 -1
- package/dist/tilemap/resolve-tileset-runtime.d.ts +0 -23
- package/dist/tilemap/resolve-tileset-runtime.d.ts.map +0 -1
- package/dist/urp-pipeline.d.ts +0 -4
- package/dist/urp-pipeline.d.ts.map +0 -1
- package/src/__tests__/analytic-sky-contract.test.ts +0 -27
- package/src/__tests__/analytic-sky-falsify-carriers.mjs +0 -43
- package/src/__tests__/analytic-sky-falsify.test.ts +0 -94
- package/src/__tests__/assets-runtime-handoff.integration.test.ts +0 -36
- package/src/__tests__/backend-selection.integration.test.ts +0 -11
- package/src/__tests__/camera-temporal.test-d.ts +0 -8
- package/src/__tests__/camera-temporal.test.ts +0 -188
- package/src/__tests__/directional-shadow-probe-atlas-layout.unit.test.ts +0 -18
- package/src/__tests__/environment-inspection.test.ts +0 -45
- package/src/__tests__/fog-ai-user.fixture.ts +0 -350
- package/src/__tests__/fog-custom-render-feature.fixture.ts +0 -33
- package/src/__tests__/fog-custom-render-feature.integration.test.ts +0 -76
- package/src/__tests__/fog-inspection.integration.test.ts +0 -127
- package/src/__tests__/fog-owner-state.integration.test.ts +0 -112
- package/src/__tests__/fog-pipeline-topology.integration.test.ts +0 -93
- package/src/__tests__/fog-public-surface.integration.test.ts +0 -60
- package/src/__tests__/fog-ray-contract.integration.test.ts +0 -73
- package/src/__tests__/fog-source-absence.integration.test.ts +0 -51
- package/src/__tests__/fog-temporal.integration.test.ts +0 -115
- package/src/__tests__/frame-chain.unit.test.ts +0 -26
- package/src/__tests__/gpu-scene-field-type-owner.test-d.ts +0 -27
- package/src/__tests__/hdrp-pipeline.unit.test.ts +0 -100
- package/src/__tests__/ibl/ibl-fallback.unit.test.ts +0 -23
- package/src/__tests__/material-derived-error-stop-draw.integration.test.ts +0 -69
- package/src/__tests__/material-derived-payload.integration.test.ts +0 -164
- package/src/__tests__/materials.unit.test.ts +0 -25
- package/src/__tests__/param-schema-projection-census.unit.test.ts +0 -40
- package/src/__tests__/persistent-render-scene.unit.test.ts +0 -1311
- package/src/__tests__/pipeline-error-policy-owner.unit.test.ts +0 -167
- package/src/__tests__/pipeline-pass-trace.test.ts +0 -92
- package/src/__tests__/pipeline-stage-owner.test-d.ts +0 -13
- package/src/__tests__/plugin.test.ts +0 -25
- package/src/__tests__/prepared-graphics-backend-matrix.unit.test.ts +0 -129
- package/src/__tests__/prepared-graphics-resolver-recording.unit.test.ts +0 -180
- package/src/__tests__/public-pipeline-id.test-d.ts +0 -6
- package/src/__tests__/render-dispatch-membership.unit.test.ts +0 -117
- package/src/__tests__/render-feature-construction.unit.test.ts +0 -124
- package/src/__tests__/render-feature-error-code-owner.test-d.ts +0 -27
- package/src/__tests__/render-feature-gpu-buffer-usage-owner.test-d.ts +0 -46
- package/src/__tests__/render-feature-graph.integration.test.ts +0 -205
- package/src/__tests__/render-feature-graphics-staging.unit.test.ts +0 -200
- package/src/__tests__/render-feature-order.unit.test.ts +0 -66
- package/src/__tests__/render-feature-prepared-graphics-recording.unit.test.ts +0 -107
- package/src/__tests__/render-feature-staging.unit.test.ts +0 -94
- package/src/__tests__/renderer-render-scene-public.test-d.ts +0 -27
- package/src/__tests__/scene-temporal-coverage.unit.test.ts +0 -259
- package/src/__tests__/sun-snapshot-consumers.test.ts +0 -35
- package/src/__tests__/surface-backend-kind-owner.test-d.ts +0 -42
- package/src/__tests__/taa-history-store.unit.test.ts +0 -196
- package/src/__tests__/temporal-frame-transaction.integration.test.ts +0 -537
- package/src/__tests__/temporal-inspection.unit.test.ts +0 -138
- package/src/assets/__tests__/asset-decoders.unit.test.ts +0 -92
- package/src/assets/__tests__/mipmap-generator.unit.test.ts +0 -52
- package/src/assets/__tests__/render-asset-port.unit.test.ts +0 -54
- package/src/assets/__tests__/resolve-render-asset.unit.test.ts +0 -47
- package/src/components/__tests__/atmosphere-red.test.ts +0 -51
- package/src/components/__tests__/atmosphere.test.ts +0 -79
- package/src/components/__tests__/fog.test-d.ts +0 -49
- package/src/components/__tests__/fog.test.ts +0 -60
- package/src/components/atmosphere.ts +0 -64
- package/src/deferred-lighting.ts +0 -92
- package/src/dynamic-texture-store.ts +0 -111
- package/src/environment/README.md +0 -76
- package/src/environment/__tests__/failure-injection.test.ts +0 -50
- package/src/environment/__tests__/generation-red.test.ts +0 -64
- package/src/environment/__tests__/generation.test.ts +0 -37
- package/src/environment/__tests__/graph-transaction.test.ts +0 -85
- package/src/environment/__tests__/inspection-red.test.ts +0 -53
- package/src/environment/__tests__/lifecycle-evidence.test.ts +0 -40
- package/src/environment/__tests__/pipeline-topology.test.ts +0 -33
- package/src/environment/__tests__/readiness.test.ts +0 -42
- package/src/environment/__tests__/recovery.test.ts +0 -62
- package/src/environment/__tests__/resize-dispose.test.ts +0 -30
- package/src/environment/__tests__/signature-red.test.ts +0 -45
- package/src/environment/__tests__/signature.test.ts +0 -60
- package/src/environment/descriptors.ts +0 -7
- package/src/environment/extracted-environment.ts +0 -239
- package/src/environment/generation.ts +0 -158
- package/src/environment/gpu-bundle.ts +0 -144
- package/src/environment/graph.ts +0 -588
- package/src/environment/inspection.ts +0 -107
- package/src/environment/lifecycle.ts +0 -124
- package/src/environment/readiness.ts +0 -76
- package/src/environment/signature.ts +0 -185
- package/src/extract/__tests__/directional-csm-domain.unit.test.ts +0 -391
- package/src/extract/__tests__/environment-source.test.ts +0 -105
- package/src/extract/__tests__/schema-readers.unit.test.ts +0 -16
- package/src/extract/directional-csm.ts +0 -959
- package/src/extract/index.ts +0 -10
- package/src/extract/material-interface.ts +0 -604
- package/src/extract/schema-readers.ts +0 -27
- package/src/features/graph-contribution.ts +0 -577
- package/src/features/index.ts +0 -100
- package/src/features/morph/index.ts +0 -24
- package/src/features/morph/morph-bounds.ts +0 -123
- package/src/features/scene-temporal.ts +0 -274
- package/src/features/taa-resolve.ts +0 -244
- package/src/frame-chain.ts +0 -21
- package/src/hdrp-cluster-membership.ts +0 -70
- package/src/ibl/cubemap-projection.ts +0 -60
- package/src/ibl/face-uniforms.ts +0 -150
- package/src/mesh-update-errors.ts +0 -113
- package/src/mipmap-generator.ts +0 -244
- package/src/param-schema-projection-census.ts +0 -73
- package/src/persistent-render-scene.ts +0 -1752
- package/src/pipeline/index.ts +0 -40
- package/src/pipeline-errors.ts +0 -172
- package/src/prepare/__tests__/schema-readers.unit.test.ts +0 -16
- package/src/prepare/index.ts +0 -8
- package/src/prepare/schema-readers.ts +0 -20
- package/src/record/__tests__/environment-record.test.ts +0 -35
- package/src/record/__tests__/frame-targets.unit.test.ts +0 -54
- package/src/record/__tests__/membership-timing.unit.test.ts +0 -524
- package/src/record/__tests__/render-submission.integration.test.ts +0 -76
- package/src/record/__tests__/render-submission.perf.test.ts +0 -141
- package/src/record/__tests__/shadow-submit-mode.unit.test.ts +0 -88
- package/src/record/__tests__/view-ubo-layout.unit.test.ts +0 -101
- package/src/record/frame-observation.ts +0 -122
- package/src/record/index.ts +0 -15
- package/src/record/main-pass-skin.ts +0 -51
- package/src/record/main-pass-sprite.ts +0 -166
- package/src/record/material-payload.ts +0 -292
- package/src/record/material-slot-plan.ts +0 -68
- package/src/record/membership-timing.ts +0 -1012
- package/src/record/shadow-caster-uniform.ts +0 -37
- package/src/record/shadow-submit-mode.ts +0 -277
- package/src/render-dispatch-membership.ts +0 -155
- package/src/render-pipeline-context.ts +0 -332
- package/src/render-pipeline-target.ts +0 -96
- package/src/render-scene-projection.ts +0 -1738
- package/src/render-system-fold.ts +0 -531
- package/src/renderer/asset-service.ts +0 -32
- package/src/renderer/backend-selection.ts +0 -121
- package/src/renderer/environment-classify.ts +0 -30
- package/src/renderer/environment-error.ts +0 -19
- package/src/renderer/material/pipeline-projection.ts +0 -140
- package/src/renderer.ts +0 -940
- package/src/scene-utils/collect-subtree.ts +0 -40
- package/src/ssao-data.ts +0 -106
- package/src/surface-format.ts +0 -37
- package/src/taa-history-store.ts +0 -429
- package/src/temporal-coverage.ts +0 -106
- package/src/temporal-frame-transaction.ts +0 -301
- package/src/temporal-inspection.ts +0 -194
- package/src/temporal-view.ts +0 -174
- package/src/tilemap/resolve-tileset-runtime.ts +0 -72
|
@@ -0,0 +1,1152 @@
|
|
|
1
|
+
import { defineComponent, Entity } from '@forgeax/engine-ecs';
|
|
2
|
+
import { TONEMAP_SHADER_MODE } from '@forgeax/engine-shader';
|
|
3
|
+
import { err, ok } from '@forgeax/engine-types';
|
|
4
|
+
import { projectHierarchy } from '@forgeax/engine-scene';
|
|
5
|
+
|
|
6
|
+
// src/errors/render.ts
|
|
7
|
+
var LifecycleConstructionError = class extends Error {
|
|
8
|
+
code = "lifecycle-construction-failed";
|
|
9
|
+
expected = "all DeviceScope resources establish and terminate in order";
|
|
10
|
+
hint = "inspect detail and cleanupFailures, then recover or rebuild the DeviceScope";
|
|
11
|
+
detail;
|
|
12
|
+
constructor(detail) {
|
|
13
|
+
super(`lifecycle-construction-failed: ${detail.resourceKind} lifecycle transaction failed`);
|
|
14
|
+
this.name = "LifecycleConstructionError";
|
|
15
|
+
this.detail = detail;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
var ShadowInvalidConfigError = class extends Error {
|
|
19
|
+
code = "shadow-invalid-config";
|
|
20
|
+
expected;
|
|
21
|
+
hint;
|
|
22
|
+
detail;
|
|
23
|
+
constructor(field, value, min, maxOrComparator) {
|
|
24
|
+
const isComparator = maxOrComparator === ">" || maxOrComparator === ">=";
|
|
25
|
+
const max = !isComparator && typeof maxOrComparator === "number" ? maxOrComparator : void 0;
|
|
26
|
+
const comparator = isComparator ? maxOrComparator : ">=";
|
|
27
|
+
const isInteger = field === "cascadeCount" || field === "pcfKernelSize";
|
|
28
|
+
const isOdd = field === "pcfKernelSize";
|
|
29
|
+
const hint = max !== void 0 ? isInteger ? `set ${field} to an integer in [${min}, ${max}]; got ${value}` : `set ${field} to a value in [${min}, ${max}]; got ${value}` : isOdd ? `set ${field} to an odd integer ${comparator} ${min}; got ${value}` : `set ${field} to a value ${comparator} ${min}; got ${value}`;
|
|
30
|
+
const expected = max !== void 0 ? `${field} in [${min}, ${max}]` : `${field} ${comparator} ${min}`;
|
|
31
|
+
super(
|
|
32
|
+
max !== void 0 ? `shadow component .${field} must be in [${min}, ${max}], got ${value}` : `shadow component .${field} must be ${comparator} ${min}, got ${value}`
|
|
33
|
+
);
|
|
34
|
+
this.name = "ShadowInvalidConfigError";
|
|
35
|
+
this.hint = hint;
|
|
36
|
+
this.expected = expected;
|
|
37
|
+
this.detail = { field, value, min, ...max !== void 0 ? { max } : {} };
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
var EquirectProjectionFailedError = class extends Error {
|
|
41
|
+
code = "equirect-projection-failed";
|
|
42
|
+
expected;
|
|
43
|
+
hint;
|
|
44
|
+
detail;
|
|
45
|
+
constructor(handle) {
|
|
46
|
+
const expected = `equirect handle ${handle} projects to a GPU cubemap + IBL precompute`;
|
|
47
|
+
const hint = `equirect handle ${handle} referenced by Skylight/SkyboxBackground failed projection; declare Skylight{equirect} with a valid HDR equirect source and check device.caps.rgba16floatRenderable. The projection is internal (no user upload call); the record arm does not retry`;
|
|
48
|
+
super(`equirect handle ${handle} cubemap projection failed`);
|
|
49
|
+
this.name = "EquirectProjectionFailedError";
|
|
50
|
+
this.expected = expected;
|
|
51
|
+
this.hint = hint;
|
|
52
|
+
this.detail = { handle };
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
var HdrpLightBudgetExceededError = class extends Error {
|
|
56
|
+
code = "hdrp-light-budget-exceeded";
|
|
57
|
+
expected;
|
|
58
|
+
hint;
|
|
59
|
+
detail;
|
|
60
|
+
constructor(actual, budget) {
|
|
61
|
+
const expected = `light count <= ${budget}`;
|
|
62
|
+
const hint = `${actual} lights exceed HDRP budget ${budget}; truncating to 256. Reduce light count or wait for OOS-hdrp-larger-budget`;
|
|
63
|
+
super(`HDRP light budget exceeded: ${actual} > ${budget}`);
|
|
64
|
+
this.name = "HdrpLightBudgetExceededError";
|
|
65
|
+
this.expected = expected;
|
|
66
|
+
this.hint = hint;
|
|
67
|
+
this.detail = { actual, budget };
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
var HdrpIndexListOverflowError = class extends Error {
|
|
71
|
+
code = "hdrp-index-list-overflow";
|
|
72
|
+
expected;
|
|
73
|
+
hint;
|
|
74
|
+
detail;
|
|
75
|
+
constructor(actual, capacity) {
|
|
76
|
+
const expected = `light index list entries <= ${capacity}`;
|
|
77
|
+
const hint = `cluster binner overflow: writeCount ${actual} exceeds capacity ${capacity}; reduce lights, shrink cluster grid, or increase LIGHT_INDEX_LIST_CAPACITY`;
|
|
78
|
+
super(`HDRP index list overflow: ${actual} > ${capacity}`);
|
|
79
|
+
this.name = "HdrpIndexListOverflowError";
|
|
80
|
+
this.expected = expected;
|
|
81
|
+
this.hint = hint;
|
|
82
|
+
this.detail = { actual, capacity };
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
var HdrpDeferredCapsInsufficientError = class extends Error {
|
|
86
|
+
code = "hdrp-deferred-caps-insufficient";
|
|
87
|
+
expected;
|
|
88
|
+
hint;
|
|
89
|
+
detail;
|
|
90
|
+
constructor(actual) {
|
|
91
|
+
const _expected = 4;
|
|
92
|
+
const _expectedStr = `maxColorAttachments >= ${_expected}`;
|
|
93
|
+
const hint = `WebGPU maxColorAttachments = ${actual} (need >= ${_expected}). Upgrade browser to latest Chrome/Edge/Safari, or use URP (forgeax::urp) instead of HDRP.`;
|
|
94
|
+
super(
|
|
95
|
+
`HDRP deferred caps insufficient: maxColorAttachments = ${actual} (need >= ${_expected})`
|
|
96
|
+
);
|
|
97
|
+
this.name = "HdrpDeferredCapsInsufficientError";
|
|
98
|
+
this.expected = _expectedStr;
|
|
99
|
+
this.hint = hint;
|
|
100
|
+
this.detail = { actual, expected: _expected };
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
var PointShadowAtlasUninitializedError = class extends Error {
|
|
104
|
+
code = "point-shadow-atlas-uninitialized";
|
|
105
|
+
expected;
|
|
106
|
+
hint;
|
|
107
|
+
constructor() {
|
|
108
|
+
const expected = "ShadowAtlas.ensure() invoked before faceView()";
|
|
109
|
+
const hint = "Gate faceView on isAllocated() or call ensure() once in the per-frame extract step before iterating face views";
|
|
110
|
+
super("ShadowAtlas.faceView called before ensure(); the cube_array texture is not allocated");
|
|
111
|
+
this.name = "PointShadowAtlasUninitializedError";
|
|
112
|
+
this.expected = expected;
|
|
113
|
+
this.hint = hint;
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
var PointShadowAtlasBoundsViolationError = class extends Error {
|
|
117
|
+
code = "point-shadow-atlas-bounds-violation";
|
|
118
|
+
expected;
|
|
119
|
+
hint;
|
|
120
|
+
detail;
|
|
121
|
+
constructor(axis, value, max) {
|
|
122
|
+
const expected = `0 <= ${axis} < ${max}`;
|
|
123
|
+
const hint = axis === "layer" ? `clamp PointLight.shadowAtlasLayer to [0, ${max}); the cap on layers equals PointLightShadow cardinality (4)` : `clamp face index to [0, ${max}); cube faces are indexed 0..5 in +X/-X/+Y/-Y/+Z/-Z order`;
|
|
124
|
+
super(`ShadowAtlas.faceView ${axis} out of range: ${value} (must be in [0, ${max}))`);
|
|
125
|
+
this.name = "PointShadowAtlasBoundsViolationError";
|
|
126
|
+
this.expected = expected;
|
|
127
|
+
this.hint = hint;
|
|
128
|
+
this.detail = { axis, value, max };
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
var VideoUploadUnsupportedError = class extends Error {
|
|
132
|
+
code = "video-upload-unsupported";
|
|
133
|
+
expected;
|
|
134
|
+
hint;
|
|
135
|
+
constructor() {
|
|
136
|
+
const expected = "at least one video upload path available: a host HTMLVideoElement (general copyExternalImageToTexture path) or GPUExternalTexture capability (high-perf path)";
|
|
137
|
+
const hint = "this backend exposes no usable video upload path; render a static texture instead, or switch to a WebGPU backend that supports video texture upload";
|
|
138
|
+
super("video upload unsupported \u2014 no general or high-perf path available");
|
|
139
|
+
this.name = "VideoUploadUnsupportedError";
|
|
140
|
+
this.expected = expected;
|
|
141
|
+
this.hint = hint;
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
var VertexColorVariantConflictError = class extends Error {
|
|
145
|
+
code = "vertex-color-variant-conflict";
|
|
146
|
+
expected;
|
|
147
|
+
hint;
|
|
148
|
+
detail;
|
|
149
|
+
constructor(authoredValue, projected) {
|
|
150
|
+
const expected = `VERTEX_COLOR_AVAILABLE=${projected ? "true" : "false"}`;
|
|
151
|
+
const hint = "derive the shader variant from the mesh VertexLayoutProjection; COLOR_0 presence is a geometry fact";
|
|
152
|
+
super(`authored vertex-color variant ${authoredValue} disagrees with projected ${expected}`);
|
|
153
|
+
this.name = "VertexColorVariantConflictError";
|
|
154
|
+
this.expected = expected;
|
|
155
|
+
this.hint = hint;
|
|
156
|
+
this.detail = { authored: true, authoredValue, projected };
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
var SkinPaletteOverflowError = class extends Error {
|
|
160
|
+
code = "skin-palette-overflow";
|
|
161
|
+
expected;
|
|
162
|
+
hint;
|
|
163
|
+
detail;
|
|
164
|
+
constructor(requestedBytes, limit) {
|
|
165
|
+
const expected = `skinned joint palette (${requestedBytes} B) fits within device.limits.maxStorageBufferBindingSize (${limit} B)`;
|
|
166
|
+
const hint = "palette buffer exceeds device maxStorageBufferBindingSize; reduce skinned entity count or split into multiple palette buffers (OOS-skin-palette-batch)";
|
|
167
|
+
super(`skin palette buffer needs ${requestedBytes} B, exceeds device limit ${limit} B`);
|
|
168
|
+
this.name = "SkinPaletteOverflowError";
|
|
169
|
+
this.expected = expected;
|
|
170
|
+
this.hint = hint;
|
|
171
|
+
this.detail = { requestedBytes, limit };
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
var SkinMaterialMismatchError = class extends Error {
|
|
175
|
+
code = "skin-material-mismatch";
|
|
176
|
+
expected;
|
|
177
|
+
hint;
|
|
178
|
+
detail;
|
|
179
|
+
constructor(entity, actualShader) {
|
|
180
|
+
const expected = "Skin entity's first material program module === 'forgeax::pbr-skin'";
|
|
181
|
+
const hint = `entity ${entity} has Skin but the first material program module is ${actualShader ?? "<empty>"}; load the mesh via the gltf importer (cooker auto-routes 'forgeax::pbr-skin' for skinned primitives), or remove the Skin component to render the entity unskinned with Materials.standard / Materials.unlit`;
|
|
182
|
+
super(
|
|
183
|
+
`Skin / material mismatch on entity ${entity}: expected forgeax::pbr-skin, got ${actualShader ?? "<empty>"}`
|
|
184
|
+
);
|
|
185
|
+
this.name = "SkinMaterialMismatchError";
|
|
186
|
+
this.expected = expected;
|
|
187
|
+
this.hint = hint;
|
|
188
|
+
this.detail = { entity, actualShader };
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
var MaterialSkinAttrMissingError = class extends Error {
|
|
192
|
+
code = "material-skin-attr-missing";
|
|
193
|
+
expected;
|
|
194
|
+
hint;
|
|
195
|
+
detail;
|
|
196
|
+
constructor(entity, missing) {
|
|
197
|
+
const expected = "pbr-skin material requires mesh.attributes.skinIndex + skinWeight";
|
|
198
|
+
const hint = `entity ${entity} uses forgeax::pbr-skin but its MeshAsset is missing ${missing}; switch the entity to a skinned glTF mesh authored with JOINTS_0 + WEIGHTS_0, or change the material to a non-skin shader via Materials.standard / Materials.unlit`;
|
|
199
|
+
super(
|
|
200
|
+
`material/skin attribute mismatch on entity ${entity}: pbr-skin material with mesh missing ${missing}`
|
|
201
|
+
);
|
|
202
|
+
this.name = "MaterialSkinAttrMissingError";
|
|
203
|
+
this.expected = expected;
|
|
204
|
+
this.hint = hint;
|
|
205
|
+
this.detail = { entity, missing };
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
var renderFeatureRecoveryHintByRecovery = {
|
|
209
|
+
"next-frame": (featureIdentity, stage) => `correct '${featureIdentity}' ${stage} data and retry on the next frame`,
|
|
210
|
+
"renderer-recover": (featureIdentity, _stage) => `wait for renderer recovery before retrying '${featureIdentity}'`,
|
|
211
|
+
registration: (featureIdentity, _stage) => `correct '${featureIdentity}' registration before retrying`
|
|
212
|
+
};
|
|
213
|
+
var RenderFeatureRegistrationConflictError = class extends Error {
|
|
214
|
+
code = "render-feature-registration-conflict";
|
|
215
|
+
expected;
|
|
216
|
+
hint;
|
|
217
|
+
detail;
|
|
218
|
+
constructor(featureIdentity, order, conflictingOrder) {
|
|
219
|
+
const expected = `feature identity '${featureIdentity}' is unique`;
|
|
220
|
+
const hint = `rename '${featureIdentity}' or remove the duplicate feature before registration`;
|
|
221
|
+
super(`render feature registration conflict for '${featureIdentity}'`);
|
|
222
|
+
this.name = "RenderFeatureRegistrationConflictError";
|
|
223
|
+
this.expected = expected;
|
|
224
|
+
this.hint = hint;
|
|
225
|
+
this.detail = { featureIdentity, order, conflictingOrder };
|
|
226
|
+
}
|
|
227
|
+
};
|
|
228
|
+
var RenderFeatureStageFailedError = class extends Error {
|
|
229
|
+
code = "render-feature-stage-failed";
|
|
230
|
+
expected;
|
|
231
|
+
hint;
|
|
232
|
+
detail;
|
|
233
|
+
constructor(featureIdentity, order, stage, recovery) {
|
|
234
|
+
const expected = `feature '${featureIdentity}' completes its ${stage} stage without an error`;
|
|
235
|
+
const hint = renderFeatureRecoveryHintByRecovery[recovery](featureIdentity, stage);
|
|
236
|
+
super(`render feature '${featureIdentity}' failed during ${stage}`);
|
|
237
|
+
this.name = "RenderFeatureStageFailedError";
|
|
238
|
+
this.expected = expected;
|
|
239
|
+
this.hint = hint;
|
|
240
|
+
this.detail = { featureIdentity, order, stage, recovery };
|
|
241
|
+
}
|
|
242
|
+
};
|
|
243
|
+
var RenderFeatureCapabilityMissingError = class extends Error {
|
|
244
|
+
code = "render-feature-capability-missing";
|
|
245
|
+
expected;
|
|
246
|
+
hint;
|
|
247
|
+
detail;
|
|
248
|
+
constructor(featureIdentity, order, capability) {
|
|
249
|
+
const expected = `device capability '${capability}' is available for feature '${featureIdentity}'`;
|
|
250
|
+
const hint = `disable '${featureIdentity}' or use a device with '${capability}' capability`;
|
|
251
|
+
super(`render feature '${featureIdentity}' requires missing capability '${capability}'`);
|
|
252
|
+
this.name = "RenderFeatureCapabilityMissingError";
|
|
253
|
+
this.expected = expected;
|
|
254
|
+
this.hint = hint;
|
|
255
|
+
this.detail = { featureIdentity, order, capability };
|
|
256
|
+
}
|
|
257
|
+
};
|
|
258
|
+
var RenderFeaturePreparationFailedError = class extends Error {
|
|
259
|
+
code = "render-feature-preparation-failed";
|
|
260
|
+
expected;
|
|
261
|
+
hint;
|
|
262
|
+
detail;
|
|
263
|
+
constructor(featureIdentity, order, operation, resourceKind, resourceName, reason, recovery) {
|
|
264
|
+
const expected = `${resourceKind} '${resourceName}' is prepared during ${operation}`;
|
|
265
|
+
const hint = `repair '${resourceName}' and retry feature '${featureIdentity}' on ${recovery}`;
|
|
266
|
+
super(`render feature '${featureIdentity}' preparation failed for '${resourceName}'`);
|
|
267
|
+
this.name = "RenderFeaturePreparationFailedError";
|
|
268
|
+
this.expected = expected;
|
|
269
|
+
this.hint = hint;
|
|
270
|
+
this.detail = {
|
|
271
|
+
featureIdentity,
|
|
272
|
+
order,
|
|
273
|
+
stage: "prepare",
|
|
274
|
+
operation,
|
|
275
|
+
resourceKind,
|
|
276
|
+
resourceName,
|
|
277
|
+
reason,
|
|
278
|
+
recovery
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
};
|
|
282
|
+
var RenderFeaturePreparedStateMismatchError = class extends Error {
|
|
283
|
+
code = "render-feature-prepared-state-mismatch";
|
|
284
|
+
expected;
|
|
285
|
+
hint;
|
|
286
|
+
detail;
|
|
287
|
+
constructor(detail) {
|
|
288
|
+
const expected = `${detail.resourceKind} state is compatible for '${detail.operation}'`;
|
|
289
|
+
const hint = `repair '${detail.reason}' for feature '${detail.featureIdentity}' and retry`;
|
|
290
|
+
super(`render feature '${detail.featureIdentity}' prepared state mismatch`);
|
|
291
|
+
this.name = "RenderFeaturePreparedStateMismatchError";
|
|
292
|
+
this.expected = expected;
|
|
293
|
+
this.hint = hint;
|
|
294
|
+
this.detail = detail;
|
|
295
|
+
}
|
|
296
|
+
};
|
|
297
|
+
var RenderFeatureDrawRecordingFailedError = class extends Error {
|
|
298
|
+
code = "render-feature-draw-recording-failed";
|
|
299
|
+
expected;
|
|
300
|
+
hint;
|
|
301
|
+
detail;
|
|
302
|
+
constructor(featureIdentity, order, operation, resourceKind, reason, backendReason, recovery) {
|
|
303
|
+
const expected = `${resourceKind} recording succeeds for '${operation}'`;
|
|
304
|
+
const hint = `repair '${reason}' and retry feature '${featureIdentity}' after ${recovery}`;
|
|
305
|
+
super(`render feature '${featureIdentity}' draw recording failed`);
|
|
306
|
+
this.name = "RenderFeatureDrawRecordingFailedError";
|
|
307
|
+
this.expected = expected;
|
|
308
|
+
this.hint = hint;
|
|
309
|
+
this.detail = {
|
|
310
|
+
featureIdentity,
|
|
311
|
+
order,
|
|
312
|
+
stage: "record",
|
|
313
|
+
operation,
|
|
314
|
+
resourceKind,
|
|
315
|
+
reason,
|
|
316
|
+
backendReason,
|
|
317
|
+
recovery
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
};
|
|
321
|
+
var ObservationUnavailableError = class extends Error {
|
|
322
|
+
code = "observation-unavailable";
|
|
323
|
+
expected;
|
|
324
|
+
hint;
|
|
325
|
+
detail;
|
|
326
|
+
constructor(reason, hint) {
|
|
327
|
+
let recovery;
|
|
328
|
+
if (reason === "copy-src") recovery = "enable-copy-src";
|
|
329
|
+
else if (reason === "resource" || reason === "readback-failed") recovery = "retry-readback";
|
|
330
|
+
else recovery = "draw-current-frame";
|
|
331
|
+
super(`current-frame observation unavailable: ${reason}`);
|
|
332
|
+
this.name = "ObservationUnavailableError";
|
|
333
|
+
this.expected = "a fresh producer-owned rgba16float current-frame observation";
|
|
334
|
+
this.hint = hint;
|
|
335
|
+
this.detail = { reason, recovery };
|
|
336
|
+
}
|
|
337
|
+
};
|
|
338
|
+
var FrameReceiptStaleError = class extends Error {
|
|
339
|
+
code = "frame-receipt-stale";
|
|
340
|
+
expected = "the observation receipt belongs to the active device generation";
|
|
341
|
+
hint = "draw a new frame and call observe with its returned FrameReceipt";
|
|
342
|
+
detail;
|
|
343
|
+
constructor(detail) {
|
|
344
|
+
super("frame receipt belongs to a retired device generation");
|
|
345
|
+
this.name = "FrameReceiptStaleError";
|
|
346
|
+
this.detail = detail;
|
|
347
|
+
}
|
|
348
|
+
};
|
|
349
|
+
var RendererContractFailureError = class extends Error {
|
|
350
|
+
code = "renderer-contract-failed";
|
|
351
|
+
expected = "renderer owner contracts remain valid at the public boundary";
|
|
352
|
+
hint = "repair the owner contract and retry the operation";
|
|
353
|
+
detail;
|
|
354
|
+
constructor(operation, cause) {
|
|
355
|
+
super(`renderer ${operation} contract failed: ${cause}`);
|
|
356
|
+
this.name = "RendererContractFailureError";
|
|
357
|
+
this.detail = { operation, cause };
|
|
358
|
+
}
|
|
359
|
+
};
|
|
360
|
+
var RENDERER_OPERATION_ERROR_POLICY = {
|
|
361
|
+
"world-lease-invalid": {
|
|
362
|
+
expected: "every render World is represented by a live lease owned by this Renderer",
|
|
363
|
+
hint: "attach the World to this Renderer and use the returned lease"
|
|
364
|
+
},
|
|
365
|
+
"frame-input-invalid": {
|
|
366
|
+
expected: "the frame input references attached leases and a valid immutable RenderProfile",
|
|
367
|
+
hint: "repair the frame input and retry draw or setProfile"
|
|
368
|
+
},
|
|
369
|
+
"scene-projection-failed": {
|
|
370
|
+
expected: "the attached World projects into the renderer-owned RenderScene",
|
|
371
|
+
hint: "inspect the structured cause, repair the World publication, and retry draw"
|
|
372
|
+
},
|
|
373
|
+
"asset-binding-failed": {
|
|
374
|
+
expected: "all frame assets resolve to valid renderer-owned bindings",
|
|
375
|
+
hint: "inspect the structured cause, rebuild or cold-cook the asset, and retry draw"
|
|
376
|
+
},
|
|
377
|
+
"feature-plan-failed": {
|
|
378
|
+
expected: "every installed RenderFeature produces a valid declarative plan",
|
|
379
|
+
hint: "inspect the feature cause, repair its plan, and retry draw"
|
|
380
|
+
},
|
|
381
|
+
"graph-build-failed": {
|
|
382
|
+
expected: "the Standard graph builds from the active profile and feature plans",
|
|
383
|
+
hint: "inspect the graph cause, repair the profile or plan, and retry"
|
|
384
|
+
},
|
|
385
|
+
"device-operation-failed": {
|
|
386
|
+
expected: "the active device generation completes the renderer-owned operation",
|
|
387
|
+
hint: "inspect renderer state and the structured cause, then retry or recover"
|
|
388
|
+
},
|
|
389
|
+
"surface-unavailable": {
|
|
390
|
+
expected: "the presentation surface accepts the requested lifecycle operation",
|
|
391
|
+
hint: "inspect renderer state, then restore the surface or create a new Renderer"
|
|
392
|
+
},
|
|
393
|
+
"renderer-state-invalid": {
|
|
394
|
+
expected: "the Renderer is in a state that accepts the requested operation",
|
|
395
|
+
hint: "inspect renderer state and choose retry, restoreSurface, recover, or stop"
|
|
396
|
+
},
|
|
397
|
+
"recovery-failed": {
|
|
398
|
+
expected: "one recovery attempt publishes a complete replacement device generation",
|
|
399
|
+
hint: "inspect the structured cause and retry recover after the host-selected delay"
|
|
400
|
+
},
|
|
401
|
+
"cleanup-failed": {
|
|
402
|
+
expected: "Renderer disposal completes every registered cleanup in reverse ownership order",
|
|
403
|
+
hint: "inspect the ordered cleanup causes; the Renderer remains disposed and must not be reused"
|
|
404
|
+
}
|
|
405
|
+
};
|
|
406
|
+
var RendererOperationError = class extends Error {
|
|
407
|
+
code;
|
|
408
|
+
expected;
|
|
409
|
+
hint;
|
|
410
|
+
detail;
|
|
411
|
+
constructor(code, detail) {
|
|
412
|
+
const policy = RENDERER_OPERATION_ERROR_POLICY[code];
|
|
413
|
+
super(`${code}: ${policy.expected}`);
|
|
414
|
+
this.name = "RendererOperationError";
|
|
415
|
+
this.code = code;
|
|
416
|
+
this.expected = policy.expected;
|
|
417
|
+
this.hint = policy.hint;
|
|
418
|
+
this.detail = detail;
|
|
419
|
+
}
|
|
420
|
+
};
|
|
421
|
+
var PointsLinesInvalidStyleError = class extends Error {
|
|
422
|
+
code = "points-lines-invalid-style";
|
|
423
|
+
expected;
|
|
424
|
+
hint;
|
|
425
|
+
detail;
|
|
426
|
+
constructor(detail) {
|
|
427
|
+
super(`invalid ${detail.component} style at ${detail.field}`);
|
|
428
|
+
this.name = "PointsLinesInvalidStyleError";
|
|
429
|
+
this.expected = detail.expected;
|
|
430
|
+
this.hint = `repair entity ${detail.entity} ${detail.component}.${detail.field} and retry admission`;
|
|
431
|
+
this.detail = detail;
|
|
432
|
+
}
|
|
433
|
+
};
|
|
434
|
+
var PointsLinesTopologyMismatchError = class extends Error {
|
|
435
|
+
code = "points-lines-topology-mismatch";
|
|
436
|
+
expected;
|
|
437
|
+
hint;
|
|
438
|
+
detail;
|
|
439
|
+
constructor(detail) {
|
|
440
|
+
super(`Points/Lines topology mismatch at submesh ${detail.submesh}`);
|
|
441
|
+
this.name = "PointsLinesTopologyMismatchError";
|
|
442
|
+
this.expected = `submesh ${detail.submesh} topology is ${detail.expected}`;
|
|
443
|
+
this.hint = `rebuild entity ${detail.entity} with ${detail.expected} geometry before retrying Points/Lines admission`;
|
|
444
|
+
this.detail = detail;
|
|
445
|
+
}
|
|
446
|
+
};
|
|
447
|
+
var PointsLinesStyleUnsupportedError = class extends Error {
|
|
448
|
+
code = "points-lines-style-unsupported";
|
|
449
|
+
expected;
|
|
450
|
+
hint;
|
|
451
|
+
detail;
|
|
452
|
+
constructor(detail) {
|
|
453
|
+
super(`unsupported Points/Lines ${detail.field} member ${detail.member}`);
|
|
454
|
+
this.name = "PointsLinesStyleUnsupportedError";
|
|
455
|
+
this.expected = `${detail.field} is one of ${detail.supported.join(", ")}`;
|
|
456
|
+
this.hint = `use a supported Points/Lines ${detail.field} member or wait for a later milestone`;
|
|
457
|
+
this.detail = detail;
|
|
458
|
+
}
|
|
459
|
+
};
|
|
460
|
+
var PointsLinesMaterialUnsupportedError = class extends Error {
|
|
461
|
+
code = "points-lines-material-unsupported";
|
|
462
|
+
expected = "one engine-owned unlit forward MaterialAsset pass";
|
|
463
|
+
hint;
|
|
464
|
+
detail;
|
|
465
|
+
constructor(detail) {
|
|
466
|
+
super(`Points/Lines material is unsupported on entity ${detail.entity}`);
|
|
467
|
+
this.name = "PointsLinesMaterialUnsupportedError";
|
|
468
|
+
this.hint = `use Materials.unlit without a shadow-caster pass for entity ${detail.entity}`;
|
|
469
|
+
this.detail = detail;
|
|
470
|
+
}
|
|
471
|
+
};
|
|
472
|
+
var PointsLinesBudgetExceededError = class extends Error {
|
|
473
|
+
code = "points-lines-budget-exceeded";
|
|
474
|
+
expected;
|
|
475
|
+
hint;
|
|
476
|
+
detail;
|
|
477
|
+
constructor(detail) {
|
|
478
|
+
super(`Points/Lines ${detail.unit} budget exceeded`);
|
|
479
|
+
this.name = "PointsLinesBudgetExceededError";
|
|
480
|
+
this.expected = `${detail.unit} <= ${detail.limit}`;
|
|
481
|
+
this.hint = `reduce Points/Lines ${detail.unit} or split the entity into bounded equivalent batches`;
|
|
482
|
+
this.detail = detail;
|
|
483
|
+
}
|
|
484
|
+
};
|
|
485
|
+
var PointsLinesPrepareFailedError = class extends Error {
|
|
486
|
+
code = "points-lines-prepare-failed";
|
|
487
|
+
expected = "the complete Points/Lines candidate validates before publication";
|
|
488
|
+
hint;
|
|
489
|
+
detail;
|
|
490
|
+
constructor(detail) {
|
|
491
|
+
super(`Points/Lines prepare failed at generation ${detail.generation}`);
|
|
492
|
+
this.name = "PointsLinesPrepareFailedError";
|
|
493
|
+
this.hint = detail.lastKnownGood ? "retain the last known good candidate, repair the producer, and retry prepare" : "repair the producer and retry prepare; the failed first candidate produces zero draw";
|
|
494
|
+
this.detail = detail;
|
|
495
|
+
}
|
|
496
|
+
};
|
|
497
|
+
var CAMERA_PROJECTION_PERSPECTIVE = 0;
|
|
498
|
+
var CAMERA_PROJECTION_ORTHOGRAPHIC = 1;
|
|
499
|
+
function cameraProjectionFromF32(value) {
|
|
500
|
+
return value === CAMERA_PROJECTION_ORTHOGRAPHIC ? "orthographic" : "perspective";
|
|
501
|
+
}
|
|
502
|
+
var TONEMAP_NONE = TONEMAP_SHADER_MODE.none;
|
|
503
|
+
var TONEMAP_REINHARD_EXTENDED = TONEMAP_SHADER_MODE.reinhardExtended;
|
|
504
|
+
var TONEMAP_REINHARD = TONEMAP_SHADER_MODE.reinhard;
|
|
505
|
+
var TONEMAP_LINEAR = TONEMAP_SHADER_MODE.linear;
|
|
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";
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
function tonemapToU32(mode) {
|
|
531
|
+
switch (mode) {
|
|
532
|
+
case "reinhard-extended":
|
|
533
|
+
return TONEMAP_REINHARD_EXTENDED;
|
|
534
|
+
case "reinhard":
|
|
535
|
+
return TONEMAP_REINHARD;
|
|
536
|
+
case "linear":
|
|
537
|
+
return TONEMAP_LINEAR;
|
|
538
|
+
case "cineon":
|
|
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;
|
|
548
|
+
}
|
|
549
|
+
throw new RangeError(`Invalid tonemap mode: ${String(mode)}.`);
|
|
550
|
+
}
|
|
551
|
+
var ANTIALIAS_NONE = 0;
|
|
552
|
+
var ANTIALIAS_FXAA = 1;
|
|
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
|
+
);
|
|
563
|
+
}
|
|
564
|
+
var BLOOM_DISABLED = 0;
|
|
565
|
+
var BLOOM_ENABLED = 1;
|
|
566
|
+
function bloomEnabledFromF32(value) {
|
|
567
|
+
if (value === BLOOM_DISABLED) return "off";
|
|
568
|
+
if (value === BLOOM_ENABLED) return "on";
|
|
569
|
+
throw new RangeError(
|
|
570
|
+
`Invalid bloom value: ${value}. Expected ${BLOOM_DISABLED} (off) or ${BLOOM_ENABLED} (on).`
|
|
571
|
+
);
|
|
572
|
+
}
|
|
573
|
+
var Camera = defineComponent("Camera", {
|
|
574
|
+
fov: { type: "f32" },
|
|
575
|
+
aspect: { type: "f32" },
|
|
576
|
+
near: { type: "f32" },
|
|
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;
|
|
622
|
+
}
|
|
623
|
+
function perspective(opts) {
|
|
624
|
+
return {
|
|
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
|
+
};
|
|
636
|
+
}
|
|
637
|
+
function orthographic(opts) {
|
|
638
|
+
return {
|
|
639
|
+
...cameraPodFromDefaults(),
|
|
640
|
+
fov: 0,
|
|
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
|
|
649
|
+
};
|
|
650
|
+
}
|
|
651
|
+
var DirectionalLight = defineComponent("DirectionalLight", {
|
|
652
|
+
// direction is the ONLY field with no default (D-5): omitting it lands the
|
|
653
|
+
// array layer-3 all-zero [0,0,0], which the renderer owner rejects -- there is no
|
|
654
|
+
// universal default direction, so "default is illegal" forces an explicit
|
|
655
|
+
// non-zero value. color carries an explicit layer-2 default [1,1,1] (white);
|
|
656
|
+
// the array layer-3 fallback is all-zero, so the default MUST be explicit.
|
|
657
|
+
direction: { type: "array<f32, 3>" },
|
|
658
|
+
color: { type: "array<f32, 3>", default: new Float32Array([1, 1, 1]) },
|
|
659
|
+
intensity: { type: "f32", default: 1 },
|
|
660
|
+
// Shadow opt-out gate: defaults to true so zero-config spawns get shadows.
|
|
661
|
+
castShadow: { type: "bool", default: true },
|
|
662
|
+
// 9 shadow fields migrated from DirectionalLightShadow (feat-20260621 M1).
|
|
663
|
+
cascadeCount: { type: "f32", default: 4 },
|
|
664
|
+
splitLambda: { type: "f32", default: 0.75 },
|
|
665
|
+
cascadeBlend: { type: "f32", default: 0.2 },
|
|
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
|
+
}
|
|
730
|
+
}
|
|
731
|
+
var Points = defineComponent(
|
|
732
|
+
"Points",
|
|
733
|
+
{
|
|
734
|
+
sizePx: { type: "f32", default: 4 },
|
|
735
|
+
shape: { type: "enum", default: PointShapeValue.square, labels: PointShapeValue }
|
|
736
|
+
},
|
|
737
|
+
{
|
|
738
|
+
meta: {
|
|
739
|
+
quickStart: "Attach Points to render point-list MeshAsset vertices in screen pixels.",
|
|
740
|
+
diagnostics: "Inspect sizePx and decode shape with pointShapeFromU32.",
|
|
741
|
+
recovery: "Use points-lines-invalid-style for non-finite or non-positive sizePx values.",
|
|
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
|
+
}
|
|
821
|
+
}
|
|
822
|
+
var Visibility = defineComponent(
|
|
823
|
+
"Visibility",
|
|
824
|
+
{
|
|
825
|
+
state: {
|
|
826
|
+
type: "enum",
|
|
827
|
+
default: VisibilityStateValue.inherited,
|
|
828
|
+
labels: VisibilityStateValue
|
|
829
|
+
}
|
|
830
|
+
},
|
|
831
|
+
{
|
|
832
|
+
meta: {
|
|
833
|
+
quickStart: "Attach Visibility to author render participation intent.",
|
|
834
|
+
diagnostics: "Compare the ECS state with resolveVisibility and renderer.visibilityStats.",
|
|
835
|
+
recovery: "Use structured ECS write errors and repair the owning scene relation.",
|
|
836
|
+
boundaries: "Visibility does not own camera, picking, lifecycle, assets, or VFX shadow policy."
|
|
837
|
+
}
|
|
838
|
+
}
|
|
839
|
+
);
|
|
840
|
+
|
|
841
|
+
// src/pipeline/standard-profile.ts
|
|
842
|
+
var STANDARD_PIPELINE_ID = "forgeax::standard";
|
|
843
|
+
var STANDARD_LIGHT_COUNTS = [1, 32, 256];
|
|
844
|
+
var DEFAULT_CLUSTER_GRID = { x: 16, y: 9, z: 24 };
|
|
845
|
+
var CLUSTER_GRID_STRIDE_U32 = 2;
|
|
846
|
+
var LIGHT_INDEX_LIST_CAPACITY = 1048576;
|
|
847
|
+
var MAX_LIGHTS = 256;
|
|
848
|
+
var DEFAULT_STANDARD_PROFILE = Object.freeze({
|
|
849
|
+
pipelineId: STANDARD_PIPELINE_ID,
|
|
850
|
+
lightCount: 32,
|
|
851
|
+
lighting: "direct",
|
|
852
|
+
shadows: "filtered",
|
|
853
|
+
pbr: true,
|
|
854
|
+
ibl: true,
|
|
855
|
+
ssao: false,
|
|
856
|
+
bloom: true,
|
|
857
|
+
tone: "aces-filmic",
|
|
858
|
+
antialias: "fxaa",
|
|
859
|
+
sky: true,
|
|
860
|
+
fallback: "native",
|
|
861
|
+
postStages: ["transparent-blend", "bloom", "tone", "fxaa", "output"]
|
|
862
|
+
});
|
|
863
|
+
function resolveStandardLane(profile, capabilities) {
|
|
864
|
+
if (!capabilities.compute || !capabilities.storageBuffer) return "cpu-webgl2";
|
|
865
|
+
return profile.lighting;
|
|
866
|
+
}
|
|
867
|
+
|
|
868
|
+
// src/render-contract.ts
|
|
869
|
+
var STANDARD_TONEMAP_FEATURE_ID = "forgeax::standard::tonemap";
|
|
870
|
+
var RENDER_GRAPH_EXECUTION_PHASE_CATALOG = [
|
|
871
|
+
"record/graph-execute/point-shadow",
|
|
872
|
+
"record/graph-execute/cluster-binner-upload",
|
|
873
|
+
"record/graph-execute/g-buffer",
|
|
874
|
+
"record/graph-execute/g-buffer/geometry-loop",
|
|
875
|
+
"record/graph-execute/g-buffer/material-bind-groups",
|
|
876
|
+
"record/graph-execute/g-buffer/pipeline-selection",
|
|
877
|
+
"record/graph-execute/g-buffer/draw-submit",
|
|
878
|
+
"record/graph-execute/ssao-calc",
|
|
879
|
+
"record/graph-execute/ssao-blur",
|
|
880
|
+
"record/graph-execute/lighting",
|
|
881
|
+
"record/graph-execute/forward",
|
|
882
|
+
"record/graph-execute/forward/geometry-loop",
|
|
883
|
+
"record/graph-execute/forward/material-bind-groups",
|
|
884
|
+
"record/graph-execute/forward/pipeline-selection",
|
|
885
|
+
"record/graph-execute/forward/draw-submit",
|
|
886
|
+
"record/graph-execute/tonemap",
|
|
887
|
+
"record/graph-execute/debug-overlay",
|
|
888
|
+
"record/graph-execute/shadow",
|
|
889
|
+
"record/graph-execute/spot-shadow",
|
|
890
|
+
"record/graph-execute/skybox",
|
|
891
|
+
"record/graph-execute/main",
|
|
892
|
+
"record/graph-execute/fxaa",
|
|
893
|
+
"record/graph-execute/bloom-bright",
|
|
894
|
+
"record/graph-execute/bloom-blur-h",
|
|
895
|
+
"record/graph-execute/bloom-blur-v",
|
|
896
|
+
"record/graph-execute/bloom-composite",
|
|
897
|
+
"record/graph-execute/other"
|
|
898
|
+
];
|
|
899
|
+
var RENDER_HDRP_BINNER_PHASE_CATALOG = [
|
|
900
|
+
"record/scene-state/hdrp-cluster/binner/light-bounds-and-occupancy",
|
|
901
|
+
"record/scene-state/hdrp-cluster/binner/light-bounds-and-occupancy/light-aabb",
|
|
902
|
+
"record/scene-state/hdrp-cluster/binner/light-bounds-and-occupancy/cluster-occupancy",
|
|
903
|
+
"record/scene-state/hdrp-cluster/binner/cluster-reserve",
|
|
904
|
+
"record/scene-state/hdrp-cluster/binner/input-preparation",
|
|
905
|
+
"record/scene-state/hdrp-cluster/binner/bin-core",
|
|
906
|
+
"record/scene-state/hdrp-cluster/binner/light-index-write",
|
|
907
|
+
"record/scene-state/hdrp-cluster/binner/light-index-write/bounds-read",
|
|
908
|
+
"record/scene-state/hdrp-cluster/binner/light-index-write/cluster-write"
|
|
909
|
+
];
|
|
910
|
+
var RENDER_HDRP_CLUSTER_PHASE_CATALOG = [
|
|
911
|
+
"record/scene-state/hdrp-cluster/binner",
|
|
912
|
+
...RENDER_HDRP_BINNER_PHASE_CATALOG,
|
|
913
|
+
"record/scene-state/hdrp-cluster/payload-packing",
|
|
914
|
+
"record/scene-state/hdrp-cluster/buffer-upload"
|
|
915
|
+
];
|
|
916
|
+
var RENDER_SCENE_STATE_PHASE_CATALOG = [
|
|
917
|
+
"record/scene-state/fold-buckets",
|
|
918
|
+
"record/scene-state/lighting-prep",
|
|
919
|
+
"record/scene-state/ambient-resolution",
|
|
920
|
+
"record/scene-state/directional-shadow-cache",
|
|
921
|
+
"record/scene-state/hdrp-cluster",
|
|
922
|
+
...RENDER_HDRP_CLUSTER_PHASE_CATALOG
|
|
923
|
+
];
|
|
924
|
+
var RENDER_RECORD_PHASE_CATALOG = [
|
|
925
|
+
"record/scene-state",
|
|
926
|
+
...RENDER_SCENE_STATE_PHASE_CATALOG,
|
|
927
|
+
"record/swapchain",
|
|
928
|
+
"record/render-graph",
|
|
929
|
+
"record/target-views",
|
|
930
|
+
"record/validation",
|
|
931
|
+
"record/dispatch-plan",
|
|
932
|
+
"record/uploads",
|
|
933
|
+
"record/bind-groups",
|
|
934
|
+
"record/graph-execute",
|
|
935
|
+
...RENDER_GRAPH_EXECUTION_PHASE_CATALOG
|
|
936
|
+
];
|
|
937
|
+
var RENDER_PHASE_CATALOG = [
|
|
938
|
+
"extract",
|
|
939
|
+
"bind-groups",
|
|
940
|
+
"features",
|
|
941
|
+
"sort",
|
|
942
|
+
"record",
|
|
943
|
+
...RENDER_RECORD_PHASE_CATALOG
|
|
944
|
+
];
|
|
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
|
+
|
|
1150
|
+
export { ANTIALIAS_FXAA, ANTIALIAS_MSAA, ANTIALIAS_NONE, BLOOM_DISABLED, BLOOM_ENABLED, CAMERA_PROJECTION_ORTHOGRAPHIC, CAMERA_PROJECTION_PERSPECTIVE, CLUSTER_GRID_STRIDE_U32, Camera, DEFAULT_CLUSTER_GRID, DEFAULT_STANDARD_PROFILE, DirectionalLight, EquirectProjectionFailedError, FrameReceiptStaleError, HdrpDeferredCapsInsufficientError, HdrpIndexListOverflowError, HdrpLightBudgetExceededError, Instances, LIGHT_INDEX_LIST_CAPACITY, Layer, LifecycleConstructionError, Lines, MAX_LIGHTS, MaterialSkinAttrMissingError, MeshFilter, MeshRenderer, ObservationUnavailableError, PointLight, PointLightShadow, PointShadowAtlasBoundsViolationError, PointShadowAtlasUninitializedError, PointShapeValue, Points, PointsLinesMaterialUnsupportedError, PointsLinesPrepareFailedError, PostProcessParams, RENDER_PHASE_CATALOG, RenderFeatureCapabilityMissingError, RenderFeatureDrawRecordingFailedError, RenderFeaturePreparationFailedError, RenderFeaturePreparedStateMismatchError, RenderFeatureRegistrationConflictError, RenderFeatureStageFailedError, RendererContractFailureError, RendererOperationError, SKYBOX_MODE_CUBEMAP, STANDARD_LIGHT_COUNTS, STANDARD_PIPELINE_ID, STANDARD_TONEMAP_FEATURE_ID, SceneInstance, ShadowInvalidConfigError, SkinMaterialMismatchError, SkinPaletteOverflowError, SkyboxBackground, Skylight, SortKey, SpotLight, TONEMAP_ACES_FILMIC, TONEMAP_AGX, TONEMAP_CINEON, TONEMAP_LINEAR, TONEMAP_NEUTRAL, TONEMAP_NONE, TONEMAP_REINHARD, TONEMAP_REINHARD_EXTENDED, VertexColorVariantConflictError, VideoUploadUnsupportedError, Visibility, VisibilityStateValue, admitPointsLines, antialiasFromF32, bloomEnabledFromF32, cameraProjectionFromF32, orthographic, perspective, pointShapeFromU32, resolveStandardLane, resolveVisibility, tonemapFromF32, tonemapToU32, visibilityStateFromU32 };
|
|
1151
|
+
//# sourceMappingURL=chunk-YEJIUW7D.mjs.map
|
|
1152
|
+
//# sourceMappingURL=chunk-YEJIUW7D.mjs.map
|