@forgeax/engine-render 0.1.3 → 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 +1 -2
- 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 +46 -50
- 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} +1709 -2693
- package/src/assembly/host-contract.ts +101 -0
- package/src/{renderer → assembly}/material/assembly.ts +1 -3
- 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 -111
- 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-33UF5SAO.mjs +0 -7397
- package/dist/chunk-33UF5SAO.mjs.map +0 -1
- package/dist/chunk-A5QCJSNL.mjs +0 -29913
- package/dist/chunk-A5QCJSNL.mjs.map +0 -1
- package/dist/chunk-JMSB7AR4.mjs +0 -3
- package/dist/chunk-JMSB7AR4.mjs.map +0 -1
- package/dist/chunk-LXNGO6AO.mjs +0 -569
- package/dist/chunk-LXNGO6AO.mjs.map +0 -1
- package/dist/chunk-QRXPSX4X.mjs +0 -659
- package/dist/chunk-QRXPSX4X.mjs.map +0 -1
- package/dist/chunk-YAKEQPWO.mjs +0 -1439
- package/dist/chunk-YAKEQPWO.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 -116
- 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 -283
- 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
|
@@ -2,19 +2,19 @@
|
|
|
2
2
|
// Extracted from render-system-record.ts (feat-20260704 M3/w17, pure move).
|
|
3
3
|
|
|
4
4
|
import type { World } from '@forgeax/engine-ecs';
|
|
5
|
-
import type { WorldProjection } from '@forgeax/engine-ecs/projection';
|
|
6
5
|
import { vec3 } from '@forgeax/engine-math';
|
|
6
|
+
import type { ResolvedColorTargetDescriptor } from '@forgeax/engine-render-graph';
|
|
7
|
+
import type { Texture } from '@forgeax/engine-rhi';
|
|
7
8
|
import type { ClusterBinScratch } from '../cluster-binner';
|
|
8
|
-
import type {
|
|
9
|
+
import type { GpuBuffer } from '../gpu-resource';
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* feat-20260708-composited-multi-world-rendering M1 / D-1 / D-9:
|
|
12
13
|
* worldId-entityKey composite key helper. Formula: `worldId * 2^32 + entityKey`.
|
|
13
14
|
*
|
|
14
|
-
* worldId is the
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* `RenderableSnapshot.entityKey`.
|
|
15
|
+
* worldId is the index into `worlds[]` (the `draw` call argument). entityKey
|
|
16
|
+
* is the packed Entity u32 (encodeEntity(indexSlot, generation)) surfaced
|
|
17
|
+
* through `RenderableSnapshot.entityKey`.
|
|
18
18
|
*
|
|
19
19
|
* Key properties:
|
|
20
20
|
* - worldId=0 identity: `worldEntityKey(0, k) === k` — single-world path
|
|
@@ -31,25 +31,6 @@ export function worldEntityKey(worldId: number, entityKey: number): number {
|
|
|
31
31
|
return worldId * 4294967296 + entityKey; // 2^32 = 4294967296
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
declare const RASTER_ITEM_KEY: unique symbol;
|
|
35
|
-
|
|
36
|
-
/** Stable identity for one renderable/submesh/pass draw item. */
|
|
37
|
-
export type RasterItemKey = string & { readonly [RASTER_ITEM_KEY]: true };
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Build the value identity shared by GPU-driven ownership and CPU recording.
|
|
41
|
-
* The string form keeps the four numeric dimensions lossless without relying
|
|
42
|
-
* on a process-wide allocation table.
|
|
43
|
-
*/
|
|
44
|
-
export function rasterItemKey(
|
|
45
|
-
worldId: number,
|
|
46
|
-
entityKey: number,
|
|
47
|
-
submeshIndex: number,
|
|
48
|
-
passIndex: number,
|
|
49
|
-
): RasterItemKey {
|
|
50
|
-
return `${worldId}:${entityKey}:${submeshIndex}:${passIndex}` as RasterItemKey;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
34
|
/**
|
|
54
35
|
* Cross-frame cache entry for a material bind group whose source material and
|
|
55
36
|
* all resolved GPU resources are stable. The material snapshot identity is
|
|
@@ -58,7 +39,7 @@ export function rasterItemKey(
|
|
|
58
39
|
*/
|
|
59
40
|
export interface MaterialBgAssemblyCacheEntry {
|
|
60
41
|
readonly material: MaterialSnapshot;
|
|
61
|
-
/** Invalidates when
|
|
42
|
+
/** Invalidates when a texture/sampler residency identity changes. */
|
|
62
43
|
readonly materialResourceEpoch: number;
|
|
63
44
|
readonly materialBgl: BindGroupLayout;
|
|
64
45
|
/** Buffer identity changes when the shared material capacity grows. */
|
|
@@ -68,20 +49,14 @@ export interface MaterialBgAssemblyCacheEntry {
|
|
|
68
49
|
}
|
|
69
50
|
|
|
70
51
|
import type { CompiledRenderGraph } from '@forgeax/engine-render-graph';
|
|
71
|
-
import type {
|
|
72
|
-
BindGroup,
|
|
73
|
-
BindGroupLayout,
|
|
74
|
-
Buffer,
|
|
75
|
-
CommandBuffer,
|
|
76
|
-
TextureView,
|
|
77
|
-
} from '@forgeax/engine-rhi';
|
|
52
|
+
import type { BindGroup, BindGroupLayout, Buffer, TextureView } from '@forgeax/engine-rhi';
|
|
78
53
|
import type { MaterialRenderState, RenderPipelineAsset } from '@forgeax/engine-types';
|
|
54
|
+
import type { MeshGpuHandles } from '../device/gpu-residency';
|
|
79
55
|
import type { SkylightBindGroupResources } from '../ibl/skylight-bind-group';
|
|
80
56
|
import type { InstanceBufferCacheEntry } from '../instance-buffer-cache';
|
|
57
|
+
import type { CameraSnapshot } from '../render-contract';
|
|
81
58
|
import type { RenderPipeline as RenderPipelineDef, RenderPipelineFrame } from '../render-pipeline';
|
|
82
|
-
import type { MeshGpuHandles } from '../render-system';
|
|
83
59
|
import type {
|
|
84
|
-
CameraSnapshot,
|
|
85
60
|
DispatchEntry,
|
|
86
61
|
MaterialSnapshot,
|
|
87
62
|
PointShadowSnapshot,
|
|
@@ -89,8 +64,6 @@ import type {
|
|
|
89
64
|
SpotLightSnapshot,
|
|
90
65
|
} from '../render-system-extract';
|
|
91
66
|
import type { ShadowAtlas } from '../shadow-atlas';
|
|
92
|
-
import type { FrameObservationSource } from './frame-observation';
|
|
93
|
-
import type { ShadowSubmitModeState } from './shadow-submit-mode';
|
|
94
67
|
|
|
95
68
|
/**
|
|
96
69
|
* feat-20260608-create-app-param-surface-trim / M1 / D-8 (q8 user lock):
|
|
@@ -103,6 +76,14 @@ import type { ShadowSubmitModeState } from './shadow-submit-mode';
|
|
|
103
76
|
*/
|
|
104
77
|
export const ZERO_CAMERA_CLEAR_FALLBACK: readonly [number, number, number, number] = [0, 0, 0, 1];
|
|
105
78
|
|
|
79
|
+
export interface FrameObservationSource {
|
|
80
|
+
readonly texture: Texture;
|
|
81
|
+
readonly descriptor: ResolvedColorTargetDescriptor;
|
|
82
|
+
readonly frameId: number;
|
|
83
|
+
readonly pipelineId: 'forgeax::standard';
|
|
84
|
+
readonly backendId: string;
|
|
85
|
+
}
|
|
86
|
+
|
|
106
87
|
/**
|
|
107
88
|
* Build a synthetic CameraSnapshot the record stage uses when the world
|
|
108
89
|
* carries no Camera entity. Identity-shaped projection / view inputs
|
|
@@ -120,8 +101,6 @@ export function makeZeroCameraFallbackSnapshot(): CameraSnapshot {
|
|
|
120
101
|
identityWorld[10] = 1;
|
|
121
102
|
identityWorld[15] = 1;
|
|
122
103
|
return {
|
|
123
|
-
worldId: 0,
|
|
124
|
-
entityKey: 0,
|
|
125
104
|
position: vec3.create(0, 0, 0),
|
|
126
105
|
world: identityWorld,
|
|
127
106
|
fov: Math.PI / 4,
|
|
@@ -140,7 +119,6 @@ export function makeZeroCameraFallbackSnapshot(): CameraSnapshot {
|
|
|
140
119
|
exposure: 1.0,
|
|
141
120
|
whitePoint: 4.0,
|
|
142
121
|
antialias: 'none',
|
|
143
|
-
historyVersion: 0,
|
|
144
122
|
bloom: 'off',
|
|
145
123
|
bloomThreshold: 1.0,
|
|
146
124
|
bloomIntensity: 1.0,
|
|
@@ -182,10 +160,12 @@ export function clampPcfKernelSize(value: number | undefined): number {
|
|
|
182
160
|
*/
|
|
183
161
|
export interface RenderFrameState {
|
|
184
162
|
frameNumber: number;
|
|
185
|
-
/**
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
163
|
+
/** Optional graph resource lookup used by low-level record helpers and tests. */
|
|
164
|
+
readonly perFrameGraph?: {
|
|
165
|
+
readonly getColorTargetDescriptor: (key: string) => ResolvedColorTargetDescriptor | undefined;
|
|
166
|
+
readonly getColorTargetView: (key: string) => TextureView | undefined;
|
|
167
|
+
readonly getColorTargetTexture: (key: string) => Texture | undefined;
|
|
168
|
+
} | null;
|
|
189
169
|
/** Last successfully rendered static directional shadow atlas token. */
|
|
190
170
|
directionalShadowCache: DirectionalShadowCache | null;
|
|
191
171
|
/** Set by a directional shadow pass when this frame refreshed the atlas. */
|
|
@@ -199,6 +179,8 @@ export interface RenderFrameState {
|
|
|
199
179
|
currentDirectionalShadowView: TextureView | null;
|
|
200
180
|
currentSpotShadowView: TextureView | null;
|
|
201
181
|
readonly instanceBuffers: Map<number, InstanceBufferCacheEntry>;
|
|
182
|
+
/** Per-entity vertex buffers for the Standard CPU morph lane. */
|
|
183
|
+
readonly morphBuffers?: Map<number, MorphBufferCacheEntry>;
|
|
202
184
|
readonly hdrpClusterBinScratch: ClusterBinScratch;
|
|
203
185
|
/** Reusable HDRP cluster output buffers; sized once and grown only if the grid/cap changes. */
|
|
204
186
|
hdrpClusterGridScratch: Uint32Array | null;
|
|
@@ -252,8 +234,6 @@ export interface RenderFrameState {
|
|
|
252
234
|
* bound).
|
|
253
235
|
*/
|
|
254
236
|
readonly warnedMissingBaseColorTextureHandles: Set<number>;
|
|
255
|
-
/** Once-per-material diagnostic dedupe for failed production readiness. */
|
|
256
|
-
readonly reportedMaterialDiagnosticKeys: Set<string>;
|
|
257
237
|
/**
|
|
258
238
|
* feat-20260527-sprite-nineslice M2 / w11 + M4 / w16 (AC-16): once-per-
|
|
259
239
|
* renderable guard for the `nineslice.scale-too-small` metric increment.
|
|
@@ -322,7 +302,7 @@ export interface RenderFrameState {
|
|
|
322
302
|
*/
|
|
323
303
|
readonly materialBgShared: Map<string, WeakMap<object, unknown>>;
|
|
324
304
|
/** Cross-frame fast path for fully-resident, immutable material snapshots. */
|
|
325
|
-
readonly materialBgAssemblyCache: Map<
|
|
305
|
+
readonly materialBgAssemblyCache: Map<string, MaterialBgAssemblyCacheEntry>;
|
|
326
306
|
/**
|
|
327
307
|
* feat-20260622-handle-to-id-allocator-elimination M1 / w2: singleton
|
|
328
308
|
* material bind group cache (D-6). Single flat Map<variant, BindGroup>
|
|
@@ -353,7 +333,6 @@ export interface RenderFrameState {
|
|
|
353
333
|
* remains last-known-good until the candidate compiles successfully.
|
|
354
334
|
*/
|
|
355
335
|
installedPipelineHandle: number;
|
|
356
|
-
activePipelineId: string;
|
|
357
336
|
/**
|
|
358
337
|
* Active topology declaration resolved from the pipeline registry.
|
|
359
338
|
*/
|
|
@@ -408,7 +387,7 @@ export interface RenderFrameState {
|
|
|
408
387
|
lastFoldBucketCount: number;
|
|
409
388
|
/**
|
|
410
389
|
* feat-20260625-spot-light-shadow-mapping M2 / w9 (D-2): per-frame projection
|
|
411
|
-
* of `lights.spot` from the extract stage. The
|
|
390
|
+
* of `lights.spot` from the extract stage. The typed spot-shadow graph
|
|
412
391
|
* pass reads this list to render each
|
|
413
392
|
* castShadow spot's perspective depth into its `spotShadowDepth` atlas tile
|
|
414
393
|
* (viewport keyed on `shadowAtlasTile`). `recordFrame` writes it before
|
|
@@ -419,6 +398,11 @@ export interface RenderFrameState {
|
|
|
419
398
|
spotShadowSnapshots: readonly SpotLightSnapshot[];
|
|
420
399
|
}
|
|
421
400
|
|
|
401
|
+
export interface MorphBufferCacheEntry {
|
|
402
|
+
readonly buffer: GpuBuffer;
|
|
403
|
+
readonly byteLength: number;
|
|
404
|
+
}
|
|
405
|
+
|
|
422
406
|
/**
|
|
423
407
|
* feat-20260518-pbr-direct-lighting-mvp M5 / w22.11 (D-2 + D-10 + AC-06):
|
|
424
408
|
* mutable per-frame dispatch counter object owned by `createRenderSystem`
|
|
@@ -454,10 +438,12 @@ export interface BindGroupCounts {
|
|
|
454
438
|
* transparent-sort output back to this entry, and an optional per-material
|
|
455
439
|
* renderState override (bug-20260527-renderstate-pipeline-dispatch-gap D-4).
|
|
456
440
|
* Module-scoped so RenderPipelineContext can type `validated` / `validatedOrdered`
|
|
457
|
-
* without
|
|
441
|
+
* without a dynamic type escape (was a recordFrame-local interface before F-4).
|
|
458
442
|
*/
|
|
459
443
|
export interface ValidatedRenderable {
|
|
460
444
|
readonly source: RenderableSnapshot;
|
|
445
|
+
/** World that owns the renderable's asset handles and material snapshots. */
|
|
446
|
+
readonly world?: World;
|
|
461
447
|
readonly mesh: MeshGpuHandles;
|
|
462
448
|
readonly renderableIndex: number;
|
|
463
449
|
readonly renderState: MaterialRenderState | undefined;
|
|
@@ -483,8 +469,8 @@ export interface ValidatedRenderable {
|
|
|
483
469
|
* token beside the other RenderFrameState caches lets recordFrame skip a
|
|
484
470
|
* static caster submission without teaching the public render-pipeline
|
|
485
471
|
* contract about caching. Every source that can change caster depth is part
|
|
486
|
-
* of the
|
|
487
|
-
*
|
|
472
|
+
* of the token: world mutation, asset catalogue, graph/target identity, CSM
|
|
473
|
+
* matrices, and the GPU mesh-residency epoch.
|
|
488
474
|
*
|
|
489
475
|
* @internal
|
|
490
476
|
*/
|
|
@@ -496,20 +482,19 @@ export interface DirectionalShadowCache {
|
|
|
496
482
|
readonly graphTopologyKey: string | null;
|
|
497
483
|
readonly shadowMapSize: number;
|
|
498
484
|
readonly cascadeCount: number;
|
|
485
|
+
readonly lightViewProj: readonly Float32Array[];
|
|
499
486
|
readonly meshResidencyEpoch: number;
|
|
500
|
-
/** Bounded cascade-local hashes of volume, space, Scene Fact, batch, and resource inputs. */
|
|
501
|
-
readonly cascadeTokens: readonly string[];
|
|
502
|
-
/** True when Scene Fact + four-view visibility, rather than ECS fallback clocks, own the token. */
|
|
503
|
-
readonly productionSceneToken: boolean;
|
|
504
487
|
}
|
|
505
488
|
|
|
506
489
|
/**
|
|
507
490
|
* ECS state that can change the contents of a directional shadow map.
|
|
508
491
|
*
|
|
509
|
-
* The
|
|
510
|
-
*
|
|
492
|
+
* The ECS-owned RenderReadLease is the only render-facing mutation boundary.
|
|
493
|
+
* Its cursor is intentionally conservative: any published World change
|
|
494
|
+
* invalidates the cached atlas, while render never reaches through World for
|
|
495
|
+
* component-clock storage.
|
|
511
496
|
*/
|
|
512
497
|
export interface DirectionalShadowWorldState {
|
|
513
|
-
|
|
514
|
-
readonly
|
|
498
|
+
readonly worldIdentity: string;
|
|
499
|
+
readonly changeCursor: number;
|
|
515
500
|
}
|
|
@@ -1,19 +1,7 @@
|
|
|
1
1
|
import type { RhiCanvasContext, Texture, TextureView } from '@forgeax/engine-rhi';
|
|
2
|
-
import {
|
|
3
|
-
import { type RenderError, RenderFeatureStageFailedError } from '../errors/render';
|
|
4
|
-
import {
|
|
5
|
-
type RenderFeatureGraphicsPassDescriptor,
|
|
6
|
-
type RenderFeaturePreparedGraphicsState,
|
|
7
|
-
type RenderFeaturePreparedRef,
|
|
8
|
-
validateRenderFeatureGraphicsPass,
|
|
9
|
-
} from '../features/prepared-graphics';
|
|
10
|
-
import type {
|
|
11
|
-
PreparedGraphicsResolvedResource,
|
|
12
|
-
PreparedGraphicsResolvedSnapshot,
|
|
13
|
-
} from '../prepare/prepared-graphics-resolver';
|
|
14
|
-
import { configureSurface, type PipelineState, type RenderSystemInternals } from '../render-system';
|
|
2
|
+
import type { RenderGraphExecutionPhase } from '../render-contract';
|
|
15
3
|
import type { ExtractedLights } from '../render-system-extract';
|
|
16
|
-
import type
|
|
4
|
+
import { configureSurface, type PipelineState, type RenderSystemInternals } from './render-context';
|
|
17
5
|
|
|
18
6
|
export function graphExecutionPhase(passName: string): RenderGraphExecutionPhase {
|
|
19
7
|
if (passName.startsWith('shadowCascade')) return 'record/graph-execute/shadow';
|
|
@@ -33,8 +21,6 @@ export function graphExecutionPhase(passName: string): RenderGraphExecutionPhase
|
|
|
33
21
|
return 'record/graph-execute/lighting';
|
|
34
22
|
case 'forward':
|
|
35
23
|
return 'record/graph-execute/forward';
|
|
36
|
-
case 'scene-temporal':
|
|
37
|
-
return 'record/graph-execute/scene-temporal';
|
|
38
24
|
case 'tonemap':
|
|
39
25
|
return 'record/graph-execute/tonemap';
|
|
40
26
|
case 'debug-overlay':
|
|
@@ -98,241 +84,20 @@ export function acquireSwapChainTarget(
|
|
|
98
84
|
const viewDescriptor =
|
|
99
85
|
pipelineState.colorAttachmentFormat === pipelineState.format
|
|
100
86
|
? {}
|
|
101
|
-
: { format: pipelineState.colorAttachmentFormat as
|
|
87
|
+
: { format: pipelineState.colorAttachmentFormat as GPUTextureFormat };
|
|
102
88
|
const viewResult = internals.device.createTextureView(currentTextureResult.value, viewDescriptor);
|
|
103
89
|
if (!viewResult.ok) {
|
|
104
90
|
internals.errorRegistry.fire(viewResult.error);
|
|
105
91
|
return null;
|
|
106
92
|
}
|
|
107
|
-
const textureSize = currentTextureResult.value as unknown as {
|
|
108
|
-
readonly width: number;
|
|
109
|
-
readonly height: number;
|
|
110
|
-
};
|
|
111
93
|
return {
|
|
112
94
|
currentTexture: currentTextureResult.value,
|
|
113
95
|
view: viewResult.value,
|
|
114
|
-
targetW:
|
|
115
|
-
targetH:
|
|
96
|
+
targetW: internals.canvas.width | 0,
|
|
97
|
+
targetH: internals.canvas.height | 0,
|
|
116
98
|
};
|
|
117
99
|
}
|
|
118
100
|
|
|
119
|
-
export interface RenderFeatureGraphicsRecordingLedger {
|
|
120
|
-
pipeline: number;
|
|
121
|
-
binding: number;
|
|
122
|
-
vertex: number;
|
|
123
|
-
index: number;
|
|
124
|
-
draw: number;
|
|
125
|
-
setPipeline?: (handle: unknown) => void;
|
|
126
|
-
setBindGroup?: (handle: unknown) => void;
|
|
127
|
-
setBindGroupAt?: (index: number, handle: unknown, dynamicOffsets?: readonly number[]) => void;
|
|
128
|
-
resolveTargetBindings?: (
|
|
129
|
-
resource: Extract<PreparedGraphicsResolvedResource, { readonly kind: 'bindings' }>,
|
|
130
|
-
) => unknown;
|
|
131
|
-
setVertexBuffer?: (slot: number, handle: unknown) => void;
|
|
132
|
-
setIndexBuffer?: (handle: unknown, format: 'uint16' | 'uint32') => void;
|
|
133
|
-
recordDraw?: (
|
|
134
|
-
command: Extract<
|
|
135
|
-
RenderFeatureGraphicsPassDescriptor['draws'][number],
|
|
136
|
-
{ kind: 'draw' }
|
|
137
|
-
>['command'],
|
|
138
|
-
) => void;
|
|
139
|
-
recordDrawIndexed?: (
|
|
140
|
-
command: Extract<
|
|
141
|
-
RenderFeatureGraphicsPassDescriptor['draws'][number],
|
|
142
|
-
{ kind: 'draw-indexed' }
|
|
143
|
-
>['command'],
|
|
144
|
-
) => void;
|
|
145
|
-
recordDrawIndirect?: (buffer: unknown, offset: number) => void;
|
|
146
|
-
recordDrawIndexedIndirect?: (buffer: unknown, offset: number) => void;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
function resolvedResource(
|
|
150
|
-
snapshot: PreparedGraphicsResolvedSnapshot,
|
|
151
|
-
reference: RenderFeaturePreparedRef,
|
|
152
|
-
kind: PreparedGraphicsResolvedResource['kind'],
|
|
153
|
-
): PreparedGraphicsResolvedResource | undefined {
|
|
154
|
-
const resource = snapshot.resolve(reference);
|
|
155
|
-
return resource?.kind === kind ? resource : undefined;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
export function recordResolvedRenderFeatureGraphicsPass(
|
|
159
|
-
featureIdentity: string,
|
|
160
|
-
descriptor: RenderFeatureGraphicsPassDescriptor,
|
|
161
|
-
state: RenderFeaturePreparedGraphicsState,
|
|
162
|
-
resolved: PreparedGraphicsResolvedSnapshot,
|
|
163
|
-
ledger: RenderFeatureGraphicsRecordingLedger,
|
|
164
|
-
featureOrder = -1,
|
|
165
|
-
): Result<{ readonly acceptedDrawCount: number }, RenderError> {
|
|
166
|
-
const validated = validateRenderFeatureGraphicsPass(featureIdentity, descriptor, state);
|
|
167
|
-
if (!validated.ok) return validated;
|
|
168
|
-
const resolvedDraws: Array<{
|
|
169
|
-
readonly pipeline: PreparedGraphicsResolvedResource;
|
|
170
|
-
readonly bindings: readonly Extract<
|
|
171
|
-
PreparedGraphicsResolvedResource,
|
|
172
|
-
{ readonly kind: 'bindings' }
|
|
173
|
-
>[];
|
|
174
|
-
readonly vertexData: readonly {
|
|
175
|
-
readonly slot: number;
|
|
176
|
-
readonly resource: PreparedGraphicsResolvedResource;
|
|
177
|
-
}[];
|
|
178
|
-
readonly indexData: PreparedGraphicsResolvedResource | undefined;
|
|
179
|
-
readonly draw: (typeof descriptor.draws)[number];
|
|
180
|
-
}> = [];
|
|
181
|
-
for (const draw of descriptor.draws) {
|
|
182
|
-
const pipeline = resolvedResource(resolved, draw.pipeline, 'pipeline');
|
|
183
|
-
const bindings = draw.bindings.map((binding) =>
|
|
184
|
-
resolvedResource(resolved, binding, 'bindings'),
|
|
185
|
-
);
|
|
186
|
-
const vertexData = draw.vertexData.map((vertex) => ({
|
|
187
|
-
slot: vertex.slot,
|
|
188
|
-
resource: resolvedResource(resolved, vertex.resource, 'vertex-data'),
|
|
189
|
-
}));
|
|
190
|
-
const indexData =
|
|
191
|
-
draw.indexData === undefined
|
|
192
|
-
? undefined
|
|
193
|
-
: resolvedResource(resolved, draw.indexData.resource, 'index-data');
|
|
194
|
-
if (
|
|
195
|
-
pipeline === undefined ||
|
|
196
|
-
bindings.some((binding) => binding === undefined) ||
|
|
197
|
-
vertexData.some((vertex) => vertex.resource === undefined) ||
|
|
198
|
-
(draw.indexData !== undefined && indexData === undefined)
|
|
199
|
-
) {
|
|
200
|
-
return err(
|
|
201
|
-
new RenderFeatureStageFailedError(featureIdentity, featureOrder, 'record', 'next-frame'),
|
|
202
|
-
);
|
|
203
|
-
}
|
|
204
|
-
resolvedDraws.push({
|
|
205
|
-
pipeline,
|
|
206
|
-
bindings: bindings as Extract<
|
|
207
|
-
PreparedGraphicsResolvedResource,
|
|
208
|
-
{ readonly kind: 'bindings' }
|
|
209
|
-
>[],
|
|
210
|
-
vertexData: vertexData as {
|
|
211
|
-
readonly slot: number;
|
|
212
|
-
readonly resource: PreparedGraphicsResolvedResource;
|
|
213
|
-
}[],
|
|
214
|
-
indexData,
|
|
215
|
-
draw,
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
for (const resolvedDraw of resolvedDraws) {
|
|
220
|
-
ledger.pipeline += 1;
|
|
221
|
-
ledger.setPipeline?.(resolvedDraw.pipeline.handle);
|
|
222
|
-
for (const [index, binding] of resolvedDraw.bindings.entries()) {
|
|
223
|
-
ledger.binding += 1;
|
|
224
|
-
const handle = binding.handle ?? ledger.resolveTargetBindings?.(binding);
|
|
225
|
-
if (handle === undefined) {
|
|
226
|
-
return err(
|
|
227
|
-
new RenderFeatureStageFailedError(featureIdentity, featureOrder, 'record', 'next-frame'),
|
|
228
|
-
);
|
|
229
|
-
}
|
|
230
|
-
if (ledger.setBindGroupAt !== undefined) {
|
|
231
|
-
ledger.setBindGroupAt(index, handle, binding.dynamicOffsets);
|
|
232
|
-
} else {
|
|
233
|
-
ledger.setBindGroup?.(handle);
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
for (const vertex of resolvedDraw.vertexData) {
|
|
237
|
-
ledger.vertex += 1;
|
|
238
|
-
ledger.setVertexBuffer?.(vertex.slot, vertex.resource.handle);
|
|
239
|
-
}
|
|
240
|
-
if (
|
|
241
|
-
resolvedDraw.draw.kind === 'draw-indexed' ||
|
|
242
|
-
resolvedDraw.draw.kind === 'draw-indexed-indirect'
|
|
243
|
-
) {
|
|
244
|
-
const indexData = resolvedDraw.draw.indexData;
|
|
245
|
-
const indexHandle = resolvedDraw.indexData?.handle;
|
|
246
|
-
if (indexData === undefined || indexHandle === undefined) {
|
|
247
|
-
return err(
|
|
248
|
-
new RenderFeatureStageFailedError(featureIdentity, featureOrder, 'record', 'next-frame'),
|
|
249
|
-
);
|
|
250
|
-
}
|
|
251
|
-
ledger.index += 1;
|
|
252
|
-
ledger.setIndexBuffer?.(indexHandle, indexData.format);
|
|
253
|
-
ledger.draw += 1;
|
|
254
|
-
if (resolvedDraw.draw.kind === 'draw-indexed-indirect') {
|
|
255
|
-
const indirect = resolved.resolveGpuBuffer?.(resolvedDraw.draw.command.buffer)?.buffer;
|
|
256
|
-
if (indirect === undefined) {
|
|
257
|
-
return err(
|
|
258
|
-
new RenderFeatureStageFailedError(
|
|
259
|
-
featureIdentity,
|
|
260
|
-
featureOrder,
|
|
261
|
-
'record',
|
|
262
|
-
'renderer-recover',
|
|
263
|
-
),
|
|
264
|
-
);
|
|
265
|
-
}
|
|
266
|
-
ledger.recordDrawIndexedIndirect?.(indirect, resolvedDraw.draw.command.offset ?? 0);
|
|
267
|
-
} else {
|
|
268
|
-
ledger.recordDrawIndexed?.(resolvedDraw.draw.command);
|
|
269
|
-
}
|
|
270
|
-
} else {
|
|
271
|
-
ledger.draw += 1;
|
|
272
|
-
if (resolvedDraw.draw.kind === 'draw-indirect') {
|
|
273
|
-
const indirect = resolved.resolveGpuBuffer?.(resolvedDraw.draw.command.buffer)?.buffer;
|
|
274
|
-
if (indirect === undefined) {
|
|
275
|
-
return err(
|
|
276
|
-
new RenderFeatureStageFailedError(
|
|
277
|
-
featureIdentity,
|
|
278
|
-
featureOrder,
|
|
279
|
-
'record',
|
|
280
|
-
'renderer-recover',
|
|
281
|
-
),
|
|
282
|
-
);
|
|
283
|
-
}
|
|
284
|
-
ledger.recordDrawIndirect?.(indirect, resolvedDraw.draw.command.offset ?? 0);
|
|
285
|
-
} else {
|
|
286
|
-
ledger.recordDraw?.(resolvedDraw.draw.command);
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
return ok(validated.value);
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
export function recordRenderFeatureGraphicsPass(
|
|
294
|
-
featureIdentity: string,
|
|
295
|
-
descriptor: RenderFeatureGraphicsPassDescriptor,
|
|
296
|
-
state: RenderFeaturePreparedGraphicsState,
|
|
297
|
-
ledger: RenderFeatureGraphicsRecordingLedger,
|
|
298
|
-
): Result<{ readonly acceptedDrawCount: number }, RenderError> {
|
|
299
|
-
const validated = validateRenderFeatureGraphicsPass(featureIdentity, descriptor, state);
|
|
300
|
-
if (!validated.ok) return validated;
|
|
301
|
-
for (const draw of descriptor.draws) {
|
|
302
|
-
ledger.pipeline += 1;
|
|
303
|
-
ledger.setPipeline?.(draw.pipeline);
|
|
304
|
-
for (const binding of draw.bindings) {
|
|
305
|
-
ledger.binding += 1;
|
|
306
|
-
ledger.setBindGroup?.(binding);
|
|
307
|
-
}
|
|
308
|
-
for (const vertex of draw.vertexData) {
|
|
309
|
-
ledger.vertex += 1;
|
|
310
|
-
ledger.setVertexBuffer?.(vertex.slot, vertex.resource);
|
|
311
|
-
}
|
|
312
|
-
if (draw.kind === 'draw-indexed' || draw.kind === 'draw-indexed-indirect') {
|
|
313
|
-
if (draw.indexData === undefined) {
|
|
314
|
-
return err(new RenderFeatureStageFailedError(featureIdentity, -1, 'record', 'next-frame'));
|
|
315
|
-
}
|
|
316
|
-
ledger.index += 1;
|
|
317
|
-
ledger.setIndexBuffer?.(draw.indexData.resource, draw.indexData.format);
|
|
318
|
-
ledger.draw += 1;
|
|
319
|
-
if (draw.kind === 'draw-indexed-indirect') {
|
|
320
|
-
ledger.recordDrawIndexedIndirect?.(draw.command.buffer, draw.command.offset ?? 0);
|
|
321
|
-
} else {
|
|
322
|
-
ledger.recordDrawIndexed?.(draw.command);
|
|
323
|
-
}
|
|
324
|
-
} else {
|
|
325
|
-
ledger.draw += 1;
|
|
326
|
-
if (draw.kind === 'draw-indirect') {
|
|
327
|
-
ledger.recordDrawIndirect?.(draw.command.buffer, draw.command.offset ?? 0);
|
|
328
|
-
} else {
|
|
329
|
-
ledger.recordDraw?.(draw.command);
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
return ok(validated.value);
|
|
334
|
-
}
|
|
335
|
-
|
|
336
101
|
export function resolveShadowMapSize(
|
|
337
102
|
internals: RenderSystemInternals,
|
|
338
103
|
lights: ExtractedLights,
|
|
@@ -353,9 +118,9 @@ export function resolveShadowMapSize(
|
|
|
353
118
|
|
|
354
119
|
/**
|
|
355
120
|
* Resolve the per-tile size for the graph-owned spot atlas when a frame has
|
|
356
|
-
* no directional shadow map.
|
|
357
|
-
* viewport
|
|
358
|
-
*
|
|
121
|
+
* no directional shadow map. The typed spot pass still needs a non-zero
|
|
122
|
+
* viewport in a spot-only world; the directional resolver cannot provide
|
|
123
|
+
* that because it intentionally follows only the directional shadow lane.
|
|
359
124
|
*/
|
|
360
125
|
export function resolveSpotShadowMapSize(
|
|
361
126
|
internals: RenderSystemInternals,
|