@forgeax/engine-render 0.0.0-dev.8d955ade1c79
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/README.md +647 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/__tests__/authoring-path.unit.test.d.ts +2 -0
- package/dist/__tests__/authoring-path.unit.test.d.ts.map +1 -0
- package/dist/__tests__/backend-selection-rhi-capture.test-d.d.ts +2 -0
- package/dist/__tests__/backend-selection-rhi-capture.test-d.d.ts.map +1 -0
- package/dist/__tests__/callback-inference.test-d.d.ts +2 -0
- package/dist/__tests__/callback-inference.test-d.d.ts.map +1 -0
- package/dist/__tests__/cluster-binner.test.d.ts +2 -0
- package/dist/__tests__/cluster-binner.test.d.ts.map +1 -0
- package/dist/__tests__/cluster-grid-default-surface.unit.test.d.ts +2 -0
- package/dist/__tests__/cluster-grid-default-surface.unit.test.d.ts.map +1 -0
- package/dist/__tests__/construct-renderer-identity.unit.test.d.ts +2 -0
- package/dist/__tests__/construct-renderer-identity.unit.test.d.ts.map +1 -0
- package/dist/__tests__/device-scope-lifecycle.unit.test.d.ts +2 -0
- package/dist/__tests__/device-scope-lifecycle.unit.test.d.ts.map +1 -0
- package/dist/__tests__/device-scope-stale-matrix.unit.test.d.ts +2 -0
- package/dist/__tests__/device-scope-stale-matrix.unit.test.d.ts.map +1 -0
- package/dist/__tests__/direct-extract-consumer-contract.test-d.d.ts +2 -0
- package/dist/__tests__/direct-extract-consumer-contract.test-d.d.ts.map +1 -0
- package/dist/__tests__/direct-light-snapshot.unit.test.d.ts +2 -0
- package/dist/__tests__/direct-light-snapshot.unit.test.d.ts.map +1 -0
- package/dist/__tests__/factory-contract.integration.test.d.ts +2 -0
- package/dist/__tests__/factory-contract.integration.test.d.ts.map +1 -0
- package/dist/__tests__/fallback-row-stride-surface.unit.test.d.ts +2 -0
- package/dist/__tests__/fallback-row-stride-surface.unit.test.d.ts.map +1 -0
- package/dist/__tests__/frame-observation.contract.test.d.ts +2 -0
- package/dist/__tests__/frame-observation.contract.test.d.ts.map +1 -0
- package/dist/__tests__/fullscreen-feature-plan.unit.test.d.ts +2 -0
- package/dist/__tests__/fullscreen-feature-plan.unit.test.d.ts.map +1 -0
- package/dist/__tests__/glyph-text-layout-recovery.unit.test.d.ts +2 -0
- package/dist/__tests__/glyph-text-layout-recovery.unit.test.d.ts.map +1 -0
- package/dist/__tests__/gpu-driven-indirect-raster-evidence.d.ts +6 -0
- package/dist/__tests__/gpu-driven-indirect-raster-evidence.d.ts.map +1 -0
- package/dist/__tests__/gpu-driven-indirect-raster.browser.test.d.ts +2 -0
- package/dist/__tests__/gpu-driven-indirect-raster.browser.test.d.ts.map +1 -0
- package/dist/__tests__/gpu-driven-indirect-raster.dawn.test.d.ts +2 -0
- package/dist/__tests__/gpu-driven-indirect-raster.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/gpu-driven-production.integration.test.d.ts +2 -0
- package/dist/__tests__/gpu-driven-production.integration.test.d.ts.map +1 -0
- package/dist/__tests__/gpu-driven-scaling.unit.test.d.ts +2 -0
- package/dist/__tests__/gpu-driven-scaling.unit.test.d.ts.map +1 -0
- package/dist/__tests__/gpu-driven-view-gpu-evidence.d.ts +18 -0
- package/dist/__tests__/gpu-driven-view-gpu-evidence.d.ts.map +1 -0
- package/dist/__tests__/gpu-driven-view-graph.integration.test.d.ts +2 -0
- package/dist/__tests__/gpu-driven-view-graph.integration.test.d.ts.map +1 -0
- package/dist/__tests__/gpu-driven-view-reference.d.ts +15 -0
- package/dist/__tests__/gpu-driven-view-reference.d.ts.map +1 -0
- package/dist/__tests__/gpu-driven-view.browser.test.d.ts +2 -0
- package/dist/__tests__/gpu-driven-view.browser.test.d.ts.map +1 -0
- package/dist/__tests__/gpu-driven-view.dawn.test.d.ts +2 -0
- package/dist/__tests__/gpu-driven-view.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/gpu-driven-view.unit.test.d.ts +2 -0
- package/dist/__tests__/gpu-driven-view.unit.test.d.ts.map +1 -0
- package/dist/__tests__/gpu-resource-store-stride.unit.test.d.ts +2 -0
- package/dist/__tests__/gpu-resource-store-stride.unit.test.d.ts.map +1 -0
- package/dist/__tests__/gpu-scene-render-graph-gpu.d.ts +7 -0
- package/dist/__tests__/gpu-scene-render-graph-gpu.d.ts.map +1 -0
- package/dist/__tests__/gpu-scene-render-graph.browser.test.d.ts +2 -0
- package/dist/__tests__/gpu-scene-render-graph.browser.test.d.ts.map +1 -0
- package/dist/__tests__/gpu-scene-render-graph.dawn.test.d.ts +2 -0
- package/dist/__tests__/gpu-scene-render-graph.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/gpu-scene-schema.unit.test.d.ts +2 -0
- package/dist/__tests__/gpu-scene-schema.unit.test.d.ts.map +1 -0
- package/dist/__tests__/gpu-scene.dawn.test.d.ts +2 -0
- package/dist/__tests__/gpu-scene.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/gpu-scene.unit.test.d.ts +2 -0
- package/dist/__tests__/gpu-scene.unit.test.d.ts.map +1 -0
- package/dist/__tests__/ibl/face-uniforms.unit.test.d.ts +2 -0
- package/dist/__tests__/ibl/face-uniforms.unit.test.d.ts.map +1 -0
- package/dist/__tests__/infinite-grid-no-vertex-probe.unit.test.d.ts +2 -0
- package/dist/__tests__/infinite-grid-no-vertex-probe.unit.test.d.ts.map +1 -0
- package/dist/__tests__/injection-kind-owner.test-d.d.ts +2 -0
- package/dist/__tests__/injection-kind-owner.test-d.d.ts.map +1 -0
- package/dist/__tests__/ktx2-basis-gpu-consumer.dawn.test.d.ts +2 -0
- package/dist/__tests__/ktx2-basis-gpu-consumer.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/light-buffer-layout.unit.test.d.ts +2 -0
- package/dist/__tests__/light-buffer-layout.unit.test.d.ts.map +1 -0
- package/dist/__tests__/material-contract-inventory.unit.test.d.ts +2 -0
- package/dist/__tests__/material-contract-inventory.unit.test.d.ts.map +1 -0
- package/dist/__tests__/material-cooked-projection.unit.test.d.ts +2 -0
- package/dist/__tests__/material-cooked-projection.unit.test.d.ts.map +1 -0
- package/dist/__tests__/material-snapshot-mutation.integration.test.d.ts +2 -0
- package/dist/__tests__/material-snapshot-mutation.integration.test.d.ts.map +1 -0
- package/dist/__tests__/material-static-dynamic-route.unit.test.d.ts +2 -0
- package/dist/__tests__/material-static-dynamic-route.unit.test.d.ts.map +1 -0
- package/dist/__tests__/material-stride-surface.unit.test.d.ts +2 -0
- package/dist/__tests__/material-stride-surface.unit.test.d.ts.map +1 -0
- package/dist/__tests__/mesh-buffer-usage-surface.unit.test.d.ts +2 -0
- package/dist/__tests__/mesh-buffer-usage-surface.unit.test.d.ts.map +1 -0
- package/dist/__tests__/mesh-material-bindings.unit.test.d.ts +2 -0
- package/dist/__tests__/mesh-material-bindings.unit.test.d.ts.map +1 -0
- package/dist/__tests__/mesh-stride-surface.unit.test.d.ts +2 -0
- package/dist/__tests__/mesh-stride-surface.unit.test.d.ts.map +1 -0
- package/dist/__tests__/morph-culling-reentry.dawn.test.d.ts +2 -0
- package/dist/__tests__/morph-culling-reentry.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/morph-feature-gpu-work.integration.test.d.ts +2 -0
- package/dist/__tests__/morph-feature-gpu-work.integration.test.d.ts.map +1 -0
- package/dist/__tests__/morph-feature-plan.unit.test.d.ts +2 -0
- package/dist/__tests__/morph-feature-plan.unit.test.d.ts.map +1 -0
- package/dist/__tests__/morph-visual-evidence.integration.test.d.ts +2 -0
- package/dist/__tests__/morph-visual-evidence.integration.test.d.ts.map +1 -0
- package/dist/__tests__/nineslice-handle-surface.unit.test.d.ts +2 -0
- package/dist/__tests__/nineslice-handle-surface.unit.test.d.ts.map +1 -0
- package/dist/__tests__/post-process-error-policy-owner.unit.test.d.ts +2 -0
- package/dist/__tests__/post-process-error-policy-owner.unit.test.d.ts.map +1 -0
- package/dist/__tests__/prepared-buffer-kind-owner.test-d.d.ts +2 -0
- package/dist/__tests__/prepared-buffer-kind-owner.test-d.d.ts.map +1 -0
- package/dist/__tests__/prepared-graphics-capability.unit.test.d.ts +2 -0
- package/dist/__tests__/prepared-graphics-capability.unit.test.d.ts.map +1 -0
- package/dist/__tests__/prepared-graphics-generation.unit.test.d.ts +2 -0
- package/dist/__tests__/prepared-graphics-generation.unit.test.d.ts.map +1 -0
- package/dist/__tests__/prepared-graphics-lifecycle.unit.test.d.ts +2 -0
- package/dist/__tests__/prepared-graphics-lifecycle.unit.test.d.ts.map +1 -0
- package/dist/__tests__/prepared-graphics-pipeline-warmup.unit.test.d.ts +2 -0
- package/dist/__tests__/prepared-graphics-pipeline-warmup.unit.test.d.ts.map +1 -0
- package/dist/__tests__/prepared-graphics-resolver.unit.test.d.ts +2 -0
- package/dist/__tests__/prepared-graphics-resolver.unit.test.d.ts.map +1 -0
- package/dist/__tests__/prepared-graphics-snapshot.unit.test.d.ts +2 -0
- package/dist/__tests__/prepared-graphics-snapshot.unit.test.d.ts.map +1 -0
- package/dist/__tests__/prepared-graphics-store.unit.test.d.ts +2 -0
- package/dist/__tests__/prepared-graphics-store.unit.test.d.ts.map +1 -0
- package/dist/__tests__/prepared-graphics-validation.unit.test.d.ts +2 -0
- package/dist/__tests__/prepared-graphics-validation.unit.test.d.ts.map +1 -0
- package/dist/__tests__/profiler-default-off.test.d.ts +2 -0
- package/dist/__tests__/profiler-default-off.test.d.ts.map +1 -0
- package/dist/__tests__/profiler-phase-catalog.test.d.ts +2 -0
- package/dist/__tests__/profiler-phase-catalog.test.d.ts.map +1 -0
- package/dist/__tests__/profiler-phase-integration.test.d.ts +2 -0
- package/dist/__tests__/profiler-phase-integration.test.d.ts.map +1 -0
- package/dist/__tests__/profiler-phase-token.test.d.ts +2 -0
- package/dist/__tests__/profiler-phase-token.test.d.ts.map +1 -0
- package/dist/__tests__/public-surface.test-d.d.ts +2 -0
- package/dist/__tests__/public-surface.test-d.d.ts.map +1 -0
- package/dist/__tests__/recover-error-policy-owner.unit.test.d.ts +2 -0
- package/dist/__tests__/recover-error-policy-owner.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-error-code-owner.test-d.d.ts +2 -0
- package/dist/__tests__/render-error-code-owner.test-d.d.ts.map +1 -0
- package/dist/__tests__/render-error-detail-ssot.test-d.d.ts +2 -0
- package/dist/__tests__/render-error-detail-ssot.test-d.d.ts.map +1 -0
- package/dist/__tests__/render-error-exhaustive.test-d.d.ts +2 -0
- package/dist/__tests__/render-error-exhaustive.test-d.d.ts.map +1 -0
- package/dist/__tests__/render-feature-assembly.test-d.d.ts +2 -0
- package/dist/__tests__/render-feature-assembly.test-d.d.ts.map +1 -0
- package/dist/__tests__/render-feature-context.test-d.d.ts +2 -0
- package/dist/__tests__/render-feature-context.test-d.d.ts.map +1 -0
- package/dist/__tests__/render-feature-contract.test-d.d.ts +2 -0
- package/dist/__tests__/render-feature-contract.test-d.d.ts.map +1 -0
- package/dist/__tests__/render-feature-diagnostics.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-diagnostics.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-docs.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-docs.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-errors.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-errors.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-gpu-work.integration.test.d.ts +2 -0
- package/dist/__tests__/render-feature-gpu-work.integration.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-plan.test-d.d.ts +2 -0
- package/dist/__tests__/render-feature-plan.test-d.d.ts.map +1 -0
- package/dist/__tests__/render-feature-plan.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-plan.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-prepared-diagnostics.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-prepared-diagnostics.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-prepared-errors.test-d.d.ts +2 -0
- package/dist/__tests__/render-feature-prepared-errors.test-d.d.ts.map +1 -0
- package/dist/__tests__/render-feature-prepared-graphics-docs.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-prepared-graphics-docs.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-prepared-graphics-isolation.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-prepared-graphics-isolation.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-prepared-graphics-negative.test-d.d.ts +2 -0
- package/dist/__tests__/render-feature-prepared-graphics-negative.test-d.d.ts.map +1 -0
- package/dist/__tests__/render-feature-prepared-graphics.test-d.d.ts +2 -0
- package/dist/__tests__/render-feature-prepared-graphics.test-d.d.ts.map +1 -0
- package/dist/__tests__/render-feature-prepared-graphics.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-prepared-graphics.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-public-surface.test-d.d.ts +2 -0
- package/dist/__tests__/render-feature-public-surface.test-d.d.ts.map +1 -0
- package/dist/__tests__/render-feature-retry.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-retry.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-scheduling.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-scheduling.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-stage-failed-policy-owner.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-stage-failed-policy-owner.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-stage-fault-recovery.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-stage-fault-recovery.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-visibility-context.test-d.d.ts +2 -0
- package/dist/__tests__/render-feature-visibility-context.test-d.d.ts.map +1 -0
- package/dist/__tests__/render-feature-visibility-context.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-visibility-context.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-zero-work.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-zero-work.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-graph-compute-raster-gpu.d.ts +7 -0
- package/dist/__tests__/render-graph-compute-raster-gpu.d.ts.map +1 -0
- package/dist/__tests__/render-graph-compute-raster.browser.test.d.ts +2 -0
- package/dist/__tests__/render-graph-compute-raster.browser.test.d.ts.map +1 -0
- package/dist/__tests__/render-graph-compute-raster.dawn.test.d.ts +2 -0
- package/dist/__tests__/render-graph-compute-raster.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/render-graph-hzb-gpu.d.ts +7 -0
- package/dist/__tests__/render-graph-hzb-gpu.d.ts.map +1 -0
- package/dist/__tests__/render-graph-hzb.browser.test.d.ts +2 -0
- package/dist/__tests__/render-graph-hzb.browser.test.d.ts.map +1 -0
- package/dist/__tests__/render-graph-hzb.dawn.test.d.ts +2 -0
- package/dist/__tests__/render-graph-hzb.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/render-graph-primitives.unit.test.d.ts +2 -0
- package/dist/__tests__/render-graph-primitives.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-graph-storage-indirect-gpu.d.ts +12 -0
- package/dist/__tests__/render-graph-storage-indirect-gpu.d.ts.map +1 -0
- package/dist/__tests__/render-graph-storage-indirect.browser.test.d.ts +2 -0
- package/dist/__tests__/render-graph-storage-indirect.browser.test.d.ts.map +1 -0
- package/dist/__tests__/render-graph-storage-indirect.dawn.test.d.ts +2 -0
- package/dist/__tests__/render-graph-storage-indirect.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/render-scene-projection.unit.test.d.ts +2 -0
- package/dist/__tests__/render-scene-projection.unit.test.d.ts.map +1 -0
- package/dist/__tests__/renderer-factory-material-contract.unit.test.d.ts +2 -0
- package/dist/__tests__/renderer-factory-material-contract.unit.test.d.ts.map +1 -0
- package/dist/__tests__/renderer-lifecycle.integration.test.d.ts +2 -0
- package/dist/__tests__/renderer-lifecycle.integration.test.d.ts.map +1 -0
- package/dist/__tests__/rhi-backend-package-boundary.unit.test.d.ts +2 -0
- package/dist/__tests__/rhi-backend-package-boundary.unit.test.d.ts.map +1 -0
- package/dist/__tests__/scriptable-pack-consumer.test-d.d.ts +2 -0
- package/dist/__tests__/scriptable-pack-consumer.test-d.d.ts.map +1 -0
- package/dist/__tests__/shader-stage-surface.unit.test.d.ts +2 -0
- package/dist/__tests__/shader-stage-surface.unit.test.d.ts.map +1 -0
- package/dist/__tests__/ssao-config.unit.test.d.ts +2 -0
- package/dist/__tests__/ssao-config.unit.test.d.ts.map +1 -0
- package/dist/__tests__/ssao-kernel-surface.unit.test.d.ts +2 -0
- package/dist/__tests__/ssao-kernel-surface.unit.test.d.ts.map +1 -0
- package/dist/__tests__/standard-clustered-pipeline.unit.test.d.ts +2 -0
- package/dist/__tests__/standard-clustered-pipeline.unit.test.d.ts.map +1 -0
- package/dist/__tests__/standard-descriptors.test-d.d.ts +2 -0
- package/dist/__tests__/standard-descriptors.test-d.d.ts.map +1 -0
- package/dist/__tests__/standard-pipeline.dawn.test.d.ts +2 -0
- package/dist/__tests__/standard-pipeline.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/standard-pipeline.integration.test.d.ts +2 -0
- package/dist/__tests__/standard-pipeline.integration.test.d.ts.map +1 -0
- package/dist/__tests__/standard-profile-oracle.unit.test.d.ts +2 -0
- package/dist/__tests__/standard-profile-oracle.unit.test.d.ts.map +1 -0
- package/dist/__tests__/surface-configuration.unit.test.d.ts +2 -0
- package/dist/__tests__/surface-configuration.unit.test.d.ts.map +1 -0
- package/dist/__tests__/texture-usage-surface.unit.test.d.ts +2 -0
- package/dist/__tests__/texture-usage-surface.unit.test.d.ts.map +1 -0
- package/dist/__tests__/typed-pipeline-topology.unit.test.d.ts +2 -0
- package/dist/__tests__/typed-pipeline-topology.unit.test.d.ts.map +1 -0
- package/dist/__tests__/urp-pipeline-targets.unit.test.d.ts +2 -0
- package/dist/__tests__/urp-pipeline-targets.unit.test.d.ts.map +1 -0
- package/dist/__tests__/urp-pipeline.unit.test.d.ts +2 -0
- package/dist/__tests__/urp-pipeline.unit.test.d.ts.map +1 -0
- package/dist/__tests__/vertex-color-pipeline.unit.test.d.ts +2 -0
- package/dist/__tests__/vertex-color-pipeline.unit.test.d.ts.map +1 -0
- package/dist/__tests__/vertex-layout-consumer.unit.test.d.ts +2 -0
- package/dist/__tests__/vertex-layout-consumer.unit.test.d.ts.map +1 -0
- package/dist/__tests__/visibility-diagnostics.integration.test.d.ts +2 -0
- package/dist/__tests__/visibility-diagnostics.integration.test.d.ts.map +1 -0
- package/dist/__tests__/visibility-extract.integration.test.d.ts +2 -0
- package/dist/__tests__/visibility-extract.integration.test.d.ts.map +1 -0
- package/dist/__tests__/visibility-extract.perf.test.d.ts +2 -0
- package/dist/__tests__/visibility-extract.perf.test.d.ts.map +1 -0
- package/dist/__tests__/visibility-feature-dedup.integration.test.d.ts +2 -0
- package/dist/__tests__/visibility-feature-dedup.integration.test.d.ts.map +1 -0
- package/dist/__tests__/visibility-hidden-report.unit.test.d.ts +2 -0
- package/dist/__tests__/visibility-hidden-report.unit.test.d.ts.map +1 -0
- package/dist/__tests__/visibility-instances.integration.test.d.ts +2 -0
- package/dist/__tests__/visibility-instances.integration.test.d.ts.map +1 -0
- package/dist/__tests__/visibility-multi-world.integration.test.d.ts +2 -0
- package/dist/__tests__/visibility-multi-world.integration.test.d.ts.map +1 -0
- package/dist/__tests__/visibility-producer-matrix.integration.test.d.ts +2 -0
- package/dist/__tests__/visibility-producer-matrix.integration.test.d.ts.map +1 -0
- package/dist/__tests__/visibility-producer-matrix.unit.test.d.ts +2 -0
- package/dist/__tests__/visibility-producer-matrix.unit.test.d.ts.map +1 -0
- package/dist/__tests__/visibility-public-surface.test-d.d.ts +2 -0
- package/dist/__tests__/visibility-public-surface.test-d.d.ts.map +1 -0
- package/dist/__tests__/visibility-resolver.unit.test.d.ts +2 -0
- package/dist/__tests__/visibility-resolver.unit.test.d.ts.map +1 -0
- package/dist/__tests__/visibility-resource-short-circuit.unit.test.d.ts +2 -0
- package/dist/__tests__/visibility-resource-short-circuit.unit.test.d.ts.map +1 -0
- package/dist/__tests__/visibility-snapshot-contract.unit.test.d.ts +2 -0
- package/dist/__tests__/visibility-snapshot-contract.unit.test.d.ts.map +1 -0
- package/dist/__tests__/vocabulary.unit.test.d.ts +2 -0
- package/dist/__tests__/vocabulary.unit.test.d.ts.map +1 -0
- package/dist/assembly/backend-contract.d.ts +37 -0
- package/dist/assembly/backend-contract.d.ts.map +1 -0
- package/dist/assembly/factory.d.ts +207 -0
- package/dist/assembly/factory.d.ts.map +1 -0
- package/dist/assembly/host-contract.d.ts +84 -0
- package/dist/assembly/host-contract.d.ts.map +1 -0
- package/dist/assembly/material/assembly.d.ts +21 -0
- package/dist/assembly/material/assembly.d.ts.map +1 -0
- package/dist/assembly/material/pipeline-projection.d.ts +30 -0
- package/dist/assembly/material/pipeline-projection.d.ts.map +1 -0
- package/dist/assets/asset-decoders.d.ts +5 -0
- package/dist/assets/asset-decoders.d.ts.map +1 -0
- package/dist/assets/render-asset-port.d.ts +17 -0
- package/dist/assets/render-asset-port.d.ts.map +1 -0
- package/dist/assets/resolve-render-asset.d.ts +6 -0
- package/dist/assets/resolve-render-asset.d.ts.map +1 -0
- package/dist/authoring.d.ts +12 -0
- package/dist/authoring.d.ts.map +1 -0
- package/dist/authoring.mjs +27 -0
- package/dist/authoring.mjs.map +1 -0
- package/dist/chunk-CQXZC5XI.mjs +182 -0
- package/dist/chunk-CQXZC5XI.mjs.map +1 -0
- package/dist/chunk-HCOGPHKS.mjs +93 -0
- package/dist/chunk-HCOGPHKS.mjs.map +1 -0
- package/dist/chunk-YEJIUW7D.mjs +1152 -0
- package/dist/chunk-YEJIUW7D.mjs.map +1 -0
- package/dist/cluster-binner.d.ts +152 -0
- package/dist/cluster-binner.d.ts.map +1 -0
- package/dist/components/__tests__/points-lines-admission.unit.test.d.ts +2 -0
- package/dist/components/__tests__/points-lines-admission.unit.test.d.ts.map +1 -0
- package/dist/components/__tests__/points-lines-schema.unit.test.d.ts +2 -0
- package/dist/components/__tests__/points-lines-schema.unit.test.d.ts.map +1 -0
- package/dist/components/__tests__/schema-contract.unit.test.d.ts +2 -0
- package/dist/components/__tests__/schema-contract.unit.test.d.ts.map +1 -0
- package/dist/components/__tests__/schema-parity.unit.test.d.ts +2 -0
- package/dist/components/__tests__/schema-parity.unit.test.d.ts.map +1 -0
- package/dist/components/__tests__/visibility-schema.unit.test.d.ts +2 -0
- package/dist/components/__tests__/visibility-schema.unit.test.d.ts.map +1 -0
- package/dist/components/camera.d.ts +311 -0
- package/dist/components/camera.d.ts.map +1 -0
- package/dist/components/directional-light.d.ts +76 -0
- package/dist/components/directional-light.d.ts.map +1 -0
- package/dist/components/glyph-text.d.ts +26 -0
- package/dist/components/glyph-text.d.ts.map +1 -0
- package/dist/components/index.d.ts +24 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/instances.d.ts +41 -0
- package/dist/components/instances.d.ts.map +1 -0
- package/dist/components/layer.d.ts +34 -0
- package/dist/components/layer.d.ts.map +1 -0
- package/dist/components/light-helpers.d.ts +53 -0
- package/dist/components/light-helpers.d.ts.map +1 -0
- package/dist/components/lines.d.ts +5 -0
- package/dist/components/lines.d.ts.map +1 -0
- package/dist/components/mesh-filter.d.ts +24 -0
- package/dist/components/mesh-filter.d.ts.map +1 -0
- package/dist/components/mesh-renderer.d.ts +33 -0
- package/dist/components/mesh-renderer.d.ts.map +1 -0
- package/dist/components/point-light-shadow.d.ts +27 -0
- package/dist/components/point-light-shadow.d.ts.map +1 -0
- package/dist/components/point-light.d.ts +35 -0
- package/dist/components/point-light.d.ts.map +1 -0
- package/dist/components/points.d.ts +15 -0
- package/dist/components/points.d.ts.map +1 -0
- package/dist/components/post-process-params.d.ts +5 -0
- package/dist/components/post-process-params.d.ts.map +1 -0
- package/dist/components/scene-instance.d.ts +140 -0
- package/dist/components/scene-instance.d.ts.map +1 -0
- package/dist/components/skybox-background.d.ts +56 -0
- package/dist/components/skybox-background.d.ts.map +1 -0
- package/dist/components/skylight.d.ts +55 -0
- package/dist/components/skylight.d.ts.map +1 -0
- package/dist/components/sort-key.d.ts +44 -0
- package/dist/components/sort-key.d.ts.map +1 -0
- package/dist/components/spot-light.d.ts +81 -0
- package/dist/components/spot-light.d.ts.map +1 -0
- package/dist/components/sprite-animation.d.ts +74 -0
- package/dist/components/sprite-animation.d.ts.map +1 -0
- package/dist/components/sprite-instances.d.ts +51 -0
- package/dist/components/sprite-instances.d.ts.map +1 -0
- package/dist/components/sprite-playback-mode.d.ts +42 -0
- package/dist/components/sprite-playback-mode.d.ts.map +1 -0
- package/dist/components/sprite-region-override.d.ts +46 -0
- package/dist/components/sprite-region-override.d.ts.map +1 -0
- package/dist/components/tile-layer.d.ts +106 -0
- package/dist/components/tile-layer.d.ts.map +1 -0
- package/dist/components/tilemap.d.ts +25 -0
- package/dist/components/tilemap.d.ts.map +1 -0
- package/dist/components/visibility.d.ts +22 -0
- package/dist/components/visibility.d.ts.map +1 -0
- package/dist/construct-renderer.d.ts +19 -0
- package/dist/construct-renderer.d.ts.map +1 -0
- package/dist/construct-renderer.mjs +27462 -0
- package/dist/construct-renderer.mjs.map +1 -0
- package/dist/debug-draw-glue.d.ts +5 -0
- package/dist/debug-draw-glue.d.ts.map +1 -0
- package/dist/device/device-scope.d.ts +83 -0
- package/dist/device/device-scope.d.ts.map +1 -0
- package/dist/device/gpu-residency.d.ts +337 -0
- package/dist/device/gpu-residency.d.ts.map +1 -0
- package/dist/device/resource-types.d.ts +8 -0
- package/dist/device/resource-types.d.ts.map +1 -0
- package/dist/engine-metrics.d.ts +23 -0
- package/dist/engine-metrics.d.ts.map +1 -0
- package/dist/errors/ecs-validation.d.ts +3 -0
- package/dist/errors/ecs-validation.d.ts.map +1 -0
- package/dist/errors/index.d.ts +4 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/recover.d.ts +105 -0
- package/dist/errors/recover.d.ts.map +1 -0
- package/dist/errors/render.d.ts +705 -0
- package/dist/errors/render.d.ts.map +1 -0
- package/dist/extract/visibility.d.ts +26 -0
- package/dist/extract/visibility.d.ts.map +1 -0
- package/dist/features/fullscreen.d.ts +19 -0
- package/dist/features/fullscreen.d.ts.map +1 -0
- package/dist/features/host.d.ts +106 -0
- package/dist/features/host.d.ts.map +1 -0
- package/dist/features/morph/morph-feature.d.ts +79 -0
- package/dist/features/morph/morph-feature.d.ts.map +1 -0
- package/dist/features/plan.d.ts +182 -0
- package/dist/features/plan.d.ts.map +1 -0
- package/dist/features/prepared-gpu-work.d.ts +117 -0
- package/dist/features/prepared-gpu-work.d.ts.map +1 -0
- package/dist/features/prepared-graphics-store.d.ts +66 -0
- package/dist/features/prepared-graphics-store.d.ts.map +1 -0
- package/dist/features/prepared-graphics.d.ts +215 -0
- package/dist/features/prepared-graphics.d.ts.map +1 -0
- package/dist/features/render-graph-compute.d.ts +13 -0
- package/dist/features/render-graph-compute.d.ts.map +1 -0
- package/dist/features/render-graph-contribution.d.ts +12 -0
- package/dist/features/render-graph-contribution.d.ts.map +1 -0
- package/dist/features/render-graph-raster.d.ts +38 -0
- package/dist/features/render-graph-raster.d.ts.map +1 -0
- package/dist/features/render-graph-resources.d.ts +11 -0
- package/dist/features/render-graph-resources.d.ts.map +1 -0
- package/dist/features/targets.d.ts +32 -0
- package/dist/features/targets.d.ts.map +1 -0
- package/dist/features/types.d.ts +68 -0
- package/dist/features/types.d.ts.map +1 -0
- package/dist/features/vocabulary.d.ts +14 -0
- package/dist/features/vocabulary.d.ts.map +1 -0
- package/dist/fullscreen-post-process-pass.d.ts +157 -0
- package/dist/fullscreen-post-process-pass.d.ts.map +1 -0
- package/dist/glyph-text-layout-system.d.ts +19 -0
- package/dist/glyph-text-layout-system.d.ts.map +1 -0
- package/dist/gpu-driven/batch-topology.d.ts +55 -0
- package/dist/gpu-driven/batch-topology.d.ts.map +1 -0
- package/dist/gpu-driven/production-raster.d.ts +51 -0
- package/dist/gpu-driven/production-raster.d.ts.map +1 -0
- package/dist/gpu-driven/view-gpu.d.ts +85 -0
- package/dist/gpu-driven/view-gpu.d.ts.map +1 -0
- package/dist/gpu-resource.d.ts +73 -0
- package/dist/gpu-resource.d.ts.map +1 -0
- package/dist/gpu-scene-schema.d.ts +78 -0
- package/dist/gpu-scene-schema.d.ts.map +1 -0
- package/dist/gpu-scene.d.ts +55 -0
- package/dist/gpu-scene.d.ts.map +1 -0
- package/dist/gpu-stage.d.ts +4 -0
- package/dist/gpu-stage.d.ts.map +1 -0
- package/dist/gpu-texture-usage.d.ts +6 -0
- package/dist/gpu-texture-usage.d.ts.map +1 -0
- package/dist/gpu-usage.d.ts +9 -0
- package/dist/gpu-usage.d.ts.map +1 -0
- package/dist/hdrp-buffers.d.ts +163 -0
- package/dist/hdrp-buffers.d.ts.map +1 -0
- package/dist/ibl/IblPipelineCache.d.ts +168 -0
- package/dist/ibl/IblPipelineCache.d.ts.map +1 -0
- package/dist/ibl/skylight-bind-group.d.ts +130 -0
- package/dist/ibl/skylight-bind-group.d.ts.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.mjs +169 -0
- package/dist/index.mjs.map +1 -0
- package/dist/inspection-types.d.ts +72 -0
- package/dist/inspection-types.d.ts.map +1 -0
- package/dist/instance-buffer-cache.d.ts +56 -0
- package/dist/instance-buffer-cache.d.ts.map +1 -0
- package/dist/internal.d.ts +2 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.mjs +3 -0
- package/dist/internal.mjs.map +1 -0
- package/dist/lifecycle.d.ts +62 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/light-buffer-layout.d.ts +164 -0
- package/dist/light-buffer-layout.d.ts.map +1 -0
- package/dist/materials.d.ts +47 -0
- package/dist/materials.d.ts.map +1 -0
- package/dist/mesh-material-bindings.d.ts +43 -0
- package/dist/mesh-material-bindings.d.ts.map +1 -0
- package/dist/pbr-pipeline.d.ts +301 -0
- package/dist/pbr-pipeline.d.ts.map +1 -0
- package/dist/pipeline/standard-forward-lane.d.ts +5 -0
- package/dist/pipeline/standard-forward-lane.d.ts.map +1 -0
- package/dist/pipeline/standard-pipeline.d.ts +31 -0
- package/dist/pipeline/standard-pipeline.d.ts.map +1 -0
- package/dist/pipeline/standard-profile.d.ts +40 -0
- package/dist/pipeline/standard-profile.d.ts.map +1 -0
- package/dist/pipeline-builder.d.ts +122 -0
- package/dist/pipeline-builder.d.ts.map +1 -0
- package/dist/pipeline-spec-types.d.ts +24 -0
- package/dist/pipeline-spec-types.d.ts.map +1 -0
- package/dist/pipeline-spec.d.ts +367 -0
- package/dist/pipeline-spec.d.ts.map +1 -0
- package/dist/plugin.d.ts +4 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/points-lines/__tests__/bounds.unit.test.d.ts +2 -0
- package/dist/points-lines/__tests__/bounds.unit.test.d.ts.map +1 -0
- package/dist/points-lines/__tests__/cache-recovery.unit.test.d.ts +2 -0
- package/dist/points-lines/__tests__/cache-recovery.unit.test.d.ts.map +1 -0
- package/dist/points-lines/__tests__/inspection-lanes.integration.test.d.ts +2 -0
- package/dist/points-lines/__tests__/inspection-lanes.integration.test.d.ts.map +1 -0
- package/dist/points-lines/__tests__/inspection.unit.test.d.ts +2 -0
- package/dist/points-lines/__tests__/inspection.unit.test.d.ts.map +1 -0
- package/dist/points-lines/__tests__/lane-structural.integration.test.d.ts +2 -0
- package/dist/points-lines/__tests__/lane-structural.integration.test.d.ts.map +1 -0
- package/dist/points-lines/__tests__/points-lines.bench.d.ts +2 -0
- package/dist/points-lines/__tests__/points-lines.bench.d.ts.map +1 -0
- package/dist/points-lines/__tests__/raster-lane.integration.test.d.ts +2 -0
- package/dist/points-lines/__tests__/raster-lane.integration.test.d.ts.map +1 -0
- package/dist/points-lines/__tests__/snapshot.unit.test.d.ts +2 -0
- package/dist/points-lines/__tests__/snapshot.unit.test.d.ts.map +1 -0
- package/dist/points-lines/__tests__/view-ubo.unit.test.d.ts +2 -0
- package/dist/points-lines/__tests__/view-ubo.unit.test.d.ts.map +1 -0
- package/dist/points-lines/admission.d.ts +36 -0
- package/dist/points-lines/admission.d.ts.map +1 -0
- package/dist/points-lines/bounds.d.ts +8 -0
- package/dist/points-lines/bounds.d.ts.map +1 -0
- package/dist/points-lines/expansion-cache.d.ts +28 -0
- package/dist/points-lines/expansion-cache.d.ts.map +1 -0
- package/dist/points-lines/inspection.d.ts +53 -0
- package/dist/points-lines/inspection.d.ts.map +1 -0
- package/dist/points-lines/prepare.d.ts +67 -0
- package/dist/points-lines/prepare.d.ts.map +1 -0
- package/dist/points-lines/record.d.ts +60 -0
- package/dist/points-lines/record.d.ts.map +1 -0
- package/dist/points-lines/snapshot.d.ts +49 -0
- package/dist/points-lines/snapshot.d.ts.map +1 -0
- package/dist/post-process-errors.d.ts +182 -0
- package/dist/post-process-errors.d.ts.map +1 -0
- package/dist/prepare/prepared-graphics-resolver.d.ts +59 -0
- package/dist/prepare/prepared-graphics-resolver.d.ts.map +1 -0
- package/dist/record/__tests__/material-bg-cache.unit.test.d.ts +2 -0
- package/dist/record/__tests__/material-bg-cache.unit.test.d.ts.map +1 -0
- package/dist/record/__tests__/material-slot-plan.unit.test.d.ts +2 -0
- package/dist/record/__tests__/material-slot-plan.unit.test.d.ts.map +1 -0
- package/dist/record/__tests__/typed-frame-graph-plan.unit.test.d.ts +2 -0
- package/dist/record/__tests__/typed-frame-graph-plan.unit.test.d.ts.map +1 -0
- package/dist/record/__tests__/video-texture-view.unit.test.d.ts +2 -0
- package/dist/record/__tests__/video-texture-view.unit.test.d.ts.map +1 -0
- package/dist/record/frame-lighting.d.ts +121 -0
- package/dist/record/frame-lighting.d.ts.map +1 -0
- package/dist/record/frame-snapshot.d.ts +429 -0
- package/dist/record/frame-snapshot.d.ts.map +1 -0
- package/dist/record/frame-targets.d.ts +20 -0
- package/dist/record/frame-targets.d.ts.map +1 -0
- package/dist/record/frame.d.ts +71 -0
- package/dist/record/frame.d.ts.map +1 -0
- package/dist/record/helpers.d.ts +102 -0
- package/dist/record/helpers.d.ts.map +1 -0
- package/dist/record/main-pass-geometry.d.ts +28 -0
- package/dist/record/main-pass-geometry.d.ts.map +1 -0
- package/dist/record/main-pass-material.d.ts +204 -0
- package/dist/record/main-pass-material.d.ts.map +1 -0
- package/dist/record/main-pass-sprite-draws.d.ts +43 -0
- package/dist/record/main-pass-sprite-draws.d.ts.map +1 -0
- package/dist/record/main-pass.d.ts +20 -0
- package/dist/record/main-pass.d.ts.map +1 -0
- package/dist/record/mesh-ssbo.d.ts +446 -0
- package/dist/record/mesh-ssbo.d.ts.map +1 -0
- package/dist/record/render-context.d.ts +252 -0
- package/dist/record/render-context.d.ts.map +1 -0
- package/dist/record/shadow-pass.d.ts +52 -0
- package/dist/record/shadow-pass.d.ts.map +1 -0
- package/dist/record/skybox-post-pass.d.ts +33 -0
- package/dist/record/skybox-post-pass.d.ts.map +1 -0
- package/dist/record/typed-frame-graph.d.ts +35 -0
- package/dist/record/typed-frame-graph.d.ts.map +1 -0
- package/dist/record/view-ubo.d.ts +45 -0
- package/dist/record/view-ubo.d.ts.map +1 -0
- package/dist/render-contract.d.ts +424 -0
- package/dist/render-contract.d.ts.map +1 -0
- package/dist/render-data.d.ts +143 -0
- package/dist/render-data.d.ts.map +1 -0
- package/dist/render-graph-primitives.d.ts +76 -0
- package/dist/render-graph-primitives.d.ts.map +1 -0
- package/dist/render-pipeline.d.ts +110 -0
- package/dist/render-pipeline.d.ts.map +1 -0
- package/dist/render-system-extract.d.ts +868 -0
- package/dist/render-system-extract.d.ts.map +1 -0
- package/dist/render-system.d.ts +125 -0
- package/dist/render-system.d.ts.map +1 -0
- package/dist/scene/render-scene-types.d.ts +61 -0
- package/dist/scene/render-scene-types.d.ts.map +1 -0
- package/dist/scene/render-scene.d.ts +112 -0
- package/dist/scene/render-scene.d.ts.map +1 -0
- package/dist/scene-instances/post-spawn-resolve-joints.d.ts +30 -0
- package/dist/scene-instances/post-spawn-resolve-joints.d.ts.map +1 -0
- package/dist/shadow-atlas.d.ts +117 -0
- package/dist/shadow-atlas.d.ts.map +1 -0
- package/dist/ssao-buffers.d.ts +50 -0
- package/dist/ssao-buffers.d.ts.map +1 -0
- package/dist/ssao-config.d.ts +28 -0
- package/dist/ssao-config.d.ts.map +1 -0
- package/dist/systems/active-camera.d.ts +53 -0
- package/dist/systems/active-camera.d.ts.map +1 -0
- package/dist/systems/pass-selector.d.ts +24 -0
- package/dist/systems/pass-selector.d.ts.map +1 -0
- package/dist/systems/skin-palette-allocator.d.ts +49 -0
- package/dist/systems/skin-palette-allocator.d.ts.map +1 -0
- package/dist/systems/skin-palette-types.d.ts +14 -0
- package/dist/systems/skin-palette-types.d.ts.map +1 -0
- package/dist/systems/transparent-sort-config.d.ts +112 -0
- package/dist/systems/transparent-sort-config.d.ts.map +1 -0
- package/dist/tilemap-chunk-extract-system.d.ts +143 -0
- package/dist/tilemap-chunk-extract-system.d.ts.map +1 -0
- package/dist/typed-render-graph-primitives.d.ts +57 -0
- package/dist/typed-render-graph-primitives.d.ts.map +1 -0
- package/dist/typed-shadow-passes.d.ts +11 -0
- package/dist/typed-shadow-passes.d.ts.map +1 -0
- package/package.json +94 -0
- package/src/__tests__/authoring-path.unit.test.ts +23 -0
- package/src/__tests__/backend-selection-rhi-capture.test-d.ts +21 -0
- package/src/__tests__/callback-inference.test-d.ts +8 -0
- package/src/__tests__/cluster-binner.test.ts +272 -0
- package/src/__tests__/cluster-grid-default-surface.unit.test.ts +20 -0
- package/src/__tests__/construct-renderer-identity.unit.test.ts +23 -0
- package/src/__tests__/device-scope-lifecycle.unit.test.ts +151 -0
- package/src/__tests__/device-scope-stale-matrix.unit.test.ts +42 -0
- package/src/__tests__/direct-extract-consumer-contract.test-d.ts +23 -0
- package/src/__tests__/direct-light-snapshot.unit.test.ts +61 -0
- package/src/__tests__/factory-contract.integration.test.ts +280 -0
- package/src/__tests__/fallback-row-stride-surface.unit.test.ts +15 -0
- package/src/__tests__/frame-observation.contract.test.ts +112 -0
- package/src/__tests__/fullscreen-feature-plan.unit.test.ts +32 -0
- package/src/__tests__/glyph-text-layout-recovery.unit.test.ts +167 -0
- package/src/__tests__/gpu-driven-indirect-raster-evidence.ts +350 -0
- package/src/__tests__/gpu-driven-indirect-raster.browser.test.ts +12 -0
- package/src/__tests__/gpu-driven-indirect-raster.dawn.test.ts +16 -0
- package/src/__tests__/gpu-driven-production.integration.test.ts +436 -0
- package/src/__tests__/gpu-driven-scaling.unit.test.ts +87 -0
- package/src/__tests__/gpu-driven-view-gpu-evidence.ts +271 -0
- package/src/__tests__/gpu-driven-view-graph.integration.test.ts +290 -0
- package/src/__tests__/gpu-driven-view-reference.ts +111 -0
- package/src/__tests__/gpu-driven-view.browser.test.ts +30 -0
- package/src/__tests__/gpu-driven-view.dawn.test.ts +28 -0
- package/src/__tests__/gpu-driven-view.unit.test.ts +199 -0
- package/src/__tests__/gpu-resource-store-stride.unit.test.ts +59 -0
- package/src/__tests__/gpu-scene-render-graph-gpu.ts +308 -0
- package/src/__tests__/gpu-scene-render-graph.browser.test.ts +19 -0
- package/src/__tests__/gpu-scene-render-graph.dawn.test.ts +19 -0
- package/src/__tests__/gpu-scene-schema.unit.test.ts +16 -0
- package/src/__tests__/gpu-scene.dawn.test.ts +205 -0
- package/src/__tests__/gpu-scene.unit.test.ts +147 -0
- package/src/__tests__/ibl/face-uniforms.unit.test.ts +46 -0
- package/src/__tests__/infinite-grid-no-vertex-probe.unit.test.ts +92 -0
- package/src/__tests__/injection-kind-owner.test-d.ts +14 -0
- package/src/__tests__/ktx2-basis-gpu-consumer.dawn.test.ts +728 -0
- package/src/__tests__/light-buffer-layout.unit.test.ts +40 -0
- package/src/__tests__/material-contract-inventory.unit.test.ts +24 -0
- package/src/__tests__/material-cooked-projection.unit.test.ts +150 -0
- package/src/__tests__/material-snapshot-mutation.integration.test.ts +53 -0
- package/src/__tests__/material-static-dynamic-route.unit.test.ts +94 -0
- package/src/__tests__/material-stride-surface.unit.test.ts +32 -0
- package/src/__tests__/mesh-buffer-usage-surface.unit.test.ts +106 -0
- package/src/__tests__/mesh-material-bindings.unit.test.ts +89 -0
- package/src/__tests__/mesh-stride-surface.unit.test.ts +16 -0
- package/src/__tests__/morph-culling-reentry.dawn.test.ts +157 -0
- package/src/__tests__/morph-feature-gpu-work.integration.test.ts +80 -0
- package/src/__tests__/morph-feature-plan.unit.test.ts +53 -0
- package/src/__tests__/morph-visual-evidence.integration.test.ts +80 -0
- package/src/__tests__/nineslice-handle-surface.unit.test.ts +19 -0
- package/src/__tests__/post-process-error-policy-owner.unit.test.ts +201 -0
- package/src/__tests__/prepared-buffer-kind-owner.test-d.ts +29 -0
- package/src/__tests__/prepared-graphics-capability.unit.test.ts +65 -0
- package/src/__tests__/prepared-graphics-generation.unit.test.ts +161 -0
- package/src/__tests__/prepared-graphics-lifecycle.unit.test.ts +138 -0
- package/src/__tests__/prepared-graphics-pipeline-warmup.unit.test.ts +29 -0
- package/src/__tests__/prepared-graphics-resolver.unit.test.ts +285 -0
- package/src/__tests__/prepared-graphics-snapshot.unit.test.ts +105 -0
- package/src/__tests__/prepared-graphics-store.unit.test.ts +154 -0
- package/src/__tests__/prepared-graphics-validation.unit.test.ts +176 -0
- package/src/__tests__/profiler-default-off.test.ts +22 -0
- package/src/__tests__/profiler-phase-catalog.test.ts +66 -0
- package/src/__tests__/profiler-phase-integration.test.ts +62 -0
- package/src/__tests__/profiler-phase-token.test.ts +79 -0
- package/src/__tests__/public-surface.test-d.ts +94 -0
- package/src/__tests__/recover-error-policy-owner.unit.test.ts +107 -0
- package/src/__tests__/render-error-code-owner.test-d.ts +116 -0
- package/src/__tests__/render-error-detail-ssot.test-d.ts +139 -0
- package/src/__tests__/render-error-exhaustive.test-d.ts +110 -0
- package/src/__tests__/render-feature-assembly.test-d.ts +43 -0
- package/src/__tests__/render-feature-context.test-d.ts +57 -0
- package/src/__tests__/render-feature-contract.test-d.ts +49 -0
- package/src/__tests__/render-feature-diagnostics.unit.test.ts +149 -0
- package/src/__tests__/render-feature-docs.unit.test.ts +89 -0
- package/src/__tests__/render-feature-errors.unit.test.ts +47 -0
- package/src/__tests__/render-feature-gpu-work.integration.test.ts +316 -0
- package/src/__tests__/render-feature-plan.test-d.ts +161 -0
- package/src/__tests__/render-feature-plan.unit.test.ts +170 -0
- package/src/__tests__/render-feature-prepared-diagnostics.unit.test.ts +90 -0
- package/src/__tests__/render-feature-prepared-errors.test-d.ts +79 -0
- package/src/__tests__/render-feature-prepared-graphics-docs.unit.test.ts +80 -0
- package/src/__tests__/render-feature-prepared-graphics-isolation.unit.test.ts +72 -0
- package/src/__tests__/render-feature-prepared-graphics-negative.test-d.ts +36 -0
- package/src/__tests__/render-feature-prepared-graphics.test-d.ts +74 -0
- package/src/__tests__/render-feature-prepared-graphics.unit.test.ts +121 -0
- package/src/__tests__/render-feature-public-surface.test-d.ts +57 -0
- package/src/__tests__/render-feature-retry.unit.test.ts +87 -0
- package/src/__tests__/render-feature-scheduling.unit.test.ts +110 -0
- package/src/__tests__/render-feature-stage-failed-policy-owner.unit.test.ts +137 -0
- package/src/__tests__/render-feature-stage-fault-recovery.unit.test.ts +146 -0
- package/src/__tests__/render-feature-visibility-context.test-d.ts +33 -0
- package/src/__tests__/render-feature-visibility-context.unit.test.ts +37 -0
- package/src/__tests__/render-feature-zero-work.unit.test.ts +76 -0
- package/src/__tests__/render-graph-compute-raster-gpu.ts +342 -0
- package/src/__tests__/render-graph-compute-raster.browser.test.ts +16 -0
- package/src/__tests__/render-graph-compute-raster.dawn.test.ts +22 -0
- package/src/__tests__/render-graph-hzb-gpu.ts +239 -0
- package/src/__tests__/render-graph-hzb.browser.test.ts +16 -0
- package/src/__tests__/render-graph-hzb.dawn.test.ts +23 -0
- package/src/__tests__/render-graph-primitives.unit.test.ts +22 -0
- package/src/__tests__/render-graph-storage-indirect-gpu.ts +162 -0
- package/src/__tests__/render-graph-storage-indirect.browser.test.ts +21 -0
- package/src/__tests__/render-graph-storage-indirect.dawn.test.ts +28 -0
- package/src/__tests__/render-scene-projection.unit.test.ts +168 -0
- package/src/__tests__/renderer-factory-material-contract.unit.test.ts +121 -0
- package/src/__tests__/renderer-lifecycle.integration.test.ts +58 -0
- package/src/__tests__/rhi-backend-package-boundary.unit.test.ts +11 -0
- package/src/__tests__/scriptable-pack-consumer.test-d.ts +14 -0
- package/src/__tests__/shader-stage-surface.unit.test.ts +43 -0
- package/src/__tests__/ssao-config.unit.test.ts +36 -0
- package/src/__tests__/ssao-kernel-surface.unit.test.ts +14 -0
- package/src/__tests__/standard-clustered-pipeline.unit.test.ts +28 -0
- package/src/__tests__/standard-descriptors.test-d.ts +22 -0
- package/src/__tests__/standard-pipeline.dawn.test.ts +61 -0
- package/src/__tests__/standard-pipeline.integration.test.ts +124 -0
- package/src/__tests__/standard-profile-oracle.unit.test.ts +62 -0
- package/src/__tests__/surface-configuration.unit.test.ts +91 -0
- package/src/__tests__/texture-usage-surface.unit.test.ts +58 -0
- package/src/__tests__/typed-pipeline-topology.unit.test.ts +223 -0
- package/src/__tests__/urp-pipeline-targets.unit.test.ts +42 -0
- package/src/__tests__/urp-pipeline.unit.test.ts +14 -0
- package/src/__tests__/vertex-color-pipeline.unit.test.ts +132 -0
- package/src/__tests__/vertex-layout-consumer.unit.test.ts +25 -0
- package/src/__tests__/visibility-diagnostics.integration.test.ts +62 -0
- package/src/__tests__/visibility-extract.integration.test.ts +98 -0
- package/src/__tests__/visibility-extract.perf.test.ts +130 -0
- package/src/__tests__/visibility-feature-dedup.integration.test.ts +55 -0
- package/src/__tests__/visibility-hidden-report.unit.test.ts +36 -0
- package/src/__tests__/visibility-instances.integration.test.ts +46 -0
- package/src/__tests__/visibility-multi-world.integration.test.ts +86 -0
- package/src/__tests__/visibility-producer-matrix.integration.test.ts +168 -0
- package/src/__tests__/visibility-producer-matrix.unit.test.ts +96 -0
- package/src/__tests__/visibility-public-surface.test-d.ts +27 -0
- package/src/__tests__/visibility-resolver.unit.test.ts +85 -0
- package/src/__tests__/visibility-resource-short-circuit.unit.test.ts +80 -0
- package/src/__tests__/visibility-snapshot-contract.unit.test.ts +60 -0
- package/src/__tests__/vocabulary.unit.test.ts +21 -0
- package/src/assembly/backend-contract.ts +57 -0
- package/src/assembly/factory.ts +8130 -0
- package/src/assembly/host-contract.ts +101 -0
- package/src/assembly/material/assembly.ts +48 -0
- package/src/assembly/material/pipeline-projection.ts +63 -0
- package/src/assets/asset-decoders.ts +158 -0
- package/src/assets/render-asset-port.ts +44 -0
- package/src/assets/resolve-render-asset.ts +13 -0
- package/src/authoring.ts +17 -0
- package/src/cluster-binner.ts +700 -0
- package/src/components/__tests__/points-lines-admission.unit.test.ts +219 -0
- package/src/components/__tests__/points-lines-schema.unit.test.ts +56 -0
- package/src/components/__tests__/schema-contract.unit.test.ts +10 -0
- package/src/components/__tests__/schema-parity.unit.test.ts +25 -0
- package/src/components/__tests__/visibility-schema.unit.test.ts +35 -0
- package/src/components/camera.ts +512 -0
- package/src/components/directional-light.ts +120 -0
- package/src/components/glyph-text.ts +64 -0
- package/src/components/index.ts +54 -0
- package/src/components/instances.ts +206 -0
- package/src/components/layer.ts +69 -0
- package/src/components/light-helpers.ts +188 -0
- package/src/components/lines.ts +18 -0
- package/src/components/mesh-filter.ts +60 -0
- package/src/components/mesh-renderer.ts +61 -0
- package/src/components/point-light-shadow.ts +43 -0
- package/src/components/point-light.ts +65 -0
- package/src/components/points.ts +40 -0
- package/src/components/post-process-params.ts +35 -0
- package/src/components/scene-instance.ts +193 -0
- package/src/components/skybox-background.ts +103 -0
- package/src/components/skylight.ts +97 -0
- package/src/components/sort-key.ts +75 -0
- package/src/components/spot-light.ts +124 -0
- package/src/components/sprite-animation.ts +168 -0
- package/src/components/sprite-instances.ts +179 -0
- package/src/components/sprite-playback-mode.ts +79 -0
- package/src/components/sprite-region-override.ts +105 -0
- package/src/components/tile-layer.ts +167 -0
- package/src/components/tilemap.ts +48 -0
- package/src/components/visibility.ts +53 -0
- package/src/construct-renderer.ts +67 -0
- package/src/debug-draw-glue.ts +48 -0
- package/src/device/device-scope.ts +306 -0
- package/src/device/gpu-residency.ts +1822 -0
- package/src/device/resource-types.ts +20 -0
- package/src/engine-metrics.ts +82 -0
- package/src/errors/ecs-validation.ts +16 -0
- package/src/errors/index.ts +3 -0
- package/src/errors/recover.ts +161 -0
- package/src/errors/render.ts +1284 -0
- package/src/extract/visibility.ts +120 -0
- package/src/features/fullscreen.ts +46 -0
- package/src/features/host.ts +1363 -0
- package/src/features/morph/morph-feature.ts +377 -0
- package/src/features/plan.ts +447 -0
- package/src/features/prepared-gpu-work.ts +959 -0
- package/src/features/prepared-graphics-store.ts +449 -0
- package/src/features/prepared-graphics.ts +420 -0
- package/src/features/render-graph-compute.ts +69 -0
- package/src/features/render-graph-contribution.ts +75 -0
- package/src/features/render-graph-raster.ts +332 -0
- package/src/features/render-graph-resources.ts +38 -0
- package/src/features/targets.ts +70 -0
- package/src/features/types.ts +103 -0
- package/src/features/vocabulary.ts +24 -0
- package/src/fullscreen-post-process-pass.ts +363 -0
- package/src/glyph-text-layout-system.ts +421 -0
- package/src/gpu-driven/batch-topology.ts +245 -0
- package/src/gpu-driven/production-raster.ts +695 -0
- package/src/gpu-driven/view-gpu.ts +703 -0
- package/src/gpu-resource.ts +159 -0
- package/src/gpu-scene-schema.ts +136 -0
- package/src/gpu-scene.ts +722 -0
- package/src/gpu-stage.ts +9 -0
- package/src/gpu-texture-usage.ts +12 -0
- package/src/gpu-usage.ts +14 -0
- package/src/hdrp-buffers.ts +480 -0
- package/src/ibl/IblPipelineCache.ts +1006 -0
- package/src/ibl/skylight-bind-group.ts +513 -0
- package/src/index.ts +129 -0
- package/src/inspection-types.ts +80 -0
- package/src/instance-buffer-cache.ts +95 -0
- package/src/internal.ts +9 -0
- package/src/lifecycle.ts +168 -0
- package/src/light-buffer-layout.ts +346 -0
- package/src/materials.ts +214 -0
- package/src/mesh-material-bindings.ts +103 -0
- package/src/pbr-pipeline.ts +1137 -0
- package/src/pipeline/standard-forward-lane.ts +229 -0
- package/src/pipeline/standard-pipeline.ts +555 -0
- package/src/pipeline/standard-profile.ts +65 -0
- package/src/pipeline-builder.ts +382 -0
- package/src/pipeline-spec-types.ts +28 -0
- package/src/pipeline-spec.ts +1231 -0
- package/src/plugin.ts +69 -0
- package/src/points-lines/__tests__/bounds.unit.test.ts +21 -0
- package/src/points-lines/__tests__/cache-recovery.unit.test.ts +157 -0
- package/src/points-lines/__tests__/inspection-lanes.integration.test.ts +146 -0
- package/src/points-lines/__tests__/inspection.unit.test.ts +173 -0
- package/src/points-lines/__tests__/lane-structural.integration.test.ts +122 -0
- package/src/points-lines/__tests__/points-lines.bench.ts +400 -0
- package/src/points-lines/__tests__/raster-lane.integration.test.ts +44 -0
- package/src/points-lines/__tests__/snapshot.unit.test.ts +101 -0
- package/src/points-lines/__tests__/view-ubo.unit.test.ts +73 -0
- package/src/points-lines/admission.ts +238 -0
- package/src/points-lines/bounds.ts +23 -0
- package/src/points-lines/expansion-cache.ts +215 -0
- package/src/points-lines/inspection.ts +97 -0
- package/src/points-lines/prepare.ts +177 -0
- package/src/points-lines/record.ts +125 -0
- package/src/points-lines/snapshot.ts +130 -0
- package/src/post-process-errors.ts +302 -0
- package/src/prepare/prepared-graphics-resolver.ts +456 -0
- package/src/record/__tests__/material-bg-cache.unit.test.ts +41 -0
- package/src/record/__tests__/material-slot-plan.unit.test.ts +44 -0
- package/src/record/__tests__/typed-frame-graph-plan.unit.test.ts +41 -0
- package/src/record/__tests__/video-texture-view.unit.test.ts +90 -0
- package/src/record/frame-lighting.ts +1074 -0
- package/src/record/frame-snapshot.ts +500 -0
- package/src/record/frame-targets.ts +137 -0
- package/src/record/frame.ts +1598 -0
- package/src/record/helpers.ts +284 -0
- package/src/record/main-pass-geometry.ts +1065 -0
- package/src/record/main-pass-material.ts +1043 -0
- package/src/record/main-pass-sprite-draws.ts +1137 -0
- package/src/record/main-pass.ts +610 -0
- package/src/record/mesh-ssbo.ts +885 -0
- package/src/record/render-context.ts +384 -0
- package/src/record/shadow-pass.ts +698 -0
- package/src/record/skybox-post-pass.ts +593 -0
- package/src/record/typed-frame-graph.ts +461 -0
- package/src/record/view-ubo.ts +222 -0
- package/src/render-contract.ts +582 -0
- package/src/render-data.ts +385 -0
- package/src/render-graph-primitives.ts +811 -0
- package/src/render-pipeline.ts +259 -0
- package/src/render-system-extract.ts +4585 -0
- package/src/render-system.ts +1933 -0
- package/src/scene/render-scene-types.ts +67 -0
- package/src/scene/render-scene.ts +1087 -0
- package/src/scene-instances/post-spawn-resolve-joints.ts +165 -0
- package/src/shadow-atlas.ts +244 -0
- package/src/ssao-buffers.ts +334 -0
- package/src/ssao-config.ts +61 -0
- package/src/systems/active-camera.ts +116 -0
- package/src/systems/pass-selector.ts +49 -0
- package/src/systems/skin-palette-allocator.ts +251 -0
- package/src/systems/skin-palette-types.ts +14 -0
- package/src/systems/transparent-sort-config.ts +233 -0
- package/src/tilemap-chunk-extract-system.ts +1290 -0
- package/src/typed-render-graph-primitives.ts +541 -0
- package/src/typed-shadow-passes.ts +165 -0
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { type Mat4, type Vec3 } from '@forgeax/engine-math';
|
|
2
|
+
import { type Result } from '@forgeax/engine-rhi';
|
|
3
|
+
export type ClusterBinErrorCode = 'index-overflow';
|
|
4
|
+
export interface ClusterBinError {
|
|
5
|
+
readonly code: ClusterBinErrorCode;
|
|
6
|
+
readonly expected: string;
|
|
7
|
+
readonly hint: string;
|
|
8
|
+
readonly detail: IndexOverflowDetail;
|
|
9
|
+
}
|
|
10
|
+
export interface IndexOverflowDetail {
|
|
11
|
+
readonly actual: number;
|
|
12
|
+
readonly capacity: number;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* View-space NDC axis-aligned bounding box.
|
|
16
|
+
* `min` and `max` are NDC coordinates clamped to [-1, 1] for XY;
|
|
17
|
+
* Z may extend to projection-space depth values.
|
|
18
|
+
*/
|
|
19
|
+
export interface ClusterAabb {
|
|
20
|
+
readonly min: Vec3;
|
|
21
|
+
readonly max: Vec3;
|
|
22
|
+
}
|
|
23
|
+
/** Unsigned integer 3D cluster cell coordinate. */
|
|
24
|
+
export interface Uvec3 {
|
|
25
|
+
readonly x: number;
|
|
26
|
+
readonly y: number;
|
|
27
|
+
readonly z: number;
|
|
28
|
+
}
|
|
29
|
+
/** Cluster cell range in the unsigned grid. */
|
|
30
|
+
export interface ClusterBounds {
|
|
31
|
+
readonly min: Uvec3;
|
|
32
|
+
readonly max: Uvec3;
|
|
33
|
+
}
|
|
34
|
+
type MutableClusterBounds = {
|
|
35
|
+
min: {
|
|
36
|
+
x: number;
|
|
37
|
+
y: number;
|
|
38
|
+
z: number;
|
|
39
|
+
};
|
|
40
|
+
max: {
|
|
41
|
+
x: number;
|
|
42
|
+
y: number;
|
|
43
|
+
z: number;
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Reusable typed scratch for cluster-major output. The binner must emit one
|
|
48
|
+
* contiguous light-index run per cluster, so counts and cursors replace the
|
|
49
|
+
* per-frame `number[][]` staging lists without changing output order.
|
|
50
|
+
*/
|
|
51
|
+
export interface ClusterBinScratch {
|
|
52
|
+
clusterCounts: Uint32Array;
|
|
53
|
+
clusterCursors: Uint32Array;
|
|
54
|
+
lightBounds: Int32Array;
|
|
55
|
+
clusterDeltas: Int32Array;
|
|
56
|
+
aabbOutput: ClusterAabb;
|
|
57
|
+
boundsOutput: MutableClusterBounds;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Selects the membership materialization owner after bounds and occupancy are
|
|
61
|
+
* derived. The default keeps the existing CPU list writer; the WebGPU
|
|
62
|
+
* producer uses the same CPU-owned scratch and leaves the ordered list to a
|
|
63
|
+
* later compute pass.
|
|
64
|
+
*/
|
|
65
|
+
export interface ClusterBinOptions {
|
|
66
|
+
readonly writeMembership?: boolean;
|
|
67
|
+
}
|
|
68
|
+
export type ClusterBinProfilePhase = 'light-bounds-and-occupancy' | 'light-bounds-and-occupancy/light-aabb' | 'light-bounds-and-occupancy/cluster-occupancy' | 'cluster-reserve' | 'light-index-write' | 'light-index-write/bounds-read' | 'light-index-write/cluster-write';
|
|
69
|
+
export type ClusterBinProfileRunner = <T>(phase: ClusterBinProfilePhase, action: () => T) => T;
|
|
70
|
+
export declare function createClusterBinScratch(): ClusterBinScratch;
|
|
71
|
+
/**
|
|
72
|
+
* Compute a culling radius for a punctual light.
|
|
73
|
+
*
|
|
74
|
+
* If `range` is finite, returns it verbatim (D-8 sphere proxy).
|
|
75
|
+
* If `range === +Infinity`, derives a finite radius from the distance at which
|
|
76
|
+
* the light's perceptible contribution drops below `threshold`.
|
|
77
|
+
*
|
|
78
|
+
* Formula: `sqrt(intensity / threshold)` gives the distance at which attenuation
|
|
79
|
+
* = threshold (assuming E=1/r^2 falloff for point lights).
|
|
80
|
+
* Cap to a conservative 1000 units to prevent overly large bounds.
|
|
81
|
+
*/
|
|
82
|
+
export declare function deriveCullingRadius(range: number, intensity: number, threshold?: number): number;
|
|
83
|
+
/**
|
|
84
|
+
* Map view-space z (negative, camera-forward) to a cluster Z slice index.
|
|
85
|
+
*
|
|
86
|
+
* Implements the idTech6 inverse log-z formula (research §2):
|
|
87
|
+
* slice = floor(log(-view_z / near) / log(far / near) * gridZ)
|
|
88
|
+
*
|
|
89
|
+
* Clamped to [0, gridZ - 1].
|
|
90
|
+
*/
|
|
91
|
+
export declare function viewZToZSlice(viewZ: number, gridZ: number, near: number, far: number): number;
|
|
92
|
+
/**
|
|
93
|
+
* Compute view-space NDC AABB for a sphere (light culling proxy).
|
|
94
|
+
*
|
|
95
|
+
* Ported from Bevy `cluster_space_object_aabb` (cluster.wgsl lines 75-140).
|
|
96
|
+
*
|
|
97
|
+
* Steps:
|
|
98
|
+
* 1. Transform sphere center to view space via view matrix.
|
|
99
|
+
* 2. Expand by radius to get view-AABB corners.
|
|
100
|
+
* 3. Project 4 key corners to NDC.
|
|
101
|
+
* 4. Clamp to [-1, 1] for XY ; Z is kept as projected depth.
|
|
102
|
+
*/
|
|
103
|
+
export declare function clusterSpaceObjectAabb(center: Vec3, radius: number, view: Mat4, proj: Mat4, output?: ClusterAabb): ClusterAabb;
|
|
104
|
+
/**
|
|
105
|
+
* Map an NDC point to its cluster cell index (XY + Z).
|
|
106
|
+
*
|
|
107
|
+
* XY: floor((ndc.xy * 0.5 + 0.5) * gridXy) clamped to [0, gridXy - 1].
|
|
108
|
+
* Z: delegated to view_z_to_z_slice with the given view-space z.
|
|
109
|
+
*/
|
|
110
|
+
export declare function ndcPositionToCluster(ndc: Vec3, viewZ: number, gridX: number, gridY: number, gridZ: number, near: number, far: number): Uvec3;
|
|
111
|
+
/**
|
|
112
|
+
* Convert an NDC AABB to a range of cluster cell indices.
|
|
113
|
+
*
|
|
114
|
+
* Computes cluster indices for AABB min and max, then clamps and
|
|
115
|
+
* orders the result so `min <= max` in each axis.
|
|
116
|
+
*
|
|
117
|
+
* If the sphere is entirely behind the camera, returns min > max
|
|
118
|
+
* in at least one axis (cull signal).
|
|
119
|
+
*/
|
|
120
|
+
export declare function calculateSphereClusterBounds(aabb: ClusterAabb, gridX: number, gridY: number, gridZ: number, near: number, far: number, output?: MutableClusterBounds): ClusterBounds;
|
|
121
|
+
/**
|
|
122
|
+
* Main entry point: assign punctual lights to cluster cells.
|
|
123
|
+
*
|
|
124
|
+
* Light-major loop: for each light, compute its sphere-AABB and iterate the
|
|
125
|
+
* intersecting cluster cells, appending the light index to the light_index_list
|
|
126
|
+
* and updating cluster_grid offsets.
|
|
127
|
+
*
|
|
128
|
+
* @param lights — array of { position: Vec3, range: number }
|
|
129
|
+
* @param view — view matrix (column-major 16 floats)
|
|
130
|
+
* @param proj — projection matrix (column-major 16 floats)
|
|
131
|
+
* @param grid — cluster grid dimensions { x, y, z }
|
|
132
|
+
* @param near — near plane distance
|
|
133
|
+
* @param far — far plane distance
|
|
134
|
+
* @param clusterGrid — caller-owned Uint32Array, length = grid.x * grid.y * grid.z * 2.
|
|
135
|
+
* Format: [offset, count] pairs. offset = start index in lightIndexList; count = number of lights.
|
|
136
|
+
* @param lightIndexList — caller-owned Uint32Array for light index storage.
|
|
137
|
+
* @param capacity — max entries in lightIndexList (hard cap, typically 65536).
|
|
138
|
+
* @param scratch — optional per-render-system typed scratch reused across frames.
|
|
139
|
+
*
|
|
140
|
+
* @returns `ok(written light-index entry count)` on success; `err(ClusterBinError)` with code
|
|
141
|
+
* 'index-overflow' on overflow. The count lets the upload owner avoid copying unused capacity.
|
|
142
|
+
*/
|
|
143
|
+
export declare function bin(lights: ReadonlyArray<{
|
|
144
|
+
readonly position: Vec3;
|
|
145
|
+
readonly range: number;
|
|
146
|
+
}>, view: Mat4, proj: Mat4, grid: {
|
|
147
|
+
readonly x: number;
|
|
148
|
+
readonly y: number;
|
|
149
|
+
readonly z: number;
|
|
150
|
+
}, near: number, far: number, clusterGrid: Uint32Array, lightIndexList: Uint32Array, capacity: number, scratch?: ClusterBinScratch, profile?: ClusterBinProfileRunner, options?: ClusterBinOptions): Result<number, ClusterBinError>;
|
|
151
|
+
export {};
|
|
152
|
+
//# sourceMappingURL=cluster-binner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cluster-binner.d.ts","sourceRoot":"","sources":["../src/cluster-binner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"points-lines-admission.unit.test.d.ts","sourceRoot":"","sources":["../../../src/components/__tests__/points-lines-admission.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"points-lines-schema.unit.test.d.ts","sourceRoot":"","sources":["../../../src/components/__tests__/points-lines-schema.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-contract.unit.test.d.ts","sourceRoot":"","sources":["../../../src/components/__tests__/schema-contract.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-parity.unit.test.d.ts","sourceRoot":"","sources":["../../../src/components/__tests__/schema-parity.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visibility-schema.unit.test.d.ts","sourceRoot":"","sources":["../../../src/components/__tests__/visibility-schema.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
import { type SchemaOf, type ShapeOf } from '@forgeax/engine-ecs';
|
|
2
|
+
/**
|
|
3
|
+
* Projection discriminator literal union (AC-16 narrowing surface).
|
|
4
|
+
* Exposed for consumer code that maps `camera.projection` numeric values back
|
|
5
|
+
* to a switch-able string literal (e.g. RenderSystem dispatch / inspector
|
|
6
|
+
* snapshot rendering).
|
|
7
|
+
*/
|
|
8
|
+
export type CameraProjection = 'perspective' | 'orthographic';
|
|
9
|
+
/** Numeric encoding of perspective projection (schema value for `projection`). */
|
|
10
|
+
export declare const CAMERA_PROJECTION_PERSPECTIVE = 0;
|
|
11
|
+
/** Numeric encoding of orthographic projection (schema value for `projection`). */
|
|
12
|
+
export declare const CAMERA_PROJECTION_ORTHOGRAPHIC = 1;
|
|
13
|
+
/**
|
|
14
|
+
* Map a `camera.projection` numeric value to the closed `CameraProjection`
|
|
15
|
+
* string-literal union. Values other than 0 / 1 fall back to `'perspective'`
|
|
16
|
+
* (defensive for defaulted / uninitialised entities; charter proposition 4
|
|
17
|
+
* no silent exception).
|
|
18
|
+
*/
|
|
19
|
+
export declare function cameraProjectionFromF32(value: number): CameraProjection;
|
|
20
|
+
/**
|
|
21
|
+
* Tone-mapping mode discriminator literal union (AC-01 narrowing surface;
|
|
22
|
+
* feat-20260519-tonemap-reinhard-mvp / M1).
|
|
23
|
+
*
|
|
24
|
+
* Two members for the MVP:
|
|
25
|
+
* `'none'` - default; render-target stays `bgra8unorm-srgb`
|
|
26
|
+
* and the geometry pass writes directly to the
|
|
27
|
+
* swap-chain (zero-overhead opt-out path).
|
|
28
|
+
* `'reinhard-extended'` - Forgeax Reinhard 2002 extended (luminance-domain)
|
|
29
|
+
* opt-in;
|
|
30
|
+
* `'reinhard'` - Three r184 per-channel Reinhard opt-in;
|
|
31
|
+
* geometry pass routes through an `rgba16float`
|
|
32
|
+
* HDR target and a fullscreen tonemap pass
|
|
33
|
+
* (`packages/shader/src/tonemap.wgsl`).
|
|
34
|
+
*
|
|
35
|
+
* The remaining members mirror the Three r184 public names and formulas.
|
|
36
|
+
*/
|
|
37
|
+
export type Tonemap = 'none' | 'reinhard-extended' | 'reinhard' | 'linear' | 'cineon' | 'aces-filmic' | 'agx' | 'neutral';
|
|
38
|
+
/** Numeric encoding of the no-op tonemap path (schema value for `tonemap`). */
|
|
39
|
+
export declare const TONEMAP_NONE: 0;
|
|
40
|
+
/**
|
|
41
|
+
* Numeric encoding of the Reinhard-extended tonemap path
|
|
42
|
+
* (schema value for `tonemap`).
|
|
43
|
+
*/
|
|
44
|
+
export declare const TONEMAP_REINHARD_EXTENDED: 1;
|
|
45
|
+
/** Numeric encoding of the Three r184 per-channel Reinhard path. */
|
|
46
|
+
export declare const TONEMAP_REINHARD: 7;
|
|
47
|
+
/** Numeric encoding of the linear (identity after exposure) tonemap path. */
|
|
48
|
+
export declare const TONEMAP_LINEAR: 2;
|
|
49
|
+
/** Numeric encoding of the Cineon (Kodak log) tonemap path. */
|
|
50
|
+
export declare const TONEMAP_CINEON: 3;
|
|
51
|
+
/** Numeric encoding of the ACES filmic (Narkowicz 2015) tonemap path. */
|
|
52
|
+
export declare const TONEMAP_ACES_FILMIC: 4;
|
|
53
|
+
/** Numeric encoding of the AgX (Troy Sobotka / Blender 3.x) tonemap path. */
|
|
54
|
+
export declare const TONEMAP_AGX: 5;
|
|
55
|
+
/** Numeric encoding of the Khronos PBR neutral tonemap path. */
|
|
56
|
+
export declare const TONEMAP_NEUTRAL: 6;
|
|
57
|
+
/**
|
|
58
|
+
* Map a `camera.tonemap` numeric value to the closed `Tonemap` string-literal
|
|
59
|
+
* union. Unknown values fall back to `'none'` for defensive schema decoding.
|
|
60
|
+
*/
|
|
61
|
+
export declare function tonemapFromF32(value: number): Tonemap;
|
|
62
|
+
/**
|
|
63
|
+
* Inverse of {@link tonemapFromF32}: map the closed `Tonemap` string-literal
|
|
64
|
+
* union to the u32 mode the tonemap WGSL `params.mode` switch reads. SSOT for
|
|
65
|
+
* the mode encoding shared by the extract-stage built-in tonemap provider
|
|
66
|
+
* (feat-20260621 M-A3 / w13: `Camera.tonemap` -> `forgeax::tonemap` 16B data)
|
|
67
|
+
* and any other consumer. `'none'` maps to 0 (the tonemap pass never dispatches
|
|
68
|
+
* on the LDR path, so 0 is only ever a placeholder).
|
|
69
|
+
*/
|
|
70
|
+
export declare function tonemapToU32(mode: Tonemap): number;
|
|
71
|
+
/**
|
|
72
|
+
* Anti-alias mode discriminator literal union
|
|
73
|
+
* (feat-20260528-fxaa-post-processing / w2;
|
|
74
|
+
* feat-20260604-learn-render-4-10-anti-aliasing-msaa adds `'msaa'`).
|
|
75
|
+
*
|
|
76
|
+
* Four members:
|
|
77
|
+
* `'none'` - default; no anti-aliasing (zero-overhead opt-out path)
|
|
78
|
+
* `'fxaa'` - FXAA 3.11 fullscreen post-processing pass (screen-space, shading-aliasing)
|
|
79
|
+
* `'msaa'` - 4x hardware multi-sample anti-aliasing (geometry-edge coverage).
|
|
80
|
+
* Active on both HDR and LDR-swap-chain paths, so a default Camera
|
|
81
|
+
* (`tonemap='none'`) with `antialias='msaa'` is NOT a silent no-op.
|
|
82
|
+
* `'taa'` - temporal anti-aliasing; renderer temporal projection owns its
|
|
83
|
+
* jitter and successful-submit history contract.
|
|
84
|
+
*
|
|
85
|
+
* MSAA and FXAA are orthogonal: MSAA resolves geometry-edge aliasing, FXAA
|
|
86
|
+
* resolves shading/high-frequency aliasing. TAA is mutually exclusive with both.
|
|
87
|
+
*/
|
|
88
|
+
export type Antialias = 'none' | 'fxaa' | 'msaa' | 'taa';
|
|
89
|
+
/** Numeric encoding of anti-alias disabled (schema value for `antialias`). */
|
|
90
|
+
export declare const ANTIALIAS_NONE = 0;
|
|
91
|
+
/** Numeric encoding of FXAA anti-aliasing (schema value for `antialias`). */
|
|
92
|
+
export declare const ANTIALIAS_FXAA = 1;
|
|
93
|
+
/** Numeric encoding of MSAA multi-sample anti-aliasing (schema value for `antialias`). */
|
|
94
|
+
export declare const ANTIALIAS_MSAA = 2;
|
|
95
|
+
/** Numeric encoding of temporal anti-aliasing (schema value for `antialias`). */
|
|
96
|
+
export declare const ANTIALIAS_TAA = 3;
|
|
97
|
+
/**
|
|
98
|
+
* Map a `camera.antialias` numeric value to the closed `Antialias`
|
|
99
|
+
* string-literal union. Invalid values fail-fast with structured error (charter P3).
|
|
100
|
+
*/
|
|
101
|
+
export declare function antialiasFromF32(value: number): Antialias;
|
|
102
|
+
/**
|
|
103
|
+
* Bloom enabled discriminator literal union
|
|
104
|
+
* (feat-20260531-bloom-first-declarative-render-graph-pass / w2).
|
|
105
|
+
*
|
|
106
|
+
* Two members:
|
|
107
|
+
* `'off'` - default; no bloom post-processing (zero-overhead opt-out path)
|
|
108
|
+
* `'on'` - bloom bright-pass + separable blur + composite pipeline
|
|
109
|
+
*
|
|
110
|
+
* Bloom is a discrete enum (0/1) — illegal values fail-fast with RangeError
|
|
111
|
+
* (charter P3), matching antialiasFromF32 precedent.
|
|
112
|
+
*/
|
|
113
|
+
export type BloomEnabled = 'off' | 'on';
|
|
114
|
+
/** Numeric encoding of bloom disabled (schema value for `bloom`). */
|
|
115
|
+
export declare const BLOOM_DISABLED = 0;
|
|
116
|
+
/** Numeric encoding of bloom enabled (schema value for `bloom`). */
|
|
117
|
+
export declare const BLOOM_ENABLED = 1;
|
|
118
|
+
/**
|
|
119
|
+
* Map a `camera.bloom` numeric value to the closed `BloomEnabled` string-literal
|
|
120
|
+
* union. Invalid values fail-fast with structured error (charter P3).
|
|
121
|
+
*/
|
|
122
|
+
export declare function bloomEnabledFromF32(value: number): BloomEnabled;
|
|
123
|
+
/**
|
|
124
|
+
* Camera projection parameters (perspective + orthographic variants) +
|
|
125
|
+
* tonemap trio (mode + exposure + whitePoint).
|
|
126
|
+
*
|
|
127
|
+
* Camera transform comes from the entity's `Transform` (AI users
|
|
128
|
+
* spawn camera entities with both components: see example below).
|
|
129
|
+
*
|
|
130
|
+
* Defaults (do not auto-apply; spawn explicitly for the perspective quartet):
|
|
131
|
+
* fov = pi/4 - 45-degree vertical field of view
|
|
132
|
+
* aspect = 16/9 - widescreen aspect (use canvas.width / canvas.height)
|
|
133
|
+
* near = 0.1
|
|
134
|
+
* far = 100
|
|
135
|
+
* projection = 0 - CAMERA_PROJECTION_PERSPECTIVE (layer-2)
|
|
136
|
+
* left = -1, right = 1, bottom = -1, top = 1 (orthographic; layer-2)
|
|
137
|
+
* tonemap = 0 - TONEMAP_NONE (layer-2; opt-in path stays
|
|
138
|
+
* 0-overhead by default)
|
|
139
|
+
* exposure = 1.0 - layer-2 default for the Reinhard-extended path
|
|
140
|
+
* @applicableWhen tonemap === 'reinhard-extended'
|
|
141
|
+
* whitePoint = 4.0 - layer-2 default for the Reinhard-extended path
|
|
142
|
+
* @applicableWhen tonemap === 'reinhard-extended'
|
|
143
|
+
* @minimum 0 (shader floor `max(Y, 1e-5)` keeps
|
|
144
|
+
* the divisor finite even at 0; D-O3)
|
|
145
|
+
* clearColor = [0, 0, 0, 0]
|
|
146
|
+
* - feat-20260709 M3 / D-3: clear-color is one
|
|
147
|
+
* inline `array<f32,4>` column (collapsed from the
|
|
148
|
+
* feat-20260608 clearR/G/B/A quartet). Defaults to
|
|
149
|
+
* transparent black; an explicit alpha remains
|
|
150
|
+
* visible through this public field.
|
|
151
|
+
*
|
|
152
|
+
* MVP supports a single active camera (the first archetype iteration hit;
|
|
153
|
+
* N>1 fires 'render-system-multi-camera' + uses first). Multi-viewport is
|
|
154
|
+
* OOS (see feat-future-multi-viewport). The orthographic path reuses the
|
|
155
|
+
* same near / far as the perspective path — both variants share the single
|
|
156
|
+
* Camera archetype (17 scalar f32 columns + one historyVersion u32 column +
|
|
157
|
+
* the `clearColor` array<f32,4> column + the `autoAspect` bool column).
|
|
158
|
+
*
|
|
159
|
+
* @example Perspective camera at (0, 0, 3) looking down -Z (zero-config tonemap):
|
|
160
|
+
* world.spawn(
|
|
161
|
+
* { component: Transform, data: {
|
|
162
|
+
* pos: [0, 0, 3],
|
|
163
|
+
* quat: [0, 0, 0, 1],
|
|
164
|
+
* scale: [1, 1, 1],
|
|
165
|
+
* } },
|
|
166
|
+
* { component: Camera, data: {
|
|
167
|
+
* fov: Math.PI / 4, aspect: 16 / 9, near: 0.1, far: 100,
|
|
168
|
+
* } },
|
|
169
|
+
* );
|
|
170
|
+
* // tonemap defaults to 0 (TONEMAP_NONE) - 0-overhead path.
|
|
171
|
+
*
|
|
172
|
+
* @example Opt-in Reinhard-extended tonemap (high-intensity HDR scene):
|
|
173
|
+
* world.spawn(
|
|
174
|
+
* { component: Transform, data: { ... } },
|
|
175
|
+
* { component: Camera, data: {
|
|
176
|
+
* fov: Math.PI / 4, aspect: 16 / 9, near: 0.1, far: 100,
|
|
177
|
+
* tonemap: TONEMAP_REINHARD_EXTENDED,
|
|
178
|
+
* exposure: 1.0,
|
|
179
|
+
* whitePoint: 4.0,
|
|
180
|
+
* } },
|
|
181
|
+
* );
|
|
182
|
+
*
|
|
183
|
+
* @example Orthographic camera spanning [-10, 10]^2 on the near plane:
|
|
184
|
+
* world.spawn(
|
|
185
|
+
* { component: Transform, data: {
|
|
186
|
+
* pos: [0, 0, 5],
|
|
187
|
+
* quat: [0, 0, 0, 1],
|
|
188
|
+
* scale: [1, 1, 1],
|
|
189
|
+
* } },
|
|
190
|
+
* { component: Camera, data: {
|
|
191
|
+
* fov: 0, aspect: 1, near: 0.1, far: 100,
|
|
192
|
+
* projection: CAMERA_PROJECTION_ORTHOGRAPHIC,
|
|
193
|
+
* left: -10, right: 10, bottom: -10, top: 10,
|
|
194
|
+
* } },
|
|
195
|
+
* );
|
|
196
|
+
*/
|
|
197
|
+
export declare const Camera: import("@forgeax/engine-ecs").Component<"Camera", {
|
|
198
|
+
readonly fov: "f32";
|
|
199
|
+
readonly aspect: "f32";
|
|
200
|
+
readonly near: "f32";
|
|
201
|
+
readonly far: "f32";
|
|
202
|
+
readonly projection: "f32";
|
|
203
|
+
readonly left: "f32";
|
|
204
|
+
readonly right: "f32";
|
|
205
|
+
readonly bottom: "f32";
|
|
206
|
+
readonly top: "f32";
|
|
207
|
+
readonly tonemap: "f32";
|
|
208
|
+
readonly exposure: "f32";
|
|
209
|
+
readonly whitePoint: "f32";
|
|
210
|
+
readonly antialias: "f32";
|
|
211
|
+
readonly historyVersion: "u32";
|
|
212
|
+
readonly bloom: "f32";
|
|
213
|
+
readonly bloomThreshold: "f32";
|
|
214
|
+
readonly bloomIntensity: "f32";
|
|
215
|
+
readonly bloomBlurRadius: "f32";
|
|
216
|
+
readonly clearColor: "array<f32, 4>";
|
|
217
|
+
readonly autoAspect: "bool";
|
|
218
|
+
}>;
|
|
219
|
+
type CameraPod = ShapeOf<SchemaOf<typeof Camera>>;
|
|
220
|
+
interface CameraPerspectiveOpts {
|
|
221
|
+
fov: number;
|
|
222
|
+
aspect: number;
|
|
223
|
+
near?: number;
|
|
224
|
+
far?: number;
|
|
225
|
+
/**
|
|
226
|
+
* feat-20260617-host-engine-contract-and-video-cutscene / M3: when true
|
|
227
|
+
* (the schema default), the aspect-sync sidecar on the createApp(canvas)
|
|
228
|
+
* path overwrites `aspect` with `canvas.width / canvas.height` every frame.
|
|
229
|
+
* Omit it for the default-correct behaviour; set `false` to opt out (the
|
|
230
|
+
* factory then leaves `aspect` under your control -- render-to-texture,
|
|
231
|
+
* split-screen). Cameras built on the bare `createRenderer` path never
|
|
232
|
+
* receive aspect-sync regardless of this flag.
|
|
233
|
+
*/
|
|
234
|
+
autoAspect?: boolean;
|
|
235
|
+
}
|
|
236
|
+
interface CameraOrthographicOpts {
|
|
237
|
+
left: number;
|
|
238
|
+
right: number;
|
|
239
|
+
bottom: number;
|
|
240
|
+
top: number;
|
|
241
|
+
near?: number;
|
|
242
|
+
far?: number;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Convenience factory: perspective CameraData POD.
|
|
246
|
+
*
|
|
247
|
+
* `fov` and `aspect` are required (no sensible universal default).
|
|
248
|
+
* `near` defaults to 0.1, `far` defaults to 100.
|
|
249
|
+
* Orthographic quartet defaults to [-1, 1]x[-1, 1]; tonemap defaults to
|
|
250
|
+
* TONEMAP_NONE (0-overhead path).
|
|
251
|
+
*
|
|
252
|
+
* When `autoAspect` is `true` (the default once shipped in M3), the
|
|
253
|
+
* aspect-sync sidecar on the `createApp(canvas)` path automatically writes
|
|
254
|
+
* `canvas.width / canvas.height` into `Camera.aspect` every frame. Set
|
|
255
|
+
* `autoAspect = false` to opt out (render-to-texture, split-screen).
|
|
256
|
+
* Cameras on the `createRenderer` path do not receive aspect-sync.
|
|
257
|
+
*
|
|
258
|
+
* @see {@link https://github.com/Ubpa/forgeax-engine/blob/main/docs/how-to/2026-06-18-host-engine-contract.md | Host-engine contract SSOT}
|
|
259
|
+
*
|
|
260
|
+
* @example
|
|
261
|
+
* ```ts
|
|
262
|
+
* import { Camera, perspective } from '@forgeax/engine-render';
|
|
263
|
+
* world.spawn(
|
|
264
|
+
* { component: Camera, data: perspective({ fov: Math.PI / 3, aspect: 4 / 3 }) }
|
|
265
|
+
* ).unwrap();
|
|
266
|
+
* ```
|
|
267
|
+
*
|
|
268
|
+
* @example With explicit near/far:
|
|
269
|
+
* ```ts
|
|
270
|
+
* const camData = perspective({ fov: Math.PI / 4, aspect: 16 / 9, near: 0.01, far: 1000 });
|
|
271
|
+
* world.spawn({ component: Camera, data: camData }).unwrap();
|
|
272
|
+
* ```
|
|
273
|
+
*
|
|
274
|
+
* @example With non-default clear color (default is `[0, 0, 0, 0]`).
|
|
275
|
+
* `clearColor` is an inline `array<f32,4>` field on `Camera`; spread the
|
|
276
|
+
* factory then override:
|
|
277
|
+
* ```ts
|
|
278
|
+
* world.spawn({
|
|
279
|
+
* component: Camera,
|
|
280
|
+
* data: { ...perspective({ fov: Math.PI / 3, aspect: 4 / 3 }), clearColor: [0, 1, 0, 1] },
|
|
281
|
+
* }).unwrap();
|
|
282
|
+
* ```
|
|
283
|
+
*/
|
|
284
|
+
export declare function perspective(opts: CameraPerspectiveOpts): CameraPod;
|
|
285
|
+
/**
|
|
286
|
+
* Convenience factory: orthographic CameraData POD.
|
|
287
|
+
*
|
|
288
|
+
* All four ortho bounds (`left` / `right` / `bottom` / `top`) are required.
|
|
289
|
+
* `near` defaults to 0.1, `far` defaults to 100.
|
|
290
|
+
* Perspective fields get sentinel defaults (fov=0, aspect=1) for column
|
|
291
|
+
* alignment with the 12-field schema.
|
|
292
|
+
*
|
|
293
|
+
* @example
|
|
294
|
+
* ```ts
|
|
295
|
+
* import { Camera, orthographic } from '@forgeax/engine-render';
|
|
296
|
+
* world.spawn(
|
|
297
|
+
* { component: Camera, data: orthographic({
|
|
298
|
+
* left: -10, right: 10, bottom: -10, top: 10,
|
|
299
|
+
* }) }
|
|
300
|
+
* ).unwrap();
|
|
301
|
+
* ```
|
|
302
|
+
*
|
|
303
|
+
* @example Screen-aligned orthographic for pixel-unit rendering:
|
|
304
|
+
* ```ts
|
|
305
|
+
* const camData = orthographic({ left: 0, right: 800, bottom: 600, top: 0 });
|
|
306
|
+
* world.spawn({ component: Camera, data: camData }).unwrap();
|
|
307
|
+
* ```
|
|
308
|
+
*/
|
|
309
|
+
export declare function orthographic(opts: CameraOrthographicOpts): CameraPod;
|
|
310
|
+
export {};
|
|
311
|
+
//# sourceMappingURL=camera.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"camera.d.ts","sourceRoot":"","sources":["../../src/components/camera.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Directional light (sun-like infinite light source) with merged shadow
|
|
3
|
+
* parameters.
|
|
4
|
+
*
|
|
5
|
+
* `direction` @semantics outgoing — points FROM light source TO surface
|
|
6
|
+
* (opposite of Three.js convention; the shader internally negates this
|
|
7
|
+
* vector to obtain the L vector for BRDF evaluation). `color` is
|
|
8
|
+
* linear-space rgb in [0, 1] per channel and `intensity` is lux. Exposure is
|
|
9
|
+
* applied after lighting by the camera output stage; no hidden light
|
|
10
|
+
* multiplier is applied here.
|
|
11
|
+
*
|
|
12
|
+
* castShadow defaults to true — zero-config spawns cast cascaded shadow maps.
|
|
13
|
+
* Set castShadow: false to opt out (shadow fields are still stored but their
|
|
14
|
+
* validation is skipped).
|
|
15
|
+
*
|
|
16
|
+
* Shadow fields (migrated from DirectionalLightShadow, feat-20260621 M1):
|
|
17
|
+
* cascadeCount ∈ {1,2,3,4} — number of cascades (default 4)
|
|
18
|
+
* splitLambda ∈ [0,1] — PSSM split weight (default 0.75)
|
|
19
|
+
* cascadeBlend ∈ [0,0.5] — blend width between cascades (default 0.2)
|
|
20
|
+
* mapSize >= 1 — shadow map resolution (default 2048)
|
|
21
|
+
* depthBias — shadow acne bias (default 0.005)
|
|
22
|
+
* normalBias — shadow acne normal offset (default 0.05)
|
|
23
|
+
* shadowDistance > 0 — how far shadows reach in front of the camera,
|
|
24
|
+
* in world units (default 200). This is the sole
|
|
25
|
+
* coverage knob: the CSM cascades are PSSM-split
|
|
26
|
+
* across [camera near, shadowDistance] and each
|
|
27
|
+
* cascade's orthographic bounds are fit to the
|
|
28
|
+
* camera frustum slice automatically. The near
|
|
29
|
+
* end is derived from the active camera's near
|
|
30
|
+
* plane (no separate near knob — any value other
|
|
31
|
+
* than the camera near either drops near shadows
|
|
32
|
+
* or wastes cascade-0 resolution).
|
|
33
|
+
* pcfKernelSize odd >= 1 — PCF kernel width (default 3)
|
|
34
|
+
*
|
|
35
|
+
* @example Spawn a single directional light with default shadows:
|
|
36
|
+
* world.spawn({ component: DirectionalLight, data: {
|
|
37
|
+
* direction: [-0.5, -1, -0.3], // [x, y, z]
|
|
38
|
+
* color: [1, 1, 1], // [r, g, b]
|
|
39
|
+
* intensity: 1,
|
|
40
|
+
* } });
|
|
41
|
+
*
|
|
42
|
+
* @example Opt out of shadows:
|
|
43
|
+
* world.spawn({ component: DirectionalLight, data: {
|
|
44
|
+
* direction: [0, -1, 0], // [x, y, z]
|
|
45
|
+
* castShadow: false,
|
|
46
|
+
* } });
|
|
47
|
+
*
|
|
48
|
+
* @example Explicit shadow config (single-component spawn):
|
|
49
|
+
* world.spawn({ component: DirectionalLight, data: {
|
|
50
|
+
* direction: [0.2, -0.98, 0], // [x, y, z]
|
|
51
|
+
* color: [1, 1, 1], intensity: 1, // color is [r, g, b]
|
|
52
|
+
* cascadeCount: 4, splitLambda: 0.75, cascadeBlend: 0.2,
|
|
53
|
+
* mapSize: 2048, shadowDistance: 200,
|
|
54
|
+
* } });
|
|
55
|
+
*
|
|
56
|
+
* @example 0-light scene must use an unlit shader (standard 0 light = physically correct black):
|
|
57
|
+
* const world = new World();
|
|
58
|
+
* // ... spawn cube + camera, no light ...
|
|
59
|
+
* await renderer.ready;
|
|
60
|
+
* renderer.draw(world); // standard material renders black; switch to an unlit shader (Materials.unlit(...)) for an unlit display
|
|
61
|
+
*/
|
|
62
|
+
export declare const DirectionalLight: import("@forgeax/engine-ecs").Component<"DirectionalLight", {
|
|
63
|
+
readonly direction: "array<f32, 3>";
|
|
64
|
+
readonly color: "array<f32, 3>";
|
|
65
|
+
readonly intensity: "f32";
|
|
66
|
+
readonly castShadow: "bool";
|
|
67
|
+
readonly cascadeCount: "f32";
|
|
68
|
+
readonly splitLambda: "f32";
|
|
69
|
+
readonly cascadeBlend: "f32";
|
|
70
|
+
readonly mapSize: "f32";
|
|
71
|
+
readonly depthBias: "f32";
|
|
72
|
+
readonly normalBias: "f32";
|
|
73
|
+
readonly shadowDistance: "f32";
|
|
74
|
+
readonly pcfKernelSize: "f32";
|
|
75
|
+
}>;
|
|
76
|
+
//# sourceMappingURL=directional-light.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directional-light.d.ts","sourceRoot":"","sources":["../../src/components/directional-light.ts"],"names":[],"mappings":"AAkCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;EAwB3B,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Glyph text authoring component (world-space MSDF text).
|
|
3
|
+
*
|
|
4
|
+
* Spawn an entity with a `GlyphText` and the `glyphTextLayoutSystem`
|
|
5
|
+
* (auto-wired by `createRenderer` / `createApp`) lays out the glyph quads,
|
|
6
|
+
* bakes a `MeshAsset`, and attaches `MeshFilter` + `MeshRenderer` on the
|
|
7
|
+
* next frame (Commands-deferred). Mutating `text` / `fontSize` / `color`
|
|
8
|
+
* re-bakes the mesh in place (plan-strategy D-1 updateMesh; registry size
|
|
9
|
+
* unchanged, AC-08).
|
|
10
|
+
*
|
|
11
|
+
* @example Spawn a world-space label:
|
|
12
|
+
* import { GlyphText } from '@forgeax/engine-render/authoring';
|
|
13
|
+
* const font = (await assets.loadByGuid(fontGuid)).unwrap();
|
|
14
|
+
* world.spawn({
|
|
15
|
+
* component: GlyphText,
|
|
16
|
+
* data: { fontHandle: font, text: 'Hello', fontSize: 32,
|
|
17
|
+
* color: [1, 1, 1, 1] },
|
|
18
|
+
* });
|
|
19
|
+
*/
|
|
20
|
+
export declare const GlyphText: import("@forgeax/engine-ecs").Component<"GlyphText", {
|
|
21
|
+
readonly fontHandle: "shared<FontAsset>";
|
|
22
|
+
readonly text: "string";
|
|
23
|
+
readonly fontSize: "f32";
|
|
24
|
+
readonly color: "array<f32, 4>";
|
|
25
|
+
}>;
|
|
26
|
+
//# sourceMappingURL=glyph-text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glyph-text.d.ts","sourceRoot":"","sources":["../../src/components/glyph-text.ts"],"names":[],"mappings":"AA+BA;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,SAAS;;;;;EAapB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export * from './camera';
|
|
2
|
+
export * from './directional-light';
|
|
3
|
+
export { Instances, type InstancesData } from './instances';
|
|
4
|
+
export { Layer } from './layer';
|
|
5
|
+
export { Lines } from './lines';
|
|
6
|
+
export * from './mesh-filter';
|
|
7
|
+
export * from './mesh-renderer';
|
|
8
|
+
export { PointLight } from './point-light';
|
|
9
|
+
export { PointLightShadow } from './point-light-shadow';
|
|
10
|
+
export { type PointShape, PointShapeValue, Points, pointShapeFromU32, } from './points';
|
|
11
|
+
export { PostProcessParams } from './post-process-params';
|
|
12
|
+
export { SceneInstance, type SceneInstanceOverrideRecord, type SceneInstanceState, } from './scene-instance';
|
|
13
|
+
export { SKYBOX_MODE_CUBEMAP, SkyboxBackground, type SkyboxMode, skyboxModeFromF32, } from './skybox-background';
|
|
14
|
+
export { Skylight } from './skylight';
|
|
15
|
+
export { SortKey } from './sort-key';
|
|
16
|
+
export { SpotLight } from './spot-light';
|
|
17
|
+
export { SpriteAnimation } from './sprite-animation';
|
|
18
|
+
export { SpriteInstances, type SpriteInstancesData } from './sprite-instances';
|
|
19
|
+
export { SPRITE_PLAYBACK_MODE_CLAMP, SPRITE_PLAYBACK_MODE_LOOP, type SpritePlaybackMode, spritePlaybackModeFromU32, } from './sprite-playback-mode';
|
|
20
|
+
export { SpriteRegionOverride } from './sprite-region-override';
|
|
21
|
+
export { decodeSortScope, encodeSortScope, markTileLayerDirty, type SortScope, TileLayer, type TileLayerData, } from './tile-layer';
|
|
22
|
+
export { Tilemap } from './tilemap';
|
|
23
|
+
export { Visibility, type VisibilityState, VisibilityStateValue, visibilityStateFromU32, } from './visibility';
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EACL,KAAK,UAAU,EACf,eAAe,EACf,MAAM,EACN,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EACL,aAAa,EACb,KAAK,2BAA2B,EAChC,KAAK,kBAAkB,GACxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,UAAU,EACf,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,KAAK,kBAAkB,EACvB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EACL,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,KAAK,SAAS,EACd,SAAS,EACT,KAAK,aAAa,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,UAAU,EACV,KAAK,eAAe,EACpB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,cAAc,CAAC"}
|