@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
|
@@ -0,0 +1,447 @@
|
|
|
1
|
+
import type { GraphBufferAccess, GraphTextureAccess } from '@forgeax/engine-render-graph';
|
|
2
|
+
import type { RhiCaps, TextureFormat } from '@forgeax/engine-rhi';
|
|
3
|
+
import { err, ok, type Result } from '@forgeax/engine-types';
|
|
4
|
+
import type { RenderError } from '../errors/render';
|
|
5
|
+
import type {
|
|
6
|
+
RenderFeatureGpuBufferUsage,
|
|
7
|
+
RenderFeatureGpuProgramDescriptor,
|
|
8
|
+
} from './prepared-gpu-work';
|
|
9
|
+
import type { RenderFeaturePipelineDescriptor } from './prepared-graphics';
|
|
10
|
+
|
|
11
|
+
export type RenderFeatureResourceUsage = GraphBufferAccess | GraphTextureAccess;
|
|
12
|
+
|
|
13
|
+
export type RenderFeatureFullscreenRead =
|
|
14
|
+
| string
|
|
15
|
+
| { readonly key: string; readonly sampleType?: 'depth' };
|
|
16
|
+
|
|
17
|
+
/** A cooked fullscreen shader declaration owned by a RenderFeature plan. */
|
|
18
|
+
export interface RenderFeatureFullscreenProgramDeclaration {
|
|
19
|
+
readonly kind: 'fullscreen-program';
|
|
20
|
+
readonly name: string;
|
|
21
|
+
readonly source: string;
|
|
22
|
+
readonly reads?: readonly RenderFeatureFullscreenRead[];
|
|
23
|
+
readonly params?: {
|
|
24
|
+
readonly byteSize: number;
|
|
25
|
+
readonly defaultValue: Uint8Array;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export type RenderFeatureBindingValue =
|
|
30
|
+
| null
|
|
31
|
+
| boolean
|
|
32
|
+
| number
|
|
33
|
+
| string
|
|
34
|
+
| ArrayBufferView
|
|
35
|
+
| readonly RenderFeatureBindingValue[]
|
|
36
|
+
| { readonly [name: string]: RenderFeatureBindingValue };
|
|
37
|
+
|
|
38
|
+
export type RenderFeatureResourceDeclaration =
|
|
39
|
+
| RenderFeatureFullscreenProgramDeclaration
|
|
40
|
+
| {
|
|
41
|
+
readonly kind: 'compute-program';
|
|
42
|
+
readonly name: string;
|
|
43
|
+
readonly program: RenderFeatureGpuProgramDescriptor;
|
|
44
|
+
}
|
|
45
|
+
| {
|
|
46
|
+
readonly kind: 'graphics-program';
|
|
47
|
+
readonly name: string;
|
|
48
|
+
readonly program: RenderFeaturePipelineDescriptor;
|
|
49
|
+
}
|
|
50
|
+
| {
|
|
51
|
+
readonly kind: 'buffer';
|
|
52
|
+
readonly name: string;
|
|
53
|
+
readonly size: number;
|
|
54
|
+
readonly usage: readonly RenderFeatureGpuBufferUsage[];
|
|
55
|
+
readonly data?: ArrayBufferView;
|
|
56
|
+
}
|
|
57
|
+
| {
|
|
58
|
+
readonly kind: 'compute-bindings';
|
|
59
|
+
readonly name: string;
|
|
60
|
+
readonly program: string;
|
|
61
|
+
readonly entries: readonly {
|
|
62
|
+
readonly binding: number;
|
|
63
|
+
readonly resource: string;
|
|
64
|
+
}[];
|
|
65
|
+
}
|
|
66
|
+
| {
|
|
67
|
+
readonly kind: 'graphics-bindings';
|
|
68
|
+
readonly name: string;
|
|
69
|
+
readonly program: string;
|
|
70
|
+
readonly values: Readonly<Record<string, RenderFeatureBindingValue>>;
|
|
71
|
+
readonly logicalTargets?: Readonly<Record<string, string>>;
|
|
72
|
+
}
|
|
73
|
+
| {
|
|
74
|
+
readonly kind: 'vertex-data';
|
|
75
|
+
readonly name: string;
|
|
76
|
+
readonly layout: string;
|
|
77
|
+
readonly data: ArrayBufferView | readonly number[];
|
|
78
|
+
readonly buffer?: never;
|
|
79
|
+
}
|
|
80
|
+
| {
|
|
81
|
+
readonly kind: 'vertex-data';
|
|
82
|
+
readonly name: string;
|
|
83
|
+
readonly layout: string;
|
|
84
|
+
readonly buffer: string;
|
|
85
|
+
readonly data?: never;
|
|
86
|
+
}
|
|
87
|
+
| {
|
|
88
|
+
readonly kind: 'index-data';
|
|
89
|
+
readonly name: string;
|
|
90
|
+
readonly format: 'uint16' | 'uint32';
|
|
91
|
+
readonly data: Uint16Array | Uint32Array;
|
|
92
|
+
readonly buffer?: never;
|
|
93
|
+
}
|
|
94
|
+
| {
|
|
95
|
+
readonly kind: 'index-data';
|
|
96
|
+
readonly name: string;
|
|
97
|
+
readonly format: 'uint16' | 'uint32';
|
|
98
|
+
readonly buffer: string;
|
|
99
|
+
readonly data?: never;
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
export type RenderFeatureDispatch =
|
|
103
|
+
| {
|
|
104
|
+
readonly kind: 'direct';
|
|
105
|
+
readonly entryPoint: string;
|
|
106
|
+
readonly workgroups: readonly [number, number?, number?];
|
|
107
|
+
}
|
|
108
|
+
| {
|
|
109
|
+
readonly kind: 'indirect';
|
|
110
|
+
readonly entryPoint: string;
|
|
111
|
+
readonly resource: string;
|
|
112
|
+
readonly offset: number;
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
export type RenderFeatureDraw =
|
|
116
|
+
| {
|
|
117
|
+
readonly kind: 'draw';
|
|
118
|
+
readonly vertexCount: number;
|
|
119
|
+
readonly instanceCount: number;
|
|
120
|
+
readonly firstVertex?: number;
|
|
121
|
+
readonly firstInstance?: number;
|
|
122
|
+
}
|
|
123
|
+
| {
|
|
124
|
+
readonly kind: 'draw-indexed';
|
|
125
|
+
readonly indexCount: number;
|
|
126
|
+
readonly instanceCount: number;
|
|
127
|
+
readonly firstIndex?: number;
|
|
128
|
+
readonly baseVertex?: number;
|
|
129
|
+
readonly firstInstance?: number;
|
|
130
|
+
}
|
|
131
|
+
| {
|
|
132
|
+
readonly kind: 'draw-indirect' | 'draw-indexed-indirect';
|
|
133
|
+
readonly resource: string;
|
|
134
|
+
readonly offset?: number;
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
export interface RenderFeatureDrawDeclaration {
|
|
138
|
+
readonly program: string;
|
|
139
|
+
readonly bindings: readonly string[];
|
|
140
|
+
readonly vertexData: readonly { readonly slot: number; readonly resource: string }[];
|
|
141
|
+
readonly vertexLayout?: 'none';
|
|
142
|
+
readonly indexData?: {
|
|
143
|
+
readonly resource: string;
|
|
144
|
+
readonly format: 'uint16' | 'uint32';
|
|
145
|
+
};
|
|
146
|
+
readonly draw: RenderFeatureDraw;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
export type RenderFeaturePassDeclaration =
|
|
150
|
+
| {
|
|
151
|
+
readonly kind: 'compute';
|
|
152
|
+
readonly name: string;
|
|
153
|
+
readonly program: string;
|
|
154
|
+
readonly bindings: string;
|
|
155
|
+
readonly dispatches: readonly RenderFeatureDispatch[];
|
|
156
|
+
}
|
|
157
|
+
| {
|
|
158
|
+
readonly kind: 'raster';
|
|
159
|
+
readonly name: string;
|
|
160
|
+
readonly colorAttachments: readonly {
|
|
161
|
+
readonly target: string;
|
|
162
|
+
readonly loadOp: 'load' | 'clear';
|
|
163
|
+
readonly storeOp: 'store' | 'discard';
|
|
164
|
+
}[];
|
|
165
|
+
readonly depthStencilAttachment?: {
|
|
166
|
+
readonly target: string;
|
|
167
|
+
readonly depthLoadOp: 'load' | 'clear';
|
|
168
|
+
readonly depthStoreOp: 'store' | 'discard';
|
|
169
|
+
};
|
|
170
|
+
readonly sampledTargets?: readonly string[];
|
|
171
|
+
readonly draws: readonly RenderFeatureDrawDeclaration[];
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* The sole executable feature declaration for one frame. Programs, bindings,
|
|
176
|
+
* resources, dispatches, draws, and logical targets are all named here; graph
|
|
177
|
+
* access is derived from these roles rather than duplicated as reads/writes.
|
|
178
|
+
*/
|
|
179
|
+
export interface RenderFeaturePlan {
|
|
180
|
+
readonly resources: readonly RenderFeatureResourceDeclaration[];
|
|
181
|
+
readonly passes: readonly RenderFeaturePassDeclaration[];
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
export interface RenderFeatureLogicalTarget {
|
|
185
|
+
readonly name: string;
|
|
186
|
+
readonly kind: 'color' | 'depth' | 'swapchain';
|
|
187
|
+
readonly format: TextureFormat;
|
|
188
|
+
readonly sampleCount: 1 | 4;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
export interface RenderFeaturePlanContext {
|
|
192
|
+
readonly caps: Readonly<RhiCaps>;
|
|
193
|
+
readonly frame: { readonly frameNumber: number };
|
|
194
|
+
readonly generation: number;
|
|
195
|
+
readonly targets: readonly RenderFeatureLogicalTarget[];
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/** Frozen declaration produced for one feature in one frame. */
|
|
199
|
+
export interface RenderFeaturePlannedFrame {
|
|
200
|
+
readonly featureIdentity: string;
|
|
201
|
+
readonly generation: number;
|
|
202
|
+
readonly signature: string;
|
|
203
|
+
readonly plan: RenderFeaturePlan;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
export interface RenderFeatureDerivedAccess {
|
|
207
|
+
readonly resource: string;
|
|
208
|
+
readonly usage: RenderFeatureResourceUsage;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
function stageFailure(identity: string): RenderError {
|
|
212
|
+
return {
|
|
213
|
+
code: 'render-feature-stage-failed',
|
|
214
|
+
expected: 'a closed RenderFeaturePlan with valid named descriptor references',
|
|
215
|
+
hint: 'declare each program, binding, buffer, draw, dispatch, and logical target exactly once',
|
|
216
|
+
detail: {
|
|
217
|
+
featureIdentity: identity,
|
|
218
|
+
order: -1,
|
|
219
|
+
stage: 'plan',
|
|
220
|
+
recovery: 'next-frame',
|
|
221
|
+
},
|
|
222
|
+
} as RenderError;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
function validName(name: string): boolean {
|
|
226
|
+
return /^[a-z][a-z0-9.-]{0,127}$/.test(name);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
function stable(value: unknown): string {
|
|
230
|
+
if (ArrayBuffer.isView(value)) {
|
|
231
|
+
const bytes = new Uint8Array(value.buffer, value.byteOffset, value.byteLength);
|
|
232
|
+
return `[bytes:${Array.from(bytes).join(',')}]`;
|
|
233
|
+
}
|
|
234
|
+
if (Array.isArray(value)) return `[${value.map(stable).join(',')}]`;
|
|
235
|
+
if (value !== null && typeof value === 'object') {
|
|
236
|
+
return `{${Object.entries(value as Readonly<Record<string, unknown>>)
|
|
237
|
+
.sort(([left], [right]) => left.localeCompare(right))
|
|
238
|
+
.map(([key, child]) => `${JSON.stringify(key)}:${stable(child)}`)
|
|
239
|
+
.join(',')}}`;
|
|
240
|
+
}
|
|
241
|
+
return JSON.stringify(value);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
function resourceTopology(resource: RenderFeatureResourceDeclaration): unknown {
|
|
245
|
+
if (resource.kind === 'buffer') {
|
|
246
|
+
return { ...resource, usage: [...resource.usage].sort(), data: undefined };
|
|
247
|
+
}
|
|
248
|
+
return resource;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/** Canonical signature used by typed-graph topology and last-known-good swap. */
|
|
252
|
+
export function renderFeaturePlanSignature(plan: RenderFeaturePlan): string {
|
|
253
|
+
return stable({
|
|
254
|
+
resources: plan.resources.map(resourceTopology),
|
|
255
|
+
passes: plan.passes,
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
function bindingAccess(type: GPUBufferBindingType | undefined): GraphBufferAccess | undefined {
|
|
260
|
+
switch (type) {
|
|
261
|
+
case 'uniform':
|
|
262
|
+
return 'uniform-read';
|
|
263
|
+
case 'read-only-storage':
|
|
264
|
+
return 'storage-read';
|
|
265
|
+
case 'storage':
|
|
266
|
+
return 'storage-read-write';
|
|
267
|
+
case undefined:
|
|
268
|
+
return undefined;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
/** Derive graph access from descriptor roles; producers never author a parallel ledger. */
|
|
273
|
+
export function deriveRenderFeaturePassAccess(
|
|
274
|
+
plan: RenderFeaturePlan,
|
|
275
|
+
pass: RenderFeaturePassDeclaration,
|
|
276
|
+
): readonly RenderFeatureDerivedAccess[] {
|
|
277
|
+
const resources = new Map(plan.resources.map((resource) => [resource.name, resource]));
|
|
278
|
+
const accesses: RenderFeatureDerivedAccess[] = [];
|
|
279
|
+
if (pass.kind === 'compute') {
|
|
280
|
+
const program = resources.get(pass.program);
|
|
281
|
+
const bindings = resources.get(pass.bindings);
|
|
282
|
+
const layoutEntries =
|
|
283
|
+
program?.kind === 'compute-program' ? (program.program.bindings?.[0]?.entries ?? []) : [];
|
|
284
|
+
if (bindings?.kind === 'compute-bindings') {
|
|
285
|
+
for (const entry of bindings.entries) {
|
|
286
|
+
const usage = bindingAccess(
|
|
287
|
+
layoutEntries.find((candidate) => candidate.binding === entry.binding)?.buffer?.type,
|
|
288
|
+
);
|
|
289
|
+
if (usage !== undefined) accesses.push({ resource: entry.resource, usage });
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
for (const dispatch of pass.dispatches) {
|
|
293
|
+
if (dispatch.kind === 'indirect') {
|
|
294
|
+
accesses.push({ resource: dispatch.resource, usage: 'indirect-read' });
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
return Object.freeze(accesses);
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
for (const attachment of pass.colorAttachments) {
|
|
301
|
+
accesses.push({ resource: attachment.target, usage: 'color-attachment' });
|
|
302
|
+
}
|
|
303
|
+
if (pass.depthStencilAttachment !== undefined) {
|
|
304
|
+
accesses.push({
|
|
305
|
+
resource: pass.depthStencilAttachment.target,
|
|
306
|
+
usage: pass.sampledTargets?.includes(pass.depthStencilAttachment.target)
|
|
307
|
+
? 'depth-stencil-read'
|
|
308
|
+
: 'depth-stencil-write',
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
for (const target of pass.sampledTargets ?? []) {
|
|
312
|
+
accesses.push({ resource: target, usage: 'sampled-read' });
|
|
313
|
+
}
|
|
314
|
+
for (const draw of pass.draws) {
|
|
315
|
+
for (const vertex of draw.vertexData) {
|
|
316
|
+
const declaration = resources.get(vertex.resource);
|
|
317
|
+
accesses.push({
|
|
318
|
+
resource:
|
|
319
|
+
declaration?.kind === 'vertex-data' && declaration.buffer !== undefined
|
|
320
|
+
? declaration.buffer
|
|
321
|
+
: vertex.resource,
|
|
322
|
+
usage: 'vertex-read',
|
|
323
|
+
});
|
|
324
|
+
}
|
|
325
|
+
if (draw.indexData !== undefined) {
|
|
326
|
+
const declaration = resources.get(draw.indexData.resource);
|
|
327
|
+
accesses.push({
|
|
328
|
+
resource:
|
|
329
|
+
declaration?.kind === 'index-data' && declaration.buffer !== undefined
|
|
330
|
+
? declaration.buffer
|
|
331
|
+
: draw.indexData.resource,
|
|
332
|
+
usage: 'index-read',
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
if (draw.draw.kind === 'draw-indirect' || draw.draw.kind === 'draw-indexed-indirect') {
|
|
336
|
+
accesses.push({ resource: draw.draw.resource, usage: 'indirect-read' });
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
return Object.freeze(accesses);
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
function validPositiveInteger(value: number): boolean {
|
|
343
|
+
return Number.isInteger(value) && value > 0;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
export function freezeRenderFeaturePlan(
|
|
347
|
+
identity: string,
|
|
348
|
+
plan: RenderFeaturePlan,
|
|
349
|
+
logicalTargets: readonly RenderFeatureLogicalTarget[] = [],
|
|
350
|
+
): Result<RenderFeaturePlan, RenderError> {
|
|
351
|
+
const resources = new Map<string, RenderFeatureResourceDeclaration>();
|
|
352
|
+
const targets = new Set(['swapchain', ...logicalTargets.map((target) => target.name)]);
|
|
353
|
+
for (const resource of plan.resources) {
|
|
354
|
+
if (!validName(resource.name) || resources.has(resource.name))
|
|
355
|
+
return err(stageFailure(identity));
|
|
356
|
+
resources.set(resource.name, resource);
|
|
357
|
+
}
|
|
358
|
+
const passes = new Set<string>();
|
|
359
|
+
for (const pass of plan.passes) {
|
|
360
|
+
if (!validName(pass.name) || passes.has(pass.name)) return err(stageFailure(identity));
|
|
361
|
+
passes.add(pass.name);
|
|
362
|
+
if (pass.kind === 'compute') {
|
|
363
|
+
const program = resources.get(pass.program);
|
|
364
|
+
const bindings = resources.get(pass.bindings);
|
|
365
|
+
if (
|
|
366
|
+
program?.kind !== 'compute-program' ||
|
|
367
|
+
bindings?.kind !== 'compute-bindings' ||
|
|
368
|
+
bindings.program !== pass.program ||
|
|
369
|
+
pass.dispatches.length === 0
|
|
370
|
+
) {
|
|
371
|
+
return err(stageFailure(identity));
|
|
372
|
+
}
|
|
373
|
+
const entryPoints = new Set(program.program.entryPoints);
|
|
374
|
+
for (const entry of bindings.entries) {
|
|
375
|
+
const buffer = resources.get(entry.resource);
|
|
376
|
+
const layout = program.program.bindings?.[0]?.entries.find(
|
|
377
|
+
(candidate) => candidate.binding === entry.binding,
|
|
378
|
+
);
|
|
379
|
+
if (buffer?.kind !== 'buffer' || layout?.buffer === undefined) {
|
|
380
|
+
return err(stageFailure(identity));
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
for (const dispatch of pass.dispatches) {
|
|
384
|
+
if (!entryPoints.has(dispatch.entryPoint)) return err(stageFailure(identity));
|
|
385
|
+
if (dispatch.kind === 'direct') {
|
|
386
|
+
if (
|
|
387
|
+
!dispatch.workgroups.every(
|
|
388
|
+
(value) => value === undefined || validPositiveInteger(value),
|
|
389
|
+
)
|
|
390
|
+
) {
|
|
391
|
+
return err(stageFailure(identity));
|
|
392
|
+
}
|
|
393
|
+
} else {
|
|
394
|
+
const buffer = resources.get(dispatch.resource);
|
|
395
|
+
if (
|
|
396
|
+
buffer?.kind !== 'buffer' ||
|
|
397
|
+
!buffer.usage.includes('indirect') ||
|
|
398
|
+
!Number.isInteger(dispatch.offset) ||
|
|
399
|
+
dispatch.offset < 0 ||
|
|
400
|
+
dispatch.offset % 4 !== 0
|
|
401
|
+
) {
|
|
402
|
+
return err(stageFailure(identity));
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
continue;
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
if (
|
|
410
|
+
pass.draws.length === 0 ||
|
|
411
|
+
pass.colorAttachments.some((attachment) => !targets.has(attachment.target)) ||
|
|
412
|
+
(pass.depthStencilAttachment !== undefined &&
|
|
413
|
+
!targets.has(pass.depthStencilAttachment.target)) ||
|
|
414
|
+
pass.sampledTargets?.some((target) => !targets.has(target)) === true
|
|
415
|
+
) {
|
|
416
|
+
return err(stageFailure(identity));
|
|
417
|
+
}
|
|
418
|
+
for (const draw of pass.draws) {
|
|
419
|
+
const program = resources.get(draw.program);
|
|
420
|
+
if (
|
|
421
|
+
program?.kind !== 'graphics-program' ||
|
|
422
|
+
draw.bindings.some((name) => {
|
|
423
|
+
const binding = resources.get(name);
|
|
424
|
+
return binding?.kind !== 'graphics-bindings' || binding.program !== draw.program;
|
|
425
|
+
}) ||
|
|
426
|
+
draw.vertexData.some(
|
|
427
|
+
(binding) => resources.get(binding.resource)?.kind !== 'vertex-data',
|
|
428
|
+
) ||
|
|
429
|
+
(draw.indexData !== undefined &&
|
|
430
|
+
resources.get(draw.indexData.resource)?.kind !== 'index-data') ||
|
|
431
|
+
((draw.draw.kind === 'draw-indirect' || draw.draw.kind === 'draw-indexed-indirect') &&
|
|
432
|
+
(() => {
|
|
433
|
+
const buffer = resources.get(draw.draw.resource);
|
|
434
|
+
return buffer?.kind !== 'buffer' || !buffer.usage.includes('indirect');
|
|
435
|
+
})())
|
|
436
|
+
) {
|
|
437
|
+
return err(stageFailure(identity));
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
const frozen = Object.freeze({
|
|
443
|
+
resources: Object.freeze(plan.resources.map((resource) => Object.freeze({ ...resource }))),
|
|
444
|
+
passes: Object.freeze(plan.passes.map((pass) => Object.freeze({ ...pass }))),
|
|
445
|
+
});
|
|
446
|
+
return ok(frozen);
|
|
447
|
+
}
|
|
@@ -13,7 +13,6 @@ import type {
|
|
|
13
13
|
import { type BindGroupLayoutDescriptor, err, ok, type Result } from '@forgeax/engine-types';
|
|
14
14
|
import { type RenderError, RenderFeaturePreparationFailedError } from '../errors/render';
|
|
15
15
|
import type { PipelineBuilderShaderModuleFactory } from '../pipeline-builder';
|
|
16
|
-
import type { PreparedGraphicsResourceLease } from '../prepare/prepared-graphics-resolver';
|
|
17
16
|
|
|
18
17
|
declare const RenderFeatureGpuProgramBrand: unique symbol;
|
|
19
18
|
export interface RenderFeatureGpuProgramRef {
|
|
@@ -34,7 +33,13 @@ export interface RenderFeatureGpuBindingsRef {
|
|
|
34
33
|
readonly generation: number;
|
|
35
34
|
}
|
|
36
35
|
|
|
37
|
-
export type RenderFeatureGpuBufferUsage =
|
|
36
|
+
export type RenderFeatureGpuBufferUsage =
|
|
37
|
+
| 'storage'
|
|
38
|
+
| 'uniform'
|
|
39
|
+
| 'indirect'
|
|
40
|
+
| 'vertex'
|
|
41
|
+
| 'index'
|
|
42
|
+
| 'copy-src';
|
|
38
43
|
|
|
39
44
|
export interface RenderFeatureGpuProgramDescriptor {
|
|
40
45
|
readonly wgsl: string;
|
|
@@ -139,7 +144,7 @@ export function encodeRenderFeatureGpuComputePass(
|
|
|
139
144
|
}
|
|
140
145
|
}
|
|
141
146
|
|
|
142
|
-
export interface
|
|
147
|
+
export interface RenderFeatureGpuPrepareSession extends RenderFeatureGpuPrepare {
|
|
143
148
|
beginFrame(): void;
|
|
144
149
|
resolveComputePass(
|
|
145
150
|
featureIdentity: string,
|
|
@@ -150,6 +155,10 @@ export interface RenderFeatureGpuWorkResolver extends RenderFeatureGpuPrepare {
|
|
|
150
155
|
dispose(): Result<void, RenderError>;
|
|
151
156
|
}
|
|
152
157
|
|
|
158
|
+
export interface PreparedGraphicsResourceLease {
|
|
159
|
+
release(): Result<void, RenderError>;
|
|
160
|
+
}
|
|
161
|
+
|
|
153
162
|
interface ProgramItem {
|
|
154
163
|
readonly name: string;
|
|
155
164
|
readonly signature: string;
|
|
@@ -246,22 +255,18 @@ function rhiReason(error: {
|
|
|
246
255
|
return `${error.code}:${error.hint}${detail}`;
|
|
247
256
|
}
|
|
248
257
|
|
|
249
|
-
|
|
258
|
+
function createRenderFeatureGpuWorkSession(input: {
|
|
250
259
|
readonly device: RhiDevice;
|
|
251
260
|
readonly shaderModuleFactory: PipelineBuilderShaderModuleFactory;
|
|
252
261
|
readonly generation: number;
|
|
253
262
|
readonly featureIdentity: string;
|
|
254
|
-
}):
|
|
263
|
+
}): RenderFeatureGpuPrepareSession {
|
|
255
264
|
const programs = new Map<string, ProgramItem>();
|
|
256
265
|
const programRefs = new Map<object, ProgramItem>();
|
|
257
266
|
const buffers = new Map<string, BufferItem>();
|
|
258
267
|
const bufferRefs = new Map<object, BufferItem>();
|
|
259
268
|
const bindings = new Map<string, BindingsItem>();
|
|
260
269
|
const bindingRefs = new Map<object, BindingsItem>();
|
|
261
|
-
// A feature resource name may be instance-scoped while the WGSL module is
|
|
262
|
-
// not. Keep the shader-module label stable for identical source so a burst
|
|
263
|
-
// of short-lived VFX players reuses the renderer's async compile cache.
|
|
264
|
-
const shaderModuleLabels = new Map<string, string>();
|
|
265
270
|
const touchedPrograms = new Set<ProgramItem>();
|
|
266
271
|
const touchedBuffers = new Set<BufferItem>();
|
|
267
272
|
const touchedBindings = new Set<BindingsItem>();
|
|
@@ -306,13 +311,8 @@ export function createRenderFeatureGpuWorkResolver(input: {
|
|
|
306
311
|
),
|
|
307
312
|
);
|
|
308
313
|
}
|
|
309
|
-
let moduleLabel = shaderModuleLabels.get(descriptor.wgsl);
|
|
310
|
-
if (moduleLabel === undefined) {
|
|
311
|
-
moduleLabel = `${input.featureIdentity}.program.${shaderModuleLabels.size}`;
|
|
312
|
-
shaderModuleLabels.set(descriptor.wgsl, moduleLabel);
|
|
313
|
-
}
|
|
314
314
|
const module = input.shaderModuleFactory.createShaderModule({
|
|
315
|
-
label:
|
|
315
|
+
label: name,
|
|
316
316
|
code: descriptor.wgsl,
|
|
317
317
|
});
|
|
318
318
|
if (!module.ok) {
|
|
@@ -900,3 +900,60 @@ export function createRenderFeatureGpuWorkResolver(input: {
|
|
|
900
900
|
},
|
|
901
901
|
};
|
|
902
902
|
}
|
|
903
|
+
|
|
904
|
+
/**
|
|
905
|
+
* RenderSystem's one owner for persistent feature GPU work.
|
|
906
|
+
*
|
|
907
|
+
* Sessions remain private to this module. The host asks for a session for the
|
|
908
|
+
* current feature and generation, while this owner is the only place that
|
|
909
|
+
* retains the per-feature prepared GPU state and recreates it after recovery.
|
|
910
|
+
*/
|
|
911
|
+
export interface RenderFeatureGpuWorkOwner {
|
|
912
|
+
beginFeature(featureIdentity: string, generation: number): RenderFeatureGpuPrepareSession;
|
|
913
|
+
resolveBuffer(
|
|
914
|
+
featureIdentity: string,
|
|
915
|
+
reference: RenderFeatureGpuBufferRef,
|
|
916
|
+
): RenderFeatureResolvedGpuBuffer | undefined;
|
|
917
|
+
dispose(): Result<void, RenderError>;
|
|
918
|
+
}
|
|
919
|
+
|
|
920
|
+
export function createRenderFeatureGpuWorkOwner(input: {
|
|
921
|
+
readonly getDevice: () => RhiDevice;
|
|
922
|
+
readonly getShaderModuleFactory: () => PipelineBuilderShaderModuleFactory;
|
|
923
|
+
}): RenderFeatureGpuWorkOwner {
|
|
924
|
+
const sessions = new Map<
|
|
925
|
+
string,
|
|
926
|
+
{ generation: number; session: RenderFeatureGpuPrepareSession }
|
|
927
|
+
>();
|
|
928
|
+
|
|
929
|
+
return {
|
|
930
|
+
beginFeature: (featureIdentity, generation) => {
|
|
931
|
+
const existing = sessions.get(featureIdentity);
|
|
932
|
+
if (existing?.generation === generation) {
|
|
933
|
+
existing.session.beginFrame();
|
|
934
|
+
return existing.session;
|
|
935
|
+
}
|
|
936
|
+
if (existing !== undefined) existing.session.dispose();
|
|
937
|
+
const session = createRenderFeatureGpuWorkSession({
|
|
938
|
+
device: input.getDevice(),
|
|
939
|
+
shaderModuleFactory: input.getShaderModuleFactory(),
|
|
940
|
+
generation,
|
|
941
|
+
featureIdentity,
|
|
942
|
+
});
|
|
943
|
+
sessions.set(featureIdentity, { generation, session });
|
|
944
|
+
session.beginFrame();
|
|
945
|
+
return session;
|
|
946
|
+
},
|
|
947
|
+
resolveBuffer: (featureIdentity, reference) =>
|
|
948
|
+
sessions.get(featureIdentity)?.session.resolveBuffer(reference),
|
|
949
|
+
dispose: () => {
|
|
950
|
+
let first: RenderError | undefined;
|
|
951
|
+
for (const { session } of sessions.values()) {
|
|
952
|
+
const disposed = session.dispose();
|
|
953
|
+
if (!disposed.ok && first === undefined) first = disposed.error;
|
|
954
|
+
}
|
|
955
|
+
sessions.clear();
|
|
956
|
+
return first === undefined ? ok(undefined) : err(first);
|
|
957
|
+
},
|
|
958
|
+
};
|
|
959
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { TextureFormat } from '@forgeax/engine-rhi';
|
|
1
2
|
import { err, ok, type Result } from '@forgeax/engine-types';
|
|
2
3
|
import { type RenderError, RenderFeaturePreparationFailedError } from '../errors/render';
|
|
3
4
|
import type {
|
|
@@ -69,7 +70,7 @@ export interface PreparedGraphicsTransaction {
|
|
|
69
70
|
capabilityAvailable: boolean,
|
|
70
71
|
attachments: readonly {
|
|
71
72
|
readonly resource: string | RenderFeatureTargetHandle;
|
|
72
|
-
readonly format:
|
|
73
|
+
readonly format: TextureFormat;
|
|
73
74
|
}[],
|
|
74
75
|
): RenderFeaturePreparedGraphicsState;
|
|
75
76
|
commit(): Result<PreparedGraphicsStoreSnapshot, RenderError>;
|
|
@@ -109,10 +110,25 @@ function preparationFailure(
|
|
|
109
110
|
);
|
|
110
111
|
}
|
|
111
112
|
|
|
113
|
+
function numericViewValues(value: ArrayBufferView): readonly number[] {
|
|
114
|
+
if (value instanceof Float32Array) return Array.from(value);
|
|
115
|
+
if (value instanceof Float64Array) return Array.from(value);
|
|
116
|
+
if (value instanceof Int8Array) return Array.from(value);
|
|
117
|
+
if (value instanceof Uint8Array) return Array.from(value);
|
|
118
|
+
if (value instanceof Uint8ClampedArray) return Array.from(value);
|
|
119
|
+
if (value instanceof Int16Array) return Array.from(value);
|
|
120
|
+
if (value instanceof Uint16Array) return Array.from(value);
|
|
121
|
+
if (value instanceof Int32Array) return Array.from(value);
|
|
122
|
+
if (value instanceof Uint32Array) return Array.from(value);
|
|
123
|
+
if (value instanceof BigInt64Array) return Array.from(value, Number);
|
|
124
|
+
if (value instanceof BigUint64Array) return Array.from(value, Number);
|
|
125
|
+
return Array.from(new Uint8Array(value.buffer, value.byteOffset, value.byteLength));
|
|
126
|
+
}
|
|
127
|
+
|
|
112
128
|
function immutableValue(value: unknown): unknown {
|
|
113
129
|
if (Array.isArray(value)) return Object.freeze(value.map(immutableValue));
|
|
114
130
|
if (ArrayBuffer.isView(value)) {
|
|
115
|
-
return Object.freeze(
|
|
131
|
+
return Object.freeze(numericViewValues(value));
|
|
116
132
|
}
|
|
117
133
|
if (value !== null && typeof value === 'object') {
|
|
118
134
|
const source = value as Record<string, unknown>;
|
|
@@ -126,9 +142,7 @@ function immutableValue(value: unknown): unknown {
|
|
|
126
142
|
}
|
|
127
143
|
|
|
128
144
|
function valuesOf(data: ArrayBufferView | readonly number[]): readonly number[] {
|
|
129
|
-
return Object.freeze(
|
|
130
|
-
ArrayBuffer.isView(data) ? Array.from(data as unknown as ArrayLike<number>) : [...data],
|
|
131
|
-
);
|
|
145
|
+
return Object.freeze(ArrayBuffer.isView(data) ? numericViewValues(data) : [...data]);
|
|
132
146
|
}
|
|
133
147
|
|
|
134
148
|
function uploadBytes(
|
|
@@ -338,7 +352,7 @@ class PreparedGraphicsTransactionImpl implements PreparedGraphicsTransaction {
|
|
|
338
352
|
capabilityAvailable: boolean,
|
|
339
353
|
attachments: readonly {
|
|
340
354
|
readonly resource: string | RenderFeatureTargetHandle;
|
|
341
|
-
readonly format:
|
|
355
|
+
readonly format: TextureFormat;
|
|
342
356
|
}[],
|
|
343
357
|
): RenderFeaturePreparedGraphicsState {
|
|
344
358
|
const items = [...this.committedItems(), ...this.overlay.values()];
|