@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
package/dist/renderer.d.ts
DELETED
|
@@ -1,771 +0,0 @@
|
|
|
1
|
-
import type { CreateShaderModule } from '@forgeax/engine-debug-draw';
|
|
2
|
-
import type { World } from '@forgeax/engine-ecs';
|
|
3
|
-
import type { InputSnapshot } from '@forgeax/engine-input';
|
|
4
|
-
import type { ProfileFrameToken, Profiler } from '@forgeax/engine-profiler';
|
|
5
|
-
import type { RenderGraphError } from '@forgeax/engine-render-graph';
|
|
6
|
-
import type { Result, RhiDevice, RhiError, RhiInstance } from '@forgeax/engine-rhi';
|
|
7
|
-
import type { ShaderError, ShaderRegistry } from '@forgeax/engine-shader';
|
|
8
|
-
import type { SkinError } from '@forgeax/engine-skinning';
|
|
9
|
-
import type { Handle, ImageError, RenderPipelineAsset, Submesh } from '@forgeax/engine-types';
|
|
10
|
-
import type { RenderAssetPort } from './assets/render-asset-port';
|
|
11
|
-
import type { RenderAssetResolutionError } from './assets/resolve-render-asset';
|
|
12
|
-
import type { EngineMetrics } from './engine-metrics';
|
|
13
|
-
import type { RecoverError } from './errors/recover';
|
|
14
|
-
import type { ObservationUnavailableError, RenderError } from './errors/render';
|
|
15
|
-
import type { RenderFeature, RenderFeatureDiagnostics } from './features/types';
|
|
16
|
-
import type { MeshMaterialBindingObservation } from './mesh-material-bindings';
|
|
17
|
-
import type { MeshUpdateError } from './mesh-update-errors';
|
|
18
|
-
import type { PipelineError } from './pipeline-errors';
|
|
19
|
-
import type { PostProcessError } from './post-process-errors';
|
|
20
|
-
import type { FrameObservation, FrameObservationOptions } from './record/frame-observation';
|
|
21
|
-
import type { MembershipTimingController, MembershipTimingOptions } from './record/membership-timing';
|
|
22
|
-
import type { RenderPipeline } from './render-pipeline';
|
|
23
|
-
import type { RenderSceneInspection } from './render-system';
|
|
24
|
-
export type RenderResult<T, E> = {
|
|
25
|
-
readonly ok: true;
|
|
26
|
-
readonly value: T;
|
|
27
|
-
} | {
|
|
28
|
-
readonly ok: false;
|
|
29
|
-
readonly error: E;
|
|
30
|
-
};
|
|
31
|
-
export interface RendererInstallError {
|
|
32
|
-
readonly code: string;
|
|
33
|
-
readonly hint: string;
|
|
34
|
-
}
|
|
35
|
-
/** Backend marker — single-element union preserved for future extensibility (D-2). */
|
|
36
|
-
export type RendererBackend = 'webgpu';
|
|
37
|
-
/**
|
|
38
|
-
* `renderer.draw(worlds, options)` owner options
|
|
39
|
-
* (feat-20260709-editor-world-partition M1 / w6, plan-strategy §2 D-3).
|
|
40
|
-
*
|
|
41
|
-
* The single `owner` index that previously served BOTH the surfaced cameras
|
|
42
|
-
* and the singleton render resources (skylight / skybox / postProcessParams) is
|
|
43
|
-
* split into two independent indices:
|
|
44
|
-
* - `cameraOwner` — the world whose cameras are surfaced.
|
|
45
|
-
* - `resourceOwner` — the world whose skylight / skybox / postProcessParams
|
|
46
|
-
* are surfaced.
|
|
47
|
-
*
|
|
48
|
-
* Both owners are always explicit. Single-world callers pass zero for both;
|
|
49
|
-
* composite callers may select different worlds.
|
|
50
|
-
*/
|
|
51
|
-
export type DrawOwnerOptions = {
|
|
52
|
-
readonly cameraOwner: number;
|
|
53
|
-
readonly resourceOwner: number;
|
|
54
|
-
readonly profileFrame?: ProfileFrameToken;
|
|
55
|
-
};
|
|
56
|
-
/** Information attached to a device-loss notification. */
|
|
57
|
-
export interface RendererLostInfo {
|
|
58
|
-
/** Concise machine-readable cause, mapped to a single vocabulary. */
|
|
59
|
-
reason: string;
|
|
60
|
-
/** Free-form description (UA / extension / driver text). */
|
|
61
|
-
message: string;
|
|
62
|
-
}
|
|
63
|
-
/** Listener registered through `Renderer.onLost`. */
|
|
64
|
-
export type RendererLostListener = (info: RendererLostInfo) => void;
|
|
65
|
-
/**
|
|
66
|
-
* Composite error type reachable through the `Renderer.onError` fan-out channel
|
|
67
|
-
* (D-4). This is the fan-out channel's *wire contract* — it does NOT define any
|
|
68
|
-
* error; it only references the cluster unions whose members can arrive here.
|
|
69
|
-
* As such it is an external wire alias (AGENTS.md Change stance add-only wire
|
|
70
|
-
* exception), NOT the eliminated cross-cluster `RuntimeError` SSOT (D-3).
|
|
71
|
-
*
|
|
72
|
-
* Composition = `RhiError | ShaderError | RenderError | RenderAssetResolutionError |
|
|
73
|
-
* SkinError | PostProcessError`. This equals the pre-decomposition
|
|
74
|
-
* `RhiError | RuntimeError | PostProcessError` exactly: `RuntimeError` was
|
|
75
|
-
* `RenderError | RenderAssetResolutionError | SkinError` (27 classes). `RecoverError`
|
|
76
|
-
* and `EngineEnvironmentError` are intentionally excluded — neither is ever
|
|
77
|
-
* fired through `onError` (`RecoverError` returns from `recover()`,
|
|
78
|
-
* `EngineEnvironmentError` throws at construction), matching the original
|
|
79
|
-
* `RuntimeError` union which excluded both (OOS-3 behavior equivalence).
|
|
80
|
-
*
|
|
81
|
-
* AI consumers do `switch (err.code)` over the union: the disjoint
|
|
82
|
-
* `RhiErrorCode` / `RenderErrorCode` / `RenderAssetResolutionErrorCode` / `SkinErrorCode`
|
|
83
|
-
* / `PostProcessErrorCode` literal sets let TS narrow each arm to the concrete
|
|
84
|
-
* class (charter P3 union discoverability — every fan-out member is reachable
|
|
85
|
-
* in an exhaustive switch, no `as any` escape). Example:
|
|
86
|
-
*
|
|
87
|
-
* ```ts
|
|
88
|
-
* renderer.onError((err) => {
|
|
89
|
-
* switch (err.code) {
|
|
90
|
-
* case 'asset-not-found': // RenderAssetResolutionError arm, err narrowed here
|
|
91
|
-
* return report(err.hint);
|
|
92
|
-
* // ...one arm per RhiErrorCode | RenderErrorCode | RenderAssetResolutionErrorCode
|
|
93
|
-
* // | SkinErrorCode | PostProcessErrorCode member; no default needed,
|
|
94
|
-
* // TS flags any unhandled code at compile time.
|
|
95
|
-
* }
|
|
96
|
-
* });
|
|
97
|
-
* ```
|
|
98
|
-
*/
|
|
99
|
-
export type RendererError = RhiError | ShaderError | RenderGraphError | ImageError | RenderError | RenderAssetResolutionError | SkinError | PostProcessError | PipelineError;
|
|
100
|
-
/**
|
|
101
|
-
* Listener registered through `Renderer.onError` (fix-f2). Receives any
|
|
102
|
-
* {@link RendererError} fanned out through the channel.
|
|
103
|
-
*/
|
|
104
|
-
export type RendererErrorListener = (error: RendererError) => void;
|
|
105
|
-
/**
|
|
106
|
-
* Built-in graph pass owners used as nested children of `record/graph-execute`.
|
|
107
|
-
* Unknown extension pass names use the explicit `other` bucket so custom
|
|
108
|
-
* pipelines retain a bounded catalog while the default render workload gets
|
|
109
|
-
* actionable owner attribution.
|
|
110
|
-
*/
|
|
111
|
-
export declare const RENDER_GRAPH_EXECUTION_PHASE_CATALOG: readonly ["record/graph-execute/point-shadow", "record/graph-execute/cluster-binner-upload", "record/graph-execute/g-buffer", "record/graph-execute/g-buffer/geometry-loop", "record/graph-execute/g-buffer/material-bind-groups", "record/graph-execute/g-buffer/pipeline-selection", "record/graph-execute/g-buffer/draw-submit", "record/graph-execute/ssao-calc", "record/graph-execute/ssao-blur", "record/graph-execute/lighting", "record/graph-execute/forward", "record/graph-execute/forward/geometry-loop", "record/graph-execute/forward/material-bind-groups", "record/graph-execute/forward/pipeline-selection", "record/graph-execute/forward/draw-submit", "record/graph-execute/scene-temporal", "record/graph-execute/scene-temporal/geometry-loop", "record/graph-execute/scene-temporal/material-bind-groups", "record/graph-execute/scene-temporal/pipeline-selection", "record/graph-execute/scene-temporal/draw-submit", "record/graph-execute/tonemap", "record/graph-execute/debug-overlay", "record/graph-execute/shadow", "record/graph-execute/spot-shadow", "record/graph-execute/skybox", "record/graph-execute/main", "record/graph-execute/fxaa", "record/graph-execute/bloom-bright", "record/graph-execute/bloom-blur-h", "record/graph-execute/bloom-blur-v", "record/graph-execute/bloom-composite", "record/graph-execute/other"];
|
|
112
|
-
export type RenderGraphExecutionPhase = (typeof RENDER_GRAPH_EXECUTION_PHASE_CATALOG)[number];
|
|
113
|
-
/** Bounded producer-owned children of the scene-state record owner. */
|
|
114
|
-
export declare const RENDER_HDRP_BINNER_PHASE_CATALOG: readonly ["record/scene-state/hdrp-cluster/binner/light-bounds-and-occupancy", "record/scene-state/hdrp-cluster/binner/light-bounds-and-occupancy/light-aabb", "record/scene-state/hdrp-cluster/binner/light-bounds-and-occupancy/cluster-occupancy", "record/scene-state/hdrp-cluster/binner/cluster-reserve", "record/scene-state/hdrp-cluster/binner/input-preparation", "record/scene-state/hdrp-cluster/binner/bin-core", "record/scene-state/hdrp-cluster/binner/light-index-write", "record/scene-state/hdrp-cluster/binner/light-index-write/bounds-read", "record/scene-state/hdrp-cluster/binner/light-index-write/cluster-write"];
|
|
115
|
-
export type RenderHdrpBinnerPhase = (typeof RENDER_HDRP_BINNER_PHASE_CATALOG)[number];
|
|
116
|
-
export declare const RENDER_HDRP_CLUSTER_PHASE_CATALOG: readonly ["record/scene-state/hdrp-cluster/binner", "record/scene-state/hdrp-cluster/binner/light-bounds-and-occupancy", "record/scene-state/hdrp-cluster/binner/light-bounds-and-occupancy/light-aabb", "record/scene-state/hdrp-cluster/binner/light-bounds-and-occupancy/cluster-occupancy", "record/scene-state/hdrp-cluster/binner/cluster-reserve", "record/scene-state/hdrp-cluster/binner/input-preparation", "record/scene-state/hdrp-cluster/binner/bin-core", "record/scene-state/hdrp-cluster/binner/light-index-write", "record/scene-state/hdrp-cluster/binner/light-index-write/bounds-read", "record/scene-state/hdrp-cluster/binner/light-index-write/cluster-write", "record/scene-state/hdrp-cluster/payload-packing", "record/scene-state/hdrp-cluster/buffer-upload"];
|
|
117
|
-
export type RenderHdrpClusterPhase = (typeof RENDER_HDRP_CLUSTER_PHASE_CATALOG)[number];
|
|
118
|
-
export declare const RENDER_SCENE_STATE_PHASE_CATALOG: readonly ["record/scene-state/fold-buckets", "record/scene-state/lighting-prep", "record/scene-state/ambient-resolution", "record/scene-state/directional-shadow-cache", "record/scene-state/hdrp-cluster", "record/scene-state/hdrp-cluster/binner", "record/scene-state/hdrp-cluster/binner/light-bounds-and-occupancy", "record/scene-state/hdrp-cluster/binner/light-bounds-and-occupancy/light-aabb", "record/scene-state/hdrp-cluster/binner/light-bounds-and-occupancy/cluster-occupancy", "record/scene-state/hdrp-cluster/binner/cluster-reserve", "record/scene-state/hdrp-cluster/binner/input-preparation", "record/scene-state/hdrp-cluster/binner/bin-core", "record/scene-state/hdrp-cluster/binner/light-index-write", "record/scene-state/hdrp-cluster/binner/light-index-write/bounds-read", "record/scene-state/hdrp-cluster/binner/light-index-write/cluster-write", "record/scene-state/hdrp-cluster/payload-packing", "record/scene-state/hdrp-cluster/buffer-upload"];
|
|
119
|
-
export type RenderSceneStatePhase = (typeof RENDER_SCENE_STATE_PHASE_CATALOG)[number];
|
|
120
|
-
/**
|
|
121
|
-
* Opt-in boundaries inside one `Renderer.draw` call. The observer is a
|
|
122
|
-
* diagnostics seam only: it receives wall-time boundaries and must never be
|
|
123
|
-
* required for rendering correctness. The stage names mirror the existing
|
|
124
|
-
* engine-owned Extract / Prepare / Record orchestration so a host can measure
|
|
125
|
-
* attribution without guessing from RHI command counts.
|
|
126
|
-
*/
|
|
127
|
-
export declare const RENDER_RECORD_PHASE_CATALOG: readonly ["record/scene-state", "record/scene-state/fold-buckets", "record/scene-state/lighting-prep", "record/scene-state/ambient-resolution", "record/scene-state/directional-shadow-cache", "record/scene-state/hdrp-cluster", "record/scene-state/hdrp-cluster/binner", "record/scene-state/hdrp-cluster/binner/light-bounds-and-occupancy", "record/scene-state/hdrp-cluster/binner/light-bounds-and-occupancy/light-aabb", "record/scene-state/hdrp-cluster/binner/light-bounds-and-occupancy/cluster-occupancy", "record/scene-state/hdrp-cluster/binner/cluster-reserve", "record/scene-state/hdrp-cluster/binner/input-preparation", "record/scene-state/hdrp-cluster/binner/bin-core", "record/scene-state/hdrp-cluster/binner/light-index-write", "record/scene-state/hdrp-cluster/binner/light-index-write/bounds-read", "record/scene-state/hdrp-cluster/binner/light-index-write/cluster-write", "record/scene-state/hdrp-cluster/payload-packing", "record/scene-state/hdrp-cluster/buffer-upload", "record/swapchain", "record/render-graph", "record/target-views", "record/validation", "record/dispatch-plan", "record/uploads", "record/bind-groups", "record/graph-execute", "record/graph-execute/point-shadow", "record/graph-execute/cluster-binner-upload", "record/graph-execute/g-buffer", "record/graph-execute/g-buffer/geometry-loop", "record/graph-execute/g-buffer/material-bind-groups", "record/graph-execute/g-buffer/pipeline-selection", "record/graph-execute/g-buffer/draw-submit", "record/graph-execute/ssao-calc", "record/graph-execute/ssao-blur", "record/graph-execute/lighting", "record/graph-execute/forward", "record/graph-execute/forward/geometry-loop", "record/graph-execute/forward/material-bind-groups", "record/graph-execute/forward/pipeline-selection", "record/graph-execute/forward/draw-submit", "record/graph-execute/scene-temporal", "record/graph-execute/scene-temporal/geometry-loop", "record/graph-execute/scene-temporal/material-bind-groups", "record/graph-execute/scene-temporal/pipeline-selection", "record/graph-execute/scene-temporal/draw-submit", "record/graph-execute/tonemap", "record/graph-execute/debug-overlay", "record/graph-execute/shadow", "record/graph-execute/spot-shadow", "record/graph-execute/skybox", "record/graph-execute/main", "record/graph-execute/fxaa", "record/graph-execute/bloom-bright", "record/graph-execute/bloom-blur-h", "record/graph-execute/bloom-blur-v", "record/graph-execute/bloom-composite", "record/graph-execute/other"];
|
|
128
|
-
export type RenderRecordPhase = (typeof RENDER_RECORD_PHASE_CATALOG)[number];
|
|
129
|
-
export declare const RENDER_PHASE_CATALOG: readonly ["extract", "bind-groups", "features", "sort", "record", "record/scene-state", "record/scene-state/fold-buckets", "record/scene-state/lighting-prep", "record/scene-state/ambient-resolution", "record/scene-state/directional-shadow-cache", "record/scene-state/hdrp-cluster", "record/scene-state/hdrp-cluster/binner", "record/scene-state/hdrp-cluster/binner/light-bounds-and-occupancy", "record/scene-state/hdrp-cluster/binner/light-bounds-and-occupancy/light-aabb", "record/scene-state/hdrp-cluster/binner/light-bounds-and-occupancy/cluster-occupancy", "record/scene-state/hdrp-cluster/binner/cluster-reserve", "record/scene-state/hdrp-cluster/binner/input-preparation", "record/scene-state/hdrp-cluster/binner/bin-core", "record/scene-state/hdrp-cluster/binner/light-index-write", "record/scene-state/hdrp-cluster/binner/light-index-write/bounds-read", "record/scene-state/hdrp-cluster/binner/light-index-write/cluster-write", "record/scene-state/hdrp-cluster/payload-packing", "record/scene-state/hdrp-cluster/buffer-upload", "record/swapchain", "record/render-graph", "record/target-views", "record/validation", "record/dispatch-plan", "record/uploads", "record/bind-groups", "record/graph-execute", "record/graph-execute/point-shadow", "record/graph-execute/cluster-binner-upload", "record/graph-execute/g-buffer", "record/graph-execute/g-buffer/geometry-loop", "record/graph-execute/g-buffer/material-bind-groups", "record/graph-execute/g-buffer/pipeline-selection", "record/graph-execute/g-buffer/draw-submit", "record/graph-execute/ssao-calc", "record/graph-execute/ssao-blur", "record/graph-execute/lighting", "record/graph-execute/forward", "record/graph-execute/forward/geometry-loop", "record/graph-execute/forward/material-bind-groups", "record/graph-execute/forward/pipeline-selection", "record/graph-execute/forward/draw-submit", "record/graph-execute/scene-temporal", "record/graph-execute/scene-temporal/geometry-loop", "record/graph-execute/scene-temporal/material-bind-groups", "record/graph-execute/scene-temporal/pipeline-selection", "record/graph-execute/scene-temporal/draw-submit", "record/graph-execute/tonemap", "record/graph-execute/debug-overlay", "record/graph-execute/shadow", "record/graph-execute/spot-shadow", "record/graph-execute/skybox", "record/graph-execute/main", "record/graph-execute/fxaa", "record/graph-execute/bloom-bright", "record/graph-execute/bloom-blur-h", "record/graph-execute/bloom-blur-v", "record/graph-execute/bloom-composite", "record/graph-execute/other"];
|
|
130
|
-
export type RenderPhase = (typeof RENDER_PHASE_CATALOG)[number];
|
|
131
|
-
export type RenderPhaseSkipReason = 'feature-host-unavailable' | 'feature-host-empty' | 'pipeline-state-unavailable' | 'camera-unavailable';
|
|
132
|
-
/** First-version options bag (intentionally empty; reserved for v0.1). */
|
|
133
|
-
export interface RendererOptions {
|
|
134
|
-
/** Producer-owned features installed by the renderer host. */
|
|
135
|
-
readonly features?: readonly RenderFeature<unknown>[] | undefined;
|
|
136
|
-
/** Explicit profiler capability shared by App and Render. */
|
|
137
|
-
readonly profiler?: Profiler | undefined;
|
|
138
|
-
/** Explicit, Render-owned membership timing capability. Omitted means zero timing work. */
|
|
139
|
-
readonly membershipTiming?: MembershipTimingOptions | undefined;
|
|
140
|
-
/** @internal Enables producer-owned shadow markers for an active RHI capture. */
|
|
141
|
-
readonly debugShadowObservation?: boolean | undefined;
|
|
142
|
-
/**
|
|
143
|
-
* D-S1 single-point exemption channel (feat-20260508-rhi-surface-completion
|
|
144
|
-
* / w9): raw GPUDevice used by the GPUCanvasContext.configure({device})
|
|
145
|
-
* path. GPUCanvasContext is outside the RHI surface (spec couples context
|
|
146
|
-
* to canvas, not GPUDevice), so the raw GPUDevice is injected through
|
|
147
|
-
* RendererOptions.rawDeviceForContextConfigure. apps/hello/triangle/src/main.ts:96
|
|
148
|
-
* captures the raw device via _internal_getRawDevice and passes it in;
|
|
149
|
-
* every other engine path goes through the RHI interface.
|
|
150
|
-
*
|
|
151
|
-
* Accepted forms:
|
|
152
|
-
* - direct value (unknown) - raw GPUDevice already captured
|
|
153
|
-
* - thunk `() => unknown | undefined` - lazy capture, evaluated AFTER
|
|
154
|
-
* createRenderer's internal rhi.requestDevice settles (lets callers
|
|
155
|
-
* wrap requestDevice to capture the raw device transparently)
|
|
156
|
-
*
|
|
157
|
-
* Type intentionally unknown: keeps the RHI surface free of raw GPUDevice
|
|
158
|
-
* typing; webgpu-backend internally casts to GPUDevice.
|
|
159
|
-
*/
|
|
160
|
-
readonly rawDeviceForContextConfigure?: unknown | (() => unknown | undefined);
|
|
161
|
-
/**
|
|
162
|
-
* M3 D-P4 escape hatch (feat-20260511-rhi-wgpu-impl): explicit
|
|
163
|
-
* `RhiInstance` injection bypasses the dynamic-import auto-select
|
|
164
|
-
* facade. When set, `createRenderer` uses this instance verbatim and
|
|
165
|
-
* neither `@forgeax/engine-rhi-webgpu` nor `@forgeax/engine-rhi-wgpu` is imported
|
|
166
|
-
* dynamically (charter proposition 5 discoverable opt-in /
|
|
167
|
-
* plan-strategy §6 M3 + §7.4 escape hatch + Bevy
|
|
168
|
-
* `RenderCreation::Manual` partial equivalent).
|
|
169
|
-
*
|
|
170
|
-
* Typical use cases:
|
|
171
|
-
* - Testing / debugging — inject a deterministic stub.
|
|
172
|
-
* - Pinning a specific backend (e.g. `@forgeax/engine-rhi-wgpu` even when
|
|
173
|
-
* `navigator.gpu` is present, for cross-shim regression tests).
|
|
174
|
-
* - Advanced AI users implementing their own `RhiInstance` shim.
|
|
175
|
-
*
|
|
176
|
-
* AI users who want the default behaviour leave this field omitted;
|
|
177
|
-
* `navigator.gpu` presence/absence drives the dynamic import (see the
|
|
178
|
-
* `createRenderer` JSDoc for the full auto-select decision tree).
|
|
179
|
-
*/
|
|
180
|
-
readonly rhi?: RhiInstance | undefined;
|
|
181
|
-
/** Runtime-owned typed instrumentation callbacks for optional RHI capture. */
|
|
182
|
-
readonly rhiInstrumentation?: import('./renderer/backend-selection').RhiBackendInstrumentation | undefined;
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* Public Renderer surface. The concrete class is constructed by
|
|
186
|
-
* `createRenderer(canvas, options?)`; callers never instantiate this directly.
|
|
187
|
-
*
|
|
188
|
-
* ECS render bridge error tier table (D-S3 / D-S4 / D-S6 / D-S7 / D-S8):
|
|
189
|
-
*
|
|
190
|
-
* | Path | Behaviour | onError fired? |
|
|
191
|
-
* |:--|:--|:--|
|
|
192
|
-
* | `ready` step 1 manifest load fails | settles err (`ShaderError 'manifest-malformed'` / `'shader-not-found'`) | no — surfaced through `await renderer.ready` |
|
|
193
|
-
* | `ready` step 2 pipeline compile fails | settles err (`RhiError 'shader-compile-failed'` / `'feature-not-enabled'` / `'limit-exceeded'`) | no — surfaced through ready |
|
|
194
|
-
* | `ready` step 3 asset upload fails | settles err (`RhiError 'limit-exceeded'` / `'webgpu-runtime-error'`) | no — surfaced through ready |
|
|
195
|
-
* | `draw([world], { cameraOwner: 0, resourceOwner: 0 })` before `ready` settles (D-S4) | frame skipped | yes — `'rhi-not-available'` |
|
|
196
|
-
* | RenderSystem 0 Camera | frame skipped | yes — `'render-system-no-camera'` |
|
|
197
|
-
* | RenderSystem N>1 Camera | first archetype hit rendered | yes — `'render-system-multi-camera'` |
|
|
198
|
-
* | RenderSystem N>1 DirectionalLight | first archetype hit used | yes — `'render-system-multi-light'` |
|
|
199
|
-
* | RenderSystem 0 DirectionalLight | unlit fallback (intensity = 0) | no — D-Q7 softening |
|
|
200
|
-
* | RenderSystem 0 renderables (Camera entity only) | clear pass executed; canvas painted with `Camera.clearColor`; no geometry submitted | no — D-Q7 softening |
|
|
201
|
-
* | RenderSystem all renderables fail asset-not-found | clear pass executed; per-entity `'asset-not-found'` fires for each unregistered handle | yes — per entity |
|
|
202
|
-
* | RenderSystem entity missing Transform / MeshRenderer | default value used | no — D-Q7 softening |
|
|
203
|
-
* | RenderSystem unregistered `MeshFilter.assetHandle` | entity skipped | yes — `'asset-not-found'` (`detail = { assetHandle }`) |
|
|
204
|
-
* | RenderSystem internal exception (mat4 NaN / GPU bounds) | frame skipped + retry next frame | yes — `'webgpu-runtime-error'` (`detail = { error }`) |
|
|
205
|
-
*/
|
|
206
|
-
export interface Renderer {
|
|
207
|
-
/** Opaque backend marker (K-4). */
|
|
208
|
-
readonly backend: RendererBackend;
|
|
209
|
-
/**
|
|
210
|
-
* Captured RhiDevice handle. The forgeax RhiDevice the engine created
|
|
211
|
-
* internally via `rhi.requestAdapter() -> adapter.requestDevice()`.
|
|
212
|
-
* AI users read through this accessor instead of monkey-patching
|
|
213
|
-
* `rhi.requestAdapter` to capture the device handle.
|
|
214
|
-
*/
|
|
215
|
-
readonly device: RhiDevice;
|
|
216
|
-
/**
|
|
217
|
-
* @internal
|
|
218
|
-
*
|
|
219
|
-
* Shader-module creation must stay on the backend pack selected while the
|
|
220
|
-
* renderer was assembled. Engine-owned extensions (debug-draw is the
|
|
221
|
-
* current consumer) use this seam instead of importing a concrete RHI
|
|
222
|
-
* module again; a second bundled rhi-webgpu copy cannot recognize the
|
|
223
|
-
* renderer's opaque device handle.
|
|
224
|
-
*/
|
|
225
|
-
readonly _internal_createShaderModule: CreateShaderModule;
|
|
226
|
-
/**
|
|
227
|
-
* Instance-per-engine ShaderRegistry: on first access this lazy property
|
|
228
|
-
* constructs a `ShaderRegistry({ device, manifestUrl })` instance;
|
|
229
|
-
* subsequent accesses return the same instance. Callers must
|
|
230
|
-
* `await shader.loadManifest()` before they can call `shader.get(hash)`.
|
|
231
|
-
*/
|
|
232
|
-
readonly shader: ShaderRegistry;
|
|
233
|
-
/**
|
|
234
|
-
* App-owned `AssetRegistry` for GUID loads. Geometry payloads become
|
|
235
|
-
* World shared references at the consumer boundary.
|
|
236
|
-
* or register custom meshes via `renderer.assets.register(asset).unwrap()`.
|
|
237
|
-
*/
|
|
238
|
-
readonly assets: RenderAssetPort;
|
|
239
|
-
/**
|
|
240
|
-
* feat-20260527-sprite-nineslice M4 / w16 (D-5 + AC-16): per-Renderer
|
|
241
|
-
* metrics counter for runtime-time soft signals.
|
|
242
|
-
*
|
|
243
|
-
* AI users read `renderer.metrics.snapshot()['<feature>.<event>']` to observe
|
|
244
|
-
* events the engine surfaces without a `console.warn` flood (charter P3:
|
|
245
|
-
* machine-readable counters over text). Two methods compose the surface:
|
|
246
|
-
*
|
|
247
|
-
* | Method | Purpose |
|
|
248
|
-
* |:------------------------|:-----------------------------------------|
|
|
249
|
-
* | `increment(name)` | Engine-internal: bump counter for `name`.|
|
|
250
|
-
* | `snapshot()` | AI-user-facing: read all counters. |
|
|
251
|
-
* | `reset()` | Test isolation: drop every counter. |
|
|
252
|
-
*
|
|
253
|
-
* Currently surfaced counters (closed namespace, see `EngineMetrics`
|
|
254
|
-
* JSDoc):
|
|
255
|
-
*
|
|
256
|
-
* - `nineslice.scale-too-small` (AC-16, w17 end-to-end)
|
|
257
|
-
* - `nineslice.tile-needs-repeat-sampler` (D-9, w18 register-time soft-warn)
|
|
258
|
-
*
|
|
259
|
-
* Multi-Renderer isolation: each Renderer instance owns its own EngineMetrics
|
|
260
|
-
* (D-5 candidate 1) so per-test counters never bleed across renderers.
|
|
261
|
-
*/
|
|
262
|
-
readonly metrics: EngineMetrics;
|
|
263
|
-
/**
|
|
264
|
-
* feat-20260601-gpu-resource-store-extraction M1: the GPU residency store.
|
|
265
|
-
* `renderer.assets` keeps the CPU POD registry; `renderer.store` owns the
|
|
266
|
-
* GPU resource lifecycle. Render-path texture / mesh residency is pulled
|
|
267
|
-
* lazily via `store.ensureResident`. The equirect-to-cubemap IBL projection
|
|
268
|
-
* is engine internals (feat-20260630 D-3): AI users declare
|
|
269
|
-
* `Skylight{equirect}` and the record arm drives the projection; there is no
|
|
270
|
-
* user-facing upload call. The store holds no AssetRegistry reference (D-2);
|
|
271
|
-
* callers pass the source POD fetched from `renderer.assets`.
|
|
272
|
-
*/
|
|
273
|
-
readonly store: any;
|
|
274
|
-
/**
|
|
275
|
-
* Replace bytes in a resident dynamic mesh while preserving its layout,
|
|
276
|
-
* index format, counts, topology, submeshes, and allocation sizes.
|
|
277
|
-
*/
|
|
278
|
-
updateMesh(handle: Handle<'MeshAsset', 'shared'>, vertices: Float32Array, indices: Uint16Array | Uint32Array | undefined, worldId?: number, submeshes?: readonly Submesh[]): Result<void, MeshUpdateError | RhiError>;
|
|
279
|
-
/**
|
|
280
|
-
* Replace one contiguous vertex range. The range size is expressed in
|
|
281
|
-
* vertices; the resident mesh metadata supplies the byte stride.
|
|
282
|
-
*/
|
|
283
|
-
updateMeshVertexRange(handle: Handle<'MeshAsset', 'shared'>, vertices: Float32Array, firstVertex: number, vertexCount: number, worldId?: number): Result<void, MeshUpdateError | RhiError>;
|
|
284
|
-
/**
|
|
285
|
-
* V-2 first-class input shim (plan-strategy D-2 + AC-09 — feat-20260519).
|
|
286
|
-
*
|
|
287
|
-
* Curried `(world: World) => InputSnapshot | undefined` reader: a thin
|
|
288
|
-
* facade over `world.getResource<InputSnapshot>('InputSnapshot')`.
|
|
289
|
-
*
|
|
290
|
-
* Charter P5 producer/consumer split: the renderer never holds a World
|
|
291
|
-
* reference; the World is supplied per call so the renderer lifecycle
|
|
292
|
-
* remains decoupled from the World lifecycle.
|
|
293
|
-
*
|
|
294
|
-
* Returns `undefined` when no InputSnapshot Resource is registered on
|
|
295
|
-
* the World (charter P3: empty signal is the signal).
|
|
296
|
-
*/
|
|
297
|
-
readonly input: {
|
|
298
|
-
snapshot(world: World): InputSnapshot | undefined;
|
|
299
|
-
};
|
|
300
|
-
/**
|
|
301
|
-
* Initialization barrier (D-S3 — feat-20260509-ecs-render-bridge-mvp).
|
|
302
|
-
*
|
|
303
|
-
* Resolves only after three steps complete, in strict serial order:
|
|
304
|
-
* 1. `shader.loadManifest()` — fetch + parse manifest.json.
|
|
305
|
-
* 2. PBR pipeline compile — `createShaderModule` + 3x
|
|
306
|
-
* `createBindGroupLayout` (view / material / mesh-array) +
|
|
307
|
-
* `createPipelineLayout` + `createRenderPipeline`.
|
|
308
|
-
* 3. Render-owned builtin mesh upload — `createBuffer` +
|
|
309
|
-
* `queue.writeBuffer` for cube + triangle vertex / index buffers.
|
|
310
|
-
* Any step failure settles with `Result.err(RhiError)`.
|
|
311
|
-
*
|
|
312
|
-
* Calling `draw([world], { cameraOwner: 0, resourceOwner: 0 })` before `ready` settles fires
|
|
313
|
-
* `onError` with `'rhi-not-available'` and skips the frame (D-S4).
|
|
314
|
-
*
|
|
315
|
-
* @example
|
|
316
|
-
* const renderer = await createRenderer(canvas);
|
|
317
|
-
* const ready = await renderer.ready;
|
|
318
|
-
* if (!ready.ok) throw ready.error;
|
|
319
|
-
* const attached = renderer.attachWorld(world);
|
|
320
|
-
* if (!attached.ok) throw attached.error;
|
|
321
|
-
* const updated = world.update(1 / 60);
|
|
322
|
-
* if (!updated.ok) throw updated.error;
|
|
323
|
-
* const r = renderer.draw([world], { cameraOwner: 0, resourceOwner: 0 });
|
|
324
|
-
* if (!r.ok) console.error(r.error);
|
|
325
|
-
*/
|
|
326
|
-
readonly ready: Promise<RenderResult<void, RhiError>>;
|
|
327
|
-
/** Backend-aware membership timing, present only when explicitly requested. */
|
|
328
|
-
readonly membershipTiming?: MembershipTimingController;
|
|
329
|
-
/**
|
|
330
|
-
* Attach renderer-required derived-state systems to a World once.
|
|
331
|
-
*
|
|
332
|
-
* The systems run inside `World.update()`; `draw()` and its extract stage
|
|
333
|
-
* remain read-only consumers of the resulting World state. Reattaching the
|
|
334
|
-
* same World to this Renderer is a no-op.
|
|
335
|
-
*/
|
|
336
|
-
attachWorld(world: World): RenderResult<void, RhiError>;
|
|
337
|
-
/**
|
|
338
|
-
* Release this Renderer's derived-state ownership of one World.
|
|
339
|
-
* Idempotent; after detach, draw rejects the World until it is attached and
|
|
340
|
-
* successfully updated again.
|
|
341
|
-
*/
|
|
342
|
-
detachWorld(world: World): void;
|
|
343
|
-
/**
|
|
344
|
-
* Draw one frame for the supplied World (D-S2 + K-4 rewrite).
|
|
345
|
-
*
|
|
346
|
-
* RenderSystem (engine-internal phase) walks the World query graph
|
|
347
|
-
* across three stages — Extract / Prepare / Record — and submits a
|
|
348
|
-
* single GPU command buffer per call. Per-call behaviour is governed by
|
|
349
|
-
* the error tier table on `Renderer` (D-S4..D-S8); AI users observe
|
|
350
|
-
* fan-out through `onError` and frame-skip semantics through the same
|
|
351
|
-
* structured RhiError closed union.
|
|
352
|
-
*
|
|
353
|
-
* @example Spawn-then-draw:
|
|
354
|
-
* const world = new World();
|
|
355
|
-
* world.spawn(
|
|
356
|
-
* { component: Transform, data: cameraTransform },
|
|
357
|
-
* { component: Camera, data: cameraParams },
|
|
358
|
-
* );
|
|
359
|
-
* world.spawn({
|
|
360
|
-
* component: MeshFilter,
|
|
361
|
-
* data: { assetHandle: cubeMesh },
|
|
362
|
-
* });
|
|
363
|
-
* const ready = await renderer.ready;
|
|
364
|
-
* if (!ready.ok) throw ready.error;
|
|
365
|
-
* const attached = renderer.attachWorld(world);
|
|
366
|
-
* if (!attached.ok) throw attached.error;
|
|
367
|
-
* const updated = world.update(1 / 60);
|
|
368
|
-
* if (!updated.ok) throw updated.error;
|
|
369
|
-
* const r = renderer.draw([world], { cameraOwner: 0, resourceOwner: 0 });
|
|
370
|
-
* if (!r.ok) handleError(r.error);
|
|
371
|
-
*
|
|
372
|
-
* w24 — Result<void, RhiError> shape: returns Result.ok(undefined) on
|
|
373
|
-
* success; Result.err(rhiError) on facade-level catch (transient runtime
|
|
374
|
-
* exception). Per-stage RhiError continues to fan out through `onError`
|
|
375
|
-
* (charter proposition 5; D-P6 dual-channel preserved). The Result return
|
|
376
|
-
* is the synchronous facade-level summary; AI users can ignore it or
|
|
377
|
-
* branch on `.ok` (biome lint warns on unhandled return).
|
|
378
|
-
*
|
|
379
|
-
* feat-20260708-composited-multi-world-rendering M3 (AC-01 / AC-02 / D-5),
|
|
380
|
-
* extended by feat-20260709-editor-world-partition M1 / w6: `worlds` is
|
|
381
|
-
* composited into one frame — renderables + lights merge from every world,
|
|
382
|
-
* while cameras come from the `cameraOwner` world and singleton resources
|
|
383
|
-
* (skylight / skybox / postProcessParams) come from the `resourceOwner`
|
|
384
|
-
* world. {@link DrawOwnerOptions} requires both authorities explicitly as
|
|
385
|
-
* `{ cameraOwner, resourceOwner }`.
|
|
386
|
-
* Single-world users pass `draw([world], { cameraOwner: 0, resourceOwner: 0 })` (the app frame-loop
|
|
387
|
-
* does this wrapping transparently). Entry validation returns `Result.err`
|
|
388
|
-
* before any extract on:
|
|
389
|
-
* - empty `worlds` -> `'render-system-empty-worlds'`
|
|
390
|
-
* - `cameraOwner` out of range -> `'render-system-owner-out-of-range'`
|
|
391
|
-
* (`.detail = { role: 'camera', owner, worldCount }`)
|
|
392
|
-
* - `resourceOwner` out of range -> `'render-system-owner-out-of-range'`
|
|
393
|
-
* (`.detail = { role: 'resource', owner, worldCount }`)
|
|
394
|
-
* cameraOwner is validated before resourceOwner (first offender wins).
|
|
395
|
-
*
|
|
396
|
-
* @example Composite two worlds (owner supplies both camera + resources):
|
|
397
|
-
* const scene = new World(); // camera + lights + geometry
|
|
398
|
-
* const overlay = new World(); // extra geometry, no camera
|
|
399
|
-
* const r = renderer.draw([scene, overlay], { cameraOwner: 0, resourceOwner: 0 });
|
|
400
|
-
* if (!r.ok) handleError(r.error);
|
|
401
|
-
*
|
|
402
|
-
* @example Split owners (scene camera, editor-overlay resources):
|
|
403
|
-
* const r = renderer.draw([scene, editor], { cameraOwner: 0, resourceOwner: 1 });
|
|
404
|
-
*/
|
|
405
|
-
draw(worlds: readonly World[], options: DrawOwnerOptions): RenderResult<void, RhiError>;
|
|
406
|
-
/**
|
|
407
|
-
* Observe the producer-owned linear HDR attachment from the most recently
|
|
408
|
-
* completed frame. This never reads the final display canvas.
|
|
409
|
-
*/
|
|
410
|
-
observeCurrentFrame(options: FrameObservationOptions): Promise<RenderResult<FrameObservation, ObservationUnavailableError>>;
|
|
411
|
-
/**
|
|
412
|
-
* Read the canvas's current pixel contents back into an RGBA Uint8Array.
|
|
413
|
-
*
|
|
414
|
-
* Reads the WebGPU canvas's backing image via the lowest-common-
|
|
415
|
-
* denominator browser path: `createImageBitmap → OffscreenCanvas 2D
|
|
416
|
-
* drawImage → getImageData`. The WebGPU canvas's GPUTexture is not
|
|
417
|
-
* directly readable via `getImageData`, so this OffscreenCanvas bounce
|
|
418
|
-
* is the canonical browser path; AI users avoid hand-rolling the
|
|
419
|
-
* recipe (charter proposition 5 consistent abstraction).
|
|
420
|
-
*
|
|
421
|
-
* Returns top-left origin RGBA (the natural getImageData convention).
|
|
422
|
-
* Apps that need bottom-left origin (parity comparisons against
|
|
423
|
-
* `gl.readPixels`) Y-flip the result locally.
|
|
424
|
-
*
|
|
425
|
-
* AI users typically: `renderer.draw([world], { cameraOwner: 0, resourceOwner: 0 })` to update the canvas,
|
|
426
|
-
* then `await renderer.readPixels()` to sample. Output buffer length
|
|
427
|
-
* is `canvas.width * canvas.height * 4`.
|
|
428
|
-
*
|
|
429
|
-
* | Path | Behavior |
|
|
430
|
-
* |:--|:--|
|
|
431
|
-
* | OffscreenCanvas + 2D ctx all available | `Result.ok(Uint8Array)` |
|
|
432
|
-
* | OffscreenCanvas / 2D ctx unavailable | `Result.err(RhiError 'webgpu-runtime-error')` (`detail.error: string`) |
|
|
433
|
-
* | `createImageBitmap` throws | `Result.err(RhiError 'webgpu-runtime-error')` (`detail.error: string`) |
|
|
434
|
-
*
|
|
435
|
-
* dawn-node smoke harness path uses raw RHI (`device.queue.copyTexture
|
|
436
|
-
* ToBuffer + mapAsync`) directly against an offscreen `GPUTexture` —
|
|
437
|
-
* that path has no canvas and does not collapse with this method.
|
|
438
|
-
* Future RHI-level readback abstraction tracked separately.
|
|
439
|
-
*/
|
|
440
|
-
readPixels(): Promise<RenderResult<Uint8Array, RhiError>>;
|
|
441
|
-
/**
|
|
442
|
-
* Relinquish the canvas presentation surface while preserving the Renderer,
|
|
443
|
-
* AssetRegistry, and CPU-side render declarations. Idempotent. Draws fail
|
|
444
|
-
* closed until restoreSurface() succeeds.
|
|
445
|
-
*/
|
|
446
|
-
releaseSurface(): RenderResult<void, RhiError>;
|
|
447
|
-
/** Re-enable presentation on the same canvas/device after releaseSurface(). */
|
|
448
|
-
restoreSurface(): RenderResult<void, RhiError>;
|
|
449
|
-
/**
|
|
450
|
-
* Release renderer-owned resources + detach listeners. Idempotent.
|
|
451
|
-
*
|
|
452
|
-
* @placeholder fix-f6: M2/M3 placeholder form — the `RhiDevice` interface
|
|
453
|
-
* does not yet expose a `destroy()` entry, so the current implementation
|
|
454
|
-
* only detaches the listener registry + blocks subsequent `draw()` calls;
|
|
455
|
-
* the underlying GPU resources are reclaimed naturally via the spec
|
|
456
|
-
* pass-through layer (`device.lost` pass-through + browser GC). The
|
|
457
|
-
* explicit `device.destroy()` path will be closed out in a later RHI
|
|
458
|
-
* interface extension. See the `Renderer.dispose` row of the "API index"
|
|
459
|
-
* in `packages/engine/README.md` plus plan-strategy §6 NOTE on M3 scope.
|
|
460
|
-
*/
|
|
461
|
-
dispose(): void;
|
|
462
|
-
/** Register a notify-only listener for device-loss. Returns unsubscribe fn. */
|
|
463
|
-
onLost(listener: RendererLostListener): () => void;
|
|
464
|
-
/**
|
|
465
|
-
* Register an RHI creation-time error listener (fix-f2 / charter
|
|
466
|
-
* proposition 4 explicit-failure delivery).
|
|
467
|
-
*
|
|
468
|
-
* @returns unsubscribe fn
|
|
469
|
-
*/
|
|
470
|
-
onError(listener: RendererErrorListener): () => void;
|
|
471
|
-
/**
|
|
472
|
-
* Pull-style health snapshot. Returns the canonical `HealthSnapshot` from the
|
|
473
|
-
* registry's last-fired state, or the alive baseline when never fired. No
|
|
474
|
-
* second store — derived from `HealthListenerRegistry.getLastSnapshot()` per
|
|
475
|
-
* D-4 SSOT.
|
|
476
|
-
*
|
|
477
|
-
* AI users consume via `switch (snap.reason)`; TS narrows `snap.detail` to
|
|
478
|
-
* the per-reason detail type without `as` casts.
|
|
479
|
-
*/
|
|
480
|
-
health(): HealthSnapshot;
|
|
481
|
-
/**
|
|
482
|
-
* Attempt a single idempotent device rebuild (feat-20260622-s5 M3).
|
|
483
|
-
*
|
|
484
|
-
* Only acts in the `device-lost` health state; `alive` returns
|
|
485
|
-
* `recover-not-needed` (also returned after a successful rebuild — the
|
|
486
|
-
* renderer is alive again, so a second recover() is a no-op signal).
|
|
487
|
-
* Rebuild sequence: `gpuStore.destroyAll()` + `context.unconfigure()` ->
|
|
488
|
-
* clear the render-graph pendingDestroy queue (B-2) -> re-acquire device via
|
|
489
|
-
* the same backend pack (`requestAdapter` -> `requestDevice`) -> rebuild
|
|
490
|
-
* Shader/Pipeline -> re-attach the device.lost fan-out -> `fire('alive')`.
|
|
491
|
-
* CPU POD caches (AssetRegistry catalog/payload, pack cache) survive; only
|
|
492
|
-
* GPU resources are released and re-uploaded on the next draw via
|
|
493
|
-
* `ensureResident` (A-AC-12).
|
|
494
|
-
*
|
|
495
|
-
* Async because device acquisition is async (`requestAdapter` /
|
|
496
|
-
* `requestDevice`). A single attempt: no retry loop, no backoff, no timer
|
|
497
|
-
* (A-OOS-1). On failure resolves `Result.err` (`recover-adapter-unavailable`
|
|
498
|
-
* / `recover-device-unavailable`) and leaves `health().reason ===
|
|
499
|
-
* 'device-lost'` — recover() never fakes the renderer back to `alive`
|
|
500
|
-
* (A-AC-07). The host owns the retry cadence (call recover() again after a
|
|
501
|
-
* host-chosen delay).
|
|
502
|
-
*/
|
|
503
|
-
recover(): Promise<Result<void, RecoverError>>;
|
|
504
|
-
/**
|
|
505
|
-
* Push-style health subscription with unsubscribe.
|
|
506
|
-
*
|
|
507
|
-
* Delegates to `HealthListenerRegistry.add(cb)` — late-attach replay fires
|
|
508
|
-
* the callback immediately when a snapshot has already been emitted, so
|
|
509
|
-
* late-subscribing callers still see the current state (AC-07).
|
|
510
|
-
*
|
|
511
|
-
* @returns unsubscribe function
|
|
512
|
-
*/
|
|
513
|
-
onHealthChange(cb: HealthChangeListener): () => void;
|
|
514
|
-
/**
|
|
515
|
-
* feat-20260520-directional-light-shadow-mapping M1c / w8:
|
|
516
|
-
* debugReadback reads the shadow depth texture (depth32float) into a 5-
|
|
517
|
-
* pixel POD { center, corners: {tl,tr,bl,br}, mapSize }. Uses
|
|
518
|
-
* copyTextureToBuffer + mapAsync + Float32Array direct read. Returns null
|
|
519
|
-
* when no shadow RT is allocated (shadow pass hasn't run yet, or no
|
|
520
|
-
* DirectionalLight with castShadow).
|
|
521
|
-
* With cascaded shadows, if the legacy center/corner sentinels are all
|
|
522
|
-
* clear, `center` is the nearest written texel in cascade 0 so the POD
|
|
523
|
-
* still exposes the owner that populated the atlas.
|
|
524
|
-
*
|
|
525
|
-
* AI users consume per-pixel depth values as [0,1] floats; no 24-in-32
|
|
526
|
-
* unorm decode needed (depth32float, D-2 round-3).
|
|
527
|
-
*/
|
|
528
|
-
debugReadback?(): Promise<{
|
|
529
|
-
readonly center: number;
|
|
530
|
-
readonly corners: {
|
|
531
|
-
readonly tl: number;
|
|
532
|
-
readonly tr: number;
|
|
533
|
-
readonly bl: number;
|
|
534
|
-
readonly br: number;
|
|
535
|
-
};
|
|
536
|
-
readonly mapSize: number;
|
|
537
|
-
} | null>;
|
|
538
|
-
/**
|
|
539
|
-
* feat-20260520-directional-light-shadow-mapping M1c / w8:
|
|
540
|
-
* lights.directionalShadow exposes shadow configuration (mapSize,
|
|
541
|
-
* lightSpaceMatrix) for Inspector consumption. Null when the renderer
|
|
542
|
-
* has no active shadow system (shader manifest empty or no
|
|
543
|
-
* DirectionalLight with castShadow).
|
|
544
|
-
*/
|
|
545
|
-
readonly directionalShadow?: {
|
|
546
|
-
readonly mapSize: number;
|
|
547
|
-
readonly lightSpaceMatrix: readonly number[] | null;
|
|
548
|
-
} | null;
|
|
549
|
-
/**
|
|
550
|
-
* feat-20260520-directional-light-shadow-mapping M2 / w14 (AC-12):
|
|
551
|
-
* debugSampleShadowFactor runs a producer-owned GPU probe for world-space
|
|
552
|
-
* positions. It reads the same shadow atlas and PCF path as the directional
|
|
553
|
-
* receiver, then returns the factor plus the selected cascade and the center
|
|
554
|
-
* atlas texel's raw depth. The extra fields keep the forensic readback tied
|
|
555
|
-
* to the actual sampled resource rather than a CPU reconstruction.
|
|
556
|
-
*
|
|
557
|
-
* Returns null when the probe pipeline is not compiled (empty shader
|
|
558
|
-
* manifest). When no shadow caster is active (lightSpaceMatrix absent),
|
|
559
|
-
* returns all-1.0 (fully lit) — the caller can distinguish "no shadow
|
|
560
|
-
* data" from "probe unavailable".
|
|
561
|
-
* Each result carries `shadowFactor` (1 = lit, 0 = fully shadowed),
|
|
562
|
-
* `sampledDepth` (the center texel loaded from the active atlas),
|
|
563
|
-
* `cascadeIndex` (0..3, or -1 when no cascade contains the position), and
|
|
564
|
-
* `receiverDepth` (the projected depth used by the probe comparison), and
|
|
565
|
-
* `bias` (the exact depth bias used by the probe comparison).
|
|
566
|
-
*/
|
|
567
|
-
debugSampleShadowFactor?(worldPositions: ReadonlyArray<readonly [number, number, number]>, options?: {
|
|
568
|
-
/** Surface normals for the supplied receiver positions. Defaults to floor-up. */
|
|
569
|
-
readonly surfaceNormals?: ReadonlyArray<readonly [number, number, number]>;
|
|
570
|
-
}): Promise<ReadonlyArray<{
|
|
571
|
-
readonly shadowFactor: number;
|
|
572
|
-
readonly sampledDepth: number;
|
|
573
|
-
readonly cascadeIndex: number;
|
|
574
|
-
readonly receiverDepth: number;
|
|
575
|
-
readonly bias: number;
|
|
576
|
-
}> | null>;
|
|
577
|
-
/**
|
|
578
|
-
* feat-20260528-frustum-culling M5 / w14: per-frame frustum-culling
|
|
579
|
-
* statistics collected during the extract stage. `culled` is the count
|
|
580
|
-
* of entities removed from renderables by frustum culling; `total` is
|
|
581
|
-
* the count that reached the culling decision point. Both are zero
|
|
582
|
-
* before the first `draw([world], { cameraOwner: 0, resourceOwner: 0 })` or when no `MeshRenderer` entities
|
|
583
|
-
* are in the world.
|
|
584
|
-
*/
|
|
585
|
-
readonly frustumStats: {
|
|
586
|
-
readonly culled: number;
|
|
587
|
-
readonly total: number;
|
|
588
|
-
};
|
|
589
|
-
/**
|
|
590
|
-
* Per-frame candidate entities rejected by author visibility before resource
|
|
591
|
-
* parsing. Zero before the first draw or when no candidates are hidden.
|
|
592
|
-
*/
|
|
593
|
-
readonly visibilityStats: {
|
|
594
|
-
readonly explicitlyHidden: number;
|
|
595
|
-
};
|
|
596
|
-
/** Persistent CPU scene cursor, rebuild, and delta counters. */
|
|
597
|
-
readonly renderScene: RenderSceneInspection;
|
|
598
|
-
/** Mesh-slot provenance and active structured diagnostics from the last frame. */
|
|
599
|
-
readonly meshMaterialBindings: readonly MeshMaterialBindingObservation[];
|
|
600
|
-
/**
|
|
601
|
-
* feat-20260531-bloom-first-declarative-render-graph-pass M4 fix-up w19:
|
|
602
|
-
* per-frame render-graph pass names in declaration order. Empty array
|
|
603
|
-
* before the first `draw([world], { cameraOwner: 0, resourceOwner: 0 })` call; populated lazily when the
|
|
604
|
-
* per-frame graph is built. Read-only introspection surface so smoke
|
|
605
|
-
* tests can assert the declarative pass chain is wired without reaching
|
|
606
|
-
* into engine internals.
|
|
607
|
-
*/
|
|
608
|
-
readonly perFramePassNames: readonly string[];
|
|
609
|
-
/**
|
|
610
|
-
* Return the host-owned lifecycle snapshot for every registered feature.
|
|
611
|
-
*
|
|
612
|
-
* Consumers branch on `status` and `latestError?.code`; they do not parse
|
|
613
|
-
* log text or reach into the feature host. A failed feature retries on the
|
|
614
|
-
* next eligible frame, a disabled feature waits for `recover()`, and a
|
|
615
|
-
* disposed feature is terminal. Pipeline switches preserve registrations
|
|
616
|
-
* while rebuilding the active graph.
|
|
617
|
-
*/
|
|
618
|
-
renderFeatureDiagnostics(): readonly RenderFeatureDiagnostics[];
|
|
619
|
-
/** Subscribe to feature lifecycle changes without polling every render frame. */
|
|
620
|
-
subscribeRenderFeatureDiagnostics(listener: () => void): () => void;
|
|
621
|
-
/** Subscribe after a `draw()` invocation reaches queue submission. */
|
|
622
|
-
subscribeFrameEnd(listener: () => void): () => void;
|
|
623
|
-
/**
|
|
624
|
-
* Install a feature after the renderer is ready. The renderer keeps feature
|
|
625
|
-
* identity and lifecycle ownership in the same host as boot-time features;
|
|
626
|
-
* installing the same object twice is a no-op, while a different object with
|
|
627
|
-
* the same identity returns `render-feature-registration-conflict`.
|
|
628
|
-
*/
|
|
629
|
-
installRenderFeature(feature: RenderFeature<unknown>): Promise<RenderResult<void, RenderError>>;
|
|
630
|
-
/** Wait for submitted GPU work, then reversibly remove one installed feature. */
|
|
631
|
-
uninstallRenderFeature(feature: RenderFeature<unknown>): Promise<RenderResult<void, RenderError>>;
|
|
632
|
-
/**
|
|
633
|
-
* feat-20260531-per-frame-bind-group-cache M1 / w4: per-frame
|
|
634
|
-
* createBindGroup counter. Reset to 0 on every `draw([world], { cameraOwner: 0, resourceOwner: 0 })` call,
|
|
635
|
-
* bumped per cache-miss in the record stage. Stable-frame AC-03
|
|
636
|
-
* asserts `createBindGroup === 0` when all bind groups are cached.
|
|
637
|
-
* AI users read this getter to verify cache effectiveness without
|
|
638
|
-
* inspecting internal cache state.
|
|
639
|
-
*/
|
|
640
|
-
readonly bindGroupCounts: {
|
|
641
|
-
readonly createBindGroup: number;
|
|
642
|
-
readonly keys: readonly string[];
|
|
643
|
-
};
|
|
644
|
-
/**
|
|
645
|
-
* feat-20260601-customizable-render-pipeline-seam M1 / w8: register a render-pipeline
|
|
646
|
-
* logic under `id` (engine builtins use the `forgeax::` prefix; user pipelines use
|
|
647
|
-
* `<package>::<id>`). Same-id re-register throws `PipelineError`
|
|
648
|
-
* (`'pipeline-already-registered'`) - programmer-error fail-fast. Sits alongside
|
|
649
|
-
* `shader` / `assets` / `store` as a public capability surface (charter F1 IDE
|
|
650
|
-
* autocomplete on `renderer.`). Forwards 1:1 to the RenderSystem layer.
|
|
651
|
-
*/
|
|
652
|
-
registerPipeline(id: string, impl: RenderPipeline): void;
|
|
653
|
-
/**
|
|
654
|
-
* feat-20260601-customizable-render-pipeline-seam M1 / w8 (D-19): install the pipeline
|
|
655
|
-
* described by a `RenderPipelineAsset` POD (built inline, no registration step). On an
|
|
656
|
-
* unregistered `pipelineId` returns `Result.err(PipelineError{code:'pipeline-not-found'})`;
|
|
657
|
-
* AI users consume `err.code` by property access. On success the next `draw` rebuilds the
|
|
658
|
-
* per-frame graph through the newly installed pipeline (runtime hot-swap).
|
|
659
|
-
*/
|
|
660
|
-
installPipeline(asset: RenderPipelineAsset): Result<() => void, PipelineError>;
|
|
661
|
-
/**
|
|
662
|
-
* feat-20260604-resource-owning-render-graph-and-fullscreen-postpr M2 / F-2 fix-up:
|
|
663
|
-
* fullscreen post-process registration channel. `postProcess.register(id, entry)`
|
|
664
|
-
* registers a `PostProcessShaderEntry` under `id`; the dispatcher in
|
|
665
|
-
* `addFullscreenPass({shader: id})` looks it up via `runtime.lookupPostProcess`.
|
|
666
|
-
* Same-id re-register throws `PostProcessError({code:'post-process-already-registered'})`
|
|
667
|
-
* (programmer-error fail-fast, mirrors `registerPipeline`). An unregistered id
|
|
668
|
-
* referenced by `addFullscreenPass` throws `PostProcessError({code:'post-process-not-found'})`
|
|
669
|
-
* from the dispatcher. Sits alongside `registerPipeline` / `installPipeline` as a
|
|
670
|
-
* public capability surface (charter F1: IDE autocomplete on `renderer.postProcess.`).
|
|
671
|
-
* Forwards 1:1 to the RenderSystem layer (plan-strategy D-D).
|
|
672
|
-
*/
|
|
673
|
-
readonly postProcess: {
|
|
674
|
-
register(id: string, entry: import('./fullscreen-post-process-pass').PostProcessShaderEntry): () => void;
|
|
675
|
-
};
|
|
676
|
-
/**
|
|
677
|
-
* feat-20260612-skin-palette-per-frame-upload M1 / m1-1: test-only access
|
|
678
|
-
* hatch returning the internal `PipelineState` closure variable (or `null`
|
|
679
|
-
* before `await renderer.ready` settles). Mirrors the existing
|
|
680
|
-
* `_internal_getRawDevice` pattern so unit tests can assert PipelineState
|
|
681
|
-
* field shape (e.g. `skinPaletteAllocator` presence after stub retirement)
|
|
682
|
-
* without re-routing through `RenderSystem`. Public surface stays opaque:
|
|
683
|
-
* the return is widened to `unknown`, callers cast at the test boundary.
|
|
684
|
-
* @internal
|
|
685
|
-
*/
|
|
686
|
-
_internal_getPipelineState(): unknown;
|
|
687
|
-
}
|
|
688
|
-
/**
|
|
689
|
-
* Closed union of renderer health states.
|
|
690
|
-
*
|
|
691
|
-
* 3 members per plan-strategy D-1:
|
|
692
|
-
* - `'alive'` — healthy baseline (registry not yet fired)
|
|
693
|
-
* - `'device-lost'` — device loss detected
|
|
694
|
-
* - `'internal-fault'` — internal renderer fault
|
|
695
|
-
*
|
|
696
|
-
* AI users exhaustively switch on `HealthReason` without default; TS guards
|
|
697
|
-
* completeness.
|
|
698
|
-
*/
|
|
699
|
-
export type HealthReason = 'alive' | 'device-lost' | 'internal-fault';
|
|
700
|
-
/** Detail for `HealthReason 'device-lost'`. */
|
|
701
|
-
export interface HealthDetailDeviceLost {
|
|
702
|
-
readonly lostReason: 'unknown' | 'destroyed';
|
|
703
|
-
readonly message: string;
|
|
704
|
-
}
|
|
705
|
-
/** Detail for `HealthReason 'internal-fault'`. */
|
|
706
|
-
export interface HealthDetailInternalFault {
|
|
707
|
-
readonly message: string;
|
|
708
|
-
}
|
|
709
|
-
/**
|
|
710
|
-
* Pull-style health snapshot — discriminated union by `reason`.
|
|
711
|
-
*
|
|
712
|
-
* Per plan-strategy D-2: `switch(snap.reason)` narrows `snap.detail` to the
|
|
713
|
-
* per-reason detail type automatically, with zero `as` casts. `alive` has no
|
|
714
|
-
* `.detail` field; `device-lost` / `internal-fault` have a required `.detail`
|
|
715
|
-
* of the respective variant.
|
|
716
|
-
*
|
|
717
|
-
* - `recoverable` — derived from `reason` via `deriveRecoverable`
|
|
718
|
-
*/
|
|
719
|
-
export type HealthSnapshot = {
|
|
720
|
-
readonly reason: 'alive';
|
|
721
|
-
readonly recoverable: boolean;
|
|
722
|
-
} | {
|
|
723
|
-
readonly reason: 'device-lost';
|
|
724
|
-
readonly detail: HealthDetailDeviceLost;
|
|
725
|
-
readonly recoverable: boolean;
|
|
726
|
-
} | {
|
|
727
|
-
readonly reason: 'internal-fault';
|
|
728
|
-
readonly detail: HealthDetailInternalFault;
|
|
729
|
-
readonly recoverable: boolean;
|
|
730
|
-
};
|
|
731
|
-
/**
|
|
732
|
-
* Maps `HealthReason` to recoverable boolean per the derive table
|
|
733
|
-
* (requirements section "range"):
|
|
734
|
-
*
|
|
735
|
-
* | reason | recoverable |
|
|
736
|
-
* |:---------------|:-----------|
|
|
737
|
-
* | `'alive'` | false |
|
|
738
|
-
* | `'device-lost'`| true |
|
|
739
|
-
* | `'internal-fault'` | false |
|
|
740
|
-
*/
|
|
741
|
-
/** Callback type for `Renderer.onHealthChange`. */
|
|
742
|
-
export type HealthChangeListener = (snapshot: HealthSnapshot) => void;
|
|
743
|
-
/**
|
|
744
|
-
* Internal helper: a tiny notify-only event registry. Not exported on the
|
|
745
|
-
* public surface (the explicit `./internal` export is locked in package.json).
|
|
746
|
-
*/
|
|
747
|
-
/**
|
|
748
|
-
* Internal helper: fan-out registry for the `Renderer.onError` channel (fix-f2
|
|
749
|
-
* delivers the charter proposition 4 explicit-failure red line).
|
|
750
|
-
*
|
|
751
|
-
* Difference from `LostListenerRegistry`: this registry fans out structured
|
|
752
|
-
* structured error objects from the fan-out families composed in
|
|
753
|
-
* `RendererError` — both carrying the `.code` closed-union discriminant + the
|
|
754
|
-
* three fields `.expected` / `.hint` + optional `.detail`. Late-attach replay
|
|
755
|
-
* behavior is identical — errors that fired before dispose are immediately
|
|
756
|
-
* replayed to any subsequent `add`.
|
|
757
|
-
*/
|
|
758
|
-
/**
|
|
759
|
-
* Internal helper: fan-out registry for the `Renderer.onHealthChange` channel
|
|
760
|
-
* (feat-20260621-renderer-health-recover-skeleton M1).
|
|
761
|
-
*
|
|
762
|
-
* 3rd isomorph of the `LostListenerRegistry` / `RhiErrorListenerRegistry` pattern
|
|
763
|
-
* (plan-strategy D-5 / OOS-5: do not extract a generic base class). Replicates:
|
|
764
|
-
* - `fired` / `lastSnapshot` for late-attach replay
|
|
765
|
-
* - `add(listener)` returns unsubscribe function
|
|
766
|
-
* - `fire(snapshot)` with try/catch isolation (console.error on throw)
|
|
767
|
-
* - `clear()` detaches listeners, does not reset `fired` / `lastSnapshot`
|
|
768
|
-
* - `getLastSnapshot()` — public getter returning last fired snapshot or
|
|
769
|
-
* `{ reason: 'alive', recoverable: false }` baseline
|
|
770
|
-
*/
|
|
771
|
-
//# sourceMappingURL=renderer.d.ts.map
|