@forgeax/engine-runtime 0.1.6 → 0.1.19
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 +61 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/__tests__/helpers/standard-material-manifest.d.ts +12 -0
- package/dist/__tests__/helpers/standard-material-manifest.d.ts.map +1 -0
- package/dist/__tests__/render-environment-consumer.integration.test.d.ts +2 -0
- package/dist/__tests__/render-environment-consumer.integration.test.d.ts.map +1 -0
- package/dist/__tests__/render-error-exhaustive.test-d.d.ts.map +1 -1
- package/dist/__tests__/render-feature-prepared-graphics.fixture.d.ts.map +1 -1
- package/dist/__tests__/renderer-host-fallback.unit.test.d.ts +2 -0
- package/dist/__tests__/renderer-host-fallback.unit.test.d.ts.map +1 -0
- package/dist/__tests__/skinned-shadow-mixed.dawn.test.d.ts +2 -0
- package/dist/__tests__/skinned-shadow-mixed.dawn.test.d.ts.map +1 -0
- package/dist/backend-selection.d.ts.map +1 -1
- package/dist/collect-scene-asset.d.ts +6 -3
- package/dist/collect-scene-asset.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +25 -4
- package/dist/index.mjs.map +1 -1
- package/dist/renderer-host.d.ts +2 -1
- package/dist/renderer-host.d.ts.map +1 -1
- package/dist/renderer-host.mjs +21 -2
- package/dist/renderer-host.mjs.map +1 -1
- package/package.json +30 -30
- package/src/__tests__/asset-registry-guid-reverse.test.ts +33 -0
- package/src/__tests__/dawn/instances-per-instance-pbr.dawn.test.ts +12 -11
- package/src/__tests__/dawn/material-cooked-fixture.dawn.test.ts +39 -6
- package/src/__tests__/errors.unit.test.ts +60 -0
- package/src/__tests__/extract-record-no-hardcoded-texture-fields.test.ts +4 -5
- package/src/__tests__/fullscreen-post-process-pass.dawn.test.ts +461 -18
- package/src/__tests__/geometry.unit.test.ts +3 -1
- package/src/__tests__/helpers/standard-material-manifest.ts +45 -0
- package/src/__tests__/lights.unit.test.ts +15 -11
- package/src/__tests__/material-texture-uv-scale.unit.test.ts +8 -14
- package/src/__tests__/materials.unit.test.ts +2 -0
- package/src/__tests__/pbr-pipeline.unit.test.ts +15 -12
- package/src/__tests__/pipeline-cache-keying.unit.test.ts +6 -4
- package/src/__tests__/pipeline.unit.test.ts +5 -2
- package/src/__tests__/render-environment-consumer.integration.test.ts +33 -0
- package/src/__tests__/render-error-exhaustive.test-d.ts +93 -0
- package/src/__tests__/render-feature-prepared-graphics.browser.test.ts +5 -1
- package/src/__tests__/render-feature-prepared-graphics.fixture.ts +10 -0
- package/src/__tests__/render-system-mega.test.ts +3 -1
- package/src/__tests__/render-system-record-multi-material-textureview.test.ts +3 -1
- package/src/__tests__/render-system-record-per-submesh-transparency.test.ts +3 -1
- package/src/__tests__/render-system-record.test.ts +8 -6
- package/src/__tests__/renderer-host-fallback.unit.test.ts +112 -0
- package/src/__tests__/renderer-lifecycle.integration.test.ts +10 -0
- package/src/__tests__/renderer-surface.unit.test.ts +66 -0
- package/src/__tests__/renderer.test-d.ts +2 -0
- package/src/__tests__/rhi-null-command-flow.unit.test.ts +14 -0
- package/src/__tests__/shadow-csm-cascade-loadop.test.ts +5 -1
- package/src/__tests__/shadow-csm-tile-consistency.test.ts +5 -1
- package/src/__tests__/skinned-shadow-mixed.dawn.test.ts +383 -0
- package/src/__tests__/sprite-lit-bgl-byte-identical.test.ts +10 -10
- package/src/__tests__/ssao-passes.test.ts +32 -12
- package/src/__tests__/systems.unit.test.ts +48 -31
- package/src/backend-selection.ts +4 -0
- package/src/collect-scene-asset.ts +14 -7
- package/src/index.ts +5 -1
- package/src/renderer-host.ts +30 -3
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface StandardMaterialShaderVariant {
|
|
2
|
+
readonly definesKey: string;
|
|
3
|
+
readonly defines: {
|
|
4
|
+
readonly CLUSTER_FORWARD_AVAILABLE: boolean;
|
|
5
|
+
readonly STORAGE_BUFFER_AVAILABLE: boolean;
|
|
6
|
+
readonly TRANSMISSION_AVAILABLE: boolean;
|
|
7
|
+
readonly VERTEX_COLOR_AVAILABLE: boolean;
|
|
8
|
+
};
|
|
9
|
+
readonly composedWgsl: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function standardMaterialShaderVariants(composedWgsl?: string): readonly StandardMaterialShaderVariant[];
|
|
12
|
+
//# sourceMappingURL=standard-material-manifest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standard-material-manifest.d.ts","sourceRoot":"","sources":["../../../src/__tests__/helpers/standard-material-manifest.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,yBAAyB,EAAE,OAAO,CAAC;QAC5C,QAAQ,CAAC,wBAAwB,EAAE,OAAO,CAAC;QAC3C,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;QACzC,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;KAC1C,CAAC;IACF,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAWD,wBAAgB,8BAA8B,CAC5C,YAAY,SAAe,GAC1B,SAAS,6BAA6B,EAAE,CAsB1C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-environment-consumer.integration.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/render-environment-consumer.integration.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-error-exhaustive.test-d.d.ts","sourceRoot":"","sources":["../../src/__tests__/render-error-exhaustive.test-d.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE3E,iBAAS,4BAA4B,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"render-error-exhaustive.test-d.d.ts","sourceRoot":"","sources":["../../src/__tests__/render-error-exhaustive.test-d.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE3E,iBAAS,4BAA4B,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CA2GnE;AAED,iBAAS,iBAAiB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAyNjD;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,mFAAmF;IACnF,MAAM,EAAE,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC;IACxD,2EAA2E;IAC3E,OAAO,EAAE,OAAO,iBAAiB,CAAC;CACnC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-feature-prepared-graphics.fixture.d.ts","sourceRoot":"","sources":["../../src/__tests__/render-feature-prepared-graphics.fixture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EAEb,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"render-feature-prepared-graphics.fixture.d.ts","sourceRoot":"","sources":["../../src/__tests__/render-feature-prepared-graphics.fixture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EAEb,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAMhC,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,CAAC;AAEjF,eAAO,MAAM,gBAAgB,QAkB1B,CAAC;AAEJ,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,mBAAgC,GACrC,aAAa,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CA6D3C;AAED,wBAAgB,aAAa,IAAI,KAAK,CAOrC;AAED,wBAAgB,YAAY,CAC1B,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GACvD,gBAAgB,CAElB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer-host-fallback.unit.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/renderer-host-fallback.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skinned-shadow-mixed.dawn.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/skinned-shadow-mixed.dawn.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend-selection.d.ts","sourceRoot":"","sources":["../src/backend-selection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oDAAoD,CAAC;AACzF,OAAO,EAAW,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAGxD,wBAAgB,WAAW,CACzB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,eAAe,CAAC,EAAE,cAAc,CAAC,iBAAiB,CAAC,GAClD,cAAc,
|
|
1
|
+
{"version":3,"file":"backend-selection.d.ts","sourceRoot":"","sources":["../src/backend-selection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oDAAoD,CAAC;AACzF,OAAO,EAAW,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAGxD,wBAAgB,WAAW,CACzB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,eAAe,CAAC,EAAE,cAAc,CAAC,iBAAiB,CAAC,GAClD,cAAc,CA4BhB;AAED,gFAAgF;AAChF,wBAAsB,eAAe,CACnC,OAAO,EAAE,eAAe,GAAG,SAAS,EACpC,UAAU,UAAQ,GACjB,OAAO,CACN;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAA;CAAE,GACrD;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,CACnD,CA2BA"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import type { AssetRegistry } from '@forgeax/engine-assets-runtime';
|
|
2
1
|
import { SceneCollectAssetGuidUnresolvedError, SceneCollectEntityRefOutOfClosureError } from '@forgeax/engine-assets-runtime';
|
|
3
2
|
import { type Component as EcsComponent, type EntityHandle, type World } from '@forgeax/engine-ecs';
|
|
4
3
|
import { type Result } from '@forgeax/engine-rhi';
|
|
5
|
-
import type { SceneAsset } from '@forgeax/engine-types';
|
|
4
|
+
import type { Asset, SceneAsset } from '@forgeax/engine-types';
|
|
5
|
+
/** The collector needs identity lookup, not an authoring registry implementation. */
|
|
6
|
+
export interface SceneAssetGuidLookup {
|
|
7
|
+
guidOf(asset: Asset): string | undefined;
|
|
8
|
+
}
|
|
6
9
|
export declare function serializeSceneAssetToPack(sceneAsset: SceneAsset, components: ReadonlyMap<string, EcsComponent>, guid?: string): Result<Record<string, unknown>, SceneCollectAssetGuidUnresolvedError>;
|
|
7
10
|
/**
|
|
8
11
|
* Collect a forest of entity subtrees into a self-contained SceneAsset.
|
|
@@ -12,5 +15,5 @@ export declare function serializeSceneAssetToPack(sceneAsset: SceneAsset, compon
|
|
|
12
15
|
* row stripped without producing a self-mount. Member classification
|
|
13
16
|
* filter (not subtree pruning): graft entities under members survive as owned.
|
|
14
17
|
*/
|
|
15
|
-
export declare function rootsToSceneAsset(registry:
|
|
18
|
+
export declare function rootsToSceneAsset(registry: SceneAssetGuidLookup, world: World, roots: EntityHandle[]): Result<SceneAsset, SceneCollectEntityRefOutOfClosureError | SceneCollectAssetGuidUnresolvedError>;
|
|
16
19
|
//# sourceMappingURL=collect-scene-asset.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collect-scene-asset.d.ts","sourceRoot":"","sources":["../src/collect-scene-asset.ts"],"names":[],"mappings":"AA8CA,OAAO,
|
|
1
|
+
{"version":3,"file":"collect-scene-asset.d.ts","sourceRoot":"","sources":["../src/collect-scene-asset.ts"],"names":[],"mappings":"AA8CA,OAAO,EAGL,oCAAoC,EACpC,sCAAsC,EACvC,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAEL,KAAK,SAAS,IAAI,YAAY,EAC9B,KAAK,YAAY,EACjB,KAAK,KAAK,EACX,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAQ3D,OAAO,KAAK,EACV,KAAK,EAIL,UAAU,EAGX,MAAM,uBAAuB,CAAC;AAG/B,qFAAqF;AACrF,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;CAC1C;AAqID,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,EAC7C,IAAI,CAAC,EAAE,MAAM,GACZ,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,oCAAoC,CAAC,CA2BvE;AAMD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,oBAAoB,EAC9B,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,YAAY,EAAE,GACpB,MAAM,CACP,UAAU,EACV,sCAAsC,GAAG,oCAAoC,CAC9E,CAgbA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -203,7 +203,7 @@ export { spriteAnimationTickSystem } from './systems/sprite-animation-tick';
|
|
|
203
203
|
* ```
|
|
204
204
|
*/
|
|
205
205
|
export { quat } from '@forgeax/engine-math';
|
|
206
|
-
export { rootsToSceneAsset, serializeSceneAssetToPack } from './collect-scene-asset';
|
|
206
|
+
export { rootsToSceneAsset, type SceneAssetGuidLookup, serializeSceneAssetToPack, } from './collect-scene-asset';
|
|
207
207
|
/**
|
|
208
208
|
* Render surface. The renderer host assembles one Standard pipeline and
|
|
209
209
|
* accepts closed RenderFeature declarations at App construction. Pipelines,
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,gCAAgC,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAgBlD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAW9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,EAChC,QAAQ,EACR,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,GAC5B,MAAM,qBAAqB,CAAC;AAC7B;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EACL,UAAU,EACV,KAAK,cAAc,EACnB,KAAK,MAAM,EACX,oBAAoB,EACpB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,kBAAkB,GACxB,MAAM,uBAAuB,CAAC;AAY/B;;;;;;;;;GASG;AACH;;;;;;;;;GASG;AAKH,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAQlE;;;;;;GAMG;AACH;;;;;;;;;;;;;;GAcG;AACH;GACG;AAQH;;;;;;;;;;;;;;;;GAgBG;AAGH,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG/D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAiB5E;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAiB5C,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,gCAAgC,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAgBlD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAW9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,EAChC,QAAQ,EACR,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,GAC5B,MAAM,qBAAqB,CAAC;AAC7B;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EACL,UAAU,EACV,KAAK,cAAc,EACnB,KAAK,MAAM,EACX,oBAAoB,EACpB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,kBAAkB,GACxB,MAAM,uBAAuB,CAAC;AAY/B;;;;;;;;;GASG;AACH;;;;;;;;;GASG;AAKH,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAQlE;;;;;;GAMG;AACH;;;;;;;;;;;;;;GAcG;AACH;GACG;AAQH;;;;;;;;;;;;;;;;GAgBG;AAGH,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG/D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAiB5E;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAiB5C,OAAO,EACL,iBAAiB,EACjB,KAAK,oBAAoB,EACzB,yBAAyB,GAC1B,MAAM,uBAAuB,CAAC;AAgC/B;;;;;;;;;;GAUG"}
|
package/dist/index.mjs
CHANGED
|
@@ -19,7 +19,7 @@ export { RhiError } from '@forgeax/engine-rhi';
|
|
|
19
19
|
import { SpriteAnimationInvalidError, fillComponentDefaults } from '@forgeax/engine-ecs/projection';
|
|
20
20
|
import { SpriteAnimation, spritePlaybackModeFromU32, SpriteRegionOverride } from '@forgeax/engine-render/authoring';
|
|
21
21
|
export { quat } from '@forgeax/engine-math';
|
|
22
|
-
import { SceneCollectAssetGuidUnresolvedError, resolveAssetHandle, SceneCollectEntityRefOutOfClosureError } from '@forgeax/engine-assets-runtime';
|
|
22
|
+
import { SceneCollectAssetGuidUnresolvedError, resolveAssetHandle, SceneCollectEntityRefOutOfClosureError, builtinMeshGuid } from '@forgeax/engine-assets-runtime';
|
|
23
23
|
import { classifyEntityField } from '@forgeax/engine-ecs/externalization';
|
|
24
24
|
import { componentSchema } from '@forgeax/engine-ecs/internal';
|
|
25
25
|
|
|
@@ -90,12 +90,14 @@ var defaultAssetDecoderContributions = Object.freeze(
|
|
|
90
90
|
function loadRhiPack(mod, instrumentation) {
|
|
91
91
|
const rhi = mod.rhi;
|
|
92
92
|
const createShaderModule = mod.createShaderModule;
|
|
93
|
+
const createShaderModuleImmediate = mod.createShaderModuleImmediate;
|
|
93
94
|
const translateErrorEventToRhiError = mod.translateErrorEventToRhiError;
|
|
94
95
|
const rawDeviceAccessor = mod._internal_getRawDevice;
|
|
95
96
|
const backendInstrumentation = mod.instrumentation;
|
|
96
97
|
const pack = {
|
|
97
98
|
rhi,
|
|
98
99
|
...createShaderModule === void 0 ? {} : { createShaderModule },
|
|
100
|
+
...createShaderModuleImmediate === void 0 ? {} : { createShaderModuleImmediate },
|
|
99
101
|
...translateErrorEventToRhiError === void 0 ? {} : { translateErrorEventToRhiError },
|
|
100
102
|
...rawDeviceAccessor === void 0 ? {} : { _internal_getRawDevice: rawDeviceAccessor }
|
|
101
103
|
};
|
|
@@ -129,11 +131,28 @@ async function loadBackendPack(options, preferWgpu = false) {
|
|
|
129
131
|
}
|
|
130
132
|
|
|
131
133
|
// src/renderer-host.ts
|
|
134
|
+
var FALLBACK_ERROR_CODES = /* @__PURE__ */ new Set([
|
|
135
|
+
"adapter-unavailable",
|
|
136
|
+
"request-adapter-threw",
|
|
137
|
+
"feature-not-enabled",
|
|
138
|
+
"limit-exceeded",
|
|
139
|
+
"rhi-not-available",
|
|
140
|
+
"device-lost",
|
|
141
|
+
"oom"
|
|
142
|
+
]);
|
|
143
|
+
function canFallbackToWgpu(error) {
|
|
144
|
+
if (!(error instanceof EngineEnvironmentError)) return false;
|
|
145
|
+
const webgpuError = error.detail.webgpuError;
|
|
146
|
+
if (webgpuError === void 0 || typeof webgpuError !== "object") return false;
|
|
147
|
+
if (!("code" in webgpuError)) return false;
|
|
148
|
+
const code = webgpuError.code;
|
|
149
|
+
return typeof code === "string" && FALLBACK_ERROR_CODES.has(code);
|
|
150
|
+
}
|
|
132
151
|
async function constructRuntimeRendererHost(canvas, options, bundler) {
|
|
133
152
|
const first = await loadBackendPack(options);
|
|
134
153
|
if (!first.ok) throw first.error;
|
|
135
154
|
const constructed = await constructRendererHost(canvas, options, bundler, first.value);
|
|
136
|
-
if (constructed.ok || options?.rhi !== void 0 || typeof globalThis === "undefined") {
|
|
155
|
+
if (constructed.ok || options?.rhi !== void 0 || typeof globalThis === "undefined" || !canFallbackToWgpu(constructed.error)) {
|
|
137
156
|
return constructed;
|
|
138
157
|
}
|
|
139
158
|
const fallback = await loadBackendPack(options, true);
|
|
@@ -399,9 +418,11 @@ function classifyFieldSchema(fieldType) {
|
|
|
399
418
|
}
|
|
400
419
|
function _handleToGuid(world, registry, handle, field) {
|
|
401
420
|
if (handle === 0) return ok$1(void 0);
|
|
421
|
+
const builtinGuid = builtinMeshGuid(handle);
|
|
422
|
+
if (builtinGuid !== void 0) return ok$1(builtinGuid);
|
|
402
423
|
const assetRes = resolveAssetHandle(world, handle);
|
|
403
424
|
if (!assetRes.ok) return err$1(new SceneCollectAssetGuidUnresolvedError(field, handle));
|
|
404
|
-
const guid = registry.
|
|
425
|
+
const guid = registry.guidOf(assetRes.value);
|
|
405
426
|
if (guid === void 0) return err$1(new SceneCollectAssetGuidUnresolvedError(field, handle));
|
|
406
427
|
return ok$1(guid);
|
|
407
428
|
}
|
|
@@ -595,7 +616,7 @@ function rootsToSceneAsset(registry, world, roots) {
|
|
|
595
616
|
sh.value
|
|
596
617
|
)
|
|
597
618
|
);
|
|
598
|
-
const g = registry.
|
|
619
|
+
const g = registry.guidOf(pr.value);
|
|
599
620
|
if (g === void 0)
|
|
600
621
|
return err$1(
|
|
601
622
|
new SceneCollectAssetGuidUnresolvedError(
|