@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
|
@@ -54,7 +54,7 @@ import { defineComponent } from '@forgeax/engine-ecs';
|
|
|
54
54
|
* `color` * `intensity` then scale the IBL ambient.
|
|
55
55
|
*
|
|
56
56
|
* `equirect` is an OPTIONAL `Handle<EquirectAsset>` resolved from a vite
|
|
57
|
-
* pack-index GUID via `assets.
|
|
57
|
+
* pack-index GUID via `engine.assets.loadByGuid<EquirectAsset>(guid)`. The
|
|
58
58
|
* cubemap projection is internal and idempotent: the same equirect source
|
|
59
59
|
* always resolves to the same GPU cubemap (no user upload call).
|
|
60
60
|
*
|
|
@@ -78,7 +78,7 @@ import { defineComponent } from '@forgeax/engine-ecs';
|
|
|
78
78
|
* const guidRes = AssetGuid.parse('019e4a26-3c29-7420-af5d-20f2724a16b0');
|
|
79
79
|
* if (!guidRes.ok) throw guidRes.error;
|
|
80
80
|
* // 2. load the HDR equirect via the GUID-addressed pack route
|
|
81
|
-
* const hdrRes = await assets.
|
|
81
|
+
* const hdrRes = await engine.assets.loadByGuid<EquirectAsset>(guidRes.value);
|
|
82
82
|
* if (!hdrRes.ok) throw hdrRes.error;
|
|
83
83
|
* // 3. spawn the Skylight — the equirect handle activates the full IBL path;
|
|
84
84
|
* // the cubemap + IBL precompute happen lazily inside the record arm.
|
|
@@ -95,111 +95,3 @@ export const Skylight = defineComponent('Skylight', {
|
|
|
95
95
|
intensity: { type: 'f32', default: 1.0 },
|
|
96
96
|
rotation: { type: 'array<f32, 4>', default: new Float32Array([0, 0, 0, 1]) },
|
|
97
97
|
});
|
|
98
|
-
|
|
99
|
-
export const Fog = defineComponent('Fog', {
|
|
100
|
-
color: { type: 'array<f32, 3>', default: new Float32Array([0.5, 0.5, 0.5]) },
|
|
101
|
-
density: { type: 'f32', default: 0.01 },
|
|
102
|
-
heightFalloff: { type: 'f32', default: 0 },
|
|
103
|
-
maxOpacity: { type: 'f32', default: 1 },
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
// @forgeax/engine-runtime - SkyboxBackground (environment cubemap render background).
|
|
107
|
-
//
|
|
108
|
-
// Schema: 3 fields -- equirect (Handle<EquirectAsset>, u32-stored handle)
|
|
109
|
-
// + mode (f32 enum column, discriminator) + rotation (quaternion xyzw,
|
|
110
|
-
// default identity). Naming convention follows the
|
|
111
|
-
// single-semantic component rule: no Component suffix (AGENTS.md rule #1).
|
|
112
|
-
//
|
|
113
|
-
// feat-20260630-equirect-kind-internalized-ibl-declarative-skyligh M3 / w16:
|
|
114
|
-
// the field is `equirect: shared<EquirectAsset>` (the retired
|
|
115
|
-
// `cubemap: shared<CubeTextureAsset>` is gone). The skybox reuses the same
|
|
116
|
-
// equirect handle as the Skylight; the cubemap projection is internal and
|
|
117
|
-
// driven by the render-system record arm (no user upload call).
|
|
118
|
-
//
|
|
119
|
-
// Plan-strategy D-5: mode is a f32 enum column (ECS columns are POD, no
|
|
120
|
-
// string unions in archetype storage). Consumer-facing type safety is
|
|
121
|
-
// provided by the `SkyboxMode` literal union + `skyboxModeFromF32` mapper
|
|
122
|
-
// (same pattern as cameraProjectionFromF32 in camera.ts:51,105,145,221-237).
|
|
123
|
-
//
|
|
124
|
-
// OOS-1: `mode: 'atmosphere'` implementation is deferred -- the union
|
|
125
|
-
// shape leaves room for additive growth without breaking the f32 enum
|
|
126
|
-
// encoding.
|
|
127
|
-
//
|
|
128
|
-
// AI user minimum spawn (charter P4):
|
|
129
|
-
// world.spawn({ component: SkyboxBackground, data: { equirect, mode: 0 } });
|
|
130
|
-
//
|
|
131
|
-
// Single component activates the skybox render pass transparently when a
|
|
132
|
-
// Skylight + tonemap active camera is present (skybox reuses the same
|
|
133
|
-
// equirect handle as Skylight).
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* Skybox mode literal union (AC-02 narrowing surface).
|
|
137
|
-
* Currently only 'cubemap' -- future 'atmosphere' deferred per OOS-1.
|
|
138
|
-
*/
|
|
139
|
-
export type SkyboxMode = 'cubemap';
|
|
140
|
-
|
|
141
|
-
/** Numeric encoding of cubemap skybox mode (schema value for `mode`). */
|
|
142
|
-
export const SKYBOX_MODE_CUBEMAP = 0;
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* Map a `SkyboxBackground.mode` numeric value to the closed `SkyboxMode`
|
|
146
|
-
* string-literal union. Only member currently is 'cubemap'; the exhaustive
|
|
147
|
-
* switch is ready for future mode additions (e.g. 'atmosphere', OOS-1).
|
|
148
|
-
*/
|
|
149
|
-
export function skyboxModeFromF32(value: number): SkyboxMode {
|
|
150
|
-
switch (value) {
|
|
151
|
-
case SKYBOX_MODE_CUBEMAP:
|
|
152
|
-
return 'cubemap';
|
|
153
|
-
// Future: case SKYBOX_MODE_ATMOSPHERE: return 'atmosphere';
|
|
154
|
-
}
|
|
155
|
-
// Unrecognised value: fall back to 'cubemap' (charter P3 -- no silent
|
|
156
|
-
// exception; the fallback preserves rendering on stale numerics while the
|
|
157
|
-
// exhaustive switch shape ensures AI users catch new members at compile
|
|
158
|
-
// time when a mode is added).
|
|
159
|
-
return 'cubemap';
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
/**
|
|
163
|
-
* SkyboxBackground: full-screen environment cubemap background.
|
|
164
|
-
*
|
|
165
|
-
* Renders a fullscreen triangle that reconstructs world-space view
|
|
166
|
-
* direction from the camera's inverseViewProj matrix (View UBO),
|
|
167
|
-
* samples a cubemap with the view direction, and writes an HDR color
|
|
168
|
-
* to the hdrColor render target (before the main geometry pass).
|
|
169
|
-
*
|
|
170
|
-
* The skybox pass is automatically activated when a SkyboxBackground
|
|
171
|
-
* entity exists, a Skylight entity provides the equirect source, and the
|
|
172
|
-
* active Camera has tonemap active. The skybox reuses the same equirect
|
|
173
|
-
* handle as the Skylight entity -- two independent components sharing the
|
|
174
|
-
* same GPU resource (the internally-projected cubemap).
|
|
175
|
-
*
|
|
176
|
-
* `equirect` is resolved from a Vite pack-index GUID through the App-owned
|
|
177
|
-
* AssetRegistry (`AssetRegistry.load(guid, 'equirect')`). The cubemap
|
|
178
|
-
* projection is internal and driven by the render-system record arm; there
|
|
179
|
-
* is no user upload call.
|
|
180
|
-
*
|
|
181
|
-
* `mode` is a numeric discriminator column (`f32`). Use
|
|
182
|
-
* `SKYBOX_MODE_CUBEMAP` for the cubemap render path.
|
|
183
|
-
*
|
|
184
|
-
* `rotation` is an environment-space quaternion in `[x, y, z, w]` order.
|
|
185
|
-
* It rotates the sampled cubemap without changing the camera or rebaking the
|
|
186
|
-
* source equirectangular asset.
|
|
187
|
-
*
|
|
188
|
-
* @example Minimum spawn (defaults mode=0):
|
|
189
|
-
* // Resolve the equirect payload through the App AssetRegistry.
|
|
190
|
-
* world.spawn({ component: SkyboxBackground, data: { equirect: equirectHandle } });
|
|
191
|
-
*
|
|
192
|
-
* @example Single handle shared between Skylight (IBL) and SkyboxBackground:
|
|
193
|
-
* const hdrRes = await assets.load(guid, 'equirect');
|
|
194
|
-
* if (!hdrRes.ok) throw hdrRes.error;
|
|
195
|
-
* world.spawn({ component: Skylight, data: { equirect: hdrRes.value } });
|
|
196
|
-
* world.spawn({ component: SkyboxBackground, data: { equirect: hdrRes.value } });
|
|
197
|
-
*/
|
|
198
|
-
export const SkyboxBackground = defineComponent('SkyboxBackground', {
|
|
199
|
-
// The GPU skybox projection is render-owned presentation state; restore
|
|
200
|
-
// keeps the portable mode/rotation controls and lets the owner re-resolve
|
|
201
|
-
// the environment asset on the target world.
|
|
202
|
-
equirect: { type: 'shared<EquirectAsset>', simulationTransient: true },
|
|
203
|
-
mode: { type: 'f32', default: SKYBOX_MODE_CUBEMAP },
|
|
204
|
-
rotation: { type: 'array<f32, 4>', default: new Float32Array([0, 0, 0, 1]) },
|
|
205
|
-
});
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
// 2. Register the sprite material referencing the atlas
|
|
60
60
|
// `TextureAsset` with the initial frame's `region` rectangle (the
|
|
61
61
|
// runtime tick system overrides this region per entity per frame).
|
|
62
|
-
// 3. `world.spawn` an entity with
|
|
62
|
+
// 3. `world.spawn` an entity with `MeshFilter(HANDLE_QUAD)` +
|
|
63
63
|
// `MeshRenderer(spriteMaterial)` + `Instances(...)` plus this
|
|
64
64
|
// `SpriteAnimation` (frameCount / frameDuration / regions /
|
|
65
65
|
// playbackMode) and `SpriteRegionOverride { region }` (the tick
|
|
@@ -122,8 +122,7 @@ import { defineComponent } from '@forgeax/engine-ecs';
|
|
|
122
122
|
* SpriteAnimation, SpriteRegionOverride, SPRITE_PLAYBACK_MODE_LOOP,
|
|
123
123
|
* } from '@forgeax/engine-render/authoring';
|
|
124
124
|
* import { Transform } from '@forgeax/engine-scene';
|
|
125
|
-
* import {
|
|
126
|
-
* const quadMesh = world.internSharedRef(createPrimitiveMesh('quad').unwrap());
|
|
125
|
+
* import { HANDLE_QUAD } from '@forgeax/engine-assets-runtime';
|
|
127
126
|
*
|
|
128
127
|
* // 4 frames packed in an atlas, each 64x64 inside a 256x64 row:
|
|
129
128
|
* const regions = new Float32Array([
|
|
@@ -135,7 +134,7 @@ import { defineComponent } from '@forgeax/engine-ecs';
|
|
|
135
134
|
* world.spawn(
|
|
136
135
|
* { component: Transform, data: { pos: [0, 0, 0],
|
|
137
136
|
* quat: [0, 0, 0, 1], scale: [1, 1, 1] } },
|
|
138
|
-
* { component: MeshFilter, data: { assetHandle:
|
|
137
|
+
* { component: MeshFilter, data: { assetHandle: HANDLE_QUAD } },
|
|
139
138
|
* { component: MeshRenderer, data: { materials: [spriteMaterial] } },
|
|
140
139
|
* { component: SpriteAnimation,
|
|
141
140
|
* data: {
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
// const regions = new Float32Array(N * 4);
|
|
67
67
|
// // ... fill column-major mat4 columns + [uMin, vMin, uW, vH] per instance ...
|
|
68
68
|
// world.spawn(
|
|
69
|
-
// { component: MeshFilter, data: { assetHandle:
|
|
69
|
+
// { component: MeshFilter, data: { assetHandle: HANDLE_QUAD } },
|
|
70
70
|
// { component: MeshRenderer, data: { /* sprite-shaded MaterialAsset */ } },
|
|
71
71
|
// { component: SpriteInstances, data: { transforms, regions } },
|
|
72
72
|
// );
|
|
@@ -146,7 +146,7 @@ import { defineComponent } from '@forgeax/engine-ecs';
|
|
|
146
146
|
* const regions = new Float32Array(10000 * 4);
|
|
147
147
|
* // ... fill mat4 columns + [uMin, vMin, uW, vH] ...
|
|
148
148
|
* world.spawn(
|
|
149
|
-
* { component: MeshFilter, data: { assetHandle:
|
|
149
|
+
* { component: MeshFilter, data: { assetHandle: HANDLE_QUAD } },
|
|
150
150
|
* { component: MeshRenderer, data: { ... } },
|
|
151
151
|
* { component: SpriteInstances, data: { transforms, regions } },
|
|
152
152
|
* );
|
|
@@ -55,10 +55,16 @@ export const SPRITE_PLAYBACK_MODE_LOOP = 0 as const;
|
|
|
55
55
|
/** Numeric encoding of the clamp playback mode (schema value for `playbackMode`). */
|
|
56
56
|
export const SPRITE_PLAYBACK_MODE_CLAMP = 1 as const;
|
|
57
57
|
|
|
58
|
+
/** Grouped authoring values; the numeric ECS encoding stays owner-local. */
|
|
59
|
+
export const SpritePlayback = Object.freeze({
|
|
60
|
+
loop: SPRITE_PLAYBACK_MODE_LOOP,
|
|
61
|
+
clamp: SPRITE_PLAYBACK_MODE_CLAMP,
|
|
62
|
+
} as const);
|
|
63
|
+
|
|
58
64
|
/**
|
|
59
65
|
* Map a `SpriteAnimation.playbackMode` numeric column value to the closed
|
|
60
66
|
* `SpritePlaybackMode` string-literal union. The defensive fallback mirrors
|
|
61
|
-
* `cameraProjectionFromF32` / `tonemapFromF32` precedent —
|
|
67
|
+
* `cameraProjectionFromF32` / `tonemapFromF32` precedent — a value other
|
|
62
68
|
* than `SPRITE_PLAYBACK_MODE_CLAMP` (1) maps to `'loop'`, so stale or
|
|
63
69
|
* uninitialised entities surface a predictable playback shape through the
|
|
64
70
|
* tick-system query (rather than throwing or returning `undefined`).
|
|
@@ -85,13 +85,12 @@ import { defineComponent } from '@forgeax/engine-ecs';
|
|
|
85
85
|
* import { MeshFilter, MeshRenderer } from '@forgeax/engine-render';
|
|
86
86
|
* import { SpriteRegionOverride } from '@forgeax/engine-render/authoring';
|
|
87
87
|
* import { Transform } from '@forgeax/engine-scene';
|
|
88
|
-
* import {
|
|
89
|
-
* const quadMesh = world.internSharedRef(createPrimitiveMesh('quad').unwrap());
|
|
88
|
+
* import { HANDLE_QUAD } from '@forgeax/engine-assets-runtime';
|
|
90
89
|
*
|
|
91
90
|
* world.spawn(
|
|
92
91
|
* { component: Transform, data: { pos: [0, 0, 0],
|
|
93
92
|
* quat: [0, 0, 0, 1], scale: [1, 1, 1] } },
|
|
94
|
-
* { component: MeshFilter, data: { assetHandle:
|
|
93
|
+
* { component: MeshFilter, data: { assetHandle: HANDLE_QUAD } },
|
|
95
94
|
* { component: MeshRenderer, data: { materials: [spriteMaterial] } },
|
|
96
95
|
* { component: SpriteRegionOverride,
|
|
97
96
|
* data: { region: new Float32Array([0.5, 0, 0.5, 1]) } },
|
|
@@ -56,6 +56,12 @@ import type { Result } from '@forgeax/engine-types';
|
|
|
56
56
|
*/
|
|
57
57
|
export type SortScope = 'layer' | 'per-cell';
|
|
58
58
|
|
|
59
|
+
/** Compact authoring values for the stored u8 sort-scope field. */
|
|
60
|
+
export const TilemapSort = Object.freeze({
|
|
61
|
+
layer: 0 as const,
|
|
62
|
+
perCell: 1 as const,
|
|
63
|
+
});
|
|
64
|
+
|
|
59
65
|
/**
|
|
60
66
|
* Bridge: `SortScope` -> on-disk u8. SSOT for the encoding (`'layer'` -> 0,
|
|
61
67
|
* `'per-cell'` -> 1). The compile-time exhaustive switch guards against
|
|
@@ -65,9 +71,9 @@ export type SortScope = 'layer' | 'per-cell';
|
|
|
65
71
|
export function encodeSortScope(scope: SortScope): 0 | 1 {
|
|
66
72
|
switch (scope) {
|
|
67
73
|
case 'layer':
|
|
68
|
-
return
|
|
74
|
+
return TilemapSort.layer;
|
|
69
75
|
case 'per-cell':
|
|
70
|
-
return
|
|
76
|
+
return TilemapSort.perCell;
|
|
71
77
|
}
|
|
72
78
|
}
|
|
73
79
|
|
|
@@ -1,4 +1,67 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
} from './
|
|
1
|
+
import type { AssetRegistry } from '@forgeax/engine-assets-runtime';
|
|
2
|
+
import type { RhiBackendPack } from './assembly/backend-contract';
|
|
3
|
+
import type { BundlerOptions } from './assembly/factory';
|
|
4
|
+
import { createRenderer, exposeRenderer } from './assembly/factory';
|
|
5
|
+
import type {
|
|
6
|
+
RendererHostImplementation,
|
|
7
|
+
RendererLegacyHostAdapter,
|
|
8
|
+
} from './assembly/host-contract';
|
|
9
|
+
import { type RenderError, RendererContractFailureError } from './errors/render';
|
|
10
|
+
import type { Renderer, RendererOptions, RenderResult } from './render-contract';
|
|
11
|
+
|
|
12
|
+
export type {
|
|
13
|
+
EngineEnvironmentErrorDetail,
|
|
14
|
+
RhiBackendInstrumentation,
|
|
15
|
+
RhiBackendPack,
|
|
16
|
+
} from './assembly/backend-contract';
|
|
17
|
+
export { EngineEnvironmentError } from './assembly/backend-contract';
|
|
18
|
+
export type { RendererLegacyHostAdapter } from './assembly/host-contract';
|
|
19
|
+
export type { BundlerOptions };
|
|
20
|
+
|
|
21
|
+
export type RendererFeatureAssemblyHost = Pick<
|
|
22
|
+
RendererLegacyHostAdapter,
|
|
23
|
+
'installRenderFeature' | 'uninstallRenderFeature'
|
|
24
|
+
>;
|
|
25
|
+
|
|
26
|
+
export interface RendererHostAssembly {
|
|
27
|
+
readonly renderer: Renderer;
|
|
28
|
+
readonly debugDrawHost: RendererHostImplementation;
|
|
29
|
+
readonly featureHost: RendererFeatureAssemblyHost;
|
|
30
|
+
readonly assets: AssetRegistry;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export async function constructRendererHost(
|
|
34
|
+
canvas: unknown,
|
|
35
|
+
options?: RendererOptions,
|
|
36
|
+
bundler?: BundlerOptions,
|
|
37
|
+
backend?: RhiBackendPack,
|
|
38
|
+
): Promise<RenderResult<RendererHostAssembly, RenderError>> {
|
|
39
|
+
try {
|
|
40
|
+
const implementation = await createRenderer(canvas, options, bundler, backend);
|
|
41
|
+
const ready = await implementation.initialization;
|
|
42
|
+
if (!ready.ok) {
|
|
43
|
+
return {
|
|
44
|
+
ok: false,
|
|
45
|
+
error: new RendererContractFailureError(
|
|
46
|
+
'construct',
|
|
47
|
+
`${ready.error.code}: ${ready.error.hint}`,
|
|
48
|
+
),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
ok: true,
|
|
53
|
+
value: {
|
|
54
|
+
renderer: exposeRenderer(implementation),
|
|
55
|
+
debugDrawHost: implementation,
|
|
56
|
+
featureHost: implementation,
|
|
57
|
+
assets: implementation.assetRegistry,
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
} catch (cause) {
|
|
61
|
+
const detail = cause instanceof Error ? cause.message : String(cause);
|
|
62
|
+
return {
|
|
63
|
+
ok: false,
|
|
64
|
+
error: new RendererContractFailureError('construct', detail),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}
|
package/src/debug-draw-glue.ts
CHANGED
|
@@ -1,128 +1,13 @@
|
|
|
1
|
-
// @forgeax/engine-
|
|
1
|
+
// @forgeax/engine-render - typed debug overlay graph contribution.
|
|
2
2
|
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
// Two exports:
|
|
8
|
-
// (a) createDebugDrawOnReady(renderer, format?) — creates a DebugDraw instance
|
|
9
|
-
// once renderer.ready settles. Sets the package-internal registry so the
|
|
10
|
-
// graph pass closures can reach it. Called from createApp to populate
|
|
11
|
-
// app.debugDraw.
|
|
12
|
-
// (b) attachDebugOverlayPass(graph, getViewProj) — adds a tonemap-suffix
|
|
13
|
-
// overlay pass to a render-graph. The pass execute closure reads the
|
|
14
|
-
// internally-registered DebugDraw instance (set by createDebugDrawOnReady).
|
|
3
|
+
// App owns the concrete DebugDraw instance and injects its declaration-only
|
|
4
|
+
// capability through the Renderer host. Render owns graph ordering and pass
|
|
5
|
+
// encoding without depending on the debug-draw package.
|
|
15
6
|
|
|
16
|
-
import
|
|
17
|
-
import {
|
|
18
|
-
import { type Mat4, mat4 } from '@forgeax/engine-math';
|
|
19
|
-
import type {
|
|
20
|
-
RenderGraph,
|
|
21
|
-
RenderGraphBuilder,
|
|
22
|
-
RenderGraphError,
|
|
23
|
-
} from '@forgeax/engine-render-graph';
|
|
24
|
-
import type { TextureFormat, TextureView } from '@forgeax/engine-rhi';
|
|
7
|
+
import { mat4 } from '@forgeax/engine-math';
|
|
8
|
+
import type { RenderGraphBuilder, RenderGraphError } from '@forgeax/engine-render-graph';
|
|
25
9
|
import type { Result } from '@forgeax/engine-types';
|
|
26
|
-
import type { RenderPipelineFrame } from './render-pipeline';
|
|
27
|
-
import type { RenderPipelineContext } from './render-pipeline-context';
|
|
28
|
-
import type { RenderPipelineTarget } from './render-pipeline-target';
|
|
29
|
-
import type { Renderer } from './renderer';
|
|
30
|
-
import { selectSwapChainFormat } from './surface-format';
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Package-internal registry: the active DebugDraw instance for the current
|
|
34
|
-
* renderer. Set by createDebugDrawOnReady, read by attachDebugOverlayPass
|
|
35
|
-
* execute closures. A single renderer has one DebugDraw instance.
|
|
36
|
-
*/
|
|
37
|
-
let registeredDebugDraw: DebugDraw | null = null;
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Create a DebugDraw instance once `renderer.ready` settles.
|
|
41
|
-
*
|
|
42
|
-
* Waits for the GPU device + shader manifest + builtin asset upload to
|
|
43
|
-
* complete before creating the DebugDraw PSO. Stores the instance in the
|
|
44
|
-
* package-internal registry so graph pass closures can reach it.
|
|
45
|
-
*
|
|
46
|
-
* Bug A fix (feat-20260626 m6-4): the PSO color format MUST equal the swap-chain
|
|
47
|
-
* LDR view the overlay pass draws into (`attachDebugOverlayPass` flushes to
|
|
48
|
-
* `ctx.view`), or the backend rejects the render pass with an attachment-state
|
|
49
|
-
* mismatch every frame. The view format is the SSOT
|
|
50
|
-
* `selectSwapChainFormat(caps.storageBuffer).view` -- `bgra8unorm-srgb` on
|
|
51
|
-
* native WebGPU (follows getPreferredCanvasFormat + the srgb-via-viewFormats
|
|
52
|
-
* route) and `rgba8unorm-srgb` on wgpu-wasm GLES -- the same derivation
|
|
53
|
-
* `PipelineState.colorAttachmentFormat` uses (memory
|
|
54
|
-
* offscreen-rt-format-must-follow-swapchain-not-hardcode-rgba). The hardcoded
|
|
55
|
-
* `'bgra8unorm'` default was latent until the overlay pass actually flushed
|
|
56
|
-
* (before the glue merge the pass was a no-op stub that never validated). A
|
|
57
|
-
* caller may still pass an explicit `format` to target a custom surface.
|
|
58
|
-
*/
|
|
59
|
-
export async function createDebugDrawOnReady(
|
|
60
|
-
renderer: Renderer,
|
|
61
|
-
format?: TextureFormat,
|
|
62
|
-
): Promise<DebugDraw> {
|
|
63
|
-
const ready = await renderer.ready;
|
|
64
|
-
if (!ready.ok) throw ready.error;
|
|
65
|
-
|
|
66
|
-
const resolvedFormat =
|
|
67
|
-
format ??
|
|
68
|
-
(selectSwapChainFormat(renderer.device.caps.storageBuffer).view as unknown as TextureFormat);
|
|
69
|
-
|
|
70
|
-
const ddResult = await createDebugDraw({
|
|
71
|
-
device: renderer.device,
|
|
72
|
-
queue: renderer.device.queue,
|
|
73
|
-
createShaderModule: renderer._internal_createShaderModule,
|
|
74
|
-
format: resolvedFormat,
|
|
75
|
-
});
|
|
76
|
-
if (!ddResult.ok) throw ddResult.error;
|
|
77
|
-
|
|
78
|
-
registeredDebugDraw = ddResult.value;
|
|
79
|
-
return ddResult.value;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/** Release one app-owned DebugDraw and remove it from render-pass lookup. */
|
|
83
|
-
export function releaseDebugDraw(debugDraw: DebugDraw): void {
|
|
84
|
-
if (registeredDebugDraw === debugDraw) registeredDebugDraw = null;
|
|
85
|
-
debugDraw.destroy();
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Attach a DebugOverlay pass to a render graph at the tonemap suffix.
|
|
90
|
-
*
|
|
91
|
-
* The pass is added with empty reads/writes (the swap-chain is not a
|
|
92
|
-
* graph-declared target). The execute closure reads `ctx.view` (the
|
|
93
|
-
* swap-chain TextureView) + `ctx.encoder` (the shared frame command
|
|
94
|
-
* encoder) and calls `dd.flush(encoder, view, viewProj)` using the
|
|
95
|
-
* registered DebugDraw instance.
|
|
96
|
-
*
|
|
97
|
-
* When no DebugDraw is registered (createDebugDrawOnReady not called,
|
|
98
|
-
* or tree-shaken), the pass is a silent no-op.
|
|
99
|
-
*
|
|
100
|
-
* Per plan D-8: URP and HDRP both call this helper with their respective
|
|
101
|
-
* tonemap-suffix graphs, keeping the wiring single-source.
|
|
102
|
-
*
|
|
103
|
-
* @param graph - The per-frame RenderGraph (URP forward-graph or HDRP tonemap-graph).
|
|
104
|
-
* @param getViewProj - Thunk that returns camera.viewProj from the pass context
|
|
105
|
-
* at execute time (not at graph-build time).
|
|
106
|
-
*/
|
|
107
|
-
export function attachDebugOverlayPass(
|
|
108
|
-
graph: RenderGraph<RenderPipelineContext>,
|
|
109
|
-
getViewProj: (ctx: RenderPipelineContext) => Mat4,
|
|
110
|
-
options: { readonly reads?: readonly string[] } = {},
|
|
111
|
-
): void {
|
|
112
|
-
graph.addPass('debug-overlay', {
|
|
113
|
-
// The overlay draws to ctx.view, but it still needs a graph edge so a
|
|
114
|
-
// producer that targets the scene color cannot be appended after it.
|
|
115
|
-
// The caller supplies the active pipeline's final scene-color token.
|
|
116
|
-
reads: options.reads ?? [],
|
|
117
|
-
writes: [],
|
|
118
|
-
execute: (ctx: RenderPipelineContext) => {
|
|
119
|
-
const dd = registeredDebugDraw;
|
|
120
|
-
if (!dd) return; // not registered (no debug-draw in this runtime)
|
|
121
|
-
const viewProj = getViewProj(ctx);
|
|
122
|
-
dd.flush(ctx.encoder, ctx.view as unknown as TextureView, viewProj);
|
|
123
|
-
},
|
|
124
|
-
});
|
|
125
|
-
}
|
|
10
|
+
import type { RenderPipelineFrame, RenderPipelineTarget } from './render-pipeline';
|
|
126
11
|
|
|
127
12
|
export function addTypedDebugOverlayPass(
|
|
128
13
|
graph: RenderGraphBuilder<RenderPipelineFrame>,
|
|
@@ -131,12 +16,6 @@ export function addTypedDebugOverlayPass(
|
|
|
131
16
|
return graph.addRasterPass('debug-overlay', {
|
|
132
17
|
accesses: [{ resource: output.view, usage: 'color-attachment' }],
|
|
133
18
|
colorAttachments: [{ view: output.view, loadOp: 'load', storeOp: 'store' }],
|
|
134
|
-
// The graph topology is stable, but debug geometry is immediate-mode state.
|
|
135
|
-
// Evaluate admission for every frame so an empty overlay does not open a
|
|
136
|
-
// color-attachment render pass. This must stay here, before `encode` and
|
|
137
|
-
// therefore before beginRenderPass; a no-op encode still pays the pass
|
|
138
|
-
// begin/end cost and can perturb timestamp/pass accounting.
|
|
139
|
-
executeIf: () => registeredDebugDraw?.hasPendingWork() ?? false,
|
|
140
19
|
encode: ({ pass, frame }) => {
|
|
141
20
|
const projection = mat4.create();
|
|
142
21
|
if (frame.camera.projection === 'orthographic') {
|
|
@@ -159,7 +38,7 @@ export function addTypedDebugOverlayPass(
|
|
|
159
38
|
);
|
|
160
39
|
}
|
|
161
40
|
const view = mat4.invert(mat4.create(), frame.camera.world);
|
|
162
|
-
const result =
|
|
41
|
+
const result = frame.runtime.debugOverlay?.encode(
|
|
163
42
|
pass,
|
|
164
43
|
mat4.multiply(mat4.create(), projection, view),
|
|
165
44
|
);
|