@forgeax/engine-render 0.1.2
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 +1019 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/__tests__/analytic-sky-contract.test.d.ts +2 -0
- package/dist/__tests__/analytic-sky-contract.test.d.ts.map +1 -0
- package/dist/__tests__/analytic-sky-falsify.test.d.ts +2 -0
- package/dist/__tests__/analytic-sky-falsify.test.d.ts.map +1 -0
- package/dist/__tests__/assets-runtime-handoff.integration.test.d.ts +2 -0
- package/dist/__tests__/assets-runtime-handoff.integration.test.d.ts.map +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__/backend-selection.integration.test.d.ts +2 -0
- package/dist/__tests__/backend-selection.integration.test.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__/camera-temporal.test-d.d.ts +2 -0
- package/dist/__tests__/camera-temporal.test-d.d.ts.map +1 -0
- package/dist/__tests__/camera-temporal.test.d.ts +2 -0
- package/dist/__tests__/camera-temporal.test.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__/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__/directional-shadow-probe-atlas-layout.unit.test.d.ts +2 -0
- package/dist/__tests__/directional-shadow-probe-atlas-layout.unit.test.d.ts.map +1 -0
- package/dist/__tests__/environment-inspection.test.d.ts +2 -0
- package/dist/__tests__/environment-inspection.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__/fog-ai-user.fixture.d.ts +2 -0
- package/dist/__tests__/fog-ai-user.fixture.d.ts.map +1 -0
- package/dist/__tests__/fog-custom-render-feature.fixture.d.ts +16 -0
- package/dist/__tests__/fog-custom-render-feature.fixture.d.ts.map +1 -0
- package/dist/__tests__/fog-custom-render-feature.integration.test.d.ts +2 -0
- package/dist/__tests__/fog-custom-render-feature.integration.test.d.ts.map +1 -0
- package/dist/__tests__/fog-inspection.integration.test.d.ts +2 -0
- package/dist/__tests__/fog-inspection.integration.test.d.ts.map +1 -0
- package/dist/__tests__/fog-owner-state.integration.test.d.ts +2 -0
- package/dist/__tests__/fog-owner-state.integration.test.d.ts.map +1 -0
- package/dist/__tests__/fog-pipeline-topology.integration.test.d.ts +2 -0
- package/dist/__tests__/fog-pipeline-topology.integration.test.d.ts.map +1 -0
- package/dist/__tests__/fog-public-surface.integration.test.d.ts +2 -0
- package/dist/__tests__/fog-public-surface.integration.test.d.ts.map +1 -0
- package/dist/__tests__/fog-ray-contract.integration.test.d.ts +2 -0
- package/dist/__tests__/fog-ray-contract.integration.test.d.ts.map +1 -0
- package/dist/__tests__/fog-source-absence.integration.test.d.ts +2 -0
- package/dist/__tests__/fog-source-absence.integration.test.d.ts.map +1 -0
- package/dist/__tests__/fog-temporal.integration.test.d.ts +2 -0
- package/dist/__tests__/fog-temporal.integration.test.d.ts.map +1 -0
- package/dist/__tests__/frame-chain.unit.test.d.ts +2 -0
- package/dist/__tests__/frame-chain.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__/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 +12 -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.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-field-type-owner.test-d.d.ts +2 -0
- package/dist/__tests__/gpu-scene-field-type-owner.test-d.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__/hdrp-pipeline.unit.test.d.ts +2 -0
- package/dist/__tests__/hdrp-pipeline.unit.test.d.ts.map +1 -0
- package/dist/__tests__/ibl/ibl-fallback.unit.test.d.ts +2 -0
- package/dist/__tests__/ibl/ibl-fallback.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-derived-error-stop-draw.integration.test.d.ts +2 -0
- package/dist/__tests__/material-derived-error-stop-draw.integration.test.d.ts.map +1 -0
- package/dist/__tests__/material-derived-payload.integration.test.d.ts +2 -0
- package/dist/__tests__/material-derived-payload.integration.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__/materials.unit.test.d.ts +2 -0
- package/dist/__tests__/materials.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-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__/param-schema-projection-census.unit.test.d.ts +2 -0
- package/dist/__tests__/param-schema-projection-census.unit.test.d.ts.map +1 -0
- package/dist/__tests__/persistent-render-scene.unit.test.d.ts +2 -0
- package/dist/__tests__/persistent-render-scene.unit.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline-error-policy-owner.unit.test.d.ts +2 -0
- package/dist/__tests__/pipeline-error-policy-owner.unit.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline-pass-trace.test.d.ts +2 -0
- package/dist/__tests__/pipeline-pass-trace.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline-stage-owner.test-d.d.ts +2 -0
- package/dist/__tests__/pipeline-stage-owner.test-d.d.ts.map +1 -0
- package/dist/__tests__/plugin.test.d.ts +2 -0
- package/dist/__tests__/plugin.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-backend-matrix.unit.test.d.ts +2 -0
- package/dist/__tests__/prepared-graphics-backend-matrix.unit.test.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-recording.unit.test.d.ts +2 -0
- package/dist/__tests__/prepared-graphics-resolver-recording.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-pipeline-id.test-d.d.ts +2 -0
- package/dist/__tests__/public-pipeline-id.test-d.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-dispatch-membership.unit.test.d.ts +2 -0
- package/dist/__tests__/render-dispatch-membership.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-construction.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-construction.unit.test.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-error-code-owner.test-d.d.ts +2 -0
- package/dist/__tests__/render-feature-error-code-owner.test-d.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-buffer-usage-owner.test-d.d.ts +2 -0
- package/dist/__tests__/render-feature-gpu-buffer-usage-owner.test-d.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-graph.integration.test.d.ts +2 -0
- package/dist/__tests__/render-feature-graph.integration.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-graphics-staging.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-graphics-staging.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-order.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-order.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-recording.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-prepared-graphics-recording.unit.test.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-staging.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-staging.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__/renderer-render-scene-public.test-d.d.ts +2 -0
- package/dist/__tests__/renderer-render-scene-public.test-d.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__/scene-temporal-coverage.unit.test.d.ts +2 -0
- package/dist/__tests__/scene-temporal-coverage.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-kernel-surface.unit.test.d.ts +2 -0
- package/dist/__tests__/ssao-kernel-surface.unit.test.d.ts.map +1 -0
- package/dist/__tests__/sun-snapshot-consumers.test.d.ts +2 -0
- package/dist/__tests__/sun-snapshot-consumers.test.d.ts.map +1 -0
- package/dist/__tests__/surface-backend-kind-owner.test-d.d.ts +2 -0
- package/dist/__tests__/surface-backend-kind-owner.test-d.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__/taa-history-store.unit.test.d.ts +2 -0
- package/dist/__tests__/taa-history-store.unit.test.d.ts.map +1 -0
- package/dist/__tests__/temporal-frame-transaction.integration.test.d.ts +2 -0
- package/dist/__tests__/temporal-frame-transaction.integration.test.d.ts.map +1 -0
- package/dist/__tests__/temporal-inspection.unit.test.d.ts +2 -0
- package/dist/__tests__/temporal-inspection.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-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/assets/__tests__/asset-decoders.unit.test.d.ts +2 -0
- package/dist/assets/__tests__/asset-decoders.unit.test.d.ts.map +1 -0
- package/dist/assets/__tests__/mipmap-generator.unit.test.d.ts +2 -0
- package/dist/assets/__tests__/mipmap-generator.unit.test.d.ts.map +1 -0
- package/dist/assets/__tests__/render-asset-port.unit.test.d.ts +2 -0
- package/dist/assets/__tests__/render-asset-port.unit.test.d.ts.map +1 -0
- package/dist/assets/__tests__/resolve-render-asset.unit.test.d.ts +2 -0
- package/dist/assets/__tests__/resolve-render-asset.unit.test.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 +5 -0
- package/dist/authoring.mjs.map +1 -0
- package/dist/chunk-33UF5SAO.mjs +7397 -0
- package/dist/chunk-33UF5SAO.mjs.map +1 -0
- package/dist/chunk-A5QCJSNL.mjs +29913 -0
- package/dist/chunk-A5QCJSNL.mjs.map +1 -0
- package/dist/chunk-JMSB7AR4.mjs +3 -0
- package/dist/chunk-JMSB7AR4.mjs.map +1 -0
- package/dist/chunk-LXNGO6AO.mjs +569 -0
- package/dist/chunk-LXNGO6AO.mjs.map +1 -0
- package/dist/chunk-QRXPSX4X.mjs +659 -0
- package/dist/chunk-QRXPSX4X.mjs.map +1 -0
- package/dist/chunk-YAKEQPWO.mjs +1439 -0
- package/dist/chunk-YAKEQPWO.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__/atmosphere-red.test.d.ts +2 -0
- package/dist/components/__tests__/atmosphere-red.test.d.ts.map +1 -0
- package/dist/components/__tests__/atmosphere.test.d.ts +2 -0
- package/dist/components/__tests__/atmosphere.test.d.ts.map +1 -0
- package/dist/components/__tests__/fog.test-d.d.ts +2 -0
- package/dist/components/__tests__/fog.test-d.d.ts.map +1 -0
- package/dist/components/__tests__/fog.test.d.ts +2 -0
- package/dist/components/__tests__/fog.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/atmosphere.d.ts +18 -0
- package/dist/components/atmosphere.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/environment.d.ts +116 -0
- package/dist/components/environment.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 +22 -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/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/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/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 +75 -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 +37 -0
- package/dist/components/sprite-playback-mode.d.ts.map +1 -0
- package/dist/components/sprite-region-override.d.ts +47 -0
- package/dist/components/sprite-region-override.d.ts.map +1 -0
- package/dist/components/tile-layer.d.ts +101 -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 +2 -0
- package/dist/construct-renderer.d.ts.map +1 -0
- package/dist/construct-renderer.mjs +6 -0
- package/dist/construct-renderer.mjs.map +1 -0
- package/dist/debug-draw-glue.d.ts +56 -0
- package/dist/debug-draw-glue.d.ts.map +1 -0
- package/dist/deferred-lighting.d.ts +13 -0
- package/dist/deferred-lighting.d.ts.map +1 -0
- package/dist/dynamic-texture-store.d.ts +42 -0
- package/dist/dynamic-texture-store.d.ts.map +1 -0
- package/dist/engine-metrics.d.ts +23 -0
- package/dist/engine-metrics.d.ts.map +1 -0
- package/dist/environment/__tests__/failure-injection.test.d.ts +2 -0
- package/dist/environment/__tests__/failure-injection.test.d.ts.map +1 -0
- package/dist/environment/__tests__/generation-red.test.d.ts +2 -0
- package/dist/environment/__tests__/generation-red.test.d.ts.map +1 -0
- package/dist/environment/__tests__/generation.test.d.ts +2 -0
- package/dist/environment/__tests__/generation.test.d.ts.map +1 -0
- package/dist/environment/__tests__/graph-transaction.test.d.ts +2 -0
- package/dist/environment/__tests__/graph-transaction.test.d.ts.map +1 -0
- package/dist/environment/__tests__/inspection-red.test.d.ts +2 -0
- package/dist/environment/__tests__/inspection-red.test.d.ts.map +1 -0
- package/dist/environment/__tests__/lifecycle-evidence.test.d.ts +2 -0
- package/dist/environment/__tests__/lifecycle-evidence.test.d.ts.map +1 -0
- package/dist/environment/__tests__/pipeline-topology.test.d.ts +2 -0
- package/dist/environment/__tests__/pipeline-topology.test.d.ts.map +1 -0
- package/dist/environment/__tests__/readiness.test.d.ts +2 -0
- package/dist/environment/__tests__/readiness.test.d.ts.map +1 -0
- package/dist/environment/__tests__/recovery.test.d.ts +2 -0
- package/dist/environment/__tests__/recovery.test.d.ts.map +1 -0
- package/dist/environment/__tests__/resize-dispose.test.d.ts +2 -0
- package/dist/environment/__tests__/resize-dispose.test.d.ts.map +1 -0
- package/dist/environment/__tests__/signature-red.test.d.ts +2 -0
- package/dist/environment/__tests__/signature-red.test.d.ts.map +1 -0
- package/dist/environment/__tests__/signature.test.d.ts +2 -0
- package/dist/environment/__tests__/signature.test.d.ts.map +1 -0
- package/dist/environment/descriptors.d.ts +2 -0
- package/dist/environment/descriptors.d.ts.map +1 -0
- package/dist/environment/extracted-environment.d.ts +53 -0
- package/dist/environment/extracted-environment.d.ts.map +1 -0
- package/dist/environment/generation.d.ts +62 -0
- package/dist/environment/generation.d.ts.map +1 -0
- package/dist/environment/gpu-bundle.d.ts +23 -0
- package/dist/environment/gpu-bundle.d.ts.map +1 -0
- package/dist/environment/graph.d.ts +108 -0
- package/dist/environment/graph.d.ts.map +1 -0
- package/dist/environment/inspection.d.ts +48 -0
- package/dist/environment/inspection.d.ts.map +1 -0
- package/dist/environment/lifecycle.d.ts +22 -0
- package/dist/environment/lifecycle.d.ts.map +1 -0
- package/dist/environment/readiness.d.ts +29 -0
- package/dist/environment/readiness.d.ts.map +1 -0
- package/dist/environment/signature.d.ts +70 -0
- package/dist/environment/signature.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 +78 -0
- package/dist/errors/recover.d.ts.map +1 -0
- package/dist/errors/render.d.ts +633 -0
- package/dist/errors/render.d.ts.map +1 -0
- package/dist/extract/__tests__/directional-csm-domain.unit.test.d.ts +2 -0
- package/dist/extract/__tests__/directional-csm-domain.unit.test.d.ts.map +1 -0
- package/dist/extract/__tests__/environment-source.test.d.ts +2 -0
- package/dist/extract/__tests__/environment-source.test.d.ts.map +1 -0
- package/dist/extract/__tests__/schema-readers.unit.test.d.ts +2 -0
- package/dist/extract/__tests__/schema-readers.unit.test.d.ts.map +1 -0
- package/dist/extract/directional-csm.d.ts +129 -0
- package/dist/extract/directional-csm.d.ts.map +1 -0
- package/dist/extract/index.d.ts +5 -0
- package/dist/extract/index.d.ts.map +1 -0
- package/dist/extract/material-interface.d.ts +56 -0
- package/dist/extract/material-interface.d.ts.map +1 -0
- package/dist/extract/schema-readers.d.ts +20 -0
- package/dist/extract/schema-readers.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/graph-contribution.d.ts +64 -0
- package/dist/features/graph-contribution.d.ts.map +1 -0
- package/dist/features/host.d.ts +100 -0
- package/dist/features/host.d.ts.map +1 -0
- package/dist/features/index.d.ts +21 -0
- package/dist/features/index.d.ts.map +1 -0
- package/dist/features/morph/index.d.ts +3 -0
- package/dist/features/morph/index.d.ts.map +1 -0
- package/dist/features/morph/morph-bounds.d.ts +42 -0
- package/dist/features/morph/morph-bounds.d.ts.map +1 -0
- package/dist/features/morph/morph-feature.d.ts +45 -0
- package/dist/features/morph/morph-feature.d.ts.map +1 -0
- package/dist/features/prepared-gpu-work.d.ts +113 -0
- package/dist/features/prepared-gpu-work.d.ts.map +1 -0
- package/dist/features/prepared-graphics-store.d.ts +65 -0
- package/dist/features/prepared-graphics-store.d.ts.map +1 -0
- package/dist/features/prepared-graphics.d.ts +225 -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 +15 -0
- package/dist/features/render-graph-contribution.d.ts.map +1 -0
- package/dist/features/render-graph-raster.d.ts +34 -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/scene-temporal.d.ts +45 -0
- package/dist/features/scene-temporal.d.ts.map +1 -0
- package/dist/features/taa-resolve.d.ts +21 -0
- package/dist/features/taa-resolve.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 +247 -0
- package/dist/features/types.d.ts.map +1 -0
- package/dist/frame-chain.d.ts +14 -0
- package/dist/frame-chain.d.ts.map +1 -0
- package/dist/fullscreen-post-process-pass.d.ts +178 -0
- package/dist/fullscreen-post-process-pass.d.ts.map +1 -0
- package/dist/glyph-text-layout-system.d.ts +18 -0
- package/dist/glyph-text-layout-system.d.ts.map +1 -0
- package/dist/gpu-driven/batch-topology.d.ts +124 -0
- package/dist/gpu-driven/batch-topology.d.ts.map +1 -0
- package/dist/gpu-driven/production-raster.d.ts +150 -0
- package/dist/gpu-driven/production-raster.d.ts.map +1 -0
- package/dist/gpu-driven/view-gpu.d.ts +141 -0
- package/dist/gpu-driven/view-gpu.d.ts.map +1 -0
- package/dist/gpu-driven/view-reference.d.ts +15 -0
- package/dist/gpu-driven/view-reference.d.ts.map +1 -0
- package/dist/gpu-resource-store.d.ts +294 -0
- package/dist/gpu-resource-store.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 +171 -0
- package/dist/gpu-scene-schema.d.ts.map +1 -0
- package/dist/gpu-scene.d.ts +81 -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 +213 -0
- package/dist/hdrp-buffers.d.ts.map +1 -0
- package/dist/hdrp-cluster-membership.d.ts +2 -0
- package/dist/hdrp-cluster-membership.d.ts.map +1 -0
- package/dist/hdrp-pipeline.d.ts +36 -0
- package/dist/hdrp-pipeline.d.ts.map +1 -0
- package/dist/ibl/IblPipelineCache.d.ts +274 -0
- package/dist/ibl/IblPipelineCache.d.ts.map +1 -0
- package/dist/ibl/cubemap-projection.d.ts +23 -0
- package/dist/ibl/cubemap-projection.d.ts.map +1 -0
- package/dist/ibl/face-uniforms.d.ts +65 -0
- package/dist/ibl/face-uniforms.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 +57 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.mjs +5 -0
- package/dist/index.mjs.map +1 -0
- package/dist/instance-buffer-cache.d.ts +59 -0
- package/dist/instance-buffer-cache.d.ts.map +1 -0
- package/dist/internal.d.ts +74 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.mjs +45 -0
- package/dist/internal.mjs.map +1 -0
- package/dist/lifecycle.d.ts +28 -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 +50 -0
- package/dist/materials.d.ts.map +1 -0
- package/dist/mesh-material-bindings.d.ts +44 -0
- package/dist/mesh-material-bindings.d.ts.map +1 -0
- package/dist/mesh-update-errors.d.ts +71 -0
- package/dist/mesh-update-errors.d.ts.map +1 -0
- package/dist/mipmap-generator.d.ts +39 -0
- package/dist/mipmap-generator.d.ts.map +1 -0
- package/dist/param-schema-projection-census.d.ts +18 -0
- package/dist/param-schema-projection-census.d.ts.map +1 -0
- package/dist/pbr-pipeline.d.ts +253 -0
- package/dist/pbr-pipeline.d.ts.map +1 -0
- package/dist/persistent-render-scene.d.ts +158 -0
- package/dist/persistent-render-scene.d.ts.map +1 -0
- package/dist/pipeline/index.d.ts +11 -0
- package/dist/pipeline/index.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-errors.d.ts +110 -0
- package/dist/pipeline-errors.d.ts.map +1 -0
- package/dist/pipeline-spec.d.ts +506 -0
- package/dist/pipeline-spec.d.ts.map +1 -0
- package/dist/plugin.d.ts +17 -0
- package/dist/plugin.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/__tests__/schema-readers.unit.test.d.ts +2 -0
- package/dist/prepare/__tests__/schema-readers.unit.test.d.ts.map +1 -0
- package/dist/prepare/index.d.ts +4 -0
- package/dist/prepare/index.d.ts.map +1 -0
- package/dist/prepare/prepared-graphics-resolver.d.ts +62 -0
- package/dist/prepare/prepared-graphics-resolver.d.ts.map +1 -0
- package/dist/prepare/schema-readers.d.ts +11 -0
- package/dist/prepare/schema-readers.d.ts.map +1 -0
- package/dist/record/__tests__/environment-record.test.d.ts +2 -0
- package/dist/record/__tests__/environment-record.test.d.ts.map +1 -0
- package/dist/record/__tests__/frame-targets.unit.test.d.ts +2 -0
- package/dist/record/__tests__/frame-targets.unit.test.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__/membership-timing.unit.test.d.ts +2 -0
- package/dist/record/__tests__/membership-timing.unit.test.d.ts.map +1 -0
- package/dist/record/__tests__/render-submission.integration.test.d.ts +2 -0
- package/dist/record/__tests__/render-submission.integration.test.d.ts.map +1 -0
- package/dist/record/__tests__/render-submission.perf.test.d.ts +2 -0
- package/dist/record/__tests__/render-submission.perf.test.d.ts.map +1 -0
- package/dist/record/__tests__/shadow-submit-mode.unit.test.d.ts +2 -0
- package/dist/record/__tests__/shadow-submit-mode.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/__tests__/view-ubo-layout.unit.test.d.ts +2 -0
- package/dist/record/__tests__/view-ubo-layout.unit.test.d.ts.map +1 -0
- package/dist/record/frame-lighting.d.ts +187 -0
- package/dist/record/frame-lighting.d.ts.map +1 -0
- package/dist/record/frame-observation.d.ts +38 -0
- package/dist/record/frame-observation.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 +53 -0
- package/dist/record/frame-targets.d.ts.map +1 -0
- package/dist/record/frame.d.ts +59 -0
- package/dist/record/frame.d.ts.map +1 -0
- package/dist/record/helpers.d.ts +101 -0
- package/dist/record/helpers.d.ts.map +1 -0
- package/dist/record/index.d.ts +15 -0
- package/dist/record/index.d.ts.map +1 -0
- package/dist/record/main-pass-geometry.d.ts +20 -0
- package/dist/record/main-pass-geometry.d.ts.map +1 -0
- package/dist/record/main-pass-material.d.ts +173 -0
- package/dist/record/main-pass-material.d.ts.map +1 -0
- package/dist/record/main-pass-skin.d.ts +46 -0
- package/dist/record/main-pass-skin.d.ts.map +1 -0
- package/dist/record/main-pass-sprite-draws.d.ts +18 -0
- package/dist/record/main-pass-sprite-draws.d.ts.map +1 -0
- package/dist/record/main-pass-sprite.d.ts +69 -0
- package/dist/record/main-pass-sprite.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/material-payload.d.ts +43 -0
- package/dist/record/material-payload.d.ts.map +1 -0
- package/dist/record/material-slot-plan.d.ts +26 -0
- package/dist/record/material-slot-plan.d.ts.map +1 -0
- package/dist/record/membership-timing.d.ts +232 -0
- package/dist/record/membership-timing.d.ts.map +1 -0
- package/dist/record/mesh-ssbo.d.ts +173 -0
- package/dist/record/mesh-ssbo.d.ts.map +1 -0
- package/dist/record/shadow-caster-uniform.d.ts +8 -0
- package/dist/record/shadow-caster-uniform.d.ts.map +1 -0
- package/dist/record/shadow-pass.d.ts +125 -0
- package/dist/record/shadow-pass.d.ts.map +1 -0
- package/dist/record/shadow-submit-mode.d.ts +66 -0
- package/dist/record/shadow-submit-mode.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 +13 -0
- package/dist/record/typed-frame-graph.d.ts.map +1 -0
- package/dist/record/view-ubo.d.ts +39 -0
- package/dist/record/view-ubo.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-dispatch-membership.d.ts +47 -0
- package/dist/render-dispatch-membership.d.ts.map +1 -0
- package/dist/render-graph-primitives.d.ts +424 -0
- package/dist/render-graph-primitives.d.ts.map +1 -0
- package/dist/render-pipeline-context.d.ts +289 -0
- package/dist/render-pipeline-context.d.ts.map +1 -0
- package/dist/render-pipeline-target.d.ts +16 -0
- package/dist/render-pipeline-target.d.ts.map +1 -0
- package/dist/render-pipeline.d.ts +149 -0
- package/dist/render-pipeline.d.ts.map +1 -0
- package/dist/render-scene-projection.d.ts +174 -0
- package/dist/render-scene-projection.d.ts.map +1 -0
- package/dist/render-system-extract.d.ts +1096 -0
- package/dist/render-system-extract.d.ts.map +1 -0
- package/dist/render-system-fold.d.ts +266 -0
- package/dist/render-system-fold.d.ts.map +1 -0
- package/dist/render-system.d.ts +814 -0
- package/dist/render-system.d.ts.map +1 -0
- package/dist/renderer/asset-service.d.ts +10 -0
- package/dist/renderer/asset-service.d.ts.map +1 -0
- package/dist/renderer/backend-selection.d.ts +26 -0
- package/dist/renderer/backend-selection.d.ts.map +1 -0
- package/dist/renderer/environment-classify.d.ts +6 -0
- package/dist/renderer/environment-classify.d.ts.map +1 -0
- package/dist/renderer/environment-error.d.ts +13 -0
- package/dist/renderer/environment-error.d.ts.map +1 -0
- package/dist/renderer/material/assembly.d.ts +22 -0
- package/dist/renderer/material/assembly.d.ts.map +1 -0
- package/dist/renderer/material/pipeline-projection.d.ts +91 -0
- package/dist/renderer/material/pipeline-projection.d.ts.map +1 -0
- package/dist/renderer/renderer-factory.d.ts +283 -0
- package/dist/renderer/renderer-factory.d.ts.map +1 -0
- package/dist/renderer.d.ts +771 -0
- package/dist/renderer.d.ts.map +1 -0
- package/dist/scene-instances/post-spawn-resolve-joints.d.ts +33 -0
- package/dist/scene-instances/post-spawn-resolve-joints.d.ts.map +1 -0
- package/dist/scene-utils/collect-subtree.d.ts +11 -0
- package/dist/scene-utils/collect-subtree.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 +31 -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/ssao-data.d.ts +34 -0
- package/dist/ssao-data.d.ts.map +1 -0
- package/dist/surface-format.d.ts +10 -0
- package/dist/surface-format.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 +51 -0
- package/dist/systems/skin-palette-allocator.d.ts.map +1 -0
- package/dist/systems/transparent-sort-config.d.ts +91 -0
- package/dist/systems/transparent-sort-config.d.ts.map +1 -0
- package/dist/taa-history-store.d.ts +88 -0
- package/dist/taa-history-store.d.ts.map +1 -0
- package/dist/temporal-coverage.d.ts +35 -0
- package/dist/temporal-coverage.d.ts.map +1 -0
- package/dist/temporal-frame-transaction.d.ts +92 -0
- package/dist/temporal-frame-transaction.d.ts.map +1 -0
- package/dist/temporal-inspection.d.ts +57 -0
- package/dist/temporal-inspection.d.ts.map +1 -0
- package/dist/temporal-view.d.ts +43 -0
- package/dist/temporal-view.d.ts.map +1 -0
- package/dist/tilemap/resolve-tileset-runtime.d.ts +23 -0
- package/dist/tilemap/resolve-tileset-runtime.d.ts.map +1 -0
- package/dist/tilemap-chunk-extract-system.d.ts +142 -0
- package/dist/tilemap-chunk-extract-system.d.ts.map +1 -0
- package/dist/typed-render-graph-primitives.d.ts +59 -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/dist/urp-pipeline.d.ts +4 -0
- package/dist/urp-pipeline.d.ts.map +1 -0
- package/package.json +94 -0
- package/src/__tests__/analytic-sky-contract.test.ts +27 -0
- package/src/__tests__/analytic-sky-falsify-carriers.mjs +43 -0
- package/src/__tests__/analytic-sky-falsify.test.ts +94 -0
- package/src/__tests__/assets-runtime-handoff.integration.test.ts +36 -0
- package/src/__tests__/authoring-path.unit.test.ts +14 -0
- package/src/__tests__/backend-selection-rhi-capture.test-d.ts +21 -0
- package/src/__tests__/backend-selection.integration.test.ts +11 -0
- package/src/__tests__/callback-inference.test-d.ts +5 -0
- package/src/__tests__/camera-temporal.test-d.ts +8 -0
- package/src/__tests__/camera-temporal.test.ts +188 -0
- package/src/__tests__/cluster-binner.test.ts +272 -0
- package/src/__tests__/cluster-grid-default-surface.unit.test.ts +17 -0
- package/src/__tests__/construct-renderer-identity.unit.test.ts +10 -0
- package/src/__tests__/direct-extract-consumer-contract.test-d.ts +34 -0
- package/src/__tests__/direct-light-snapshot.unit.test.ts +71 -0
- package/src/__tests__/directional-shadow-probe-atlas-layout.unit.test.ts +18 -0
- package/src/__tests__/environment-inspection.test.ts +45 -0
- package/src/__tests__/factory-contract.integration.test.ts +331 -0
- package/src/__tests__/fallback-row-stride-surface.unit.test.ts +18 -0
- package/src/__tests__/fog-ai-user.fixture.ts +350 -0
- package/src/__tests__/fog-custom-render-feature.fixture.ts +33 -0
- package/src/__tests__/fog-custom-render-feature.integration.test.ts +76 -0
- package/src/__tests__/fog-inspection.integration.test.ts +127 -0
- package/src/__tests__/fog-owner-state.integration.test.ts +112 -0
- package/src/__tests__/fog-pipeline-topology.integration.test.ts +93 -0
- package/src/__tests__/fog-public-surface.integration.test.ts +60 -0
- package/src/__tests__/fog-ray-contract.integration.test.ts +73 -0
- package/src/__tests__/fog-source-absence.integration.test.ts +51 -0
- package/src/__tests__/fog-temporal.integration.test.ts +115 -0
- package/src/__tests__/frame-chain.unit.test.ts +26 -0
- package/src/__tests__/frame-observation.contract.test.ts +103 -0
- package/src/__tests__/glyph-text-layout-recovery.unit.test.ts +172 -0
- package/src/__tests__/gpu-driven-indirect-raster-evidence.ts +347 -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 +609 -0
- package/src/__tests__/gpu-driven-scaling.unit.test.ts +90 -0
- package/src/__tests__/gpu-driven-view-gpu-evidence.ts +192 -0
- package/src/__tests__/gpu-driven-view-graph.integration.test.ts +128 -0
- package/src/__tests__/gpu-driven-view.browser.test.ts +19 -0
- package/src/__tests__/gpu-driven-view.dawn.test.ts +17 -0
- package/src/__tests__/gpu-driven-view.unit.test.ts +455 -0
- package/src/__tests__/gpu-resource-store-stride.unit.test.ts +59 -0
- package/src/__tests__/gpu-scene-field-type-owner.test-d.ts +27 -0
- package/src/__tests__/gpu-scene-render-graph-gpu.ts +309 -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 +209 -0
- package/src/__tests__/gpu-scene.unit.test.ts +161 -0
- package/src/__tests__/hdrp-pipeline.unit.test.ts +100 -0
- package/src/__tests__/ibl/ibl-fallback.unit.test.ts +23 -0
- package/src/__tests__/infinite-grid-no-vertex-probe.unit.test.ts +124 -0
- package/src/__tests__/injection-kind-owner.test-d.ts +14 -0
- package/src/__tests__/ktx2-basis-gpu-consumer.dawn.test.ts +719 -0
- package/src/__tests__/light-buffer-layout.unit.test.ts +85 -0
- package/src/__tests__/material-contract-inventory.unit.test.ts +24 -0
- package/src/__tests__/material-cooked-projection.unit.test.ts +177 -0
- package/src/__tests__/material-derived-error-stop-draw.integration.test.ts +69 -0
- package/src/__tests__/material-derived-payload.integration.test.ts +164 -0
- package/src/__tests__/material-snapshot-mutation.integration.test.ts +58 -0
- package/src/__tests__/material-static-dynamic-route.unit.test.ts +113 -0
- package/src/__tests__/material-stride-surface.unit.test.ts +32 -0
- package/src/__tests__/materials.unit.test.ts +25 -0
- package/src/__tests__/mesh-buffer-usage-surface.unit.test.ts +107 -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 +166 -0
- package/src/__tests__/morph-feature-gpu-work.integration.test.ts +78 -0
- package/src/__tests__/morph-visual-evidence.integration.test.ts +66 -0
- package/src/__tests__/nineslice-handle-surface.unit.test.ts +14 -0
- package/src/__tests__/param-schema-projection-census.unit.test.ts +40 -0
- package/src/__tests__/persistent-render-scene.unit.test.ts +1311 -0
- package/src/__tests__/pipeline-error-policy-owner.unit.test.ts +167 -0
- package/src/__tests__/pipeline-pass-trace.test.ts +92 -0
- package/src/__tests__/pipeline-stage-owner.test-d.ts +13 -0
- package/src/__tests__/plugin.test.ts +25 -0
- package/src/__tests__/post-process-error-policy-owner.unit.test.ts +208 -0
- package/src/__tests__/prepared-buffer-kind-owner.test-d.ts +29 -0
- package/src/__tests__/prepared-graphics-backend-matrix.unit.test.ts +129 -0
- package/src/__tests__/prepared-graphics-capability.unit.test.ts +140 -0
- package/src/__tests__/prepared-graphics-generation.unit.test.ts +175 -0
- package/src/__tests__/prepared-graphics-lifecycle.unit.test.ts +206 -0
- package/src/__tests__/prepared-graphics-pipeline-warmup.unit.test.ts +29 -0
- package/src/__tests__/prepared-graphics-resolver-recording.unit.test.ts +180 -0
- package/src/__tests__/prepared-graphics-resolver.unit.test.ts +287 -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 +70 -0
- package/src/__tests__/profiler-phase-token.test.ts +84 -0
- package/src/__tests__/public-pipeline-id.test-d.ts +6 -0
- package/src/__tests__/public-surface.test-d.ts +32 -0
- package/src/__tests__/recover-error-policy-owner.unit.test.ts +127 -0
- package/src/__tests__/render-dispatch-membership.unit.test.ts +117 -0
- package/src/__tests__/render-error-code-owner.test-d.ts +115 -0
- package/src/__tests__/render-error-detail-ssot.test-d.ts +234 -0
- package/src/__tests__/render-error-exhaustive.test-d.ts +84 -0
- package/src/__tests__/render-feature-assembly.test-d.ts +51 -0
- package/src/__tests__/render-feature-construction.unit.test.ts +124 -0
- package/src/__tests__/render-feature-context.test-d.ts +81 -0
- package/src/__tests__/render-feature-contract.test-d.ts +58 -0
- package/src/__tests__/render-feature-diagnostics.unit.test.ts +151 -0
- package/src/__tests__/render-feature-docs.unit.test.ts +88 -0
- package/src/__tests__/render-feature-error-code-owner.test-d.ts +27 -0
- package/src/__tests__/render-feature-errors.unit.test.ts +47 -0
- package/src/__tests__/render-feature-gpu-buffer-usage-owner.test-d.ts +46 -0
- package/src/__tests__/render-feature-gpu-work.integration.test.ts +377 -0
- package/src/__tests__/render-feature-graph.integration.test.ts +205 -0
- package/src/__tests__/render-feature-graphics-staging.unit.test.ts +200 -0
- package/src/__tests__/render-feature-order.unit.test.ts +66 -0
- package/src/__tests__/render-feature-prepared-diagnostics.unit.test.ts +101 -0
- package/src/__tests__/render-feature-prepared-errors.test-d.ts +82 -0
- package/src/__tests__/render-feature-prepared-graphics-docs.unit.test.ts +141 -0
- package/src/__tests__/render-feature-prepared-graphics-isolation.unit.test.ts +122 -0
- package/src/__tests__/render-feature-prepared-graphics-negative.test-d.ts +59 -0
- package/src/__tests__/render-feature-prepared-graphics-recording.unit.test.ts +107 -0
- package/src/__tests__/render-feature-prepared-graphics.test-d.ts +96 -0
- package/src/__tests__/render-feature-prepared-graphics.unit.test.ts +121 -0
- package/src/__tests__/render-feature-public-surface.test-d.ts +75 -0
- package/src/__tests__/render-feature-retry.unit.test.ts +128 -0
- package/src/__tests__/render-feature-scheduling.unit.test.ts +122 -0
- package/src/__tests__/render-feature-stage-failed-policy-owner.unit.test.ts +146 -0
- package/src/__tests__/render-feature-stage-fault-recovery.unit.test.ts +236 -0
- package/src/__tests__/render-feature-staging.unit.test.ts +94 -0
- package/src/__tests__/render-feature-visibility-context.test-d.ts +38 -0
- package/src/__tests__/render-feature-visibility-context.unit.test.ts +38 -0
- package/src/__tests__/render-feature-zero-work.unit.test.ts +82 -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 +206 -0
- package/src/__tests__/renderer-factory-material-contract.unit.test.ts +125 -0
- package/src/__tests__/renderer-lifecycle.integration.test.ts +10 -0
- package/src/__tests__/renderer-render-scene-public.test-d.ts +27 -0
- package/src/__tests__/rhi-backend-package-boundary.unit.test.ts +11 -0
- package/src/__tests__/scene-temporal-coverage.unit.test.ts +259 -0
- package/src/__tests__/scriptable-pack-consumer.test-d.ts +14 -0
- package/src/__tests__/shader-stage-surface.unit.test.ts +38 -0
- package/src/__tests__/ssao-kernel-surface.unit.test.ts +15 -0
- package/src/__tests__/sun-snapshot-consumers.test.ts +35 -0
- package/src/__tests__/surface-backend-kind-owner.test-d.ts +42 -0
- package/src/__tests__/surface-configuration.unit.test.ts +92 -0
- package/src/__tests__/taa-history-store.unit.test.ts +196 -0
- package/src/__tests__/temporal-frame-transaction.integration.test.ts +537 -0
- package/src/__tests__/temporal-inspection.unit.test.ts +138 -0
- package/src/__tests__/texture-usage-surface.unit.test.ts +61 -0
- package/src/__tests__/typed-pipeline-topology.unit.test.ts +389 -0
- package/src/__tests__/urp-pipeline-targets.unit.test.ts +52 -0
- package/src/__tests__/urp-pipeline.unit.test.ts +14 -0
- package/src/__tests__/vertex-color-pipeline.unit.test.ts +124 -0
- package/src/__tests__/vertex-layout-consumer.unit.test.ts +25 -0
- package/src/__tests__/visibility-diagnostics.integration.test.ts +66 -0
- package/src/__tests__/visibility-extract.integration.test.ts +89 -0
- package/src/__tests__/visibility-extract.perf.test.ts +96 -0
- package/src/__tests__/visibility-feature-dedup.integration.test.ts +57 -0
- package/src/__tests__/visibility-hidden-report.unit.test.ts +37 -0
- package/src/__tests__/visibility-instances.integration.test.ts +50 -0
- package/src/__tests__/visibility-multi-world.integration.test.ts +54 -0
- package/src/__tests__/visibility-producer-matrix.integration.test.ts +191 -0
- package/src/__tests__/visibility-producer-matrix.unit.test.ts +96 -0
- package/src/__tests__/visibility-public-surface.test-d.ts +26 -0
- package/src/__tests__/visibility-resolver.unit.test.ts +84 -0
- package/src/__tests__/visibility-snapshot-contract.unit.test.ts +59 -0
- package/src/__tests__/vocabulary.unit.test.ts +21 -0
- package/src/assets/__tests__/asset-decoders.unit.test.ts +92 -0
- package/src/assets/__tests__/mipmap-generator.unit.test.ts +52 -0
- package/src/assets/__tests__/render-asset-port.unit.test.ts +54 -0
- package/src/assets/__tests__/resolve-render-asset.unit.test.ts +47 -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 +24 -0
- package/src/cluster-binner.ts +700 -0
- package/src/components/__tests__/atmosphere-red.test.ts +51 -0
- package/src/components/__tests__/atmosphere.test.ts +79 -0
- package/src/components/__tests__/fog.test-d.ts +49 -0
- package/src/components/__tests__/fog.test.ts +60 -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/atmosphere.ts +64 -0
- package/src/components/camera.ts +512 -0
- package/src/components/directional-light.ts +120 -0
- package/src/components/environment.ts +206 -0
- package/src/components/glyph-text.ts +63 -0
- package/src/components/index.ts +49 -0
- package/src/components/instances.ts +207 -0
- package/src/components/layer.ts +69 -0
- package/src/components/light-helpers.ts +188 -0
- package/src/components/mesh-filter.ts +59 -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/post-process-params.ts +35 -0
- package/src/components/scene-instance.ts +193 -0
- package/src/components/sort-key.ts +75 -0
- package/src/components/spot-light.ts +124 -0
- package/src/components/sprite-animation.ts +169 -0
- package/src/components/sprite-instances.ts +179 -0
- package/src/components/sprite-playback-mode.ts +73 -0
- package/src/components/sprite-region-override.ts +106 -0
- package/src/components/tile-layer.ts +161 -0
- package/src/components/tilemap.ts +48 -0
- package/src/components/visibility.ts +53 -0
- package/src/construct-renderer.ts +4 -0
- package/src/debug-draw-glue.ts +169 -0
- package/src/deferred-lighting.ts +92 -0
- package/src/dynamic-texture-store.ts +111 -0
- package/src/engine-metrics.ts +89 -0
- package/src/environment/README.md +76 -0
- package/src/environment/__tests__/failure-injection.test.ts +50 -0
- package/src/environment/__tests__/generation-red.test.ts +64 -0
- package/src/environment/__tests__/generation.test.ts +37 -0
- package/src/environment/__tests__/graph-transaction.test.ts +85 -0
- package/src/environment/__tests__/inspection-red.test.ts +53 -0
- package/src/environment/__tests__/lifecycle-evidence.test.ts +40 -0
- package/src/environment/__tests__/pipeline-topology.test.ts +33 -0
- package/src/environment/__tests__/readiness.test.ts +42 -0
- package/src/environment/__tests__/recovery.test.ts +62 -0
- package/src/environment/__tests__/resize-dispose.test.ts +30 -0
- package/src/environment/__tests__/signature-red.test.ts +45 -0
- package/src/environment/__tests__/signature.test.ts +60 -0
- package/src/environment/descriptors.ts +7 -0
- package/src/environment/extracted-environment.ts +239 -0
- package/src/environment/generation.ts +158 -0
- package/src/environment/gpu-bundle.ts +144 -0
- package/src/environment/graph.ts +588 -0
- package/src/environment/inspection.ts +107 -0
- package/src/environment/lifecycle.ts +124 -0
- package/src/environment/readiness.ts +76 -0
- package/src/environment/signature.ts +185 -0
- package/src/errors/ecs-validation.ts +16 -0
- package/src/errors/index.ts +3 -0
- package/src/errors/recover.ts +119 -0
- package/src/errors/render.ts +1244 -0
- package/src/extract/__tests__/directional-csm-domain.unit.test.ts +391 -0
- package/src/extract/__tests__/environment-source.test.ts +105 -0
- package/src/extract/__tests__/schema-readers.unit.test.ts +16 -0
- package/src/extract/directional-csm.ts +959 -0
- package/src/extract/index.ts +10 -0
- package/src/extract/material-interface.ts +604 -0
- package/src/extract/schema-readers.ts +27 -0
- package/src/extract/visibility.ts +120 -0
- package/src/features/graph-contribution.ts +577 -0
- package/src/features/host.ts +1097 -0
- package/src/features/index.ts +100 -0
- package/src/features/morph/index.ts +24 -0
- package/src/features/morph/morph-bounds.ts +123 -0
- package/src/features/morph/morph-feature.ts +287 -0
- package/src/features/prepared-gpu-work.ts +902 -0
- package/src/features/prepared-graphics-store.ts +435 -0
- package/src/features/prepared-graphics.ts +479 -0
- package/src/features/render-graph-compute.ts +60 -0
- package/src/features/render-graph-contribution.ts +95 -0
- package/src/features/render-graph-raster.ts +308 -0
- package/src/features/render-graph-resources.ts +36 -0
- package/src/features/scene-temporal.ts +274 -0
- package/src/features/taa-resolve.ts +244 -0
- package/src/features/targets.ts +83 -0
- package/src/features/types.ts +291 -0
- package/src/frame-chain.ts +21 -0
- package/src/fullscreen-post-process-pass.ts +406 -0
- package/src/glyph-text-layout-system.ts +447 -0
- package/src/gpu-driven/batch-topology.ts +423 -0
- package/src/gpu-driven/production-raster.ts +1705 -0
- package/src/gpu-driven/view-gpu.ts +849 -0
- package/src/gpu-driven/view-reference.ts +110 -0
- package/src/gpu-resource-store.ts +1921 -0
- package/src/gpu-resource.ts +159 -0
- package/src/gpu-scene-schema.ts +224 -0
- package/src/gpu-scene.ts +855 -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 +689 -0
- package/src/hdrp-cluster-membership.ts +70 -0
- package/src/hdrp-pipeline.ts +525 -0
- package/src/ibl/IblPipelineCache.ts +1246 -0
- package/src/ibl/cubemap-projection.ts +60 -0
- package/src/ibl/face-uniforms.ts +150 -0
- package/src/ibl/skylight-bind-group.ts +513 -0
- package/src/index.ts +271 -0
- package/src/instance-buffer-cache.ts +123 -0
- package/src/internal.ts +88 -0
- package/src/lifecycle.ts +123 -0
- package/src/light-buffer-layout.ts +346 -0
- package/src/materials.ts +236 -0
- package/src/mesh-material-bindings.ts +104 -0
- package/src/mesh-update-errors.ts +113 -0
- package/src/mipmap-generator.ts +244 -0
- package/src/param-schema-projection-census.ts +73 -0
- package/src/pbr-pipeline.ts +749 -0
- package/src/persistent-render-scene.ts +1752 -0
- package/src/pipeline/index.ts +40 -0
- package/src/pipeline-builder.ts +386 -0
- package/src/pipeline-errors.ts +172 -0
- package/src/pipeline-spec.ts +1768 -0
- package/src/plugin.ts +137 -0
- package/src/post-process-errors.ts +304 -0
- package/src/prepare/__tests__/schema-readers.unit.test.ts +16 -0
- package/src/prepare/index.ts +8 -0
- package/src/prepare/prepared-graphics-resolver.ts +455 -0
- package/src/prepare/schema-readers.ts +20 -0
- package/src/record/__tests__/environment-record.test.ts +35 -0
- package/src/record/__tests__/frame-targets.unit.test.ts +54 -0
- package/src/record/__tests__/material-bg-cache.unit.test.ts +41 -0
- package/src/record/__tests__/material-slot-plan.unit.test.ts +76 -0
- package/src/record/__tests__/membership-timing.unit.test.ts +524 -0
- package/src/record/__tests__/render-submission.integration.test.ts +76 -0
- package/src/record/__tests__/render-submission.perf.test.ts +141 -0
- package/src/record/__tests__/shadow-submit-mode.unit.test.ts +88 -0
- package/src/record/__tests__/video-texture-view.unit.test.ts +90 -0
- package/src/record/__tests__/view-ubo-layout.unit.test.ts +101 -0
- package/src/record/frame-lighting.ts +1183 -0
- package/src/record/frame-observation.ts +122 -0
- package/src/record/frame-snapshot.ts +515 -0
- package/src/record/frame-targets.ts +372 -0
- package/src/record/frame.ts +1874 -0
- package/src/record/helpers.ts +289 -0
- package/src/record/index.ts +15 -0
- package/src/record/main-pass-geometry.ts +1014 -0
- package/src/record/main-pass-material.ts +716 -0
- package/src/record/main-pass-skin.ts +51 -0
- package/src/record/main-pass-sprite-draws.ts +1056 -0
- package/src/record/main-pass-sprite.ts +166 -0
- package/src/record/main-pass.ts +588 -0
- package/src/record/material-payload.ts +292 -0
- package/src/record/material-slot-plan.ts +68 -0
- package/src/record/membership-timing.ts +1012 -0
- package/src/record/mesh-ssbo.ts +406 -0
- package/src/record/shadow-caster-uniform.ts +37 -0
- package/src/record/shadow-pass.ts +2387 -0
- package/src/record/shadow-submit-mode.ts +277 -0
- package/src/record/skybox-post-pass.ts +594 -0
- package/src/record/typed-frame-graph.ts +499 -0
- package/src/record/view-ubo.ts +206 -0
- package/src/render-data.ts +385 -0
- package/src/render-dispatch-membership.ts +155 -0
- package/src/render-graph-primitives.ts +1586 -0
- package/src/render-pipeline-context.ts +332 -0
- package/src/render-pipeline-target.ts +96 -0
- package/src/render-pipeline.ts +343 -0
- package/src/render-scene-projection.ts +1738 -0
- package/src/render-system-extract.ts +5203 -0
- package/src/render-system-fold.ts +531 -0
- package/src/render-system.ts +3258 -0
- package/src/renderer/asset-service.ts +32 -0
- package/src/renderer/backend-selection.ts +121 -0
- package/src/renderer/environment-classify.ts +30 -0
- package/src/renderer/environment-error.ts +19 -0
- package/src/renderer/material/assembly.ts +53 -0
- package/src/renderer/material/pipeline-projection.ts +140 -0
- package/src/renderer/renderer-factory.ts +9062 -0
- package/src/renderer.ts +940 -0
- package/src/scene-instances/post-spawn-resolve-joints.ts +168 -0
- package/src/scene-utils/collect-subtree.ts +40 -0
- package/src/shadow-atlas.ts +244 -0
- package/src/ssao-buffers.ts +175 -0
- package/src/ssao-config.ts +61 -0
- package/src/ssao-data.ts +106 -0
- package/src/surface-format.ts +37 -0
- package/src/systems/active-camera.ts +116 -0
- package/src/systems/pass-selector.ts +49 -0
- package/src/systems/skin-palette-allocator.ts +294 -0
- package/src/systems/transparent-sort-config.ts +211 -0
- package/src/taa-history-store.ts +429 -0
- package/src/temporal-coverage.ts +106 -0
- package/src/temporal-frame-transaction.ts +301 -0
- package/src/temporal-inspection.ts +194 -0
- package/src/temporal-view.ts +174 -0
- package/src/tilemap/resolve-tileset-runtime.ts +72 -0
- package/src/tilemap-chunk-extract-system.ts +1307 -0
- package/src/typed-render-graph-primitives.ts +530 -0
- package/src/typed-shadow-passes.ts +195 -0
- package/src/urp-pipeline.ts +340 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
// @forgeax/engine-render - SortKey (per-entity transparent sort override, f32).
|
|
2
|
+
//
|
|
3
|
+
// Schema: 1 f32 column (value). Entity-level sort override consumed by
|
|
4
|
+
// `transparent-sort.ts` (M-3 w23): when present, SortKey.value REPLACES
|
|
5
|
+
// the mode-formula result for this entity in the (layer, sortValue)
|
|
6
|
+
// composite ordering. Override priority is higher than every
|
|
7
|
+
// TransparentSortConfig mode computation (horizontal-z / Y-sort /
|
|
8
|
+
// Y-Z-blend) so AI users can pin a single entity above / below the
|
|
9
|
+
// procedural ordering without reshaping the entire scene.
|
|
10
|
+
//
|
|
11
|
+
// Like Layer, SortKey is a generic ECS renderer component — NOT a
|
|
12
|
+
// 2D-only special. 3D entities may also carry SortKey to bias their
|
|
13
|
+
// position inside the transparent bucket (charter P4 consistent
|
|
14
|
+
// abstraction: same component drives both pipelines).
|
|
15
|
+
//
|
|
16
|
+
// AC-19 derivation audit row (4) names this file as the
|
|
17
|
+
// `defineComponent` factory derivation. JSDoc surfaces the override
|
|
18
|
+
// priority via @derives (ECS factory) annotation; the consumer side
|
|
19
|
+
// of the override behaviour is implemented + verified in M-3 w16 +
|
|
20
|
+
// w23, not here.
|
|
21
|
+
//
|
|
22
|
+
// @derives defineComponent factory (packages/ecs/src/component.ts) —
|
|
23
|
+
// f32 is a legacy scalar type; its intrinsic properties (byteSize / viewCtor
|
|
24
|
+
// / storage) live in TYPE_METADATA['f32'] (feat-20260602 M1).
|
|
25
|
+
//
|
|
26
|
+
// charter mapping: F1 (single-import barrel - joins Layer / Transform
|
|
27
|
+
// / MeshFilter / MeshRenderer / Camera / DirectionalLight) +
|
|
28
|
+
// P3 (explicit default 0.0 surfaces via the 4-layer fallback chain) +
|
|
29
|
+
// P4 (consistent abstraction — generic render component, not 2D-only).
|
|
30
|
+
|
|
31
|
+
import { defineComponent } from '@forgeax/engine-ecs';
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Per-entity transparent-sort override.
|
|
35
|
+
*
|
|
36
|
+
* When attached to an entity inside the transparent bucket (M-3 w22),
|
|
37
|
+
* `SortKey.value` REPLACES the result of `TransparentSortConfig.mode`
|
|
38
|
+
* formula evaluation for this entity. Sort key range is the host's
|
|
39
|
+
* choice — typical use is small (e.g. -10 ... +10) to keep the
|
|
40
|
+
* composite (layer asc, sortValue asc) ordering predictable; large
|
|
41
|
+
* magnitudes work but cross-layer biasing should usually go through
|
|
42
|
+
* `Layer` instead.
|
|
43
|
+
*
|
|
44
|
+
* Override priority (M-3 w23 transparent-sort algorithm):
|
|
45
|
+
*
|
|
46
|
+
* if (world.has(entity, SortKey)) {
|
|
47
|
+
* sortValue = world.get(entity, SortKey).value;
|
|
48
|
+
* } else {
|
|
49
|
+
* sortValue = modeFormula(mode, transform, sprite);
|
|
50
|
+
* }
|
|
51
|
+
*
|
|
52
|
+
* SortKey lives alongside Layer in the (layer, sortValue) composite
|
|
53
|
+
* key — Layer remains the primary key, SortKey replaces the secondary
|
|
54
|
+
* key. This means a `Layer { value: 100 }` foreground entity with
|
|
55
|
+
* `SortKey { value: -99 }` still draws AFTER a `Layer { value: 0 }`
|
|
56
|
+
* background entity; SortKey biases WITHIN a layer, not ACROSS layers.
|
|
57
|
+
*
|
|
58
|
+
* @example Minimal spawn (no override, use mode formula):
|
|
59
|
+
* world.spawn({ component: SortKey, data: {} }); // yields value=0
|
|
60
|
+
*
|
|
61
|
+
* @example Bias one sprite above the JRPG Y-sort formula:
|
|
62
|
+
* world.spawn(
|
|
63
|
+
* { component: Transform, data: { pos: [0, 1, 0],
|
|
64
|
+
* quat: [0, 0, 0, 1], scale: [1, 1, 1] } },
|
|
65
|
+
* { component: Layer, data: { value: 0 } },
|
|
66
|
+
* { component: SortKey, data: { value: -100 } },
|
|
67
|
+
* );
|
|
68
|
+
*
|
|
69
|
+
* @example Spawn payload omitting SortKey — the 4-layer fallback fills 0:
|
|
70
|
+
* // entity reads back SortKey only if explicitly attached;
|
|
71
|
+
* // otherwise the mode-formula path is taken by transparent-sort.ts.
|
|
72
|
+
*/
|
|
73
|
+
export const SortKey = defineComponent('SortKey', {
|
|
74
|
+
value: { type: 'f32', default: 0 },
|
|
75
|
+
});
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
// @forgeax/engine-render - SpotLight (cone-restricted spot-light parameters).
|
|
2
|
+
//
|
|
3
|
+
// Schema: direction array<f32,3> + color array<f32,3> + intensity + range +
|
|
4
|
+
// innerConeDeg + outerConeDeg (feat-20260709 M2: direction/color collapsed from
|
|
5
|
+
// 6 per-axis scalar columns to two inline array<f32,3> columns). `position`
|
|
6
|
+
// comes from the
|
|
7
|
+
// Transform component; SpotLight requires a companion Transform on the same
|
|
8
|
+
// entity (ECS query: `[Transform, SpotLight]`). Cone units are degrees on
|
|
9
|
+
// the Component API surface (charter F1 prior-knowledge alignment with
|
|
10
|
+
// Three.js); the host-side extract step pre-converts to `cosInner` /
|
|
11
|
+
// `cosOuter` before GPU upload (plan-strategy section 8.2 naming convention
|
|
12
|
+
// + D-3 host-side cone conversion).
|
|
13
|
+
//
|
|
14
|
+
// `range` units are meters; defaults to `10.0`. Runtime finite-range
|
|
15
|
+
// attenuation is the Three r184 squared window; the KHR unsquared curve is an
|
|
16
|
+
// import/reference boundary only. The cone falloff is layered on top with
|
|
17
|
+
// `smoothstep(cosOuter, cosInner, dot(L, -direction))` (plan-strategy D-S4).
|
|
18
|
+
//
|
|
19
|
+
// 0 light + standard material -> physically correct black render. The
|
|
20
|
+
// once-warn channel collapses to "directionalCount + pointCount +
|
|
21
|
+
// spotCount === 0" (M5 / w25).
|
|
22
|
+
//
|
|
23
|
+
// feat-20260625-spot-light-shadow-mapping M1 w4: embedded castShadow (default true)
|
|
24
|
+
// + 6 shadow fields (mapSize / depthBias / normalBias / nearPlane / farPlane /
|
|
25
|
+
// pcfKernelSize) aligned with DirectionalLight vocabulary (plan-strategy D-6;
|
|
26
|
+
// charter P4 consistent abstraction). Zero-config spawns cast spot shadows;
|
|
27
|
+
// set castShadow:false to opt out (validate short-circuits on false, AC-03).
|
|
28
|
+
// Shadow atlas cap of 4 is enforced at extract stage, not component layer (OOS-5).
|
|
29
|
+
//
|
|
30
|
+
// charter mapping: proposition 1 (single import + IDE autocomplete on
|
|
31
|
+
// payload.outerConeDeg with no `as` cast) + proposition 3 (silent failure
|
|
32
|
+
// -> explicit failure; spawn-time fail-fast on three bound violations) +
|
|
33
|
+
// proposition 5 (consistent abstraction: outgoing direction semantics
|
|
34
|
+
// shared with DirectionalLight; cone deg API + cos shader uniform
|
|
35
|
+
// pre-conversion mirrors directional path's host-side `lightDir x intensity`
|
|
36
|
+
// pre-multiplication).
|
|
37
|
+
|
|
38
|
+
import { defineComponent } from '@forgeax/engine-ecs';
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Cone-restricted spot light (KHR_lights_punctual `spot` type). Casts shadows
|
|
42
|
+
* by default (castShadow defaults to true) — zero-config spawns project hard
|
|
43
|
+
* PCF shadows through an independent spot depth atlas.
|
|
44
|
+
*
|
|
45
|
+
* `direction` @semantics outgoing -- points FROM light source TO the
|
|
46
|
+
* scene (consistent with `DirectionalLight`; the shader internally negates
|
|
47
|
+
* this vector to obtain the L vector for BRDF evaluation:
|
|
48
|
+
* `let l = normalize(-light.direction)`). Extract owns the single
|
|
49
|
+
* normalization step for the snapshot; URP and HDRP consume that normalized
|
|
50
|
+
* value without re-normalizing. `position` source: the companion
|
|
51
|
+
* `Transform` component on the same entity.
|
|
52
|
+
*
|
|
53
|
+
* `innerConeDeg` is the half-angle of the saturated bright region (cone
|
|
54
|
+
* fully bright at the axis); `outerConeDeg` is the half-angle of the
|
|
55
|
+
* falloff edge (cone fully dark beyond). Unit is **degrees**;
|
|
56
|
+
* `outerConeDeg in (innerConeDeg, 90]` (KHR upper bound; spawn-time
|
|
57
|
+
* validation rejects `outer > 90` and `outer <= inner`). The host-side
|
|
58
|
+
* extract step converts both to `cos*` before GPU upload so the shader
|
|
59
|
+
* only sees pre-computed cosines (plan-strategy D-S2 byte freeze; charter
|
|
60
|
+
* P4 host pre-multiplication parity).
|
|
61
|
+
*
|
|
62
|
+
* `color` is linear-space rgb in `[0, 1]` per channel; `intensity` is candela;
|
|
63
|
+
* `range` is in meters and defaults to `10.0`. Exposure is a camera output
|
|
64
|
+
* operation and does not change the stored intensity.
|
|
65
|
+
*
|
|
66
|
+
* Shadow fields (embedded, aligned with DirectionalLight):
|
|
67
|
+
* castShadow ∈ {true, false} — shadow opt-out gate (default true)
|
|
68
|
+
* mapSize >= 1 — shadow map resolution per tile (default 2048)
|
|
69
|
+
* depthBias — shadow acne bias (default 0.005)
|
|
70
|
+
* normalBias — shadow acne normal offset (default 0.05)
|
|
71
|
+
* nearPlane — shadow-camera near (default 0.1)
|
|
72
|
+
* farPlane — shadow-camera far (default 50)
|
|
73
|
+
* pcfKernelSize odd >= 1 — PCF kernel width (default 3)
|
|
74
|
+
*
|
|
75
|
+
* Atlas capacity is capped at 4 castShadow spot lights by the extract stage;
|
|
76
|
+
* the 5th light onward keeps direct illumination but shadowAtlasTile = -1
|
|
77
|
+
* (AC-05: clip is programmatically detectable, light stays visible).
|
|
78
|
+
*
|
|
79
|
+
* @example Spawn a single spot light casting shadows (zero-config):
|
|
80
|
+
* world.spawn(
|
|
81
|
+
* { component: Transform, data: { pos: [0, 5, 0] } },
|
|
82
|
+
* { component: SpotLight, data: { direction: [0, -1, 0] } }, // [x, y, z]
|
|
83
|
+
* );
|
|
84
|
+
*
|
|
85
|
+
* @example Opt out of shadows:
|
|
86
|
+
* world.spawn(
|
|
87
|
+
* { component: Transform, data: { pos: [0, 5, 0] } },
|
|
88
|
+
* { component: SpotLight, data: { direction: [0, -1, 0], castShadow: false } },
|
|
89
|
+
* );
|
|
90
|
+
*
|
|
91
|
+
* @example Explicit shadow config:
|
|
92
|
+
* world.spawn(
|
|
93
|
+
* { component: Transform, data: { pos: [0, 5, 0] } },
|
|
94
|
+
* { component: SpotLight, data: { direction: [0, -1, 0], depthBias: 0.01, normalBias: 0.08, mapSize: 1024 } },
|
|
95
|
+
* );
|
|
96
|
+
*
|
|
97
|
+
* @example Minimal spawn -- defaults give neutral white at full strength, range 10m, KHR pi/4 cone:
|
|
98
|
+
* world.spawn(
|
|
99
|
+
* { component: Transform, data: { pos: [0, 5, 0] } },
|
|
100
|
+
* { component: SpotLight, data: { direction: [0, -1, 0] } }, // [x, y, z]
|
|
101
|
+
* );
|
|
102
|
+
* // resolves to color=[1,1,1], intensity=1, range=10.0,
|
|
103
|
+
* // innerConeDeg=0, outerConeDeg=45 (KHR pi/4 equivalent).
|
|
104
|
+
*/
|
|
105
|
+
export const SpotLight = defineComponent('SpotLight', {
|
|
106
|
+
// direction has no default (D-5): omitting it lands the array layer-3
|
|
107
|
+
// all-zero, which validate() rejects. color carries an explicit layer-2
|
|
108
|
+
// default [1,1,1] (white); the array layer-3 fallback is all-zero.
|
|
109
|
+
direction: { type: 'array<f32, 3>' },
|
|
110
|
+
color: { type: 'array<f32, 3>', default: new Float32Array([1, 1, 1]) },
|
|
111
|
+
intensity: { type: 'f32', default: 1 },
|
|
112
|
+
range: { type: 'f32', default: 10.0 },
|
|
113
|
+
innerConeDeg: { type: 'f32', default: 0 },
|
|
114
|
+
outerConeDeg: { type: 'f32', default: 45 },
|
|
115
|
+
// Shadow opt-out gate: defaults to true so zero-config spawns cast shadows.
|
|
116
|
+
castShadow: { type: 'bool', default: true },
|
|
117
|
+
// 6 shadow fields aligned with DirectionalLight (plan-strategy D-6).
|
|
118
|
+
mapSize: { type: 'f32', default: 2048 },
|
|
119
|
+
depthBias: { type: 'f32', default: 0.005 },
|
|
120
|
+
normalBias: { type: 'f32', default: 0.05 },
|
|
121
|
+
nearPlane: { type: 'f32', default: 0.1 },
|
|
122
|
+
farPlane: { type: 'f32', default: 50 },
|
|
123
|
+
pcfKernelSize: { type: 'f32', default: 3 },
|
|
124
|
+
});
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
// @forgeax/engine-runtime - SpriteAnimation (per-entity frame-tick clock).
|
|
2
|
+
//
|
|
3
|
+
// 6-field schema (1:1 with requirements section 2.3 table; D-5 + D-6
|
|
4
|
+
// vocab keywords locked):
|
|
5
|
+
//
|
|
6
|
+
// frameCount : 'u32' total frames in the cycle (>= 1).
|
|
7
|
+
// frameDuration : 'f32' per-frame seconds (> 0).
|
|
8
|
+
// currentFrame : 'u32' live frame index, in [0, frameCount).
|
|
9
|
+
// accumDt : 'f32' dt accumulator (research F-3 carries
|
|
10
|
+
// fractional residue across ticks).
|
|
11
|
+
// regions : 'array<f32>' flat per-frame UV rectangles
|
|
12
|
+
// [uMin, vMin, uW, vH]; the M4 tick
|
|
13
|
+
// system enforces
|
|
14
|
+
// `regions.length === frameCount * 4`
|
|
15
|
+
// on first observation (AC-09 fail-fast,
|
|
16
|
+
// D-1 path).
|
|
17
|
+
// playbackMode : 'u32' numeric encoding of `SpritePlaybackMode`
|
|
18
|
+
// (0 = SPRITE_PLAYBACK_MODE_LOOP,
|
|
19
|
+
// 1 = SPRITE_PLAYBACK_MODE_CLAMP).
|
|
20
|
+
//
|
|
21
|
+
// Why u32 for playbackMode? research F-2 + F-5: the ECS schema whitelist
|
|
22
|
+
// rejects string-literal unions. The M1 SSOT
|
|
23
|
+
// `packages/runtime/src/components/sprite-playback-mode.ts` carries the
|
|
24
|
+
// numeric constants + the `spritePlaybackModeFromU32` mapper that turns
|
|
25
|
+
// the column value back into a string-literal union at the M4 tick-system
|
|
26
|
+
// seam — same shape as the M1 Tonemap encoding (`tonemap: 'f32'` +
|
|
27
|
+
// TONEMAP_NONE / TONEMAP_REINHARD_EXTENDED + tonemapFromF32). One mental
|
|
28
|
+
// model across all closed-union schema columns; charter P4 consistent
|
|
29
|
+
// abstraction.
|
|
30
|
+
//
|
|
31
|
+
// Why array<f32> (variable) and not array<f32, N> (fixed) for regions?
|
|
32
|
+
// The length `frameCount * 4` is data-dependent: `frameCount` is itself a
|
|
33
|
+
// per-entity column read at runtime, not a schema-time literal. Same
|
|
34
|
+
// shape as M1 `Instances.transforms: 'array<f32>'` whose length depends
|
|
35
|
+
// on the live instance count; D-6 codifies the precedent.
|
|
36
|
+
//
|
|
37
|
+
// dt accumulator clock model (requirements section 2.5 q6 + plan-strategy
|
|
38
|
+
// section 2 D-5):
|
|
39
|
+
// accumDt += Time.delta
|
|
40
|
+
// while (accumDt >= frameDuration) { advance currentFrame; accumDt -= frameDuration }
|
|
41
|
+
// The carry-over `accumDt` survives across ticks so frame timing stays
|
|
42
|
+
// stable under jittery dt; M4 T-23 implements the loop. Per-frame UV
|
|
43
|
+
// is materialised by writing the slice
|
|
44
|
+
// `regions[currentFrame*4 .. currentFrame*4 + 4]` into the entity's
|
|
45
|
+
// `SpriteRegionOverride.region` column (T-11 + M4 T-23).
|
|
46
|
+
//
|
|
47
|
+
// Sprite-only consumption (requirements section 5 constraint #2): the
|
|
48
|
+
// M4 tick system + the M3 extract branch read this component only when
|
|
49
|
+
// the entity routes through the sprite bucket. Opaque buckets ignore
|
|
50
|
+
// the component even when present. Naming keeps the `Sprite` prefix per
|
|
51
|
+
// OOS-01 (no premature 3D generalisation); 3D UV animation lands in a
|
|
52
|
+
// separate component in a future feat.
|
|
53
|
+
//
|
|
54
|
+
// 4-step recipe (charter F1 progressive disclosure — minimum walk-cycle
|
|
55
|
+
// host code; full demo lands in M6 hello-sprite-atlas):
|
|
56
|
+
// 1. Build atlas via `forgeax-engine-remote-asset atlas --input <glob> --name <prefix> --output <dir>`
|
|
57
|
+
// (M5 build-time hook); load the emitted `<name>.atlas.png` plus
|
|
58
|
+
// `<name>.atlas.meta.json` sidecar.
|
|
59
|
+
// 2. Register the sprite material referencing the atlas
|
|
60
|
+
// `TextureAsset` with the initial frame's `region` rectangle (the
|
|
61
|
+
// runtime tick system overrides this region per entity per frame).
|
|
62
|
+
// 3. `world.spawn` an entity with a quad mesh reference +
|
|
63
|
+
// `MeshRenderer(spriteMaterial)` + `Instances(...)` plus this
|
|
64
|
+
// `SpriteAnimation` (frameCount / frameDuration / regions /
|
|
65
|
+
// playbackMode) and `SpriteRegionOverride { region }` (the tick
|
|
66
|
+
// system writes per-frame UV).
|
|
67
|
+
// 4. Add `spriteAnimationTickSystem` (M4 T-23) to the schedule between
|
|
68
|
+
// input/time and `RenderSystem.extract`.
|
|
69
|
+
//
|
|
70
|
+
// @derives `defineComponent` factory (packages/ecs/src/component.ts) —
|
|
71
|
+
// `'u32'` / `'f32'` are scalar tier-1 keywords; `'array<f32>'` is a
|
|
72
|
+
// tier-2 schema-vocab keyword (variable-capacity; M1 feat-20260515
|
|
73
|
+
// buffer-array vocab). Layer-3 default fallback fills missing
|
|
74
|
+
// `currentFrame` / `accumDt` / `playbackMode` with 0
|
|
75
|
+
// (component-default-fallback typeDefault table).
|
|
76
|
+
// @consumes M4 T-23 (`spriteAnimationTickSystem` reads all 6 fields and
|
|
77
|
+
// writes per-frame slice into SpriteRegionOverride).
|
|
78
|
+
//
|
|
79
|
+
// charter mapping: F1 (single-import barrel discovery + 4-step recipe
|
|
80
|
+
// at the JSDoc head); P3 (4 explicit error fields surface via the M4
|
|
81
|
+
// tick-system fail-fast — `regions.length` mismatch / `frameDuration`
|
|
82
|
+
// non-positive routes through SpriteAnimationInvalidError, M1 T-05);
|
|
83
|
+
// P4 (consistent abstraction — same numeric closed-union encoding as
|
|
84
|
+
// Tonemap / TransparentSortConfig.mode); P5 (producer / consumer
|
|
85
|
+
// separation — atlas regions are produced build-time by
|
|
86
|
+
// vite-plugin-image and consumed runtime as a flat Float32Array; AI
|
|
87
|
+
// users never call a packer at runtime).
|
|
88
|
+
//
|
|
89
|
+
// Anchors: plan-strategy section 2 D-5 + D-6 + section 3.1 SAC + section
|
|
90
|
+
// 4 risks R-SCHEMA-1 + R-SCHEMA-2 + R-TIME-1 reaction; plan-tasks.json
|
|
91
|
+
// T-12; research F-2 + F-3 + F-5; requirements section AC-02 + section
|
|
92
|
+
// 2.3 + section 2.5 + section 7 boundary table.
|
|
93
|
+
|
|
94
|
+
import { defineComponent } from '@forgeax/engine-ecs';
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Per-entity sprite frame-tick clock.
|
|
98
|
+
*
|
|
99
|
+
* Schema (6 fields, 1:1 with requirements section 2.3):
|
|
100
|
+
* - `frameCount: u32` — total frames (>= 1).
|
|
101
|
+
* - `frameDuration: f32` — seconds per frame (> 0).
|
|
102
|
+
* - `currentFrame: u32` — live frame index (0..frameCount). Layer-3
|
|
103
|
+
* default `0` when omitted at spawn.
|
|
104
|
+
* - `accumDt: f32` — dt residue carried across ticks. Layer-3 default
|
|
105
|
+
* `0` when omitted; lives on the component (not on a system-side
|
|
106
|
+
* resource) so the system stays stateless and AI-user setFrame paths
|
|
107
|
+
* can reset both `currentFrame` and `accumDt` atomically.
|
|
108
|
+
* - `regions: array<f32>` — flat per-frame UV rectangles
|
|
109
|
+
* `[uMin, vMin, uW, vH]`; runtime invariant
|
|
110
|
+
* `regions.length === frameCount * 4` (enforced by the M4 tick system).
|
|
111
|
+
* - `playbackMode: u32` — numeric encoding of `SpritePlaybackMode`;
|
|
112
|
+
* `SPRITE_PLAYBACK_MODE_LOOP = 0` (default) /
|
|
113
|
+
* `SPRITE_PLAYBACK_MODE_CLAMP = 1`.
|
|
114
|
+
*
|
|
115
|
+
* Pair with `SpriteRegionOverride` (T-11) — the tick system writes the
|
|
116
|
+
* per-frame UV slice into the override column, which `render-system-
|
|
117
|
+
* extract` then reads in the sprite bucket branch.
|
|
118
|
+
*
|
|
119
|
+
* @example Spawn a 4-frame walk cycle that loops:
|
|
120
|
+
* import { MeshFilter, MeshRenderer } from '@forgeax/engine-render';
|
|
121
|
+
* import {
|
|
122
|
+
* SpriteAnimation, SpriteRegionOverride, SPRITE_PLAYBACK_MODE_LOOP,
|
|
123
|
+
* } from '@forgeax/engine-render/authoring';
|
|
124
|
+
* import { Transform } from '@forgeax/engine-scene';
|
|
125
|
+
* import { createPrimitiveMesh } from '@forgeax/engine-geometry';
|
|
126
|
+
* const quadMesh = world.internSharedRef(createPrimitiveMesh('quad').unwrap());
|
|
127
|
+
*
|
|
128
|
+
* // 4 frames packed in an atlas, each 64x64 inside a 256x64 row:
|
|
129
|
+
* const regions = new Float32Array([
|
|
130
|
+
* 0.00, 0, 0.25, 1, // walk-0
|
|
131
|
+
* 0.25, 0, 0.25, 1, // walk-1
|
|
132
|
+
* 0.50, 0, 0.25, 1, // walk-2
|
|
133
|
+
* 0.75, 0, 0.25, 1, // walk-3
|
|
134
|
+
* ]);
|
|
135
|
+
* world.spawn(
|
|
136
|
+
* { component: Transform, data: { pos: [0, 0, 0],
|
|
137
|
+
* quat: [0, 0, 0, 1], scale: [1, 1, 1] } },
|
|
138
|
+
* { component: MeshFilter, data: { assetHandle: quadMesh } },
|
|
139
|
+
* { component: MeshRenderer, data: { materials: [spriteMaterial] } },
|
|
140
|
+
* { component: SpriteAnimation,
|
|
141
|
+
* data: {
|
|
142
|
+
* frameCount: 4,
|
|
143
|
+
* frameDuration: 0.1,
|
|
144
|
+
* regions,
|
|
145
|
+
* playbackMode: SPRITE_PLAYBACK_MODE_LOOP,
|
|
146
|
+
* } },
|
|
147
|
+
* { component: SpriteRegionOverride,
|
|
148
|
+
* data: { region: new Float32Array([0, 0, 0.25, 1]) } },
|
|
149
|
+
* );
|
|
150
|
+
*
|
|
151
|
+
* @example Manual setFrame — jump to frame 2 atomically:
|
|
152
|
+
* world.set(entity, SpriteAnimation,
|
|
153
|
+
* { currentFrame: 2, accumDt: 0 }).unwrap();
|
|
154
|
+
*
|
|
155
|
+
* Error path (M4 T-23 routes through `SpriteAnimationInvalidError`,
|
|
156
|
+
* `EcsErrorCode === 'sprite-animation-invalid'`; charter P3):
|
|
157
|
+
* - `regions.length !== frameCount * 4` -> detail.field = 'regions-length',
|
|
158
|
+
* detail carries `regionsLength` + `frameCount`.
|
|
159
|
+
* - `frameDuration <= 0` -> detail.field = 'frame-duration', detail carries
|
|
160
|
+
* `frameDuration`.
|
|
161
|
+
*/
|
|
162
|
+
export const SpriteAnimation = defineComponent('SpriteAnimation', {
|
|
163
|
+
frameCount: { type: 'u32' },
|
|
164
|
+
frameDuration: { type: 'f32' },
|
|
165
|
+
currentFrame: { type: 'u32', transient: true },
|
|
166
|
+
accumDt: { type: 'f32', transient: true },
|
|
167
|
+
regions: { type: 'array<f32>' },
|
|
168
|
+
playbackMode: { type: 'u32' },
|
|
169
|
+
});
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
// @forgeax/engine-runtime - SpriteInstances component (per-entity 2D
|
|
2
|
+
// instanced-draw transforms + per-instance UV region).
|
|
3
|
+
//
|
|
4
|
+
// Schema: 2 array<f32> fields. `transforms` carries packed column-major mat4
|
|
5
|
+
// instance transforms (16 f32 per instance, stride = 16). `regions` carries
|
|
6
|
+
// packed per-instance UV vec4 (4 f32 per instance, stride = 4; layout
|
|
7
|
+
// [uMin, vMin, uW, vH] mirroring SpriteAnimation.regions). The pair share
|
|
8
|
+
// the same instance count; the SSOT invariant is
|
|
9
|
+
// transforms.length / 16 === regions.length / 4
|
|
10
|
+
// enforced through a TWO-LAYER contract:
|
|
11
|
+
//
|
|
12
|
+
// 1. AI user set-site: spawn / `world.set` / `world.push` callers pass two
|
|
13
|
+
// Float32Arrays whose lengths satisfy the stride pair. The set site is
|
|
14
|
+
// the AI user's responsibility — the engine cannot prove column-major
|
|
15
|
+
// mat4 packing or per-instance UV intent without caller declaration.
|
|
16
|
+
// 2. RenderSystem extract entry: `render-system-extract.ts` performs a
|
|
17
|
+
// defensive `transforms.length / 16 === regions.length / 4` check on
|
|
18
|
+
// every `world.get(e, SpriteInstances)` snapshot at frame extract time;
|
|
19
|
+
// violations route a structured `SpriteInstancesCountMismatchError`
|
|
20
|
+
// (`code: 'sprite-instances-count-mismatch'`,
|
|
21
|
+
// `detail: { transformsLength, regionsLength, expectedStride: { transforms: 16, regions: 4 } }`)
|
|
22
|
+
// through the World Layer-3 ErrorHandler and the renderable is skipped.
|
|
23
|
+
// Two further extract-entry checks fire:
|
|
24
|
+
// - `'sprite-instances-requires-sprite-shader'` — MaterialAsset's
|
|
25
|
+
// first pass `shader` must be `'forgeax::sprite'`.
|
|
26
|
+
// - `'sprite-instances-mutually-exclusive-with-instances'` — same
|
|
27
|
+
// entity must not carry both Instances + SpriteInstances.
|
|
28
|
+
// (Error class declarations live in `@forgeax/engine-ecs` errors.ts; the
|
|
29
|
+
// extract-entry fire path is owned by feat M3 w12 / w13.)
|
|
30
|
+
//
|
|
31
|
+
// Peer relation to Instances (charter P4 consistent abstraction):
|
|
32
|
+
// - Instances : 3D scene primitive — per-instance mat4 only (stride 16).
|
|
33
|
+
// - SpriteInstances : 2D scene primitive — per-instance mat4 + per-instance
|
|
34
|
+
// UV region (interleaved 80B per instance: 64B mat4 + 16B region).
|
|
35
|
+
// AI users pick by data shape (does the per-instance carry UV?). Both ride
|
|
36
|
+
// the array-vocab path and route through the same Layer-3 error envelope.
|
|
37
|
+
//
|
|
38
|
+
// Group transform chained semantics (charter proposition 5 mental migration):
|
|
39
|
+
// When the same entity carries both `Transform` (entity_world) and
|
|
40
|
+
// `SpriteInstances` (per-instance local transforms), the vertex shader
|
|
41
|
+
// composes per instance:
|
|
42
|
+
// world_position[i] = entity_world * instances_local[i] * vertex_position
|
|
43
|
+
// `SpriteInstances.transforms[i*16..i*16+15]` is interpreted as a local-
|
|
44
|
+
// space transform under the entity, exactly like `Instances.transforms`.
|
|
45
|
+
// Set the entity's `Transform` to identity to make `instances_local[i]`
|
|
46
|
+
// directly world-space.
|
|
47
|
+
//
|
|
48
|
+
// Uniform / storage buffer cap (research D-R-4 + AC-04): 80B per instance
|
|
49
|
+
// * 128-cap fallback = 10240 B < 16384 B uniform max; the storage-buffer
|
|
50
|
+
// path is uncapped and used by capable backends (RenderSystem record-stage
|
|
51
|
+
// cap-gate).
|
|
52
|
+
//
|
|
53
|
+
// 4-segment minimum contract (read this header before reaching for the
|
|
54
|
+
// source body):
|
|
55
|
+
//
|
|
56
|
+
// ===== (a) single-component import + spawn example =====
|
|
57
|
+
//
|
|
58
|
+
// import {
|
|
59
|
+
// createRenderer,
|
|
60
|
+
// MeshFilter, MeshRenderer, Transform,
|
|
61
|
+
// SpriteInstances, type SpriteInstancesData,
|
|
62
|
+
// } from '@forgeax/engine-render';
|
|
63
|
+
//
|
|
64
|
+
// // 1 entity rendering N instanced sprites (16N transforms f32 + 4N regions f32):
|
|
65
|
+
// const transforms = new Float32Array(N * 16);
|
|
66
|
+
// const regions = new Float32Array(N * 4);
|
|
67
|
+
// // ... fill column-major mat4 columns + [uMin, vMin, uW, vH] per instance ...
|
|
68
|
+
// world.spawn(
|
|
69
|
+
// { component: MeshFilter, data: { assetHandle: quadMesh } },
|
|
70
|
+
// { component: MeshRenderer, data: { /* sprite-shaded MaterialAsset */ } },
|
|
71
|
+
// { component: SpriteInstances, data: { transforms, regions } },
|
|
72
|
+
// );
|
|
73
|
+
//
|
|
74
|
+
// ===== (b) packed mat4 + region layout =====
|
|
75
|
+
//
|
|
76
|
+
// const transforms = new Float32Array(N * 16); // column-major mat4 per instance
|
|
77
|
+
// const regions = new Float32Array(N * 4); // [uMin, vMin, uW, vH] per instance
|
|
78
|
+
// // instance i occupies floats:
|
|
79
|
+
// // transforms[i*16 .. i*16+15] — column-major mat4 (translation in m03/m13/m23)
|
|
80
|
+
// // regions [i* 4 .. i* 4+ 3] — uMin, vMin, uW, vH (atlas-normalized UV rect)
|
|
81
|
+
//
|
|
82
|
+
// `transforms.length` MUST be a non-zero multiple of 16; `regions.length`
|
|
83
|
+
// MUST be a non-zero multiple of 4; the per-instance count derived from
|
|
84
|
+
// both MUST agree. AI users gate at the set / push site; the RenderSystem
|
|
85
|
+
// extract entry holds the second defensive (see error path 1 below).
|
|
86
|
+
//
|
|
87
|
+
// ===== (c) error code consumption (typed property access, no message regex) =====
|
|
88
|
+
//
|
|
89
|
+
// // Stride / mutual-exclusion / sprite-shader violations surface through
|
|
90
|
+
// // the engine-ecs Layer-3 ErrorHandler when extract reads a malformed
|
|
91
|
+
// // snapshot:
|
|
92
|
+
// // on('error', (err) => {
|
|
93
|
+
// // switch (err.code) {
|
|
94
|
+
// // case 'sprite-instances-count-mismatch':
|
|
95
|
+
// // // err.detail.transformsLength / regionsLength / expectedStride
|
|
96
|
+
// // break;
|
|
97
|
+
// // case 'sprite-instances-requires-sprite-shader':
|
|
98
|
+
// // // err.detail.entityId / observedMaterialShaderId
|
|
99
|
+
// // break;
|
|
100
|
+
// // case 'sprite-instances-mutually-exclusive-with-instances':
|
|
101
|
+
// // // err.detail.entityId
|
|
102
|
+
// // break;
|
|
103
|
+
// // }
|
|
104
|
+
// // });
|
|
105
|
+
//
|
|
106
|
+
// charter mapping (charter v2 numbering, with round-1 v1 aliases retained
|
|
107
|
+
// in parentheses so reviewers tracking the v1 spec can cross-reference;
|
|
108
|
+
// SSOT for the v2 -> v1 alias map is the AI User Charter — see
|
|
109
|
+
// .claude/skills/forgeax-closed-loop/agents/ai-user-charter.md):
|
|
110
|
+
// F1 (alias: proposition 1) — single import surface
|
|
111
|
+
// `import { SpriteInstances, type SpriteInstancesData } from
|
|
112
|
+
// '@forgeax/engine-render'`;
|
|
113
|
+
// P2 (alias: proposition 3) — machine-readable schema > prose:
|
|
114
|
+
// `{ transforms: 'array<f32>', regions: 'array<f32>' }` is the SSOT,
|
|
115
|
+
// stride pair documented here + enforced at the RenderSystem entry;
|
|
116
|
+
// P3 (alias: proposition 4) — explicit failure: 3 structured EcsError
|
|
117
|
+
// codes route per failure shape, not silent half-row;
|
|
118
|
+
// P4 (alias: proposition 5) — consistent abstraction: SpriteInstances
|
|
119
|
+
// mirrors Instances — both ride the array-vocab path; pick by data
|
|
120
|
+
// shape, not by API.
|
|
121
|
+
//
|
|
122
|
+
// Anchors: requirements AC-01 (component schema), AC-03 (3 error codes),
|
|
123
|
+
// AC-09 (IDE autocomplete + type inference); plan-strategy D-1 (interleaved
|
|
124
|
+
// single binding slot), D-6 (3 codes declared in M1 ecs, fired in M3 render),
|
|
125
|
+
// D-7 (type export location), D-8 (barrel re-export at runtime, not ecs).
|
|
126
|
+
|
|
127
|
+
import { defineComponent } from '@forgeax/engine-ecs';
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Per-entity 2D instanced-draw primitive (ECS component).
|
|
131
|
+
*
|
|
132
|
+
* Carries two variable-length `array<f32>` fields:
|
|
133
|
+
* - `transforms` — column-major mat4 per instance (16 f32, stride 16);
|
|
134
|
+
* - `regions` — UV vec4 per instance ([uMin, vMin, uW, vH], 4 f32,
|
|
135
|
+
* stride 4).
|
|
136
|
+
*
|
|
137
|
+
* The pair share the same instance count; the invariant
|
|
138
|
+
* `transforms.length / 16 === regions.length / 4` is enforced at the
|
|
139
|
+
* RenderSystem extract entry (NOT at ECS write paths). The runtime
|
|
140
|
+
* RenderSystem consumer materialises a fresh `Float32Array` snapshot on
|
|
141
|
+
* every `world.get(e, SpriteInstances)` access and uploads an interleaved
|
|
142
|
+
* 80B-per-instance buffer to the GPU in the record stage.
|
|
143
|
+
*
|
|
144
|
+
* @example Spawn an entity rendering 10000 instanced sprites:
|
|
145
|
+
* const transforms = new Float32Array(10000 * 16);
|
|
146
|
+
* const regions = new Float32Array(10000 * 4);
|
|
147
|
+
* // ... fill mat4 columns + [uMin, vMin, uW, vH] ...
|
|
148
|
+
* world.spawn(
|
|
149
|
+
* { component: MeshFilter, data: { assetHandle: quadMesh } },
|
|
150
|
+
* { component: MeshRenderer, data: { ... } },
|
|
151
|
+
* { component: SpriteInstances, data: { transforms, regions } },
|
|
152
|
+
* );
|
|
153
|
+
*/
|
|
154
|
+
export const SpriteInstances = defineComponent('SpriteInstances', {
|
|
155
|
+
transforms: { type: 'array<f32>' },
|
|
156
|
+
regions: { type: 'array<f32>' },
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Type-level hint for `data` at the `SpriteInstances` spawn site.
|
|
161
|
+
*
|
|
162
|
+
* The runtime ECS column shape for `array<f32>` accepts a `Float32Array`
|
|
163
|
+
* payload at spawn / set time (the bytes are copied into the BufferPool
|
|
164
|
+
* slot). Both fields are typed as `Float32Array` so AI-user IDE
|
|
165
|
+
* autocomplete picks up the typed-array shape and the AC-09 inference
|
|
166
|
+
* surfaces without `as` casts inside `world.get(e, SpriteInstances)` and
|
|
167
|
+
* QueryRow access paths.
|
|
168
|
+
*
|
|
169
|
+
* @example
|
|
170
|
+
* import type { SpriteInstancesData } from '@forgeax/engine-render/authoring';
|
|
171
|
+
* const data: SpriteInstancesData = {
|
|
172
|
+
* transforms: new Float32Array(N * 16),
|
|
173
|
+
* regions: new Float32Array(N * 4),
|
|
174
|
+
* };
|
|
175
|
+
*/
|
|
176
|
+
export type SpriteInstancesData = {
|
|
177
|
+
readonly transforms: Float32Array;
|
|
178
|
+
readonly regions: Float32Array;
|
|
179
|
+
};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// @forgeax/engine-runtime - SpritePlaybackMode (u32 column encoding + mapper).
|
|
2
|
+
//
|
|
3
|
+
// SSOT for the SpriteAnimation.playbackMode ECS column (M2 T-12) and the
|
|
4
|
+
// runtime tick-system branch selector (M4 T-23). The shape mirrors the M1
|
|
5
|
+
// `Tonemap` block in `./camera.ts:72-90` (TONEMAP_NONE = 0 /
|
|
6
|
+
// TONEMAP_REINHARD_EXTENDED = 1 + `type Tonemap = 'none' |
|
|
7
|
+
// 'reinhard-extended'` + `tonemapFromF32`) for charter P4 consistent
|
|
8
|
+
// abstraction — AI users keep one mental model across all u32-encoded
|
|
9
|
+
// closed-union schema columns.
|
|
10
|
+
//
|
|
11
|
+
// Why `'u32'` + constant + mapper instead of a string-literal column?
|
|
12
|
+
// ECS schema whitelist `SchemaFieldType` (packages/ecs/src/component.ts
|
|
13
|
+
// section schema-field-type) does not accept string-literal unions
|
|
14
|
+
// (research F-2 + F-5). Storing a u32 + translating to a closed
|
|
15
|
+
// `'loop' | 'clamp'` literal union at the tick-system seam preserves
|
|
16
|
+
// AI-user-facing narrowing (`switch (mode) { case 'loop': ... }`)
|
|
17
|
+
// without forcing the ECS column to learn a new field-type vocabulary.
|
|
18
|
+
//
|
|
19
|
+
// Naming convention (plan-strategy section 8.command naming):
|
|
20
|
+
// SPRITE_PLAYBACK_MODE_LOOP / SPRITE_PLAYBACK_MODE_CLAMP mirror M1
|
|
21
|
+
// TONEMAP_* / TRANSPARENT_SORT_MODE_*. `spritePlaybackModeFromU32`
|
|
22
|
+
// mirrors `tonemapFromF32` / `cameraProjectionFromF32`. AI users
|
|
23
|
+
// discover the trio via single-import barrel re-export from
|
|
24
|
+
// `@forgeax/engine-runtime` (wired in by M2 T-13).
|
|
25
|
+
//
|
|
26
|
+
// Anchors: plan-strategy section 2 D-5 + section 3.1 PR block SPM +
|
|
27
|
+
// section 4 risk R-SCHEMA-1 reaction; research F-2 + F-5;
|
|
28
|
+
// requirements section AC-02 + section 2.3 playbackMode row;
|
|
29
|
+
// plan-tasks.json T-07 acceptanceCheck (rg
|
|
30
|
+
// "SPRITE_PLAYBACK_MODE_LOOP|SPRITE_PLAYBACK_MODE_CLAMP|
|
|
31
|
+
// spritePlaybackModeFromU32" >= 3 hits in this file).
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Playback mode discriminator literal union (requirements section AC-02 +
|
|
35
|
+
* section 2.3). Two members for the MVP:
|
|
36
|
+
*
|
|
37
|
+
* `'loop'` — `currentFrame = (currentFrame + 1) % frameCount`; the
|
|
38
|
+
* sprite-animation-tick system wraps the index when
|
|
39
|
+
* `accumDt >= frameDuration` (default for hello-sprite-
|
|
40
|
+
* atlas demo "100 sprites synchronised walk cycle").
|
|
41
|
+
* `'clamp'` — `currentFrame = min(currentFrame + 1, frameCount - 1)`;
|
|
42
|
+
* holds the last frame for death / terminator-animation
|
|
43
|
+
* style sequences (requirements section 2.5 q8 lock).
|
|
44
|
+
*
|
|
45
|
+
* Future modes (`'pingpong'`, reverse playback, arbitrary frame index
|
|
46
|
+
* jumps) are deferred per requirements OOS-03. The closed union shape
|
|
47
|
+
* leaves room for additive growth without breaking the u32 enum encoding
|
|
48
|
+
* (plan-strategy section 2 D-5).
|
|
49
|
+
*/
|
|
50
|
+
export type SpritePlaybackMode = 'loop' | 'clamp';
|
|
51
|
+
|
|
52
|
+
/** Numeric encoding of the loop playback mode (schema value for `playbackMode`). */
|
|
53
|
+
export const SPRITE_PLAYBACK_MODE_LOOP = 0 as const;
|
|
54
|
+
|
|
55
|
+
/** Numeric encoding of the clamp playback mode (schema value for `playbackMode`). */
|
|
56
|
+
export const SPRITE_PLAYBACK_MODE_CLAMP = 1 as const;
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Map a `SpriteAnimation.playbackMode` numeric column value to the closed
|
|
60
|
+
* `SpritePlaybackMode` string-literal union. The defensive fallback mirrors
|
|
61
|
+
* `cameraProjectionFromF32` / `tonemapFromF32` precedent — any value other
|
|
62
|
+
* than `SPRITE_PLAYBACK_MODE_CLAMP` (1) maps to `'loop'`, so stale or
|
|
63
|
+
* uninitialised entities surface a predictable playback shape through the
|
|
64
|
+
* tick-system query (rather than throwing or returning `undefined`).
|
|
65
|
+
* Validation of `playbackMode` happens at schema-write time, not here.
|
|
66
|
+
*
|
|
67
|
+
* The tick-system in M4 T-23 (`spriteAnimationTickSystem`) consumes the
|
|
68
|
+
* return value via `switch (mode) { case 'loop': ...; case 'clamp': ... }`
|
|
69
|
+
* to pick the per-branch frame-advance arithmetic.
|
|
70
|
+
*/
|
|
71
|
+
export function spritePlaybackModeFromU32(value: number): SpritePlaybackMode {
|
|
72
|
+
return value === SPRITE_PLAYBACK_MODE_CLAMP ? 'clamp' : 'loop';
|
|
73
|
+
}
|