@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,177 @@
|
|
|
1
|
+
import type { MeshAsset } from '@forgeax/engine-types';
|
|
2
|
+
import { err, ok, type Result } from '@forgeax/engine-types';
|
|
3
|
+
import { PointsLinesPrepareFailedError } from '../errors/render';
|
|
4
|
+
import type { PointsLinesExpandedGeometry, PointsLinesExpansionCache } from './expansion-cache';
|
|
5
|
+
import {
|
|
6
|
+
createPointsLinesLaneContract,
|
|
7
|
+
type PointsLinesBackend,
|
|
8
|
+
type PointsLinesLane,
|
|
9
|
+
type PointsLinesLaneContract,
|
|
10
|
+
} from './record';
|
|
11
|
+
import type { PointsLinesRetainedSnapshot } from './snapshot';
|
|
12
|
+
|
|
13
|
+
export interface PointsLinesGpuResourceAdapter<Resource> {
|
|
14
|
+
create(geometry: PointsLinesExpandedGeometry): Result<Resource, Error>;
|
|
15
|
+
upload(resource: Resource, geometry: PointsLinesExpandedGeometry): Result<number, Error>;
|
|
16
|
+
validate(resource: Resource, geometry: PointsLinesExpandedGeometry): Result<void, Error>;
|
|
17
|
+
destroy(resource: Resource): void;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface PointsLinesPreparedResource<Resource> {
|
|
21
|
+
readonly resource: Resource;
|
|
22
|
+
readonly geometry: PointsLinesExpandedGeometry;
|
|
23
|
+
readonly snapshot: PointsLinesRetainedSnapshot;
|
|
24
|
+
readonly uploadedBytes: number;
|
|
25
|
+
readonly lastKnownGood: true;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export interface PointsLinesPreparationOptions<Resource> {
|
|
29
|
+
readonly cache: PointsLinesExpansionCache;
|
|
30
|
+
readonly adapter: PointsLinesGpuResourceAdapter<Resource>;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export interface PointsLinesLanePreparationAdapter<Resource> {
|
|
34
|
+
readonly contract: PointsLinesLaneContract;
|
|
35
|
+
prepare(
|
|
36
|
+
snapshot: PointsLinesRetainedSnapshot,
|
|
37
|
+
mesh: MeshAsset,
|
|
38
|
+
): Result<PointsLinesPreparedResource<Resource>, PointsLinesPrepareFailedError>;
|
|
39
|
+
resetForDeviceLoss(): void;
|
|
40
|
+
lastKnownGood(): PointsLinesPreparedResource<Resource> | undefined;
|
|
41
|
+
inspect(): PointsLinesPreparationInspection<Resource>;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export interface PointsLinesPreparationInspection<Resource> {
|
|
45
|
+
readonly status: 'empty' | 'resident' | 'rebuild-pending';
|
|
46
|
+
readonly lastKnownGood: boolean;
|
|
47
|
+
readonly liveResource: Resource | undefined;
|
|
48
|
+
readonly liveBytes: number;
|
|
49
|
+
readonly candidateBytes: number;
|
|
50
|
+
readonly cacheEntries: number;
|
|
51
|
+
readonly uploads: number;
|
|
52
|
+
readonly rebuilds: number;
|
|
53
|
+
readonly failures: number;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Owns one atomic candidate/LKG pair for a Points/Lines render projection.
|
|
58
|
+
* GPU resources are supplied by the existing DeviceScope adapter; this class
|
|
59
|
+
* keeps no backend handle or second resource ledger.
|
|
60
|
+
*/
|
|
61
|
+
export class PointsLinesPreparation<Resource> {
|
|
62
|
+
private live: PointsLinesPreparedResource<Resource> | undefined;
|
|
63
|
+
private pendingCandidateBytes = 0;
|
|
64
|
+
private status: 'empty' | 'resident' | 'rebuild-pending' = 'empty';
|
|
65
|
+
private uploads = 0;
|
|
66
|
+
private rebuilds = 0;
|
|
67
|
+
private failures = 0;
|
|
68
|
+
|
|
69
|
+
constructor(private readonly options: PointsLinesPreparationOptions<Resource>) {}
|
|
70
|
+
|
|
71
|
+
prepare(
|
|
72
|
+
snapshot: PointsLinesRetainedSnapshot,
|
|
73
|
+
mesh: MeshAsset,
|
|
74
|
+
): Result<PointsLinesPreparedResource<Resource>, PointsLinesPrepareFailedError> {
|
|
75
|
+
const geometry = this.options.cache.getOrCreate(snapshot, mesh);
|
|
76
|
+
if (this.live?.geometry.key === geometry.key) {
|
|
77
|
+
this.live = {
|
|
78
|
+
...this.live,
|
|
79
|
+
snapshot,
|
|
80
|
+
uploadedBytes: 0,
|
|
81
|
+
};
|
|
82
|
+
this.status = 'resident';
|
|
83
|
+
return ok(this.live);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
this.pendingCandidateBytes = geometry.derivedBytes;
|
|
87
|
+
const created = this.options.adapter.create(geometry);
|
|
88
|
+
if (!created.ok) return this.fail(snapshot, created.error);
|
|
89
|
+
const candidate = created.value;
|
|
90
|
+
const uploaded = this.options.adapter.upload(candidate, geometry);
|
|
91
|
+
if (!uploaded.ok) {
|
|
92
|
+
this.options.adapter.destroy(candidate);
|
|
93
|
+
return this.fail(snapshot, uploaded.error);
|
|
94
|
+
}
|
|
95
|
+
this.uploads += 1;
|
|
96
|
+
const validated = this.options.adapter.validate(candidate, geometry);
|
|
97
|
+
if (!validated.ok) {
|
|
98
|
+
this.options.adapter.destroy(candidate);
|
|
99
|
+
return this.fail(snapshot, validated.error);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
const previous = this.live;
|
|
103
|
+
this.live = {
|
|
104
|
+
resource: candidate,
|
|
105
|
+
geometry,
|
|
106
|
+
snapshot,
|
|
107
|
+
uploadedBytes: uploaded.value,
|
|
108
|
+
lastKnownGood: true,
|
|
109
|
+
};
|
|
110
|
+
this.pendingCandidateBytes = 0;
|
|
111
|
+
this.status = 'resident';
|
|
112
|
+
this.rebuilds += 1;
|
|
113
|
+
if (previous !== undefined) this.options.adapter.destroy(previous.resource);
|
|
114
|
+
return ok(this.live);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
resetForDeviceLoss(): void {
|
|
118
|
+
if (this.live !== undefined) this.options.adapter.destroy(this.live.resource);
|
|
119
|
+
this.live = undefined;
|
|
120
|
+
this.pendingCandidateBytes = 0;
|
|
121
|
+
this.status = 'rebuild-pending';
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
lastKnownGood(): PointsLinesPreparedResource<Resource> | undefined {
|
|
125
|
+
return this.live;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
inspect(): PointsLinesPreparationInspection<Resource> {
|
|
129
|
+
return {
|
|
130
|
+
status: this.status,
|
|
131
|
+
lastKnownGood: this.live?.lastKnownGood ?? false,
|
|
132
|
+
liveResource: this.live?.resource,
|
|
133
|
+
liveBytes: this.live?.geometry.derivedBytes ?? 0,
|
|
134
|
+
candidateBytes: this.pendingCandidateBytes,
|
|
135
|
+
cacheEntries: this.options.cache.size,
|
|
136
|
+
uploads: this.uploads,
|
|
137
|
+
rebuilds: this.rebuilds,
|
|
138
|
+
failures: this.failures,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
private fail(
|
|
143
|
+
snapshot: PointsLinesRetainedSnapshot,
|
|
144
|
+
cause: Error,
|
|
145
|
+
): Result<never, PointsLinesPrepareFailedError> {
|
|
146
|
+
this.pendingCandidateBytes = 0;
|
|
147
|
+
this.failures += 1;
|
|
148
|
+
return err(
|
|
149
|
+
new PointsLinesPrepareFailedError({
|
|
150
|
+
owner: 'points-lines',
|
|
151
|
+
generation: snapshot.meshGeneration,
|
|
152
|
+
stage: 'prepare',
|
|
153
|
+
cause: cause.message,
|
|
154
|
+
lastKnownGood: this.live !== undefined,
|
|
155
|
+
}),
|
|
156
|
+
);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Binds the existing atomic preparation owner to a lane contract. It carries
|
|
162
|
+
* no RHI handle and does not add a second cache or recovery owner.
|
|
163
|
+
*/
|
|
164
|
+
export function createPointsLinesLanePreparationAdapter<Resource>(
|
|
165
|
+
lane: PointsLinesLane,
|
|
166
|
+
backend: PointsLinesBackend,
|
|
167
|
+
options: PointsLinesPreparationOptions<Resource>,
|
|
168
|
+
): PointsLinesLanePreparationAdapter<Resource> {
|
|
169
|
+
const preparation = new PointsLinesPreparation(options);
|
|
170
|
+
return {
|
|
171
|
+
contract: createPointsLinesLaneContract(lane, backend),
|
|
172
|
+
prepare: (snapshot, mesh) => preparation.prepare(snapshot, mesh),
|
|
173
|
+
resetForDeviceLoss: () => preparation.resetForDeviceLoss(),
|
|
174
|
+
lastKnownGood: () => preparation.lastKnownGood(),
|
|
175
|
+
inspect: () => preparation.inspect(),
|
|
176
|
+
};
|
|
177
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import type { PointsLinesExpandedGeometry } from './expansion-cache';
|
|
2
|
+
import type { PointsLinesRetainedSnapshot } from './snapshot';
|
|
3
|
+
|
|
4
|
+
export const POINTS_LINES_MATERIAL_SHADER_ID = 'forgeax::points-lines';
|
|
5
|
+
|
|
6
|
+
export type PointsLinesLane = 'direct' | 'clustered' | 'cpu-webgl2';
|
|
7
|
+
export type PointsLinesBackend = 'webgpu' | 'wgpu-webgl2' | 'null';
|
|
8
|
+
|
|
9
|
+
export interface PointsLinesLaneContract {
|
|
10
|
+
readonly lane: PointsLinesLane;
|
|
11
|
+
readonly backend: PointsLinesBackend;
|
|
12
|
+
readonly authoring: 'shared';
|
|
13
|
+
readonly evidence: 'runtime' | 'structural-only';
|
|
14
|
+
readonly material: {
|
|
15
|
+
readonly source: 'MaterialAsset';
|
|
16
|
+
readonly shaderId: typeof POINTS_LINES_MATERIAL_SHADER_ID;
|
|
17
|
+
readonly shadingModel: 'unlit';
|
|
18
|
+
readonly clusteredLighting: false;
|
|
19
|
+
readonly lit: false;
|
|
20
|
+
};
|
|
21
|
+
readonly graph: {
|
|
22
|
+
readonly additionalAttachments: 0;
|
|
23
|
+
readonly additionalPasses: 0;
|
|
24
|
+
};
|
|
25
|
+
readonly shadowDrawCount: 0;
|
|
26
|
+
readonly capabilities: {
|
|
27
|
+
readonly compute: false;
|
|
28
|
+
readonly storage: false;
|
|
29
|
+
readonly indirect: false;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export interface PointsLinesRecordPlan {
|
|
34
|
+
readonly lane: PointsLinesLane;
|
|
35
|
+
readonly backend: PointsLinesBackend;
|
|
36
|
+
readonly materialShaderId: typeof POINTS_LINES_MATERIAL_SHADER_ID;
|
|
37
|
+
readonly component: 'Points' | 'Lines';
|
|
38
|
+
readonly meshGeneration: number;
|
|
39
|
+
readonly materialGeneration: number;
|
|
40
|
+
readonly vertexCount: number;
|
|
41
|
+
readonly indexCount: number;
|
|
42
|
+
readonly drawCount: 0 | 1;
|
|
43
|
+
readonly shadowDrawCount: 0;
|
|
44
|
+
readonly conservativeMarginPx: number;
|
|
45
|
+
readonly graph: PointsLinesLaneContract['graph'];
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Describes the shared lane boundary without selecting a backend in authoring.
|
|
50
|
+
* Every lane uses CPU-uploaded triangle expansion; capability flags therefore
|
|
51
|
+
* stay false, including on WebGPU, and the graph remains the existing pass.
|
|
52
|
+
*/
|
|
53
|
+
export function createPointsLinesLaneContract(
|
|
54
|
+
lane: PointsLinesLane,
|
|
55
|
+
backend: PointsLinesBackend,
|
|
56
|
+
): PointsLinesLaneContract {
|
|
57
|
+
return {
|
|
58
|
+
lane,
|
|
59
|
+
backend,
|
|
60
|
+
authoring: 'shared',
|
|
61
|
+
evidence: backend === 'null' ? 'structural-only' : 'runtime',
|
|
62
|
+
material: {
|
|
63
|
+
source: 'MaterialAsset',
|
|
64
|
+
shaderId: POINTS_LINES_MATERIAL_SHADER_ID,
|
|
65
|
+
shadingModel: 'unlit',
|
|
66
|
+
clusteredLighting: false,
|
|
67
|
+
lit: false,
|
|
68
|
+
},
|
|
69
|
+
graph: { additionalAttachments: 0, additionalPasses: 0 },
|
|
70
|
+
shadowDrawCount: 0,
|
|
71
|
+
capabilities: { compute: false, storage: false, indirect: false },
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Turns one retained expansion into the bounded draw facts consumed by the
|
|
77
|
+
* existing record pass. The shader expands one quad per point or segment,
|
|
78
|
+
* so the limits are exactly four vertices and six indices per primitive.
|
|
79
|
+
*/
|
|
80
|
+
export function createPointsLinesRecordPlan(
|
|
81
|
+
snapshot: PointsLinesRetainedSnapshot,
|
|
82
|
+
geometry: PointsLinesExpandedGeometry,
|
|
83
|
+
contract: PointsLinesLaneContract,
|
|
84
|
+
): PointsLinesRecordPlan {
|
|
85
|
+
const primitiveCount = geometry.pointCount + geometry.segmentCount;
|
|
86
|
+
const visible = snapshot.visible && primitiveCount > 0;
|
|
87
|
+
const conservativeMarginPx =
|
|
88
|
+
snapshot.style?.kind === 'points'
|
|
89
|
+
? snapshot.style.sizePx * 0.5
|
|
90
|
+
: (snapshot.style?.widthPx ?? 0) * 0.5;
|
|
91
|
+
return {
|
|
92
|
+
lane: contract.lane,
|
|
93
|
+
backend: contract.backend,
|
|
94
|
+
materialShaderId: POINTS_LINES_MATERIAL_SHADER_ID,
|
|
95
|
+
component: geometry.component,
|
|
96
|
+
meshGeneration: snapshot.meshGeneration,
|
|
97
|
+
materialGeneration: snapshot.materialGeneration,
|
|
98
|
+
vertexCount: primitiveCount * 4,
|
|
99
|
+
indexCount: primitiveCount * 6,
|
|
100
|
+
drawCount: visible ? 1 : 0,
|
|
101
|
+
shadowDrawCount: 0,
|
|
102
|
+
conservativeMarginPx,
|
|
103
|
+
graph: contract.graph,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export interface PointsLinesLaneAdapter {
|
|
108
|
+
readonly contract: PointsLinesLaneContract;
|
|
109
|
+
createRecordPlan(
|
|
110
|
+
snapshot: PointsLinesRetainedSnapshot,
|
|
111
|
+
geometry: PointsLinesExpandedGeometry,
|
|
112
|
+
): PointsLinesRecordPlan;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export function createPointsLinesLaneAdapter(
|
|
116
|
+
lane: PointsLinesLane,
|
|
117
|
+
backend: PointsLinesBackend,
|
|
118
|
+
): PointsLinesLaneAdapter {
|
|
119
|
+
const contract = createPointsLinesLaneContract(lane, backend);
|
|
120
|
+
return {
|
|
121
|
+
contract,
|
|
122
|
+
createRecordPlan: (snapshot, geometry) =>
|
|
123
|
+
createPointsLinesRecordPlan(snapshot, geometry, contract),
|
|
124
|
+
};
|
|
125
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import type { PointShape } from '../components/points';
|
|
2
|
+
|
|
3
|
+
export interface PointsLinesViewport {
|
|
4
|
+
readonly width: number;
|
|
5
|
+
readonly height: number;
|
|
6
|
+
readonly dpr: number;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export type PointsLinesStyle =
|
|
10
|
+
| { readonly kind: 'points'; readonly sizePx: number; readonly shape: PointShape }
|
|
11
|
+
| { readonly kind: 'lines'; readonly widthPx: number };
|
|
12
|
+
|
|
13
|
+
export type PointsLinesInvalidation = 'none' | 'mesh' | 'material' | 'style' | 'view' | 'scene';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Detached facts retained between frames for the Points/Lines owner.
|
|
17
|
+
*
|
|
18
|
+
* The snapshot deliberately contains no World, ECS row, AssetRegistry, GPU
|
|
19
|
+
* handle, or derived triangle data. Mesh and material generations are the
|
|
20
|
+
* producer-owned fences used by prepare; viewport and projection are the
|
|
21
|
+
* only camera-owned facts in this projection.
|
|
22
|
+
*/
|
|
23
|
+
export interface PointsLinesRetainedSnapshot {
|
|
24
|
+
readonly worldId: number;
|
|
25
|
+
readonly entityKey: number;
|
|
26
|
+
readonly component: 'Points' | 'Lines' | undefined;
|
|
27
|
+
readonly meshHandle: number;
|
|
28
|
+
readonly meshGeneration: number;
|
|
29
|
+
readonly materialHandle: number;
|
|
30
|
+
readonly materialGeneration: number;
|
|
31
|
+
readonly style: PointsLinesStyle | undefined;
|
|
32
|
+
readonly layer: number;
|
|
33
|
+
readonly sortKey: number | undefined;
|
|
34
|
+
readonly visible: boolean;
|
|
35
|
+
readonly sourceBounds: Float32Array;
|
|
36
|
+
readonly viewport: PointsLinesViewport;
|
|
37
|
+
readonly projection: Float32Array;
|
|
38
|
+
readonly dedicatedResourceBytes?: number;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export interface PointsLinesSnapshotInput
|
|
42
|
+
extends Omit<
|
|
43
|
+
PointsLinesRetainedSnapshot,
|
|
44
|
+
'sourceBounds' | 'viewport' | 'projection' | 'sortKey'
|
|
45
|
+
> {
|
|
46
|
+
readonly sortKey?: number | undefined;
|
|
47
|
+
readonly sourceBounds: ArrayLike<number>;
|
|
48
|
+
readonly viewport: PointsLinesViewport;
|
|
49
|
+
readonly projection: ArrayLike<number>;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export function createPointsLinesSnapshot(
|
|
53
|
+
input: PointsLinesSnapshotInput,
|
|
54
|
+
): PointsLinesRetainedSnapshot {
|
|
55
|
+
return {
|
|
56
|
+
worldId: input.worldId,
|
|
57
|
+
entityKey: input.entityKey,
|
|
58
|
+
component: input.component,
|
|
59
|
+
meshHandle: input.meshHandle,
|
|
60
|
+
meshGeneration: input.meshGeneration,
|
|
61
|
+
materialHandle: input.materialHandle,
|
|
62
|
+
materialGeneration: input.materialGeneration,
|
|
63
|
+
style: input.style === undefined ? undefined : { ...input.style },
|
|
64
|
+
layer: input.layer,
|
|
65
|
+
sortKey: input.sortKey,
|
|
66
|
+
visible: input.visible,
|
|
67
|
+
sourceBounds: new Float32Array(input.sourceBounds),
|
|
68
|
+
viewport: { ...input.viewport },
|
|
69
|
+
projection: new Float32Array(input.projection),
|
|
70
|
+
...(input.component === undefined ? { dedicatedResourceBytes: 0 } : {}),
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export function comparePointsLinesSnapshots(
|
|
75
|
+
previous: PointsLinesRetainedSnapshot,
|
|
76
|
+
next: PointsLinesRetainedSnapshot,
|
|
77
|
+
): PointsLinesInvalidation {
|
|
78
|
+
if (
|
|
79
|
+
previous.meshHandle !== next.meshHandle ||
|
|
80
|
+
previous.meshGeneration !== next.meshGeneration ||
|
|
81
|
+
!sameArray(previous.sourceBounds, next.sourceBounds)
|
|
82
|
+
) {
|
|
83
|
+
return 'mesh';
|
|
84
|
+
}
|
|
85
|
+
if (
|
|
86
|
+
previous.materialHandle !== next.materialHandle ||
|
|
87
|
+
previous.materialGeneration !== next.materialGeneration
|
|
88
|
+
) {
|
|
89
|
+
return 'material';
|
|
90
|
+
}
|
|
91
|
+
if (!sameValue(previous.style, next.style)) return 'style';
|
|
92
|
+
if (
|
|
93
|
+
previous.viewport.width !== next.viewport.width ||
|
|
94
|
+
previous.viewport.height !== next.viewport.height ||
|
|
95
|
+
previous.viewport.dpr !== next.viewport.dpr ||
|
|
96
|
+
!sameArray(previous.projection, next.projection)
|
|
97
|
+
) {
|
|
98
|
+
return 'view';
|
|
99
|
+
}
|
|
100
|
+
if (
|
|
101
|
+
previous.worldId !== next.worldId ||
|
|
102
|
+
previous.entityKey !== next.entityKey ||
|
|
103
|
+
previous.layer !== next.layer ||
|
|
104
|
+
previous.sortKey !== next.sortKey ||
|
|
105
|
+
previous.visible !== next.visible
|
|
106
|
+
) {
|
|
107
|
+
return 'scene';
|
|
108
|
+
}
|
|
109
|
+
return 'none';
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
function sameArray(left: ArrayLike<number>, right: ArrayLike<number>): boolean {
|
|
113
|
+
if (left.length !== right.length) return false;
|
|
114
|
+
for (let index = 0; index < left.length; index += 1) {
|
|
115
|
+
if (left[index] !== right[index]) return false;
|
|
116
|
+
}
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
function sameValue(
|
|
121
|
+
left: PointsLinesStyle | undefined,
|
|
122
|
+
right: PointsLinesStyle | undefined,
|
|
123
|
+
): boolean {
|
|
124
|
+
if (left?.kind !== right?.kind) return false;
|
|
125
|
+
if (left === undefined || right === undefined) return left === right;
|
|
126
|
+
if (left.kind === 'points' && right.kind === 'points') {
|
|
127
|
+
return left.sizePx === right.sizePx && left.shape === right.shape;
|
|
128
|
+
}
|
|
129
|
+
return left.kind === 'lines' && right.kind === 'lines' && left.widthPx === right.widthPx;
|
|
130
|
+
}
|
|
@@ -4,28 +4,27 @@
|
|
|
4
4
|
// added 'fullscreen-input-not-found').
|
|
5
5
|
//
|
|
6
6
|
// Closed 7-member PostProcessErrorCode union + PostProcessError discriminated-union class.
|
|
7
|
-
// - 'post-process-already-registered' (programmer error) ->
|
|
8
|
-
// PostProcessError, mirroring
|
|
7
|
+
// - 'post-process-already-registered' (programmer error) -> fullscreen effect registration THROWS a
|
|
8
|
+
// PostProcessError, mirroring ShaderCatalog.installMaterialArtifact's Map.has -> throw
|
|
9
9
|
// fail-fast (research Finding M2-4). A second register under the same id is a coding
|
|
10
10
|
// mistake that must surface immediately.
|
|
11
|
-
// - 'post-process-not-found' (runtime path) ->
|
|
11
|
+
// - 'post-process-not-found' (runtime path) -> the typed fullscreen plan returns Result.err with
|
|
12
12
|
// this code when the supplied id resolves to no registered post-process (stale / wrong
|
|
13
13
|
// id). AI users branch on `err.code === 'post-process-not-found'` by property access.
|
|
14
14
|
// - 'fullscreen-input-not-found' (runtime path, feat-20260609 M1 / D-2) -> the
|
|
15
15
|
// dispatchFullscreenPass generic branch THROWS this when reads[0] references a
|
|
16
16
|
// graph resource key that the per-pass resolve context cannot resolve (typo /
|
|
17
|
-
// unregistered colorTarget / mis-ordered
|
|
17
|
+
// an unregistered colorTarget / mis-ordered color-target declaration vs the typed fullscreen pass).
|
|
18
18
|
// - 'ssao-radius-non-positive' (runtime path, feat-20260612-hdrp-ssao M2 / w10) ->
|
|
19
19
|
// SSAO radius parameter <= 0; fires when config.ssao.radius value is non-positive.
|
|
20
20
|
// - 'ssao-bias-negative' (runtime path, feat-20260612-hdrp-ssao M2 / w10) ->
|
|
21
21
|
// SSAO bias parameter < 0; fires when config.ssao.bias value is negative.
|
|
22
22
|
//
|
|
23
23
|
// D-1: a NEW independent union rather than folding into RuntimeErrorCode /
|
|
24
|
-
//
|
|
25
|
-
//
|
|
26
|
-
// additively evolvable (mirrors pipeline-errors.ts D-1 reasoning verbatim).
|
|
24
|
+
// RuntimeErrorCode's members are render / skin / shadow domain; a separate union
|
|
25
|
+
// keeps the post-process error surface cohesive and additively evolvable.
|
|
27
26
|
//
|
|
28
|
-
// Also per D-4: the
|
|
27
|
+
// Also per D-4: the fullscreen effect channel is parallel to installMaterialArtifact;
|
|
29
28
|
// material shader errors carry 4-BGL / 12-float-vertex / depth / triangle-list semantics,
|
|
30
29
|
// while post-process errors carry 0-vertex-buffer / no-depth / input-texture-BGL semantics.
|
|
31
30
|
// Mixing the two error spaces would confuse AI users who branch on code for diagnostics.
|
|
@@ -44,12 +43,12 @@
|
|
|
44
43
|
*
|
|
45
44
|
* | code | channel | trigger |
|
|
46
45
|
* |:--|:--|:--|
|
|
47
|
-
* | `'post-process-already-registered'` | throw | a second
|
|
48
|
-
* | `'post-process-not-found'` | throw / `Result.err` |
|
|
49
|
-
* | `'fullscreen-input-not-found'` | throw |
|
|
46
|
+
* | `'post-process-already-registered'` | throw | a second fullscreen effect registration under an already-registered `id` |
|
|
47
|
+
* | `'post-process-not-found'` | throw / `Result.err` | a typed fullscreen plan whose `shader` id resolves to no registered post-process |
|
|
48
|
+
* | `'fullscreen-input-not-found'` | throw | a typed fullscreen plan whose `reads` key is not a graph-declared color target, or a depth key missing TEXTURE_BINDING (D-4) |
|
|
50
49
|
* | `'ssao-radius-non-positive'` | throw | SSAO `radius <= 0` |
|
|
51
50
|
* | `'ssao-bias-negative'` | throw | SSAO `bias < 0` |
|
|
52
|
-
* | `'params-size-mismatch'` | throw |
|
|
51
|
+
* | `'params-size-mismatch'` | throw | a fullscreen effect declaration with `params.byteSize < 16` or `defaultValue.length !== byteSize` (feat-20260621 M-A4 / D-4) |
|
|
53
52
|
* | `'params-update-size-mismatch'` | throw | per-frame data-driven write where `PostProcessParams.data` byteLength !== registered `params.byteSize` (feat-20260621 M-A4 / D-4) |
|
|
54
53
|
*/
|
|
55
54
|
export type PostProcessErrorCode = keyof typeof POST_PROCESS_POLICY;
|
|
@@ -80,7 +79,7 @@ export interface PostProcessNotFoundDetail {
|
|
|
80
79
|
export interface FullscreenInputNotFoundDetail {
|
|
81
80
|
/** The reads[0] key that resolved to undefined (e.g. 'offscreenColor' / 'hdrColor'). */
|
|
82
81
|
readonly readsKey: string;
|
|
83
|
-
/** The
|
|
82
|
+
/** The name assigned to the typed fullscreen pass (e.g. 'pp' / 'post'). */
|
|
84
83
|
readonly passName: string;
|
|
85
84
|
}
|
|
86
85
|
|
|
@@ -168,11 +167,11 @@ const POST_PROCESS_POLICY = {
|
|
|
168
167
|
'(engine builtins use the forgeax:: prefix; user passes use <package>::<id>).',
|
|
169
168
|
},
|
|
170
169
|
'post-process-not-found': {
|
|
171
|
-
expected: '
|
|
170
|
+
expected: 'typed fullscreen plan references a registered post-process id',
|
|
172
171
|
hint: (detail) =>
|
|
173
172
|
`no post-process is registered for id '${(detail as PostProcessNotFoundDetail).id}'. ` +
|
|
174
|
-
`
|
|
175
|
-
'then reference it
|
|
173
|
+
`Register '${(detail as PostProcessNotFoundDetail).id}' with the feature host ({source, reads?}), ` +
|
|
174
|
+
'then reference it from a typed fullscreen RenderFeaturePlan.',
|
|
176
175
|
},
|
|
177
176
|
'fullscreen-input-not-found': {
|
|
178
177
|
expected: 'reads key must be a graph-declared colorTarget with TEXTURE_BINDING',
|
|
@@ -181,8 +180,8 @@ const POST_PROCESS_POLICY = {
|
|
|
181
180
|
return (
|
|
182
181
|
`fullscreen pass '${d.passName}' references reads key '${d.readsKey}' but that key is not ` +
|
|
183
182
|
`declared as a graph color target, or the target is not sampleable as a texture. ` +
|
|
184
|
-
`First
|
|
185
|
-
`(or check spelling) before
|
|
183
|
+
`First declare graph color target '${d.readsKey}' with its format and size ` +
|
|
184
|
+
`(or check spelling) before the typed fullscreen pass '${d.passName}' reads it. ` +
|
|
186
185
|
`If '${d.readsKey}' is a depth target, ensure it has TEXTURE_BINDING usage (0x04) ` +
|
|
187
186
|
`and is declared via graph.addColorTarget. Consider switching pipeline if your pipeline does not expose a sampleable depth target.`
|
|
188
187
|
);
|
|
@@ -238,13 +237,13 @@ const POST_PROCESS_POLICY = {
|
|
|
238
237
|
}
|
|
239
238
|
>;
|
|
240
239
|
|
|
241
|
-
class PostProcessErrorClass extends Error {
|
|
242
|
-
readonly code:
|
|
240
|
+
class PostProcessErrorClass<C extends PostProcessErrorCode> extends Error {
|
|
241
|
+
readonly code: C;
|
|
243
242
|
readonly expected: string;
|
|
244
243
|
readonly hint: string;
|
|
245
|
-
readonly detail:
|
|
244
|
+
readonly detail: PostProcessErrorDetailFor<C>;
|
|
246
245
|
|
|
247
|
-
constructor(args: { code:
|
|
246
|
+
constructor(args: { code: C; detail: PostProcessErrorDetailFor<C> }) {
|
|
248
247
|
const policy = POST_PROCESS_POLICY[args.code];
|
|
249
248
|
const hint = policy.hint(args.detail);
|
|
250
249
|
super(`post-process: ${args.code} (${hint})`);
|
|
@@ -261,11 +260,19 @@ class PostProcessErrorClass extends Error {
|
|
|
261
260
|
* `C` and whose `detail` narrows to `PostProcessErrorDetailFor<C>`, so `if (err.code === 'X')`
|
|
262
261
|
* simultaneously narrows `err.detail` (charter P3 + P4 discriminated union).
|
|
263
262
|
*/
|
|
264
|
-
type PostProcessErrorVariant<C extends PostProcessErrorCode> = PostProcessErrorClass & {
|
|
263
|
+
type PostProcessErrorVariant<C extends PostProcessErrorCode> = PostProcessErrorClass<C> & {
|
|
265
264
|
readonly code: C;
|
|
266
265
|
readonly detail: PostProcessErrorDetailFor<C>;
|
|
267
266
|
};
|
|
268
267
|
|
|
268
|
+
interface PostProcessErrorConstructor {
|
|
269
|
+
new <C extends PostProcessErrorCode>(args: {
|
|
270
|
+
code: C;
|
|
271
|
+
detail: PostProcessErrorDetailFor<C>;
|
|
272
|
+
}): PostProcessErrorVariant<C>;
|
|
273
|
+
readonly prototype: PostProcessErrorClass<PostProcessErrorCode>;
|
|
274
|
+
}
|
|
275
|
+
|
|
269
276
|
/**
|
|
270
277
|
* Public PostProcessError type - mapped from the authoritative code union.
|
|
271
278
|
*
|
|
@@ -283,14 +290,6 @@ export type PostProcessError = {
|
|
|
283
290
|
[C in PostProcessErrorCode]: PostProcessErrorVariant<C>;
|
|
284
291
|
}[PostProcessErrorCode];
|
|
285
292
|
|
|
286
|
-
interface PostProcessErrorConstructor {
|
|
287
|
-
new <C extends PostProcessErrorCode>(args: {
|
|
288
|
-
code: C;
|
|
289
|
-
detail: PostProcessErrorDetailFor<C>;
|
|
290
|
-
}): PostProcessErrorVariant<C>;
|
|
291
|
-
readonly prototype: PostProcessErrorClass;
|
|
292
|
-
}
|
|
293
|
-
|
|
294
293
|
/**
|
|
295
294
|
* PostProcessError constructor - `new PostProcessError({ code, detail })`.
|
|
296
295
|
*
|
|
@@ -300,5 +299,4 @@ interface PostProcessErrorConstructor {
|
|
|
300
299
|
* without manual cast (AppError pattern; TS class declarations cannot directly express
|
|
301
300
|
* `<C> ... PostProcessErrorVariant<C>` polymorphism, hence the typed-cast affordance).
|
|
302
301
|
*/
|
|
303
|
-
export const PostProcessError: PostProcessErrorConstructor =
|
|
304
|
-
PostProcessErrorClass as unknown as PostProcessErrorConstructor;
|
|
302
|
+
export const PostProcessError: PostProcessErrorConstructor = PostProcessErrorClass;
|
|
@@ -6,7 +6,10 @@ import {
|
|
|
6
6
|
RenderFeaturePreparedStateMismatchError,
|
|
7
7
|
RenderFeatureStageFailedError,
|
|
8
8
|
} from '../errors/render';
|
|
9
|
-
import type {
|
|
9
|
+
import type {
|
|
10
|
+
PreparedGraphicsResourceLease,
|
|
11
|
+
RenderFeatureResolvedGpuBuffer,
|
|
12
|
+
} from '../features/prepared-gpu-work';
|
|
10
13
|
import type {
|
|
11
14
|
RenderFeatureBindingsDescriptor,
|
|
12
15
|
RenderFeaturePreparedRef,
|
|
@@ -96,9 +99,7 @@ export interface PreparedGraphicsResolver {
|
|
|
96
99
|
release(): Result<void, RenderError>;
|
|
97
100
|
}
|
|
98
101
|
|
|
99
|
-
export
|
|
100
|
-
release(): Result<void, RenderError>;
|
|
101
|
-
}
|
|
102
|
+
export type { PreparedGraphicsResourceLease } from '../features/prepared-gpu-work';
|
|
102
103
|
|
|
103
104
|
export interface PreparedGraphicsResolvedSnapshot {
|
|
104
105
|
readonly generation: number;
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import { DEFAULT_STANDARD_PBR_PARAM_SCHEMA } from '@forgeax/engine-shader';
|
|
2
1
|
import { describe, expect, it } from 'vitest';
|
|
3
|
-
import { createDerivedMaterialSlotPlan, materialBindingByteLength } from '../material-payload.js';
|
|
4
2
|
import {
|
|
5
3
|
buildMaterialSlotPlan,
|
|
6
4
|
findRenderablePrefixForSlotCapacity,
|
|
7
5
|
materialSlotCountForPrefix,
|
|
8
|
-
} from '../
|
|
6
|
+
} from '../frame';
|
|
9
7
|
|
|
10
8
|
describe('material slot plan', () => {
|
|
11
9
|
it('interns repeated snapshot identities across renderables', () => {
|
|
@@ -44,33 +42,3 @@ describe('material slot plan', () => {
|
|
|
44
42
|
expect(materialSlotCountForPrefix(indices, 3)).toBe(5);
|
|
45
43
|
});
|
|
46
44
|
});
|
|
47
|
-
|
|
48
|
-
describe('derived material slot plan', () => {
|
|
49
|
-
it('exposes one exact owner plan for numeric and texture entries', () => {
|
|
50
|
-
const plan = createDerivedMaterialSlotPlan([
|
|
51
|
-
{ name: 'roughness', type: 'f32' },
|
|
52
|
-
{ name: 'color', type: 'vec4' },
|
|
53
|
-
{ name: 'albedo', type: 'texture2d' },
|
|
54
|
-
]);
|
|
55
|
-
expect(plan.totalBytes).toBe(plan.layout.totalBytes);
|
|
56
|
-
expect(plan.numericMembers.map((member) => member.name)).toEqual(['roughness', 'color']);
|
|
57
|
-
expect(plan.coordinateRecords.map((record) => record.parameter)).toEqual(['albedo']);
|
|
58
|
-
expect(plan.layoutIdentity).toMatch(/^sha256-/);
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
it('uses the selected shared-PBR schema for the bind range, not a compact authored slot', () => {
|
|
62
|
-
expect(materialBindingByteLength(DEFAULT_STANDARD_PBR_PARAM_SCHEMA, 512)).toBe(288);
|
|
63
|
-
expect(
|
|
64
|
-
materialBindingByteLength(
|
|
65
|
-
[
|
|
66
|
-
{ name: 'baseColor', type: 'color' },
|
|
67
|
-
{ name: 'metallic', type: 'f32' },
|
|
68
|
-
{ name: 'roughness', type: 'f32' },
|
|
69
|
-
],
|
|
70
|
-
512,
|
|
71
|
-
),
|
|
72
|
-
).toBe(32);
|
|
73
|
-
expect(materialBindingByteLength([], 512)).toBe(512);
|
|
74
|
-
expect(materialBindingByteLength(undefined, 512)).toBe(512);
|
|
75
|
-
});
|
|
76
|
-
});
|