@forgeax/engine-runtime 0.1.7 → 0.1.20
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__/helpers/tilemap-assets.d.ts.map +1 -1
- package/dist/__tests__/material-texture-dimension-mismatch.unit.test.d.ts +2 -0
- package/dist/__tests__/material-texture-dimension-mismatch.unit.test.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/__tests__/texture-dimensions.browser.test.d.ts +2 -0
- package/dist/__tests__/texture-dimensions.browser.test.d.ts.map +1 -0
- package/dist/__tests__/volumetric-fog-record-recovery.integration.test.d.ts +2 -0
- package/dist/__tests__/volumetric-fog-record-recovery.integration.test.d.ts.map +1 -0
- package/dist/backend-selection.d.ts.map +1 -1
- package/dist/createRenderer.d.ts.map +1 -1
- package/dist/index.mjs +21 -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__/asset-registry.recursive.spec.ts +12 -18
- package/src/__tests__/asset.unit.test.ts +28 -25
- package/src/__tests__/basis-catalog-dispatch.integration.test.ts +10 -9
- package/src/__tests__/compressed-texture-physical-extent.integration.test.ts +12 -10
- package/src/__tests__/dawn/hello-sprite-nineslice-section.dawn.test.ts +2 -3
- package/src/__tests__/dawn/instances-per-instance-pbr.dawn.test.ts +12 -11
- package/src/__tests__/dawn/material-alpha.dawn.test.ts +2 -3
- package/src/__tests__/dawn/mipmap-srgb-linear.dawn.test.ts +2 -3
- package/src/__tests__/dawn/per-entity-material-texture-isolation.dawn.test.ts +2 -3
- package/src/__tests__/dawn/sprite-nineslice-mesh-bind.dawn.test.ts +2 -3
- package/src/__tests__/dawn/upload-texture.dawn.test.ts +4 -6
- package/src/__tests__/derive-bgl-integration.test.ts +11 -0
- package/src/__tests__/equirect-bc6h.integration.test.ts +6 -4
- package/src/__tests__/errors.unit.test.ts +56 -0
- package/src/__tests__/extract-record-no-hardcoded-texture-fields.test.ts +4 -5
- package/src/__tests__/four-path-compression.integration.test.ts +2 -2
- package/src/__tests__/fullscreen-post-process-pass.dawn.test.ts +461 -18
- package/src/__tests__/geometry.unit.test.ts +3 -1
- package/src/__tests__/gpu-resource-cow-survivor.test.ts +2 -3
- package/src/__tests__/helpers/standard-material-manifest.ts +45 -0
- package/src/__tests__/helpers/tilemap-assets.ts +3 -4
- package/src/__tests__/light-gpu-byte-neutral.unit.test.ts +4 -2
- package/src/__tests__/lights.unit.test.ts +38 -17
- package/src/__tests__/loadbyguid-texture-intern.unit.test.ts +3 -4
- package/src/__tests__/loader-name-survival.test.ts +2 -3
- package/src/__tests__/material-texture-dimension-mismatch.unit.test.ts +18 -0
- package/src/__tests__/material-texture-uv-scale.unit.test.ts +18 -16
- package/src/__tests__/materials.unit.test.ts +2 -0
- package/src/__tests__/mip-gate.unit.test.ts +11 -8
- package/src/__tests__/msaa-sprite-pixel-diff.dawn.test.ts +2 -3
- package/src/__tests__/new-kind-refs-contract.test.ts +2 -3
- package/src/__tests__/pbr-pipeline.unit.test.ts +31 -12
- package/src/__tests__/pipeline-cache-keying.unit.test.ts +6 -4
- package/src/__tests__/pipeline.unit.test.ts +23 -21
- package/src/__tests__/point-light-shadow.unit.test.ts +6 -5
- package/src/__tests__/render-environment-consumer.integration.test.ts +33 -0
- package/src/__tests__/render-error-exhaustive.test-d.ts +86 -0
- package/src/__tests__/render-feature-prepared-graphics.fixture.ts +10 -0
- package/src/__tests__/render-system-extract.test.ts +4 -6
- package/src/__tests__/render-system-mega.test.ts +3 -1
- package/src/__tests__/render-system-record-multi-material-textureview.test.ts +7 -7
- package/src/__tests__/render-system-record-per-submesh-transparency.test.ts +5 -4
- 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__/shadow-fields-observable.dawn.test.ts +56 -39
- package/src/__tests__/skinned-shadow-mixed.dawn.test.ts +385 -0
- package/src/__tests__/sprite-cullmode-flip.dawn.test.ts +4 -6
- package/src/__tests__/sprite-lit-bgl-byte-identical.test.ts +11 -9
- package/src/__tests__/ssao-passes.test.ts +28 -12
- package/src/__tests__/systems.unit.test.ts +63 -33
- package/src/__tests__/texture-dimensions.browser.test.ts +127 -0
- package/src/__tests__/transcode-fallback.unit.test.ts +5 -1
- package/src/__tests__/volumetric-fog-record-recovery.integration.test.ts +180 -0
- package/src/backend-selection.ts +4 -0
- package/src/createRenderer.ts +3 -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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tilemap-assets.d.ts","sourceRoot":"","sources":["../../../src/__tests__/helpers/tilemap-assets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE/E,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAChD,eAAO,MAAM,eAAe,eAAe,CAAC;AAE5C,wBAAgB,eAAe,CAAC,IAAI,SAAI,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"tilemap-assets.d.ts","sourceRoot":"","sources":["../../../src/__tests__/helpers/tilemap-assets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE/E,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAChD,eAAO,MAAM,eAAe,eAAe,CAAC;AAE5C,wBAAgB,eAAe,CAAC,IAAI,SAAI,GAAG,YAAY,CAStD;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,YAAY,EACrB,KAAK,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAM,GAC1C,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,GAAG,SAAS,CAQrC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"material-texture-dimension-mismatch.unit.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/material-texture-dimension-mismatch.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -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,CAqHnE;AAED,iBAAS,iBAAiB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CA4OjD;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":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texture-dimensions.browser.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/texture-dimensions.browser.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"volumetric-fog-record-recovery.integration.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/volumetric-fog-record-recovery.integration.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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createRenderer.d.ts","sourceRoot":"","sources":["../src/createRenderer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oDAAoD,CAAC;AACzF,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAG9D;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,iBAAiB,GAAG,eAAe,EAC3C,OAAO,CAAC,EAAE,eAAe,EACzB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,sBAAsB,GAAG,WAAW,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"createRenderer.d.ts","sourceRoot":"","sources":["../src/createRenderer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oDAAoD,CAAC;AACzF,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAG9D;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,iBAAiB,GAAG,eAAe,EAC3C,OAAO,CAAC,EAAE,eAAe,EACzB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,sBAAsB,GAAG,WAAW,CAAC,CAAC,CA8BjE"}
|
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);
|
|
@@ -150,6 +169,7 @@ async function createRenderer(canvas, options, bundler) {
|
|
|
150
169
|
...options.rhi === void 0 ? {} : { rhi: options.rhi },
|
|
151
170
|
...options.features === void 0 ? {} : { features: options.features },
|
|
152
171
|
...options.profiler === void 0 ? {} : { profiler: options.profiler },
|
|
172
|
+
...options.captureGpuTimings === void 0 ? {} : { captureGpuTimings: options.captureGpuTimings },
|
|
153
173
|
...options.rhiInstrumentation === void 0 ? {} : { rhiInstrumentation: options.rhiInstrumentation },
|
|
154
174
|
...options.standardProfile === void 0 ? {} : { standardProfile: options.standardProfile }
|
|
155
175
|
};
|