@forgeax/engine-render 0.0.0-dev.8d955ade1c79
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/LICENSE +202 -0
- package/README.md +647 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/__tests__/authoring-path.unit.test.d.ts +2 -0
- package/dist/__tests__/authoring-path.unit.test.d.ts.map +1 -0
- package/dist/__tests__/backend-selection-rhi-capture.test-d.d.ts +2 -0
- package/dist/__tests__/backend-selection-rhi-capture.test-d.d.ts.map +1 -0
- package/dist/__tests__/callback-inference.test-d.d.ts +2 -0
- package/dist/__tests__/callback-inference.test-d.d.ts.map +1 -0
- package/dist/__tests__/cluster-binner.test.d.ts +2 -0
- package/dist/__tests__/cluster-binner.test.d.ts.map +1 -0
- package/dist/__tests__/cluster-grid-default-surface.unit.test.d.ts +2 -0
- package/dist/__tests__/cluster-grid-default-surface.unit.test.d.ts.map +1 -0
- package/dist/__tests__/construct-renderer-identity.unit.test.d.ts +2 -0
- package/dist/__tests__/construct-renderer-identity.unit.test.d.ts.map +1 -0
- 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__/direct-extract-consumer-contract.test-d.d.ts +2 -0
- package/dist/__tests__/direct-extract-consumer-contract.test-d.d.ts.map +1 -0
- package/dist/__tests__/direct-light-snapshot.unit.test.d.ts +2 -0
- package/dist/__tests__/direct-light-snapshot.unit.test.d.ts.map +1 -0
- package/dist/__tests__/factory-contract.integration.test.d.ts +2 -0
- package/dist/__tests__/factory-contract.integration.test.d.ts.map +1 -0
- package/dist/__tests__/fallback-row-stride-surface.unit.test.d.ts +2 -0
- package/dist/__tests__/fallback-row-stride-surface.unit.test.d.ts.map +1 -0
- package/dist/__tests__/frame-observation.contract.test.d.ts +2 -0
- package/dist/__tests__/frame-observation.contract.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__/glyph-text-layout-recovery.unit.test.d.ts +2 -0
- package/dist/__tests__/glyph-text-layout-recovery.unit.test.d.ts.map +1 -0
- package/dist/__tests__/gpu-driven-indirect-raster-evidence.d.ts +6 -0
- package/dist/__tests__/gpu-driven-indirect-raster-evidence.d.ts.map +1 -0
- package/dist/__tests__/gpu-driven-indirect-raster.browser.test.d.ts +2 -0
- package/dist/__tests__/gpu-driven-indirect-raster.browser.test.d.ts.map +1 -0
- package/dist/__tests__/gpu-driven-indirect-raster.dawn.test.d.ts +2 -0
- package/dist/__tests__/gpu-driven-indirect-raster.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/gpu-driven-production.integration.test.d.ts +2 -0
- package/dist/__tests__/gpu-driven-production.integration.test.d.ts.map +1 -0
- package/dist/__tests__/gpu-driven-scaling.unit.test.d.ts +2 -0
- package/dist/__tests__/gpu-driven-scaling.unit.test.d.ts.map +1 -0
- package/dist/__tests__/gpu-driven-view-gpu-evidence.d.ts +18 -0
- package/dist/__tests__/gpu-driven-view-gpu-evidence.d.ts.map +1 -0
- package/dist/__tests__/gpu-driven-view-graph.integration.test.d.ts +2 -0
- package/dist/__tests__/gpu-driven-view-graph.integration.test.d.ts.map +1 -0
- package/dist/__tests__/gpu-driven-view-reference.d.ts +15 -0
- package/dist/__tests__/gpu-driven-view-reference.d.ts.map +1 -0
- package/dist/__tests__/gpu-driven-view.browser.test.d.ts +2 -0
- package/dist/__tests__/gpu-driven-view.browser.test.d.ts.map +1 -0
- package/dist/__tests__/gpu-driven-view.dawn.test.d.ts +2 -0
- package/dist/__tests__/gpu-driven-view.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/gpu-driven-view.unit.test.d.ts +2 -0
- package/dist/__tests__/gpu-driven-view.unit.test.d.ts.map +1 -0
- package/dist/__tests__/gpu-resource-store-stride.unit.test.d.ts +2 -0
- package/dist/__tests__/gpu-resource-store-stride.unit.test.d.ts.map +1 -0
- package/dist/__tests__/gpu-scene-render-graph-gpu.d.ts +7 -0
- package/dist/__tests__/gpu-scene-render-graph-gpu.d.ts.map +1 -0
- package/dist/__tests__/gpu-scene-render-graph.browser.test.d.ts +2 -0
- package/dist/__tests__/gpu-scene-render-graph.browser.test.d.ts.map +1 -0
- package/dist/__tests__/gpu-scene-render-graph.dawn.test.d.ts +2 -0
- package/dist/__tests__/gpu-scene-render-graph.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/gpu-scene-schema.unit.test.d.ts +2 -0
- package/dist/__tests__/gpu-scene-schema.unit.test.d.ts.map +1 -0
- package/dist/__tests__/gpu-scene.dawn.test.d.ts +2 -0
- package/dist/__tests__/gpu-scene.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/gpu-scene.unit.test.d.ts +2 -0
- package/dist/__tests__/gpu-scene.unit.test.d.ts.map +1 -0
- 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__/infinite-grid-no-vertex-probe.unit.test.d.ts +2 -0
- package/dist/__tests__/infinite-grid-no-vertex-probe.unit.test.d.ts.map +1 -0
- package/dist/__tests__/injection-kind-owner.test-d.d.ts +2 -0
- package/dist/__tests__/injection-kind-owner.test-d.d.ts.map +1 -0
- package/dist/__tests__/ktx2-basis-gpu-consumer.dawn.test.d.ts +2 -0
- package/dist/__tests__/ktx2-basis-gpu-consumer.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/light-buffer-layout.unit.test.d.ts +2 -0
- package/dist/__tests__/light-buffer-layout.unit.test.d.ts.map +1 -0
- package/dist/__tests__/material-contract-inventory.unit.test.d.ts +2 -0
- package/dist/__tests__/material-contract-inventory.unit.test.d.ts.map +1 -0
- package/dist/__tests__/material-cooked-projection.unit.test.d.ts +2 -0
- package/dist/__tests__/material-cooked-projection.unit.test.d.ts.map +1 -0
- package/dist/__tests__/material-snapshot-mutation.integration.test.d.ts +2 -0
- package/dist/__tests__/material-snapshot-mutation.integration.test.d.ts.map +1 -0
- package/dist/__tests__/material-static-dynamic-route.unit.test.d.ts +2 -0
- package/dist/__tests__/material-static-dynamic-route.unit.test.d.ts.map +1 -0
- package/dist/__tests__/material-stride-surface.unit.test.d.ts +2 -0
- package/dist/__tests__/material-stride-surface.unit.test.d.ts.map +1 -0
- package/dist/__tests__/mesh-buffer-usage-surface.unit.test.d.ts +2 -0
- package/dist/__tests__/mesh-buffer-usage-surface.unit.test.d.ts.map +1 -0
- package/dist/__tests__/mesh-material-bindings.unit.test.d.ts +2 -0
- package/dist/__tests__/mesh-material-bindings.unit.test.d.ts.map +1 -0
- package/dist/__tests__/mesh-stride-surface.unit.test.d.ts +2 -0
- package/dist/__tests__/mesh-stride-surface.unit.test.d.ts.map +1 -0
- package/dist/__tests__/morph-culling-reentry.dawn.test.d.ts +2 -0
- package/dist/__tests__/morph-culling-reentry.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/morph-feature-gpu-work.integration.test.d.ts +2 -0
- package/dist/__tests__/morph-feature-gpu-work.integration.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__/morph-visual-evidence.integration.test.d.ts +2 -0
- package/dist/__tests__/morph-visual-evidence.integration.test.d.ts.map +1 -0
- package/dist/__tests__/nineslice-handle-surface.unit.test.d.ts +2 -0
- package/dist/__tests__/nineslice-handle-surface.unit.test.d.ts.map +1 -0
- package/dist/__tests__/post-process-error-policy-owner.unit.test.d.ts +2 -0
- package/dist/__tests__/post-process-error-policy-owner.unit.test.d.ts.map +1 -0
- package/dist/__tests__/prepared-buffer-kind-owner.test-d.d.ts +2 -0
- package/dist/__tests__/prepared-buffer-kind-owner.test-d.d.ts.map +1 -0
- package/dist/__tests__/prepared-graphics-capability.unit.test.d.ts +2 -0
- package/dist/__tests__/prepared-graphics-capability.unit.test.d.ts.map +1 -0
- package/dist/__tests__/prepared-graphics-generation.unit.test.d.ts +2 -0
- package/dist/__tests__/prepared-graphics-generation.unit.test.d.ts.map +1 -0
- package/dist/__tests__/prepared-graphics-lifecycle.unit.test.d.ts +2 -0
- package/dist/__tests__/prepared-graphics-lifecycle.unit.test.d.ts.map +1 -0
- package/dist/__tests__/prepared-graphics-pipeline-warmup.unit.test.d.ts +2 -0
- package/dist/__tests__/prepared-graphics-pipeline-warmup.unit.test.d.ts.map +1 -0
- package/dist/__tests__/prepared-graphics-resolver.unit.test.d.ts +2 -0
- package/dist/__tests__/prepared-graphics-resolver.unit.test.d.ts.map +1 -0
- package/dist/__tests__/prepared-graphics-snapshot.unit.test.d.ts +2 -0
- package/dist/__tests__/prepared-graphics-snapshot.unit.test.d.ts.map +1 -0
- package/dist/__tests__/prepared-graphics-store.unit.test.d.ts +2 -0
- package/dist/__tests__/prepared-graphics-store.unit.test.d.ts.map +1 -0
- package/dist/__tests__/prepared-graphics-validation.unit.test.d.ts +2 -0
- package/dist/__tests__/prepared-graphics-validation.unit.test.d.ts.map +1 -0
- package/dist/__tests__/profiler-default-off.test.d.ts +2 -0
- package/dist/__tests__/profiler-default-off.test.d.ts.map +1 -0
- package/dist/__tests__/profiler-phase-catalog.test.d.ts +2 -0
- package/dist/__tests__/profiler-phase-catalog.test.d.ts.map +1 -0
- package/dist/__tests__/profiler-phase-integration.test.d.ts +2 -0
- package/dist/__tests__/profiler-phase-integration.test.d.ts.map +1 -0
- package/dist/__tests__/profiler-phase-token.test.d.ts +2 -0
- package/dist/__tests__/profiler-phase-token.test.d.ts.map +1 -0
- package/dist/__tests__/public-surface.test-d.d.ts +2 -0
- package/dist/__tests__/public-surface.test-d.d.ts.map +1 -0
- package/dist/__tests__/recover-error-policy-owner.unit.test.d.ts +2 -0
- package/dist/__tests__/recover-error-policy-owner.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-error-code-owner.test-d.d.ts +2 -0
- package/dist/__tests__/render-error-code-owner.test-d.d.ts.map +1 -0
- package/dist/__tests__/render-error-detail-ssot.test-d.d.ts +2 -0
- package/dist/__tests__/render-error-detail-ssot.test-d.d.ts.map +1 -0
- package/dist/__tests__/render-error-exhaustive.test-d.d.ts +2 -0
- package/dist/__tests__/render-error-exhaustive.test-d.d.ts.map +1 -0
- package/dist/__tests__/render-feature-assembly.test-d.d.ts +2 -0
- package/dist/__tests__/render-feature-assembly.test-d.d.ts.map +1 -0
- package/dist/__tests__/render-feature-context.test-d.d.ts +2 -0
- package/dist/__tests__/render-feature-context.test-d.d.ts.map +1 -0
- package/dist/__tests__/render-feature-contract.test-d.d.ts +2 -0
- package/dist/__tests__/render-feature-contract.test-d.d.ts.map +1 -0
- package/dist/__tests__/render-feature-diagnostics.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-diagnostics.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-docs.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-docs.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-errors.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-errors.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-gpu-work.integration.test.d.ts +2 -0
- package/dist/__tests__/render-feature-gpu-work.integration.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__/render-feature-prepared-diagnostics.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-prepared-diagnostics.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-prepared-errors.test-d.d.ts +2 -0
- package/dist/__tests__/render-feature-prepared-errors.test-d.d.ts.map +1 -0
- package/dist/__tests__/render-feature-prepared-graphics-docs.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-prepared-graphics-docs.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-prepared-graphics-isolation.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-prepared-graphics-isolation.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-prepared-graphics-negative.test-d.d.ts +2 -0
- package/dist/__tests__/render-feature-prepared-graphics-negative.test-d.d.ts.map +1 -0
- package/dist/__tests__/render-feature-prepared-graphics.test-d.d.ts +2 -0
- package/dist/__tests__/render-feature-prepared-graphics.test-d.d.ts.map +1 -0
- package/dist/__tests__/render-feature-prepared-graphics.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-prepared-graphics.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-public-surface.test-d.d.ts +2 -0
- package/dist/__tests__/render-feature-public-surface.test-d.d.ts.map +1 -0
- package/dist/__tests__/render-feature-retry.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-retry.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-scheduling.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-scheduling.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-stage-failed-policy-owner.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-stage-failed-policy-owner.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-stage-fault-recovery.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-stage-fault-recovery.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-visibility-context.test-d.d.ts +2 -0
- package/dist/__tests__/render-feature-visibility-context.test-d.d.ts.map +1 -0
- package/dist/__tests__/render-feature-visibility-context.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-visibility-context.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-zero-work.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-zero-work.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-graph-compute-raster-gpu.d.ts +7 -0
- package/dist/__tests__/render-graph-compute-raster-gpu.d.ts.map +1 -0
- package/dist/__tests__/render-graph-compute-raster.browser.test.d.ts +2 -0
- package/dist/__tests__/render-graph-compute-raster.browser.test.d.ts.map +1 -0
- package/dist/__tests__/render-graph-compute-raster.dawn.test.d.ts +2 -0
- package/dist/__tests__/render-graph-compute-raster.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/render-graph-hzb-gpu.d.ts +7 -0
- package/dist/__tests__/render-graph-hzb-gpu.d.ts.map +1 -0
- package/dist/__tests__/render-graph-hzb.browser.test.d.ts +2 -0
- package/dist/__tests__/render-graph-hzb.browser.test.d.ts.map +1 -0
- package/dist/__tests__/render-graph-hzb.dawn.test.d.ts +2 -0
- package/dist/__tests__/render-graph-hzb.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/render-graph-primitives.unit.test.d.ts +2 -0
- package/dist/__tests__/render-graph-primitives.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-graph-storage-indirect-gpu.d.ts +12 -0
- package/dist/__tests__/render-graph-storage-indirect-gpu.d.ts.map +1 -0
- package/dist/__tests__/render-graph-storage-indirect.browser.test.d.ts +2 -0
- package/dist/__tests__/render-graph-storage-indirect.browser.test.d.ts.map +1 -0
- package/dist/__tests__/render-graph-storage-indirect.dawn.test.d.ts +2 -0
- package/dist/__tests__/render-graph-storage-indirect.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/render-scene-projection.unit.test.d.ts +2 -0
- package/dist/__tests__/render-scene-projection.unit.test.d.ts.map +1 -0
- package/dist/__tests__/renderer-factory-material-contract.unit.test.d.ts +2 -0
- package/dist/__tests__/renderer-factory-material-contract.unit.test.d.ts.map +1 -0
- package/dist/__tests__/renderer-lifecycle.integration.test.d.ts +2 -0
- package/dist/__tests__/renderer-lifecycle.integration.test.d.ts.map +1 -0
- package/dist/__tests__/rhi-backend-package-boundary.unit.test.d.ts +2 -0
- package/dist/__tests__/rhi-backend-package-boundary.unit.test.d.ts.map +1 -0
- package/dist/__tests__/scriptable-pack-consumer.test-d.d.ts +2 -0
- package/dist/__tests__/scriptable-pack-consumer.test-d.d.ts.map +1 -0
- package/dist/__tests__/shader-stage-surface.unit.test.d.ts +2 -0
- package/dist/__tests__/shader-stage-surface.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__/ssao-kernel-surface.unit.test.d.ts +2 -0
- package/dist/__tests__/ssao-kernel-surface.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__/surface-configuration.unit.test.d.ts +2 -0
- package/dist/__tests__/surface-configuration.unit.test.d.ts.map +1 -0
- package/dist/__tests__/texture-usage-surface.unit.test.d.ts +2 -0
- package/dist/__tests__/texture-usage-surface.unit.test.d.ts.map +1 -0
- package/dist/__tests__/typed-pipeline-topology.unit.test.d.ts +2 -0
- package/dist/__tests__/typed-pipeline-topology.unit.test.d.ts.map +1 -0
- package/dist/__tests__/urp-pipeline-targets.unit.test.d.ts +2 -0
- package/dist/__tests__/urp-pipeline-targets.unit.test.d.ts.map +1 -0
- package/dist/__tests__/urp-pipeline.unit.test.d.ts +2 -0
- package/dist/__tests__/urp-pipeline.unit.test.d.ts.map +1 -0
- package/dist/__tests__/vertex-color-pipeline.unit.test.d.ts +2 -0
- package/dist/__tests__/vertex-color-pipeline.unit.test.d.ts.map +1 -0
- package/dist/__tests__/vertex-layout-consumer.unit.test.d.ts +2 -0
- package/dist/__tests__/vertex-layout-consumer.unit.test.d.ts.map +1 -0
- package/dist/__tests__/visibility-diagnostics.integration.test.d.ts +2 -0
- package/dist/__tests__/visibility-diagnostics.integration.test.d.ts.map +1 -0
- package/dist/__tests__/visibility-extract.integration.test.d.ts +2 -0
- package/dist/__tests__/visibility-extract.integration.test.d.ts.map +1 -0
- package/dist/__tests__/visibility-extract.perf.test.d.ts +2 -0
- package/dist/__tests__/visibility-extract.perf.test.d.ts.map +1 -0
- package/dist/__tests__/visibility-feature-dedup.integration.test.d.ts +2 -0
- package/dist/__tests__/visibility-feature-dedup.integration.test.d.ts.map +1 -0
- package/dist/__tests__/visibility-hidden-report.unit.test.d.ts +2 -0
- package/dist/__tests__/visibility-hidden-report.unit.test.d.ts.map +1 -0
- package/dist/__tests__/visibility-instances.integration.test.d.ts +2 -0
- package/dist/__tests__/visibility-instances.integration.test.d.ts.map +1 -0
- package/dist/__tests__/visibility-multi-world.integration.test.d.ts +2 -0
- package/dist/__tests__/visibility-multi-world.integration.test.d.ts.map +1 -0
- package/dist/__tests__/visibility-producer-matrix.integration.test.d.ts +2 -0
- package/dist/__tests__/visibility-producer-matrix.integration.test.d.ts.map +1 -0
- package/dist/__tests__/visibility-producer-matrix.unit.test.d.ts +2 -0
- package/dist/__tests__/visibility-producer-matrix.unit.test.d.ts.map +1 -0
- package/dist/__tests__/visibility-public-surface.test-d.d.ts +2 -0
- package/dist/__tests__/visibility-public-surface.test-d.d.ts.map +1 -0
- package/dist/__tests__/visibility-resolver.unit.test.d.ts +2 -0
- package/dist/__tests__/visibility-resolver.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/__tests__/visibility-snapshot-contract.unit.test.d.ts +2 -0
- package/dist/__tests__/visibility-snapshot-contract.unit.test.d.ts.map +1 -0
- package/dist/__tests__/vocabulary.unit.test.d.ts +2 -0
- package/dist/__tests__/vocabulary.unit.test.d.ts.map +1 -0
- package/dist/assembly/backend-contract.d.ts +37 -0
- package/dist/assembly/backend-contract.d.ts.map +1 -0
- package/dist/assembly/factory.d.ts +207 -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/assembly/material/assembly.d.ts +21 -0
- package/dist/assembly/material/assembly.d.ts.map +1 -0
- package/dist/assembly/material/pipeline-projection.d.ts +30 -0
- package/dist/assembly/material/pipeline-projection.d.ts.map +1 -0
- package/dist/assets/asset-decoders.d.ts +5 -0
- package/dist/assets/asset-decoders.d.ts.map +1 -0
- package/dist/assets/render-asset-port.d.ts +17 -0
- package/dist/assets/render-asset-port.d.ts.map +1 -0
- package/dist/assets/resolve-render-asset.d.ts +6 -0
- package/dist/assets/resolve-render-asset.d.ts.map +1 -0
- package/dist/authoring.d.ts +12 -0
- package/dist/authoring.d.ts.map +1 -0
- package/dist/authoring.mjs +27 -0
- package/dist/authoring.mjs.map +1 -0
- 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/cluster-binner.d.ts +152 -0
- package/dist/cluster-binner.d.ts.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/__tests__/schema-parity.unit.test.d.ts +2 -0
- package/dist/components/__tests__/schema-parity.unit.test.d.ts.map +1 -0
- package/dist/components/__tests__/visibility-schema.unit.test.d.ts +2 -0
- package/dist/components/__tests__/visibility-schema.unit.test.d.ts.map +1 -0
- package/dist/components/camera.d.ts +311 -0
- package/dist/components/camera.d.ts.map +1 -0
- package/dist/components/directional-light.d.ts +76 -0
- package/dist/components/directional-light.d.ts.map +1 -0
- package/dist/components/glyph-text.d.ts +26 -0
- package/dist/components/glyph-text.d.ts.map +1 -0
- package/dist/components/index.d.ts +24 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/instances.d.ts +41 -0
- package/dist/components/instances.d.ts.map +1 -0
- package/dist/components/layer.d.ts +34 -0
- package/dist/components/layer.d.ts.map +1 -0
- package/dist/components/light-helpers.d.ts +53 -0
- package/dist/components/light-helpers.d.ts.map +1 -0
- package/dist/components/lines.d.ts +5 -0
- package/dist/components/lines.d.ts.map +1 -0
- package/dist/components/mesh-filter.d.ts +24 -0
- package/dist/components/mesh-filter.d.ts.map +1 -0
- package/dist/components/mesh-renderer.d.ts +33 -0
- package/dist/components/mesh-renderer.d.ts.map +1 -0
- package/dist/components/point-light-shadow.d.ts +27 -0
- package/dist/components/point-light-shadow.d.ts.map +1 -0
- package/dist/components/point-light.d.ts +35 -0
- package/dist/components/point-light.d.ts.map +1 -0
- package/dist/components/points.d.ts +15 -0
- package/dist/components/points.d.ts.map +1 -0
- package/dist/components/post-process-params.d.ts +5 -0
- package/dist/components/post-process-params.d.ts.map +1 -0
- package/dist/components/scene-instance.d.ts +140 -0
- package/dist/components/scene-instance.d.ts.map +1 -0
- 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/sort-key.d.ts +44 -0
- package/dist/components/sort-key.d.ts.map +1 -0
- package/dist/components/spot-light.d.ts +81 -0
- package/dist/components/spot-light.d.ts.map +1 -0
- package/dist/components/sprite-animation.d.ts +74 -0
- package/dist/components/sprite-animation.d.ts.map +1 -0
- package/dist/components/sprite-instances.d.ts +51 -0
- package/dist/components/sprite-instances.d.ts.map +1 -0
- package/dist/components/sprite-playback-mode.d.ts +42 -0
- package/dist/components/sprite-playback-mode.d.ts.map +1 -0
- package/dist/components/sprite-region-override.d.ts +46 -0
- package/dist/components/sprite-region-override.d.ts.map +1 -0
- package/dist/components/tile-layer.d.ts +106 -0
- package/dist/components/tile-layer.d.ts.map +1 -0
- package/dist/components/tilemap.d.ts +25 -0
- package/dist/components/tilemap.d.ts.map +1 -0
- package/dist/components/visibility.d.ts +22 -0
- package/dist/components/visibility.d.ts.map +1 -0
- package/dist/construct-renderer.d.ts +19 -0
- package/dist/construct-renderer.d.ts.map +1 -0
- package/dist/construct-renderer.mjs +27462 -0
- package/dist/construct-renderer.mjs.map +1 -0
- package/dist/debug-draw-glue.d.ts +5 -0
- package/dist/debug-draw-glue.d.ts.map +1 -0
- package/dist/device/device-scope.d.ts +83 -0
- package/dist/device/device-scope.d.ts.map +1 -0
- package/dist/device/gpu-residency.d.ts +337 -0
- 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 +23 -0
- package/dist/engine-metrics.d.ts.map +1 -0
- package/dist/errors/ecs-validation.d.ts +3 -0
- package/dist/errors/ecs-validation.d.ts.map +1 -0
- package/dist/errors/index.d.ts +4 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/recover.d.ts +105 -0
- package/dist/errors/recover.d.ts.map +1 -0
- package/dist/errors/render.d.ts +705 -0
- package/dist/errors/render.d.ts.map +1 -0
- package/dist/extract/visibility.d.ts +26 -0
- package/dist/extract/visibility.d.ts.map +1 -0
- package/dist/features/fullscreen.d.ts +19 -0
- package/dist/features/fullscreen.d.ts.map +1 -0
- package/dist/features/host.d.ts +106 -0
- package/dist/features/host.d.ts.map +1 -0
- package/dist/features/morph/morph-feature.d.ts +79 -0
- package/dist/features/morph/morph-feature.d.ts.map +1 -0
- 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 +117 -0
- package/dist/features/prepared-gpu-work.d.ts.map +1 -0
- package/dist/features/prepared-graphics-store.d.ts +66 -0
- package/dist/features/prepared-graphics-store.d.ts.map +1 -0
- package/dist/features/prepared-graphics.d.ts +215 -0
- package/dist/features/prepared-graphics.d.ts.map +1 -0
- package/dist/features/render-graph-compute.d.ts +13 -0
- package/dist/features/render-graph-compute.d.ts.map +1 -0
- package/dist/features/render-graph-contribution.d.ts +12 -0
- package/dist/features/render-graph-contribution.d.ts.map +1 -0
- package/dist/features/render-graph-raster.d.ts +38 -0
- package/dist/features/render-graph-raster.d.ts.map +1 -0
- package/dist/features/render-graph-resources.d.ts +11 -0
- package/dist/features/render-graph-resources.d.ts.map +1 -0
- package/dist/features/targets.d.ts +32 -0
- package/dist/features/targets.d.ts.map +1 -0
- package/dist/features/types.d.ts +68 -0
- package/dist/features/types.d.ts.map +1 -0
- 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 +157 -0
- package/dist/fullscreen-post-process-pass.d.ts.map +1 -0
- package/dist/glyph-text-layout-system.d.ts +19 -0
- package/dist/glyph-text-layout-system.d.ts.map +1 -0
- package/dist/gpu-driven/batch-topology.d.ts +55 -0
- package/dist/gpu-driven/batch-topology.d.ts.map +1 -0
- package/dist/gpu-driven/production-raster.d.ts +51 -0
- package/dist/gpu-driven/production-raster.d.ts.map +1 -0
- package/dist/gpu-driven/view-gpu.d.ts +85 -0
- package/dist/gpu-driven/view-gpu.d.ts.map +1 -0
- package/dist/gpu-resource.d.ts +73 -0
- package/dist/gpu-resource.d.ts.map +1 -0
- package/dist/gpu-scene-schema.d.ts +78 -0
- package/dist/gpu-scene-schema.d.ts.map +1 -0
- package/dist/gpu-scene.d.ts +55 -0
- package/dist/gpu-scene.d.ts.map +1 -0
- package/dist/gpu-stage.d.ts +4 -0
- package/dist/gpu-stage.d.ts.map +1 -0
- package/dist/gpu-texture-usage.d.ts +6 -0
- package/dist/gpu-texture-usage.d.ts.map +1 -0
- package/dist/gpu-usage.d.ts +9 -0
- package/dist/gpu-usage.d.ts.map +1 -0
- package/dist/hdrp-buffers.d.ts +163 -0
- package/dist/hdrp-buffers.d.ts.map +1 -0
- package/dist/ibl/IblPipelineCache.d.ts +168 -0
- package/dist/ibl/IblPipelineCache.d.ts.map +1 -0
- package/dist/ibl/skylight-bind-group.d.ts +130 -0
- package/dist/ibl/skylight-bind-group.d.ts.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.mjs +169 -0
- package/dist/index.mjs.map +1 -0
- package/dist/inspection-types.d.ts +72 -0
- package/dist/inspection-types.d.ts.map +1 -0
- package/dist/instance-buffer-cache.d.ts +56 -0
- package/dist/instance-buffer-cache.d.ts.map +1 -0
- package/dist/internal.d.ts +2 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.mjs +3 -0
- package/dist/internal.mjs.map +1 -0
- package/dist/lifecycle.d.ts +62 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/light-buffer-layout.d.ts +164 -0
- package/dist/light-buffer-layout.d.ts.map +1 -0
- package/dist/materials.d.ts +47 -0
- package/dist/materials.d.ts.map +1 -0
- package/dist/mesh-material-bindings.d.ts +43 -0
- package/dist/mesh-material-bindings.d.ts.map +1 -0
- package/dist/pbr-pipeline.d.ts +301 -0
- package/dist/pbr-pipeline.d.ts.map +1 -0
- 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 +122 -0
- package/dist/pipeline-builder.d.ts.map +1 -0
- 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 +367 -0
- package/dist/pipeline-spec.d.ts.map +1 -0
- package/dist/plugin.d.ts +4 -0
- package/dist/plugin.d.ts.map +1 -0
- 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 +182 -0
- package/dist/post-process-errors.d.ts.map +1 -0
- package/dist/prepare/prepared-graphics-resolver.d.ts +59 -0
- package/dist/prepare/prepared-graphics-resolver.d.ts.map +1 -0
- package/dist/record/__tests__/material-bg-cache.unit.test.d.ts +2 -0
- package/dist/record/__tests__/material-bg-cache.unit.test.d.ts.map +1 -0
- package/dist/record/__tests__/material-slot-plan.unit.test.d.ts +2 -0
- package/dist/record/__tests__/material-slot-plan.unit.test.d.ts.map +1 -0
- 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/__tests__/video-texture-view.unit.test.d.ts +2 -0
- package/dist/record/__tests__/video-texture-view.unit.test.d.ts.map +1 -0
- package/dist/record/frame-lighting.d.ts +121 -0
- package/dist/record/frame-lighting.d.ts.map +1 -0
- package/dist/record/frame-snapshot.d.ts +429 -0
- package/dist/record/frame-snapshot.d.ts.map +1 -0
- package/dist/record/frame-targets.d.ts +20 -0
- package/dist/record/frame-targets.d.ts.map +1 -0
- package/dist/record/frame.d.ts +71 -0
- package/dist/record/frame.d.ts.map +1 -0
- package/dist/record/helpers.d.ts +102 -0
- package/dist/record/helpers.d.ts.map +1 -0
- package/dist/record/main-pass-geometry.d.ts +28 -0
- package/dist/record/main-pass-geometry.d.ts.map +1 -0
- package/dist/record/main-pass-material.d.ts +204 -0
- package/dist/record/main-pass-material.d.ts.map +1 -0
- package/dist/record/main-pass-sprite-draws.d.ts +43 -0
- package/dist/record/main-pass-sprite-draws.d.ts.map +1 -0
- package/dist/record/main-pass.d.ts +20 -0
- package/dist/record/main-pass.d.ts.map +1 -0
- package/dist/record/mesh-ssbo.d.ts +446 -0
- package/dist/record/mesh-ssbo.d.ts.map +1 -0
- 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 +52 -0
- package/dist/record/shadow-pass.d.ts.map +1 -0
- package/dist/record/skybox-post-pass.d.ts +33 -0
- package/dist/record/skybox-post-pass.d.ts.map +1 -0
- package/dist/record/typed-frame-graph.d.ts +35 -0
- package/dist/record/typed-frame-graph.d.ts.map +1 -0
- package/dist/record/view-ubo.d.ts +45 -0
- package/dist/record/view-ubo.d.ts.map +1 -0
- package/dist/render-contract.d.ts +424 -0
- package/dist/render-contract.d.ts.map +1 -0
- package/dist/render-data.d.ts +143 -0
- package/dist/render-data.d.ts.map +1 -0
- package/dist/render-graph-primitives.d.ts +76 -0
- package/dist/render-graph-primitives.d.ts.map +1 -0
- package/dist/render-pipeline.d.ts +110 -0
- package/dist/render-pipeline.d.ts.map +1 -0
- package/dist/render-system-extract.d.ts +868 -0
- package/dist/render-system-extract.d.ts.map +1 -0
- package/dist/render-system.d.ts +125 -0
- package/dist/render-system.d.ts.map +1 -0
- 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 +30 -0
- package/dist/scene-instances/post-spawn-resolve-joints.d.ts.map +1 -0
- package/dist/shadow-atlas.d.ts +117 -0
- package/dist/shadow-atlas.d.ts.map +1 -0
- package/dist/ssao-buffers.d.ts +50 -0
- package/dist/ssao-buffers.d.ts.map +1 -0
- package/dist/ssao-config.d.ts +28 -0
- package/dist/ssao-config.d.ts.map +1 -0
- package/dist/systems/active-camera.d.ts +53 -0
- package/dist/systems/active-camera.d.ts.map +1 -0
- package/dist/systems/pass-selector.d.ts +24 -0
- package/dist/systems/pass-selector.d.ts.map +1 -0
- package/dist/systems/skin-palette-allocator.d.ts +49 -0
- package/dist/systems/skin-palette-allocator.d.ts.map +1 -0
- 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 +112 -0
- package/dist/systems/transparent-sort-config.d.ts.map +1 -0
- package/dist/tilemap-chunk-extract-system.d.ts +143 -0
- package/dist/tilemap-chunk-extract-system.d.ts.map +1 -0
- package/dist/typed-render-graph-primitives.d.ts +57 -0
- package/dist/typed-render-graph-primitives.d.ts.map +1 -0
- package/dist/typed-shadow-passes.d.ts +11 -0
- package/dist/typed-shadow-passes.d.ts.map +1 -0
- package/package.json +94 -0
- package/src/__tests__/authoring-path.unit.test.ts +23 -0
- package/src/__tests__/backend-selection-rhi-capture.test-d.ts +21 -0
- package/src/__tests__/callback-inference.test-d.ts +8 -0
- package/src/__tests__/cluster-binner.test.ts +272 -0
- package/src/__tests__/cluster-grid-default-surface.unit.test.ts +20 -0
- package/src/__tests__/construct-renderer-identity.unit.test.ts +23 -0
- 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 +23 -0
- package/src/__tests__/direct-light-snapshot.unit.test.ts +61 -0
- package/src/__tests__/factory-contract.integration.test.ts +280 -0
- package/src/__tests__/fallback-row-stride-surface.unit.test.ts +15 -0
- package/src/__tests__/frame-observation.contract.test.ts +112 -0
- package/src/__tests__/fullscreen-feature-plan.unit.test.ts +32 -0
- package/src/__tests__/glyph-text-layout-recovery.unit.test.ts +167 -0
- package/src/__tests__/gpu-driven-indirect-raster-evidence.ts +350 -0
- package/src/__tests__/gpu-driven-indirect-raster.browser.test.ts +12 -0
- package/src/__tests__/gpu-driven-indirect-raster.dawn.test.ts +16 -0
- package/src/__tests__/gpu-driven-production.integration.test.ts +436 -0
- package/src/__tests__/gpu-driven-scaling.unit.test.ts +87 -0
- package/src/__tests__/gpu-driven-view-gpu-evidence.ts +271 -0
- package/src/__tests__/gpu-driven-view-graph.integration.test.ts +290 -0
- package/src/__tests__/gpu-driven-view-reference.ts +111 -0
- package/src/__tests__/gpu-driven-view.browser.test.ts +30 -0
- package/src/__tests__/gpu-driven-view.dawn.test.ts +28 -0
- package/src/__tests__/gpu-driven-view.unit.test.ts +199 -0
- package/src/__tests__/gpu-resource-store-stride.unit.test.ts +59 -0
- package/src/__tests__/gpu-scene-render-graph-gpu.ts +308 -0
- package/src/__tests__/gpu-scene-render-graph.browser.test.ts +19 -0
- package/src/__tests__/gpu-scene-render-graph.dawn.test.ts +19 -0
- package/src/__tests__/gpu-scene-schema.unit.test.ts +16 -0
- package/src/__tests__/gpu-scene.dawn.test.ts +205 -0
- package/src/__tests__/gpu-scene.unit.test.ts +147 -0
- package/src/__tests__/ibl/face-uniforms.unit.test.ts +46 -0
- package/src/__tests__/infinite-grid-no-vertex-probe.unit.test.ts +92 -0
- package/src/__tests__/injection-kind-owner.test-d.ts +14 -0
- package/src/__tests__/ktx2-basis-gpu-consumer.dawn.test.ts +728 -0
- package/src/__tests__/light-buffer-layout.unit.test.ts +40 -0
- package/src/__tests__/material-contract-inventory.unit.test.ts +24 -0
- package/src/__tests__/material-cooked-projection.unit.test.ts +150 -0
- package/src/__tests__/material-snapshot-mutation.integration.test.ts +53 -0
- package/src/__tests__/material-static-dynamic-route.unit.test.ts +94 -0
- package/src/__tests__/material-stride-surface.unit.test.ts +32 -0
- package/src/__tests__/mesh-buffer-usage-surface.unit.test.ts +106 -0
- package/src/__tests__/mesh-material-bindings.unit.test.ts +89 -0
- package/src/__tests__/mesh-stride-surface.unit.test.ts +16 -0
- package/src/__tests__/morph-culling-reentry.dawn.test.ts +157 -0
- package/src/__tests__/morph-feature-gpu-work.integration.test.ts +80 -0
- package/src/__tests__/morph-feature-plan.unit.test.ts +53 -0
- package/src/__tests__/morph-visual-evidence.integration.test.ts +80 -0
- package/src/__tests__/nineslice-handle-surface.unit.test.ts +19 -0
- package/src/__tests__/post-process-error-policy-owner.unit.test.ts +201 -0
- package/src/__tests__/prepared-buffer-kind-owner.test-d.ts +29 -0
- package/src/__tests__/prepared-graphics-capability.unit.test.ts +65 -0
- package/src/__tests__/prepared-graphics-generation.unit.test.ts +161 -0
- package/src/__tests__/prepared-graphics-lifecycle.unit.test.ts +138 -0
- package/src/__tests__/prepared-graphics-pipeline-warmup.unit.test.ts +29 -0
- package/src/__tests__/prepared-graphics-resolver.unit.test.ts +285 -0
- package/src/__tests__/prepared-graphics-snapshot.unit.test.ts +105 -0
- package/src/__tests__/prepared-graphics-store.unit.test.ts +154 -0
- package/src/__tests__/prepared-graphics-validation.unit.test.ts +176 -0
- package/src/__tests__/profiler-default-off.test.ts +22 -0
- package/src/__tests__/profiler-phase-catalog.test.ts +66 -0
- package/src/__tests__/profiler-phase-integration.test.ts +62 -0
- package/src/__tests__/profiler-phase-token.test.ts +79 -0
- package/src/__tests__/public-surface.test-d.ts +94 -0
- package/src/__tests__/recover-error-policy-owner.unit.test.ts +107 -0
- package/src/__tests__/render-error-code-owner.test-d.ts +116 -0
- package/src/__tests__/render-error-detail-ssot.test-d.ts +139 -0
- package/src/__tests__/render-error-exhaustive.test-d.ts +110 -0
- package/src/__tests__/render-feature-assembly.test-d.ts +43 -0
- package/src/__tests__/render-feature-context.test-d.ts +57 -0
- package/src/__tests__/render-feature-contract.test-d.ts +49 -0
- package/src/__tests__/render-feature-diagnostics.unit.test.ts +149 -0
- package/src/__tests__/render-feature-docs.unit.test.ts +89 -0
- package/src/__tests__/render-feature-errors.unit.test.ts +47 -0
- package/src/__tests__/render-feature-gpu-work.integration.test.ts +316 -0
- 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 +90 -0
- package/src/__tests__/render-feature-prepared-errors.test-d.ts +79 -0
- package/src/__tests__/render-feature-prepared-graphics-docs.unit.test.ts +80 -0
- package/src/__tests__/render-feature-prepared-graphics-isolation.unit.test.ts +72 -0
- package/src/__tests__/render-feature-prepared-graphics-negative.test-d.ts +36 -0
- package/src/__tests__/render-feature-prepared-graphics.test-d.ts +74 -0
- package/src/__tests__/render-feature-prepared-graphics.unit.test.ts +121 -0
- package/src/__tests__/render-feature-public-surface.test-d.ts +57 -0
- package/src/__tests__/render-feature-retry.unit.test.ts +87 -0
- package/src/__tests__/render-feature-scheduling.unit.test.ts +110 -0
- package/src/__tests__/render-feature-stage-failed-policy-owner.unit.test.ts +137 -0
- package/src/__tests__/render-feature-stage-fault-recovery.unit.test.ts +146 -0
- package/src/__tests__/render-feature-visibility-context.test-d.ts +33 -0
- package/src/__tests__/render-feature-visibility-context.unit.test.ts +37 -0
- package/src/__tests__/render-feature-zero-work.unit.test.ts +76 -0
- package/src/__tests__/render-graph-compute-raster-gpu.ts +342 -0
- package/src/__tests__/render-graph-compute-raster.browser.test.ts +16 -0
- package/src/__tests__/render-graph-compute-raster.dawn.test.ts +22 -0
- package/src/__tests__/render-graph-hzb-gpu.ts +239 -0
- package/src/__tests__/render-graph-hzb.browser.test.ts +16 -0
- package/src/__tests__/render-graph-hzb.dawn.test.ts +23 -0
- package/src/__tests__/render-graph-primitives.unit.test.ts +22 -0
- package/src/__tests__/render-graph-storage-indirect-gpu.ts +162 -0
- package/src/__tests__/render-graph-storage-indirect.browser.test.ts +21 -0
- package/src/__tests__/render-graph-storage-indirect.dawn.test.ts +28 -0
- package/src/__tests__/render-scene-projection.unit.test.ts +168 -0
- package/src/__tests__/renderer-factory-material-contract.unit.test.ts +121 -0
- package/src/__tests__/renderer-lifecycle.integration.test.ts +58 -0
- package/src/__tests__/rhi-backend-package-boundary.unit.test.ts +11 -0
- package/src/__tests__/scriptable-pack-consumer.test-d.ts +14 -0
- package/src/__tests__/shader-stage-surface.unit.test.ts +43 -0
- package/src/__tests__/ssao-config.unit.test.ts +36 -0
- package/src/__tests__/ssao-kernel-surface.unit.test.ts +14 -0
- 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 +91 -0
- package/src/__tests__/texture-usage-surface.unit.test.ts +58 -0
- package/src/__tests__/typed-pipeline-topology.unit.test.ts +223 -0
- package/src/__tests__/urp-pipeline-targets.unit.test.ts +42 -0
- package/src/__tests__/urp-pipeline.unit.test.ts +14 -0
- package/src/__tests__/vertex-color-pipeline.unit.test.ts +132 -0
- package/src/__tests__/vertex-layout-consumer.unit.test.ts +25 -0
- package/src/__tests__/visibility-diagnostics.integration.test.ts +62 -0
- package/src/__tests__/visibility-extract.integration.test.ts +98 -0
- package/src/__tests__/visibility-extract.perf.test.ts +130 -0
- package/src/__tests__/visibility-feature-dedup.integration.test.ts +55 -0
- package/src/__tests__/visibility-hidden-report.unit.test.ts +36 -0
- package/src/__tests__/visibility-instances.integration.test.ts +46 -0
- package/src/__tests__/visibility-multi-world.integration.test.ts +86 -0
- package/src/__tests__/visibility-producer-matrix.integration.test.ts +168 -0
- package/src/__tests__/visibility-producer-matrix.unit.test.ts +96 -0
- package/src/__tests__/visibility-public-surface.test-d.ts +27 -0
- package/src/__tests__/visibility-resolver.unit.test.ts +85 -0
- package/src/__tests__/visibility-resource-short-circuit.unit.test.ts +80 -0
- package/src/__tests__/visibility-snapshot-contract.unit.test.ts +60 -0
- package/src/__tests__/vocabulary.unit.test.ts +21 -0
- package/src/assembly/backend-contract.ts +57 -0
- package/src/assembly/factory.ts +8130 -0
- package/src/assembly/host-contract.ts +101 -0
- package/src/assembly/material/assembly.ts +48 -0
- package/src/assembly/material/pipeline-projection.ts +63 -0
- package/src/assets/asset-decoders.ts +158 -0
- package/src/assets/render-asset-port.ts +44 -0
- package/src/assets/resolve-render-asset.ts +13 -0
- package/src/authoring.ts +17 -0
- package/src/cluster-binner.ts +700 -0
- 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/__tests__/schema-parity.unit.test.ts +25 -0
- package/src/components/__tests__/visibility-schema.unit.test.ts +35 -0
- package/src/components/camera.ts +512 -0
- package/src/components/directional-light.ts +120 -0
- package/src/components/glyph-text.ts +64 -0
- package/src/components/index.ts +54 -0
- package/src/components/instances.ts +206 -0
- package/src/components/layer.ts +69 -0
- package/src/components/light-helpers.ts +188 -0
- package/src/components/lines.ts +18 -0
- package/src/components/mesh-filter.ts +60 -0
- package/src/components/mesh-renderer.ts +61 -0
- package/src/components/point-light-shadow.ts +43 -0
- package/src/components/point-light.ts +65 -0
- package/src/components/points.ts +40 -0
- package/src/components/post-process-params.ts +35 -0
- package/src/components/scene-instance.ts +193 -0
- package/src/components/skybox-background.ts +103 -0
- package/src/components/skylight.ts +97 -0
- package/src/components/sort-key.ts +75 -0
- package/src/components/spot-light.ts +124 -0
- package/src/components/sprite-animation.ts +168 -0
- package/src/components/sprite-instances.ts +179 -0
- package/src/components/sprite-playback-mode.ts +79 -0
- package/src/components/sprite-region-override.ts +105 -0
- package/src/components/tile-layer.ts +167 -0
- package/src/components/tilemap.ts +48 -0
- package/src/components/visibility.ts +53 -0
- package/src/construct-renderer.ts +67 -0
- package/src/debug-draw-glue.ts +48 -0
- package/src/device/device-scope.ts +306 -0
- package/src/device/gpu-residency.ts +1822 -0
- package/src/device/resource-types.ts +20 -0
- package/src/engine-metrics.ts +82 -0
- package/src/errors/ecs-validation.ts +16 -0
- package/src/errors/index.ts +3 -0
- package/src/errors/recover.ts +161 -0
- package/src/errors/render.ts +1284 -0
- package/src/extract/visibility.ts +120 -0
- package/src/features/fullscreen.ts +46 -0
- package/src/features/host.ts +1363 -0
- package/src/features/morph/morph-feature.ts +377 -0
- package/src/features/plan.ts +447 -0
- package/src/features/prepared-gpu-work.ts +959 -0
- package/src/features/prepared-graphics-store.ts +449 -0
- package/src/features/prepared-graphics.ts +420 -0
- package/src/features/render-graph-compute.ts +69 -0
- package/src/features/render-graph-contribution.ts +75 -0
- package/src/features/render-graph-raster.ts +332 -0
- package/src/features/render-graph-resources.ts +38 -0
- package/src/features/targets.ts +70 -0
- package/src/features/types.ts +103 -0
- package/src/features/vocabulary.ts +24 -0
- package/src/fullscreen-post-process-pass.ts +363 -0
- package/src/glyph-text-layout-system.ts +421 -0
- package/src/gpu-driven/batch-topology.ts +245 -0
- package/src/gpu-driven/production-raster.ts +695 -0
- package/src/gpu-driven/view-gpu.ts +703 -0
- package/src/gpu-resource.ts +159 -0
- package/src/gpu-scene-schema.ts +136 -0
- package/src/gpu-scene.ts +722 -0
- package/src/gpu-stage.ts +9 -0
- package/src/gpu-texture-usage.ts +12 -0
- package/src/gpu-usage.ts +14 -0
- package/src/hdrp-buffers.ts +480 -0
- package/src/ibl/IblPipelineCache.ts +1006 -0
- package/src/ibl/skylight-bind-group.ts +513 -0
- package/src/index.ts +129 -0
- package/src/inspection-types.ts +80 -0
- package/src/instance-buffer-cache.ts +95 -0
- package/src/internal.ts +9 -0
- package/src/lifecycle.ts +168 -0
- package/src/light-buffer-layout.ts +346 -0
- package/src/materials.ts +214 -0
- package/src/mesh-material-bindings.ts +103 -0
- package/src/pbr-pipeline.ts +1137 -0
- package/src/pipeline/standard-forward-lane.ts +229 -0
- package/src/pipeline/standard-pipeline.ts +555 -0
- package/src/pipeline/standard-profile.ts +65 -0
- package/src/pipeline-builder.ts +382 -0
- package/src/pipeline-spec-types.ts +28 -0
- package/src/pipeline-spec.ts +1231 -0
- package/src/plugin.ts +69 -0
- 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 +302 -0
- package/src/prepare/prepared-graphics-resolver.ts +456 -0
- package/src/record/__tests__/material-bg-cache.unit.test.ts +41 -0
- package/src/record/__tests__/material-slot-plan.unit.test.ts +44 -0
- package/src/record/__tests__/typed-frame-graph-plan.unit.test.ts +41 -0
- package/src/record/__tests__/video-texture-view.unit.test.ts +90 -0
- package/src/record/frame-lighting.ts +1074 -0
- package/src/record/frame-snapshot.ts +500 -0
- package/src/record/frame-targets.ts +137 -0
- package/src/record/frame.ts +1598 -0
- package/src/record/helpers.ts +284 -0
- package/src/record/main-pass-geometry.ts +1065 -0
- package/src/record/main-pass-material.ts +1043 -0
- package/src/record/main-pass-sprite-draws.ts +1137 -0
- package/src/record/main-pass.ts +610 -0
- package/src/record/mesh-ssbo.ts +885 -0
- package/src/record/render-context.ts +384 -0
- package/src/record/shadow-pass.ts +698 -0
- package/src/record/skybox-post-pass.ts +593 -0
- package/src/record/typed-frame-graph.ts +461 -0
- package/src/record/view-ubo.ts +222 -0
- package/src/render-contract.ts +582 -0
- package/src/render-data.ts +385 -0
- package/src/render-graph-primitives.ts +811 -0
- package/src/render-pipeline.ts +259 -0
- package/src/render-system-extract.ts +4585 -0
- package/src/render-system.ts +1933 -0
- 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 +165 -0
- package/src/shadow-atlas.ts +244 -0
- package/src/ssao-buffers.ts +334 -0
- package/src/ssao-config.ts +61 -0
- package/src/systems/active-camera.ts +116 -0
- package/src/systems/pass-selector.ts +49 -0
- package/src/systems/skin-palette-allocator.ts +251 -0
- package/src/systems/skin-palette-types.ts +14 -0
- package/src/systems/transparent-sort-config.ts +233 -0
- package/src/tilemap-chunk-extract-system.ts +1290 -0
- package/src/typed-render-graph-primitives.ts +541 -0
- package/src/typed-shadow-passes.ts +165 -0
|
@@ -0,0 +1,429 @@
|
|
|
1
|
+
import type { World } from '@forgeax/engine-ecs';
|
|
2
|
+
import type { ResolvedColorTargetDescriptor } from '@forgeax/engine-render-graph';
|
|
3
|
+
import type { Texture } from '@forgeax/engine-rhi';
|
|
4
|
+
import type { ClusterBinScratch } from '../cluster-binner';
|
|
5
|
+
import type { GpuBuffer } from '../gpu-resource';
|
|
6
|
+
/**
|
|
7
|
+
* feat-20260708-composited-multi-world-rendering M1 / D-1 / D-9:
|
|
8
|
+
* worldId-entityKey composite key helper. Formula: `worldId * 2^32 + entityKey`.
|
|
9
|
+
*
|
|
10
|
+
* worldId is the index into `worlds[]` (the `draw` call argument). entityKey
|
|
11
|
+
* is the packed Entity u32 (encodeEntity(indexSlot, generation)) surfaced
|
|
12
|
+
* through `RenderableSnapshot.entityKey`.
|
|
13
|
+
*
|
|
14
|
+
* Key properties:
|
|
15
|
+
* - worldId=0 identity: `worldEntityKey(0, k) === k` — single-world path
|
|
16
|
+
* cache behavior is bit-for-bit unchanged (AC-03 regression guarantee).
|
|
17
|
+
* - JS safe integer: worldId < 2^21 keeps the composite key below
|
|
18
|
+
* Number.MAX_SAFE_INTEGER (2^53).
|
|
19
|
+
* - SSOT: all cache-key compositing consumers import this single helper;
|
|
20
|
+
* no inline `worldId * 2^32 + k` duplication (D-9).
|
|
21
|
+
*
|
|
22
|
+
* @internal — exported for unit test + glyph/tilemap/record consumers;
|
|
23
|
+
* not part of the public @forgeax/engine-runtime API surface.
|
|
24
|
+
*/
|
|
25
|
+
export declare function worldEntityKey(worldId: number, entityKey: number): number;
|
|
26
|
+
/**
|
|
27
|
+
* Cross-frame cache entry for a material bind group whose source material and
|
|
28
|
+
* all resolved GPU resources are stable. The material snapshot identity is
|
|
29
|
+
* the extract-layer invalidation token; the builder only stores entries after
|
|
30
|
+
* all explicit resource handles resolved to resident GPU objects.
|
|
31
|
+
*/
|
|
32
|
+
export interface MaterialBgAssemblyCacheEntry {
|
|
33
|
+
readonly material: MaterialSnapshot;
|
|
34
|
+
/** Invalidates when a texture/sampler residency identity changes. */
|
|
35
|
+
readonly materialResourceEpoch: number;
|
|
36
|
+
readonly materialBgl: BindGroupLayout;
|
|
37
|
+
/** Buffer identity changes when the shared material capacity grows. */
|
|
38
|
+
readonly materialBuffer: Buffer;
|
|
39
|
+
readonly skylightResources: SkylightBindGroupResources;
|
|
40
|
+
readonly bindGroup: BindGroup;
|
|
41
|
+
}
|
|
42
|
+
import type { CompiledRenderGraph } from '@forgeax/engine-render-graph';
|
|
43
|
+
import type { BindGroup, BindGroupLayout, Buffer, TextureView } from '@forgeax/engine-rhi';
|
|
44
|
+
import type { MaterialRenderState, RenderPipelineAsset } from '@forgeax/engine-types';
|
|
45
|
+
import type { MeshGpuHandles } from '../device/gpu-residency';
|
|
46
|
+
import type { SkylightBindGroupResources } from '../ibl/skylight-bind-group';
|
|
47
|
+
import type { InstanceBufferCacheEntry } from '../instance-buffer-cache';
|
|
48
|
+
import type { CameraSnapshot } from '../render-contract';
|
|
49
|
+
import type { RenderPipeline as RenderPipelineDef, RenderPipelineFrame } from '../render-pipeline';
|
|
50
|
+
import type { MaterialSnapshot, PointShadowSnapshot, RenderableSnapshot, SpotLightSnapshot } from '../render-system-extract';
|
|
51
|
+
import type { ShadowAtlas } from '../shadow-atlas';
|
|
52
|
+
/**
|
|
53
|
+
* feat-20260608-create-app-param-surface-trim / M1 / D-8 (q8 user lock):
|
|
54
|
+
* fallback clear color when the world carries no Camera entity. Opaque
|
|
55
|
+
* black `[0, 0, 0, 1]`, replacing the historical
|
|
56
|
+
* `[0.06, 0.06, 0.08, 1.0]` dark-slate sentinel. Single SSOT consumed by
|
|
57
|
+
* the synthetic CameraSnapshot built when `cameras.length === 0`
|
|
58
|
+
* (Case B in `recordFrame`) and read directly by tests
|
|
59
|
+
* (`zero-camera-clear-fallback.test.ts`). AC-05.
|
|
60
|
+
*/
|
|
61
|
+
export declare const ZERO_CAMERA_CLEAR_FALLBACK: readonly [number, number, number, number];
|
|
62
|
+
export interface FrameObservationSource {
|
|
63
|
+
readonly texture: Texture;
|
|
64
|
+
readonly descriptor: ResolvedColorTargetDescriptor;
|
|
65
|
+
readonly frameId: number;
|
|
66
|
+
readonly pipelineId: 'forgeax::standard';
|
|
67
|
+
readonly backendId: string;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Build a synthetic CameraSnapshot the record stage uses when the world
|
|
71
|
+
* carries no Camera entity. Identity-shaped projection / view inputs
|
|
72
|
+
* keep the existing matrix math numerically stable; clear-color quartet
|
|
73
|
+
* sourced from `ZERO_CAMERA_CLEAR_FALLBACK` so the swap-chain still
|
|
74
|
+
* paints `[0, 0, 0, 1]` (AI-user friendly observable signal that the
|
|
75
|
+
* `'render-system-no-camera'` diagnostic fired without leaving stale
|
|
76
|
+
* pixels on screen).
|
|
77
|
+
*/
|
|
78
|
+
export declare function makeZeroCameraFallbackSnapshot(): CameraSnapshot;
|
|
79
|
+
export declare function clampPcfKernelSize(value: number | undefined): number;
|
|
80
|
+
/**
|
|
81
|
+
* Per-RenderSystem mutable frame state.
|
|
82
|
+
*
|
|
83
|
+
* Owned by the `createRenderSystem` closure; advanced once per
|
|
84
|
+
* `recordFrame` invocation. The `instanceBuffers` map holds the per-entity
|
|
85
|
+
* GPU storage buffers for Instances-bearing entities (cache key = the
|
|
86
|
+
* packed Entity u32 surfaced via `InstancesSnapshot.cacheKey`); entries
|
|
87
|
+
* are recreated when the `archVersion` bumps or `byteLength` changes.
|
|
88
|
+
*
|
|
89
|
+
* feat-20260518-pbr-direct-lighting-mvp M3 / w14 (AC-17 a): the
|
|
90
|
+
* `warnedZeroLightStandard` flag latches the first-frame warning that
|
|
91
|
+
* fires when the world contains a StandardMaterial entity but zero
|
|
92
|
+
* DirectionalLight entries — once latched the next 100 frames suppress
|
|
93
|
+
* the warning so the AI user is not flooded with repeated noise (charter
|
|
94
|
+
* P3 silent failure -> explicit warning at most once per RenderSystem
|
|
95
|
+
* lifetime).
|
|
96
|
+
*/
|
|
97
|
+
export interface RenderFrameState {
|
|
98
|
+
frameNumber: number;
|
|
99
|
+
/** Optional graph resource lookup used by low-level record helpers and tests. */
|
|
100
|
+
readonly perFrameGraph?: {
|
|
101
|
+
readonly getColorTargetDescriptor: (key: string) => ResolvedColorTargetDescriptor | undefined;
|
|
102
|
+
readonly getColorTargetView: (key: string) => TextureView | undefined;
|
|
103
|
+
readonly getColorTargetTexture: (key: string) => Texture | undefined;
|
|
104
|
+
} | null;
|
|
105
|
+
/** Last successfully rendered static directional shadow atlas token. */
|
|
106
|
+
directionalShadowCache: DirectionalShadowCache | null;
|
|
107
|
+
/** Set by a directional shadow pass when this frame refreshed the atlas. */
|
|
108
|
+
directionalShadowCacheRecorded: boolean;
|
|
109
|
+
/** The sole compiled owner for compute, copy, feature, and raster work. */
|
|
110
|
+
compiledFrameGraph: CompiledRenderGraph<RenderPipelineFrame> | null;
|
|
111
|
+
compiledFrameGraphTopologyKey: string | null;
|
|
112
|
+
readonly retiredCompiledFrameGraphs: Set<CompiledRenderGraph<RenderPipelineFrame>>;
|
|
113
|
+
/** Physical outputs projected by typed graph passes for downstream observers. */
|
|
114
|
+
currentFrameObservationSource: FrameObservationSource | undefined;
|
|
115
|
+
currentDirectionalShadowView: TextureView | null;
|
|
116
|
+
currentSpotShadowView: TextureView | null;
|
|
117
|
+
readonly instanceBuffers: Map<number, InstanceBufferCacheEntry>;
|
|
118
|
+
/** Per-entity vertex buffers for the Standard CPU morph lane. */
|
|
119
|
+
readonly morphBuffers?: Map<number, MorphBufferCacheEntry>;
|
|
120
|
+
readonly hdrpClusterBinScratch: ClusterBinScratch;
|
|
121
|
+
/** Reusable HDRP cluster output buffers; sized once and grown only if the grid/cap changes. */
|
|
122
|
+
hdrpClusterGridScratch: Uint32Array | null;
|
|
123
|
+
hdrpLightIndexListScratch: Uint32Array | null;
|
|
124
|
+
/** Compute bind group for the optional WebGPU HDRP membership producer. */
|
|
125
|
+
hdrpClusterMembershipBindGroup: BindGroup | null;
|
|
126
|
+
transientInstanceBuffers: InstanceBufferCacheEntry[];
|
|
127
|
+
warnedZeroLightStandard: boolean;
|
|
128
|
+
/**
|
|
129
|
+
* feax-20260608-multi-light-warn-once M3: once-warn latch for multi-light
|
|
130
|
+
* overrun per bucket (directional N>1 / point N>4 / spot N>4). Fires at
|
|
131
|
+
* most once per RenderSystem lifetime per bucket so AI users see a single
|
|
132
|
+
* actionable console.warn without per-frame flooding (charter P3 explicit
|
|
133
|
+
* failure: warn-once preserves signal/noise floor).
|
|
134
|
+
*/
|
|
135
|
+
warnedMultiLightDirectional: boolean;
|
|
136
|
+
warnedMultiLightPoint: boolean;
|
|
137
|
+
warnedMultiLightSpot: boolean;
|
|
138
|
+
/**
|
|
139
|
+
* feat-20260630-equirect-kind-internalized-ibl-declarative-skyligh M3 / w19:
|
|
140
|
+
* once-warn latches for >1 Skylight / >1 SkyboxBackground entity. Fire at most
|
|
141
|
+
* once per RenderSystem lifetime so the multi-entity warn (which names the
|
|
142
|
+
* winning entity handle, F-8) does not flood the console every frame.
|
|
143
|
+
*/
|
|
144
|
+
warnedMultiSkylight: boolean;
|
|
145
|
+
warnedMultiSkybox: boolean;
|
|
146
|
+
/** feat-20260531-skybox-env-background M3 / w20: once-warn when camera
|
|
147
|
+
* tonemap is 'none' but a SkyboxBackground entity exists. Skybox needs
|
|
148
|
+
* the HDR render target allocated by the tonemap path; without it the
|
|
149
|
+
* skybox pass is skipped (plan-strategy D-2 NOTE). */
|
|
150
|
+
warnedSkyboxTonemapNone: boolean;
|
|
151
|
+
/**
|
|
152
|
+
* Per-handle warn-once anchor for the missing baseColor-texture fallback,
|
|
153
|
+
* shared by every textured material path (sprite / sprite-lit / standard-pbr
|
|
154
|
+
* / pbr-skin / unlit — feat-20260520-2d-sprite-layer-mvp M-3 / w25 seeded it
|
|
155
|
+
* for sprites; feat-future-pbr-missing-texture-fallback-explicit generalised
|
|
156
|
+
* it to PBR/skin so GLB textures that fail to reach the GPU no longer render
|
|
157
|
+
* silently flat). A `Set<number>` keyed by the raw Handle<TextureAsset> id -
|
|
158
|
+
* the writer fires `console.warn` exactly once per missing texture handle per
|
|
159
|
+
* RenderSystem lifetime so AI users see a single actionable message without
|
|
160
|
+
* per-frame log flooding. The set lives across frames so the second frame on
|
|
161
|
+
* the same missing handle stays silent (charter P3 explicit failure:
|
|
162
|
+
* warn-once preserves signal / noise floor while structured RhiError below
|
|
163
|
+
* stays per-frame fire).
|
|
164
|
+
*
|
|
165
|
+
* Note on the WeakSet/Set choice: plan-strategy mentions WeakSet but
|
|
166
|
+
* Handle values are numeric brand u32s (not object references), so
|
|
167
|
+
* WeakSet<object> is not applicable; Set<number> gives identical
|
|
168
|
+
* warn-once-per-handle semantics at zero additional cost (charter F1
|
|
169
|
+
* minimal surface; the per-RenderSystem lifetime cap is the upper
|
|
170
|
+
* bound).
|
|
171
|
+
*/
|
|
172
|
+
readonly warnedMissingBaseColorTextureHandles: Set<number>;
|
|
173
|
+
/**
|
|
174
|
+
* feat-20260527-sprite-nineslice M2 / w11 + M4 / w16 (AC-16): once-per-
|
|
175
|
+
* renderable guard for the `nineslice.scale-too-small` metric increment.
|
|
176
|
+
* Keyed by `renderableIndex` so the second frame on the same mis-scaled
|
|
177
|
+
* entity does NOT keep bumping the counter — AI users see one counter
|
|
178
|
+
* tick per offending entity per RenderSystem lifetime, matching the
|
|
179
|
+
* single-event semantics of the structured fail-fast (charter P3:
|
|
180
|
+
* machine-readable signal, not a per-frame inflation). M4 retired the
|
|
181
|
+
* placeholder console.warn; the increment lands on the per-Renderer
|
|
182
|
+
* EngineMetrics through `runtime.metrics.increment(...)`.
|
|
183
|
+
*/
|
|
184
|
+
readonly warnedNineSliceScaleEntities: Set<number>;
|
|
185
|
+
/**
|
|
186
|
+
* feat-20260630-equirect-kind-internalized-ibl-declarative-skyligh M3 / w18:
|
|
187
|
+
* per-handle fire-once anchor for the lazy equirect-to-cubemap projection
|
|
188
|
+
* failure. A `Set<number>` keyed by the raw Handle<EquirectAsset> id - the
|
|
189
|
+
* record arm fires the structured `EquirectProjectionFailedError` exactly
|
|
190
|
+
* once per failed source per RenderSystem lifetime (the store records
|
|
191
|
+
* `status:'failed'` permanently and never retries, R-2 / AC-09; without this
|
|
192
|
+
* latch the record arm would re-fire the error every frame). The set lives
|
|
193
|
+
* across frames so the second frame on the same failed handle stays silent
|
|
194
|
+
* (charter P3: warn-once preserves signal / noise floor).
|
|
195
|
+
*/
|
|
196
|
+
readonly firedEquirectProjectionFailedHandles: Set<number>;
|
|
197
|
+
/**
|
|
198
|
+
* feat-20260622-handle-to-id-allocator-elimination M1 / w3: per-frame
|
|
199
|
+
* bind group caches converted to nested WeakMap chain roots (D-3).
|
|
200
|
+
* Each root is a WeakMap<object, WeakMap<...>> walked by
|
|
201
|
+
* getOrCreateFromChain; the chain depth varies by variant
|
|
202
|
+
* (view-main = 7, mesh = 1, hdrp-unified = 5, skin = 2).
|
|
203
|
+
* Roots are stable between device recoveries and replaced when the renderer
|
|
204
|
+
* swaps to a fresh device. Chain keys are always inner buffer handles, never
|
|
205
|
+
* wrappers (D-3).
|
|
206
|
+
*/
|
|
207
|
+
viewBindGroupCache: WeakMap<object, unknown>;
|
|
208
|
+
meshBindGroupCache: WeakMap<object, unknown>;
|
|
209
|
+
/**
|
|
210
|
+
* feat-20260622-handle-to-id-allocator-elimination M1 / w2: per-entity
|
|
211
|
+
* bind group caches scoped by entityKey (packed u32 as number).
|
|
212
|
+
* Outer Map<number, WeakMap<handle, ...>> lets GC collect entries for
|
|
213
|
+
* destroyed entities whose handles are unreachable; per-entity material
|
|
214
|
+
* and instances share the same two-level shape (D-1). The inner WeakMap
|
|
215
|
+
* value is opaque (`unknown`) because `getOrCreateFromChain` walks a
|
|
216
|
+
* variable-depth chain — intermediate handles map to nested WeakMaps and
|
|
217
|
+
* only the final handle maps to the variant->BindGroup leaf Map. Direct
|
|
218
|
+
* readers (HDRP shadow-instances read end) assert the leaf shape locally.
|
|
219
|
+
*/
|
|
220
|
+
/**
|
|
221
|
+
* feat-20260708-composited-multi-world-rendering M1 / D-1a #2: outer Map
|
|
222
|
+
* keyed by `worldEntityKey(worldId, entityKey)`. Inner WeakMap unchanged.
|
|
223
|
+
*/
|
|
224
|
+
readonly materialBgPerEntity: Map<number, WeakMap<object, unknown>>;
|
|
225
|
+
/**
|
|
226
|
+
* feat-20260708-composited-multi-world-rendering M1 / D-1a #3: outer Map
|
|
227
|
+
* keyed by `worldEntityKey(worldId, entityKey)`. Inner WeakMap unchanged.
|
|
228
|
+
*/
|
|
229
|
+
readonly instancesBgPerEntity: Map<number, WeakMap<object, unknown>>;
|
|
230
|
+
/** Identity-keyed instances BGs shared across entities using the same buffer. */
|
|
231
|
+
readonly instancesBgShared: WeakMap<object, unknown>;
|
|
232
|
+
/**
|
|
233
|
+
* feat-20260622-handle-to-id-allocator-elimination M1 / w2: cross-entity
|
|
234
|
+
* shared material bind group cache (OQ-1 option A). Outer key is the
|
|
235
|
+
* material shaderId string; inner chain is a WeakMap keyed by the same
|
|
236
|
+
* handle objects used in per-entity chains. Reuses the generic
|
|
237
|
+
* `getOrCreatePerEntity` helper with outerKey string|number (D-1).
|
|
238
|
+
*/
|
|
239
|
+
readonly materialBgShared: Map<string, WeakMap<object, unknown>>;
|
|
240
|
+
/** Cross-frame fast path for fully-resident, immutable material snapshots. */
|
|
241
|
+
readonly materialBgAssemblyCache: Map<string, MaterialBgAssemblyCacheEntry>;
|
|
242
|
+
/**
|
|
243
|
+
* feat-20260622-handle-to-id-allocator-elimination M1 / w2: singleton
|
|
244
|
+
* material bind group cache (D-6). Single flat Map<variant, BindGroup>
|
|
245
|
+
* for the one true singleton in production: shadow-material-singleton.
|
|
246
|
+
* shadow-instances-singleton is a test fixture fiction (research F3);
|
|
247
|
+
* no second singleton field is needed.
|
|
248
|
+
*/
|
|
249
|
+
readonly singletonMaterialCache: Map<string, BindGroup>;
|
|
250
|
+
/**
|
|
251
|
+
* Post-process bind group cache: nested WeakMap chain root shared by the
|
|
252
|
+
* built-in bloom (bright / blur-H / blur-V / composite), FXAA, and HDRP SSAO
|
|
253
|
+
* (calc / blur) fullscreen passes. Each of these passes samples graph-owned
|
|
254
|
+
* transient render targets (hdrColor / ldrColor / bloom* / ssaoRaw /
|
|
255
|
+
* gbuf0 / hdrDepth); on canvas resize the graph retires the old physical
|
|
256
|
+
* textures and allocates new ones, so the bind group must be rebuilt to
|
|
257
|
+
* reference the new TextureView identity. Keying the cache on the physical
|
|
258
|
+
* TextureView (or `::tex` texture handle for passes that recreate their bound
|
|
259
|
+
* view every frame) makes invalidation automatic: a resized target yields a
|
|
260
|
+
* new key object -> WeakMap miss -> factory rebuild, and dead views are GC'd
|
|
261
|
+
* (same identity-invalidation mechanism as view/mesh caches, D-3). Replaces
|
|
262
|
+
* the pre-fix `pp.*BindGroup === null` single-slot caches that never
|
|
263
|
+
* invalidated on resize and submitted destroyed textures.
|
|
264
|
+
*/
|
|
265
|
+
postProcessBgCache: WeakMap<object, unknown>;
|
|
266
|
+
/**
|
|
267
|
+
* Raw handle of the currently installed RenderPipelineAsset (0 = builtin).
|
|
268
|
+
* Installation brands the next candidate topology; the prior compiled graph
|
|
269
|
+
* remains last-known-good until the candidate compiles successfully.
|
|
270
|
+
*/
|
|
271
|
+
installedPipelineHandle: number;
|
|
272
|
+
/**
|
|
273
|
+
* Active topology declaration resolved from the pipeline registry.
|
|
274
|
+
*/
|
|
275
|
+
activePipeline: RenderPipelineDef;
|
|
276
|
+
/**
|
|
277
|
+
* Install-time config projected into `RenderPipelineTopology.config`.
|
|
278
|
+
*/
|
|
279
|
+
installedPipelineConfig: RenderPipelineAsset['config'];
|
|
280
|
+
/**
|
|
281
|
+
* feat-20260608-cluster-lighting M2 / w10: HDRP active flag.
|
|
282
|
+
* True iff the currently installed RenderPipelineAsset has
|
|
283
|
+
* `pipelineId === 'forgeax::hdrp'`. URP-only code paths gate on
|
|
284
|
+
* `!isHdrpActive` so HDRP demos do not double-count light contributions.
|
|
285
|
+
*/
|
|
286
|
+
isHdrpActive: boolean;
|
|
287
|
+
/**
|
|
288
|
+
* feat-20260608-cluster-lighting M5 / w20 + M6 / w23 + M5 / w22:
|
|
289
|
+
* once-per-frame fire dedup set for HDRP per-frame fail-soft errors
|
|
290
|
+
* (`hdrp-light-budget-exceeded`, `hdrp-index-list-overflow`). Cleared
|
|
291
|
+
* at the end of each frame so the next frame re-fires if the condition
|
|
292
|
+
* persists. Set<string> keyed by RuntimeErrorCode literal.
|
|
293
|
+
*/
|
|
294
|
+
hdrpOncePerFrameFired: Set<string>;
|
|
295
|
+
/**
|
|
296
|
+
* feat-20260612-point-light-shadows-urp-hdrp M3 / T-M3-2 (plan-strategy §D-1).
|
|
297
|
+
* Lazily-allocated cube_array shadow atlas owned by the RenderSystem
|
|
298
|
+
* lifetime. `null` until the first frame whose `lights.pointShadow` is
|
|
299
|
+
* non-empty (zero-shadow scenes never allocate; AC-09). The atlas is
|
|
300
|
+
* disposed by the renderer dispose path; subsequent frames with a non-empty
|
|
301
|
+
* snapshot list re-allocate.
|
|
302
|
+
*/
|
|
303
|
+
pointShadowAtlas: ShadowAtlas | null;
|
|
304
|
+
/**
|
|
305
|
+
* feat-20260612-point-light-shadows-urp-hdrp M3 / T-M3-2 (plan-strategy §D-3):
|
|
306
|
+
* per-frame projection of `lights.pointShadow` from the extract stage. The
|
|
307
|
+
* typed point-shadow pass reads this list to drive the 6 x N face iteration.
|
|
308
|
+
* Empty array means the topology declares no point-shadow passes.
|
|
309
|
+
*/
|
|
310
|
+
pointShadowSnapshots: readonly PointShadowSnapshot[];
|
|
311
|
+
/**
|
|
312
|
+
* feat-20260622-chunk-gpu-instancing-sprite-tilemap M1 / w4 (D-1):
|
|
313
|
+
* last fold-pass output, computed at `recordFrame` entry from the
|
|
314
|
+
* transparent-sort-ordered dispatch + mode-gate (D-5: only mode 0
|
|
315
|
+
* folds; other modes yield singleton buckets). Currently an
|
|
316
|
+
* observational compute — the drawIndexed swap (1 instanced draw per
|
|
317
|
+
* fold bucket) is the follow-on integration that wires each bucket
|
|
318
|
+
* into the sprite-pass / geometry-pass dispatch loops. The bucket
|
|
319
|
+
* count is the source of truth for `render.instancing.foldedDraws`
|
|
320
|
+
* metric (M3 / w13) — every fold-eligible bucket (bucketSize >= 1
|
|
321
|
+
* under mode 0 AND not bypassed) contributes one increment.
|
|
322
|
+
*/
|
|
323
|
+
lastFoldBucketCount: number;
|
|
324
|
+
/**
|
|
325
|
+
* feat-20260625-spot-light-shadow-mapping M2 / w9 (D-2): per-frame projection
|
|
326
|
+
* of `lights.spot` from the extract stage. The typed spot-shadow graph
|
|
327
|
+
* pass reads this list to render each
|
|
328
|
+
* castShadow spot's perspective depth into its `spotShadowDepth` atlas tile
|
|
329
|
+
* (viewport keyed on `shadowAtlasTile`). `recordFrame` writes it before
|
|
330
|
+
* graph execution. Spots with `shadowAtlasTile < 0` (castShadow:false,
|
|
331
|
+
* degenerate direction, or clipped beyond cap 4) are skipped — zero
|
|
332
|
+
* shadow-casting spots means zero spot shadow passes (AC-03).
|
|
333
|
+
*/
|
|
334
|
+
spotShadowSnapshots: readonly SpotLightSnapshot[];
|
|
335
|
+
}
|
|
336
|
+
export interface MorphBufferCacheEntry {
|
|
337
|
+
readonly buffer: GpuBuffer;
|
|
338
|
+
readonly byteLength: number;
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* feat-20260518-pbr-direct-lighting-mvp M5 / w22.11 (D-2 + D-10 + AC-06):
|
|
342
|
+
* mutable per-frame dispatch counter object owned by `createRenderSystem`
|
|
343
|
+
* and bumped here at the actual `pass.setPipeline(...)` call site (the
|
|
344
|
+
* only point with both `mat.materialShaderId` and `mesh.layoutProjection` in scope).
|
|
345
|
+
* Unlit / custom shader pipeline dispatch tracked here.
|
|
346
|
+
*/
|
|
347
|
+
export interface DispatchCounts {
|
|
348
|
+
unlit: number;
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* feat-20260531-per-frame-bind-group-cache M1 / w4: per-frame
|
|
352
|
+
* createBindGroup counter. Closure-mutable object aligned with
|
|
353
|
+
* DispatchCounts precedent. Reset in draw(world) entry, bumped on
|
|
354
|
+
* cache-miss createBindGroup calls (M2-M4).
|
|
355
|
+
*/
|
|
356
|
+
export interface BindGroupCounts {
|
|
357
|
+
createBindGroup: number;
|
|
358
|
+
/**
|
|
359
|
+
* Debug-only: records the variant of every cache-miss BindGroup created via
|
|
360
|
+
* `getOrCreateFromChain` for unit-test observability. Production paths do
|
|
361
|
+
* not read this array.
|
|
362
|
+
*/
|
|
363
|
+
keys: string[];
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* A renderable resolved against the AssetRegistry for the current frame:
|
|
367
|
+
* its source snapshot, the GPU mesh handles, the row index used to correlate
|
|
368
|
+
* transparent-sort output back to this entry, and an optional per-material
|
|
369
|
+
* renderState override (bug-20260527-renderstate-pipeline-dispatch-gap D-4).
|
|
370
|
+
* Module-scoped so RenderPipelineContext can type `validated` / `validatedOrdered`
|
|
371
|
+
* without a dynamic type escape (was a recordFrame-local interface before F-4).
|
|
372
|
+
*/
|
|
373
|
+
export interface ValidatedRenderable {
|
|
374
|
+
readonly source: RenderableSnapshot;
|
|
375
|
+
/** World that owns the renderable's asset handles and material snapshots. */
|
|
376
|
+
readonly world?: World;
|
|
377
|
+
readonly mesh: MeshGpuHandles;
|
|
378
|
+
readonly renderableIndex: number;
|
|
379
|
+
readonly renderState: MaterialRenderState | undefined;
|
|
380
|
+
/**
|
|
381
|
+
* Canonical authored material-variant request folded from the selected
|
|
382
|
+
* pass's `defines` map. Capability axes are merged at the renderer seam;
|
|
383
|
+
* this field carries only the pass-owned selection into record.
|
|
384
|
+
*/
|
|
385
|
+
readonly variantSet?: string | undefined;
|
|
386
|
+
/**
|
|
387
|
+
* w10: per-pass stencil reference value folded from
|
|
388
|
+
* {@link DispatchEntry.stencilReference} (draw-call dynamic state). The draw
|
|
389
|
+
* loop calls `pass.setStencilReference(stencilReference ?? 0)` before each
|
|
390
|
+
* draw; `undefined` falls back to the WebGPU default 0 (semantic no-op).
|
|
391
|
+
*/
|
|
392
|
+
readonly stencilReference: number | undefined;
|
|
393
|
+
}
|
|
394
|
+
/**
|
|
395
|
+
* Cross-frame validity token for the directional shadow atlas.
|
|
396
|
+
*
|
|
397
|
+
* The atlas is a render target, not authored state. Keeping its validity
|
|
398
|
+
* token beside the other RenderFrameState caches lets recordFrame skip a
|
|
399
|
+
* static caster submission without teaching the public render-pipeline
|
|
400
|
+
* contract about caching. Every source that can change caster depth is part
|
|
401
|
+
* of the token: world mutation, asset catalogue, graph/target identity, CSM
|
|
402
|
+
* matrices, and the GPU mesh-residency epoch.
|
|
403
|
+
*
|
|
404
|
+
* @internal
|
|
405
|
+
*/
|
|
406
|
+
export interface DirectionalShadowCache {
|
|
407
|
+
readonly worlds: readonly World[];
|
|
408
|
+
readonly worldStateTokens: readonly DirectionalShadowWorldState[];
|
|
409
|
+
readonly assetCatalogEpoch: number;
|
|
410
|
+
readonly pipelineHandle: number;
|
|
411
|
+
readonly graphTopologyKey: string | null;
|
|
412
|
+
readonly shadowMapSize: number;
|
|
413
|
+
readonly cascadeCount: number;
|
|
414
|
+
readonly lightViewProj: readonly Float32Array[];
|
|
415
|
+
readonly meshResidencyEpoch: number;
|
|
416
|
+
}
|
|
417
|
+
/**
|
|
418
|
+
* ECS state that can change the contents of a directional shadow map.
|
|
419
|
+
*
|
|
420
|
+
* The ECS-owned RenderReadLease is the only render-facing mutation boundary.
|
|
421
|
+
* Its cursor is intentionally conservative: any published World change
|
|
422
|
+
* invalidates the cached atlas, while render never reaches through World for
|
|
423
|
+
* component-clock storage.
|
|
424
|
+
*/
|
|
425
|
+
export interface DirectionalShadowWorldState {
|
|
426
|
+
readonly worldIdentity: string;
|
|
427
|
+
readonly changeCursor: number;
|
|
428
|
+
}
|
|
429
|
+
//# sourceMappingURL=frame-snapshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frame-snapshot.d.ts","sourceRoot":"","sources":["../../src/record/frame-snapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Texture, TextureView } from '@forgeax/engine-rhi';
|
|
2
|
+
import type { RenderGraphExecutionPhase } from '../render-contract';
|
|
3
|
+
import type { ExtractedLights } from '../render-system-extract';
|
|
4
|
+
import { type PipelineState, type RenderSystemInternals } from './render-context';
|
|
5
|
+
export declare function graphExecutionPhase(passName: string): RenderGraphExecutionPhase;
|
|
6
|
+
export declare function acquireSwapChainTarget(internals: RenderSystemInternals, pipelineState: PipelineState): {
|
|
7
|
+
currentTexture: Texture;
|
|
8
|
+
view: TextureView;
|
|
9
|
+
targetW: number;
|
|
10
|
+
targetH: number;
|
|
11
|
+
} | null;
|
|
12
|
+
export declare function resolveShadowMapSize(internals: RenderSystemInternals, lights: ExtractedLights): number | undefined;
|
|
13
|
+
/**
|
|
14
|
+
* Resolve the per-tile size for the graph-owned spot atlas when a frame has
|
|
15
|
+
* no directional shadow map. The typed spot pass still needs a non-zero
|
|
16
|
+
* viewport in a spot-only world; the directional resolver cannot provide
|
|
17
|
+
* that because it intentionally follows only the directional shadow lane.
|
|
18
|
+
*/
|
|
19
|
+
export declare function resolveSpotShadowMapSize(internals: RenderSystemInternals, lights: ExtractedLights): number | undefined;
|
|
20
|
+
//# sourceMappingURL=frame-targets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frame-targets.d.ts","sourceRoot":"","sources":["../../src/record/frame-targets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAoB,KAAK,aAAa,EAAE,KAAK,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEpG,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,yBAAyB,CAyC/E;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,qBAAqB,EAChC,aAAa,EAAE,aAAa,GAC3B;IAAE,cAAc,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA+CzF;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,qBAAqB,EAChC,MAAM,EAAE,eAAe,GACtB,MAAM,GAAG,SAAS,CAapB;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,qBAAqB,EAChC,MAAM,EAAE,eAAe,GACtB,MAAM,GAAG,SAAS,CASpB"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import type { World } from '@forgeax/engine-ecs';
|
|
2
|
+
import type { RenderReadLease } from '@forgeax/engine-ecs/projection';
|
|
3
|
+
import { type CurrentFrameObservationLease } from '@forgeax/engine-render-graph';
|
|
4
|
+
import { type Result, type TextureFormat } from '@forgeax/engine-rhi';
|
|
5
|
+
import { ObservationUnavailableError } from '../errors/render';
|
|
6
|
+
import type { GpuDrivenProduction } from '../gpu-driven/production-raster';
|
|
7
|
+
import type { CameraSnapshot, RenderRecordPhase } from '../render-contract';
|
|
8
|
+
import type { DispatchEntry, ExtractedLights, RenderableSnapshot, SkyboxSnapshot, SkylightSnapshot } from '../render-system-extract';
|
|
9
|
+
import type { PersistentGpuDrivenState } from '../scene/render-scene';
|
|
10
|
+
import { type BindGroupCounts, type DispatchCounts, type FrameObservationSource, type RenderFrameState } from './frame-snapshot';
|
|
11
|
+
import type { RenderSystemInternals } from './render-context';
|
|
12
|
+
export type { FrameObservationSource } from './frame-snapshot';
|
|
13
|
+
export type FrameObservationReadback = (lease: CurrentFrameObservationLease) => Promise<Result<Uint8Array, Error>>;
|
|
14
|
+
export interface FrameObservationOptions {
|
|
15
|
+
readonly semantic: 'linear-hdr';
|
|
16
|
+
readonly readback: FrameObservationReadback;
|
|
17
|
+
}
|
|
18
|
+
export interface FrameObservationMetadata {
|
|
19
|
+
readonly format: TextureFormat;
|
|
20
|
+
readonly size: {
|
|
21
|
+
readonly width: number;
|
|
22
|
+
readonly height: number;
|
|
23
|
+
};
|
|
24
|
+
readonly usage: number;
|
|
25
|
+
readonly sample: number;
|
|
26
|
+
readonly frameId: number;
|
|
27
|
+
readonly lifetime: {
|
|
28
|
+
readonly frameId: number;
|
|
29
|
+
readonly state: 'active' | 'retired';
|
|
30
|
+
};
|
|
31
|
+
readonly pipelineId: 'forgeax::standard';
|
|
32
|
+
readonly backendId: string;
|
|
33
|
+
}
|
|
34
|
+
export interface FrameObservation {
|
|
35
|
+
readonly bytes: Uint8Array;
|
|
36
|
+
readonly metadata: FrameObservationMetadata;
|
|
37
|
+
}
|
|
38
|
+
export declare function observeCurrentFrame(options: FrameObservationOptions, source: FrameObservationSource | undefined, currentFrameId: number): Promise<Result<FrameObservation, ObservationUnavailableError>>;
|
|
39
|
+
import { type RenderFeatureGraphCandidate } from './typed-frame-graph';
|
|
40
|
+
/**
|
|
41
|
+
* A frame-local material table. Repeated snapshot objects share one UBO slot;
|
|
42
|
+
* each renderable keeps only the slot index used by each authored material.
|
|
43
|
+
*/
|
|
44
|
+
export interface MaterialSlotPlan<T extends object> {
|
|
45
|
+
readonly slotIndices: readonly (readonly number[])[];
|
|
46
|
+
readonly slots: readonly T[];
|
|
47
|
+
/** Index of the first renderable that referenced each slot. */
|
|
48
|
+
readonly slotOwners: readonly number[];
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Intern identical material snapshots into one frame-local slot table.
|
|
52
|
+
* Snapshot identity is the extract layer's invalidation token, so this keeps
|
|
53
|
+
* the same correctness boundary while avoiding duplicate payload assembly and
|
|
54
|
+
* upload for repeated scene instances.
|
|
55
|
+
*/
|
|
56
|
+
export declare function buildMaterialSlotPlan<T extends object>(materialGroups: readonly (readonly T[])[]): MaterialSlotPlan<T>;
|
|
57
|
+
/**
|
|
58
|
+
* Return the largest complete renderable prefix supported by a shared
|
|
59
|
+
* mesh/material capacity. Mesh rows consume one slot per renderable; material
|
|
60
|
+
* rows use the deduplicated slot indices assigned in first-seen order.
|
|
61
|
+
*/
|
|
62
|
+
export declare function findRenderablePrefixForSlotCapacity(materialSlotIndices: readonly (readonly number[])[], slotCapacity: number): number;
|
|
63
|
+
/** Count material slots reachable from a prefix of a first-seen slot plan. */
|
|
64
|
+
export declare function materialSlotCountForPrefix(materialSlotIndices: readonly (readonly number[])[], renderableCount: number): number;
|
|
65
|
+
export type RecordProfileRunner = <T>(phase: RenderRecordPhase, action: () => T) => T;
|
|
66
|
+
export declare function recordFrame(internals: RenderSystemInternals, world: World, cameras: CameraSnapshot[], lights: ExtractedLights, renderables: RenderableSnapshot[], transparentDispatch: readonly DispatchEntry[], frameState: RenderFrameState, dispatchCounts: DispatchCounts, bindGroupCounts: BindGroupCounts, skylight: SkylightSnapshot | undefined, skylightCount: number, skybox: SkyboxSnapshot | undefined, skyboxCount: number, postProcessParams: ReadonlyMap<string, Uint8Array>, worlds?: readonly World[], profilePhase?: RecordProfileRunner, gpuDriven?: {
|
|
67
|
+
readonly owner: GpuDrivenProduction;
|
|
68
|
+
readonly scene: PersistentGpuDrivenState | undefined;
|
|
69
|
+
readonly onCoverage: (ownsAll: boolean) => void;
|
|
70
|
+
}, renderReadLeases?: readonly RenderReadLease[], featureGraphCandidate?: RenderFeatureGraphCandidate, pointsLinesOwner?: import('./render-context').PointsLinesRecordOwner): boolean;
|
|
71
|
+
//# sourceMappingURL=frame.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frame.d.ts","sourceRoot":"","sources":["../../src/record/frame.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import type { World } from '@forgeax/engine-ecs';
|
|
2
|
+
import { type Mat4 } from '@forgeax/engine-math';
|
|
3
|
+
import type { CameraSnapshot } from '../render-contract';
|
|
4
|
+
import type { MaterialSnapshot, SkyboxSnapshot, SkylightSnapshot } from '../render-system-extract';
|
|
5
|
+
import type { RenderFrameState } from './frame-snapshot';
|
|
6
|
+
import type { RenderSystemInternals } from './render-context';
|
|
7
|
+
/** Convert pass-owned shader definitions into the manifest's canonical variant key. */
|
|
8
|
+
export declare function variantSetFromDefines(defines: Readonly<Record<string, string>> | undefined): string | undefined;
|
|
9
|
+
/**
|
|
10
|
+
* Select the equirect source for the shared lazy projection.
|
|
11
|
+
*
|
|
12
|
+
* Skylight uses handle 0 as a real "solid-color ambient" sentinel, so nullish
|
|
13
|
+
* coalescing cannot distinguish "no equirect" from a valid snapshot. Prefer a
|
|
14
|
+
* non-zero Skylight handle and fall back to SkyboxBackground otherwise.
|
|
15
|
+
*/
|
|
16
|
+
export declare function selectLazyEquirectHandle(skylight: Pick<SkylightSnapshot, 'equirectHandle'> | undefined, skybox: Pick<SkyboxSnapshot, 'equirectHandle'> | undefined): number;
|
|
17
|
+
/**
|
|
18
|
+
* feat-20260608-multi-light-warn-once M3: warn-once latch for directional
|
|
19
|
+
* N>1 overrun. Fires console.warn at most once per RenderSystem lifetime.
|
|
20
|
+
* Extracted as a pure helper so the warn-once logic is directly testable
|
|
21
|
+
* without a full recordFrame argument list (AC-05 (c)).
|
|
22
|
+
*/
|
|
23
|
+
export declare function warnMultiLightDirectional(frameState: Pick<RenderFrameState, 'warnedMultiLightDirectional'>, directionalCount: number, envOverride?: {
|
|
24
|
+
env?: {
|
|
25
|
+
NODE_ENV?: string;
|
|
26
|
+
};
|
|
27
|
+
}): void;
|
|
28
|
+
/**
|
|
29
|
+
* feat-20260608-multi-light-warn-once M3: warn-once latch for point light
|
|
30
|
+
* N>4 overrun (first-slice cap). Fires at most once per RenderSystem
|
|
31
|
+
* lifetime.
|
|
32
|
+
*/
|
|
33
|
+
export declare function warnMultiLightPoint(frameState: Pick<RenderFrameState, 'warnedMultiLightPoint'>, pointCount: number, envOverride?: {
|
|
34
|
+
env?: {
|
|
35
|
+
NODE_ENV?: string;
|
|
36
|
+
};
|
|
37
|
+
}): void;
|
|
38
|
+
/**
|
|
39
|
+
* feat-20260608-multi-light-warn-once M3: warn-once latch for spot light
|
|
40
|
+
* N>4 overrun (first-slice cap). Fires at most once per RenderSystem
|
|
41
|
+
* lifetime.
|
|
42
|
+
*/
|
|
43
|
+
export declare function warnMultiLightSpot(frameState: Pick<RenderFrameState, 'warnedMultiLightSpot'>, spotCount: number, envOverride?: {
|
|
44
|
+
env?: {
|
|
45
|
+
NODE_ENV?: string;
|
|
46
|
+
};
|
|
47
|
+
}): void;
|
|
48
|
+
/**
|
|
49
|
+
* feat-20260630-equirect-kind-internalized-ibl-declarative-skyligh M3 / w19:
|
|
50
|
+
* once-warn for >1 Skylight entity (first archetype hit wins). Fires at most
|
|
51
|
+
* once per RenderSystem lifetime and names the WINNING entity handle so the
|
|
52
|
+
* scene author can tell which Skylight is used and that the rest are ignored
|
|
53
|
+
* (F-8: warn carries conflicting entity info; charter P3 explicit failure with
|
|
54
|
+
* a warn-once signal floor, no per-frame flooding).
|
|
55
|
+
*/
|
|
56
|
+
export declare function warnMultiSkylight(frameState: Pick<RenderFrameState, 'warnedMultiSkylight'>, skylightCount: number, winningEntityHandle: number): void;
|
|
57
|
+
/**
|
|
58
|
+
* feat-20260630-equirect-kind-internalized-ibl-declarative-skyligh M3 / w19:
|
|
59
|
+
* once-warn for >1 SkyboxBackground entity (mirrors warnMultiSkylight). Names
|
|
60
|
+
* the winning entity handle; fires once per RenderSystem lifetime.
|
|
61
|
+
*/
|
|
62
|
+
export declare function warnMultiSkybox(frameState: Pick<RenderFrameState, 'warnedMultiSkybox'>, skyboxCount: number, winningEntityHandle: number): void;
|
|
63
|
+
/**
|
|
64
|
+
* feat-20260630-equirect-kind-internalized-ibl-declarative-skyligh M3 / w18:
|
|
65
|
+
* lazy equirect-to-cubemap projection trigger. Driven once per frame from
|
|
66
|
+
* `recordFrame` for the active equirect handle (Skylight's, or the
|
|
67
|
+
* SkyboxBackground's when no Skylight cubemap is present -- both reuse one
|
|
68
|
+
* handle). Implements the plan-strategy D-4 state machine:
|
|
69
|
+
*
|
|
70
|
+
* undefined (no entry) -> resolve POD + fire-and-forget projection; the
|
|
71
|
+
* store selects rgba8 output on WebGL2
|
|
72
|
+
* (the store writes status:'pending'
|
|
73
|
+
* synchronously, so this launches once)
|
|
74
|
+
* pending -> in flight; bind white fallback (no fire)
|
|
75
|
+
* ready -> bound by recordMainPass's IBL cache check
|
|
76
|
+
* failed -> fire EquirectProjectionFailedError ONCE
|
|
77
|
+
* per handle (R-2/AC-09 no retry)
|
|
78
|
+
* Fire-and-forget: `_uploadCubemapFromEquirect` is invoked WITHOUT await so the
|
|
79
|
+
* record stay synchronous; the store mutates its own status map and (on
|
|
80
|
+
* success) the per-device IblPipelineCache, which recordMainPass reads on a
|
|
81
|
+
* later frame. The structured error from a fire-and-forget failure is reported
|
|
82
|
+
* via the explicit `status === 'failed'` arm here (read on the next frame), not
|
|
83
|
+
* by awaiting the promise (which would block record).
|
|
84
|
+
*/
|
|
85
|
+
export declare function driveLazyEquirectProjection(internals: RenderSystemInternals, world: World, frameState: Pick<RenderFrameState, 'firedEquirectProjectionFailedHandles'>, equirectHandle: number): void;
|
|
86
|
+
/**
|
|
87
|
+
* Returns true when a MaterialSnapshot uses a builtin standard/PBR shader
|
|
88
|
+
* that will render black with zero lights.
|
|
89
|
+
*
|
|
90
|
+
* The default mid-grey fallback (materialShaderId === undefined) is excluded
|
|
91
|
+
* — it routes through defaultMaterialSnapshot and never triggers the
|
|
92
|
+
* zero-light warning. Custom shaders are also excluded: their lighting
|
|
93
|
+
* contract is authored by the shader and cannot be inferred from this
|
|
94
|
+
* generic diagnostic.
|
|
95
|
+
*
|
|
96
|
+
* @internal — exported so AC-02 zero-light-warning test can anchor to
|
|
97
|
+
* the production implementation rather than a test-local copy.
|
|
98
|
+
*/
|
|
99
|
+
export declare function isLitMaterialSnapshot(material: MaterialSnapshot): boolean;
|
|
100
|
+
export declare function computeViewMatrix(camera: CameraSnapshot): Mat4;
|
|
101
|
+
export declare function computeProjectionMatrix(camera: CameraSnapshot): Mat4;
|
|
102
|
+
//# sourceMappingURL=helpers.d.ts.map
|