@forgeax/engine-runtime 0.1.7 → 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 +45 -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/index.mjs +20 -1
- 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__/dawn/instances-per-instance-pbr.dawn.test.ts +12 -11
- package/src/__tests__/errors.unit.test.ts +36 -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__/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 +8 -8
- 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 +57 -0
- 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__/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 +7 -7
- package/src/__tests__/ssao-passes.test.ts +28 -12
- package/src/__tests__/systems.unit.test.ts +48 -31
- package/src/backend-selection.ts +4 -0
- 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"}
|
package/dist/index.mjs
CHANGED
|
@@ -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);
|