@forgeax/engine-runtime 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 +49 -83
- package/dist/.tsbuildinfo +1 -1
- package/dist/__tests__/animation-graph-collect-roundtrip.test.d.ts +2 -0
- package/dist/__tests__/animation-graph-collect-roundtrip.test.d.ts.map +1 -0
- package/dist/__tests__/animation-graph-serialize.unit.test.d.ts +2 -0
- package/dist/__tests__/animation-graph-serialize.unit.test.d.ts.map +1 -0
- package/dist/__tests__/asset-brand-and-name-retirement.test.d.ts +2 -0
- package/dist/__tests__/asset-brand-and-name-retirement.test.d.ts.map +1 -0
- package/dist/__tests__/asset-error-exhaustive.test-d.d.ts +11 -0
- package/dist/__tests__/asset-error-exhaustive.test-d.d.ts.map +1 -0
- package/dist/__tests__/asset-registry-guid-reverse.test.d.ts +2 -0
- package/dist/__tests__/asset-registry-guid-reverse.test.d.ts.map +1 -0
- package/dist/__tests__/asset-registry-hdr-equirect.test.d.ts +2 -0
- package/dist/__tests__/asset-registry-hdr-equirect.test.d.ts.map +1 -0
- package/dist/__tests__/asset-registry-mesh-pack-payload.dawn.test.d.ts +2 -0
- package/dist/__tests__/asset-registry-mesh-pack-payload.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/asset-registry-mounts.test.d.ts +2 -0
- package/dist/__tests__/asset-registry-mounts.test.d.ts.map +1 -0
- package/dist/__tests__/asset-registry.browser.test.d.ts +2 -0
- package/dist/__tests__/asset-registry.browser.test.d.ts.map +1 -0
- package/dist/__tests__/asset-registry.dawn.test.d.ts +2 -0
- package/dist/__tests__/asset-registry.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/asset-registry.listCatalog.test.d.ts +2 -0
- package/dist/__tests__/asset-registry.listCatalog.test.d.ts.map +1 -0
- package/dist/__tests__/asset-registry.mesh-bin.test.d.ts +2 -0
- package/dist/__tests__/asset-registry.mesh-bin.test.d.ts.map +1 -0
- package/dist/__tests__/asset-registry.pack-cache.test.d.ts +2 -0
- package/dist/__tests__/asset-registry.pack-cache.test.d.ts.map +1 -0
- package/dist/__tests__/asset-registry.raw-container-failfast.test.d.ts +2 -0
- package/dist/__tests__/asset-registry.raw-container-failfast.test.d.ts.map +1 -0
- package/dist/__tests__/asset-registry.recursive.spec.d.ts +2 -0
- package/dist/__tests__/asset-registry.recursive.spec.d.ts.map +1 -0
- package/dist/__tests__/asset-registry.unit.test.d.ts +2 -0
- package/dist/__tests__/asset-registry.unit.test.d.ts.map +1 -0
- package/dist/__tests__/asset.unit.test.d.ts +2 -0
- package/dist/__tests__/asset.unit.test.d.ts.map +1 -0
- package/dist/__tests__/audio-load-by-guid.unit.test.d.ts +2 -0
- package/dist/__tests__/audio-load-by-guid.unit.test.d.ts.map +1 -0
- package/dist/__tests__/backend-selection.integration.test.d.ts +2 -0
- package/dist/__tests__/backend-selection.integration.test.d.ts.map +1 -0
- package/dist/__tests__/basis-catalog-dispatch.integration.test.d.ts +2 -0
- package/dist/__tests__/basis-catalog-dispatch.integration.test.d.ts.map +1 -0
- package/dist/__tests__/builtin-asset-registry.unit.test.d.ts +2 -0
- package/dist/__tests__/builtin-asset-registry.unit.test.d.ts.map +1 -0
- package/dist/__tests__/collect-scene-asset.test.d.ts +1 -2
- package/dist/__tests__/collect-scene-asset.test.d.ts.map +1 -1
- package/dist/__tests__/collect-scene-mount-collapse.test.d.ts +2 -0
- package/dist/__tests__/collect-scene-mount-collapse.test.d.ts.map +1 -0
- package/dist/__tests__/collect-transient-roundtrip.test.d.ts +1 -1
- package/dist/__tests__/collect-transient-roundtrip.test.d.ts.map +1 -1
- package/dist/__tests__/collect-transient-skip.test.d.ts +1 -2
- package/dist/__tests__/collect-transient-skip.test.d.ts.map +1 -1
- package/dist/__tests__/compressed-texture-physical-extent.integration.test.d.ts +2 -0
- package/dist/__tests__/compressed-texture-physical-extent.integration.test.d.ts.map +1 -0
- package/dist/__tests__/dawn/mesh-update-dawn.test.d.ts +2 -0
- package/dist/__tests__/dawn/mesh-update-dawn.test.d.ts.map +1 -0
- package/dist/__tests__/dawn/upload-texture.dawn.test.d.ts +2 -0
- package/dist/__tests__/dawn/upload-texture.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/draw-published.d.ts +2 -2
- package/dist/__tests__/draw-published.d.ts.map +1 -1
- package/dist/__tests__/dynamic-texture-store.unit.test.d.ts +2 -0
- package/dist/__tests__/dynamic-texture-store.unit.test.d.ts.map +1 -0
- package/dist/__tests__/errors.unit.test.d.ts +2 -0
- package/dist/__tests__/errors.unit.test.d.ts.map +1 -0
- package/dist/__tests__/extract-skin-mismatch.unit.test.d.ts +2 -0
- package/dist/__tests__/extract-skin-mismatch.unit.test.d.ts.map +1 -0
- package/dist/__tests__/fetch-binary-decompress.test.d.ts +2 -0
- package/dist/__tests__/fetch-binary-decompress.test.d.ts.map +1 -0
- package/dist/__tests__/four-path-compression.integration.test.d.ts +2 -0
- package/dist/__tests__/four-path-compression.integration.test.d.ts.map +1 -0
- package/dist/__tests__/fullscreen-feature-host.dawn.test.d.ts +2 -0
- package/dist/__tests__/fullscreen-feature-host.dawn.test.d.ts.map +1 -0
- package/dist/__tests__/guid-for-asset.unit.test.d.ts +2 -0
- package/dist/__tests__/guid-for-asset.unit.test.d.ts.map +1 -0
- package/dist/__tests__/handle-migration.test.d.ts +2 -0
- package/dist/__tests__/handle-migration.test.d.ts.map +1 -0
- package/dist/__tests__/helpers/register-runtime-components.d.ts.map +1 -1
- package/dist/__tests__/host-custom-kind-contract.test-d.d.ts +2 -0
- package/dist/__tests__/host-custom-kind-contract.test-d.d.ts.map +1 -0
- package/dist/__tests__/host-custom-kind-contract.test.d.ts +2 -0
- package/dist/__tests__/host-custom-kind-contract.test.d.ts.map +1 -0
- package/dist/__tests__/inspect-name.test.d.ts +2 -0
- package/dist/__tests__/inspect-name.test.d.ts.map +1 -0
- package/dist/__tests__/instantiate-mount-deferred-wiring.test.d.ts +2 -0
- package/dist/__tests__/instantiate-mount-deferred-wiring.test.d.ts.map +1 -0
- package/dist/__tests__/loadbyguid-payload.unit.test.d.ts +2 -0
- package/dist/__tests__/loadbyguid-payload.unit.test.d.ts.map +1 -0
- package/dist/__tests__/loadbyguid-texture-intern.unit.test.d.ts +2 -0
- package/dist/__tests__/loadbyguid-texture-intern.unit.test.d.ts.map +1 -0
- package/dist/__tests__/loader-extract-graceful.test.d.ts +2 -0
- package/dist/__tests__/loader-extract-graceful.test.d.ts.map +1 -0
- package/dist/__tests__/loader-name-survival.test.d.ts +2 -0
- package/dist/__tests__/loader-name-survival.test.d.ts.map +1 -0
- package/dist/__tests__/mesh-bin-contract.test.d.ts +2 -0
- package/dist/__tests__/mesh-bin-contract.test.d.ts.map +1 -0
- package/dist/__tests__/mesh-bin-skin-roundtrip.unit.test.d.ts +2 -0
- package/dist/__tests__/mesh-bin-skin-roundtrip.unit.test.d.ts.map +1 -0
- package/dist/__tests__/mesh-bin.test.d.ts +2 -0
- package/dist/__tests__/mesh-bin.test.d.ts.map +1 -0
- package/dist/__tests__/mesh-loader-skin-contract.unit.test.d.ts +2 -0
- package/dist/__tests__/mesh-loader-skin-contract.unit.test.d.ts.map +1 -0
- package/dist/__tests__/new-kind-refs-contract.test.d.ts +2 -0
- package/dist/__tests__/new-kind-refs-contract.test.d.ts.map +1 -0
- package/dist/__tests__/package-promotion.test.d.ts +2 -0
- package/dist/__tests__/package-promotion.test.d.ts.map +1 -0
- package/dist/__tests__/package-rename.test.d.ts +2 -0
- package/dist/__tests__/package-rename.test.d.ts.map +1 -0
- package/dist/__tests__/recover-error-exhaustive.test-d.d.ts +1 -1
- package/dist/__tests__/recover-error-exhaustive.test-d.d.ts.map +1 -1
- package/dist/__tests__/render-error-exhaustive.test-d.d.ts +1 -1
- package/dist/__tests__/render-error-exhaustive.test-d.d.ts.map +1 -1
- package/dist/__tests__/render-feature-prepared-graphics.fixture.d.ts +10 -0
- package/dist/__tests__/render-feature-prepared-graphics.fixture.d.ts.map +1 -0
- package/dist/__tests__/render-system-extract.unit.test.d.ts +2 -0
- package/dist/__tests__/render-system-extract.unit.test.d.ts.map +1 -0
- package/dist/__tests__/renderer-test-utils.d.ts +10 -0
- package/dist/__tests__/renderer-test-utils.d.ts.map +1 -0
- package/dist/__tests__/renderer.test-d.d.ts +2 -0
- package/dist/__tests__/renderer.test-d.d.ts.map +1 -0
- package/dist/__tests__/resolve-asset-handle-err.test.d.ts +2 -0
- package/dist/__tests__/resolve-asset-handle-err.test.d.ts.map +1 -0
- package/dist/__tests__/resolve-asset-handle.unit.test.d.ts +2 -0
- package/dist/__tests__/resolve-asset-handle.unit.test.d.ts.map +1 -0
- package/dist/__tests__/resolveName-fallback.test.d.ts +2 -0
- package/dist/__tests__/resolveName-fallback.test.d.ts.map +1 -0
- package/dist/__tests__/resolveName-null-package.test.d.ts +2 -0
- package/dist/__tests__/resolveName-null-package.test.d.ts.map +1 -0
- package/dist/__tests__/resolveName-unified-entry.test.d.ts +2 -0
- package/dist/__tests__/resolveName-unified-entry.test.d.ts.map +1 -0
- package/dist/__tests__/resolveName.test.d.ts +2 -0
- package/dist/__tests__/resolveName.test.d.ts.map +1 -0
- package/dist/__tests__/roots-to-scene-asset.test.d.ts +1 -1
- package/dist/__tests__/roots-to-scene-asset.test.d.ts.map +1 -1
- package/dist/__tests__/roundtrip-primitive.test.d.ts +2 -0
- package/dist/__tests__/roundtrip-primitive.test.d.ts.map +1 -0
- package/dist/__tests__/scene-bare-guid-refs-instantiate.test.d.ts +2 -0
- package/dist/__tests__/scene-bare-guid-refs-instantiate.test.d.ts.map +1 -0
- package/dist/__tests__/scene-instance-authoring.integration.test.d.ts +2 -0
- package/dist/__tests__/scene-instance-authoring.integration.test.d.ts.map +1 -0
- package/dist/__tests__/scene-mount-fixed-point.test.d.ts +2 -0
- package/dist/__tests__/scene-mount-fixed-point.test.d.ts.map +1 -0
- package/dist/__tests__/scene-mount-roundtrip.test.d.ts +2 -0
- package/dist/__tests__/scene-mount-roundtrip.test.d.ts.map +1 -0
- package/dist/__tests__/scene-mount-wrapper-roundtrip.test.d.ts +2 -0
- package/dist/__tests__/scene-mount-wrapper-roundtrip.test.d.ts.map +1 -0
- package/dist/__tests__/scene-sugar-instantiate.test.d.ts +2 -0
- package/dist/__tests__/scene-sugar-instantiate.test.d.ts.map +1 -0
- package/dist/__tests__/serialize-mounts-roundtrip.test.d.ts +2 -0
- package/dist/__tests__/serialize-mounts-roundtrip.test.d.ts.map +1 -0
- package/dist/__tests__/serialize-scene-asset.test.d.ts +1 -1
- package/dist/__tests__/serialize-scene-asset.test.d.ts.map +1 -1
- package/dist/__tests__/template-game-default-api-contract.test.d.ts +2 -0
- package/dist/__tests__/template-game-default-api-contract.test.d.ts.map +1 -0
- package/dist/__tests__/tileset-asset-validate.test.d.ts +2 -0
- package/dist/__tests__/tileset-asset-validate.test.d.ts.map +1 -0
- package/dist/__tests__/transcode-fallback.unit.test.d.ts +2 -0
- package/dist/__tests__/transcode-fallback.unit.test.d.ts.map +1 -0
- package/dist/__tests__/transient-runtime-behavior.test.d.ts +2 -0
- package/dist/__tests__/transient-runtime-behavior.test.d.ts.map +1 -0
- package/dist/__tests__/video-loader-consumption.test.d.ts +2 -0
- package/dist/__tests__/video-loader-consumption.test.d.ts.map +1 -0
- package/dist/__tests__/video-loader-smoke.dawn.test.d.ts +2 -0
- package/dist/__tests__/video-loader-smoke.dawn.test.d.ts.map +1 -0
- package/dist/backend-selection.d.ts +13 -0
- package/dist/backend-selection.d.ts.map +1 -0
- package/dist/collect-scene-asset.d.ts +3 -3
- package/dist/collect-scene-asset.d.ts.map +1 -1
- package/dist/createRenderer.d.ts +14 -2
- package/dist/createRenderer.d.ts.map +1 -1
- package/dist/errors/environment.d.ts +1 -1
- package/dist/errors/environment.d.ts.map +1 -1
- package/dist/index.d.ts +19 -81
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +105 -108
- package/dist/index.mjs.map +1 -1
- package/dist/renderer-host.d.ts +9 -0
- package/dist/renderer-host.d.ts.map +1 -0
- package/dist/renderer-host.mjs +62 -0
- package/dist/renderer-host.mjs.map +1 -0
- package/dist/scene-instances/index.d.ts +2 -0
- package/dist/scene-instances/index.d.ts.map +1 -0
- package/dist/scene-utils/mount-override-fold.d.ts +1 -2
- package/dist/scene-utils/mount-override-fold.d.ts.map +1 -1
- package/dist/systems/sprite-animation-tick.d.ts +1 -1
- package/dist/systems/sprite-animation-tick.d.ts.map +1 -1
- package/dist/systems/transparent-sort.d.ts +1 -2
- package/dist/systems/transparent-sort.d.ts.map +1 -1
- package/dist/tilemap-register-validate.d.ts.map +1 -1
- package/package.json +34 -33
- package/src/__tests__/active-camera.unit.test.ts +19 -9
- package/src/__tests__/animation-graph-collect-roundtrip.test.ts +213 -0
- package/src/__tests__/animation-graph-serialize.unit.test.ts +171 -0
- package/src/__tests__/append-injection.test.ts +1 -1
- package/src/__tests__/asset-brand-and-name-retirement.test.ts +102 -0
- package/src/__tests__/asset-error-exhaustive.test-d.ts +62 -0
- package/src/__tests__/asset-registry-guid-reverse.test.ts +575 -0
- package/src/__tests__/asset-registry-hdr-equirect.test.ts +78 -0
- package/src/__tests__/asset-registry-mesh-pack-payload.dawn.test.ts +232 -0
- package/src/__tests__/asset-registry-mounts.test.ts +806 -0
- package/src/__tests__/asset-registry.browser.test.ts +81 -0
- package/src/__tests__/asset-registry.dawn.test.ts +94 -0
- package/src/__tests__/asset-registry.listCatalog.test.ts +170 -0
- package/src/__tests__/asset-registry.mesh-bin.test.ts +316 -0
- package/src/__tests__/asset-registry.pack-cache.test.ts +969 -0
- package/src/__tests__/asset-registry.raw-container-failfast.test.ts +225 -0
- package/src/__tests__/asset-registry.recursive.spec.ts +1397 -0
- package/src/__tests__/asset-registry.unit.test.ts +1030 -0
- package/src/__tests__/asset.unit.test.ts +7107 -0
- package/src/__tests__/audio-load-by-guid.unit.test.ts +126 -0
- package/src/__tests__/backend-selection.integration.test.ts +11 -0
- package/src/__tests__/basis-catalog-dispatch.integration.test.ts +320 -0
- package/src/__tests__/bind-group-cache-keying.test.ts +4 -4
- package/src/__tests__/block-upload-math.unit.test.ts +2 -2
- package/src/__tests__/builtin-asset-registry.unit.test.ts +112 -0
- package/src/__tests__/builtin-shader-register-e2e.test.ts +1 -1
- package/src/__tests__/cache-false-eviction.test.ts +2 -1
- package/src/__tests__/cache-isolation-matrix.test.ts +2 -1
- package/src/__tests__/camera-clear-snapshot-equivalence.unit.test.ts +5 -6
- package/src/__tests__/clamp-to-last.e2e.browser.test.ts +29 -19
- package/src/__tests__/collect-scene-asset.test.ts +49 -52
- package/src/__tests__/collect-scene-mount-collapse.test.ts +391 -0
- package/src/__tests__/collect-subtree.unit.test.ts +1 -2
- package/src/__tests__/collect-transient-children-absent.test.ts +24 -10
- package/src/__tests__/collect-transient-roundtrip.test.ts +44 -20
- package/src/__tests__/collect-transient-skip.test.ts +24 -13
- package/src/__tests__/components.test-d.ts +1 -6
- package/src/__tests__/components.unit.test.ts +20 -19
- package/src/__tests__/composite-skybox-cross-world.browser.test.ts +59 -27
- package/src/__tests__/compressed-texture-physical-extent.integration.test.ts +139 -0
- package/src/__tests__/create-renderer-assembly.integration.test.ts +42 -29
- package/src/__tests__/createRenderer-dispose.test.ts +35 -402
- package/src/__tests__/createRenderer.browser-no-webgpu.test.ts +25 -30
- package/src/__tests__/createRenderer.unit.test.ts +1 -1
- package/src/__tests__/dawn/hello-sprite-nineslice-section.dawn.test.ts +27 -63
- package/src/__tests__/dawn/ibl-precompute-readback.dawn.test.ts +56 -47
- package/src/__tests__/dawn/instances-per-instance-pbr.dawn.test.ts +49 -29
- package/src/__tests__/dawn/instances-shadow.dawn.test.ts +26 -15
- package/src/__tests__/dawn/instances-uniform-fallback.dawn.test.ts +13 -14
- package/src/__tests__/dawn/material-alpha.dawn.test.ts +23 -31
- package/src/__tests__/dawn/material-cooked-fixture.dawn.test.ts +0 -18
- package/src/__tests__/dawn/{mesh-update.dawn.test.ts → mesh-update-dawn.test.ts} +42 -134
- package/src/__tests__/dawn/mipmap-srgb-linear.dawn.test.ts +14 -7
- package/src/__tests__/dawn/per-entity-material-texture-isolation.dawn.test.ts +16 -28
- package/src/__tests__/dawn/sprite-nineslice-mesh-bind.dawn.test.ts +23 -39
- package/src/__tests__/dawn/upload-texture.dawn.test.ts +198 -0
- package/src/__tests__/dawn/user-handle-mesh-render.dawn.test.ts +12 -14
- package/src/__tests__/dawn/user-mesh-upload.dawn.test.ts +27 -22
- package/src/__tests__/dawn/zero-manifest-mesh-fail.dawn.test.ts +25 -28
- package/src/__tests__/dawn/zero-manifest-ready.dawn.test.ts +10 -11
- package/src/__tests__/demo-sortscope-migration.unit.test.ts +5 -5
- package/src/__tests__/derive-bgl-integration.test.ts +34 -44
- package/src/__tests__/derive-render-data-skin.unit.test.ts +1 -1
- package/src/__tests__/draw-published.ts +11 -4
- package/src/__tests__/dynamic-texture-store.unit.test.ts +190 -0
- package/src/__tests__/equirect-bc6h.integration.test.ts +144 -21
- package/src/__tests__/errors.unit.test.ts +1203 -0
- package/src/__tests__/extract-frames-graceful-degradation.test.ts +3 -7
- package/src/__tests__/extract-frames-merge.test.ts +35 -22
- package/src/__tests__/extract-record-no-hardcoded-texture-fields.test.ts +5 -16
- package/src/__tests__/extract-skin-mismatch.unit.test.ts +322 -0
- package/src/__tests__/fetch-binary-decompress.test.ts +356 -0
- package/src/__tests__/four-path-compression.integration.test.ts +395 -0
- package/src/__tests__/frame-targets-shadow-regression.unit.test.ts +1 -1
- package/src/__tests__/fullscreen-feature-host.dawn.test.ts +80 -0
- package/src/__tests__/fullscreen-post-bgl-depth.test.ts +4 -2
- package/src/__tests__/fullscreen-post-depth-params-arity.test.ts +3 -3
- package/src/__tests__/fullscreen-post-process-pass.dawn.test.ts +39 -23
- package/src/__tests__/fullscreen-post-process-pass.unit.test.ts +4 -2
- package/src/__tests__/fxaa-pixel-diff.dawn.test.ts +28 -17
- package/src/__tests__/fxaa-validation-and-resize.dawn.test.ts +29 -18
- package/src/__tests__/fxaa-zero-overhead.dawn.test.ts +16 -12
- package/src/__tests__/geometry.unit.test.ts +525 -159
- package/src/__tests__/glyph-tilemap-worldid.test.ts +1 -1
- package/src/__tests__/gpu-resource-cow-survivor.test.ts +6 -4
- package/src/__tests__/guid-for-asset.unit.test.ts +102 -0
- package/src/__tests__/handle-migration.test.ts +136 -0
- package/src/__tests__/helpers/register-runtime-components.ts +4 -2
- package/src/__tests__/helpers/register-scene-components.ts +1 -1
- package/src/__tests__/host-custom-kind-contract.test-d.ts +47 -0
- package/src/__tests__/host-custom-kind-contract.test.ts +578 -0
- package/src/__tests__/inspect-name.test.ts +139 -0
- package/src/__tests__/instances.test-d.ts +1 -1
- package/src/__tests__/instantiate-mount-deferred-wiring.test.ts +112 -0
- package/src/__tests__/light-casters-9-light.browser.test.ts +73 -76
- package/src/__tests__/light-gpu-byte-neutral.unit.test.ts +7 -10
- package/src/__tests__/light-snapshot.test-d.ts +2 -2
- package/src/__tests__/lights-vec-negative.unit.test.ts +1 -1
- package/src/__tests__/lights.unit.test.ts +16 -500
- package/src/__tests__/loadbyguid-payload.unit.test.ts +117 -0
- package/src/__tests__/loadbyguid-texture-intern.unit.test.ts +213 -0
- package/src/__tests__/loader-extract-graceful.test.ts +146 -0
- package/src/__tests__/loader-name-survival.test.ts +213 -0
- package/src/__tests__/m3-vec-negative.unit.test.ts +3 -2
- package/src/__tests__/material-texture-uv-scale.unit.test.ts +101 -31
- package/src/__tests__/materials.unit.test.ts +10 -27
- package/src/__tests__/mesh-bin-contract.test.ts +28 -0
- package/src/__tests__/mesh-bin-skin-roundtrip.unit.test.ts +149 -0
- package/src/__tests__/mesh-bin.test.ts +38 -0
- package/src/__tests__/mesh-loader-skin-contract.unit.test.ts +120 -0
- package/src/__tests__/mesh-ssbo-grow.unit.test.ts +3 -3
- package/src/__tests__/mip-gate.unit.test.ts +1 -1
- package/src/__tests__/msaa-sprite-pixel-diff.dawn.test.ts +29 -68
- package/src/__tests__/new-kind-refs-contract.test.ts +132 -0
- package/src/__tests__/node-shims.d.ts +4 -6
- package/src/__tests__/package-promotion.test.ts +88 -0
- package/src/__tests__/package-rename.test.ts +103 -0
- package/src/__tests__/pass-selector.unit.test.ts +2 -2
- package/src/__tests__/pbr-pipeline.unit.test.ts +14 -21
- package/src/__tests__/pipeline-builder-msaa.unit.test.ts +6 -9
- package/src/__tests__/pipeline-cache-keying.unit.test.ts +6 -9
- package/src/__tests__/pipeline-spec.test.ts +16 -177
- package/src/__tests__/pipeline.unit.test.ts +154 -1693
- package/src/__tests__/point-light-shadow.dawn.test.ts +33 -42
- package/src/__tests__/point-light-shadow.unit.test.ts +19 -60
- package/src/__tests__/post-process-error-codes.unit.test.ts +4 -1
- package/src/__tests__/post-process-params-component.unit.test.ts +1 -1
- package/src/__tests__/post-process-params-extract.unit.test.ts +2 -5
- package/src/__tests__/postprocess-camera-consistency.test.ts +4 -7
- package/src/__tests__/profiler-assembly.integration.test.ts +1 -1
- package/src/__tests__/propagate-transforms.dawn.test.ts +12 -11
- package/src/__tests__/record-worldid-isolation.test.ts +7 -29
- package/src/__tests__/recover-error-exhaustive.test-d.ts +1 -1
- package/src/__tests__/render-error-exhaustive.test-d.ts +81 -71
- package/src/__tests__/render-feature-assembly.test-d.ts +20 -9
- package/src/__tests__/render-feature-prepared-graphics-docs.unit.test.ts +8 -6
- package/src/__tests__/render-feature-prepared-graphics.browser.test.ts +60 -558
- package/src/__tests__/render-feature-prepared-graphics.dawn.test.ts +57 -544
- package/src/__tests__/render-feature-prepared-graphics.fixture.ts +104 -0
- package/src/__tests__/render-feature-prepared-graphics.integration.test.ts +40 -248
- package/src/__tests__/render-feature-prepared-graphics.regression.integration.test.ts +83 -340
- package/src/__tests__/render-feature-recover.integration.test.ts +9 -49
- package/src/__tests__/render-feature-runtime-surface.test-d.ts +17 -20
- package/src/__tests__/render-schema-consumer.integration.test.ts +20 -13
- package/src/__tests__/render-schema-owner-boundary.unit.test.ts +2 -6
- package/src/__tests__/render-system-cross-world-overlay-queue.test.ts +5 -5
- package/src/__tests__/render-system-extract-dispatch-ordering.test.ts +16 -31
- package/src/__tests__/render-system-extract.test.ts +36 -51
- package/src/__tests__/render-system-extract.unit.test.ts +360 -0
- package/src/__tests__/render-system-fold-bucket.unit.test.ts +3 -5
- package/src/__tests__/render-system-fold-fallback.unit.test.ts +6 -3
- package/src/__tests__/render-system-fold-material.unit.test.ts +3 -5
- package/src/__tests__/render-system-fold-metrics.unit.test.ts +5 -5
- package/src/__tests__/render-system-fold-modegate.unit.test.ts +6 -6
- package/src/__tests__/render-system-fold.dawn.test.ts +7 -5
- package/src/__tests__/render-system-mega.test.ts +292 -190
- package/src/__tests__/render-system-owner-split-contract.test.ts +10 -32
- package/src/__tests__/render-system-record-multi-material-textureview.test.ts +59 -45
- package/src/__tests__/render-system-record-per-submesh-transparency.test.ts +23 -29
- package/src/__tests__/render-system-record.test.ts +398 -235
- package/src/__tests__/render-system-record.unit.test.ts +25 -26
- package/src/__tests__/render-system-skin-bg.unit.test.ts +8 -12
- package/src/__tests__/renderer-consumer.test-d.ts +16 -3
- package/src/__tests__/renderer-health.unit.test.ts +26 -916
- package/src/__tests__/renderer-lifecycle.integration.test.ts +19 -6
- package/src/__tests__/renderer-recover.unit.test.ts +49 -1069
- package/src/__tests__/renderer-result.test-d.ts +19 -9
- package/src/__tests__/renderer-surface.unit.test.ts +3 -5
- package/src/__tests__/renderer-test-utils.ts +56 -0
- package/src/__tests__/renderer.test-d.ts +59 -0
- package/src/__tests__/resolve-asset-handle-err.test.ts +111 -0
- package/src/__tests__/resolve-asset-handle.unit.test.ts +64 -0
- package/src/__tests__/resolve-depth-only-view.test.ts +1 -1
- package/src/__tests__/resolveName-fallback.test.ts +64 -0
- package/src/__tests__/resolveName-null-package.test.ts +38 -0
- package/src/__tests__/resolveName-unified-entry.test.ts +65 -0
- package/src/__tests__/resolveName.test.ts +64 -0
- package/src/__tests__/rhi-null-command-flow.unit.test.ts +43 -261
- package/src/__tests__/rhi-null-renderer-lifecycle.unit.test.ts +41 -169
- package/src/__tests__/roots-to-scene-asset.test.ts +199 -93
- package/src/__tests__/roundtrip-primitive.test.ts +351 -0
- package/src/__tests__/scene-bare-guid-refs-instantiate.test.ts +123 -0
- package/src/__tests__/scene-equirect-roundtrip.test.ts +103 -16
- package/src/__tests__/scene-instance-authoring.integration.test.ts +8 -0
- package/src/__tests__/scene-instance-bridge.integration.test.ts +1 -1
- package/src/__tests__/scene-instance-component.test.ts +1 -1
- package/src/__tests__/scene-mount-fixed-point.test.ts +257 -0
- package/src/__tests__/scene-mount-roundtrip.test.ts +987 -0
- package/src/__tests__/scene-mount-wrapper-roundtrip.test.ts +202 -0
- package/src/__tests__/scene-sugar-instantiate.test.ts +324 -0
- package/src/__tests__/serialize-mounts-roundtrip.test.ts +533 -0
- package/src/__tests__/serialize-scene-asset.test.ts +219 -22
- package/src/__tests__/shadow-caster-empty-schema.test.ts +3 -3
- package/src/__tests__/shadow-csm-cascade-loadop.test.ts +37 -17
- package/src/__tests__/shadow-csm-component.test.ts +3 -5
- package/src/__tests__/shadow-csm-extract.test.ts +2 -100
- package/src/__tests__/shadow-csm-orthoz.test.ts +2 -16
- package/src/__tests__/shadow-csm-runtime-vary.dawn.test.ts +19 -14
- package/src/__tests__/shadow-csm-tile-consistency.test.ts +32 -26
- package/src/__tests__/shadow-csm-ubo.dawn.test.ts +8 -49
- package/src/__tests__/shadow-csm-ubo.test.ts +3 -25
- package/src/__tests__/shadow-csm-viewport.browser.test.ts +1 -1
- package/src/__tests__/shadow-fields-observable.dawn.test.ts +67 -56
- package/src/__tests__/shadow-m1.dawn.test.ts +8 -9
- package/src/__tests__/shadow-mesh-ssbo-order.test.ts +11 -27
- package/src/__tests__/skin-errors.unit.test.ts +1 -1
- package/src/__tests__/skin-extract-getarrayview-count.unit.test.ts +7 -5
- package/src/__tests__/skylight-lazy-projection.test.ts +36 -15
- package/src/__tests__/sparse-tag-scene-roundtrip.test.ts +5 -5
- package/src/__tests__/sprite-cullmode-flip.dawn.test.ts +47 -64
- package/src/__tests__/sprite-lit-bgl-byte-identical.test.ts +12 -11
- package/src/__tests__/sprite-lit-extract-branch.test.ts +1 -1
- package/src/__tests__/sprite-lit-pipeline-cache-key.test.ts +1 -1
- package/src/__tests__/ssao-bgl.test.ts +16 -9
- package/src/__tests__/ssao-buffers.test.ts +2 -2
- package/src/__tests__/ssao-data.test.ts +2 -2
- package/src/__tests__/ssao-errors.test.ts +1 -1
- package/src/__tests__/ssao-passes.test.ts +64 -392
- package/src/__tests__/ssao-pipelines.test.ts +1 -1
- package/src/__tests__/ssao-uniform-layout.test.ts +8 -6
- package/src/__tests__/stencil-outline-pixel.dawn.test.ts +25 -17
- package/src/__tests__/swap-chain-format.unit.test.ts +5 -7
- package/src/__tests__/systems.unit.test.ts +536 -1326
- package/src/__tests__/template-game-default-api-contract.test.ts +362 -0
- package/src/__tests__/text.unit.test.ts +56 -33
- package/src/__tests__/tilemap-childed-despawn.test.ts +8 -14
- package/src/__tests__/tilemap-chunk-extract.overhang-bounds.test.ts +8 -12
- package/src/__tests__/tilemap-chunk-extract.propagate-order.test.ts +2 -1
- package/src/__tests__/tilemap-chunk-extract.test.ts +13 -17
- package/src/__tests__/tilemap-dirty-rebuild.test.ts +7 -11
- package/src/__tests__/tilemap-material-cache.test.ts +8 -13
- package/src/__tests__/tilemap-multi-atlas.test.ts +12 -32
- package/src/__tests__/tilemap-owner-boundary.unit.test.ts +5 -2
- package/src/__tests__/tilemap-region-pack.test.ts +8 -12
- package/src/__tests__/tilemap-spawn-flip-pivot.test.ts +8 -12
- package/src/__tests__/tilemap-uv-inset.test.ts +11 -14
- package/src/__tests__/tilemap-validate.test.ts +1 -1
- package/src/__tests__/tileset-asset-validate.test.ts +638 -0
- package/src/__tests__/transcode-fallback.unit.test.ts +207 -0
- package/src/__tests__/transform-hierarchy-pixel-diff.dawn.test.ts +36 -28
- package/src/__tests__/transient-fields-collect.test.ts +28 -21
- package/src/__tests__/transient-runtime-behavior.test.ts +227 -0
- package/src/__tests__/transparent-sort-tilemap-sprite-interleave.test.ts +4 -4
- package/src/__tests__/variant-selection.unit.test.ts +1 -1
- package/src/__tests__/video-extract-bindgroup.dawn.test.ts +89 -136
- package/src/__tests__/video-loader-consumption.test.ts +86 -0
- package/src/__tests__/video-loader-smoke.dawn.test.ts +60 -0
- package/src/__tests__/view-ubo-layout.browser.test.ts +0 -22
- package/src/__tests__/world-entity-key.test.ts +1 -1
- package/src/__tests__/world-scene-despawn.test.ts +1 -1
- package/src/__tests__/world-scene-instantiate.test.ts +2 -36
- package/src/__tests__/world-scene-nested.test.ts +1 -1
- package/src/__tests__/world-scene-override.test.ts +1 -1
- package/src/backend-selection.ts +69 -0
- package/src/collect-scene-asset.ts +28 -23
- package/src/components/__tests__/camera.test-d.ts +1 -1
- package/src/components/__tests__/camera.test.ts +1 -1
- package/src/components/__tests__/sprite-animation.test-d.ts +2 -2
- package/src/components/__tests__/tile-layer.test-d.ts +1 -1
- package/src/components/__tests__/tile-layer.unit.test.ts +2 -2
- package/src/createRenderer.ts +24 -36
- package/src/errors/environment.ts +1 -1
- package/src/index.ts +47 -113
- package/src/renderer-host.ts +33 -0
- package/src/scene-instances/__tests__/post-spawn-resolve-joints.unit.test.ts +1 -1
- package/src/scene-instances/index.ts +4 -0
- package/src/scene-utils/mount-override-fold.ts +3 -7
- package/src/systems/__tests__/transparent-sort.bench.ts +3 -3
- package/src/systems/sprite-animation-tick.ts +1 -1
- package/src/systems/transparent-sort.ts +38 -38
- package/src/tilemap-register-validate.ts +4 -4
- package/dist/__tests__/bind-group-cache-binding.test.d.ts +0 -2
- package/dist/__tests__/bind-group-cache-binding.test.d.ts.map +0 -1
- package/dist/__tests__/bind-group-cache-frame.test.d.ts +0 -2
- package/dist/__tests__/bind-group-cache-frame.test.d.ts.map +0 -1
- package/dist/__tests__/dawn/mesh-update.dawn.test.d.ts +0 -2
- package/dist/__tests__/dawn/mesh-update.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/dispatch-fullscreen-pass-composite-swapchain.dawn.test.d.ts +0 -2
- package/dist/__tests__/dispatch-fullscreen-pass-composite-swapchain.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/dispatch-fullscreen-pass-custom-reads.dawn.test.d.ts +0 -2
- package/dist/__tests__/dispatch-fullscreen-pass-custom-reads.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/dispatch-fullscreen-pass-depth-composite.dawn.test.d.ts +0 -2
- package/dist/__tests__/dispatch-fullscreen-pass-depth-composite.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/dispatch-fullscreen-pass-params.unit.test.d.ts +0 -2
- package/dist/__tests__/dispatch-fullscreen-pass-params.unit.test.d.ts.map +0 -1
- package/dist/__tests__/fog-producer-manifest.d.ts +0 -131
- package/dist/__tests__/fog-producer-manifest.d.ts.map +0 -1
- package/dist/__tests__/fog-producer-pixel-probe.d.ts +0 -42
- package/dist/__tests__/fog-producer-pixel-probe.d.ts.map +0 -1
- package/dist/__tests__/fog-producer-pixel.browser.test.d.ts +0 -2
- package/dist/__tests__/fog-producer-pixel.browser.test.d.ts.map +0 -1
- package/dist/__tests__/fog-producer-pixel.dawn.test.d.ts +0 -2
- package/dist/__tests__/fog-producer-pixel.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/fog-producer-real-fixture.d.ts +0 -5
- package/dist/__tests__/fog-producer-real-fixture.d.ts.map +0 -1
- package/dist/__tests__/fog-producer-vfx-effect.d.ts +0 -3
- package/dist/__tests__/fog-producer-vfx-effect.d.ts.map +0 -1
- package/dist/__tests__/fog-scene-asset.integration.test.d.ts +0 -2
- package/dist/__tests__/fog-scene-asset.integration.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-resource-store-cubemap-status.test.d.ts +0 -2
- package/dist/__tests__/gpu-resource-store-cubemap-status.test.d.ts.map +0 -1
- package/dist/__tests__/gpu-resource.test.d.ts +0 -2
- package/dist/__tests__/gpu-resource.test.d.ts.map +0 -1
- package/dist/__tests__/hdrp-bgl-slots.browser.test.d.ts +0 -2
- package/dist/__tests__/hdrp-bgl-slots.browser.test.d.ts.map +0 -1
- package/dist/__tests__/hdrp-buffers.unit.test.d.ts +0 -2
- package/dist/__tests__/hdrp-buffers.unit.test.d.ts.map +0 -1
- package/dist/__tests__/hdrp-execute-filter.unit.test.d.ts +0 -2
- package/dist/__tests__/hdrp-execute-filter.unit.test.d.ts.map +0 -1
- package/dist/__tests__/hdrp-gbuffer-attachments.browser.test.d.ts +0 -2
- package/dist/__tests__/hdrp-gbuffer-attachments.browser.test.d.ts.map +0 -1
- package/dist/__tests__/hdrp-pipeline-asset-type.test-d.d.ts +0 -2
- package/dist/__tests__/hdrp-pipeline-asset-type.test-d.d.ts.map +0 -1
- package/dist/__tests__/hdrp-ssao-boundary.test.d.ts +0 -2
- package/dist/__tests__/hdrp-ssao-boundary.test.d.ts.map +0 -1
- package/dist/__tests__/hdrp-ssao-falsification.test.d.ts +0 -2
- package/dist/__tests__/hdrp-ssao-falsification.test.d.ts.map +0 -1
- package/dist/__tests__/helpers/primitive-world.d.ts +0 -8
- package/dist/__tests__/helpers/primitive-world.d.ts.map +0 -1
- package/dist/__tests__/helpers/render-asset-port.d.ts +0 -15
- package/dist/__tests__/helpers/render-asset-port.d.ts.map +0 -1
- package/dist/__tests__/helpers/scene-asset-port.d.ts +0 -9
- package/dist/__tests__/helpers/scene-asset-port.d.ts.map +0 -1
- package/dist/__tests__/material-derived-coordinates.integration.test.d.ts +0 -2
- package/dist/__tests__/material-derived-coordinates.integration.test.d.ts.map +0 -1
- package/dist/__tests__/pipeline-layout-selection.test.d.ts +0 -2
- package/dist/__tests__/pipeline-layout-selection.test.d.ts.map +0 -1
- package/dist/__tests__/post-process-reads-narrowing.test-d.d.ts +0 -2
- package/dist/__tests__/post-process-reads-narrowing.test-d.d.ts.map +0 -1
- package/dist/__tests__/post-process-register-roundtrip.dawn.test.d.ts +0 -2
- package/dist/__tests__/post-process-register-roundtrip.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/render-feature-zero-feature.browser.test.d.ts +0 -2
- package/dist/__tests__/render-feature-zero-feature.browser.test.d.ts.map +0 -1
- package/dist/__tests__/render-pipeline-trivial.dawn.test.d.ts +0 -2
- package/dist/__tests__/render-pipeline-trivial.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/shadow-csm-caster-membership.test.d.ts +0 -2
- package/dist/__tests__/shadow-csm-caster-membership.test.d.ts.map +0 -1
- package/dist/__tests__/shadow-csm-pssm.test.d.ts +0 -2
- package/dist/__tests__/shadow-csm-pssm.test.d.ts.map +0 -1
- package/dist/__tests__/shadow-csm-temporal.browser.test.d.ts +0 -2
- package/dist/__tests__/shadow-csm-temporal.browser.test.d.ts.map +0 -1
- package/dist/__tests__/shadow-csm-viewport.test.d.ts +0 -2
- package/dist/__tests__/shadow-csm-viewport.test.d.ts.map +0 -1
- package/dist/__tests__/shadow-m2.dawn.test.d.ts +0 -2
- package/dist/__tests__/shadow-m2.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/shadow-m3-calibrate-run.dawn.test.d.ts +0 -2
- package/dist/__tests__/shadow-m3-calibrate-run.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/shadow-m3-calibrate.d.ts +0 -83
- package/dist/__tests__/shadow-m3-calibrate.d.ts.map +0 -1
- package/dist/__tests__/shadow-m3.dawn.test.d.ts +0 -2
- package/dist/__tests__/shadow-m3.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/shadow-probe-control-flow.dawn.test.d.ts +0 -2
- package/dist/__tests__/shadow-probe-control-flow.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/shadow-quality-metrics.dawn.test.d.ts +0 -2
- package/dist/__tests__/shadow-quality-metrics.dawn.test.d.ts.map +0 -1
- package/dist/__tests__/temporal-off-path.unit.test.d.ts +0 -2
- package/dist/__tests__/temporal-off-path.unit.test.d.ts.map +0 -1
- package/dist/__tests__/video-cache-regression.unit.test.d.ts +0 -2
- package/dist/__tests__/video-cache-regression.unit.test.d.ts.map +0 -1
- package/dist/asset-kind.d.ts +0 -4
- package/dist/asset-kind.d.ts.map +0 -1
- package/dist/errors/sprite-animation.d.ts +0 -3
- package/dist/errors/sprite-animation.d.ts.map +0 -1
- package/dist/scene-asset-port.d.ts +0 -17
- package/dist/scene-asset-port.d.ts.map +0 -1
- package/dist/scene-collect-errors.d.ts +0 -22
- package/dist/scene-collect-errors.d.ts.map +0 -1
- package/dist/shadow-m3-calibrate.d.ts +0 -40
- package/dist/shadow-m3-calibrate.d.ts.map +0 -1
- package/src/__tests__/bind-group-cache-binding.test.ts +0 -2513
- package/src/__tests__/bind-group-cache-frame.test.ts +0 -1511
- package/src/__tests__/dispatch-fullscreen-pass-composite-swapchain.dawn.test.ts +0 -204
- package/src/__tests__/dispatch-fullscreen-pass-custom-reads.dawn.test.ts +0 -297
- package/src/__tests__/dispatch-fullscreen-pass-depth-composite.dawn.test.ts +0 -271
- package/src/__tests__/dispatch-fullscreen-pass-params.unit.test.ts +0 -321
- package/src/__tests__/fog-producer-manifest.ts +0 -162
- package/src/__tests__/fog-producer-pixel-probe.ts +0 -263
- package/src/__tests__/fog-producer-pixel.browser.test.ts +0 -26
- package/src/__tests__/fog-producer-pixel.dawn.test.ts +0 -55
- package/src/__tests__/fog-producer-real-fixture.ts +0 -805
- package/src/__tests__/fog-producer-vfx-effect.ts +0 -272
- package/src/__tests__/fog-scene-asset.integration.test.ts +0 -123
- package/src/__tests__/gpu-resource-store-cubemap-status.test.ts +0 -207
- package/src/__tests__/gpu-resource.test.ts +0 -1206
- package/src/__tests__/hdrp-bgl-slots.browser.test.ts +0 -50
- package/src/__tests__/hdrp-buffers.unit.test.ts +0 -70
- package/src/__tests__/hdrp-execute-filter.unit.test.ts +0 -200
- package/src/__tests__/hdrp-gbuffer-attachments.browser.test.ts +0 -64
- package/src/__tests__/hdrp-pipeline-asset-type.test-d.ts +0 -139
- package/src/__tests__/hdrp-ssao-boundary.test.ts +0 -237
- package/src/__tests__/hdrp-ssao-falsification.test.ts +0 -289
- package/src/__tests__/helpers/primitive-world.ts +0 -91
- package/src/__tests__/helpers/render-asset-port.ts +0 -65
- package/src/__tests__/helpers/scene-asset-port.ts +0 -23
- package/src/__tests__/material-derived-coordinates.integration.test.ts +0 -100
- package/src/__tests__/pipeline-layout-selection.test.ts +0 -298
- package/src/__tests__/post-process-reads-narrowing.test-d.ts +0 -52
- package/src/__tests__/post-process-register-roundtrip.dawn.test.ts +0 -230
- package/src/__tests__/render-feature-zero-feature.browser.test.ts +0 -152
- package/src/__tests__/render-pipeline-trivial.dawn.test.ts +0 -525
- package/src/__tests__/shadow-csm-caster-membership.test.ts +0 -232
- package/src/__tests__/shadow-csm-pssm.test.ts +0 -142
- package/src/__tests__/shadow-csm-temporal.browser.test.ts +0 -145
- package/src/__tests__/shadow-csm-viewport.test.ts +0 -74
- package/src/__tests__/shadow-m2.dawn.test.ts +0 -394
- package/src/__tests__/shadow-m3-calibrate-run.dawn.test.ts +0 -248
- package/src/__tests__/shadow-m3-calibrate.ts +0 -203
- package/src/__tests__/shadow-m3.dawn.test.ts +0 -288
- package/src/__tests__/shadow-probe-control-flow.dawn.test.ts +0 -264
- package/src/__tests__/shadow-quality-metrics.dawn.test.ts +0 -324
- package/src/__tests__/temporal-off-path.unit.test.ts +0 -69
- package/src/__tests__/video-cache-regression.unit.test.ts +0 -186
- package/src/asset-kind.ts +0 -7
- package/src/errors/sprite-animation.ts +0 -5
- package/src/scene-asset-port.ts +0 -32
- package/src/scene-collect-errors.ts +0 -30
- package/src/shadow-m3-calibrate.ts +0 -171
|
@@ -26,14 +26,14 @@
|
|
|
26
26
|
// depthWriteEnabled=false existing mechanism)
|
|
27
27
|
// plan-strategy §4 risk "cross-world Overlay sort fails" countermeasure
|
|
28
28
|
|
|
29
|
+
import { AssetRegistry } from '@forgeax/engine-assets-runtime';
|
|
29
30
|
import { World } from '@forgeax/engine-ecs';
|
|
30
|
-
import
|
|
31
|
-
import { Camera, extractFrames, MeshFilter, MeshRenderer } from '@forgeax/engine-render/internal';
|
|
31
|
+
import { Camera, MeshFilter, MeshRenderer } from '@forgeax/engine-render';
|
|
32
32
|
import { Transform } from '@forgeax/engine-scene';
|
|
33
33
|
import { ShaderRegistry, type ShaderRegistryDevice } from '@forgeax/engine-shader';
|
|
34
34
|
import type { Handle, MaterialAsset, MaterialPass, MeshAsset } from '@forgeax/engine-types';
|
|
35
35
|
import { describe, expect, it } from 'vitest';
|
|
36
|
-
import {
|
|
36
|
+
import { extractFrames } from '../../../render/src/render-system-extract';
|
|
37
37
|
|
|
38
38
|
// Two-index owner shape w4-w6 introduces (see w1 for rationale).
|
|
39
39
|
interface OwnerSplit {
|
|
@@ -43,7 +43,7 @@ interface OwnerSplit {
|
|
|
43
43
|
type ExtractFramesOwnerSplit = (
|
|
44
44
|
worlds: readonly World[],
|
|
45
45
|
owner: OwnerSplit,
|
|
46
|
-
assets?:
|
|
46
|
+
assets?: AssetRegistry | null,
|
|
47
47
|
) => ReturnType<typeof extractFrames>;
|
|
48
48
|
const extractFramesSplit = extractFrames as unknown as ExtractFramesOwnerSplit;
|
|
49
49
|
|
|
@@ -144,7 +144,7 @@ describe('cross-world Overlay queue merge (w2, AC-03)', () => {
|
|
|
144
144
|
// editorWorld (index 1): the gizmo overlay renderable at queue=4000.
|
|
145
145
|
const editorWorld = makeRenderableWorld(QUEUE_OVERLAY);
|
|
146
146
|
|
|
147
|
-
const assets =
|
|
147
|
+
const assets = new AssetRegistry(makeShaderRegistry());
|
|
148
148
|
// cameraOwner=0 (scene camera), resourceOwner=0 (scene singletons); the
|
|
149
149
|
// editorWorld contributes renderables that must merge into the global queue.
|
|
150
150
|
const frame = extractFramesSplit(
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
//
|
|
3
3
|
// Regression lock for the M2.5 `pendingDispatch` + `flushPendingDispatch`
|
|
4
4
|
// pairing that ships with the Stage 1 aabb restore. After M1 restored
|
|
5
|
-
//
|
|
5
|
+
// HANDLE_QUAD's local-space aabb, builtin quads enter the frustum-cull
|
|
6
6
|
// three-gate branch at `render-system-extract.ts` like any user asset.
|
|
7
7
|
// Before M2.5 the three `dispatch.push` sites ran BEFORE the cull `continue`
|
|
8
8
|
// so a culled entity left dangling dispatch entries whose `renderableIndex`
|
|
@@ -49,21 +49,14 @@
|
|
|
49
49
|
// cross-stage checks live in the hello-shadow-opt-out / deferred-shading
|
|
50
50
|
// dawn smokes (per plan-strategy §5.5).
|
|
51
51
|
|
|
52
|
+
import { AssetRegistry, HANDLE_QUAD } from '@forgeax/engine-assets-runtime';
|
|
52
53
|
import { World } from '@forgeax/engine-ecs';
|
|
53
|
-
import {
|
|
54
|
-
import {
|
|
55
|
-
Camera,
|
|
56
|
-
extractFrame,
|
|
57
|
-
Instances,
|
|
58
|
-
MeshFilter,
|
|
59
|
-
MeshRenderer,
|
|
60
|
-
prepareExtractContext,
|
|
61
|
-
} from '@forgeax/engine-render/internal';
|
|
54
|
+
import { Camera, Instances, MeshFilter, MeshRenderer } from '@forgeax/engine-render';
|
|
62
55
|
import { propagateTransforms, Transform } from '@forgeax/engine-scene';
|
|
63
56
|
import type { MaterialAsset } from '@forgeax/engine-types';
|
|
64
57
|
import { describe, expect, it } from 'vitest';
|
|
58
|
+
import { extractFrame, prepareExtractContext } from '../../../render/src/render-system-extract';
|
|
65
59
|
import { makeMockShaderRegistry } from './helpers/mock-shader-registry';
|
|
66
|
-
import { createTestRenderAssetOwner } from './helpers/render-asset-port';
|
|
67
60
|
|
|
68
61
|
function identityTransform() {
|
|
69
62
|
return {
|
|
@@ -123,10 +116,6 @@ function registerUnlitMaterial(world: World, rgb: readonly [number, number, numb
|
|
|
123
116
|
});
|
|
124
117
|
}
|
|
125
118
|
|
|
126
|
-
function createQuadHandle(world: World) {
|
|
127
|
-
return world.internSharedRef('MeshAsset', createPrimitiveMesh('quad').unwrap());
|
|
128
|
-
}
|
|
129
|
-
|
|
130
119
|
function expectSlotAlignment(
|
|
131
120
|
frame: ReturnType<typeof extractFrame>,
|
|
132
121
|
{ requireBaseColorEquality }: { requireBaseColorEquality: boolean },
|
|
@@ -156,8 +145,7 @@ describe('render-system-extract M2.5 dispatch/renderable slot pairing (AC-06)',
|
|
|
156
145
|
// renderable pushes into slot 0. Distinct materials make the aliasing
|
|
157
146
|
// observable via paramSnapshot.baseColor equality.
|
|
158
147
|
const world = new World();
|
|
159
|
-
const
|
|
160
|
-
const assets = createTestRenderAssetOwner(makeMockShaderRegistry());
|
|
148
|
+
const assets = new AssetRegistry(makeMockShaderRegistry());
|
|
161
149
|
spawnFrontFacingCamera(world);
|
|
162
150
|
|
|
163
151
|
const matGreen = registerUnlitMaterial(world, [0, 1, 0]);
|
|
@@ -166,14 +154,14 @@ describe('render-system-extract M2.5 dispatch/renderable slot pairing (AC-06)',
|
|
|
166
154
|
world
|
|
167
155
|
.spawn(
|
|
168
156
|
{ component: Transform, data: transformAtZ(100) },
|
|
169
|
-
{ component: MeshFilter, data: { assetHandle:
|
|
157
|
+
{ component: MeshFilter, data: { assetHandle: HANDLE_QUAD } },
|
|
170
158
|
{ component: MeshRenderer, data: { materials: [matGreen] } },
|
|
171
159
|
)
|
|
172
160
|
.unwrap();
|
|
173
161
|
world
|
|
174
162
|
.spawn(
|
|
175
163
|
{ component: Transform, data: identityTransform() },
|
|
176
|
-
{ component: MeshFilter, data: { assetHandle:
|
|
164
|
+
{ component: MeshFilter, data: { assetHandle: HANDLE_QUAD } },
|
|
177
165
|
{ component: MeshRenderer, data: { materials: [matRed] } },
|
|
178
166
|
)
|
|
179
167
|
.unwrap();
|
|
@@ -201,20 +189,19 @@ describe('render-system-extract M2.5 dispatch/renderable slot pairing (AC-06)',
|
|
|
201
189
|
// at push-sites B and C. plan-strategy §D-7 explicitly names this branch
|
|
202
190
|
// as part of the M2.5 fix scope (shadow-opt-out AC-13 depends on it).
|
|
203
191
|
const world = new World();
|
|
204
|
-
const quadHandle = createQuadHandle(world);
|
|
205
192
|
spawnFrontFacingCamera(world);
|
|
206
193
|
|
|
207
194
|
world
|
|
208
195
|
.spawn(
|
|
209
196
|
{ component: Transform, data: transformAtZ(100) },
|
|
210
|
-
{ component: MeshFilter, data: { assetHandle:
|
|
197
|
+
{ component: MeshFilter, data: { assetHandle: HANDLE_QUAD } },
|
|
211
198
|
{ component: MeshRenderer, data: {} as never },
|
|
212
199
|
)
|
|
213
200
|
.unwrap();
|
|
214
201
|
world
|
|
215
202
|
.spawn(
|
|
216
203
|
{ component: Transform, data: identityTransform() },
|
|
217
|
-
{ component: MeshFilter, data: { assetHandle:
|
|
204
|
+
{ component: MeshFilter, data: { assetHandle: HANDLE_QUAD } },
|
|
218
205
|
{ component: MeshRenderer, data: {} as never },
|
|
219
206
|
)
|
|
220
207
|
.unwrap();
|
|
@@ -243,8 +230,7 @@ describe('render-system-extract M2.5 dispatch/renderable slot pairing (AC-06)',
|
|
|
243
230
|
// Transform + local aabb (pre-instance transforms), so an Instances
|
|
244
231
|
// entity at posZ=100 is culled the same way a plain entity is.
|
|
245
232
|
const world = new World();
|
|
246
|
-
const
|
|
247
|
-
const assets = createTestRenderAssetOwner(makeMockShaderRegistry());
|
|
233
|
+
const assets = new AssetRegistry(makeMockShaderRegistry());
|
|
248
234
|
spawnFrontFacingCamera(world);
|
|
249
235
|
|
|
250
236
|
const matBlue = registerUnlitMaterial(world, [0, 0, 1]);
|
|
@@ -263,7 +249,7 @@ describe('render-system-extract M2.5 dispatch/renderable slot pairing (AC-06)',
|
|
|
263
249
|
world
|
|
264
250
|
.spawn(
|
|
265
251
|
{ component: Transform, data: transformAtZ(100) },
|
|
266
|
-
{ component: MeshFilter, data: { assetHandle:
|
|
252
|
+
{ component: MeshFilter, data: { assetHandle: HANDLE_QUAD } },
|
|
267
253
|
{ component: MeshRenderer, data: { materials: [matBlue] } },
|
|
268
254
|
{ component: Instances, data: { transforms: instanceTransforms } },
|
|
269
255
|
)
|
|
@@ -271,7 +257,7 @@ describe('render-system-extract M2.5 dispatch/renderable slot pairing (AC-06)',
|
|
|
271
257
|
world
|
|
272
258
|
.spawn(
|
|
273
259
|
{ component: Transform, data: identityTransform() },
|
|
274
|
-
{ component: MeshFilter, data: { assetHandle:
|
|
260
|
+
{ component: MeshFilter, data: { assetHandle: HANDLE_QUAD } },
|
|
275
261
|
{ component: MeshRenderer, data: { materials: [matYellow] } },
|
|
276
262
|
{ component: Instances, data: { transforms: instanceTransforms } },
|
|
277
263
|
)
|
|
@@ -289,14 +275,13 @@ describe('render-system-extract M2.5 dispatch/renderable slot pairing (AC-06)',
|
|
|
289
275
|
expectSlotAlignment(frame, { requireBaseColorEquality: true });
|
|
290
276
|
});
|
|
291
277
|
|
|
292
|
-
it('push A + flush 3 negative path (all
|
|
293
|
-
// Edge case from requirements §edge-cases row 4: with all
|
|
278
|
+
it('push A + flush 3 negative path (all HANDLE_QUAD entities out of view): zero renderables and zero dispatch', () => {
|
|
279
|
+
// Edge case from requirements §edge-cases row 4: with all HANDLE_QUAD
|
|
294
280
|
// entities off-frustum, `renderables` and `dispatch` both empty; the
|
|
295
281
|
// per-entity `pendingDispatch` is dropped on every cull `continue` so
|
|
296
282
|
// no dangling entries leak into the shared `dispatch[]`.
|
|
297
283
|
const world = new World();
|
|
298
|
-
const
|
|
299
|
-
const assets = createTestRenderAssetOwner(makeMockShaderRegistry());
|
|
284
|
+
const assets = new AssetRegistry(makeMockShaderRegistry());
|
|
300
285
|
spawnFrontFacingCamera(world);
|
|
301
286
|
|
|
302
287
|
const matGrey = registerUnlitMaterial(world, [0.5, 0.5, 0.5]);
|
|
@@ -304,7 +289,7 @@ describe('render-system-extract M2.5 dispatch/renderable slot pairing (AC-06)',
|
|
|
304
289
|
world
|
|
305
290
|
.spawn(
|
|
306
291
|
{ component: Transform, data: transformAtZ(100 + n) },
|
|
307
|
-
{ component: MeshFilter, data: { assetHandle:
|
|
292
|
+
{ component: MeshFilter, data: { assetHandle: HANDLE_QUAD } },
|
|
308
293
|
{ component: MeshRenderer, data: { materials: [matGrey] } },
|
|
309
294
|
)
|
|
310
295
|
.unwrap();
|
|
@@ -6,22 +6,18 @@
|
|
|
6
6
|
// Each original file body sits in its own block-scope so helper names
|
|
7
7
|
// cannot collide; describe() inside still registers globally with vitest.
|
|
8
8
|
|
|
9
|
+
import { AssetRegistry, HANDLE_CUBE, resolveAssetHandle } from '@forgeax/engine-assets-runtime';
|
|
9
10
|
import { World } from '@forgeax/engine-ecs';
|
|
10
|
-
import { createPrimitiveMesh } from '@forgeax/engine-geometry';
|
|
11
11
|
import { mat4, vec3 } from '@forgeax/engine-math';
|
|
12
12
|
import { AssetGuid } from '@forgeax/engine-pack/guid';
|
|
13
|
-
import type { RenderAssetPort } from '@forgeax/engine-render/internal';
|
|
14
13
|
import {
|
|
15
14
|
Camera,
|
|
16
15
|
DirectionalLight,
|
|
17
|
-
extractFrame,
|
|
18
|
-
extractFrames,
|
|
19
16
|
MeshFilter,
|
|
20
17
|
MeshRenderer,
|
|
21
18
|
PointLight,
|
|
22
|
-
prepareExtractContext,
|
|
23
19
|
SpotLight,
|
|
24
|
-
} from '@forgeax/engine-render
|
|
20
|
+
} from '@forgeax/engine-render';
|
|
25
21
|
import { ChildOf, propagateTransforms, Transform } from '@forgeax/engine-scene';
|
|
26
22
|
import { ShaderRegistry, type ShaderRegistryDevice } from '@forgeax/engine-shader';
|
|
27
23
|
import type {
|
|
@@ -33,12 +29,12 @@ import type {
|
|
|
33
29
|
} from '@forgeax/engine-types';
|
|
34
30
|
import { srgbChannelToLinear } from '@forgeax/engine-types';
|
|
35
31
|
import { describe, expect, it, vi } from 'vitest';
|
|
36
|
-
import { makeMockShaderRegistry } from './helpers/mock-shader-registry';
|
|
37
32
|
import {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
} from '
|
|
33
|
+
extractFrame,
|
|
34
|
+
extractFrames,
|
|
35
|
+
prepareExtractContext,
|
|
36
|
+
} from '../../../render/src/render-system-extract';
|
|
37
|
+
import { makeMockShaderRegistry } from './helpers/mock-shader-registry';
|
|
42
38
|
|
|
43
39
|
// ─── from render-system-extract.test.ts ───
|
|
44
40
|
{
|
|
@@ -153,15 +149,11 @@ import {
|
|
|
153
149
|
});
|
|
154
150
|
}
|
|
155
151
|
|
|
156
|
-
function registerBuiltinCube(world: World): Handle<'MeshAsset', 'shared'> {
|
|
157
|
-
return world.internSharedRef('MeshAsset', createPrimitiveMesh('cube').unwrap());
|
|
158
|
-
}
|
|
159
|
-
|
|
160
152
|
describe('render-system-extract consumer migration (w9, AC-07 / AC-15)', () => {
|
|
161
153
|
it('reuses one frame-local material snapshot for repeated shared handles', () => {
|
|
162
154
|
const world = new World();
|
|
163
155
|
spawnCamera(world);
|
|
164
|
-
const assets =
|
|
156
|
+
const assets = new AssetRegistry(makeMockShaderRegistry());
|
|
165
157
|
const mesh = registerMesh(world);
|
|
166
158
|
const material = registerMaterial(world);
|
|
167
159
|
|
|
@@ -188,7 +180,6 @@ import {
|
|
|
188
180
|
|
|
189
181
|
it('mesh-walk: RenderableSnapshot.transform.world is the resolved world mat4 (parent x child), zero per-snapshot compose', () => {
|
|
190
182
|
const world = new World();
|
|
191
|
-
const cubeHandle = registerBuiltinCube(world);
|
|
192
183
|
world
|
|
193
184
|
.spawn(
|
|
194
185
|
{ component: Transform, data: { ...identity(), pos: [12, 3, 5] } },
|
|
@@ -202,7 +193,7 @@ import {
|
|
|
202
193
|
.spawn(
|
|
203
194
|
{ component: Transform, data: { ...identity(), pos: [2, 3, 0] } },
|
|
204
195
|
{ component: ChildOf, data: { parent } },
|
|
205
|
-
{ component: MeshFilter, data: { assetHandle:
|
|
196
|
+
{ component: MeshFilter, data: { assetHandle: HANDLE_CUBE } },
|
|
206
197
|
{ component: MeshRenderer, data: {} },
|
|
207
198
|
)
|
|
208
199
|
.unwrap();
|
|
@@ -223,7 +214,6 @@ import {
|
|
|
223
214
|
|
|
224
215
|
it('mesh-walk: flat root world mat4 equals compose(local)', () => {
|
|
225
216
|
const world = new World();
|
|
226
|
-
const cubeHandle = registerBuiltinCube(world);
|
|
227
217
|
world
|
|
228
218
|
.spawn(
|
|
229
219
|
{ component: Transform, data: { ...identity(), pos: [5, 6, 12] } },
|
|
@@ -233,7 +223,7 @@ import {
|
|
|
233
223
|
world
|
|
234
224
|
.spawn(
|
|
235
225
|
{ component: Transform, data: { ...identity(), pos: [5, 6, 7], scale: [2, 1, 1] } },
|
|
236
|
-
{ component: MeshFilter, data: { assetHandle:
|
|
226
|
+
{ component: MeshFilter, data: { assetHandle: HANDLE_CUBE } },
|
|
237
227
|
{ component: MeshRenderer, data: {} },
|
|
238
228
|
)
|
|
239
229
|
.unwrap();
|
|
@@ -380,12 +370,11 @@ import {
|
|
|
380
370
|
|
|
381
371
|
it('AC-02: builtin MeshAsset AABB enters the same frustum path as imported meshes', () => {
|
|
382
372
|
const world = new World();
|
|
383
|
-
const cubeHandle = registerBuiltinCube(world);
|
|
384
373
|
spawnCamera(world);
|
|
385
374
|
world
|
|
386
375
|
.spawn(
|
|
387
376
|
{ component: Transform, data: { ...identity(), pos: [0, 0, 200] } },
|
|
388
|
-
{ component: MeshFilter, data: { assetHandle:
|
|
377
|
+
{ component: MeshFilter, data: { assetHandle: HANDLE_CUBE } },
|
|
389
378
|
{ component: MeshRenderer, data: {} },
|
|
390
379
|
)
|
|
391
380
|
.unwrap();
|
|
@@ -407,18 +396,17 @@ import {
|
|
|
407
396
|
.unwrap();
|
|
408
397
|
|
|
409
398
|
const sceneWorld = new World();
|
|
410
|
-
const cubeHandle = registerBuiltinCube(sceneWorld);
|
|
411
399
|
sceneWorld
|
|
412
400
|
.spawn(
|
|
413
401
|
{ component: Transform, data: { ...identity(), pos: [0, 0, 0] } },
|
|
414
|
-
{ component: MeshFilter, data: { assetHandle:
|
|
402
|
+
{ component: MeshFilter, data: { assetHandle: HANDLE_CUBE } },
|
|
415
403
|
{ component: MeshRenderer, data: {} },
|
|
416
404
|
)
|
|
417
405
|
.unwrap();
|
|
418
406
|
sceneWorld
|
|
419
407
|
.spawn(
|
|
420
408
|
{ component: Transform, data: { ...identity(), pos: [0, 0, 200] } },
|
|
421
|
-
{ component: MeshFilter, data: { assetHandle:
|
|
409
|
+
{ component: MeshFilter, data: { assetHandle: HANDLE_CUBE } },
|
|
422
410
|
{ component: MeshRenderer, data: {} },
|
|
423
411
|
)
|
|
424
412
|
.unwrap();
|
|
@@ -477,12 +465,11 @@ import {
|
|
|
477
465
|
|
|
478
466
|
it('AC-15: mesh-walk reads world via the column array view, not a per-renderable world.get materialization', () => {
|
|
479
467
|
const world = new World();
|
|
480
|
-
const cubeHandle = registerBuiltinCube(world);
|
|
481
468
|
spawnCamera(world);
|
|
482
469
|
world
|
|
483
470
|
.spawn(
|
|
484
471
|
{ component: Transform, data: { ...identity(), pos: [1, 2, 3] } },
|
|
485
|
-
{ component: MeshFilter, data: { assetHandle:
|
|
472
|
+
{ component: MeshFilter, data: { assetHandle: HANDLE_CUBE } },
|
|
486
473
|
{ component: MeshRenderer, data: {} },
|
|
487
474
|
)
|
|
488
475
|
.unwrap();
|
|
@@ -580,7 +567,7 @@ import {
|
|
|
580
567
|
// that GUID; the returned handle is what MeshRenderer.materials carries.
|
|
581
568
|
function registerMaterial(
|
|
582
569
|
world: World,
|
|
583
|
-
|
|
570
|
+
assets: AssetRegistry,
|
|
584
571
|
passes: MaterialPass[] | undefined,
|
|
585
572
|
parentGuid?: AssetGuid,
|
|
586
573
|
values?: Readonly<Record<string, unknown>>,
|
|
@@ -594,7 +581,7 @@ import {
|
|
|
594
581
|
(asset as { parent: AssetGuid }).parent = parentGuid;
|
|
595
582
|
}
|
|
596
583
|
const guid = AssetGuid.random();
|
|
597
|
-
|
|
584
|
+
assets.catalog(guid, asset);
|
|
598
585
|
const handle = world.allocSharedRef<'MaterialAsset', MaterialAsset>('MaterialAsset', asset);
|
|
599
586
|
return { handle, guid };
|
|
600
587
|
}
|
|
@@ -665,11 +652,11 @@ import {
|
|
|
665
652
|
it('AC-05 core signal: child no-passes inherits passes from parent via extract', () => {
|
|
666
653
|
const world = makeWorldWithComponents();
|
|
667
654
|
spawnCamera(world);
|
|
668
|
-
const
|
|
655
|
+
const assets = new AssetRegistry(makeMockShaderRegistry());
|
|
669
656
|
const mesh = registerTestMesh(world);
|
|
670
657
|
|
|
671
|
-
const parentMat = registerMaterial(world,
|
|
672
|
-
const childMat = registerMaterial(world,
|
|
658
|
+
const parentMat = registerMaterial(world, assets, [FORWARD_PBR_PASS]);
|
|
659
|
+
const childMat = registerMaterial(world, assets, undefined, parentMat.guid);
|
|
673
660
|
|
|
674
661
|
spawnRenderable(world, mesh, childMat.handle);
|
|
675
662
|
|
|
@@ -692,14 +679,14 @@ import {
|
|
|
692
679
|
it('AC-06 shoot-76 equivalent: N children inherit from 1 parent', () => {
|
|
693
680
|
const world = makeWorldWithComponents();
|
|
694
681
|
spawnCamera(world);
|
|
695
|
-
const
|
|
682
|
+
const assets = new AssetRegistry(makeMockShaderRegistry());
|
|
696
683
|
const mesh = registerTestMesh(world);
|
|
697
684
|
|
|
698
|
-
const parentMat = registerMaterial(world,
|
|
685
|
+
const parentMat = registerMaterial(world, assets, [FORWARD_PBR_PASS]);
|
|
699
686
|
|
|
700
687
|
const childCount = 76;
|
|
701
688
|
for (let i = 0; i < childCount; i++) {
|
|
702
|
-
const childMat = registerMaterial(world,
|
|
689
|
+
const childMat = registerMaterial(world, assets, undefined, parentMat.guid);
|
|
703
690
|
// Spread across Z axis (0 to -60) so all entities stay within
|
|
704
691
|
// the perspective camera frustum (far=100, fov=PI/4 at (0,0,5)).
|
|
705
692
|
spawnRenderable(world, mesh, childMat.handle, 0, 0, -i * 0.8);
|
|
@@ -726,14 +713,14 @@ import {
|
|
|
726
713
|
it('AC-06 values shallow-merge: child overrides parent, parent-only key retained', () => {
|
|
727
714
|
const world = makeWorldWithComponents();
|
|
728
715
|
spawnCamera(world);
|
|
729
|
-
const
|
|
716
|
+
const assets = new AssetRegistry(makeMockShaderRegistry());
|
|
730
717
|
const mesh = registerTestMesh(world);
|
|
731
718
|
|
|
732
|
-
const parentMat = registerMaterial(world,
|
|
719
|
+
const parentMat = registerMaterial(world, assets, [FORWARD_PBR_PASS], undefined, {
|
|
733
720
|
metallic: 0.3,
|
|
734
721
|
roughness: 0.7,
|
|
735
722
|
});
|
|
736
|
-
const childMat = registerMaterial(world,
|
|
723
|
+
const childMat = registerMaterial(world, assets, undefined, parentMat.guid, {
|
|
737
724
|
metallic: 0.9,
|
|
738
725
|
});
|
|
739
726
|
|
|
@@ -759,10 +746,10 @@ import {
|
|
|
759
746
|
it('no-parent regression: material without parent still extracts correctly', () => {
|
|
760
747
|
const world = makeWorldWithComponents();
|
|
761
748
|
spawnCamera(world);
|
|
762
|
-
const
|
|
749
|
+
const assets = new AssetRegistry(makeMockShaderRegistry());
|
|
763
750
|
const mesh = registerTestMesh(world);
|
|
764
751
|
|
|
765
|
-
const mat = registerMaterial(world,
|
|
752
|
+
const mat = registerMaterial(world, assets, [FORWARD_UNLIT_PASS], undefined, {
|
|
766
753
|
baseColor: [0.2, 0.3, 0.4],
|
|
767
754
|
});
|
|
768
755
|
|
|
@@ -877,10 +864,10 @@ import {
|
|
|
877
864
|
|
|
878
865
|
function spawnSpriteScene(values: Record<string, unknown>): {
|
|
879
866
|
world: World;
|
|
880
|
-
assets:
|
|
867
|
+
assets: AssetRegistry;
|
|
881
868
|
} {
|
|
882
869
|
const world = new World();
|
|
883
|
-
const assets =
|
|
870
|
+
const assets = new AssetRegistry(makeShaderRegistryWithSprite());
|
|
884
871
|
const mesh = registerSpriteMesh(world);
|
|
885
872
|
const matHandle = world.allocSharedRef<'MaterialAsset', MaterialAsset>('MaterialAsset', {
|
|
886
873
|
kind: 'material',
|
|
@@ -1219,12 +1206,10 @@ import {
|
|
|
1219
1206
|
describe('render-system-extract heightTexture (4th texture) snapshot pass-through (M2 w3)', () => {
|
|
1220
1207
|
it('resolves a binary AssetGuid texture reference through the material owner path', () => {
|
|
1221
1208
|
const world = new World();
|
|
1222
|
-
const
|
|
1223
|
-
makeShaderRegistryWithParallax(),
|
|
1224
|
-
);
|
|
1209
|
+
const assets = new AssetRegistry(makeShaderRegistryWithParallax());
|
|
1225
1210
|
const mesh = registerQuadMesh(world);
|
|
1226
1211
|
const textureGuid = AssetGuid.random();
|
|
1227
|
-
|
|
1212
|
+
assets.catalog(textureGuid, {
|
|
1228
1213
|
kind: 'texture',
|
|
1229
1214
|
width: 1,
|
|
1230
1215
|
height: 1,
|
|
@@ -1251,14 +1236,14 @@ import {
|
|
|
1251
1236
|
const frame = extractFrame(world, prepareExtractContext(world, { assets }));
|
|
1252
1237
|
const textureHandle = frame.renderables[0]?.material.textureHandles?.get('baseColorTexture');
|
|
1253
1238
|
expect(textureHandle).toBeDefined();
|
|
1254
|
-
expect(
|
|
1255
|
-
|
|
1256
|
-
)
|
|
1239
|
+
expect(resolveAssetHandle<TextureAsset>(world, textureHandle as never).unwrap().kind).toBe(
|
|
1240
|
+
'texture',
|
|
1241
|
+
);
|
|
1257
1242
|
});
|
|
1258
1243
|
|
|
1259
1244
|
it('MaterialSnapshot.textureHandles carries heightTexture handle (non-undefined, matches input)', () => {
|
|
1260
1245
|
const world = new World();
|
|
1261
|
-
const assets =
|
|
1246
|
+
const assets = new AssetRegistry(makeShaderRegistryWithParallax());
|
|
1262
1247
|
const mesh = registerQuadMesh(world);
|
|
1263
1248
|
|
|
1264
1249
|
const baseColorHandle = makeTextureHandle(world);
|
|
@@ -1331,7 +1316,7 @@ import {
|
|
|
1331
1316
|
|
|
1332
1317
|
it('keeps built-in PBR texture handles when its manifest schema is empty', () => {
|
|
1333
1318
|
const world = new World();
|
|
1334
|
-
const assets =
|
|
1319
|
+
const assets = new AssetRegistry(makeShaderRegistryWithEmptyBuiltinPbrSchema());
|
|
1335
1320
|
const mesh = registerQuadMesh(world);
|
|
1336
1321
|
const baseColorHandle = makeTextureHandle(world);
|
|
1337
1322
|
const metallicRoughnessHandle = makeTextureHandle(world);
|