@forgeax/engine-render 0.1.3 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +130 -641
- package/dist/.tsbuildinfo +1 -1
- package/dist/__tests__/device-scope-lifecycle.unit.test.d.ts +2 -0
- package/dist/__tests__/device-scope-lifecycle.unit.test.d.ts.map +1 -0
- package/dist/__tests__/device-scope-stale-matrix.unit.test.d.ts +2 -0
- package/dist/__tests__/device-scope-stale-matrix.unit.test.d.ts.map +1 -0
- package/dist/__tests__/fullscreen-feature-plan.unit.test.d.ts +2 -0
- package/dist/__tests__/fullscreen-feature-plan.unit.test.d.ts.map +1 -0
- package/dist/__tests__/gpu-driven-indirect-raster-evidence.d.ts.map +1 -1
- package/dist/__tests__/gpu-driven-view-gpu-evidence.d.ts +6 -0
- package/dist/__tests__/gpu-driven-view-gpu-evidence.d.ts.map +1 -1
- package/dist/{gpu-driven/view-reference.d.ts → __tests__/gpu-driven-view-reference.d.ts} +4 -4
- package/dist/__tests__/gpu-driven-view-reference.d.ts.map +1 -0
- package/dist/__tests__/gpu-scene-render-graph-gpu.d.ts.map +1 -1
- package/dist/__tests__/ibl/face-uniforms.unit.test.d.ts +2 -0
- package/dist/__tests__/ibl/face-uniforms.unit.test.d.ts.map +1 -0
- package/dist/__tests__/morph-feature-plan.unit.test.d.ts +2 -0
- package/dist/__tests__/morph-feature-plan.unit.test.d.ts.map +1 -0
- package/dist/__tests__/render-feature-plan.test-d.d.ts +2 -0
- package/dist/__tests__/render-feature-plan.test-d.d.ts.map +1 -0
- package/dist/__tests__/render-feature-plan.unit.test.d.ts +2 -0
- package/dist/__tests__/render-feature-plan.unit.test.d.ts.map +1 -0
- package/dist/__tests__/ssao-config.unit.test.d.ts +2 -0
- package/dist/__tests__/ssao-config.unit.test.d.ts.map +1 -0
- package/dist/__tests__/standard-clustered-pipeline.unit.test.d.ts +2 -0
- package/dist/__tests__/standard-clustered-pipeline.unit.test.d.ts.map +1 -0
- package/dist/__tests__/standard-descriptors.test-d.d.ts +2 -0
- package/dist/__tests__/standard-descriptors.test-d.d.ts.map +1 -0
- package/dist/__tests__/standard-pipeline.dawn.test.d.ts +2 -0
- package/dist/__tests__/standard-pipeline.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/standard-pipeline.integration.test.d.ts +2 -0
- package/dist/__tests__/standard-pipeline.integration.test.d.ts.map +1 -0
- package/dist/__tests__/standard-profile-oracle.unit.test.d.ts +2 -0
- package/dist/__tests__/standard-profile-oracle.unit.test.d.ts.map +1 -0
- package/dist/__tests__/visibility-resource-short-circuit.unit.test.d.ts +2 -0
- package/dist/__tests__/visibility-resource-short-circuit.unit.test.d.ts.map +1 -0
- package/dist/{renderer/backend-selection.d.ts → assembly/backend-contract.d.ts} +15 -4
- package/dist/assembly/backend-contract.d.ts.map +1 -0
- package/dist/assembly/factory.d.ts +207 -0
- package/dist/assembly/factory.d.ts.map +1 -0
- package/dist/assembly/host-contract.d.ts +84 -0
- package/dist/assembly/host-contract.d.ts.map +1 -0
- package/dist/{renderer → assembly}/material/assembly.d.ts +1 -2
- package/dist/{renderer → assembly}/material/assembly.d.ts.map +1 -1
- package/dist/assembly/material/pipeline-projection.d.ts +30 -0
- package/dist/assembly/material/pipeline-projection.d.ts.map +1 -0
- package/dist/authoring.d.ts +10 -11
- package/dist/authoring.d.ts.map +1 -1
- package/dist/authoring.mjs +25 -3
- package/dist/authoring.mjs.map +1 -1
- package/dist/chunk-CQXZC5XI.mjs +182 -0
- package/dist/chunk-CQXZC5XI.mjs.map +1 -0
- package/dist/chunk-QC4VW3XJ.mjs +79 -0
- package/dist/chunk-QC4VW3XJ.mjs.map +1 -0
- package/dist/chunk-SCRSAK5B.mjs +480 -0
- package/dist/chunk-SCRSAK5B.mjs.map +1 -0
- package/dist/components/__tests__/schema-contract.unit.test.d.ts +2 -0
- package/dist/components/__tests__/schema-contract.unit.test.d.ts.map +1 -0
- package/dist/components/glyph-text.d.ts +1 -1
- package/dist/components/glyph-text.d.ts.map +1 -1
- package/dist/components/index.d.ts +2 -2
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/instances.d.ts +1 -1
- package/dist/components/instances.d.ts.map +1 -1
- package/dist/components/light-helpers.d.ts +1 -1
- package/dist/components/light-helpers.d.ts.map +1 -1
- package/dist/components/mesh-filter.d.ts +7 -7
- package/dist/components/mesh-filter.d.ts.map +1 -1
- package/dist/components/scene-instance.d.ts +11 -11
- package/dist/components/skybox-background.d.ts +56 -0
- package/dist/components/skybox-background.d.ts.map +1 -0
- package/dist/components/skylight.d.ts +55 -0
- package/dist/components/skylight.d.ts.map +1 -0
- package/dist/components/sprite-animation.d.ts +2 -3
- package/dist/components/sprite-animation.d.ts.map +1 -1
- package/dist/components/sprite-instances.d.ts +1 -1
- package/dist/components/sprite-playback-mode.d.ts +6 -1
- package/dist/components/sprite-playback-mode.d.ts.map +1 -1
- package/dist/components/sprite-region-override.d.ts +2 -3
- package/dist/components/sprite-region-override.d.ts.map +1 -1
- package/dist/components/tile-layer.d.ts +5 -0
- package/dist/components/tile-layer.d.ts.map +1 -1
- package/dist/construct-renderer.d.ts +18 -1
- package/dist/construct-renderer.d.ts.map +1 -1
- package/dist/construct-renderer.mjs +27008 -4
- package/dist/construct-renderer.mjs.map +1 -1
- package/dist/debug-draw-glue.d.ts +2 -53
- package/dist/debug-draw-glue.d.ts.map +1 -1
- package/dist/device/device-scope.d.ts +83 -0
- package/dist/device/device-scope.d.ts.map +1 -0
- package/dist/{gpu-resource-store.d.ts → device/gpu-residency.d.ts} +91 -48
- package/dist/device/gpu-residency.d.ts.map +1 -0
- package/dist/device/resource-types.d.ts +8 -0
- package/dist/device/resource-types.d.ts.map +1 -0
- package/dist/engine-metrics.d.ts +2 -2
- package/dist/engine-metrics.d.ts.map +1 -1
- package/dist/errors/recover.d.ts +28 -1
- package/dist/errors/recover.d.ts.map +1 -1
- package/dist/errors/render.d.ts +249 -258
- package/dist/errors/render.d.ts.map +1 -1
- package/dist/features/fullscreen.d.ts +19 -0
- package/dist/features/fullscreen.d.ts.map +1 -0
- package/dist/features/host.d.ts +32 -26
- package/dist/features/host.d.ts.map +1 -1
- package/dist/features/morph/morph-feature.d.ts +39 -5
- package/dist/features/morph/morph-feature.d.ts.map +1 -1
- package/dist/features/plan.d.ts +182 -0
- package/dist/features/plan.d.ts.map +1 -0
- package/dist/features/prepared-gpu-work.d.ts +21 -17
- package/dist/features/prepared-gpu-work.d.ts.map +1 -1
- package/dist/features/prepared-graphics-store.d.ts +2 -1
- package/dist/features/prepared-graphics-store.d.ts.map +1 -1
- package/dist/features/prepared-graphics.d.ts +11 -21
- package/dist/features/prepared-graphics.d.ts.map +1 -1
- package/dist/features/render-graph-compute.d.ts +2 -2
- package/dist/features/render-graph-compute.d.ts.map +1 -1
- package/dist/features/render-graph-contribution.d.ts +4 -7
- package/dist/features/render-graph-contribution.d.ts.map +1 -1
- package/dist/features/render-graph-raster.d.ts +2 -2
- package/dist/features/render-graph-raster.d.ts.map +1 -1
- package/dist/features/render-graph-resources.d.ts +6 -6
- package/dist/features/render-graph-resources.d.ts.map +1 -1
- package/dist/features/targets.d.ts +5 -5
- package/dist/features/targets.d.ts.map +1 -1
- package/dist/features/types.d.ts +11 -190
- package/dist/features/types.d.ts.map +1 -1
- package/dist/features/vocabulary.d.ts +14 -0
- package/dist/features/vocabulary.d.ts.map +1 -0
- package/dist/fullscreen-post-process-pass.d.ts +4 -25
- package/dist/fullscreen-post-process-pass.d.ts.map +1 -1
- package/dist/glyph-text-layout-system.d.ts +3 -2
- package/dist/glyph-text-layout-system.d.ts.map +1 -1
- package/dist/gpu-driven/batch-topology.d.ts +6 -75
- package/dist/gpu-driven/batch-topology.d.ts.map +1 -1
- package/dist/gpu-driven/production-raster.d.ts +13 -112
- package/dist/gpu-driven/production-raster.d.ts.map +1 -1
- package/dist/gpu-driven/view-gpu.d.ts +10 -66
- package/dist/gpu-driven/view-gpu.d.ts.map +1 -1
- package/dist/gpu-resource.d.ts +3 -3
- package/dist/gpu-scene-schema.d.ts +1 -94
- package/dist/gpu-scene-schema.d.ts.map +1 -1
- package/dist/gpu-scene.d.ts +7 -33
- package/dist/gpu-scene.d.ts.map +1 -1
- package/dist/hdrp-buffers.d.ts +3 -53
- package/dist/hdrp-buffers.d.ts.map +1 -1
- package/dist/ibl/IblPipelineCache.d.ts +74 -180
- package/dist/ibl/IblPipelineCache.d.ts.map +1 -1
- package/dist/ibl/skylight-bind-group.d.ts +1 -1
- package/dist/index.d.ts +13 -43
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +165 -3
- package/dist/index.mjs.map +1 -1
- package/dist/inspection-types.d.ts +69 -0
- package/dist/inspection-types.d.ts.map +1 -0
- package/dist/instance-buffer-cache.d.ts +1 -4
- package/dist/instance-buffer-cache.d.ts.map +1 -1
- package/dist/internal.d.ts +1 -73
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.mjs +1 -43
- package/dist/internal.mjs.map +1 -1
- package/dist/lifecycle.d.ts +36 -2
- package/dist/lifecycle.d.ts.map +1 -1
- package/dist/materials.d.ts +0 -3
- package/dist/materials.d.ts.map +1 -1
- package/dist/mesh-material-bindings.d.ts +0 -1
- package/dist/mesh-material-bindings.d.ts.map +1 -1
- package/dist/pbr-pipeline.d.ts +75 -29
- package/dist/pbr-pipeline.d.ts.map +1 -1
- package/dist/pipeline/standard-forward-lane.d.ts +5 -0
- package/dist/pipeline/standard-forward-lane.d.ts.map +1 -0
- package/dist/pipeline/standard-pipeline.d.ts +31 -0
- package/dist/pipeline/standard-pipeline.d.ts.map +1 -0
- package/dist/pipeline/standard-profile.d.ts +40 -0
- package/dist/pipeline/standard-profile.d.ts.map +1 -0
- package/dist/pipeline-builder.d.ts +3 -3
- package/dist/pipeline-builder.d.ts.map +1 -1
- package/dist/pipeline-spec-types.d.ts +24 -0
- package/dist/pipeline-spec-types.d.ts.map +1 -0
- package/dist/pipeline-spec.d.ts +16 -155
- package/dist/pipeline-spec.d.ts.map +1 -1
- package/dist/plugin.d.ts +1 -14
- package/dist/plugin.d.ts.map +1 -1
- package/dist/post-process-errors.d.ts +18 -18
- package/dist/post-process-errors.d.ts.map +1 -1
- package/dist/prepare/prepared-graphics-resolver.d.ts +2 -5
- package/dist/prepare/prepared-graphics-resolver.d.ts.map +1 -1
- package/dist/record/__tests__/typed-frame-graph-plan.unit.test.d.ts +2 -0
- package/dist/record/__tests__/typed-frame-graph-plan.unit.test.d.ts.map +1 -0
- package/dist/record/frame-lighting.d.ts +7 -73
- package/dist/record/frame-lighting.d.ts.map +1 -1
- package/dist/record/frame-snapshot.d.ts +44 -44
- package/dist/record/frame-snapshot.d.ts.map +1 -1
- package/dist/record/frame-targets.d.ts +5 -38
- package/dist/record/frame-targets.d.ts.map +1 -1
- package/dist/record/frame.d.ts +64 -52
- package/dist/record/frame.d.ts.map +1 -1
- package/dist/record/helpers.d.ts +3 -2
- package/dist/record/helpers.d.ts.map +1 -1
- package/dist/record/main-pass-geometry.d.ts +5 -4
- package/dist/record/main-pass-geometry.d.ts.map +1 -1
- package/dist/record/main-pass-material.d.ts +90 -59
- package/dist/record/main-pass-material.d.ts.map +1 -1
- package/dist/record/main-pass-sprite-draws.d.ts +28 -3
- package/dist/record/main-pass-sprite-draws.d.ts.map +1 -1
- package/dist/record/main-pass.d.ts +1 -1
- package/dist/record/main-pass.d.ts.map +1 -1
- package/dist/record/mesh-ssbo.d.ts +276 -3
- package/dist/record/mesh-ssbo.d.ts.map +1 -1
- package/dist/record/render-context.d.ts +235 -0
- package/dist/record/render-context.d.ts.map +1 -0
- package/dist/record/shadow-pass.d.ts +15 -88
- package/dist/record/shadow-pass.d.ts.map +1 -1
- package/dist/record/skybox-post-pass.d.ts +1 -1
- package/dist/record/skybox-post-pass.d.ts.map +1 -1
- package/dist/record/typed-frame-graph.d.ts +29 -7
- package/dist/record/typed-frame-graph.d.ts.map +1 -1
- package/dist/record/view-ubo.d.ts +3 -3
- package/dist/record/view-ubo.d.ts.map +1 -1
- package/dist/render-contract.d.ts +416 -0
- package/dist/render-contract.d.ts.map +1 -0
- package/dist/render-data.d.ts.map +1 -1
- package/dist/render-graph-primitives.d.ts +14 -362
- package/dist/render-graph-primitives.d.ts.map +1 -1
- package/dist/render-pipeline.d.ts +25 -64
- package/dist/render-pipeline.d.ts.map +1 -1
- package/dist/render-system-extract.d.ts +107 -338
- package/dist/render-system-extract.d.ts.map +1 -1
- package/dist/render-system.d.ts +21 -713
- package/dist/render-system.d.ts.map +1 -1
- package/dist/scene/render-scene-types.d.ts +58 -0
- package/dist/scene/render-scene-types.d.ts.map +1 -0
- package/dist/scene/render-scene.d.ts +105 -0
- package/dist/scene/render-scene.d.ts.map +1 -0
- package/dist/scene-instances/post-spawn-resolve-joints.d.ts +2 -5
- package/dist/scene-instances/post-spawn-resolve-joints.d.ts.map +1 -1
- package/dist/ssao-buffers.d.ts +22 -3
- package/dist/ssao-buffers.d.ts.map +1 -1
- package/dist/systems/skin-palette-allocator.d.ts +2 -4
- package/dist/systems/skin-palette-allocator.d.ts.map +1 -1
- package/dist/systems/skin-palette-types.d.ts +14 -0
- package/dist/systems/skin-palette-types.d.ts.map +1 -0
- package/dist/systems/transparent-sort-config.d.ts +23 -2
- package/dist/systems/transparent-sort-config.d.ts.map +1 -1
- package/dist/tilemap-chunk-extract-system.d.ts +4 -3
- package/dist/tilemap-chunk-extract-system.d.ts.map +1 -1
- package/dist/typed-render-graph-primitives.d.ts +2 -4
- package/dist/typed-render-graph-primitives.d.ts.map +1 -1
- package/dist/typed-shadow-passes.d.ts +3 -3
- package/dist/typed-shadow-passes.d.ts.map +1 -1
- package/package.json +23 -23
- package/src/__tests__/backend-selection-rhi-capture.test-d.ts +1 -1
- package/src/__tests__/callback-inference.test-d.ts +6 -3
- package/src/__tests__/cluster-grid-default-surface.unit.test.ts +7 -4
- package/src/__tests__/construct-renderer-identity.unit.test.ts +15 -2
- package/src/__tests__/device-scope-lifecycle.unit.test.ts +151 -0
- package/src/__tests__/device-scope-stale-matrix.unit.test.ts +42 -0
- package/src/__tests__/direct-extract-consumer-contract.test-d.ts +8 -19
- package/src/__tests__/direct-light-snapshot.unit.test.ts +3 -13
- package/src/__tests__/factory-contract.integration.test.ts +158 -209
- package/src/__tests__/fallback-row-stride-surface.unit.test.ts +1 -4
- package/src/__tests__/frame-observation.contract.test.ts +17 -8
- package/src/__tests__/fullscreen-feature-plan.unit.test.ts +32 -0
- package/src/__tests__/glyph-text-layout-recovery.unit.test.ts +6 -11
- package/src/__tests__/gpu-driven-indirect-raster-evidence.ts +9 -16
- package/src/__tests__/gpu-driven-production.integration.test.ts +32 -205
- package/src/__tests__/gpu-driven-scaling.unit.test.ts +4 -7
- package/src/__tests__/gpu-driven-view-gpu-evidence.ts +87 -8
- package/src/__tests__/gpu-driven-view-graph.integration.test.ts +170 -8
- package/src/{gpu-driven/view-reference.ts → __tests__/gpu-driven-view-reference.ts} +4 -3
- package/src/__tests__/gpu-driven-view.browser.test.ts +12 -1
- package/src/__tests__/gpu-driven-view.dawn.test.ts +12 -1
- package/src/__tests__/gpu-driven-view.unit.test.ts +11 -267
- package/src/__tests__/gpu-resource-store-stride.unit.test.ts +3 -3
- package/src/__tests__/gpu-scene-render-graph-gpu.ts +2 -3
- package/src/__tests__/gpu-scene.dawn.test.ts +2 -6
- package/src/__tests__/gpu-scene.unit.test.ts +10 -24
- package/src/__tests__/ibl/face-uniforms.unit.test.ts +46 -0
- package/src/__tests__/infinite-grid-no-vertex-probe.unit.test.ts +34 -66
- package/src/__tests__/ktx2-basis-gpu-consumer.dawn.test.ts +14 -5
- package/src/__tests__/light-buffer-layout.unit.test.ts +4 -49
- package/src/__tests__/material-cooked-projection.unit.test.ts +2 -51
- package/src/__tests__/material-snapshot-mutation.integration.test.ts +10 -15
- package/src/__tests__/material-static-dynamic-route.unit.test.ts +4 -23
- package/src/__tests__/material-stride-surface.unit.test.ts +2 -2
- package/src/__tests__/mesh-buffer-usage-surface.unit.test.ts +7 -8
- package/src/__tests__/morph-culling-reentry.dawn.test.ts +29 -38
- package/src/__tests__/morph-feature-gpu-work.integration.test.ts +45 -43
- package/src/__tests__/morph-feature-plan.unit.test.ts +53 -0
- package/src/__tests__/morph-visual-evidence.integration.test.ts +47 -33
- package/src/__tests__/nineslice-handle-surface.unit.test.ts +11 -6
- package/src/__tests__/post-process-error-policy-owner.unit.test.ts +6 -13
- package/src/__tests__/prepared-graphics-capability.unit.test.ts +6 -81
- package/src/__tests__/prepared-graphics-generation.unit.test.ts +3 -17
- package/src/__tests__/prepared-graphics-lifecycle.unit.test.ts +6 -74
- package/src/__tests__/prepared-graphics-resolver.unit.test.ts +1 -3
- package/src/__tests__/prepared-graphics-snapshot.unit.test.ts +2 -2
- package/src/__tests__/profiler-default-off.test.ts +1 -1
- package/src/__tests__/profiler-phase-catalog.test.ts +2 -2
- package/src/__tests__/profiler-phase-integration.test.ts +5 -13
- package/src/__tests__/profiler-phase-token.test.ts +3 -8
- package/src/__tests__/public-surface.test-d.ts +65 -3
- package/src/__tests__/recover-error-policy-owner.unit.test.ts +1 -21
- package/src/__tests__/render-error-code-owner.test-d.ts +18 -23
- package/src/__tests__/render-error-detail-ssot.test-d.ts +0 -95
- package/src/__tests__/render-error-exhaustive.test-d.ts +8 -1
- package/src/__tests__/render-feature-assembly.test-d.ts +8 -16
- package/src/__tests__/render-feature-context.test-d.ts +16 -40
- package/src/__tests__/render-feature-contract.test-d.ts +9 -18
- package/src/__tests__/render-feature-diagnostics.unit.test.ts +6 -8
- package/src/__tests__/render-feature-docs.unit.test.ts +8 -7
- package/src/__tests__/render-feature-gpu-work.integration.test.ts +14 -75
- package/src/__tests__/render-feature-plan.test-d.ts +161 -0
- package/src/__tests__/render-feature-plan.unit.test.ts +170 -0
- package/src/__tests__/render-feature-prepared-diagnostics.unit.test.ts +8 -19
- package/src/__tests__/render-feature-prepared-errors.test-d.ts +3 -6
- package/src/__tests__/render-feature-prepared-graphics-docs.unit.test.ts +10 -71
- package/src/__tests__/render-feature-prepared-graphics-isolation.unit.test.ts +11 -61
- package/src/__tests__/render-feature-prepared-graphics-negative.test-d.ts +20 -43
- package/src/__tests__/render-feature-prepared-graphics.test-d.ts +56 -78
- package/src/__tests__/render-feature-public-surface.test-d.ts +6 -24
- package/src/__tests__/render-feature-retry.unit.test.ts +7 -48
- package/src/__tests__/render-feature-scheduling.unit.test.ts +15 -27
- package/src/__tests__/render-feature-stage-failed-policy-owner.unit.test.ts +0 -9
- package/src/__tests__/render-feature-stage-fault-recovery.unit.test.ts +19 -109
- package/src/__tests__/render-feature-visibility-context.test-d.ts +1 -6
- package/src/__tests__/render-feature-visibility-context.unit.test.ts +1 -2
- package/src/__tests__/render-feature-zero-work.unit.test.ts +14 -20
- package/src/__tests__/render-scene-projection.unit.test.ts +73 -111
- package/src/__tests__/renderer-factory-material-contract.unit.test.ts +46 -50
- package/src/__tests__/renderer-lifecycle.integration.test.ts +49 -1
- package/src/__tests__/shader-stage-surface.unit.test.ts +14 -9
- package/src/__tests__/ssao-config.unit.test.ts +36 -0
- package/src/__tests__/ssao-kernel-surface.unit.test.ts +4 -5
- package/src/__tests__/standard-clustered-pipeline.unit.test.ts +28 -0
- package/src/__tests__/standard-descriptors.test-d.ts +22 -0
- package/src/__tests__/standard-pipeline.dawn.test.ts +61 -0
- package/src/__tests__/standard-pipeline.integration.test.ts +124 -0
- package/src/__tests__/standard-profile-oracle.unit.test.ts +62 -0
- package/src/__tests__/surface-configuration.unit.test.ts +1 -2
- package/src/__tests__/texture-usage-surface.unit.test.ts +3 -6
- package/src/__tests__/typed-pipeline-topology.unit.test.ts +40 -206
- package/src/__tests__/urp-pipeline-targets.unit.test.ts +1 -11
- package/src/__tests__/urp-pipeline.unit.test.ts +2 -2
- package/src/__tests__/vertex-color-pipeline.unit.test.ts +10 -2
- package/src/__tests__/vertex-layout-consumer.unit.test.ts +1 -1
- package/src/__tests__/visibility-diagnostics.integration.test.ts +7 -11
- package/src/__tests__/visibility-extract.integration.test.ts +20 -11
- package/src/__tests__/visibility-extract.perf.test.ts +66 -32
- package/src/__tests__/visibility-feature-dedup.integration.test.ts +2 -4
- package/src/__tests__/visibility-hidden-report.unit.test.ts +1 -2
- package/src/__tests__/visibility-instances.integration.test.ts +7 -11
- package/src/__tests__/visibility-multi-world.integration.test.ts +38 -6
- package/src/__tests__/visibility-producer-matrix.integration.test.ts +18 -41
- package/src/__tests__/visibility-public-surface.test-d.ts +10 -9
- package/src/__tests__/visibility-resolver.unit.test.ts +2 -1
- package/src/__tests__/visibility-resource-short-circuit.unit.test.ts +80 -0
- package/src/__tests__/visibility-snapshot-contract.unit.test.ts +2 -1
- package/src/__tests__/vocabulary.unit.test.ts +1 -1
- package/src/assembly/backend-contract.ts +57 -0
- package/src/{renderer/renderer-factory.ts → assembly/factory.ts} +1709 -2693
- package/src/assembly/host-contract.ts +101 -0
- package/src/{renderer → assembly}/material/assembly.ts +1 -3
- package/src/assembly/material/pipeline-projection.ts +63 -0
- package/src/authoring.ts +14 -22
- package/src/components/__tests__/schema-contract.unit.test.ts +10 -0
- package/src/components/glyph-text.ts +3 -2
- package/src/components/index.ts +7 -9
- package/src/components/instances.ts +4 -5
- package/src/components/light-helpers.ts +1 -1
- package/src/components/mesh-filter.ts +11 -10
- package/src/components/post-process-params.ts +3 -3
- package/src/components/scene-instance.ts +12 -12
- package/src/components/skybox-background.ts +103 -0
- package/src/components/{environment.ts → skylight.ts} +2 -111
- package/src/components/sprite-animation.ts +3 -4
- package/src/components/sprite-instances.ts +2 -2
- package/src/components/sprite-playback-mode.ts +7 -1
- package/src/components/sprite-region-override.ts +2 -3
- package/src/components/tile-layer.ts +8 -2
- package/src/construct-renderer.ts +67 -4
- package/src/debug-draw-glue.ts +8 -129
- package/src/device/device-scope.ts +306 -0
- package/src/{gpu-resource-store.ts → device/gpu-residency.ts} +540 -639
- package/src/device/resource-types.ts +20 -0
- package/src/engine-metrics.ts +12 -19
- package/src/errors/recover.ts +45 -3
- package/src/errors/render.ts +357 -460
- package/src/features/fullscreen.ts +46 -0
- package/src/features/host.ts +575 -309
- package/src/features/morph/morph-feature.ts +195 -105
- package/src/features/plan.ts +447 -0
- package/src/features/prepared-gpu-work.ts +72 -15
- package/src/features/prepared-graphics-store.ts +20 -6
- package/src/features/prepared-graphics.ts +12 -71
- package/src/features/render-graph-compute.ts +14 -5
- package/src/features/render-graph-contribution.ts +43 -63
- package/src/features/render-graph-raster.ts +11 -6
- package/src/features/render-graph-resources.ts +25 -23
- package/src/features/targets.ts +8 -21
- package/src/features/types.ts +39 -227
- package/src/features/vocabulary.ts +24 -0
- package/src/fullscreen-post-process-pass.ts +14 -57
- package/src/glyph-text-layout-system.ts +70 -96
- package/src/gpu-driven/batch-topology.ts +24 -202
- package/src/gpu-driven/production-raster.ts +93 -1108
- package/src/gpu-driven/view-gpu.ts +46 -192
- package/src/gpu-resource.ts +4 -4
- package/src/gpu-scene-schema.ts +11 -99
- package/src/gpu-scene.ts +231 -364
- package/src/hdrp-buffers.ts +12 -221
- package/src/ibl/IblPipelineCache.ts +471 -711
- package/src/ibl/skylight-bind-group.ts +4 -4
- package/src/index.ts +58 -217
- package/src/inspection-types.ts +76 -0
- package/src/instance-buffer-cache.ts +1 -29
- package/src/internal.ts +6 -85
- package/src/lifecycle.ts +64 -19
- package/src/materials.ts +7 -29
- package/src/mesh-material-bindings.ts +0 -1
- package/src/pbr-pipeline.ts +434 -53
- package/src/{urp-pipeline.ts → pipeline/standard-forward-lane.ts} +38 -149
- package/src/{hdrp-pipeline.ts → pipeline/standard-pipeline.ts} +221 -191
- package/src/pipeline/standard-profile.ts +65 -0
- package/src/pipeline-builder.ts +60 -64
- package/src/pipeline-spec-types.ts +28 -0
- package/src/pipeline-spec.ts +72 -609
- package/src/plugin.ts +3 -75
- package/src/post-process-errors.ts +31 -33
- package/src/prepare/prepared-graphics-resolver.ts +5 -4
- package/src/record/__tests__/material-slot-plan.unit.test.ts +1 -33
- package/src/record/__tests__/typed-frame-graph-plan.unit.test.ts +41 -0
- package/src/record/__tests__/video-texture-view.unit.test.ts +1 -1
- package/src/record/frame-lighting.ts +74 -195
- package/src/record/frame-snapshot.ts +45 -60
- package/src/record/frame-targets.ts +8 -243
- package/src/record/frame.ts +509 -796
- package/src/record/helpers.ts +6 -11
- package/src/record/main-pass-geometry.ts +106 -147
- package/src/record/main-pass-material.ts +517 -190
- package/src/record/main-pass-sprite-draws.ts +198 -117
- package/src/record/main-pass.ts +162 -143
- package/src/record/mesh-ssbo.ts +517 -38
- package/src/record/render-context.ts +364 -0
- package/src/record/shadow-pass.ts +138 -1838
- package/src/record/skybox-post-pass.ts +12 -14
- package/src/record/typed-frame-graph.ts +215 -254
- package/src/record/view-ubo.ts +6 -37
- package/src/render-contract.ts +571 -0
- package/src/render-data.ts +3 -3
- package/src/render-graph-primitives.ts +76 -851
- package/src/render-pipeline.ts +104 -188
- package/src/render-system-extract.ts +1048 -1729
- package/src/render-system.ts +330 -1957
- package/src/scene/render-scene-types.ts +64 -0
- package/src/scene/render-scene.ts +1032 -0
- package/src/scene-instances/post-spawn-resolve-joints.ts +4 -7
- package/src/ssao-buffers.ts +167 -8
- package/src/systems/skin-palette-allocator.ts +21 -64
- package/src/systems/skin-palette-types.ts +14 -0
- package/src/systems/transparent-sort-config.ts +25 -3
- package/src/tilemap-chunk-extract-system.ts +53 -70
- package/src/typed-render-graph-primitives.ts +35 -24
- package/src/typed-shadow-passes.ts +26 -56
- package/dist/__tests__/analytic-sky-contract.test.d.ts +0 -2
- package/dist/__tests__/analytic-sky-contract.test.d.ts.map +0 -1
- package/dist/__tests__/analytic-sky-falsify.test.d.ts +0 -2
- package/dist/__tests__/analytic-sky-falsify.test.d.ts.map +0 -1
- package/dist/__tests__/assets-runtime-handoff.integration.test.d.ts +0 -2
- package/dist/__tests__/assets-runtime-handoff.integration.test.d.ts.map +0 -1
- package/dist/__tests__/backend-selection.integration.test.d.ts +0 -2
- package/dist/__tests__/backend-selection.integration.test.d.ts.map +0 -1
- package/dist/__tests__/camera-temporal.test-d.d.ts +0 -2
- package/dist/__tests__/camera-temporal.test-d.d.ts.map +0 -1
- package/dist/__tests__/camera-temporal.test.d.ts +0 -2
- package/dist/__tests__/camera-temporal.test.d.ts.map +0 -1
- package/dist/__tests__/directional-shadow-probe-atlas-layout.unit.test.d.ts +0 -2
- package/dist/__tests__/directional-shadow-probe-atlas-layout.unit.test.d.ts.map +0 -1
- package/dist/__tests__/environment-inspection.test.d.ts +0 -2
- package/dist/__tests__/environment-inspection.test.d.ts.map +0 -1
- package/dist/__tests__/fog-ai-user.fixture.d.ts +0 -2
- package/dist/__tests__/fog-ai-user.fixture.d.ts.map +0 -1
- package/dist/__tests__/fog-custom-render-feature.fixture.d.ts +0 -16
- package/dist/__tests__/fog-custom-render-feature.fixture.d.ts.map +0 -1
- package/dist/__tests__/fog-custom-render-feature.integration.test.d.ts +0 -2
- package/dist/__tests__/fog-custom-render-feature.integration.test.d.ts.map +0 -1
- package/dist/__tests__/fog-inspection.integration.test.d.ts +0 -2
- package/dist/__tests__/fog-inspection.integration.test.d.ts.map +0 -1
- package/dist/__tests__/fog-owner-state.integration.test.d.ts +0 -2
- package/dist/__tests__/fog-owner-state.integration.test.d.ts.map +0 -1
- package/dist/__tests__/fog-pipeline-topology.integration.test.d.ts +0 -2
- package/dist/__tests__/fog-pipeline-topology.integration.test.d.ts.map +0 -1
- package/dist/__tests__/fog-public-surface.integration.test.d.ts +0 -2
- package/dist/__tests__/fog-public-surface.integration.test.d.ts.map +0 -1
- package/dist/__tests__/fog-ray-contract.integration.test.d.ts +0 -2
- package/dist/__tests__/fog-ray-contract.integration.test.d.ts.map +0 -1
- package/dist/__tests__/fog-source-absence.integration.test.d.ts +0 -2
- package/dist/__tests__/fog-source-absence.integration.test.d.ts.map +0 -1
- package/dist/__tests__/fog-temporal.integration.test.d.ts +0 -2
- package/dist/__tests__/fog-temporal.integration.test.d.ts.map +0 -1
- package/dist/__tests__/frame-chain.unit.test.d.ts +0 -2
- package/dist/__tests__/frame-chain.unit.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-scene-field-type-owner.test-d.d.ts +0 -2
- package/dist/__tests__/gpu-scene-field-type-owner.test-d.d.ts.map +0 -1
- package/dist/__tests__/hdrp-pipeline.unit.test.d.ts +0 -2
- package/dist/__tests__/hdrp-pipeline.unit.test.d.ts.map +0 -1
- package/dist/__tests__/ibl/ibl-fallback.unit.test.d.ts +0 -2
- package/dist/__tests__/ibl/ibl-fallback.unit.test.d.ts.map +0 -1
- package/dist/__tests__/material-derived-error-stop-draw.integration.test.d.ts +0 -2
- package/dist/__tests__/material-derived-error-stop-draw.integration.test.d.ts.map +0 -1
- package/dist/__tests__/material-derived-payload.integration.test.d.ts +0 -2
- package/dist/__tests__/material-derived-payload.integration.test.d.ts.map +0 -1
- package/dist/__tests__/materials.unit.test.d.ts +0 -2
- package/dist/__tests__/materials.unit.test.d.ts.map +0 -1
- package/dist/__tests__/param-schema-projection-census.unit.test.d.ts +0 -2
- package/dist/__tests__/param-schema-projection-census.unit.test.d.ts.map +0 -1
- package/dist/__tests__/persistent-render-scene.unit.test.d.ts +0 -2
- package/dist/__tests__/persistent-render-scene.unit.test.d.ts.map +0 -1
- package/dist/__tests__/pipeline-error-policy-owner.unit.test.d.ts +0 -2
- package/dist/__tests__/pipeline-error-policy-owner.unit.test.d.ts.map +0 -1
- package/dist/__tests__/pipeline-pass-trace.test.d.ts +0 -2
- package/dist/__tests__/pipeline-pass-trace.test.d.ts.map +0 -1
- package/dist/__tests__/pipeline-stage-owner.test-d.d.ts +0 -2
- package/dist/__tests__/pipeline-stage-owner.test-d.d.ts.map +0 -1
- package/dist/__tests__/plugin.test.d.ts +0 -2
- package/dist/__tests__/plugin.test.d.ts.map +0 -1
- package/dist/__tests__/prepared-graphics-backend-matrix.unit.test.d.ts +0 -2
- package/dist/__tests__/prepared-graphics-backend-matrix.unit.test.d.ts.map +0 -1
- package/dist/__tests__/prepared-graphics-resolver-recording.unit.test.d.ts +0 -2
- package/dist/__tests__/prepared-graphics-resolver-recording.unit.test.d.ts.map +0 -1
- package/dist/__tests__/public-pipeline-id.test-d.d.ts +0 -2
- package/dist/__tests__/public-pipeline-id.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-dispatch-membership.unit.test.d.ts +0 -2
- package/dist/__tests__/render-dispatch-membership.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-construction.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-construction.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-error-code-owner.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-error-code-owner.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-gpu-buffer-usage-owner.test-d.d.ts +0 -2
- package/dist/__tests__/render-feature-gpu-buffer-usage-owner.test-d.d.ts.map +0 -1
- package/dist/__tests__/render-feature-graph.integration.test.d.ts +0 -2
- package/dist/__tests__/render-feature-graph.integration.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-graphics-staging.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-graphics-staging.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-order.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-order.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-prepared-graphics-recording.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-prepared-graphics-recording.unit.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-staging.unit.test.d.ts +0 -2
- package/dist/__tests__/render-feature-staging.unit.test.d.ts.map +0 -1
- package/dist/__tests__/renderer-render-scene-public.test-d.d.ts +0 -2
- package/dist/__tests__/renderer-render-scene-public.test-d.d.ts.map +0 -1
- package/dist/__tests__/scene-temporal-coverage.unit.test.d.ts +0 -2
- package/dist/__tests__/scene-temporal-coverage.unit.test.d.ts.map +0 -1
- package/dist/__tests__/sun-snapshot-consumers.test.d.ts +0 -2
- package/dist/__tests__/sun-snapshot-consumers.test.d.ts.map +0 -1
- package/dist/__tests__/surface-backend-kind-owner.test-d.d.ts +0 -2
- package/dist/__tests__/surface-backend-kind-owner.test-d.d.ts.map +0 -1
- package/dist/__tests__/taa-history-store.unit.test.d.ts +0 -2
- package/dist/__tests__/taa-history-store.unit.test.d.ts.map +0 -1
- package/dist/__tests__/temporal-frame-transaction.integration.test.d.ts +0 -2
- package/dist/__tests__/temporal-frame-transaction.integration.test.d.ts.map +0 -1
- package/dist/__tests__/temporal-inspection.unit.test.d.ts +0 -2
- package/dist/__tests__/temporal-inspection.unit.test.d.ts.map +0 -1
- package/dist/assets/__tests__/asset-decoders.unit.test.d.ts +0 -2
- package/dist/assets/__tests__/asset-decoders.unit.test.d.ts.map +0 -1
- package/dist/assets/__tests__/mipmap-generator.unit.test.d.ts +0 -2
- package/dist/assets/__tests__/mipmap-generator.unit.test.d.ts.map +0 -1
- package/dist/assets/__tests__/render-asset-port.unit.test.d.ts +0 -2
- package/dist/assets/__tests__/render-asset-port.unit.test.d.ts.map +0 -1
- package/dist/assets/__tests__/resolve-render-asset.unit.test.d.ts +0 -2
- package/dist/assets/__tests__/resolve-render-asset.unit.test.d.ts.map +0 -1
- package/dist/chunk-33UF5SAO.mjs +0 -7397
- package/dist/chunk-33UF5SAO.mjs.map +0 -1
- package/dist/chunk-A5QCJSNL.mjs +0 -29913
- package/dist/chunk-A5QCJSNL.mjs.map +0 -1
- package/dist/chunk-JMSB7AR4.mjs +0 -3
- package/dist/chunk-JMSB7AR4.mjs.map +0 -1
- package/dist/chunk-LXNGO6AO.mjs +0 -569
- package/dist/chunk-LXNGO6AO.mjs.map +0 -1
- package/dist/chunk-QRXPSX4X.mjs +0 -659
- package/dist/chunk-QRXPSX4X.mjs.map +0 -1
- package/dist/chunk-YAKEQPWO.mjs +0 -1439
- package/dist/chunk-YAKEQPWO.mjs.map +0 -1
- package/dist/components/__tests__/atmosphere-red.test.d.ts +0 -2
- package/dist/components/__tests__/atmosphere-red.test.d.ts.map +0 -1
- package/dist/components/__tests__/atmosphere.test.d.ts +0 -2
- package/dist/components/__tests__/atmosphere.test.d.ts.map +0 -1
- package/dist/components/__tests__/fog.test-d.d.ts +0 -2
- package/dist/components/__tests__/fog.test-d.d.ts.map +0 -1
- package/dist/components/__tests__/fog.test.d.ts +0 -2
- package/dist/components/__tests__/fog.test.d.ts.map +0 -1
- package/dist/components/atmosphere.d.ts +0 -18
- package/dist/components/atmosphere.d.ts.map +0 -1
- package/dist/components/environment.d.ts +0 -116
- package/dist/components/environment.d.ts.map +0 -1
- package/dist/deferred-lighting.d.ts +0 -13
- package/dist/deferred-lighting.d.ts.map +0 -1
- package/dist/dynamic-texture-store.d.ts +0 -42
- package/dist/dynamic-texture-store.d.ts.map +0 -1
- package/dist/environment/__tests__/failure-injection.test.d.ts +0 -2
- package/dist/environment/__tests__/failure-injection.test.d.ts.map +0 -1
- package/dist/environment/__tests__/generation-red.test.d.ts +0 -2
- package/dist/environment/__tests__/generation-red.test.d.ts.map +0 -1
- package/dist/environment/__tests__/generation.test.d.ts +0 -2
- package/dist/environment/__tests__/generation.test.d.ts.map +0 -1
- package/dist/environment/__tests__/graph-transaction.test.d.ts +0 -2
- package/dist/environment/__tests__/graph-transaction.test.d.ts.map +0 -1
- package/dist/environment/__tests__/inspection-red.test.d.ts +0 -2
- package/dist/environment/__tests__/inspection-red.test.d.ts.map +0 -1
- package/dist/environment/__tests__/lifecycle-evidence.test.d.ts +0 -2
- package/dist/environment/__tests__/lifecycle-evidence.test.d.ts.map +0 -1
- package/dist/environment/__tests__/pipeline-topology.test.d.ts +0 -2
- package/dist/environment/__tests__/pipeline-topology.test.d.ts.map +0 -1
- package/dist/environment/__tests__/readiness.test.d.ts +0 -2
- package/dist/environment/__tests__/readiness.test.d.ts.map +0 -1
- package/dist/environment/__tests__/recovery.test.d.ts +0 -2
- package/dist/environment/__tests__/recovery.test.d.ts.map +0 -1
- package/dist/environment/__tests__/resize-dispose.test.d.ts +0 -2
- package/dist/environment/__tests__/resize-dispose.test.d.ts.map +0 -1
- package/dist/environment/__tests__/signature-red.test.d.ts +0 -2
- package/dist/environment/__tests__/signature-red.test.d.ts.map +0 -1
- package/dist/environment/__tests__/signature.test.d.ts +0 -2
- package/dist/environment/__tests__/signature.test.d.ts.map +0 -1
- package/dist/environment/descriptors.d.ts +0 -2
- package/dist/environment/descriptors.d.ts.map +0 -1
- package/dist/environment/extracted-environment.d.ts +0 -53
- package/dist/environment/extracted-environment.d.ts.map +0 -1
- package/dist/environment/generation.d.ts +0 -62
- package/dist/environment/generation.d.ts.map +0 -1
- package/dist/environment/gpu-bundle.d.ts +0 -23
- package/dist/environment/gpu-bundle.d.ts.map +0 -1
- package/dist/environment/graph.d.ts +0 -108
- package/dist/environment/graph.d.ts.map +0 -1
- package/dist/environment/inspection.d.ts +0 -48
- package/dist/environment/inspection.d.ts.map +0 -1
- package/dist/environment/lifecycle.d.ts +0 -22
- package/dist/environment/lifecycle.d.ts.map +0 -1
- package/dist/environment/readiness.d.ts +0 -29
- package/dist/environment/readiness.d.ts.map +0 -1
- package/dist/environment/signature.d.ts +0 -70
- package/dist/environment/signature.d.ts.map +0 -1
- package/dist/extract/__tests__/directional-csm-domain.unit.test.d.ts +0 -2
- package/dist/extract/__tests__/directional-csm-domain.unit.test.d.ts.map +0 -1
- package/dist/extract/__tests__/environment-source.test.d.ts +0 -2
- package/dist/extract/__tests__/environment-source.test.d.ts.map +0 -1
- package/dist/extract/__tests__/schema-readers.unit.test.d.ts +0 -2
- package/dist/extract/__tests__/schema-readers.unit.test.d.ts.map +0 -1
- package/dist/extract/directional-csm.d.ts +0 -129
- package/dist/extract/directional-csm.d.ts.map +0 -1
- package/dist/extract/index.d.ts +0 -5
- package/dist/extract/index.d.ts.map +0 -1
- package/dist/extract/material-interface.d.ts +0 -56
- package/dist/extract/material-interface.d.ts.map +0 -1
- package/dist/extract/schema-readers.d.ts +0 -20
- package/dist/extract/schema-readers.d.ts.map +0 -1
- package/dist/features/graph-contribution.d.ts +0 -64
- package/dist/features/graph-contribution.d.ts.map +0 -1
- package/dist/features/index.d.ts +0 -21
- package/dist/features/index.d.ts.map +0 -1
- package/dist/features/morph/index.d.ts +0 -3
- package/dist/features/morph/index.d.ts.map +0 -1
- package/dist/features/morph/morph-bounds.d.ts +0 -42
- package/dist/features/morph/morph-bounds.d.ts.map +0 -1
- package/dist/features/scene-temporal.d.ts +0 -45
- package/dist/features/scene-temporal.d.ts.map +0 -1
- package/dist/features/taa-resolve.d.ts +0 -21
- package/dist/features/taa-resolve.d.ts.map +0 -1
- package/dist/frame-chain.d.ts +0 -14
- package/dist/frame-chain.d.ts.map +0 -1
- package/dist/gpu-driven/view-reference.d.ts.map +0 -1
- package/dist/gpu-resource-store.d.ts.map +0 -1
- package/dist/hdrp-cluster-membership.d.ts +0 -2
- package/dist/hdrp-cluster-membership.d.ts.map +0 -1
- package/dist/hdrp-pipeline.d.ts +0 -36
- package/dist/hdrp-pipeline.d.ts.map +0 -1
- package/dist/ibl/cubemap-projection.d.ts +0 -23
- package/dist/ibl/cubemap-projection.d.ts.map +0 -1
- package/dist/ibl/face-uniforms.d.ts +0 -65
- package/dist/ibl/face-uniforms.d.ts.map +0 -1
- package/dist/mesh-update-errors.d.ts +0 -71
- package/dist/mesh-update-errors.d.ts.map +0 -1
- package/dist/mipmap-generator.d.ts +0 -39
- package/dist/mipmap-generator.d.ts.map +0 -1
- package/dist/param-schema-projection-census.d.ts +0 -18
- package/dist/param-schema-projection-census.d.ts.map +0 -1
- package/dist/persistent-render-scene.d.ts +0 -158
- package/dist/persistent-render-scene.d.ts.map +0 -1
- package/dist/pipeline/index.d.ts +0 -11
- package/dist/pipeline/index.d.ts.map +0 -1
- package/dist/pipeline-errors.d.ts +0 -110
- package/dist/pipeline-errors.d.ts.map +0 -1
- package/dist/prepare/__tests__/schema-readers.unit.test.d.ts +0 -2
- package/dist/prepare/__tests__/schema-readers.unit.test.d.ts.map +0 -1
- package/dist/prepare/index.d.ts +0 -4
- package/dist/prepare/index.d.ts.map +0 -1
- package/dist/prepare/schema-readers.d.ts +0 -11
- package/dist/prepare/schema-readers.d.ts.map +0 -1
- package/dist/record/__tests__/environment-record.test.d.ts +0 -2
- package/dist/record/__tests__/environment-record.test.d.ts.map +0 -1
- package/dist/record/__tests__/frame-targets.unit.test.d.ts +0 -2
- package/dist/record/__tests__/frame-targets.unit.test.d.ts.map +0 -1
- package/dist/record/__tests__/membership-timing.unit.test.d.ts +0 -2
- package/dist/record/__tests__/membership-timing.unit.test.d.ts.map +0 -1
- package/dist/record/__tests__/render-submission.integration.test.d.ts +0 -2
- package/dist/record/__tests__/render-submission.integration.test.d.ts.map +0 -1
- package/dist/record/__tests__/render-submission.perf.test.d.ts +0 -2
- package/dist/record/__tests__/render-submission.perf.test.d.ts.map +0 -1
- package/dist/record/__tests__/shadow-submit-mode.unit.test.d.ts +0 -2
- package/dist/record/__tests__/shadow-submit-mode.unit.test.d.ts.map +0 -1
- package/dist/record/__tests__/view-ubo-layout.unit.test.d.ts +0 -2
- package/dist/record/__tests__/view-ubo-layout.unit.test.d.ts.map +0 -1
- package/dist/record/frame-observation.d.ts +0 -38
- package/dist/record/frame-observation.d.ts.map +0 -1
- package/dist/record/index.d.ts +0 -15
- package/dist/record/index.d.ts.map +0 -1
- package/dist/record/main-pass-skin.d.ts +0 -46
- package/dist/record/main-pass-skin.d.ts.map +0 -1
- package/dist/record/main-pass-sprite.d.ts +0 -69
- package/dist/record/main-pass-sprite.d.ts.map +0 -1
- package/dist/record/material-payload.d.ts +0 -43
- package/dist/record/material-payload.d.ts.map +0 -1
- package/dist/record/material-slot-plan.d.ts +0 -26
- package/dist/record/material-slot-plan.d.ts.map +0 -1
- package/dist/record/membership-timing.d.ts +0 -232
- package/dist/record/membership-timing.d.ts.map +0 -1
- package/dist/record/shadow-caster-uniform.d.ts +0 -8
- package/dist/record/shadow-caster-uniform.d.ts.map +0 -1
- package/dist/record/shadow-submit-mode.d.ts +0 -66
- package/dist/record/shadow-submit-mode.d.ts.map +0 -1
- package/dist/render-dispatch-membership.d.ts +0 -47
- package/dist/render-dispatch-membership.d.ts.map +0 -1
- package/dist/render-pipeline-context.d.ts +0 -289
- package/dist/render-pipeline-context.d.ts.map +0 -1
- package/dist/render-pipeline-target.d.ts +0 -16
- package/dist/render-pipeline-target.d.ts.map +0 -1
- package/dist/render-scene-projection.d.ts +0 -174
- package/dist/render-scene-projection.d.ts.map +0 -1
- package/dist/render-system-fold.d.ts +0 -266
- package/dist/render-system-fold.d.ts.map +0 -1
- package/dist/renderer/asset-service.d.ts +0 -10
- package/dist/renderer/asset-service.d.ts.map +0 -1
- package/dist/renderer/backend-selection.d.ts.map +0 -1
- package/dist/renderer/environment-classify.d.ts +0 -6
- package/dist/renderer/environment-classify.d.ts.map +0 -1
- package/dist/renderer/environment-error.d.ts +0 -13
- package/dist/renderer/environment-error.d.ts.map +0 -1
- package/dist/renderer/material/pipeline-projection.d.ts +0 -91
- package/dist/renderer/material/pipeline-projection.d.ts.map +0 -1
- package/dist/renderer/renderer-factory.d.ts +0 -283
- package/dist/renderer/renderer-factory.d.ts.map +0 -1
- package/dist/renderer.d.ts +0 -771
- package/dist/renderer.d.ts.map +0 -1
- package/dist/scene-utils/collect-subtree.d.ts +0 -11
- package/dist/scene-utils/collect-subtree.d.ts.map +0 -1
- package/dist/ssao-data.d.ts +0 -34
- package/dist/ssao-data.d.ts.map +0 -1
- package/dist/surface-format.d.ts +0 -10
- package/dist/surface-format.d.ts.map +0 -1
- package/dist/taa-history-store.d.ts +0 -88
- package/dist/taa-history-store.d.ts.map +0 -1
- package/dist/temporal-coverage.d.ts +0 -35
- package/dist/temporal-coverage.d.ts.map +0 -1
- package/dist/temporal-frame-transaction.d.ts +0 -92
- package/dist/temporal-frame-transaction.d.ts.map +0 -1
- package/dist/temporal-inspection.d.ts +0 -57
- package/dist/temporal-inspection.d.ts.map +0 -1
- package/dist/temporal-view.d.ts +0 -43
- package/dist/temporal-view.d.ts.map +0 -1
- package/dist/tilemap/resolve-tileset-runtime.d.ts +0 -23
- package/dist/tilemap/resolve-tileset-runtime.d.ts.map +0 -1
- package/dist/urp-pipeline.d.ts +0 -4
- package/dist/urp-pipeline.d.ts.map +0 -1
- package/src/__tests__/analytic-sky-contract.test.ts +0 -27
- package/src/__tests__/analytic-sky-falsify-carriers.mjs +0 -43
- package/src/__tests__/analytic-sky-falsify.test.ts +0 -94
- package/src/__tests__/assets-runtime-handoff.integration.test.ts +0 -36
- package/src/__tests__/backend-selection.integration.test.ts +0 -11
- package/src/__tests__/camera-temporal.test-d.ts +0 -8
- package/src/__tests__/camera-temporal.test.ts +0 -188
- package/src/__tests__/directional-shadow-probe-atlas-layout.unit.test.ts +0 -18
- package/src/__tests__/environment-inspection.test.ts +0 -45
- package/src/__tests__/fog-ai-user.fixture.ts +0 -350
- package/src/__tests__/fog-custom-render-feature.fixture.ts +0 -33
- package/src/__tests__/fog-custom-render-feature.integration.test.ts +0 -76
- package/src/__tests__/fog-inspection.integration.test.ts +0 -127
- package/src/__tests__/fog-owner-state.integration.test.ts +0 -112
- package/src/__tests__/fog-pipeline-topology.integration.test.ts +0 -93
- package/src/__tests__/fog-public-surface.integration.test.ts +0 -60
- package/src/__tests__/fog-ray-contract.integration.test.ts +0 -73
- package/src/__tests__/fog-source-absence.integration.test.ts +0 -51
- package/src/__tests__/fog-temporal.integration.test.ts +0 -115
- package/src/__tests__/frame-chain.unit.test.ts +0 -26
- package/src/__tests__/gpu-scene-field-type-owner.test-d.ts +0 -27
- package/src/__tests__/hdrp-pipeline.unit.test.ts +0 -100
- package/src/__tests__/ibl/ibl-fallback.unit.test.ts +0 -23
- package/src/__tests__/material-derived-error-stop-draw.integration.test.ts +0 -69
- package/src/__tests__/material-derived-payload.integration.test.ts +0 -164
- package/src/__tests__/materials.unit.test.ts +0 -25
- package/src/__tests__/param-schema-projection-census.unit.test.ts +0 -40
- package/src/__tests__/persistent-render-scene.unit.test.ts +0 -1311
- package/src/__tests__/pipeline-error-policy-owner.unit.test.ts +0 -167
- package/src/__tests__/pipeline-pass-trace.test.ts +0 -92
- package/src/__tests__/pipeline-stage-owner.test-d.ts +0 -13
- package/src/__tests__/plugin.test.ts +0 -25
- package/src/__tests__/prepared-graphics-backend-matrix.unit.test.ts +0 -129
- package/src/__tests__/prepared-graphics-resolver-recording.unit.test.ts +0 -180
- package/src/__tests__/public-pipeline-id.test-d.ts +0 -6
- package/src/__tests__/render-dispatch-membership.unit.test.ts +0 -117
- package/src/__tests__/render-feature-construction.unit.test.ts +0 -124
- package/src/__tests__/render-feature-error-code-owner.test-d.ts +0 -27
- package/src/__tests__/render-feature-gpu-buffer-usage-owner.test-d.ts +0 -46
- package/src/__tests__/render-feature-graph.integration.test.ts +0 -205
- package/src/__tests__/render-feature-graphics-staging.unit.test.ts +0 -200
- package/src/__tests__/render-feature-order.unit.test.ts +0 -66
- package/src/__tests__/render-feature-prepared-graphics-recording.unit.test.ts +0 -107
- package/src/__tests__/render-feature-staging.unit.test.ts +0 -94
- package/src/__tests__/renderer-render-scene-public.test-d.ts +0 -27
- package/src/__tests__/scene-temporal-coverage.unit.test.ts +0 -259
- package/src/__tests__/sun-snapshot-consumers.test.ts +0 -35
- package/src/__tests__/surface-backend-kind-owner.test-d.ts +0 -42
- package/src/__tests__/taa-history-store.unit.test.ts +0 -196
- package/src/__tests__/temporal-frame-transaction.integration.test.ts +0 -537
- package/src/__tests__/temporal-inspection.unit.test.ts +0 -138
- package/src/assets/__tests__/asset-decoders.unit.test.ts +0 -92
- package/src/assets/__tests__/mipmap-generator.unit.test.ts +0 -52
- package/src/assets/__tests__/render-asset-port.unit.test.ts +0 -54
- package/src/assets/__tests__/resolve-render-asset.unit.test.ts +0 -47
- package/src/components/__tests__/atmosphere-red.test.ts +0 -51
- package/src/components/__tests__/atmosphere.test.ts +0 -79
- package/src/components/__tests__/fog.test-d.ts +0 -49
- package/src/components/__tests__/fog.test.ts +0 -60
- package/src/components/atmosphere.ts +0 -64
- package/src/deferred-lighting.ts +0 -92
- package/src/dynamic-texture-store.ts +0 -111
- package/src/environment/README.md +0 -76
- package/src/environment/__tests__/failure-injection.test.ts +0 -50
- package/src/environment/__tests__/generation-red.test.ts +0 -64
- package/src/environment/__tests__/generation.test.ts +0 -37
- package/src/environment/__tests__/graph-transaction.test.ts +0 -85
- package/src/environment/__tests__/inspection-red.test.ts +0 -53
- package/src/environment/__tests__/lifecycle-evidence.test.ts +0 -40
- package/src/environment/__tests__/pipeline-topology.test.ts +0 -33
- package/src/environment/__tests__/readiness.test.ts +0 -42
- package/src/environment/__tests__/recovery.test.ts +0 -62
- package/src/environment/__tests__/resize-dispose.test.ts +0 -30
- package/src/environment/__tests__/signature-red.test.ts +0 -45
- package/src/environment/__tests__/signature.test.ts +0 -60
- package/src/environment/descriptors.ts +0 -7
- package/src/environment/extracted-environment.ts +0 -239
- package/src/environment/generation.ts +0 -158
- package/src/environment/gpu-bundle.ts +0 -144
- package/src/environment/graph.ts +0 -588
- package/src/environment/inspection.ts +0 -107
- package/src/environment/lifecycle.ts +0 -124
- package/src/environment/readiness.ts +0 -76
- package/src/environment/signature.ts +0 -185
- package/src/extract/__tests__/directional-csm-domain.unit.test.ts +0 -391
- package/src/extract/__tests__/environment-source.test.ts +0 -105
- package/src/extract/__tests__/schema-readers.unit.test.ts +0 -16
- package/src/extract/directional-csm.ts +0 -959
- package/src/extract/index.ts +0 -10
- package/src/extract/material-interface.ts +0 -604
- package/src/extract/schema-readers.ts +0 -27
- package/src/features/graph-contribution.ts +0 -577
- package/src/features/index.ts +0 -100
- package/src/features/morph/index.ts +0 -24
- package/src/features/morph/morph-bounds.ts +0 -123
- package/src/features/scene-temporal.ts +0 -274
- package/src/features/taa-resolve.ts +0 -244
- package/src/frame-chain.ts +0 -21
- package/src/hdrp-cluster-membership.ts +0 -70
- package/src/ibl/cubemap-projection.ts +0 -60
- package/src/ibl/face-uniforms.ts +0 -150
- package/src/mesh-update-errors.ts +0 -113
- package/src/mipmap-generator.ts +0 -244
- package/src/param-schema-projection-census.ts +0 -73
- package/src/persistent-render-scene.ts +0 -1752
- package/src/pipeline/index.ts +0 -40
- package/src/pipeline-errors.ts +0 -172
- package/src/prepare/__tests__/schema-readers.unit.test.ts +0 -16
- package/src/prepare/index.ts +0 -8
- package/src/prepare/schema-readers.ts +0 -20
- package/src/record/__tests__/environment-record.test.ts +0 -35
- package/src/record/__tests__/frame-targets.unit.test.ts +0 -54
- package/src/record/__tests__/membership-timing.unit.test.ts +0 -524
- package/src/record/__tests__/render-submission.integration.test.ts +0 -76
- package/src/record/__tests__/render-submission.perf.test.ts +0 -141
- package/src/record/__tests__/shadow-submit-mode.unit.test.ts +0 -88
- package/src/record/__tests__/view-ubo-layout.unit.test.ts +0 -101
- package/src/record/frame-observation.ts +0 -122
- package/src/record/index.ts +0 -15
- package/src/record/main-pass-skin.ts +0 -51
- package/src/record/main-pass-sprite.ts +0 -166
- package/src/record/material-payload.ts +0 -292
- package/src/record/material-slot-plan.ts +0 -68
- package/src/record/membership-timing.ts +0 -1012
- package/src/record/shadow-caster-uniform.ts +0 -37
- package/src/record/shadow-submit-mode.ts +0 -277
- package/src/render-dispatch-membership.ts +0 -155
- package/src/render-pipeline-context.ts +0 -332
- package/src/render-pipeline-target.ts +0 -96
- package/src/render-scene-projection.ts +0 -1738
- package/src/render-system-fold.ts +0 -531
- package/src/renderer/asset-service.ts +0 -32
- package/src/renderer/backend-selection.ts +0 -121
- package/src/renderer/environment-classify.ts +0 -30
- package/src/renderer/environment-error.ts +0 -19
- package/src/renderer/material/pipeline-projection.ts +0 -140
- package/src/renderer.ts +0 -940
- package/src/scene-utils/collect-subtree.ts +0 -40
- package/src/ssao-data.ts +0 -106
- package/src/surface-format.ts +0 -37
- package/src/taa-history-store.ts +0 -429
- package/src/temporal-coverage.ts +0 -106
- package/src/temporal-frame-transaction.ts +0 -301
- package/src/temporal-inspection.ts +0 -194
- package/src/temporal-view.ts +0 -174
- package/src/tilemap/resolve-tileset-runtime.ts +0 -72
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import type { AssetRegistry } from '@forgeax/engine-assets-runtime';
|
|
2
|
+
import type { World } from '@forgeax/engine-ecs';
|
|
3
|
+
import type { Result, RhiDevice, RhiError, ShaderModule } from '@forgeax/engine-rhi';
|
|
4
|
+
import type { RecoverFailure } from '../errors/recover';
|
|
5
|
+
import type { ObservationUnavailableError, RenderError } from '../errors/render';
|
|
6
|
+
import type { RenderFeature, RenderFeatureDiagnostics } from '../features/types';
|
|
7
|
+
import type { MeshMaterialBindingObservation } from '../mesh-material-bindings';
|
|
8
|
+
import type { FrameObservation, FrameObservationOptions } from '../record/frame';
|
|
9
|
+
import type {
|
|
10
|
+
DrawOwnerOptions,
|
|
11
|
+
FrameObservationRequest,
|
|
12
|
+
FrameReceipt,
|
|
13
|
+
FrameReceiptObservation,
|
|
14
|
+
HealthSnapshot,
|
|
15
|
+
RenderDebugOverlay,
|
|
16
|
+
RendererError,
|
|
17
|
+
RendererErrorListener,
|
|
18
|
+
RendererLostListener,
|
|
19
|
+
RenderFrameInput,
|
|
20
|
+
RenderInspection,
|
|
21
|
+
RenderProfile,
|
|
22
|
+
RenderResult,
|
|
23
|
+
RenderWorldLease,
|
|
24
|
+
} from '../render-contract';
|
|
25
|
+
import type { RenderSceneInspection } from '../render-system';
|
|
26
|
+
|
|
27
|
+
type RenderShaderModuleFactory = (
|
|
28
|
+
device: RhiDevice,
|
|
29
|
+
desc: { readonly label?: string | undefined; readonly code: string },
|
|
30
|
+
) => Promise<Result<ShaderModule, RhiError>>;
|
|
31
|
+
|
|
32
|
+
/** Package-local source projected to the sole public Renderer.subscribe channel. */
|
|
33
|
+
export type RendererHostEvent =
|
|
34
|
+
| { readonly kind: 'error'; readonly error: RendererError }
|
|
35
|
+
| { readonly kind: 'health'; readonly health: HealthSnapshot };
|
|
36
|
+
|
|
37
|
+
export type RendererHostEventListener = (event: RendererHostEvent) => void;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Narrow assembly contract consumed by exposeRenderer and constructRendererHost.
|
|
41
|
+
* Legacy diagnostics remain on RendererLegacyHostAdapter and cannot leak into
|
|
42
|
+
* the public Renderer type.
|
|
43
|
+
*/
|
|
44
|
+
export interface RendererHostImplementation {
|
|
45
|
+
attach(world: World): RenderResult<RenderWorldLease, RenderError>;
|
|
46
|
+
setProfile(profile: RenderProfile): RenderResult<void, RenderError>;
|
|
47
|
+
inspect(): RenderInspection;
|
|
48
|
+
drawFrame(request: RenderFrameInput): RenderResult<FrameReceipt, RhiError | RenderError>;
|
|
49
|
+
observe(
|
|
50
|
+
receipt: FrameReceipt,
|
|
51
|
+
request: FrameObservationRequest,
|
|
52
|
+
): Promise<RenderResult<FrameReceiptObservation, RenderError>>;
|
|
53
|
+
releaseSurface(): RenderResult<void, RhiError>;
|
|
54
|
+
restoreSurface(): RenderResult<void, RhiError>;
|
|
55
|
+
recover(): Promise<Result<void, RecoverFailure>>;
|
|
56
|
+
dispose(): RenderResult<void, RenderError>;
|
|
57
|
+
/** @internal Single event source used to construct public Renderer.subscribe. */
|
|
58
|
+
subscribeHostEvents(listener: RendererHostEventListener): () => void;
|
|
59
|
+
|
|
60
|
+
readonly device: RhiDevice;
|
|
61
|
+
/** @internal */
|
|
62
|
+
readonly _internal_createShaderModule: RenderShaderModuleFactory;
|
|
63
|
+
/** @internal */
|
|
64
|
+
readonly _internal_setRenderOverlay: (overlay: RenderDebugOverlay | undefined) => void;
|
|
65
|
+
readonly assetRegistry: AssetRegistry;
|
|
66
|
+
readonly initialization: Promise<RenderResult<void, RhiError>>;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* @internal
|
|
71
|
+
* Temporary package-local compatibility surface for unmigrated render tests
|
|
72
|
+
* and producers. It is intentionally absent from RendererHostImplementation.
|
|
73
|
+
*/
|
|
74
|
+
export interface RendererLegacyHostAdapter {
|
|
75
|
+
attachScene(world: World): RenderResult<void, RhiError>;
|
|
76
|
+
detachScene(world: World): void;
|
|
77
|
+
draw(
|
|
78
|
+
worldsOrRequest: readonly World[] | RenderFrameInput,
|
|
79
|
+
options?: DrawOwnerOptions,
|
|
80
|
+
): RenderResult<void | FrameReceipt, RhiError | RenderError>;
|
|
81
|
+
observeCurrentFrame(
|
|
82
|
+
options: FrameObservationOptions,
|
|
83
|
+
): Promise<RenderResult<FrameObservation, ObservationUnavailableError>>;
|
|
84
|
+
onLost(listener: RendererLostListener): () => void;
|
|
85
|
+
onError(listener: RendererErrorListener): () => void;
|
|
86
|
+
health(): HealthSnapshot;
|
|
87
|
+
readonly frustumStats: { readonly culled: number; readonly total: number };
|
|
88
|
+
readonly visibilityStats: { readonly explicitlyHidden: number };
|
|
89
|
+
readonly renderScene: RenderSceneInspection;
|
|
90
|
+
readonly meshMaterialBindings: readonly MeshMaterialBindingObservation[];
|
|
91
|
+
readonly perFramePassNames: readonly string[];
|
|
92
|
+
renderFeatureDiagnostics(): readonly RenderFeatureDiagnostics[];
|
|
93
|
+
installRenderFeature(feature: RenderFeature<unknown>): Promise<RenderResult<void, RenderError>>;
|
|
94
|
+
uninstallRenderFeature(feature: RenderFeature<unknown>): Promise<RenderResult<void, RenderError>>;
|
|
95
|
+
readonly bindGroupCounts: { readonly createBindGroup: number; readonly keys: readonly string[] };
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/** @internal Concrete factory object before it is narrowed by exposeRenderer. */
|
|
99
|
+
export interface RendererAssemblyImplementation
|
|
100
|
+
extends RendererHostImplementation,
|
|
101
|
+
RendererLegacyHostAdapter {}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CookedMaterialRecord } from '@forgeax/engine-pack';
|
|
1
|
+
import type { CookedMaterialRecord } from '@forgeax/engine-pack/material-cook';
|
|
2
2
|
import type { MaterialValue } from '@forgeax/engine-types';
|
|
3
3
|
|
|
4
4
|
export interface MaterialRenderPassProjection {
|
|
@@ -15,7 +15,6 @@ export interface MaterialRenderProjection {
|
|
|
15
15
|
readonly materialGuid: string;
|
|
16
16
|
readonly specializationKey: string;
|
|
17
17
|
readonly artifactHash: string;
|
|
18
|
-
readonly layoutIdentity: string;
|
|
19
18
|
readonly passes: readonly MaterialRenderPassProjection[];
|
|
20
19
|
readonly runtimeValues: Readonly<Record<string, MaterialValue | null>>;
|
|
21
20
|
readonly staticSelection: readonly string[];
|
|
@@ -42,7 +41,6 @@ export function assembleMaterialProjection(record: CookedMaterialRecord): Materi
|
|
|
42
41
|
materialGuid: record.guid,
|
|
43
42
|
specializationKey: record.receipt.inputDigest,
|
|
44
43
|
artifactHash: record.artifact.digest,
|
|
45
|
-
layoutIdentity: record.receipt.layoutIdentity,
|
|
46
44
|
passes: record.resolved.passes.map((pass) => projectPass(record, pass)),
|
|
47
45
|
runtimeValues: record.resolved.values,
|
|
48
46
|
staticSelection: record.resolved.parameters
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { MaterialRuntimeArtifact } from '@forgeax/engine-shader';
|
|
2
|
+
import type { MaterialValue } from '@forgeax/engine-types';
|
|
3
|
+
import type { MaterialRenderProjection } from './assembly.js';
|
|
4
|
+
|
|
5
|
+
export interface MaterialPipelineProjection {
|
|
6
|
+
readonly specializationKey: string;
|
|
7
|
+
readonly artifactHash: string;
|
|
8
|
+
readonly passes: MaterialRenderProjection['passes'];
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export interface MaterialPipelineReady extends MaterialPipelineProjection {
|
|
12
|
+
readonly kind: 'ready';
|
|
13
|
+
readonly artifact: MaterialRuntimeArtifact;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface MaterialPipelineMiss {
|
|
17
|
+
readonly kind: 'error';
|
|
18
|
+
readonly error: {
|
|
19
|
+
readonly code: 'material-specialization-not-cooked';
|
|
20
|
+
readonly expected: string;
|
|
21
|
+
readonly hint: string;
|
|
22
|
+
readonly detail: { readonly specializationKey: string };
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function projectMaterialPipeline(
|
|
27
|
+
projection: MaterialRenderProjection,
|
|
28
|
+
): MaterialPipelineProjection {
|
|
29
|
+
return {
|
|
30
|
+
specializationKey: projection.specializationKey,
|
|
31
|
+
artifactHash: projection.artifactHash,
|
|
32
|
+
passes: projection.passes,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export function updateMaterialRuntimeValues(
|
|
37
|
+
projection: MaterialRenderProjection,
|
|
38
|
+
values: Readonly<Record<string, MaterialValue | null>>,
|
|
39
|
+
): MaterialRenderProjection {
|
|
40
|
+
return {
|
|
41
|
+
...projection,
|
|
42
|
+
runtimeValues: { ...projection.runtimeValues, ...values },
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export function routeMaterialPipeline(args: {
|
|
47
|
+
readonly projection: MaterialRenderProjection;
|
|
48
|
+
readonly lookupArtifact: (key: string) => MaterialRuntimeArtifact | undefined;
|
|
49
|
+
}): MaterialPipelineReady | MaterialPipelineMiss {
|
|
50
|
+
const artifact = args.lookupArtifact(args.projection.specializationKey);
|
|
51
|
+
if (artifact === undefined || artifact.digest !== args.projection.artifactHash) {
|
|
52
|
+
return {
|
|
53
|
+
kind: 'error',
|
|
54
|
+
error: {
|
|
55
|
+
code: 'material-specialization-not-cooked',
|
|
56
|
+
expected: 'a published artifact for the cooked specialization key',
|
|
57
|
+
hint: 'cook and publish the material specialization before rendering it',
|
|
58
|
+
detail: { specializationKey: args.projection.specializationKey },
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
return { kind: 'ready', ...projectMaterialPipeline(args.projection), artifact };
|
|
63
|
+
}
|
package/src/authoring.ts
CHANGED
|
@@ -1,24 +1,16 @@
|
|
|
1
1
|
// Optional authoring features intentionally live outside the base render vocabulary.
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
export
|
|
8
|
-
export
|
|
9
|
-
export {
|
|
2
|
+
// Systems, asset resolution, and registry details remain owner-local.
|
|
3
|
+
|
|
4
|
+
export { GlyphText } from './components/glyph-text';
|
|
5
|
+
export { SpriteAnimation } from './components/sprite-animation';
|
|
6
|
+
export { SpriteInstances, type SpriteInstancesData } from './components/sprite-instances';
|
|
7
|
+
export { SpritePlayback, spritePlaybackModeFromU32 } from './components/sprite-playback-mode';
|
|
8
|
+
export { SpriteRegionOverride } from './components/sprite-region-override';
|
|
9
|
+
export { TileLayer, TilemapSort } from './components/tile-layer';
|
|
10
|
+
export { Tilemap } from './components/tilemap';
|
|
10
11
|
export {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
} from './materials';
|
|
15
|
-
export {
|
|
16
|
-
getTransparentSortConfig,
|
|
17
|
-
setTransparentSortConfig,
|
|
18
|
-
TRANSPARENT_SORT_MODE_DISTANCE,
|
|
19
|
-
TRANSPARENT_SORT_MODE_LAYER_Y,
|
|
20
|
-
TRANSPARENT_SORT_MODE_LAYER_YZ,
|
|
21
|
-
TRANSPARENT_SORT_MODE_LAYER_Z,
|
|
22
|
-
type TransparentSortConfig,
|
|
23
|
-
} from './systems/transparent-sort-config';
|
|
24
|
-
export { tilemapChunkExtractSystem } from './tilemap-chunk-extract-system';
|
|
12
|
+
createFullscreenRenderFeature,
|
|
13
|
+
type FullscreenRenderFeatureOptions,
|
|
14
|
+
} from './features/fullscreen';
|
|
15
|
+
export { SPRITE_PREMULTIPLIED_ALPHA_BLEND } from './materials';
|
|
16
|
+
export { TransparentSort } from './systems/transparent-sort-config';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { Camera, DirectionalLight, MeshFilter } from '../index';
|
|
3
|
+
|
|
4
|
+
describe('canonical render schema owners', () => {
|
|
5
|
+
it('keeps mesh, light, and camera facts on their component owners', () => {
|
|
6
|
+
expect(MeshFilter.fields.assetHandle.type).toBe('shared<MeshAsset>');
|
|
7
|
+
expect(DirectionalLight.fields.direction.type).toBe('array<f32, 3>');
|
|
8
|
+
expect(Camera.fields.projection.default).toBe(0);
|
|
9
|
+
});
|
|
10
|
+
});
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
// Schema vocab:
|
|
14
14
|
// - `fontHandle: 'shared<FontAsset>'` -> `Handle<'FontAsset', 'shared'>`
|
|
15
15
|
// (u32-stored; AssetRegistry owns the FontAsset lifecycle). AI users
|
|
16
|
-
// obtain the handle via `assets.
|
|
16
|
+
// obtain the handle via `assets.loadByGuid<FontAsset>(guid)`.
|
|
17
17
|
// - `text: 'string'` -> native JS string (UniqueRefStore-backed, same
|
|
18
18
|
// dispatch as `Name.value`).
|
|
19
19
|
// - `fontSize: 'f32'` -> layout scale applied to the FontAsset metrics.
|
|
@@ -41,7 +41,7 @@ import { defineComponent } from '@forgeax/engine-ecs';
|
|
|
41
41
|
*
|
|
42
42
|
* @example Spawn a world-space label:
|
|
43
43
|
* import { GlyphText } from '@forgeax/engine-render/authoring';
|
|
44
|
-
* const font = (await assets.
|
|
44
|
+
* const font = (await assets.loadByGuid(fontGuid)).unwrap();
|
|
45
45
|
* world.spawn({
|
|
46
46
|
* component: GlyphText,
|
|
47
47
|
* data: { fontHandle: font, text: 'Hello', fontSize: 32,
|
|
@@ -54,6 +54,7 @@ export const GlyphText = defineComponent('GlyphText', {
|
|
|
54
54
|
fontHandle: {
|
|
55
55
|
type: 'shared<FontAsset>',
|
|
56
56
|
default: 0 as never,
|
|
57
|
+
simulationTransient: true,
|
|
57
58
|
},
|
|
58
59
|
text: { type: 'string', default: '' },
|
|
59
60
|
fontSize: { type: 'f32', default: 16 },
|
package/src/components/index.ts
CHANGED
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
export { Atmosphere } from './atmosphere';
|
|
2
1
|
export * from './camera';
|
|
3
2
|
export * from './directional-light';
|
|
4
|
-
export {
|
|
5
|
-
Fog,
|
|
6
|
-
SKYBOX_MODE_CUBEMAP,
|
|
7
|
-
SkyboxBackground,
|
|
8
|
-
type SkyboxMode,
|
|
9
|
-
Skylight,
|
|
10
|
-
skyboxModeFromF32,
|
|
11
|
-
} from './environment';
|
|
12
3
|
export { Instances, type InstancesData } from './instances';
|
|
13
4
|
export { Layer } from './layer';
|
|
14
5
|
export * from './mesh-filter';
|
|
@@ -21,6 +12,13 @@ export {
|
|
|
21
12
|
type SceneInstanceOverrideRecord,
|
|
22
13
|
type SceneInstanceState,
|
|
23
14
|
} from './scene-instance';
|
|
15
|
+
export {
|
|
16
|
+
SKYBOX_MODE_CUBEMAP,
|
|
17
|
+
SkyboxBackground,
|
|
18
|
+
type SkyboxMode,
|
|
19
|
+
skyboxModeFromF32,
|
|
20
|
+
} from './skybox-background';
|
|
21
|
+
export { Skylight } from './skylight';
|
|
24
22
|
export { SortKey } from './sort-key';
|
|
25
23
|
export { SpotLight } from './spot-light';
|
|
26
24
|
export { SpriteAnimation } from './sprite-animation';
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
// responsibility migration): the legacy component-level
|
|
56
56
|
// stride-declaration option (`{ transforms: 16 }` keyed on the retired
|
|
57
57
|
// per-component stride defineComponent option key) was retired because:
|
|
58
|
-
// - The ECS layer no longer carries
|
|
58
|
+
// - The ECS layer no longer carries a per-component stride schema (M2 /
|
|
59
59
|
// w9 dropped the option from `DefineComponentOptions` -- the SSOT
|
|
60
60
|
// moved to the RenderSystem entry + AI user set site).
|
|
61
61
|
// - Centralising the check at the consumer (RenderSystem extract) rather
|
|
@@ -98,8 +98,7 @@
|
|
|
98
98
|
// ===== (a) single-component import + spawn example =====
|
|
99
99
|
//
|
|
100
100
|
// import {
|
|
101
|
-
// createRenderer,
|
|
102
|
-
// createPrimitiveMesh,
|
|
101
|
+
// createRenderer, HANDLE_CUBE,
|
|
103
102
|
// MeshFilter, MeshRenderer, Transform,
|
|
104
103
|
// Instances, type InstancesData,
|
|
105
104
|
// } from '@forgeax/engine-render';
|
|
@@ -108,7 +107,7 @@
|
|
|
108
107
|
// const transforms = new Float32Array(N * 16);
|
|
109
108
|
// // ... fill column-major mat4 columns per instance ...
|
|
110
109
|
// world.spawn(
|
|
111
|
-
// { component: MeshFilter, data: { assetHandle:
|
|
110
|
+
// { component: MeshFilter, data: { assetHandle: HANDLE_CUBE } },
|
|
112
111
|
// { component: MeshRenderer, data: {} },
|
|
113
112
|
// { component: Instances, data: { transforms } },
|
|
114
113
|
// );
|
|
@@ -181,7 +180,7 @@ import { defineComponent } from '@forgeax/engine-ecs';
|
|
|
181
180
|
* const transforms = new Float32Array(10000 * 16);
|
|
182
181
|
* // ... fill column-major mat4 columns ...
|
|
183
182
|
* world.spawn(
|
|
184
|
-
* { component: MeshFilter, data: { assetHandle:
|
|
183
|
+
* { component: MeshFilter, data: { assetHandle: HANDLE_CUBE } },
|
|
185
184
|
* { component: MeshRenderer, data: { ... } },
|
|
186
185
|
* { component: Instances, data: { transforms } },
|
|
187
186
|
* );
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
// invRangeSquared = 1e8 protects the 0 * Infinity = NaN intermediate).
|
|
16
16
|
|
|
17
17
|
import { err, ok, type Result } from '@forgeax/engine-types';
|
|
18
|
-
import { SpawnLightInvalidBoundsError } from '../errors';
|
|
18
|
+
import { SpawnLightInvalidBoundsError } from '../errors/ecs-validation';
|
|
19
19
|
import { ShadowInvalidConfigError } from '../errors/render';
|
|
20
20
|
|
|
21
21
|
export type LightValidationError = SpawnLightInvalidBoundsError | ShadowInvalidConfigError;
|
|
@@ -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>' },
|
|
@@ -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
|
+
});
|