@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.
Files changed (88) hide show
  1. package/README.md +45 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/__tests__/helpers/standard-material-manifest.d.ts +12 -0
  4. package/dist/__tests__/helpers/standard-material-manifest.d.ts.map +1 -0
  5. package/dist/__tests__/helpers/tilemap-assets.d.ts.map +1 -1
  6. package/dist/__tests__/material-texture-dimension-mismatch.unit.test.d.ts +2 -0
  7. package/dist/__tests__/material-texture-dimension-mismatch.unit.test.d.ts.map +1 -0
  8. package/dist/__tests__/render-environment-consumer.integration.test.d.ts +2 -0
  9. package/dist/__tests__/render-environment-consumer.integration.test.d.ts.map +1 -0
  10. package/dist/__tests__/render-error-exhaustive.test-d.d.ts.map +1 -1
  11. package/dist/__tests__/render-feature-prepared-graphics.fixture.d.ts.map +1 -1
  12. package/dist/__tests__/renderer-host-fallback.unit.test.d.ts +2 -0
  13. package/dist/__tests__/renderer-host-fallback.unit.test.d.ts.map +1 -0
  14. package/dist/__tests__/skinned-shadow-mixed.dawn.test.d.ts +2 -0
  15. package/dist/__tests__/skinned-shadow-mixed.dawn.test.d.ts.map +1 -0
  16. package/dist/__tests__/texture-dimensions.browser.test.d.ts +2 -0
  17. package/dist/__tests__/texture-dimensions.browser.test.d.ts.map +1 -0
  18. package/dist/__tests__/volumetric-fog-record-recovery.integration.test.d.ts +2 -0
  19. package/dist/__tests__/volumetric-fog-record-recovery.integration.test.d.ts.map +1 -0
  20. package/dist/backend-selection.d.ts.map +1 -1
  21. package/dist/createRenderer.d.ts.map +1 -1
  22. package/dist/index.mjs +21 -1
  23. package/dist/index.mjs.map +1 -1
  24. package/dist/renderer-host.d.ts +2 -1
  25. package/dist/renderer-host.d.ts.map +1 -1
  26. package/dist/renderer-host.mjs +21 -2
  27. package/dist/renderer-host.mjs.map +1 -1
  28. package/package.json +30 -30
  29. package/src/__tests__/asset-registry.recursive.spec.ts +12 -18
  30. package/src/__tests__/asset.unit.test.ts +28 -25
  31. package/src/__tests__/basis-catalog-dispatch.integration.test.ts +10 -9
  32. package/src/__tests__/compressed-texture-physical-extent.integration.test.ts +12 -10
  33. package/src/__tests__/dawn/hello-sprite-nineslice-section.dawn.test.ts +2 -3
  34. package/src/__tests__/dawn/instances-per-instance-pbr.dawn.test.ts +12 -11
  35. package/src/__tests__/dawn/material-alpha.dawn.test.ts +2 -3
  36. package/src/__tests__/dawn/mipmap-srgb-linear.dawn.test.ts +2 -3
  37. package/src/__tests__/dawn/per-entity-material-texture-isolation.dawn.test.ts +2 -3
  38. package/src/__tests__/dawn/sprite-nineslice-mesh-bind.dawn.test.ts +2 -3
  39. package/src/__tests__/dawn/upload-texture.dawn.test.ts +4 -6
  40. package/src/__tests__/derive-bgl-integration.test.ts +11 -0
  41. package/src/__tests__/equirect-bc6h.integration.test.ts +6 -4
  42. package/src/__tests__/errors.unit.test.ts +56 -0
  43. package/src/__tests__/extract-record-no-hardcoded-texture-fields.test.ts +4 -5
  44. package/src/__tests__/four-path-compression.integration.test.ts +2 -2
  45. package/src/__tests__/fullscreen-post-process-pass.dawn.test.ts +461 -18
  46. package/src/__tests__/geometry.unit.test.ts +3 -1
  47. package/src/__tests__/gpu-resource-cow-survivor.test.ts +2 -3
  48. package/src/__tests__/helpers/standard-material-manifest.ts +45 -0
  49. package/src/__tests__/helpers/tilemap-assets.ts +3 -4
  50. package/src/__tests__/light-gpu-byte-neutral.unit.test.ts +4 -2
  51. package/src/__tests__/lights.unit.test.ts +38 -17
  52. package/src/__tests__/loadbyguid-texture-intern.unit.test.ts +3 -4
  53. package/src/__tests__/loader-name-survival.test.ts +2 -3
  54. package/src/__tests__/material-texture-dimension-mismatch.unit.test.ts +18 -0
  55. package/src/__tests__/material-texture-uv-scale.unit.test.ts +18 -16
  56. package/src/__tests__/materials.unit.test.ts +2 -0
  57. package/src/__tests__/mip-gate.unit.test.ts +11 -8
  58. package/src/__tests__/msaa-sprite-pixel-diff.dawn.test.ts +2 -3
  59. package/src/__tests__/new-kind-refs-contract.test.ts +2 -3
  60. package/src/__tests__/pbr-pipeline.unit.test.ts +31 -12
  61. package/src/__tests__/pipeline-cache-keying.unit.test.ts +6 -4
  62. package/src/__tests__/pipeline.unit.test.ts +23 -21
  63. package/src/__tests__/point-light-shadow.unit.test.ts +6 -5
  64. package/src/__tests__/render-environment-consumer.integration.test.ts +33 -0
  65. package/src/__tests__/render-error-exhaustive.test-d.ts +86 -0
  66. package/src/__tests__/render-feature-prepared-graphics.fixture.ts +10 -0
  67. package/src/__tests__/render-system-extract.test.ts +4 -6
  68. package/src/__tests__/render-system-mega.test.ts +3 -1
  69. package/src/__tests__/render-system-record-multi-material-textureview.test.ts +7 -7
  70. package/src/__tests__/render-system-record-per-submesh-transparency.test.ts +5 -4
  71. package/src/__tests__/render-system-record.test.ts +8 -6
  72. package/src/__tests__/renderer-host-fallback.unit.test.ts +112 -0
  73. package/src/__tests__/renderer-lifecycle.integration.test.ts +10 -0
  74. package/src/__tests__/renderer-surface.unit.test.ts +66 -0
  75. package/src/__tests__/shadow-csm-cascade-loadop.test.ts +5 -1
  76. package/src/__tests__/shadow-csm-tile-consistency.test.ts +5 -1
  77. package/src/__tests__/shadow-fields-observable.dawn.test.ts +56 -39
  78. package/src/__tests__/skinned-shadow-mixed.dawn.test.ts +385 -0
  79. package/src/__tests__/sprite-cullmode-flip.dawn.test.ts +4 -6
  80. package/src/__tests__/sprite-lit-bgl-byte-identical.test.ts +11 -9
  81. package/src/__tests__/ssao-passes.test.ts +28 -12
  82. package/src/__tests__/systems.unit.test.ts +63 -33
  83. package/src/__tests__/texture-dimensions.browser.test.ts +127 -0
  84. package/src/__tests__/transcode-fallback.unit.test.ts +5 -1
  85. package/src/__tests__/volumetric-fog-record-recovery.integration.test.ts +180 -0
  86. package/src/backend-selection.ts +4 -0
  87. package/src/createRenderer.ts +3 -0
  88. 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,CAUtD;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"}
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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=material-texture-dimension-mismatch.unit.test.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=render-environment-consumer.integration.test.d.ts.map
@@ -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,CAyFnE;AAED,iBAAS,iBAAiB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAkLjD;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
+ {"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;AAKhC,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,CAAC;AAEjF,eAAO,MAAM,gBAAgB,QAS1B,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"}
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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=renderer-host-fallback.unit.test.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=skinned-shadow-mixed.dawn.test.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=texture-dimensions.browser.test.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=volumetric-fog-record-recovery.integration.test.d.ts.map
@@ -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,CAwBhB;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
+ {"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,CA2BjE"}
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
  };