@forgeax/engine-render 0.1.4 → 0.1.7
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 +268 -640
- 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 +214 -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 +11 -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-HCOGPHKS.mjs +93 -0
- package/dist/chunk-HCOGPHKS.mjs.map +1 -0
- package/dist/chunk-YEJIUW7D.mjs +1152 -0
- package/dist/chunk-YEJIUW7D.mjs.map +1 -0
- package/dist/components/__tests__/points-lines-admission.unit.test.d.ts +2 -0
- package/dist/components/__tests__/points-lines-admission.unit.test.d.ts.map +1 -0
- package/dist/components/__tests__/points-lines-schema.unit.test.d.ts +2 -0
- package/dist/components/__tests__/points-lines-schema.unit.test.d.ts.map +1 -0
- package/dist/components/__tests__/schema-contract.unit.test.d.ts +2 -0
- package/dist/components/__tests__/schema-contract.unit.test.d.ts.map +1 -0
- package/dist/components/glyph-text.d.ts +1 -1
- package/dist/components/glyph-text.d.ts.map +1 -1
- package/dist/components/index.d.ts +4 -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/lines.d.ts +5 -0
- package/dist/components/lines.d.ts.map +1 -0
- package/dist/components/mesh-filter.d.ts +7 -7
- package/dist/components/mesh-filter.d.ts.map +1 -1
- package/dist/components/points.d.ts +15 -0
- package/dist/components/points.d.ts.map +1 -0
- 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 +27463 -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 +320 -248
- 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 +7 -3
- 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 +17 -43
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +167 -3
- package/dist/index.mjs.map +1 -1
- package/dist/inspection-types.d.ts +72 -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 +77 -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/points-lines/__tests__/bounds.unit.test.d.ts +2 -0
- package/dist/points-lines/__tests__/bounds.unit.test.d.ts.map +1 -0
- package/dist/points-lines/__tests__/cache-recovery.unit.test.d.ts +2 -0
- package/dist/points-lines/__tests__/cache-recovery.unit.test.d.ts.map +1 -0
- package/dist/points-lines/__tests__/inspection-lanes.integration.test.d.ts +2 -0
- package/dist/points-lines/__tests__/inspection-lanes.integration.test.d.ts.map +1 -0
- package/dist/points-lines/__tests__/inspection.unit.test.d.ts +2 -0
- package/dist/points-lines/__tests__/inspection.unit.test.d.ts.map +1 -0
- package/dist/points-lines/__tests__/lane-structural.integration.test.d.ts +2 -0
- package/dist/points-lines/__tests__/lane-structural.integration.test.d.ts.map +1 -0
- package/dist/points-lines/__tests__/points-lines.bench.d.ts +2 -0
- package/dist/points-lines/__tests__/points-lines.bench.d.ts.map +1 -0
- package/dist/points-lines/__tests__/raster-lane.integration.test.d.ts +2 -0
- package/dist/points-lines/__tests__/raster-lane.integration.test.d.ts.map +1 -0
- package/dist/points-lines/__tests__/snapshot.unit.test.d.ts +2 -0
- package/dist/points-lines/__tests__/snapshot.unit.test.d.ts.map +1 -0
- package/dist/points-lines/__tests__/view-ubo.unit.test.d.ts +2 -0
- package/dist/points-lines/__tests__/view-ubo.unit.test.d.ts.map +1 -0
- package/dist/points-lines/admission.d.ts +36 -0
- package/dist/points-lines/admission.d.ts.map +1 -0
- package/dist/points-lines/bounds.d.ts +8 -0
- package/dist/points-lines/bounds.d.ts.map +1 -0
- package/dist/points-lines/expansion-cache.d.ts +28 -0
- package/dist/points-lines/expansion-cache.d.ts.map +1 -0
- package/dist/points-lines/inspection.d.ts +53 -0
- package/dist/points-lines/inspection.d.ts.map +1 -0
- package/dist/points-lines/prepare.d.ts +67 -0
- package/dist/points-lines/prepare.d.ts.map +1 -0
- package/dist/points-lines/record.d.ts +60 -0
- package/dist/points-lines/record.d.ts.map +1 -0
- package/dist/points-lines/snapshot.d.ts +49 -0
- package/dist/points-lines/snapshot.d.ts.map +1 -0
- package/dist/post-process-errors.d.ts +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 +12 -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 +252 -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 +9 -3
- package/dist/record/view-ubo.d.ts.map +1 -1
- package/dist/render-contract.d.ts +424 -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 +110 -338
- package/dist/render-system-extract.d.ts.map +1 -1
- package/dist/render-system.d.ts +24 -713
- package/dist/render-system.d.ts.map +1 -1
- package/dist/scene/render-scene-types.d.ts +61 -0
- package/dist/scene/render-scene-types.d.ts.map +1 -0
- package/dist/scene/render-scene.d.ts +112 -0
- package/dist/scene/render-scene.d.ts.map +1 -0
- package/dist/scene-instances/post-spawn-resolve-joints.d.ts +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__/authoring-path.unit.test.ts +9 -0
- 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 +21 -18
- 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 +31 -58
- package/src/__tests__/material-snapshot-mutation.integration.test.ts +10 -15
- package/src/__tests__/material-static-dynamic-route.unit.test.ts +31 -50
- 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 +24 -23
- package/src/__tests__/render-error-detail-ssot.test-d.ts +0 -95
- package/src/__tests__/render-error-exhaustive.test-d.ts +27 -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 +82 -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} +1741 -2699
- package/src/assembly/host-contract.ts +101 -0
- package/src/{renderer → assembly}/material/assembly.ts +2 -7
- package/src/assembly/material/pipeline-projection.ts +63 -0
- package/src/authoring.ts +15 -22
- package/src/components/__tests__/points-lines-admission.unit.test.ts +219 -0
- package/src/components/__tests__/points-lines-schema.unit.test.ts +56 -0
- package/src/components/__tests__/schema-contract.unit.test.ts +10 -0
- package/src/components/glyph-text.ts +3 -2
- package/src/components/index.ts +14 -9
- package/src/components/instances.ts +4 -5
- package/src/components/light-helpers.ts +1 -1
- package/src/components/lines.ts +18 -0
- package/src/components/mesh-filter.ts +11 -10
- package/src/components/points.ts +40 -0
- 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 +469 -429
- 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 +32 -8
- 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 +99 -1109
- 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 +75 -217
- package/src/inspection-types.ts +80 -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 +441 -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 +7 -75
- package/src/points-lines/__tests__/bounds.unit.test.ts +21 -0
- package/src/points-lines/__tests__/cache-recovery.unit.test.ts +157 -0
- package/src/points-lines/__tests__/inspection-lanes.integration.test.ts +146 -0
- package/src/points-lines/__tests__/inspection.unit.test.ts +173 -0
- package/src/points-lines/__tests__/lane-structural.integration.test.ts +122 -0
- package/src/points-lines/__tests__/points-lines.bench.ts +400 -0
- package/src/points-lines/__tests__/raster-lane.integration.test.ts +44 -0
- package/src/points-lines/__tests__/snapshot.unit.test.ts +101 -0
- package/src/points-lines/__tests__/view-ubo.unit.test.ts +73 -0
- package/src/points-lines/admission.ts +238 -0
- package/src/points-lines/bounds.ts +23 -0
- package/src/points-lines/expansion-cache.ts +215 -0
- package/src/points-lines/inspection.ts +97 -0
- package/src/points-lines/prepare.ts +177 -0
- package/src/points-lines/record.ts +125 -0
- package/src/points-lines/snapshot.ts +130 -0
- package/src/post-process-errors.ts +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 +88 -197
- package/src/record/frame-snapshot.ts +45 -60
- package/src/record/frame-targets.ts +8 -243
- package/src/record/frame.ts +521 -797
- package/src/record/helpers.ts +6 -11
- package/src/record/main-pass-geometry.ts +198 -147
- package/src/record/main-pass-material.ts +517 -190
- package/src/record/main-pass-sprite-draws.ts +199 -118
- package/src/record/main-pass.ts +166 -144
- package/src/record/mesh-ssbo.ts +517 -38
- package/src/record/render-context.ts +384 -0
- package/src/record/shadow-pass.ts +154 -1843
- package/src/record/skybox-post-pass.ts +14 -15
- package/src/record/typed-frame-graph.ts +224 -262
- package/src/record/view-ubo.ts +53 -37
- package/src/render-contract.ts +582 -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 +1114 -1732
- package/src/render-system.ts +614 -1939
- package/src/scene/render-scene-types.ts +67 -0
- package/src/scene/render-scene.ts +1087 -0
- package/src/scene-instances/post-spawn-resolve-joints.ts +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
|
@@ -8,9 +8,10 @@
|
|
|
8
8
|
// The brand prevents cross-asset assignment at compile time (e.g.
|
|
9
9
|
// `Handle<'TextureAsset','shared'>` is not assignable to `assetHandle`).
|
|
10
10
|
//
|
|
11
|
-
// AI users
|
|
12
|
-
//
|
|
13
|
-
//
|
|
11
|
+
// AI users spawn with the assets-runtime constants `HANDLE_CUBE` /
|
|
12
|
+
// `HANDLE_TRIANGLE` (now branded `Handle<'MeshAsset','shared'>` to
|
|
13
|
+
// match the schema-derived shape); custom mesh registration is owned by
|
|
14
|
+
// feat-future-asset-system (this MVP only exposes builtin handles).
|
|
14
15
|
//
|
|
15
16
|
// Naming flavor: unity-style "MeshFilter / MeshRenderer" pair, but the forgeax
|
|
16
17
|
// pair does NOT mirror Unity's filter-toggle semantics - MeshFilter only
|
|
@@ -38,9 +39,10 @@ import { defineComponent } from '@forgeax/engine-ecs';
|
|
|
38
39
|
* Mesh filter (geometry asset reference).
|
|
39
40
|
*
|
|
40
41
|
* `assetHandle` carries a `Handle<'MeshAsset', 'shared'>` (u32-stored)
|
|
41
|
-
* pointing
|
|
42
|
-
*
|
|
43
|
-
*
|
|
42
|
+
* pointing into `engine.assets: AssetRegistry`. Use the predefined
|
|
43
|
+
* constants `HANDLE_CUBE` / `HANDLE_TRIANGLE` exported from
|
|
44
|
+
* `@forgeax/engine-render`; custom-mesh registration is OOS in MVP (see
|
|
45
|
+
* feat-future-asset-system).
|
|
44
46
|
*
|
|
45
47
|
* Error path: if the handle is not registered at draw time, RenderSystem
|
|
46
48
|
* fires `Renderer.onError` with
|
|
@@ -48,11 +50,10 @@ import { defineComponent } from '@forgeax/engine-ecs';
|
|
|
48
50
|
* and skips this entity (other entities continue rendering; charter
|
|
49
51
|
* proposition 9 graceful degradation).
|
|
50
52
|
*
|
|
51
|
-
* @example Spawn an entity referencing
|
|
53
|
+
* @example Spawn an entity referencing the builtin cube mesh:
|
|
52
54
|
* import { MeshFilter } from '@forgeax/engine-render';
|
|
53
|
-
* import {
|
|
54
|
-
*
|
|
55
|
-
* world.spawn({ component: MeshFilter, data: { assetHandle: cube } });
|
|
55
|
+
* import { HANDLE_CUBE } from '@forgeax/engine-assets-runtime';
|
|
56
|
+
* world.spawn({ component: MeshFilter, data: { assetHandle: HANDLE_CUBE } });
|
|
56
57
|
*/
|
|
57
58
|
export const MeshFilter = defineComponent('MeshFilter', {
|
|
58
59
|
assetHandle: { type: 'shared<MeshAsset>' },
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { defineComponent } from '@forgeax/engine-ecs';
|
|
2
|
+
|
|
3
|
+
/** Public point raster shapes backed by the ECS enum column. */
|
|
4
|
+
export type PointShape = keyof typeof PointShapeValue;
|
|
5
|
+
|
|
6
|
+
/** Numeric labels stored by the public Points shape enum field. */
|
|
7
|
+
export const PointShapeValue = Object.freeze({
|
|
8
|
+
square: 0,
|
|
9
|
+
circle: 1,
|
|
10
|
+
} as const);
|
|
11
|
+
|
|
12
|
+
/** Decode the Points shape column without treating an unknown value as valid. */
|
|
13
|
+
export function pointShapeFromU32(value: number): PointShape | undefined {
|
|
14
|
+
switch (value) {
|
|
15
|
+
case PointShapeValue.square:
|
|
16
|
+
return 'square';
|
|
17
|
+
case PointShapeValue.circle:
|
|
18
|
+
return 'circle';
|
|
19
|
+
default:
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/** Screen-space point style. Geometry and material remain on their own owners. */
|
|
25
|
+
export const Points = defineComponent(
|
|
26
|
+
'Points',
|
|
27
|
+
{
|
|
28
|
+
sizePx: { type: 'f32', default: 4 },
|
|
29
|
+
shape: { type: 'enum', default: PointShapeValue.square, labels: PointShapeValue },
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
meta: {
|
|
33
|
+
quickStart: 'Attach Points to render point-list MeshAsset vertices in screen pixels.',
|
|
34
|
+
diagnostics: 'Inspect sizePx and decode shape with pointShapeFromU32.',
|
|
35
|
+
recovery: 'Use points-lines-invalid-style for non-finite or non-positive sizePx values.',
|
|
36
|
+
boundaries:
|
|
37
|
+
'Points owns raster size and shape only; MeshFilter and MeshRenderer own geometry and material.',
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
);
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
// Schema: { shader: 'string', data: 'buffer' }.
|
|
4
4
|
//
|
|
5
5
|
// `shader` identifies the fullscreen post-process shader (the same id as passed to
|
|
6
|
-
// `
|
|
6
|
+
// the feature host registers for `id`). `data` carries the per-frame params
|
|
7
7
|
// bytes as a variable-byte ECS managed buffer slot. The write side (world.spawn /
|
|
8
|
-
// world.set) accepts
|
|
9
|
-
// Uint8Array /
|
|
8
|
+
// world.set) accepts every AllowSharedBufferSource (Float32Array / ArrayBuffer /
|
|
9
|
+
// Uint8Array / typed array) and the ECS normalizes it to Uint8Array bytes
|
|
10
10
|
// (feat-20260621 V2 / AC-A4); the read side (world.get) returns Uint8Array, which
|
|
11
11
|
// satisfies AllowSharedBufferSource for GPU queue.writeBuffer ingestion.
|
|
12
12
|
//
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
// - charter P3 (machine-readable schema: 3 closed fields)
|
|
35
35
|
// - charter P4 (consistent abstraction: instance == entity carrying
|
|
36
36
|
// SceneInstance — same `world.query({ read: [SceneInstance] })` /
|
|
37
|
-
// `world.get(root, SceneInstance)` path as
|
|
37
|
+
// `world.get(root, SceneInstance)` path as another component)
|
|
38
38
|
|
|
39
39
|
import { defineComponent, type EntityHandle } from '@forgeax/engine-ecs';
|
|
40
40
|
import type { LocalEntityId, MountOverride } from '@forgeax/engine-types';
|
|
@@ -52,8 +52,8 @@ import type { LocalEntityId, MountOverride } from '@forgeax/engine-types';
|
|
|
52
52
|
* mismatch'` (plan-strategy §D-9) catches type drift on the apply path.
|
|
53
53
|
*
|
|
54
54
|
* @internal Surface from `state.overrides` only; AI users never construct a
|
|
55
|
-
* record directly. Use `
|
|
56
|
-
* field, value)` to write and `
|
|
55
|
+
* record directly. Use `world.setSceneOverride(root, member, comp,
|
|
56
|
+
* field, value)` to write and `world.removeSceneOverride(root, member,
|
|
57
57
|
* comp, field)` to roll back to the source SceneAsset value.
|
|
58
58
|
*/
|
|
59
59
|
export interface SceneInstanceOverrideRecord {
|
|
@@ -75,11 +75,11 @@ export interface SceneInstanceOverrideRecord {
|
|
|
75
75
|
* AI users can iterate without indirection.
|
|
76
76
|
*
|
|
77
77
|
* Lifecycle:
|
|
78
|
-
* - allocated by `
|
|
78
|
+
* - allocated by `world.instantiateScene(handle, parent?)` — the W in
|
|
79
79
|
* `world.allocUniqueRef('SceneInstanceState', state)` returns the u32
|
|
80
80
|
* slot id stored in the SceneInstance.state column;
|
|
81
81
|
* - released by `world.despawn(root)` (the standard `ref<T>` release loop)
|
|
82
|
-
* or explicitly via `
|
|
82
|
+
* or explicitly via `world.despawnScene(root)` / `world.despawnDescendants(root)`.
|
|
83
83
|
*
|
|
84
84
|
* AI users typically reach this struct only through the read path
|
|
85
85
|
* `world.get(root, SceneInstance).state.overrides.get(<comp>:<field>)` for
|
|
@@ -96,17 +96,17 @@ export interface SceneInstanceState {
|
|
|
96
96
|
|
|
97
97
|
/**
|
|
98
98
|
* Reverse mapping (live `Entity` -> source `LocalEntityId`). Used by
|
|
99
|
-
* `
|
|
100
|
-
* instance + by `
|
|
99
|
+
* `world.setSceneOverride` to validate the member entity belongs to this
|
|
100
|
+
* instance + by `world.detachSceneMember` / `world.reattachSceneMember`
|
|
101
101
|
* to translate caller-side Entity values back to their authored localId.
|
|
102
102
|
*/
|
|
103
103
|
readonly entityToLocalId: Map<EntityHandle, LocalEntityId>;
|
|
104
104
|
|
|
105
105
|
/**
|
|
106
106
|
* LocalEntityIds of members the AI user marked detached via
|
|
107
|
-
* `
|
|
107
|
+
* `world.detachSceneMember(root, member)`. The member entities stay
|
|
108
108
|
* alive in the World; only the bookkeeping marker moves so
|
|
109
|
-
* `
|
|
109
|
+
* `world.despawnDescendants(root, { keepDetached: true })` can skip them.
|
|
110
110
|
* Detach is idempotent (set semantics).
|
|
111
111
|
*/
|
|
112
112
|
readonly detachedLocalIds: Set<LocalEntityId>;
|
|
@@ -134,7 +134,7 @@ export interface SceneInstanceState {
|
|
|
134
134
|
/**
|
|
135
135
|
* Total slot count `entities.length + sum(mounts[].memberCount)` —
|
|
136
136
|
* captured at instantiate-time so cycle / count consistency checks
|
|
137
|
-
* (e.g. `
|
|
137
|
+
* (e.g. `world.getSceneAssetForInstance(root)` symmetry) can compare
|
|
138
138
|
* against the live SceneInstance.mapping column without re-reading the
|
|
139
139
|
* SceneAsset.
|
|
140
140
|
*/
|
|
@@ -142,7 +142,7 @@ export interface SceneInstanceState {
|
|
|
142
142
|
|
|
143
143
|
/**
|
|
144
144
|
* Mount-time override authored on the parent SceneAsset's `mounts[]`
|
|
145
|
-
* record. Captured at instantiate-time so `
|
|
145
|
+
* record. Captured at instantiate-time so `world.removeSceneOverride`
|
|
146
146
|
* can fall back to the mount-time value before going to the source
|
|
147
147
|
* SceneAsset value (plan-strategy §D-2).
|
|
148
148
|
*/
|
|
@@ -174,7 +174,7 @@ export interface SceneInstanceState {
|
|
|
174
174
|
* apply unchanged (plan-strategy §D-5).
|
|
175
175
|
*
|
|
176
176
|
* @example Materialise + inspect a SceneAsset:
|
|
177
|
-
* const { root, diagnostics } =
|
|
177
|
+
* const { root, diagnostics } = world.instantiateScene(handle).value;
|
|
178
178
|
* const inst = world.get(root, SceneInstance).value;
|
|
179
179
|
* // inst.source === handle, inst.mapping is Uint32Array(totalSlots)
|
|
180
180
|
* // inst.state holds entityToLocalId / detachedLocalIds / overrides /
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
// @forgeax/engine-runtime - SkyboxBackground (environment cubemap render background).
|
|
2
|
+
//
|
|
3
|
+
// Schema: 3 fields -- equirect (Handle<EquirectAsset>, u32-stored handle)
|
|
4
|
+
// + mode (f32 enum column, discriminator) + rotation (quaternion xyzw,
|
|
5
|
+
// default identity). Naming convention follows the
|
|
6
|
+
// single-semantic component rule: no Component suffix (AGENTS.md rule #1).
|
|
7
|
+
//
|
|
8
|
+
// feat-20260630-equirect-kind-internalized-ibl-declarative-skyligh M3 / w16:
|
|
9
|
+
// the field is `equirect: shared<EquirectAsset>` (the retired
|
|
10
|
+
// `cubemap: shared<CubeTextureAsset>` is gone). The skybox reuses the same
|
|
11
|
+
// equirect handle as the Skylight; the cubemap projection is internal and
|
|
12
|
+
// driven by the render-system record arm (no user upload call).
|
|
13
|
+
//
|
|
14
|
+
// Plan-strategy D-5: mode is a f32 enum column (ECS columns are POD, no
|
|
15
|
+
// string unions in archetype storage). Consumer-facing type safety is
|
|
16
|
+
// provided by the `SkyboxMode` literal union + `skyboxModeFromF32` mapper
|
|
17
|
+
// (same pattern as cameraProjectionFromF32 in camera.ts:51,105,145,221-237).
|
|
18
|
+
//
|
|
19
|
+
// OOS-1: `mode: 'atmosphere'` implementation is deferred -- the union
|
|
20
|
+
// shape leaves room for additive growth without breaking the f32 enum
|
|
21
|
+
// encoding.
|
|
22
|
+
//
|
|
23
|
+
// AI user minimum spawn (charter P4):
|
|
24
|
+
// world.spawn({ component: SkyboxBackground, data: { equirect, mode: 0 } });
|
|
25
|
+
//
|
|
26
|
+
// Single component activates the skybox render pass transparently when a
|
|
27
|
+
// Skylight + tonemap active camera is present (skybox reuses the same
|
|
28
|
+
// equirect handle as Skylight).
|
|
29
|
+
|
|
30
|
+
import { defineComponent } from '@forgeax/engine-ecs';
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Skybox mode literal union (AC-02 narrowing surface).
|
|
34
|
+
* Currently only 'cubemap' -- future 'atmosphere' deferred per OOS-1.
|
|
35
|
+
*/
|
|
36
|
+
export type SkyboxMode = 'cubemap';
|
|
37
|
+
|
|
38
|
+
/** Numeric encoding of cubemap skybox mode (schema value for `mode`). */
|
|
39
|
+
export const SKYBOX_MODE_CUBEMAP = 0;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Map a `SkyboxBackground.mode` numeric value to the closed `SkyboxMode`
|
|
43
|
+
* string-literal union. Only member currently is 'cubemap'; the exhaustive
|
|
44
|
+
* switch is ready for future mode additions (e.g. 'atmosphere', OOS-1).
|
|
45
|
+
*/
|
|
46
|
+
export function skyboxModeFromF32(value: number): SkyboxMode {
|
|
47
|
+
switch (value) {
|
|
48
|
+
case SKYBOX_MODE_CUBEMAP:
|
|
49
|
+
return 'cubemap';
|
|
50
|
+
// Future: case SKYBOX_MODE_ATMOSPHERE: return 'atmosphere';
|
|
51
|
+
}
|
|
52
|
+
// Unrecognised value: fall back to 'cubemap' (charter P3 -- no silent
|
|
53
|
+
// exception; the fallback preserves rendering on stale numerics while
|
|
54
|
+
// the exhaustive switch shape ensures AI users catch new members at
|
|
55
|
+
// compile time when a mode is added).
|
|
56
|
+
return 'cubemap';
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* SkyboxBackground: full-screen environment cubemap background.
|
|
61
|
+
*
|
|
62
|
+
* Renders a fullscreen triangle that reconstructs world-space view
|
|
63
|
+
* direction from the camera's inverseViewProj matrix (View UBO),
|
|
64
|
+
* samples a cubemap with the view direction, and writes an HDR color
|
|
65
|
+
* to the hdrColor render target (before the main geometry pass).
|
|
66
|
+
*
|
|
67
|
+
* The skybox pass is automatically activated when a SkyboxBackground
|
|
68
|
+
* entity exists, a Skylight entity provides the equirect source, and the
|
|
69
|
+
* active Camera has tonemap active. The skybox reuses the same equirect
|
|
70
|
+
* handle as the Skylight entity -- two independent components sharing the
|
|
71
|
+
* same GPU resource (the internally-projected cubemap).
|
|
72
|
+
*
|
|
73
|
+
* `equirect` is a `Handle<EquirectAsset>` resolved from a vite pack-index
|
|
74
|
+
* GUID via `engine.assets.loadByGuid<EquirectAsset>(guid)`. The cubemap
|
|
75
|
+
* projection is internal and driven by the render-system record arm; there
|
|
76
|
+
* is no user upload call.
|
|
77
|
+
*
|
|
78
|
+
* `mode` is a numeric discriminator column (`'f32'`). Use
|
|
79
|
+
* `SKYBOX_MODE_CUBEMAP` for the cubemap render path.
|
|
80
|
+
*
|
|
81
|
+
* `rotation` is an environment-space quaternion in `[x, y, z, w]` order.
|
|
82
|
+
* It rotates the sampled cubemap without changing the camera or rebaking the
|
|
83
|
+
* source equirectangular asset.
|
|
84
|
+
*
|
|
85
|
+
* @example Minimum spawn (defaults mode=0):
|
|
86
|
+
* // equirectHandle resolved from loadByGuid<EquirectAsset> (same handle as
|
|
87
|
+
* // the Skylight).
|
|
88
|
+
* world.spawn({ component: SkyboxBackground, data: { equirect: equirectHandle } });
|
|
89
|
+
*
|
|
90
|
+
* @example Single handle shared between Skylight (IBL) and SkyboxBackground:
|
|
91
|
+
* const hdrRes = await engine.assets.loadByGuid<EquirectAsset>(guid);
|
|
92
|
+
* if (!hdrRes.ok) throw hdrRes.error;
|
|
93
|
+
* world.spawn({ component: Skylight, data: { equirect: hdrRes.value } });
|
|
94
|
+
* world.spawn({ component: SkyboxBackground, data: { equirect: hdrRes.value } });
|
|
95
|
+
*/
|
|
96
|
+
export const SkyboxBackground = defineComponent('SkyboxBackground', {
|
|
97
|
+
// The GPU skybox projection is render-owned presentation state; restore
|
|
98
|
+
// keeps the portable mode/rotation controls and lets the owner re-resolve
|
|
99
|
+
// the environment asset on the target world.
|
|
100
|
+
equirect: { type: 'shared<EquirectAsset>', simulationTransient: true },
|
|
101
|
+
mode: { type: 'f32', default: SKYBOX_MODE_CUBEMAP },
|
|
102
|
+
rotation: { type: 'array<f32, 4>', default: new Float32Array([0, 0, 0, 1]) },
|
|
103
|
+
});
|
|
@@ -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
|
+
}
|