@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
package/src/gpu-stage.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// @forgeax/engine-runtime - render package shader-stage visibility values.
|
|
2
|
+
//
|
|
3
|
+
// Keep the WebGPU bit values in one dependency-free owner because render
|
|
4
|
+
// package layout builders also run against the null and WebGL2-compatible RHI
|
|
5
|
+
// shims where the browser's GPUShaderStage global is unavailable.
|
|
6
|
+
|
|
7
|
+
export const GPU_SHADER_STAGE_VERTEX = 0x1;
|
|
8
|
+
export const GPU_SHADER_STAGE_FRAGMENT = 0x2;
|
|
9
|
+
export const GPU_SHADER_STAGE_COMPUTE = 0x4;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// @forgeax/engine-runtime - render package texture usage values.
|
|
2
|
+
//
|
|
3
|
+
// Keep the WebGPU bit values in one dependency-free owner because render
|
|
4
|
+
// package descriptor and graph builders also run against null and WebGL2-
|
|
5
|
+
// compatible RHI shims where the browser's GPUTextureUsage global is absent.
|
|
6
|
+
|
|
7
|
+
export const GPU_TEXTURE_USAGE_COPY_SRC = 0x01;
|
|
8
|
+
export const GPU_TEXTURE_USAGE_COPY_DST = 0x02;
|
|
9
|
+
export const GPU_TEXTURE_USAGE_TEXTURE_BINDING = 0x04;
|
|
10
|
+
export const GPU_TEXTURE_USAGE_RENDER_ATTACHMENT = 0x10;
|
|
11
|
+
export const GPU_TEXTURE_USAGE_RENDER_ATTACHMENT_AND_TEXTURE_BINDING =
|
|
12
|
+
GPU_TEXTURE_USAGE_RENDER_ATTACHMENT | GPU_TEXTURE_USAGE_TEXTURE_BINDING;
|
package/src/gpu-usage.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// @forgeax/engine-runtime - render package GPU buffer usage values.
|
|
2
|
+
//
|
|
3
|
+
// Keep the WebGPU bit values in one dependency-free owner because the render
|
|
4
|
+
// package also runs against the null and WebGL2-compatible RHI shims where the
|
|
5
|
+
// browser's GPUBufferUsage global is unavailable.
|
|
6
|
+
|
|
7
|
+
export const GPU_BUFFER_USAGE_VERTEX = 0x20;
|
|
8
|
+
export const GPU_BUFFER_USAGE_INDEX = 0x10;
|
|
9
|
+
export const GPU_BUFFER_USAGE_COPY_DST = 0x08;
|
|
10
|
+
export const GPU_BUFFER_USAGE_COPY_SRC = 0x04;
|
|
11
|
+
export const GPU_BUFFER_USAGE_UNIFORM = 0x40;
|
|
12
|
+
export const GPU_BUFFER_USAGE_STORAGE = 0x80;
|
|
13
|
+
export const GPU_BUFFER_USAGE_INDIRECT = 0x100;
|
|
14
|
+
export const GPU_BUFFER_USAGE_MAP_READ = 0x01;
|
|
@@ -0,0 +1,480 @@
|
|
|
1
|
+
// @forgeax/engine-runtime - HDRP per-runtime persistent GPU buffers.
|
|
2
|
+
//
|
|
3
|
+
// feat-20260608-cluster-lighting Round-2 fix-up [w18-fix-r2] (F-1 / F-2):
|
|
4
|
+
//
|
|
5
|
+
// The HDRP cluster-forward path needs four persistent GPU buffers (light_data
|
|
6
|
+
// SSBO, cluster_grid SSBO, light_index_list SSBO, cluster_uniform UBO) on BGL
|
|
7
|
+
// slots 3..6 (plan D-1). Round-1 declared them only as graph resources -- no
|
|
8
|
+
// underlying RHI buffers existed, so the graph fail-fast'd on dangling-read
|
|
9
|
+
// every frame and the binner output was discarded.
|
|
10
|
+
//
|
|
11
|
+
// This module owns the lazy, per-runtime allocation of those buffers via a
|
|
12
|
+
// WeakMap keyed on RenderSystemRuntime. The HDRP buildGraph reaches in via
|
|
13
|
+
// `getOrCreateHdrpBuffers(runtime)`; subsequent calls in the same frame return
|
|
14
|
+
// the cached pair so `device.queue.writeBuffer` lands on the same handles as
|
|
15
|
+
// the (eventual) bind-group layout consumer (charter P5: one resource, one
|
|
16
|
+
// owner; AC-13: 4 RHI buffers actually exist on slot 3..6 layout).
|
|
17
|
+
//
|
|
18
|
+
// Storage usage flags come from the render package's dependency-free buffer
|
|
19
|
+
// usage owner; this module stays decoupled from renderer bootstrap.
|
|
20
|
+
//
|
|
21
|
+
// Sizes:
|
|
22
|
+
// - light_data : 256 x 64 B = 16 384 B
|
|
23
|
+
// - cluster_grid : maxGridCells x 8 B = 64 x 64 x 64 x 8 B = 2 097 152 B max
|
|
24
|
+
// (plan D-grid: x,y,z each in [1..64]; maxCells=262144;
|
|
25
|
+
// stride 2 u32 = 8B; we allocate at the install-time
|
|
26
|
+
// grid passed via DEFAULT_CLUSTER_GRID 16x9x24=3456 cells).
|
|
27
|
+
// - light_index_list : 65536 u32 = 262 144 B
|
|
28
|
+
// - cluster_uniform : = 32 B (2 vec4 std140)
|
|
29
|
+
//
|
|
30
|
+
// AC-14: cluster_uniform is allocated once with the install-time grid; runtime
|
|
31
|
+
// grid changes do NOT trigger PSO rebuild because grid lives in the UBO not in
|
|
32
|
+
// shader specialization. (Shader-side draw is M-future; this AC is satisfied
|
|
33
|
+
// by the buffer being a UBO with field-level updates.)
|
|
34
|
+
|
|
35
|
+
import {
|
|
36
|
+
type BindGroup,
|
|
37
|
+
type BindGroupLayout,
|
|
38
|
+
type BindGroupLayoutDescriptor,
|
|
39
|
+
type Buffer,
|
|
40
|
+
RhiError,
|
|
41
|
+
type Sampler,
|
|
42
|
+
type TextureView,
|
|
43
|
+
} from '@forgeax/engine-rhi';
|
|
44
|
+
import { GPU_SHADER_STAGE_COMPUTE } from './gpu-stage';
|
|
45
|
+
import {
|
|
46
|
+
GPU_BUFFER_USAGE_COPY_DST,
|
|
47
|
+
GPU_BUFFER_USAGE_STORAGE,
|
|
48
|
+
GPU_BUFFER_USAGE_UNIFORM,
|
|
49
|
+
} from './gpu-usage';
|
|
50
|
+
import { BYTES_PER_LIGHT_SLOT } from './light-buffer-layout';
|
|
51
|
+
import {
|
|
52
|
+
CLUSTER_GRID_STRIDE_U32,
|
|
53
|
+
DEFAULT_CLUSTER_GRID,
|
|
54
|
+
LIGHT_INDEX_LIST_CAPACITY,
|
|
55
|
+
MAX_LIGHTS,
|
|
56
|
+
} from './pipeline/standard-profile';
|
|
57
|
+
import { createHdrpBindGroupLayoutDescriptor } from './pipeline-spec';
|
|
58
|
+
import { MESH_PER_ENTITY_STRIDE, MESH_UBO_FULL_ARRAY_BYTES } from './record/mesh-ssbo';
|
|
59
|
+
import type { RenderSystemRuntime } from './record/render-context';
|
|
60
|
+
import { getOrCreateSsaoFallbackTexture } from './ssao-buffers';
|
|
61
|
+
|
|
62
|
+
export { getOrCreateSsaoFallbackTexture } from './ssao-buffers';
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* WebGL2 HDRP downlevel light-list capacity. 128 x 64 B = 8 KiB, below the
|
|
66
|
+
* WebGL2 minimum uniform-buffer binding size of 16 KiB. The storage path
|
|
67
|
+
* keeps the full MAX_LIGHTS budget; the uniform path uses the same LightSlot
|
|
68
|
+
* POD and only changes the transport.
|
|
69
|
+
*/
|
|
70
|
+
export const HDRP_UNIFORM_LIGHT_CAPACITY = 128;
|
|
71
|
+
|
|
72
|
+
/** Bind-group layout used only by the WebGPU cluster membership producer. */
|
|
73
|
+
export function createHdrpClusterMembershipBindGroupLayoutDescriptor(): BindGroupLayoutDescriptor {
|
|
74
|
+
return {
|
|
75
|
+
label: 'hdrp-cluster-membership-bgl',
|
|
76
|
+
entries: [
|
|
77
|
+
{
|
|
78
|
+
binding: 0,
|
|
79
|
+
visibility: GPU_SHADER_STAGE_COMPUTE,
|
|
80
|
+
buffer: { type: 'read-only-storage', hasDynamicOffset: false },
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
binding: 1,
|
|
84
|
+
visibility: GPU_SHADER_STAGE_COMPUTE,
|
|
85
|
+
buffer: { type: 'storage', hasDynamicOffset: false },
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
binding: 2,
|
|
89
|
+
visibility: GPU_SHADER_STAGE_COMPUTE,
|
|
90
|
+
buffer: { type: 'uniform', hasDynamicOffset: false },
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
binding: 3,
|
|
94
|
+
visibility: GPU_SHADER_STAGE_COMPUTE,
|
|
95
|
+
buffer: { type: 'read-only-storage', hasDynamicOffset: false },
|
|
96
|
+
},
|
|
97
|
+
],
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* The persistent HDRP GPU buffers (plan D-1, BGL slot 3..6) plus the unified
|
|
103
|
+
* BGL layout for group(2) (plan D-6, feat-20260609-hdrp-cluster-fragment-ggx M3).
|
|
104
|
+
*
|
|
105
|
+
* AC-11: light_data stride = `BYTES_PER_LIGHT_SLOT` = 64 (double-sided lock with
|
|
106
|
+
* WGSL hdrp-cluster-forward.wgsl LightSlot).
|
|
107
|
+
* AC-13: 4 distinct RHI Buffer handles, ready for slot-3..6 BGL binding.
|
|
108
|
+
* AC-14: clusterUniform is a uniform buffer (not storage); runtime grid change
|
|
109
|
+
* is a writeBuffer field update, not a PSO rebuild.
|
|
110
|
+
* AC-06: unifiedBindGroupLayout is the 7-entry group(2) BGL (mesh SSBO +
|
|
111
|
+
* cluster 4 buffer).
|
|
112
|
+
*/
|
|
113
|
+
export interface HdrpBuffers {
|
|
114
|
+
/** Whether bindings 3..5 carry storage buffers or uniform-buffer fallback data. */
|
|
115
|
+
readonly storageBuffer: boolean;
|
|
116
|
+
/** light_data -- 256 x 64 B on storage, 128 x 64 B on uniform fallback. */
|
|
117
|
+
readonly lightDataBuffer: Buffer;
|
|
118
|
+
readonly lightDataBytes: number;
|
|
119
|
+
/** cluster_grid SSBO -- gridX*gridY*gridZ * 2 u32, BGL slot 4. */
|
|
120
|
+
readonly clusterGridBuffer: Buffer;
|
|
121
|
+
readonly clusterGridBytes: number;
|
|
122
|
+
/** light_index_list SSBO -- 65536 u32 = 256 KiB, BGL slot 5. */
|
|
123
|
+
readonly lightIndexListBuffer: Buffer;
|
|
124
|
+
readonly lightIndexListBytes: number;
|
|
125
|
+
/** cluster_uniform UBO -- 32 B (2 vec4 std140), BGL slot 6. */
|
|
126
|
+
readonly clusterUniformBuffer: Buffer;
|
|
127
|
+
readonly clusterUniformBytes: number;
|
|
128
|
+
/** CPU-produced light AABBs consumed by the optional WebGPU membership pass. */
|
|
129
|
+
readonly lightBoundsBuffer: Buffer;
|
|
130
|
+
readonly lightBoundsBytes: number;
|
|
131
|
+
/** The grid the buffers were sized for; cluster_grid is sized by gridX*gridY*gridZ. */
|
|
132
|
+
readonly grid: { readonly x: number; readonly y: number; readonly z: number };
|
|
133
|
+
/** Unified BGL layout for group(2). */
|
|
134
|
+
readonly unifiedBindGroupLayout: BindGroupLayout;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
const cache = new WeakMap<RenderSystemRuntime, HdrpBuffers>();
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Lazily allocate the 4 persistent HDRP buffers for `runtime`. Returns the same
|
|
141
|
+
* `HdrpBuffers` object on subsequent calls (per-RenderSystem stable identity).
|
|
142
|
+
*
|
|
143
|
+
* On `device.createBuffer` failure, fires a structured RhiError on the runtime's
|
|
144
|
+
* error registry and returns `null`; HDRP buildGraph treats null as a hard
|
|
145
|
+
* pipeline disable (charter P3 explicit failure).
|
|
146
|
+
*
|
|
147
|
+
* `grid` defaults to `DEFAULT_CLUSTER_GRID` when undefined (matches the M5
|
|
148
|
+
* record-stage default). The buffers are sized at the *first* call's grid; a
|
|
149
|
+
* later install with a different grid keeps the existing allocation as long as
|
|
150
|
+
* it has enough capacity (gridX*gridY*gridZ <= cached.grid product). Different
|
|
151
|
+
* grids that exceed capacity are not currently re-allocated -- M-future.
|
|
152
|
+
*/
|
|
153
|
+
export function getOrCreateHdrpBuffers(
|
|
154
|
+
runtime: RenderSystemRuntime,
|
|
155
|
+
grid: { x: number; y: number; z: number } = DEFAULT_CLUSTER_GRID,
|
|
156
|
+
): HdrpBuffers | null {
|
|
157
|
+
const cached = cache.get(runtime);
|
|
158
|
+
if (cached !== undefined) return cached;
|
|
159
|
+
|
|
160
|
+
const device = runtime.device;
|
|
161
|
+
const storageBuffer = runtime.device.caps?.storageBuffer === true;
|
|
162
|
+
const clusterUniformBytes = 32;
|
|
163
|
+
const lightDataBytes =
|
|
164
|
+
(storageBuffer ? MAX_LIGHTS : HDRP_UNIFORM_LIGHT_CAPACITY) * BYTES_PER_LIGHT_SLOT;
|
|
165
|
+
const clusterCells = grid.x * grid.y * grid.z;
|
|
166
|
+
const clusterGridBytes = storageBuffer
|
|
167
|
+
? clusterCells * CLUSTER_GRID_STRIDE_U32 * 4
|
|
168
|
+
: clusterUniformBytes;
|
|
169
|
+
const lightIndexListBytes = storageBuffer ? LIGHT_INDEX_LIST_CAPACITY * 4 : clusterUniformBytes;
|
|
170
|
+
const lightBoundsBytes = MAX_LIGHTS * 6 * 4;
|
|
171
|
+
|
|
172
|
+
const lightData = device.createBuffer({
|
|
173
|
+
label: 'hdrp-light-data',
|
|
174
|
+
size: lightDataBytes,
|
|
175
|
+
usage:
|
|
176
|
+
(storageBuffer ? GPU_BUFFER_USAGE_STORAGE : GPU_BUFFER_USAGE_UNIFORM) |
|
|
177
|
+
GPU_BUFFER_USAGE_COPY_DST,
|
|
178
|
+
mappedAtCreation: false,
|
|
179
|
+
});
|
|
180
|
+
if (!lightData.ok) {
|
|
181
|
+
runtime.errorRegistry.fire(lightData.error);
|
|
182
|
+
return null;
|
|
183
|
+
}
|
|
184
|
+
const clusterGrid = device.createBuffer({
|
|
185
|
+
label: 'hdrp-cluster-grid',
|
|
186
|
+
size: clusterGridBytes,
|
|
187
|
+
usage:
|
|
188
|
+
(storageBuffer ? GPU_BUFFER_USAGE_STORAGE : GPU_BUFFER_USAGE_UNIFORM) |
|
|
189
|
+
GPU_BUFFER_USAGE_COPY_DST,
|
|
190
|
+
mappedAtCreation: false,
|
|
191
|
+
});
|
|
192
|
+
if (!clusterGrid.ok) {
|
|
193
|
+
runtime.errorRegistry.fire(clusterGrid.error);
|
|
194
|
+
return null;
|
|
195
|
+
}
|
|
196
|
+
const lightIndexList = device.createBuffer({
|
|
197
|
+
label: 'hdrp-light-index-list',
|
|
198
|
+
size: lightIndexListBytes,
|
|
199
|
+
usage:
|
|
200
|
+
(storageBuffer ? GPU_BUFFER_USAGE_STORAGE : GPU_BUFFER_USAGE_UNIFORM) |
|
|
201
|
+
GPU_BUFFER_USAGE_COPY_DST,
|
|
202
|
+
mappedAtCreation: false,
|
|
203
|
+
});
|
|
204
|
+
if (!lightIndexList.ok) {
|
|
205
|
+
runtime.errorRegistry.fire(lightIndexList.error);
|
|
206
|
+
return null;
|
|
207
|
+
}
|
|
208
|
+
const clusterUniform = device.createBuffer({
|
|
209
|
+
label: 'hdrp-cluster-uniform',
|
|
210
|
+
size: clusterUniformBytes,
|
|
211
|
+
usage: GPU_BUFFER_USAGE_UNIFORM | GPU_BUFFER_USAGE_COPY_DST,
|
|
212
|
+
mappedAtCreation: false,
|
|
213
|
+
});
|
|
214
|
+
if (!clusterUniform.ok) {
|
|
215
|
+
runtime.errorRegistry.fire(clusterUniform.error);
|
|
216
|
+
return null;
|
|
217
|
+
}
|
|
218
|
+
const lightBounds = device.createBuffer({
|
|
219
|
+
label: 'hdrp-light-bounds',
|
|
220
|
+
size: lightBoundsBytes,
|
|
221
|
+
usage:
|
|
222
|
+
(storageBuffer ? GPU_BUFFER_USAGE_STORAGE : GPU_BUFFER_USAGE_UNIFORM) |
|
|
223
|
+
GPU_BUFFER_USAGE_COPY_DST,
|
|
224
|
+
mappedAtCreation: false,
|
|
225
|
+
});
|
|
226
|
+
if (!lightBounds.ok) {
|
|
227
|
+
runtime.errorRegistry.fire(lightBounds.error);
|
|
228
|
+
return null;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
// Create the unified 7-entry BGL layout for group(2)
|
|
232
|
+
// (plan D-6, feat-20260609-hdrp-cluster-fragment-ggx M3).
|
|
233
|
+
// The HDRP BGL descriptor is owned by pipeline-spec and shared with the
|
|
234
|
+
// pipeline dispatcher and its byte-identical tests.
|
|
235
|
+
const storageBufferCap = runtime.device.caps?.storageBuffer === true;
|
|
236
|
+
const unifiedBglRes = device.createBindGroupLayout(
|
|
237
|
+
createHdrpBindGroupLayoutDescriptor(storageBufferCap),
|
|
238
|
+
);
|
|
239
|
+
if (!unifiedBglRes.ok) {
|
|
240
|
+
runtime.errorRegistry.fire(unifiedBglRes.error);
|
|
241
|
+
return null;
|
|
242
|
+
}
|
|
243
|
+
const buffers: HdrpBuffers = {
|
|
244
|
+
storageBuffer,
|
|
245
|
+
lightDataBuffer: lightData.value,
|
|
246
|
+
lightDataBytes,
|
|
247
|
+
clusterGridBuffer: clusterGrid.value,
|
|
248
|
+
clusterGridBytes,
|
|
249
|
+
lightIndexListBuffer: lightIndexList.value,
|
|
250
|
+
lightIndexListBytes,
|
|
251
|
+
clusterUniformBuffer: clusterUniform.value,
|
|
252
|
+
clusterUniformBytes,
|
|
253
|
+
lightBoundsBuffer: lightBounds.value,
|
|
254
|
+
lightBoundsBytes,
|
|
255
|
+
grid: { x: grid.x, y: grid.y, z: grid.z },
|
|
256
|
+
unifiedBindGroupLayout: unifiedBglRes.value,
|
|
257
|
+
};
|
|
258
|
+
cache.set(runtime, buffers);
|
|
259
|
+
return buffers;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* Build the 8-float cluster_uniform std140 payload.
|
|
264
|
+
*
|
|
265
|
+
* [0] gridX u32 (cast in shader)
|
|
266
|
+
* [1] gridY u32
|
|
267
|
+
* [2] gridZ u32
|
|
268
|
+
* [3] lightCount u32 (vec4 alignment; capped by the active transport)
|
|
269
|
+
* [4] near f32
|
|
270
|
+
* [5] far f32
|
|
271
|
+
* [6] logFarOverNear f32
|
|
272
|
+
* [7] ssaoIntensity f32 (scope-amend-webgl2-ubo: folded from removed
|
|
273
|
+
* dedicated @binding(9) UBO; lighting shader
|
|
274
|
+
* reads `cluster_uniform.near_far_log.w`)
|
|
275
|
+
*
|
|
276
|
+
* Matches `__tests__/hdrp-bgl-slots.test.ts CLUSTER_UNIFORM_LAYOUT`.
|
|
277
|
+
*
|
|
278
|
+
* Note: u32 values written into a Float32Array view are bit-pattern correct
|
|
279
|
+
* because writeBuffer copies raw bytes; the WGSL `var<uniform>` declares the
|
|
280
|
+
* field as u32 / f32 per its position so the device reinterprets correctly.
|
|
281
|
+
* Use a Uint32Array view for the integer slots to keep the bit pattern intact.
|
|
282
|
+
*/
|
|
283
|
+
export function packClusterUniform(
|
|
284
|
+
grid: { x: number; y: number; z: number },
|
|
285
|
+
near: number,
|
|
286
|
+
far: number,
|
|
287
|
+
ssaoIntensity: number = 0,
|
|
288
|
+
lightCount: number = 0,
|
|
289
|
+
lightCapacity: number = HDRP_UNIFORM_LIGHT_CAPACITY,
|
|
290
|
+
): ArrayBuffer {
|
|
291
|
+
const buf = new ArrayBuffer(32);
|
|
292
|
+
const u32 = new Uint32Array(buf);
|
|
293
|
+
const f32 = new Float32Array(buf);
|
|
294
|
+
u32[0] = grid.x >>> 0;
|
|
295
|
+
u32[1] = grid.y >>> 0;
|
|
296
|
+
u32[2] = grid.z >>> 0;
|
|
297
|
+
u32[3] = Math.min(Math.max(lightCount, 0), lightCapacity) >>> 0;
|
|
298
|
+
f32[4] = near;
|
|
299
|
+
f32[5] = far;
|
|
300
|
+
// logFarOverNear: log(far/near) used by the shader for log-z slice mapping.
|
|
301
|
+
// Guard against near=0 / far<=near (returns 0; downstream uses fallback).
|
|
302
|
+
f32[6] = near > 0 && far > near ? Math.log(far / near) : 0;
|
|
303
|
+
// f32[7] = SSAO intensity (default 0 = disabled-equivalent: mix(1.0, x, 0) = 1).
|
|
304
|
+
f32[7] = ssaoIntensity;
|
|
305
|
+
return buf;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* Consumers pass the same mesh storage buffer + stride that URP uses, so the
|
|
310
|
+
* dynamic offset (`i * MESH_PER_ENTITY_STRIDE`) at `setBindGroup(2, ...)`
|
|
311
|
+
* stays valid across both pipelines.
|
|
312
|
+
*/
|
|
313
|
+
/**
|
|
314
|
+
* Build the unified group(2) BindGroup for HDRP — binding 0 = mesh SSBO
|
|
315
|
+
* (dynamic offset, same buffer URP binds), bindings 3..6 = the cluster
|
|
316
|
+
* buffers from `getOrCreateHdrpBuffers`.
|
|
317
|
+
*
|
|
318
|
+
* feat-20260609-hdrp-cluster-fragment-ggx M4 / w19. Called per-frame from the
|
|
319
|
+
* recordFrame HDRP block after binner+writeBuffer; the resulting BindGroup
|
|
320
|
+
* lands on `passCtx.hdrpClusterBindGroup` and recordMainPass binds it at
|
|
321
|
+
* group(2) when `frameState.isHdrpActive`.
|
|
322
|
+
*
|
|
323
|
+
* Returns `null` on `device.createBindGroup` failure (a structured RhiError
|
|
324
|
+
* is fired on `runtime.errorRegistry`); recordMainPass gracefully falls back
|
|
325
|
+
* to the URP mesh bindGroup when null.
|
|
326
|
+
*
|
|
327
|
+
* Plan D-1 / D-4: the mesh SSBO buffer + stride mirror the URP path, so the
|
|
328
|
+
* single dynamic offset issued at `setBindGroup(2, ...)` covers binding 0 of
|
|
329
|
+
* the unified BGL just as it covers binding 0 of the URP mesh BGL.
|
|
330
|
+
*/
|
|
331
|
+
/**
|
|
332
|
+
* SSAO bind-group input (plan-strategy §D-B, M7;
|
|
333
|
+
* scope-amend-webgl2-ubo: dedicated @binding(9) intensity UBO removed).
|
|
334
|
+
*
|
|
335
|
+
* The HDRP unified BGL always declares 7 entries (cluster 5 + ssao 2); the
|
|
336
|
+
* caller supplies one of two shapes depending on `config.ssao?.enabled`:
|
|
337
|
+
*
|
|
338
|
+
* { enabled: true, ssaoBlurredView }
|
|
339
|
+
* -> binding 7 = real ssaoBlurred view
|
|
340
|
+
* -> binding 8 = real ssao sampler (lazy-allocated alongside fallback)
|
|
341
|
+
*
|
|
342
|
+
* { enabled: false }
|
|
343
|
+
* -> binding 7 = 1x1 white fallback texture (AO = 1.0)
|
|
344
|
+
* -> binding 8 = fallback sampler
|
|
345
|
+
*
|
|
346
|
+
* Intensity flows via `cluster_uniform.near_far_log.w` (binding 6); the host
|
|
347
|
+
* writes intensity=0 when SSAO is disabled so the lighting blend
|
|
348
|
+
* `mix(1.0, ssao*ao, 0) = 1.0` collapses to the round-1 baseline. The
|
|
349
|
+
* "always-7-entries" invariant lets every PBR PSO use the same pipeline
|
|
350
|
+
* layout regardless of SSAO state — toggling the runtime config never
|
|
351
|
+
* triggers shader recompile (charter P4 one consistent abstraction).
|
|
352
|
+
*
|
|
353
|
+
* `ssaoBuffers` is no longer carried in the enabled variant: the SSAO
|
|
354
|
+
* compute-side UBO continues to live on the SSAO compute pipeline's own
|
|
355
|
+
* group(0) BGL, decoupled from the lighting-stage group(2).
|
|
356
|
+
*/
|
|
357
|
+
export type SsaoBindOptions =
|
|
358
|
+
| {
|
|
359
|
+
readonly enabled: true;
|
|
360
|
+
readonly ssaoBlurredView: TextureView;
|
|
361
|
+
}
|
|
362
|
+
| { readonly enabled: false };
|
|
363
|
+
|
|
364
|
+
export function createHdrpUnifiedBindGroup(
|
|
365
|
+
runtime: RenderSystemRuntime,
|
|
366
|
+
hdrpBuffers: HdrpBuffers,
|
|
367
|
+
meshStorageBuffer: Buffer,
|
|
368
|
+
ssaoOptions: SsaoBindOptions = { enabled: false },
|
|
369
|
+
): BindGroup | null {
|
|
370
|
+
const fallback = getOrCreateSsaoFallbackTexture(runtime);
|
|
371
|
+
if (fallback === null) return null;
|
|
372
|
+
|
|
373
|
+
const ssaoTexView: TextureView = ssaoOptions.enabled
|
|
374
|
+
? ssaoOptions.ssaoBlurredView
|
|
375
|
+
: fallback.view;
|
|
376
|
+
const ssaoSampler: Sampler = fallback.sampler;
|
|
377
|
+
|
|
378
|
+
const result = runtime.device.createBindGroup({
|
|
379
|
+
label: 'hdrp-unified-bg-group2',
|
|
380
|
+
layout: hdrpBuffers.unifiedBindGroupLayout,
|
|
381
|
+
entries: [
|
|
382
|
+
{
|
|
383
|
+
binding: 0,
|
|
384
|
+
resource: {
|
|
385
|
+
kind: 'buffer',
|
|
386
|
+
value: {
|
|
387
|
+
buffer: meshStorageBuffer,
|
|
388
|
+
offset: 0,
|
|
389
|
+
size: hdrpBuffers.storageBuffer ? MESH_PER_ENTITY_STRIDE : MESH_UBO_FULL_ARRAY_BYTES,
|
|
390
|
+
},
|
|
391
|
+
},
|
|
392
|
+
},
|
|
393
|
+
{
|
|
394
|
+
binding: 3,
|
|
395
|
+
resource: {
|
|
396
|
+
kind: 'buffer',
|
|
397
|
+
value: { buffer: hdrpBuffers.lightDataBuffer },
|
|
398
|
+
},
|
|
399
|
+
},
|
|
400
|
+
{
|
|
401
|
+
binding: 4,
|
|
402
|
+
resource: {
|
|
403
|
+
kind: 'buffer',
|
|
404
|
+
value: { buffer: hdrpBuffers.clusterGridBuffer },
|
|
405
|
+
},
|
|
406
|
+
},
|
|
407
|
+
{
|
|
408
|
+
binding: 5,
|
|
409
|
+
resource: {
|
|
410
|
+
kind: 'buffer',
|
|
411
|
+
value: { buffer: hdrpBuffers.lightIndexListBuffer },
|
|
412
|
+
},
|
|
413
|
+
},
|
|
414
|
+
{
|
|
415
|
+
binding: 6,
|
|
416
|
+
resource: {
|
|
417
|
+
kind: 'buffer',
|
|
418
|
+
value: { buffer: hdrpBuffers.clusterUniformBuffer },
|
|
419
|
+
},
|
|
420
|
+
},
|
|
421
|
+
{
|
|
422
|
+
binding: 7,
|
|
423
|
+
resource: { kind: 'textureView', value: ssaoTexView },
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
binding: 8,
|
|
427
|
+
resource: { kind: 'sampler', value: ssaoSampler },
|
|
428
|
+
},
|
|
429
|
+
],
|
|
430
|
+
});
|
|
431
|
+
if (!result.ok) {
|
|
432
|
+
runtime.errorRegistry.fire(result.error);
|
|
433
|
+
return null;
|
|
434
|
+
}
|
|
435
|
+
return result.value;
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
/**
|
|
439
|
+
* Build the compute-only bind group for ordered cluster membership output.
|
|
440
|
+
* Its group is intentionally separate from the fragment group: the same
|
|
441
|
+
* light-index buffer is read-only in the fragment pipeline but read-write in
|
|
442
|
+
* the producer pipeline, which WebGPU represents with different binding
|
|
443
|
+
* types.
|
|
444
|
+
*/
|
|
445
|
+
export function createHdrpClusterMembershipBindGroup(
|
|
446
|
+
runtime: RenderSystemRuntime,
|
|
447
|
+
hdrpBuffers: HdrpBuffers,
|
|
448
|
+
layout: BindGroupLayout,
|
|
449
|
+
): BindGroup | null {
|
|
450
|
+
const result = runtime.device.createBindGroup({
|
|
451
|
+
label: 'hdrp-cluster-membership-bg',
|
|
452
|
+
layout,
|
|
453
|
+
entries: [
|
|
454
|
+
{
|
|
455
|
+
binding: 0,
|
|
456
|
+
resource: { kind: 'buffer', value: { buffer: hdrpBuffers.clusterGridBuffer } },
|
|
457
|
+
},
|
|
458
|
+
{
|
|
459
|
+
binding: 1,
|
|
460
|
+
resource: { kind: 'buffer', value: { buffer: hdrpBuffers.lightIndexListBuffer } },
|
|
461
|
+
},
|
|
462
|
+
{
|
|
463
|
+
binding: 2,
|
|
464
|
+
resource: { kind: 'buffer', value: { buffer: hdrpBuffers.clusterUniformBuffer } },
|
|
465
|
+
},
|
|
466
|
+
{
|
|
467
|
+
binding: 3,
|
|
468
|
+
resource: { kind: 'buffer', value: { buffer: hdrpBuffers.lightBoundsBuffer } },
|
|
469
|
+
},
|
|
470
|
+
],
|
|
471
|
+
});
|
|
472
|
+
if (!result.ok) {
|
|
473
|
+
runtime.errorRegistry.fire(result.error);
|
|
474
|
+
return null;
|
|
475
|
+
}
|
|
476
|
+
return result.value;
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
/** Sentinel error class re-export for tests asserting the error path. */
|
|
480
|
+
export { RhiError as HdrpBufferAllocError };
|