@forgeax/engine-render 0.1.4 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +130 -641
- package/dist/.tsbuildinfo +1 -1
- package/dist/__tests__/device-scope-lifecycle.unit.test.d.ts +2 -0
- package/dist/__tests__/device-scope-lifecycle.unit.test.d.ts.map +1 -0
- package/dist/__tests__/device-scope-stale-matrix.unit.test.d.ts +2 -0
- package/dist/__tests__/device-scope-stale-matrix.unit.test.d.ts.map +1 -0
- package/dist/__tests__/fullscreen-feature-plan.unit.test.d.ts +2 -0
- package/dist/__tests__/fullscreen-feature-plan.unit.test.d.ts.map +1 -0
- package/dist/__tests__/gpu-driven-indirect-raster-evidence.d.ts.map +1 -1
- package/dist/__tests__/gpu-driven-view-gpu-evidence.d.ts +6 -0
- package/dist/__tests__/gpu-driven-view-gpu-evidence.d.ts.map +1 -1
- package/dist/{gpu-driven/view-reference.d.ts → __tests__/gpu-driven-view-reference.d.ts} +4 -4
- package/dist/__tests__/gpu-driven-view-reference.d.ts.map +1 -0
- package/dist/__tests__/gpu-scene-render-graph-gpu.d.ts.map +1 -1
- package/dist/__tests__/ibl/face-uniforms.unit.test.d.ts +2 -0
- package/dist/__tests__/ibl/face-uniforms.unit.test.d.ts.map +1 -0
- package/dist/__tests__/morph-feature-plan.unit.test.d.ts +2 -0
- package/dist/__tests__/morph-feature-plan.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-plan.test-d.d.ts +2 -0
- package/dist/__tests__/render-feature-plan.test-d.d.ts.map +1 -0
- package/dist/__tests__/render-feature-plan.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-plan.unit.test.d.ts.map +1 -0
- package/dist/__tests__/ssao-config.unit.test.d.ts +2 -0
- package/dist/__tests__/ssao-config.unit.test.d.ts.map +1 -0
- package/dist/__tests__/standard-clustered-pipeline.unit.test.d.ts +2 -0
- package/dist/__tests__/standard-clustered-pipeline.unit.test.d.ts.map +1 -0
- package/dist/__tests__/standard-descriptors.test-d.d.ts +2 -0
- package/dist/__tests__/standard-descriptors.test-d.d.ts.map +1 -0
- package/dist/__tests__/standard-pipeline.dawn.test.d.ts +2 -0
- package/dist/__tests__/standard-pipeline.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/standard-pipeline.integration.test.d.ts +2 -0
- package/dist/__tests__/standard-pipeline.integration.test.d.ts.map +1 -0
- package/dist/__tests__/standard-profile-oracle.unit.test.d.ts +2 -0
- package/dist/__tests__/standard-profile-oracle.unit.test.d.ts.map +1 -0
- package/dist/__tests__/visibility-resource-short-circuit.unit.test.d.ts +2 -0
- package/dist/__tests__/visibility-resource-short-circuit.unit.test.d.ts.map +1 -0
- package/dist/{renderer/backend-selection.d.ts → assembly/backend-contract.d.ts} +15 -4
- package/dist/assembly/backend-contract.d.ts.map +1 -0
- package/dist/assembly/factory.d.ts +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/{renderer → assembly}/material/assembly.d.ts +0 -1
- package/dist/{renderer → assembly}/material/assembly.d.ts.map +1 -1
- package/dist/assembly/material/pipeline-projection.d.ts +30 -0
- package/dist/assembly/material/pipeline-projection.d.ts.map +1 -0
- package/dist/authoring.d.ts +10 -11
- package/dist/authoring.d.ts.map +1 -1
- package/dist/authoring.mjs +25 -3
- package/dist/authoring.mjs.map +1 -1
- package/dist/chunk-CQXZC5XI.mjs +182 -0
- package/dist/chunk-CQXZC5XI.mjs.map +1 -0
- package/dist/chunk-QC4VW3XJ.mjs +79 -0
- package/dist/chunk-QC4VW3XJ.mjs.map +1 -0
- package/dist/chunk-SCRSAK5B.mjs +480 -0
- package/dist/chunk-SCRSAK5B.mjs.map +1 -0
- package/dist/components/__tests__/schema-contract.unit.test.d.ts +2 -0
- package/dist/components/__tests__/schema-contract.unit.test.d.ts.map +1 -0
- package/dist/components/glyph-text.d.ts +1 -1
- package/dist/components/glyph-text.d.ts.map +1 -1
- package/dist/components/index.d.ts +2 -2
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/instances.d.ts +1 -1
- package/dist/components/instances.d.ts.map +1 -1
- package/dist/components/light-helpers.d.ts +1 -1
- package/dist/components/light-helpers.d.ts.map +1 -1
- package/dist/components/mesh-filter.d.ts +7 -7
- package/dist/components/mesh-filter.d.ts.map +1 -1
- package/dist/components/scene-instance.d.ts +11 -11
- package/dist/components/skybox-background.d.ts +56 -0
- package/dist/components/skybox-background.d.ts.map +1 -0
- package/dist/components/skylight.d.ts +55 -0
- package/dist/components/skylight.d.ts.map +1 -0
- package/dist/components/sprite-animation.d.ts +2 -3
- package/dist/components/sprite-animation.d.ts.map +1 -1
- package/dist/components/sprite-instances.d.ts +1 -1
- package/dist/components/sprite-playback-mode.d.ts +6 -1
- package/dist/components/sprite-playback-mode.d.ts.map +1 -1
- package/dist/components/sprite-region-override.d.ts +2 -3
- package/dist/components/sprite-region-override.d.ts.map +1 -1
- package/dist/components/tile-layer.d.ts +5 -0
- package/dist/components/tile-layer.d.ts.map +1 -1
- package/dist/construct-renderer.d.ts +18 -1
- package/dist/construct-renderer.d.ts.map +1 -1
- package/dist/construct-renderer.mjs +27008 -4
- package/dist/construct-renderer.mjs.map +1 -1
- package/dist/debug-draw-glue.d.ts +2 -53
- package/dist/debug-draw-glue.d.ts.map +1 -1
- package/dist/device/device-scope.d.ts +83 -0
- package/dist/device/device-scope.d.ts.map +1 -0
- package/dist/{gpu-resource-store.d.ts → device/gpu-residency.d.ts} +91 -48
- package/dist/device/gpu-residency.d.ts.map +1 -0
- package/dist/device/resource-types.d.ts +8 -0
- package/dist/device/resource-types.d.ts.map +1 -0
- package/dist/engine-metrics.d.ts +2 -2
- package/dist/engine-metrics.d.ts.map +1 -1
- package/dist/errors/recover.d.ts +28 -1
- package/dist/errors/recover.d.ts.map +1 -1
- package/dist/errors/render.d.ts +249 -258
- package/dist/errors/render.d.ts.map +1 -1
- package/dist/features/fullscreen.d.ts +19 -0
- package/dist/features/fullscreen.d.ts.map +1 -0
- package/dist/features/host.d.ts +32 -26
- package/dist/features/host.d.ts.map +1 -1
- package/dist/features/morph/morph-feature.d.ts +39 -5
- package/dist/features/morph/morph-feature.d.ts.map +1 -1
- package/dist/features/plan.d.ts +182 -0
- package/dist/features/plan.d.ts.map +1 -0
- package/dist/features/prepared-gpu-work.d.ts +21 -17
- package/dist/features/prepared-gpu-work.d.ts.map +1 -1
- package/dist/features/prepared-graphics-store.d.ts +2 -1
- package/dist/features/prepared-graphics-store.d.ts.map +1 -1
- package/dist/features/prepared-graphics.d.ts +11 -21
- package/dist/features/prepared-graphics.d.ts.map +1 -1
- package/dist/features/render-graph-compute.d.ts +2 -2
- package/dist/features/render-graph-compute.d.ts.map +1 -1
- package/dist/features/render-graph-contribution.d.ts +4 -7
- package/dist/features/render-graph-contribution.d.ts.map +1 -1
- package/dist/features/render-graph-raster.d.ts +2 -2
- package/dist/features/render-graph-raster.d.ts.map +1 -1
- package/dist/features/render-graph-resources.d.ts +6 -6
- package/dist/features/render-graph-resources.d.ts.map +1 -1
- package/dist/features/targets.d.ts +5 -5
- package/dist/features/targets.d.ts.map +1 -1
- package/dist/features/types.d.ts +11 -190
- package/dist/features/types.d.ts.map +1 -1
- package/dist/features/vocabulary.d.ts +14 -0
- package/dist/features/vocabulary.d.ts.map +1 -0
- package/dist/fullscreen-post-process-pass.d.ts +4 -25
- package/dist/fullscreen-post-process-pass.d.ts.map +1 -1
- package/dist/glyph-text-layout-system.d.ts +3 -2
- package/dist/glyph-text-layout-system.d.ts.map +1 -1
- package/dist/gpu-driven/batch-topology.d.ts +6 -75
- package/dist/gpu-driven/batch-topology.d.ts.map +1 -1
- package/dist/gpu-driven/production-raster.d.ts +13 -112
- package/dist/gpu-driven/production-raster.d.ts.map +1 -1
- package/dist/gpu-driven/view-gpu.d.ts +10 -66
- package/dist/gpu-driven/view-gpu.d.ts.map +1 -1
- package/dist/gpu-resource.d.ts +3 -3
- package/dist/gpu-scene-schema.d.ts +1 -94
- package/dist/gpu-scene-schema.d.ts.map +1 -1
- package/dist/gpu-scene.d.ts +7 -33
- package/dist/gpu-scene.d.ts.map +1 -1
- package/dist/hdrp-buffers.d.ts +3 -53
- package/dist/hdrp-buffers.d.ts.map +1 -1
- package/dist/ibl/IblPipelineCache.d.ts +74 -180
- package/dist/ibl/IblPipelineCache.d.ts.map +1 -1
- package/dist/ibl/skylight-bind-group.d.ts +1 -1
- package/dist/index.d.ts +13 -43
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +165 -3
- package/dist/index.mjs.map +1 -1
- package/dist/inspection-types.d.ts +69 -0
- package/dist/inspection-types.d.ts.map +1 -0
- package/dist/instance-buffer-cache.d.ts +1 -4
- package/dist/instance-buffer-cache.d.ts.map +1 -1
- package/dist/internal.d.ts +1 -73
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.mjs +1 -43
- package/dist/internal.mjs.map +1 -1
- package/dist/lifecycle.d.ts +36 -2
- package/dist/lifecycle.d.ts.map +1 -1
- package/dist/materials.d.ts +0 -3
- package/dist/materials.d.ts.map +1 -1
- package/dist/mesh-material-bindings.d.ts +0 -1
- package/dist/mesh-material-bindings.d.ts.map +1 -1
- package/dist/pbr-pipeline.d.ts +75 -29
- package/dist/pbr-pipeline.d.ts.map +1 -1
- package/dist/pipeline/standard-forward-lane.d.ts +5 -0
- package/dist/pipeline/standard-forward-lane.d.ts.map +1 -0
- package/dist/pipeline/standard-pipeline.d.ts +31 -0
- package/dist/pipeline/standard-pipeline.d.ts.map +1 -0
- package/dist/pipeline/standard-profile.d.ts +40 -0
- package/dist/pipeline/standard-profile.d.ts.map +1 -0
- package/dist/pipeline-builder.d.ts +3 -3
- package/dist/pipeline-builder.d.ts.map +1 -1
- package/dist/pipeline-spec-types.d.ts +24 -0
- package/dist/pipeline-spec-types.d.ts.map +1 -0
- package/dist/pipeline-spec.d.ts +16 -155
- package/dist/pipeline-spec.d.ts.map +1 -1
- package/dist/plugin.d.ts +1 -14
- package/dist/plugin.d.ts.map +1 -1
- package/dist/post-process-errors.d.ts +18 -18
- package/dist/post-process-errors.d.ts.map +1 -1
- package/dist/prepare/prepared-graphics-resolver.d.ts +2 -5
- package/dist/prepare/prepared-graphics-resolver.d.ts.map +1 -1
- package/dist/record/__tests__/typed-frame-graph-plan.unit.test.d.ts +2 -0
- package/dist/record/__tests__/typed-frame-graph-plan.unit.test.d.ts.map +1 -0
- package/dist/record/frame-lighting.d.ts +7 -73
- package/dist/record/frame-lighting.d.ts.map +1 -1
- package/dist/record/frame-snapshot.d.ts +44 -44
- package/dist/record/frame-snapshot.d.ts.map +1 -1
- package/dist/record/frame-targets.d.ts +5 -38
- package/dist/record/frame-targets.d.ts.map +1 -1
- package/dist/record/frame.d.ts +64 -52
- package/dist/record/frame.d.ts.map +1 -1
- package/dist/record/helpers.d.ts +3 -2
- package/dist/record/helpers.d.ts.map +1 -1
- package/dist/record/main-pass-geometry.d.ts +5 -4
- package/dist/record/main-pass-geometry.d.ts.map +1 -1
- package/dist/record/main-pass-material.d.ts +90 -59
- package/dist/record/main-pass-material.d.ts.map +1 -1
- package/dist/record/main-pass-sprite-draws.d.ts +28 -3
- package/dist/record/main-pass-sprite-draws.d.ts.map +1 -1
- package/dist/record/main-pass.d.ts +1 -1
- package/dist/record/main-pass.d.ts.map +1 -1
- package/dist/record/mesh-ssbo.d.ts +276 -3
- package/dist/record/mesh-ssbo.d.ts.map +1 -1
- package/dist/record/render-context.d.ts +235 -0
- package/dist/record/render-context.d.ts.map +1 -0
- package/dist/record/shadow-pass.d.ts +15 -88
- package/dist/record/shadow-pass.d.ts.map +1 -1
- package/dist/record/skybox-post-pass.d.ts +1 -1
- package/dist/record/skybox-post-pass.d.ts.map +1 -1
- package/dist/record/typed-frame-graph.d.ts +29 -7
- package/dist/record/typed-frame-graph.d.ts.map +1 -1
- package/dist/record/view-ubo.d.ts +3 -3
- package/dist/record/view-ubo.d.ts.map +1 -1
- package/dist/render-contract.d.ts +416 -0
- package/dist/render-contract.d.ts.map +1 -0
- package/dist/render-data.d.ts.map +1 -1
- package/dist/render-graph-primitives.d.ts +14 -362
- package/dist/render-graph-primitives.d.ts.map +1 -1
- package/dist/render-pipeline.d.ts +25 -64
- package/dist/render-pipeline.d.ts.map +1 -1
- package/dist/render-system-extract.d.ts +107 -338
- package/dist/render-system-extract.d.ts.map +1 -1
- package/dist/render-system.d.ts +21 -713
- package/dist/render-system.d.ts.map +1 -1
- package/dist/scene/render-scene-types.d.ts +58 -0
- package/dist/scene/render-scene-types.d.ts.map +1 -0
- package/dist/scene/render-scene.d.ts +105 -0
- package/dist/scene/render-scene.d.ts.map +1 -0
- package/dist/scene-instances/post-spawn-resolve-joints.d.ts +2 -5
- package/dist/scene-instances/post-spawn-resolve-joints.d.ts.map +1 -1
- package/dist/ssao-buffers.d.ts +22 -3
- package/dist/ssao-buffers.d.ts.map +1 -1
- package/dist/systems/skin-palette-allocator.d.ts +2 -4
- package/dist/systems/skin-palette-allocator.d.ts.map +1 -1
- package/dist/systems/skin-palette-types.d.ts +14 -0
- package/dist/systems/skin-palette-types.d.ts.map +1 -0
- package/dist/systems/transparent-sort-config.d.ts +23 -2
- package/dist/systems/transparent-sort-config.d.ts.map +1 -1
- package/dist/tilemap-chunk-extract-system.d.ts +4 -3
- package/dist/tilemap-chunk-extract-system.d.ts.map +1 -1
- package/dist/typed-render-graph-primitives.d.ts +2 -4
- package/dist/typed-render-graph-primitives.d.ts.map +1 -1
- package/dist/typed-shadow-passes.d.ts +3 -3
- package/dist/typed-shadow-passes.d.ts.map +1 -1
- package/package.json +23 -23
- package/src/__tests__/backend-selection-rhi-capture.test-d.ts +1 -1
- package/src/__tests__/callback-inference.test-d.ts +6 -3
- package/src/__tests__/cluster-grid-default-surface.unit.test.ts +7 -4
- package/src/__tests__/construct-renderer-identity.unit.test.ts +15 -2
- package/src/__tests__/device-scope-lifecycle.unit.test.ts +151 -0
- package/src/__tests__/device-scope-stale-matrix.unit.test.ts +42 -0
- package/src/__tests__/direct-extract-consumer-contract.test-d.ts +8 -19
- package/src/__tests__/direct-light-snapshot.unit.test.ts +3 -13
- package/src/__tests__/factory-contract.integration.test.ts +158 -209
- package/src/__tests__/fallback-row-stride-surface.unit.test.ts +1 -4
- package/src/__tests__/frame-observation.contract.test.ts +17 -8
- package/src/__tests__/fullscreen-feature-plan.unit.test.ts +32 -0
- package/src/__tests__/glyph-text-layout-recovery.unit.test.ts +6 -11
- package/src/__tests__/gpu-driven-indirect-raster-evidence.ts +9 -16
- package/src/__tests__/gpu-driven-production.integration.test.ts +32 -205
- package/src/__tests__/gpu-driven-scaling.unit.test.ts +4 -7
- package/src/__tests__/gpu-driven-view-gpu-evidence.ts +87 -8
- package/src/__tests__/gpu-driven-view-graph.integration.test.ts +170 -8
- package/src/{gpu-driven/view-reference.ts → __tests__/gpu-driven-view-reference.ts} +4 -3
- package/src/__tests__/gpu-driven-view.browser.test.ts +12 -1
- package/src/__tests__/gpu-driven-view.dawn.test.ts +12 -1
- package/src/__tests__/gpu-driven-view.unit.test.ts +11 -267
- package/src/__tests__/gpu-resource-store-stride.unit.test.ts +3 -3
- package/src/__tests__/gpu-scene-render-graph-gpu.ts +2 -3
- package/src/__tests__/gpu-scene.dawn.test.ts +2 -6
- package/src/__tests__/gpu-scene.unit.test.ts +10 -24
- package/src/__tests__/ibl/face-uniforms.unit.test.ts +46 -0
- package/src/__tests__/infinite-grid-no-vertex-probe.unit.test.ts +34 -66
- package/src/__tests__/ktx2-basis-gpu-consumer.dawn.test.ts +14 -5
- package/src/__tests__/light-buffer-layout.unit.test.ts +4 -49
- package/src/__tests__/material-cooked-projection.unit.test.ts +2 -51
- package/src/__tests__/material-snapshot-mutation.integration.test.ts +10 -15
- package/src/__tests__/material-static-dynamic-route.unit.test.ts +4 -23
- package/src/__tests__/material-stride-surface.unit.test.ts +2 -2
- package/src/__tests__/mesh-buffer-usage-surface.unit.test.ts +7 -8
- package/src/__tests__/morph-culling-reentry.dawn.test.ts +29 -38
- package/src/__tests__/morph-feature-gpu-work.integration.test.ts +45 -43
- package/src/__tests__/morph-feature-plan.unit.test.ts +53 -0
- package/src/__tests__/morph-visual-evidence.integration.test.ts +47 -33
- package/src/__tests__/nineslice-handle-surface.unit.test.ts +11 -6
- package/src/__tests__/post-process-error-policy-owner.unit.test.ts +6 -13
- package/src/__tests__/prepared-graphics-capability.unit.test.ts +6 -81
- package/src/__tests__/prepared-graphics-generation.unit.test.ts +3 -17
- package/src/__tests__/prepared-graphics-lifecycle.unit.test.ts +6 -74
- package/src/__tests__/prepared-graphics-resolver.unit.test.ts +1 -3
- package/src/__tests__/prepared-graphics-snapshot.unit.test.ts +2 -2
- package/src/__tests__/profiler-default-off.test.ts +1 -1
- package/src/__tests__/profiler-phase-catalog.test.ts +2 -2
- package/src/__tests__/profiler-phase-integration.test.ts +5 -13
- package/src/__tests__/profiler-phase-token.test.ts +3 -8
- package/src/__tests__/public-surface.test-d.ts +65 -3
- package/src/__tests__/recover-error-policy-owner.unit.test.ts +1 -21
- package/src/__tests__/render-error-code-owner.test-d.ts +18 -23
- package/src/__tests__/render-error-detail-ssot.test-d.ts +0 -95
- package/src/__tests__/render-error-exhaustive.test-d.ts +8 -1
- package/src/__tests__/render-feature-assembly.test-d.ts +8 -16
- package/src/__tests__/render-feature-context.test-d.ts +16 -40
- package/src/__tests__/render-feature-contract.test-d.ts +9 -18
- package/src/__tests__/render-feature-diagnostics.unit.test.ts +6 -8
- package/src/__tests__/render-feature-docs.unit.test.ts +8 -7
- package/src/__tests__/render-feature-gpu-work.integration.test.ts +14 -75
- package/src/__tests__/render-feature-plan.test-d.ts +161 -0
- package/src/__tests__/render-feature-plan.unit.test.ts +170 -0
- package/src/__tests__/render-feature-prepared-diagnostics.unit.test.ts +8 -19
- package/src/__tests__/render-feature-prepared-errors.test-d.ts +3 -6
- package/src/__tests__/render-feature-prepared-graphics-docs.unit.test.ts +10 -71
- package/src/__tests__/render-feature-prepared-graphics-isolation.unit.test.ts +11 -61
- package/src/__tests__/render-feature-prepared-graphics-negative.test-d.ts +20 -43
- package/src/__tests__/render-feature-prepared-graphics.test-d.ts +56 -78
- package/src/__tests__/render-feature-public-surface.test-d.ts +6 -24
- package/src/__tests__/render-feature-retry.unit.test.ts +7 -48
- package/src/__tests__/render-feature-scheduling.unit.test.ts +15 -27
- package/src/__tests__/render-feature-stage-failed-policy-owner.unit.test.ts +0 -9
- package/src/__tests__/render-feature-stage-fault-recovery.unit.test.ts +19 -109
- package/src/__tests__/render-feature-visibility-context.test-d.ts +1 -6
- package/src/__tests__/render-feature-visibility-context.unit.test.ts +1 -2
- package/src/__tests__/render-feature-zero-work.unit.test.ts +14 -20
- package/src/__tests__/render-scene-projection.unit.test.ts +73 -111
- package/src/__tests__/renderer-factory-material-contract.unit.test.ts +44 -95
- package/src/__tests__/renderer-lifecycle.integration.test.ts +49 -1
- package/src/__tests__/shader-stage-surface.unit.test.ts +14 -9
- package/src/__tests__/ssao-config.unit.test.ts +36 -0
- package/src/__tests__/ssao-kernel-surface.unit.test.ts +4 -5
- package/src/__tests__/standard-clustered-pipeline.unit.test.ts +28 -0
- package/src/__tests__/standard-descriptors.test-d.ts +22 -0
- package/src/__tests__/standard-pipeline.dawn.test.ts +61 -0
- package/src/__tests__/standard-pipeline.integration.test.ts +124 -0
- package/src/__tests__/standard-profile-oracle.unit.test.ts +62 -0
- package/src/__tests__/surface-configuration.unit.test.ts +1 -2
- package/src/__tests__/texture-usage-surface.unit.test.ts +3 -6
- package/src/__tests__/typed-pipeline-topology.unit.test.ts +40 -206
- package/src/__tests__/urp-pipeline-targets.unit.test.ts +1 -11
- package/src/__tests__/urp-pipeline.unit.test.ts +2 -2
- package/src/__tests__/vertex-color-pipeline.unit.test.ts +10 -2
- package/src/__tests__/vertex-layout-consumer.unit.test.ts +1 -1
- package/src/__tests__/visibility-diagnostics.integration.test.ts +7 -11
- package/src/__tests__/visibility-extract.integration.test.ts +20 -11
- package/src/__tests__/visibility-extract.perf.test.ts +66 -32
- package/src/__tests__/visibility-feature-dedup.integration.test.ts +2 -4
- package/src/__tests__/visibility-hidden-report.unit.test.ts +1 -2
- package/src/__tests__/visibility-instances.integration.test.ts +7 -11
- package/src/__tests__/visibility-multi-world.integration.test.ts +38 -6
- package/src/__tests__/visibility-producer-matrix.integration.test.ts +18 -41
- package/src/__tests__/visibility-public-surface.test-d.ts +10 -9
- package/src/__tests__/visibility-resolver.unit.test.ts +2 -1
- package/src/__tests__/visibility-resource-short-circuit.unit.test.ts +80 -0
- package/src/__tests__/visibility-snapshot-contract.unit.test.ts +2 -1
- package/src/__tests__/vocabulary.unit.test.ts +1 -1
- package/src/assembly/backend-contract.ts +57 -0
- package/src/{renderer/renderer-factory.ts → assembly/factory.ts} +1663 -2690
- package/src/assembly/host-contract.ts +101 -0
- package/src/{renderer → assembly}/material/assembly.ts +0 -2
- package/src/assembly/material/pipeline-projection.ts +63 -0
- package/src/authoring.ts +14 -22
- package/src/components/__tests__/schema-contract.unit.test.ts +10 -0
- package/src/components/glyph-text.ts +3 -2
- package/src/components/index.ts +7 -9
- package/src/components/instances.ts +4 -5
- package/src/components/light-helpers.ts +1 -1
- package/src/components/mesh-filter.ts +11 -10
- package/src/components/post-process-params.ts +3 -3
- package/src/components/scene-instance.ts +12 -12
- package/src/components/skybox-background.ts +103 -0
- package/src/components/{environment.ts → skylight.ts} +2 -110
- package/src/components/sprite-animation.ts +3 -4
- package/src/components/sprite-instances.ts +2 -2
- package/src/components/sprite-playback-mode.ts +7 -1
- package/src/components/sprite-region-override.ts +2 -3
- package/src/components/tile-layer.ts +8 -2
- package/src/construct-renderer.ts +67 -4
- package/src/debug-draw-glue.ts +8 -129
- package/src/device/device-scope.ts +306 -0
- package/src/{gpu-resource-store.ts → device/gpu-residency.ts} +540 -639
- package/src/device/resource-types.ts +20 -0
- package/src/engine-metrics.ts +12 -19
- package/src/errors/recover.ts +45 -3
- package/src/errors/render.ts +357 -460
- package/src/features/fullscreen.ts +46 -0
- package/src/features/host.ts +575 -309
- package/src/features/morph/morph-feature.ts +195 -105
- package/src/features/plan.ts +447 -0
- package/src/features/prepared-gpu-work.ts +72 -15
- package/src/features/prepared-graphics-store.ts +20 -6
- package/src/features/prepared-graphics.ts +12 -71
- package/src/features/render-graph-compute.ts +14 -5
- package/src/features/render-graph-contribution.ts +43 -63
- package/src/features/render-graph-raster.ts +11 -6
- package/src/features/render-graph-resources.ts +25 -23
- package/src/features/targets.ts +8 -21
- package/src/features/types.ts +39 -227
- package/src/features/vocabulary.ts +24 -0
- package/src/fullscreen-post-process-pass.ts +14 -57
- package/src/glyph-text-layout-system.ts +70 -96
- package/src/gpu-driven/batch-topology.ts +24 -202
- package/src/gpu-driven/production-raster.ts +93 -1108
- package/src/gpu-driven/view-gpu.ts +46 -192
- package/src/gpu-resource.ts +4 -4
- package/src/gpu-scene-schema.ts +11 -99
- package/src/gpu-scene.ts +231 -364
- package/src/hdrp-buffers.ts +12 -221
- package/src/ibl/IblPipelineCache.ts +471 -711
- package/src/ibl/skylight-bind-group.ts +4 -4
- package/src/index.ts +58 -217
- package/src/inspection-types.ts +76 -0
- package/src/instance-buffer-cache.ts +1 -29
- package/src/internal.ts +6 -85
- package/src/lifecycle.ts +64 -19
- package/src/materials.ts +7 -29
- package/src/mesh-material-bindings.ts +0 -1
- package/src/pbr-pipeline.ts +434 -53
- package/src/{urp-pipeline.ts → pipeline/standard-forward-lane.ts} +38 -149
- package/src/{hdrp-pipeline.ts → pipeline/standard-pipeline.ts} +221 -191
- package/src/pipeline/standard-profile.ts +65 -0
- package/src/pipeline-builder.ts +60 -64
- package/src/pipeline-spec-types.ts +28 -0
- package/src/pipeline-spec.ts +72 -609
- package/src/plugin.ts +3 -75
- package/src/post-process-errors.ts +31 -33
- package/src/prepare/prepared-graphics-resolver.ts +5 -4
- package/src/record/__tests__/material-slot-plan.unit.test.ts +1 -33
- package/src/record/__tests__/typed-frame-graph-plan.unit.test.ts +41 -0
- package/src/record/__tests__/video-texture-view.unit.test.ts +1 -1
- package/src/record/frame-lighting.ts +74 -195
- package/src/record/frame-snapshot.ts +45 -60
- package/src/record/frame-targets.ts +8 -243
- package/src/record/frame.ts +509 -796
- package/src/record/helpers.ts +6 -11
- package/src/record/main-pass-geometry.ts +106 -147
- package/src/record/main-pass-material.ts +517 -190
- package/src/record/main-pass-sprite-draws.ts +198 -117
- package/src/record/main-pass.ts +162 -143
- package/src/record/mesh-ssbo.ts +517 -38
- package/src/record/render-context.ts +364 -0
- package/src/record/shadow-pass.ts +138 -1838
- package/src/record/skybox-post-pass.ts +12 -14
- package/src/record/typed-frame-graph.ts +215 -254
- package/src/record/view-ubo.ts +6 -37
- package/src/render-contract.ts +571 -0
- package/src/render-data.ts +3 -3
- package/src/render-graph-primitives.ts +76 -851
- package/src/render-pipeline.ts +104 -188
- package/src/render-system-extract.ts +1048 -1729
- package/src/render-system.ts +330 -1957
- package/src/scene/render-scene-types.ts +64 -0
- package/src/scene/render-scene.ts +1032 -0
- package/src/scene-instances/post-spawn-resolve-joints.ts +4 -7
- package/src/ssao-buffers.ts +167 -8
- package/src/systems/skin-palette-allocator.ts +21 -64
- package/src/systems/skin-palette-types.ts +14 -0
- package/src/systems/transparent-sort-config.ts +25 -3
- package/src/tilemap-chunk-extract-system.ts +53 -70
- package/src/typed-render-graph-primitives.ts +35 -24
- package/src/typed-shadow-passes.ts +26 -56
- package/dist/__tests__/analytic-sky-contract.test.d.ts +0 -2
- package/dist/__tests__/analytic-sky-contract.test.d.ts.map +0 -1
- package/dist/__tests__/analytic-sky-falsify.test.d.ts +0 -2
- package/dist/__tests__/analytic-sky-falsify.test.d.ts.map +0 -1
- package/dist/__tests__/assets-runtime-handoff.integration.test.d.ts +0 -2
- package/dist/__tests__/assets-runtime-handoff.integration.test.d.ts.map +0 -1
- package/dist/__tests__/backend-selection.integration.test.d.ts +0 -2
- package/dist/__tests__/backend-selection.integration.test.d.ts.map +0 -1
- package/dist/__tests__/camera-temporal.test-d.d.ts +0 -2
- package/dist/__tests__/camera-temporal.test-d.d.ts.map +0 -1
- package/dist/__tests__/camera-temporal.test.d.ts +0 -2
- package/dist/__tests__/camera-temporal.test.d.ts.map +0 -1
- package/dist/__tests__/directional-shadow-probe-atlas-layout.unit.test.d.ts +0 -2
- package/dist/__tests__/directional-shadow-probe-atlas-layout.unit.test.d.ts.map +0 -1
- package/dist/__tests__/environment-inspection.test.d.ts +0 -2
- package/dist/__tests__/environment-inspection.test.d.ts.map +0 -1
- package/dist/__tests__/fog-ai-user.fixture.d.ts +0 -2
- package/dist/__tests__/fog-ai-user.fixture.d.ts.map +0 -1
- package/dist/__tests__/fog-custom-render-feature.fixture.d.ts +0 -16
- package/dist/__tests__/fog-custom-render-feature.fixture.d.ts.map +0 -1
- package/dist/__tests__/fog-custom-render-feature.integration.test.d.ts +0 -2
- package/dist/__tests__/fog-custom-render-feature.integration.test.d.ts.map +0 -1
- package/dist/__tests__/fog-inspection.integration.test.d.ts +0 -2
- package/dist/__tests__/fog-inspection.integration.test.d.ts.map +0 -1
- package/dist/__tests__/fog-owner-state.integration.test.d.ts +0 -2
- package/dist/__tests__/fog-owner-state.integration.test.d.ts.map +0 -1
- package/dist/__tests__/fog-pipeline-topology.integration.test.d.ts +0 -2
- package/dist/__tests__/fog-pipeline-topology.integration.test.d.ts.map +0 -1
- package/dist/__tests__/fog-public-surface.integration.test.d.ts +0 -2
- package/dist/__tests__/fog-public-surface.integration.test.d.ts.map +0 -1
- package/dist/__tests__/fog-ray-contract.integration.test.d.ts +0 -2
- package/dist/__tests__/fog-ray-contract.integration.test.d.ts.map +0 -1
- package/dist/__tests__/fog-source-absence.integration.test.d.ts +0 -2
- package/dist/__tests__/fog-source-absence.integration.test.d.ts.map +0 -1
- package/dist/__tests__/fog-temporal.integration.test.d.ts +0 -2
- package/dist/__tests__/fog-temporal.integration.test.d.ts.map +0 -1
- package/dist/__tests__/frame-chain.unit.test.d.ts +0 -2
- package/dist/__tests__/frame-chain.unit.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-scene-field-type-owner.test-d.d.ts +0 -2
- package/dist/__tests__/gpu-scene-field-type-owner.test-d.d.ts.map +0 -1
- package/dist/__tests__/hdrp-pipeline.unit.test.d.ts +0 -2
- package/dist/__tests__/hdrp-pipeline.unit.test.d.ts.map +0 -1
- package/dist/__tests__/ibl/ibl-fallback.unit.test.d.ts +0 -2
- package/dist/__tests__/ibl/ibl-fallback.unit.test.d.ts.map +0 -1
- package/dist/__tests__/material-derived-error-stop-draw.integration.test.d.ts +0 -2
- package/dist/__tests__/material-derived-error-stop-draw.integration.test.d.ts.map +0 -1
- package/dist/__tests__/material-derived-payload.integration.test.d.ts +0 -2
- package/dist/__tests__/material-derived-payload.integration.test.d.ts.map +0 -1
- package/dist/__tests__/materials.unit.test.d.ts +0 -2
- package/dist/__tests__/materials.unit.test.d.ts.map +0 -1
- package/dist/__tests__/param-schema-projection-census.unit.test.d.ts +0 -2
- package/dist/__tests__/param-schema-projection-census.unit.test.d.ts.map +0 -1
- package/dist/__tests__/persistent-render-scene.unit.test.d.ts +0 -2
- package/dist/__tests__/persistent-render-scene.unit.test.d.ts.map +0 -1
- package/dist/__tests__/pipeline-error-policy-owner.unit.test.d.ts +0 -2
- package/dist/__tests__/pipeline-error-policy-owner.unit.test.d.ts.map +0 -1
- package/dist/__tests__/pipeline-pass-trace.test.d.ts +0 -2
- package/dist/__tests__/pipeline-pass-trace.test.d.ts.map +0 -1
- package/dist/__tests__/pipeline-stage-owner.test-d.d.ts +0 -2
- package/dist/__tests__/pipeline-stage-owner.test-d.d.ts.map +0 -1
- package/dist/__tests__/plugin.test.d.ts +0 -2
- package/dist/__tests__/plugin.test.d.ts.map +0 -1
- package/dist/__tests__/prepared-graphics-backend-matrix.unit.test.d.ts +0 -2
- package/dist/__tests__/prepared-graphics-backend-matrix.unit.test.d.ts.map +0 -1
- package/dist/__tests__/prepared-graphics-resolver-recording.unit.test.d.ts +0 -2
- package/dist/__tests__/prepared-graphics-resolver-recording.unit.test.d.ts.map +0 -1
- package/dist/__tests__/public-pipeline-id.test-d.d.ts +0 -2
- package/dist/__tests__/public-pipeline-id.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-dispatch-membership.unit.test.d.ts +0 -2
- package/dist/__tests__/render-dispatch-membership.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-construction.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-construction.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-error-code-owner.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-error-code-owner.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-gpu-buffer-usage-owner.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-gpu-buffer-usage-owner.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-graph.integration.test.d.ts +0 -2
- package/dist/__tests__/render-feature-graph.integration.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-graphics-staging.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-graphics-staging.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-order.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-order.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-prepared-graphics-recording.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-prepared-graphics-recording.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-staging.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-staging.unit.test.d.ts.map +0 -1
- package/dist/__tests__/renderer-render-scene-public.test-d.d.ts +0 -2
- package/dist/__tests__/renderer-render-scene-public.test-d.d.ts.map +0 -1
- package/dist/__tests__/scene-temporal-coverage.unit.test.d.ts +0 -2
- package/dist/__tests__/scene-temporal-coverage.unit.test.d.ts.map +0 -1
- package/dist/__tests__/sun-snapshot-consumers.test.d.ts +0 -2
- package/dist/__tests__/sun-snapshot-consumers.test.d.ts.map +0 -1
- package/dist/__tests__/surface-backend-kind-owner.test-d.d.ts +0 -2
- package/dist/__tests__/surface-backend-kind-owner.test-d.d.ts.map +0 -1
- package/dist/__tests__/taa-history-store.unit.test.d.ts +0 -2
- package/dist/__tests__/taa-history-store.unit.test.d.ts.map +0 -1
- package/dist/__tests__/temporal-frame-transaction.integration.test.d.ts +0 -2
- package/dist/__tests__/temporal-frame-transaction.integration.test.d.ts.map +0 -1
- package/dist/__tests__/temporal-inspection.unit.test.d.ts +0 -2
- package/dist/__tests__/temporal-inspection.unit.test.d.ts.map +0 -1
- package/dist/assets/__tests__/asset-decoders.unit.test.d.ts +0 -2
- package/dist/assets/__tests__/asset-decoders.unit.test.d.ts.map +0 -1
- package/dist/assets/__tests__/mipmap-generator.unit.test.d.ts +0 -2
- package/dist/assets/__tests__/mipmap-generator.unit.test.d.ts.map +0 -1
- package/dist/assets/__tests__/render-asset-port.unit.test.d.ts +0 -2
- package/dist/assets/__tests__/render-asset-port.unit.test.d.ts.map +0 -1
- package/dist/assets/__tests__/resolve-render-asset.unit.test.d.ts +0 -2
- package/dist/assets/__tests__/resolve-render-asset.unit.test.d.ts.map +0 -1
- package/dist/chunk-DJIMFYX6.mjs +0 -1439
- package/dist/chunk-DJIMFYX6.mjs.map +0 -1
- package/dist/chunk-F2SIOCRM.mjs +0 -7423
- package/dist/chunk-F2SIOCRM.mjs.map +0 -1
- package/dist/chunk-JMSB7AR4.mjs +0 -3
- package/dist/chunk-JMSB7AR4.mjs.map +0 -1
- package/dist/chunk-KHI6K4C6.mjs +0 -659
- package/dist/chunk-KHI6K4C6.mjs.map +0 -1
- package/dist/chunk-PORZOL2V.mjs +0 -569
- package/dist/chunk-PORZOL2V.mjs.map +0 -1
- package/dist/chunk-UOJGMDGP.mjs +0 -29913
- package/dist/chunk-UOJGMDGP.mjs.map +0 -1
- package/dist/components/__tests__/atmosphere-red.test.d.ts +0 -2
- package/dist/components/__tests__/atmosphere-red.test.d.ts.map +0 -1
- package/dist/components/__tests__/atmosphere.test.d.ts +0 -2
- package/dist/components/__tests__/atmosphere.test.d.ts.map +0 -1
- package/dist/components/__tests__/fog.test-d.d.ts +0 -2
- package/dist/components/__tests__/fog.test-d.d.ts.map +0 -1
- package/dist/components/__tests__/fog.test.d.ts +0 -2
- package/dist/components/__tests__/fog.test.d.ts.map +0 -1
- package/dist/components/atmosphere.d.ts +0 -18
- package/dist/components/atmosphere.d.ts.map +0 -1
- package/dist/components/environment.d.ts +0 -115
- package/dist/components/environment.d.ts.map +0 -1
- package/dist/deferred-lighting.d.ts +0 -13
- package/dist/deferred-lighting.d.ts.map +0 -1
- package/dist/dynamic-texture-store.d.ts +0 -42
- package/dist/dynamic-texture-store.d.ts.map +0 -1
- package/dist/environment/__tests__/failure-injection.test.d.ts +0 -2
- package/dist/environment/__tests__/failure-injection.test.d.ts.map +0 -1
- package/dist/environment/__tests__/generation-red.test.d.ts +0 -2
- package/dist/environment/__tests__/generation-red.test.d.ts.map +0 -1
- package/dist/environment/__tests__/generation.test.d.ts +0 -2
- package/dist/environment/__tests__/generation.test.d.ts.map +0 -1
- package/dist/environment/__tests__/graph-transaction.test.d.ts +0 -2
- package/dist/environment/__tests__/graph-transaction.test.d.ts.map +0 -1
- package/dist/environment/__tests__/inspection-red.test.d.ts +0 -2
- package/dist/environment/__tests__/inspection-red.test.d.ts.map +0 -1
- package/dist/environment/__tests__/lifecycle-evidence.test.d.ts +0 -2
- package/dist/environment/__tests__/lifecycle-evidence.test.d.ts.map +0 -1
- package/dist/environment/__tests__/pipeline-topology.test.d.ts +0 -2
- package/dist/environment/__tests__/pipeline-topology.test.d.ts.map +0 -1
- package/dist/environment/__tests__/readiness.test.d.ts +0 -2
- package/dist/environment/__tests__/readiness.test.d.ts.map +0 -1
- package/dist/environment/__tests__/recovery.test.d.ts +0 -2
- package/dist/environment/__tests__/recovery.test.d.ts.map +0 -1
- package/dist/environment/__tests__/resize-dispose.test.d.ts +0 -2
- package/dist/environment/__tests__/resize-dispose.test.d.ts.map +0 -1
- package/dist/environment/__tests__/signature-red.test.d.ts +0 -2
- package/dist/environment/__tests__/signature-red.test.d.ts.map +0 -1
- package/dist/environment/__tests__/signature.test.d.ts +0 -2
- package/dist/environment/__tests__/signature.test.d.ts.map +0 -1
- package/dist/environment/descriptors.d.ts +0 -2
- package/dist/environment/descriptors.d.ts.map +0 -1
- package/dist/environment/extracted-environment.d.ts +0 -53
- package/dist/environment/extracted-environment.d.ts.map +0 -1
- package/dist/environment/generation.d.ts +0 -62
- package/dist/environment/generation.d.ts.map +0 -1
- package/dist/environment/gpu-bundle.d.ts +0 -23
- package/dist/environment/gpu-bundle.d.ts.map +0 -1
- package/dist/environment/graph.d.ts +0 -108
- package/dist/environment/graph.d.ts.map +0 -1
- package/dist/environment/inspection.d.ts +0 -48
- package/dist/environment/inspection.d.ts.map +0 -1
- package/dist/environment/lifecycle.d.ts +0 -22
- package/dist/environment/lifecycle.d.ts.map +0 -1
- package/dist/environment/readiness.d.ts +0 -29
- package/dist/environment/readiness.d.ts.map +0 -1
- package/dist/environment/signature.d.ts +0 -70
- package/dist/environment/signature.d.ts.map +0 -1
- package/dist/extract/__tests__/directional-csm-domain.unit.test.d.ts +0 -2
- package/dist/extract/__tests__/directional-csm-domain.unit.test.d.ts.map +0 -1
- package/dist/extract/__tests__/environment-source.test.d.ts +0 -2
- package/dist/extract/__tests__/environment-source.test.d.ts.map +0 -1
- package/dist/extract/__tests__/schema-readers.unit.test.d.ts +0 -2
- package/dist/extract/__tests__/schema-readers.unit.test.d.ts.map +0 -1
- package/dist/extract/directional-csm.d.ts +0 -129
- package/dist/extract/directional-csm.d.ts.map +0 -1
- package/dist/extract/index.d.ts +0 -5
- package/dist/extract/index.d.ts.map +0 -1
- package/dist/extract/material-interface.d.ts +0 -56
- package/dist/extract/material-interface.d.ts.map +0 -1
- package/dist/extract/schema-readers.d.ts +0 -20
- package/dist/extract/schema-readers.d.ts.map +0 -1
- package/dist/features/graph-contribution.d.ts +0 -64
- package/dist/features/graph-contribution.d.ts.map +0 -1
- package/dist/features/index.d.ts +0 -21
- package/dist/features/index.d.ts.map +0 -1
- package/dist/features/morph/index.d.ts +0 -3
- package/dist/features/morph/index.d.ts.map +0 -1
- package/dist/features/morph/morph-bounds.d.ts +0 -42
- package/dist/features/morph/morph-bounds.d.ts.map +0 -1
- package/dist/features/scene-temporal.d.ts +0 -45
- package/dist/features/scene-temporal.d.ts.map +0 -1
- package/dist/features/taa-resolve.d.ts +0 -21
- package/dist/features/taa-resolve.d.ts.map +0 -1
- package/dist/frame-chain.d.ts +0 -14
- package/dist/frame-chain.d.ts.map +0 -1
- package/dist/gpu-driven/view-reference.d.ts.map +0 -1
- package/dist/gpu-resource-store.d.ts.map +0 -1
- package/dist/hdrp-cluster-membership.d.ts +0 -2
- package/dist/hdrp-cluster-membership.d.ts.map +0 -1
- package/dist/hdrp-pipeline.d.ts +0 -36
- package/dist/hdrp-pipeline.d.ts.map +0 -1
- package/dist/ibl/cubemap-projection.d.ts +0 -23
- package/dist/ibl/cubemap-projection.d.ts.map +0 -1
- package/dist/ibl/face-uniforms.d.ts +0 -65
- package/dist/ibl/face-uniforms.d.ts.map +0 -1
- package/dist/mesh-update-errors.d.ts +0 -71
- package/dist/mesh-update-errors.d.ts.map +0 -1
- package/dist/mipmap-generator.d.ts +0 -39
- package/dist/mipmap-generator.d.ts.map +0 -1
- package/dist/param-schema-projection-census.d.ts +0 -18
- package/dist/param-schema-projection-census.d.ts.map +0 -1
- package/dist/persistent-render-scene.d.ts +0 -158
- package/dist/persistent-render-scene.d.ts.map +0 -1
- package/dist/pipeline/index.d.ts +0 -11
- package/dist/pipeline/index.d.ts.map +0 -1
- package/dist/pipeline-errors.d.ts +0 -110
- package/dist/pipeline-errors.d.ts.map +0 -1
- package/dist/prepare/__tests__/schema-readers.unit.test.d.ts +0 -2
- package/dist/prepare/__tests__/schema-readers.unit.test.d.ts.map +0 -1
- package/dist/prepare/index.d.ts +0 -4
- package/dist/prepare/index.d.ts.map +0 -1
- package/dist/prepare/schema-readers.d.ts +0 -11
- package/dist/prepare/schema-readers.d.ts.map +0 -1
- package/dist/record/__tests__/environment-record.test.d.ts +0 -2
- package/dist/record/__tests__/environment-record.test.d.ts.map +0 -1
- package/dist/record/__tests__/frame-targets.unit.test.d.ts +0 -2
- package/dist/record/__tests__/frame-targets.unit.test.d.ts.map +0 -1
- package/dist/record/__tests__/membership-timing.unit.test.d.ts +0 -2
- package/dist/record/__tests__/membership-timing.unit.test.d.ts.map +0 -1
- package/dist/record/__tests__/render-submission.integration.test.d.ts +0 -2
- package/dist/record/__tests__/render-submission.integration.test.d.ts.map +0 -1
- package/dist/record/__tests__/render-submission.perf.test.d.ts +0 -2
- package/dist/record/__tests__/render-submission.perf.test.d.ts.map +0 -1
- package/dist/record/__tests__/shadow-submit-mode.unit.test.d.ts +0 -2
- package/dist/record/__tests__/shadow-submit-mode.unit.test.d.ts.map +0 -1
- package/dist/record/__tests__/view-ubo-layout.unit.test.d.ts +0 -2
- package/dist/record/__tests__/view-ubo-layout.unit.test.d.ts.map +0 -1
- package/dist/record/frame-observation.d.ts +0 -38
- package/dist/record/frame-observation.d.ts.map +0 -1
- package/dist/record/index.d.ts +0 -15
- package/dist/record/index.d.ts.map +0 -1
- package/dist/record/main-pass-skin.d.ts +0 -46
- package/dist/record/main-pass-skin.d.ts.map +0 -1
- package/dist/record/main-pass-sprite.d.ts +0 -69
- package/dist/record/main-pass-sprite.d.ts.map +0 -1
- package/dist/record/material-payload.d.ts +0 -43
- package/dist/record/material-payload.d.ts.map +0 -1
- package/dist/record/material-slot-plan.d.ts +0 -26
- package/dist/record/material-slot-plan.d.ts.map +0 -1
- package/dist/record/membership-timing.d.ts +0 -232
- package/dist/record/membership-timing.d.ts.map +0 -1
- package/dist/record/shadow-caster-uniform.d.ts +0 -8
- package/dist/record/shadow-caster-uniform.d.ts.map +0 -1
- package/dist/record/shadow-submit-mode.d.ts +0 -66
- package/dist/record/shadow-submit-mode.d.ts.map +0 -1
- package/dist/render-dispatch-membership.d.ts +0 -47
- package/dist/render-dispatch-membership.d.ts.map +0 -1
- package/dist/render-pipeline-context.d.ts +0 -289
- package/dist/render-pipeline-context.d.ts.map +0 -1
- package/dist/render-pipeline-target.d.ts +0 -16
- package/dist/render-pipeline-target.d.ts.map +0 -1
- package/dist/render-scene-projection.d.ts +0 -174
- package/dist/render-scene-projection.d.ts.map +0 -1
- package/dist/render-system-fold.d.ts +0 -266
- package/dist/render-system-fold.d.ts.map +0 -1
- package/dist/renderer/asset-service.d.ts +0 -10
- package/dist/renderer/asset-service.d.ts.map +0 -1
- package/dist/renderer/backend-selection.d.ts.map +0 -1
- package/dist/renderer/environment-classify.d.ts +0 -6
- package/dist/renderer/environment-classify.d.ts.map +0 -1
- package/dist/renderer/environment-error.d.ts +0 -13
- package/dist/renderer/environment-error.d.ts.map +0 -1
- package/dist/renderer/material/pipeline-projection.d.ts +0 -91
- package/dist/renderer/material/pipeline-projection.d.ts.map +0 -1
- package/dist/renderer/renderer-factory.d.ts +0 -289
- package/dist/renderer/renderer-factory.d.ts.map +0 -1
- package/dist/renderer.d.ts +0 -771
- package/dist/renderer.d.ts.map +0 -1
- package/dist/scene-utils/collect-subtree.d.ts +0 -11
- package/dist/scene-utils/collect-subtree.d.ts.map +0 -1
- package/dist/ssao-data.d.ts +0 -34
- package/dist/ssao-data.d.ts.map +0 -1
- package/dist/surface-format.d.ts +0 -10
- package/dist/surface-format.d.ts.map +0 -1
- package/dist/taa-history-store.d.ts +0 -88
- package/dist/taa-history-store.d.ts.map +0 -1
- package/dist/temporal-coverage.d.ts +0 -35
- package/dist/temporal-coverage.d.ts.map +0 -1
- package/dist/temporal-frame-transaction.d.ts +0 -92
- package/dist/temporal-frame-transaction.d.ts.map +0 -1
- package/dist/temporal-inspection.d.ts +0 -57
- package/dist/temporal-inspection.d.ts.map +0 -1
- package/dist/temporal-view.d.ts +0 -43
- package/dist/temporal-view.d.ts.map +0 -1
- package/dist/tilemap/resolve-tileset-runtime.d.ts +0 -23
- package/dist/tilemap/resolve-tileset-runtime.d.ts.map +0 -1
- package/dist/urp-pipeline.d.ts +0 -4
- package/dist/urp-pipeline.d.ts.map +0 -1
- package/src/__tests__/analytic-sky-contract.test.ts +0 -27
- package/src/__tests__/analytic-sky-falsify-carriers.mjs +0 -43
- package/src/__tests__/analytic-sky-falsify.test.ts +0 -94
- package/src/__tests__/assets-runtime-handoff.integration.test.ts +0 -36
- package/src/__tests__/backend-selection.integration.test.ts +0 -11
- package/src/__tests__/camera-temporal.test-d.ts +0 -8
- package/src/__tests__/camera-temporal.test.ts +0 -188
- package/src/__tests__/directional-shadow-probe-atlas-layout.unit.test.ts +0 -18
- package/src/__tests__/environment-inspection.test.ts +0 -45
- package/src/__tests__/fog-ai-user.fixture.ts +0 -350
- package/src/__tests__/fog-custom-render-feature.fixture.ts +0 -33
- package/src/__tests__/fog-custom-render-feature.integration.test.ts +0 -76
- package/src/__tests__/fog-inspection.integration.test.ts +0 -127
- package/src/__tests__/fog-owner-state.integration.test.ts +0 -112
- package/src/__tests__/fog-pipeline-topology.integration.test.ts +0 -93
- package/src/__tests__/fog-public-surface.integration.test.ts +0 -60
- package/src/__tests__/fog-ray-contract.integration.test.ts +0 -73
- package/src/__tests__/fog-source-absence.integration.test.ts +0 -51
- package/src/__tests__/fog-temporal.integration.test.ts +0 -115
- package/src/__tests__/frame-chain.unit.test.ts +0 -26
- package/src/__tests__/gpu-scene-field-type-owner.test-d.ts +0 -27
- package/src/__tests__/hdrp-pipeline.unit.test.ts +0 -100
- package/src/__tests__/ibl/ibl-fallback.unit.test.ts +0 -23
- package/src/__tests__/material-derived-error-stop-draw.integration.test.ts +0 -69
- package/src/__tests__/material-derived-payload.integration.test.ts +0 -164
- package/src/__tests__/materials.unit.test.ts +0 -25
- package/src/__tests__/param-schema-projection-census.unit.test.ts +0 -40
- package/src/__tests__/persistent-render-scene.unit.test.ts +0 -1311
- package/src/__tests__/pipeline-error-policy-owner.unit.test.ts +0 -167
- package/src/__tests__/pipeline-pass-trace.test.ts +0 -92
- package/src/__tests__/pipeline-stage-owner.test-d.ts +0 -13
- package/src/__tests__/plugin.test.ts +0 -25
- package/src/__tests__/prepared-graphics-backend-matrix.unit.test.ts +0 -129
- package/src/__tests__/prepared-graphics-resolver-recording.unit.test.ts +0 -180
- package/src/__tests__/public-pipeline-id.test-d.ts +0 -6
- package/src/__tests__/render-dispatch-membership.unit.test.ts +0 -117
- package/src/__tests__/render-feature-construction.unit.test.ts +0 -124
- package/src/__tests__/render-feature-error-code-owner.test-d.ts +0 -27
- package/src/__tests__/render-feature-gpu-buffer-usage-owner.test-d.ts +0 -46
- package/src/__tests__/render-feature-graph.integration.test.ts +0 -205
- package/src/__tests__/render-feature-graphics-staging.unit.test.ts +0 -200
- package/src/__tests__/render-feature-order.unit.test.ts +0 -66
- package/src/__tests__/render-feature-prepared-graphics-recording.unit.test.ts +0 -107
- package/src/__tests__/render-feature-staging.unit.test.ts +0 -94
- package/src/__tests__/renderer-render-scene-public.test-d.ts +0 -27
- package/src/__tests__/scene-temporal-coverage.unit.test.ts +0 -259
- package/src/__tests__/sun-snapshot-consumers.test.ts +0 -35
- package/src/__tests__/surface-backend-kind-owner.test-d.ts +0 -42
- package/src/__tests__/taa-history-store.unit.test.ts +0 -196
- package/src/__tests__/temporal-frame-transaction.integration.test.ts +0 -537
- package/src/__tests__/temporal-inspection.unit.test.ts +0 -138
- package/src/assets/__tests__/asset-decoders.unit.test.ts +0 -92
- package/src/assets/__tests__/mipmap-generator.unit.test.ts +0 -52
- package/src/assets/__tests__/render-asset-port.unit.test.ts +0 -54
- package/src/assets/__tests__/resolve-render-asset.unit.test.ts +0 -47
- package/src/components/__tests__/atmosphere-red.test.ts +0 -51
- package/src/components/__tests__/atmosphere.test.ts +0 -79
- package/src/components/__tests__/fog.test-d.ts +0 -49
- package/src/components/__tests__/fog.test.ts +0 -60
- package/src/components/atmosphere.ts +0 -64
- package/src/deferred-lighting.ts +0 -92
- package/src/dynamic-texture-store.ts +0 -111
- package/src/environment/README.md +0 -76
- package/src/environment/__tests__/failure-injection.test.ts +0 -50
- package/src/environment/__tests__/generation-red.test.ts +0 -64
- package/src/environment/__tests__/generation.test.ts +0 -37
- package/src/environment/__tests__/graph-transaction.test.ts +0 -85
- package/src/environment/__tests__/inspection-red.test.ts +0 -53
- package/src/environment/__tests__/lifecycle-evidence.test.ts +0 -40
- package/src/environment/__tests__/pipeline-topology.test.ts +0 -33
- package/src/environment/__tests__/readiness.test.ts +0 -42
- package/src/environment/__tests__/recovery.test.ts +0 -62
- package/src/environment/__tests__/resize-dispose.test.ts +0 -30
- package/src/environment/__tests__/signature-red.test.ts +0 -45
- package/src/environment/__tests__/signature.test.ts +0 -60
- package/src/environment/descriptors.ts +0 -7
- package/src/environment/extracted-environment.ts +0 -239
- package/src/environment/generation.ts +0 -158
- package/src/environment/gpu-bundle.ts +0 -144
- package/src/environment/graph.ts +0 -588
- package/src/environment/inspection.ts +0 -107
- package/src/environment/lifecycle.ts +0 -124
- package/src/environment/readiness.ts +0 -76
- package/src/environment/signature.ts +0 -185
- package/src/extract/__tests__/directional-csm-domain.unit.test.ts +0 -391
- package/src/extract/__tests__/environment-source.test.ts +0 -105
- package/src/extract/__tests__/schema-readers.unit.test.ts +0 -16
- package/src/extract/directional-csm.ts +0 -959
- package/src/extract/index.ts +0 -10
- package/src/extract/material-interface.ts +0 -604
- package/src/extract/schema-readers.ts +0 -27
- package/src/features/graph-contribution.ts +0 -577
- package/src/features/index.ts +0 -100
- package/src/features/morph/index.ts +0 -24
- package/src/features/morph/morph-bounds.ts +0 -123
- package/src/features/scene-temporal.ts +0 -274
- package/src/features/taa-resolve.ts +0 -244
- package/src/frame-chain.ts +0 -21
- package/src/hdrp-cluster-membership.ts +0 -70
- package/src/ibl/cubemap-projection.ts +0 -60
- package/src/ibl/face-uniforms.ts +0 -150
- package/src/mesh-update-errors.ts +0 -113
- package/src/mipmap-generator.ts +0 -244
- package/src/param-schema-projection-census.ts +0 -73
- package/src/persistent-render-scene.ts +0 -1752
- package/src/pipeline/index.ts +0 -40
- package/src/pipeline-errors.ts +0 -172
- package/src/prepare/__tests__/schema-readers.unit.test.ts +0 -16
- package/src/prepare/index.ts +0 -8
- package/src/prepare/schema-readers.ts +0 -20
- package/src/record/__tests__/environment-record.test.ts +0 -35
- package/src/record/__tests__/frame-targets.unit.test.ts +0 -54
- package/src/record/__tests__/membership-timing.unit.test.ts +0 -524
- package/src/record/__tests__/render-submission.integration.test.ts +0 -76
- package/src/record/__tests__/render-submission.perf.test.ts +0 -141
- package/src/record/__tests__/shadow-submit-mode.unit.test.ts +0 -88
- package/src/record/__tests__/view-ubo-layout.unit.test.ts +0 -101
- package/src/record/frame-observation.ts +0 -122
- package/src/record/index.ts +0 -15
- package/src/record/main-pass-skin.ts +0 -51
- package/src/record/main-pass-sprite.ts +0 -166
- package/src/record/material-payload.ts +0 -292
- package/src/record/material-slot-plan.ts +0 -68
- package/src/record/membership-timing.ts +0 -1012
- package/src/record/shadow-caster-uniform.ts +0 -37
- package/src/record/shadow-submit-mode.ts +0 -277
- package/src/render-dispatch-membership.ts +0 -155
- package/src/render-pipeline-context.ts +0 -332
- package/src/render-pipeline-target.ts +0 -96
- package/src/render-scene-projection.ts +0 -1738
- package/src/render-system-fold.ts +0 -531
- package/src/renderer/asset-service.ts +0 -32
- package/src/renderer/backend-selection.ts +0 -121
- package/src/renderer/environment-classify.ts +0 -30
- package/src/renderer/environment-error.ts +0 -19
- package/src/renderer/material/pipeline-projection.ts +0 -140
- package/src/renderer.ts +0 -940
- package/src/scene-utils/collect-subtree.ts +0 -40
- package/src/ssao-data.ts +0 -106
- package/src/surface-format.ts +0 -37
- package/src/taa-history-store.ts +0 -429
- package/src/temporal-coverage.ts +0 -106
- package/src/temporal-frame-transaction.ts +0 -301
- package/src/temporal-inspection.ts +0 -194
- package/src/temporal-view.ts +0 -174
- package/src/tilemap/resolve-tileset-runtime.ts +0 -72
|
@@ -24,10 +24,6 @@ import {
|
|
|
24
24
|
GPU_BUFFER_USAGE_UNIFORM,
|
|
25
25
|
} from '../gpu-usage';
|
|
26
26
|
import type { PipelineBuilderShaderModuleFactory } from '../pipeline-builder';
|
|
27
|
-
import type {
|
|
28
|
-
RenderVisibilityViewDescriptor,
|
|
29
|
-
RenderVisibilityViewKind,
|
|
30
|
-
} from '../render-system-extract';
|
|
31
27
|
import type { SubmissionPlan } from './batch-topology';
|
|
32
28
|
|
|
33
29
|
const COMPUTE_STAGE = 0x4;
|
|
@@ -212,173 +208,6 @@ function nextCapacity(required: number): number {
|
|
|
212
208
|
return 2 ** Math.ceil(Math.log2(Math.max(1, required)));
|
|
213
209
|
}
|
|
214
210
|
|
|
215
|
-
export interface CpuVisibilityCandidate {
|
|
216
|
-
/** Stable projection slot; generation disambiguates slot reuse. */
|
|
217
|
-
readonly stableId: number;
|
|
218
|
-
readonly generation: number;
|
|
219
|
-
/** Candidate-domain index consumed by CascadeVolumeSet membership. */
|
|
220
|
-
readonly candidateIndex: number | undefined;
|
|
221
|
-
readonly worldAabb: Float32Array | undefined;
|
|
222
|
-
readonly casterEligible: boolean;
|
|
223
|
-
readonly batchId: number | undefined;
|
|
224
|
-
readonly instanceOrdinal: number | undefined;
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
export interface CpuVisibleItem {
|
|
228
|
-
readonly stableId: number;
|
|
229
|
-
readonly generation: number;
|
|
230
|
-
readonly candidateIndex: number | undefined;
|
|
231
|
-
readonly batchId: number | undefined;
|
|
232
|
-
readonly instanceOrdinal: number | undefined;
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
export interface CpuVisibilityBatchSpan {
|
|
236
|
-
readonly batchId: number;
|
|
237
|
-
readonly first: number;
|
|
238
|
-
readonly count: number;
|
|
239
|
-
readonly capacity: number;
|
|
240
|
-
readonly overflow: boolean;
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
export interface CpuVisibilityViewResult {
|
|
244
|
-
readonly viewId: string;
|
|
245
|
-
readonly kind: RenderVisibilityViewKind;
|
|
246
|
-
readonly cascadeIndex: number | undefined;
|
|
247
|
-
readonly stableIds: readonly number[];
|
|
248
|
-
readonly generations: readonly number[];
|
|
249
|
-
readonly compactVisible: readonly CpuVisibleItem[];
|
|
250
|
-
readonly batchSpans: readonly CpuVisibilityBatchSpan[];
|
|
251
|
-
readonly capacity: number;
|
|
252
|
-
readonly overflow: boolean;
|
|
253
|
-
readonly volumeRevision: number | undefined;
|
|
254
|
-
readonly spatialIndexRevision: number | undefined;
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
export interface CpuVisibilityCascadeMaskEntry {
|
|
258
|
-
readonly stableId: number;
|
|
259
|
-
readonly generation: number;
|
|
260
|
-
/** Bit 0..2 corresponds to cascade 0..2. */
|
|
261
|
-
readonly cascadeMask: number;
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
export interface CpuMultiViewVisibilityResult {
|
|
265
|
-
readonly views: readonly CpuVisibilityViewResult[];
|
|
266
|
-
readonly cascadeMasks: readonly CpuVisibilityCascadeMaskEntry[];
|
|
267
|
-
readonly spatialIndexRevision: number | undefined;
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
function aabbIntersectsPlanes(planes: Float32Array, aabb: Float32Array | undefined): boolean {
|
|
271
|
-
if (aabb === undefined || planes.length < 24) return true;
|
|
272
|
-
for (let planeIndex = 0; planeIndex < 6; planeIndex += 1) {
|
|
273
|
-
const offset = planeIndex * 4;
|
|
274
|
-
const normalX = planes[offset] ?? 0;
|
|
275
|
-
const normalY = planes[offset + 1] ?? 0;
|
|
276
|
-
const normalZ = planes[offset + 2] ?? 0;
|
|
277
|
-
const vertexX = normalX >= 0 ? (aabb[3] ?? 0) : (aabb[0] ?? 0);
|
|
278
|
-
const vertexY = normalY >= 0 ? (aabb[4] ?? 0) : (aabb[1] ?? 0);
|
|
279
|
-
const vertexZ = normalZ >= 0 ? (aabb[5] ?? 0) : (aabb[2] ?? 0);
|
|
280
|
-
if (normalX * vertexX + normalY * vertexY + normalZ * vertexZ + (planes[offset + 3] ?? 0) < 0) {
|
|
281
|
-
return false;
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
return true;
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
/**
|
|
288
|
-
* CPU production executor for the shared main/CSM visibility contract.
|
|
289
|
-
*
|
|
290
|
-
* The executor consumes stable Scene Fact candidates and memberships already
|
|
291
|
-
* selected by CascadeVolumeSet. It deliberately keeps the main list separate
|
|
292
|
-
* from the caster domain, so a main-view cull cannot remove a shadow caster.
|
|
293
|
-
*/
|
|
294
|
-
export function executeCpuMultiViewVisibility(input: {
|
|
295
|
-
readonly views: readonly RenderVisibilityViewDescriptor[];
|
|
296
|
-
readonly candidates: readonly CpuVisibilityCandidate[];
|
|
297
|
-
/** Broadphase-selected domains keyed by view. */
|
|
298
|
-
readonly candidatesByView?: ReadonlyMap<string, readonly CpuVisibilityCandidate[]>;
|
|
299
|
-
readonly capacityByView?: ReadonlyMap<string, number>;
|
|
300
|
-
readonly capacityByBatch?: ReadonlyMap<number, number>;
|
|
301
|
-
}): CpuMultiViewVisibilityResult {
|
|
302
|
-
const candidates = [...input.candidates].sort(
|
|
303
|
-
(left, right) => left.stableId - right.stableId || left.generation - right.generation,
|
|
304
|
-
);
|
|
305
|
-
const cascadeMaskByStableId = new Map<number, number>();
|
|
306
|
-
for (const view of input.views) {
|
|
307
|
-
if (view.kind !== 'cascade' || view.cascadeIndex === undefined) continue;
|
|
308
|
-
const domain = input.candidatesByView?.get(view.viewId) ?? candidates;
|
|
309
|
-
for (const candidate of domain) {
|
|
310
|
-
if (!view.casterCandidateIndices.has(candidate.candidateIndex ?? -1)) continue;
|
|
311
|
-
cascadeMaskByStableId.set(
|
|
312
|
-
candidate.stableId,
|
|
313
|
-
(cascadeMaskByStableId.get(candidate.stableId) ?? 0) | (1 << view.cascadeIndex),
|
|
314
|
-
);
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
const cascadeMasks = candidates.map((candidate) =>
|
|
318
|
-
Object.freeze({
|
|
319
|
-
stableId: candidate.stableId,
|
|
320
|
-
generation: candidate.generation,
|
|
321
|
-
cascadeMask: cascadeMaskByStableId.get(candidate.stableId) ?? 0,
|
|
322
|
-
}),
|
|
323
|
-
);
|
|
324
|
-
const views = input.views.map((view) => {
|
|
325
|
-
const domain = input.candidatesByView?.get(view.viewId) ?? candidates;
|
|
326
|
-
const visible = domain.filter((candidate) => {
|
|
327
|
-
if (view.kind === 'cascade') {
|
|
328
|
-
return (
|
|
329
|
-
candidate.casterEligible &&
|
|
330
|
-
view.casterCandidateIndices.has(candidate.candidateIndex ?? -1)
|
|
331
|
-
);
|
|
332
|
-
}
|
|
333
|
-
return aabbIntersectsPlanes(view.planes, candidate.worldAabb);
|
|
334
|
-
});
|
|
335
|
-
const capacity = Math.max(0, input.capacityByView?.get(view.viewId) ?? visible.length);
|
|
336
|
-
const compactVisible = visible.slice(0, capacity).map((candidate) => ({
|
|
337
|
-
stableId: candidate.stableId,
|
|
338
|
-
generation: candidate.generation,
|
|
339
|
-
candidateIndex: candidate.candidateIndex,
|
|
340
|
-
batchId: candidate.batchId,
|
|
341
|
-
instanceOrdinal: candidate.instanceOrdinal,
|
|
342
|
-
}));
|
|
343
|
-
const counts = new Map<number, number>();
|
|
344
|
-
for (const candidate of visible) {
|
|
345
|
-
if (candidate.batchId === undefined) continue;
|
|
346
|
-
counts.set(candidate.batchId, (counts.get(candidate.batchId) ?? 0) + 1);
|
|
347
|
-
}
|
|
348
|
-
const batchSpans: CpuVisibilityBatchSpan[] = [];
|
|
349
|
-
let first = 0;
|
|
350
|
-
for (const [batchId, count] of [...counts.entries()].sort(([left], [right]) => left - right)) {
|
|
351
|
-
const batchCapacity = Math.max(0, input.capacityByBatch?.get(batchId) ?? count);
|
|
352
|
-
batchSpans.push({
|
|
353
|
-
batchId,
|
|
354
|
-
first,
|
|
355
|
-
count: Math.min(count, batchCapacity),
|
|
356
|
-
capacity: batchCapacity,
|
|
357
|
-
overflow: count > batchCapacity,
|
|
358
|
-
});
|
|
359
|
-
first += Math.min(count, batchCapacity);
|
|
360
|
-
}
|
|
361
|
-
return Object.freeze({
|
|
362
|
-
viewId: view.viewId,
|
|
363
|
-
kind: view.kind,
|
|
364
|
-
cascadeIndex: view.cascadeIndex,
|
|
365
|
-
stableIds: Object.freeze(compactVisible.map((candidate) => candidate.stableId)),
|
|
366
|
-
generations: Object.freeze(compactVisible.map((candidate) => candidate.generation)),
|
|
367
|
-
compactVisible: Object.freeze(compactVisible),
|
|
368
|
-
batchSpans: Object.freeze(batchSpans),
|
|
369
|
-
capacity,
|
|
370
|
-
overflow: visible.length > capacity || batchSpans.some((span) => span.overflow),
|
|
371
|
-
volumeRevision: view.volumeRevision,
|
|
372
|
-
spatialIndexRevision: view.spatialIndexRevision,
|
|
373
|
-
});
|
|
374
|
-
});
|
|
375
|
-
return Object.freeze({
|
|
376
|
-
views: Object.freeze(views),
|
|
377
|
-
cascadeMasks: Object.freeze(cascadeMasks),
|
|
378
|
-
spatialIndexRevision: input.views[0]?.spatialIndexRevision,
|
|
379
|
-
});
|
|
380
|
-
}
|
|
381
|
-
|
|
382
211
|
function bufferBinding(buffer: Buffer): {
|
|
383
212
|
readonly kind: 'buffer';
|
|
384
213
|
readonly value: { buffer: Buffer };
|
|
@@ -388,6 +217,7 @@ function bufferBinding(buffer: Buffer): {
|
|
|
388
217
|
|
|
389
218
|
export class GpuDrivenView {
|
|
390
219
|
private buffers: ViewBuffers | undefined;
|
|
220
|
+
private supersededBuffers: ViewBuffers[] = [];
|
|
391
221
|
private bindGroup: BindGroup | undefined;
|
|
392
222
|
private candidateCapacity = 0;
|
|
393
223
|
private batchCapacity = 0;
|
|
@@ -635,7 +465,6 @@ export class GpuDrivenView {
|
|
|
635
465
|
|
|
636
466
|
addPasses<FrameCtx extends RenderGraphFrame>(
|
|
637
467
|
builder: RenderGraphBuilder<FrameCtx>,
|
|
638
|
-
labelPrefix = 'gpu-driven',
|
|
639
468
|
): Result<GpuDrivenViewGraphResources, RenderGraphError> {
|
|
640
469
|
const buffers = this.buffers;
|
|
641
470
|
const bindGroup = this.bindGroup;
|
|
@@ -655,80 +484,79 @@ export class GpuDrivenView {
|
|
|
655
484
|
}),
|
|
656
485
|
);
|
|
657
486
|
}
|
|
658
|
-
const scenePrefix = labelPrefix === 'gpu-driven' ? 'gpu-scene' : `${labelPrefix}.scene`;
|
|
659
487
|
const importBuffer = (name: string, buffer: Buffer, size: number, usage: number) =>
|
|
660
488
|
builder.importBuffer(name, { size, usage }, () => buffer);
|
|
661
489
|
const primitive = importBuffer(
|
|
662
|
-
|
|
490
|
+
'gpu-scene.primitive',
|
|
663
491
|
this.scenePrimitive as Buffer,
|
|
664
492
|
this.sceneCapacity * GPU_SCENE_LAYOUTS.primitive.stride,
|
|
665
493
|
GPU_BUFFER_USAGE_STORAGE | GPU_BUFFER_USAGE_COPY_DST | GPU_BUFFER_USAGE_COPY_SRC,
|
|
666
494
|
);
|
|
667
495
|
if (!primitive.ok) return primitive;
|
|
668
496
|
const transform = importBuffer(
|
|
669
|
-
|
|
497
|
+
'gpu-scene.transform',
|
|
670
498
|
this.sceneTransform as Buffer,
|
|
671
499
|
this.sceneCapacity * GPU_SCENE_LAYOUTS.transform.stride,
|
|
672
500
|
GPU_BUFFER_USAGE_STORAGE | GPU_BUFFER_USAGE_COPY_DST | GPU_BUFFER_USAGE_COPY_SRC,
|
|
673
501
|
);
|
|
674
502
|
if (!transform.ok) return transform;
|
|
675
503
|
const instance = importBuffer(
|
|
676
|
-
|
|
504
|
+
'gpu-scene.instance',
|
|
677
505
|
this.sceneInstance as Buffer,
|
|
678
506
|
this.sceneCapacity * GPU_SCENE_LAYOUTS.instance.stride,
|
|
679
507
|
GPU_BUFFER_USAGE_STORAGE | GPU_BUFFER_USAGE_COPY_DST | GPU_BUFFER_USAGE_COPY_SRC,
|
|
680
508
|
);
|
|
681
509
|
if (!instance.ok) return instance;
|
|
682
510
|
const material = importBuffer(
|
|
683
|
-
|
|
511
|
+
'gpu-scene.material',
|
|
684
512
|
this.sceneMaterial as Buffer,
|
|
685
513
|
this.sceneCapacity * GPU_SCENE_LAYOUTS.material.stride,
|
|
686
514
|
GPU_BUFFER_USAGE_STORAGE | GPU_BUFFER_USAGE_COPY_DST | GPU_BUFFER_USAGE_COPY_SRC,
|
|
687
515
|
);
|
|
688
516
|
if (!material.ok) return material;
|
|
689
517
|
const candidates = importBuffer(
|
|
690
|
-
|
|
518
|
+
'gpu-driven.candidates',
|
|
691
519
|
buffers.candidates,
|
|
692
520
|
this.candidateCapacity * CANDIDATE_STRIDE,
|
|
693
521
|
GPU_BUFFER_USAGE_STORAGE | GPU_BUFFER_USAGE_COPY_DST,
|
|
694
522
|
);
|
|
695
523
|
if (!candidates.ok) return candidates;
|
|
696
524
|
const batches = importBuffer(
|
|
697
|
-
|
|
525
|
+
'gpu-driven.batches',
|
|
698
526
|
buffers.batches,
|
|
699
527
|
this.batchCapacity * BATCH_STRIDE,
|
|
700
528
|
GPU_BUFFER_USAGE_STORAGE | GPU_BUFFER_USAGE_COPY_DST,
|
|
701
529
|
);
|
|
702
530
|
if (!batches.ok) return batches;
|
|
703
531
|
const view = importBuffer(
|
|
704
|
-
|
|
532
|
+
'gpu-driven.view',
|
|
705
533
|
buffers.view,
|
|
706
534
|
VIEW_BYTES,
|
|
707
535
|
GPU_BUFFER_USAGE_UNIFORM | GPU_BUFFER_USAGE_COPY_DST,
|
|
708
536
|
);
|
|
709
537
|
if (!view.ok) return view;
|
|
710
538
|
const counters = importBuffer(
|
|
711
|
-
|
|
539
|
+
'gpu-driven.counters',
|
|
712
540
|
buffers.counters,
|
|
713
541
|
this.batchCapacity * 8,
|
|
714
542
|
GPU_BUFFER_USAGE_STORAGE | GPU_BUFFER_USAGE_COPY_SRC,
|
|
715
543
|
);
|
|
716
544
|
if (!counters.ok) return counters;
|
|
717
545
|
const visible = importBuffer(
|
|
718
|
-
|
|
546
|
+
'gpu-driven.visible',
|
|
719
547
|
buffers.visible,
|
|
720
548
|
this.candidateCapacity * 8,
|
|
721
549
|
GPU_BUFFER_USAGE_STORAGE | GPU_BUFFER_USAGE_COPY_SRC,
|
|
722
550
|
);
|
|
723
551
|
if (!visible.ok) return visible;
|
|
724
552
|
const indirect = importBuffer(
|
|
725
|
-
|
|
553
|
+
'gpu-driven.indirect',
|
|
726
554
|
buffers.indirect,
|
|
727
555
|
this.indirectCapacity * 20,
|
|
728
556
|
GPU_BUFFER_USAGE_STORAGE | GPU_BUFFER_USAGE_INDIRECT | GPU_BUFFER_USAGE_COPY_SRC,
|
|
729
557
|
);
|
|
730
558
|
if (!indirect.ok) return indirect;
|
|
731
|
-
const reset = builder.addComputePass(
|
|
559
|
+
const reset = builder.addComputePass('gpu-driven.view-reset', {
|
|
732
560
|
accesses: [
|
|
733
561
|
{ resource: view.value, usage: 'uniform-read' },
|
|
734
562
|
{ resource: counters.value, usage: 'storage-read-write' },
|
|
@@ -740,7 +568,7 @@ export class GpuDrivenView {
|
|
|
740
568
|
},
|
|
741
569
|
});
|
|
742
570
|
if (!reset.ok) return reset;
|
|
743
|
-
const cull = builder.addComputePass(
|
|
571
|
+
const cull = builder.addComputePass('gpu-driven.frustum-compact', {
|
|
744
572
|
accesses: [
|
|
745
573
|
{ resource: primitive.value, usage: 'storage-read' },
|
|
746
574
|
{ resource: instance.value, usage: 'storage-read' },
|
|
@@ -757,7 +585,7 @@ export class GpuDrivenView {
|
|
|
757
585
|
},
|
|
758
586
|
});
|
|
759
587
|
if (!cull.ok) return cull;
|
|
760
|
-
const finalize = builder.addComputePass(
|
|
588
|
+
const finalize = builder.addComputePass('gpu-driven.finalize-indirect', {
|
|
761
589
|
accesses: [
|
|
762
590
|
{ resource: batches.value, usage: 'storage-read' },
|
|
763
591
|
{ resource: view.value, usage: 'uniform-read' },
|
|
@@ -783,9 +611,11 @@ export class GpuDrivenView {
|
|
|
783
611
|
}
|
|
784
612
|
|
|
785
613
|
dispose(): void {
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
614
|
+
const buffers = [
|
|
615
|
+
...this.supersededBuffers,
|
|
616
|
+
...(this.buffers === undefined ? [] : [this.buffers]),
|
|
617
|
+
];
|
|
618
|
+
this.supersededBuffers = [];
|
|
789
619
|
this.buffers = undefined;
|
|
790
620
|
this.bindGroup = undefined;
|
|
791
621
|
this.plan = undefined;
|
|
@@ -794,9 +624,23 @@ export class GpuDrivenView {
|
|
|
794
624
|
this.sceneTransform = undefined;
|
|
795
625
|
this.sceneMaterial = undefined;
|
|
796
626
|
this.sceneCapacity = 0;
|
|
627
|
+
this.destroyAfterSubmittedWork(buffers);
|
|
797
628
|
void this.pipelineLayout;
|
|
798
629
|
}
|
|
799
630
|
|
|
631
|
+
/**
|
|
632
|
+
* @internal
|
|
633
|
+
* Accept the current buffer generation after its typed graph compiles.
|
|
634
|
+
* Superseded imports stay alive while the last-known-good graph remains
|
|
635
|
+
* executable, then retire behind the queue fence only after promotion.
|
|
636
|
+
*/
|
|
637
|
+
_commitResourceReplacement(): void {
|
|
638
|
+
const buffers = this.supersededBuffers;
|
|
639
|
+
if (buffers.length === 0) return;
|
|
640
|
+
this.supersededBuffers = [];
|
|
641
|
+
this.destroyAfterSubmittedWork(buffers);
|
|
642
|
+
}
|
|
643
|
+
|
|
800
644
|
private rebuildBuffers(
|
|
801
645
|
candidateCapacity: number,
|
|
802
646
|
batchCapacity: number,
|
|
@@ -835,9 +679,7 @@ export class GpuDrivenView {
|
|
|
835
679
|
return result;
|
|
836
680
|
}
|
|
837
681
|
}
|
|
838
|
-
if (this.buffers !== undefined)
|
|
839
|
-
for (const buffer of Object.values(this.buffers)) this.device.destroyBuffer(buffer);
|
|
840
|
-
}
|
|
682
|
+
if (this.buffers !== undefined) this.supersededBuffers.push(this.buffers);
|
|
841
683
|
this.buffers = created as ViewBuffers;
|
|
842
684
|
this.candidateCapacity = nextCandidate;
|
|
843
685
|
this.batchCapacity = nextBatch;
|
|
@@ -846,4 +688,16 @@ export class GpuDrivenView {
|
|
|
846
688
|
this.bindGroup = undefined;
|
|
847
689
|
return ok(undefined);
|
|
848
690
|
}
|
|
691
|
+
|
|
692
|
+
private destroyAfterSubmittedWork(generations: readonly ViewBuffers[]): void {
|
|
693
|
+
if (generations.length === 0) return;
|
|
694
|
+
const release = (): void => {
|
|
695
|
+
for (const buffers of generations) {
|
|
696
|
+
for (const buffer of Object.values(buffers)) {
|
|
697
|
+
this.device.destroyBuffer(buffer);
|
|
698
|
+
}
|
|
699
|
+
}
|
|
700
|
+
};
|
|
701
|
+
void this.device.queue.onSubmittedWorkDone().then(release, release);
|
|
702
|
+
}
|
|
849
703
|
}
|
package/src/gpu-resource.ts
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
// - Concept compression (charter F1 / AGENTS.md design axiom): a
|
|
23
23
|
// single union `type GpuResource = GpuBuffer | GpuTexture` covers
|
|
24
24
|
// both buffer and texture lifecycles so AI-user-facing code that
|
|
25
|
-
// just wants "
|
|
25
|
+
// just wants "a GPU resource I need to dispose" reaches one
|
|
26
26
|
// symbol. Parallel classes (not a runtime-tagged generic
|
|
27
27
|
// `GpuResource<'buffer' | 'texture'>`) so the shape mirrors the
|
|
28
28
|
// RHI opaque-handle taxonomy verbatim and TS narrowing on
|
|
@@ -63,7 +63,7 @@ import type { Buffer, Result, RhiDevice, RhiError, Texture } from '@forgeax/engi
|
|
|
63
63
|
* `'destroy-after-destroy'` forwarded from `device.destroyBuffer(...)`.
|
|
64
64
|
*
|
|
65
65
|
* @example
|
|
66
|
-
* import { GpuBuffer } from '
|
|
66
|
+
* import { GpuBuffer } from './gpu-resource';
|
|
67
67
|
* const created = device.createBuffer({ size: 64, usage: GPUBufferUsage.STORAGE });
|
|
68
68
|
* if (!created.ok) return;
|
|
69
69
|
* const gpuBuf = new GpuBuffer(device, created.value);
|
|
@@ -115,7 +115,7 @@ export class GpuBuffer {
|
|
|
115
115
|
* on the RHI shim's TEXTURE_META_MAP; the local flag is a derived view.
|
|
116
116
|
*
|
|
117
117
|
* @example
|
|
118
|
-
* import { GpuTexture } from '
|
|
118
|
+
* import { GpuTexture } from './gpu-resource';
|
|
119
119
|
* const r = device.createTexture({ size: [w, h, 1], format: 'rgba8unorm', usage: ... });
|
|
120
120
|
* if (!r.ok) return;
|
|
121
121
|
* const gpuTex = new GpuTexture(device, r.value);
|
|
@@ -151,7 +151,7 @@ export class GpuTexture {
|
|
|
151
151
|
|
|
152
152
|
/**
|
|
153
153
|
* Union of runtime-managed GPU resources requiring explicit
|
|
154
|
-
* `.destroy()`. AI-user-facing code that needs to dispose "
|
|
154
|
+
* `.destroy()`. AI-user-facing code that needs to dispose "a GPU
|
|
155
155
|
* resource" types its parameter as `GpuResource` and lets TS narrow
|
|
156
156
|
* via `instanceof GpuBuffer / GpuTexture` if branch-specific access
|
|
157
157
|
* is required. Charter F1 single-entry indexability.
|
package/src/gpu-scene-schema.ts
CHANGED
|
@@ -1,103 +1,5 @@
|
|
|
1
1
|
export type GpuSceneScalar = 'u32' | 'i32' | 'f32';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Renderer-owned mobility fact. `unknown` is intentional: a renderer must not
|
|
5
|
-
* infer staticness from how often an entity happened to move in one frame.
|
|
6
|
-
* Authoring/pack producers may provide the other two values explicitly.
|
|
7
|
-
*/
|
|
8
|
-
export type SceneMobility = 'static' | 'dynamic' | 'unknown';
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Explicit shadow-caster eligibility. `unknown` is not an eligible state; it
|
|
12
|
-
* keeps missing authoring/pack data visible to the later visibility owner.
|
|
13
|
-
*/
|
|
14
|
-
export type SceneCasterEligibility = 'eligible' | 'ineligible' | 'unknown';
|
|
15
|
-
|
|
16
|
-
export type SceneFactRevisionDomain =
|
|
17
|
-
| 'transform'
|
|
18
|
-
| 'geometry'
|
|
19
|
-
| 'material'
|
|
20
|
-
| 'eligibility'
|
|
21
|
-
| 'space'
|
|
22
|
-
| 'batch'
|
|
23
|
-
| 'resource';
|
|
24
|
-
|
|
25
|
-
export interface SceneFactRevisions {
|
|
26
|
-
readonly transform: number;
|
|
27
|
-
readonly geometry: number;
|
|
28
|
-
readonly material: number;
|
|
29
|
-
readonly eligibility: number;
|
|
30
|
-
readonly space: number;
|
|
31
|
-
readonly batch: number;
|
|
32
|
-
readonly resource: number;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/** Optional producer-owned facts carried by a RenderableSnapshot. */
|
|
36
|
-
export interface RenderSceneFactInput {
|
|
37
|
-
readonly mobility?: SceneMobility;
|
|
38
|
-
readonly casterEligibility?: SceneCasterEligibility;
|
|
39
|
-
readonly revisions?: Partial<SceneFactRevisions>;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export type SceneBoundsFact =
|
|
43
|
-
| {
|
|
44
|
-
readonly status: 'present';
|
|
45
|
-
/** [minX, minY, minZ, maxX, maxY, maxZ] in world space. */
|
|
46
|
-
readonly worldAabb: Float32Array;
|
|
47
|
-
/** [minX, minY, minZ, maxX, maxY, maxZ] in local space. */
|
|
48
|
-
readonly localAabb: Float32Array;
|
|
49
|
-
}
|
|
50
|
-
| {
|
|
51
|
-
readonly status: 'missing';
|
|
52
|
-
readonly reason: 'missing-local-aabb' | 'invalid-local-aabb' | 'invalid-world-transform';
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
export interface RenderSceneFact {
|
|
56
|
-
readonly slot: number;
|
|
57
|
-
readonly generation: number;
|
|
58
|
-
readonly worldId: number;
|
|
59
|
-
readonly entityKey: number;
|
|
60
|
-
readonly bounds: SceneBoundsFact;
|
|
61
|
-
readonly mobility: SceneMobility;
|
|
62
|
-
readonly casterEligibility: SceneCasterEligibility;
|
|
63
|
-
readonly revisions: SceneFactRevisions;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
export type SceneFactDiagnosticCode = 'missing-bounds' | 'invalid-revision' | 'stale-generation';
|
|
67
|
-
|
|
68
|
-
export interface SceneFactDiagnostic {
|
|
69
|
-
readonly code: SceneFactDiagnosticCode;
|
|
70
|
-
readonly slot?: number;
|
|
71
|
-
readonly generation?: number;
|
|
72
|
-
readonly worldId?: number;
|
|
73
|
-
readonly entityKey?: number;
|
|
74
|
-
readonly expectedGeneration?: number;
|
|
75
|
-
readonly actualGeneration?: number;
|
|
76
|
-
readonly domain?: SceneFactRevisionDomain;
|
|
77
|
-
readonly reason?: string;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
/** Stable primitive flag bits; the extra fact bits do not change the table ABI. */
|
|
81
|
-
export const GPU_SCENE_PRIMITIVE_FLAGS = Object.freeze({
|
|
82
|
-
active: 1,
|
|
83
|
-
hasBounds: 2,
|
|
84
|
-
gpuDriven: 4,
|
|
85
|
-
static: 8,
|
|
86
|
-
dynamic: 16,
|
|
87
|
-
casterEligible: 32,
|
|
88
|
-
casterIneligible: 64,
|
|
89
|
-
casterUnknown: 128,
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
const TYPE_LAYOUT = {
|
|
93
|
-
u32: { size: 4, alignment: 4 },
|
|
94
|
-
i32: { size: 4, alignment: 4 },
|
|
95
|
-
f32: { size: 4, alignment: 4 },
|
|
96
|
-
'vec4<f32>': { size: 16, alignment: 16 },
|
|
97
|
-
'mat4x4<f32>': { size: 64, alignment: 16 },
|
|
98
|
-
} satisfies Readonly<Record<string, { readonly size: number; readonly alignment: number }>>;
|
|
99
|
-
|
|
100
|
-
export type GpuSceneFieldType = keyof typeof TYPE_LAYOUT;
|
|
2
|
+
export type GpuSceneFieldType = GpuSceneScalar | 'vec4<f32>' | 'mat4x4<f32>';
|
|
101
3
|
|
|
102
4
|
export interface GpuSceneField {
|
|
103
5
|
readonly name: string;
|
|
@@ -121,6 +23,16 @@ export interface GpuSceneTableLayout {
|
|
|
121
23
|
readonly fields: readonly GpuSceneFieldLayout[];
|
|
122
24
|
}
|
|
123
25
|
|
|
26
|
+
const TYPE_LAYOUT: Readonly<
|
|
27
|
+
Record<GpuSceneFieldType, { readonly size: number; readonly alignment: number }>
|
|
28
|
+
> = {
|
|
29
|
+
u32: { size: 4, alignment: 4 },
|
|
30
|
+
i32: { size: 4, alignment: 4 },
|
|
31
|
+
f32: { size: 4, alignment: 4 },
|
|
32
|
+
'vec4<f32>': { size: 16, alignment: 16 },
|
|
33
|
+
'mat4x4<f32>': { size: 64, alignment: 16 },
|
|
34
|
+
};
|
|
35
|
+
|
|
124
36
|
function align(value: number, alignment: number): number {
|
|
125
37
|
return Math.ceil(value / alignment) * alignment;
|
|
126
38
|
}
|