@loaders.gl/textures 4.4.0-alpha.2 → 4.4.0

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 (234) hide show
  1. package/README.md +197 -1
  2. package/dist/basis-loader.d.ts +15 -10
  3. package/dist/basis-loader.d.ts.map +1 -1
  4. package/dist/basis-loader.js +1 -1
  5. package/dist/basis-loader.js.map +1 -0
  6. package/dist/basis-worker-node.js +932 -10040
  7. package/dist/basis-worker.d.ts +2 -0
  8. package/dist/basis-worker.d.ts.map +1 -0
  9. package/dist/basis-worker.js +337 -151
  10. package/dist/basis-worker.js.map +1 -0
  11. package/dist/compressed-texture-loader.d.ts +2 -5
  12. package/dist/compressed-texture-loader.d.ts.map +1 -1
  13. package/dist/compressed-texture-loader.js +2 -3
  14. package/dist/compressed-texture-loader.js.map +1 -0
  15. package/dist/compressed-texture-worker.d.ts +2 -0
  16. package/dist/compressed-texture-worker.d.ts.map +1 -0
  17. package/dist/compressed-texture-worker.js +1148 -365
  18. package/dist/compressed-texture-worker.js.map +1 -0
  19. package/dist/compressed-texture-writer.js +1 -0
  20. package/dist/compressed-texture-writer.js.map +1 -0
  21. package/dist/crunch-loader.d.ts +1 -5
  22. package/dist/crunch-loader.d.ts.map +1 -1
  23. package/dist/crunch-loader.js +2 -3
  24. package/dist/crunch-loader.js.map +1 -0
  25. package/dist/crunch-worker.d.ts +2 -0
  26. package/dist/crunch-worker.d.ts.map +1 -0
  27. package/dist/crunch-worker.js +204 -92
  28. package/dist/crunch-worker.js.map +1 -0
  29. package/dist/dist.dev.js +2687 -677
  30. package/dist/dist.min.js +1 -2
  31. package/dist/index.cjs +1644 -428
  32. package/dist/index.cjs.map +4 -4
  33. package/dist/index.d.ts +13 -4
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +7 -3
  36. package/dist/index.js.map +1 -0
  37. package/dist/ktx2-basis-writer-worker-node.js +574 -9832
  38. package/dist/ktx2-basis-writer-worker.d.ts +2 -0
  39. package/dist/ktx2-basis-writer-worker.d.ts.map +1 -0
  40. package/dist/ktx2-basis-writer-worker.js +45 -7
  41. package/dist/ktx2-basis-writer-worker.js.map +1 -0
  42. package/dist/ktx2-basis-writer.js +1 -0
  43. package/dist/ktx2-basis-writer.js.map +1 -0
  44. package/dist/lib/composite-image/image-texture-cube.d.ts +47 -0
  45. package/dist/lib/composite-image/image-texture-cube.d.ts.map +1 -0
  46. package/dist/lib/composite-image/image-texture-cube.js +42 -0
  47. package/dist/lib/composite-image/image-texture-cube.js.map +1 -0
  48. package/dist/lib/composite-image/parse-composite-image.d.ts +43 -0
  49. package/dist/lib/composite-image/parse-composite-image.d.ts.map +1 -0
  50. package/dist/lib/composite-image/parse-composite-image.js +437 -0
  51. package/dist/lib/composite-image/parse-composite-image.js.map +1 -0
  52. package/dist/lib/encoders/encode-ktx.d.ts +1 -1
  53. package/dist/lib/encoders/encode-ktx.d.ts.map +1 -1
  54. package/dist/lib/encoders/encode-ktx.js +1 -0
  55. package/dist/lib/encoders/encode-ktx.js.map +1 -0
  56. package/dist/lib/encoders/encode-ktx2-basis-texture.d.ts +2 -1
  57. package/dist/lib/encoders/encode-ktx2-basis-texture.d.ts.map +1 -1
  58. package/dist/lib/encoders/encode-ktx2-basis-texture.js +3 -1
  59. package/dist/lib/encoders/encode-ktx2-basis-texture.js.map +1 -0
  60. package/dist/lib/encoders/encode-texture.js +1 -0
  61. package/dist/lib/encoders/encode-texture.js.map +1 -0
  62. package/dist/lib/gl-extensions.d.ts +166 -58
  63. package/dist/lib/gl-extensions.d.ts.map +1 -1
  64. package/dist/lib/gl-extensions.js +178 -66
  65. package/dist/lib/gl-extensions.js.map +1 -0
  66. package/dist/lib/gl-types.d.ts +4 -0
  67. package/dist/lib/gl-types.d.ts.map +1 -0
  68. package/dist/lib/gl-types.js +5 -0
  69. package/dist/lib/gl-types.js.map +1 -0
  70. package/dist/lib/parsers/basis-module-loader.d.ts +3 -2
  71. package/dist/lib/parsers/basis-module-loader.d.ts.map +1 -1
  72. package/dist/lib/parsers/basis-module-loader.js +1 -0
  73. package/dist/lib/parsers/basis-module-loader.js.map +1 -0
  74. package/dist/lib/parsers/crunch-module-loader.d.ts +2 -2
  75. package/dist/lib/parsers/crunch-module-loader.d.ts.map +1 -1
  76. package/dist/lib/parsers/crunch-module-loader.js +1 -0
  77. package/dist/lib/parsers/crunch-module-loader.js.map +1 -0
  78. package/dist/lib/parsers/parse-basis.d.ts +34 -2
  79. package/dist/lib/parsers/parse-basis.d.ts.map +1 -1
  80. package/dist/lib/parsers/parse-basis.js +265 -64
  81. package/dist/lib/parsers/parse-basis.js.map +1 -0
  82. package/dist/lib/parsers/parse-compressed-texture.js +1 -0
  83. package/dist/lib/parsers/parse-compressed-texture.js.map +1 -0
  84. package/dist/lib/parsers/parse-crunch.d.ts.map +1 -1
  85. package/dist/lib/parsers/parse-crunch.js +7 -6
  86. package/dist/lib/parsers/parse-crunch.js.map +1 -0
  87. package/dist/lib/parsers/parse-dds.d.ts.map +1 -1
  88. package/dist/lib/parsers/parse-dds.js +11 -11
  89. package/dist/lib/parsers/parse-dds.js.map +1 -0
  90. package/dist/lib/parsers/parse-hdr.d.ts +21 -0
  91. package/dist/lib/parsers/parse-hdr.d.ts.map +1 -0
  92. package/dist/lib/parsers/parse-hdr.js +305 -0
  93. package/dist/lib/parsers/parse-hdr.js.map +1 -0
  94. package/dist/lib/parsers/parse-ktx.d.ts.map +1 -1
  95. package/dist/lib/parsers/parse-ktx.js +11 -3
  96. package/dist/lib/parsers/parse-ktx.js.map +1 -0
  97. package/dist/lib/parsers/parse-npy.js +1 -0
  98. package/dist/lib/parsers/parse-npy.js.map +1 -0
  99. package/dist/lib/parsers/parse-pvr.d.ts.map +1 -1
  100. package/dist/lib/parsers/parse-pvr.js +32 -74
  101. package/dist/lib/parsers/parse-pvr.js.map +1 -0
  102. package/dist/lib/texture-api/async-deep-map.js +1 -0
  103. package/dist/lib/texture-api/async-deep-map.js.map +1 -0
  104. package/dist/lib/texture-api/deep-load.js +1 -0
  105. package/dist/lib/texture-api/deep-load.js.map +1 -0
  106. package/dist/lib/texture-api/generate-url.d.ts.map +1 -1
  107. package/dist/lib/texture-api/generate-url.js +3 -10
  108. package/dist/lib/texture-api/generate-url.js.map +1 -0
  109. package/dist/lib/texture-api/load-image-array.d.ts +6 -3
  110. package/dist/lib/texture-api/load-image-array.d.ts.map +1 -1
  111. package/dist/lib/texture-api/load-image-array.js +6 -3
  112. package/dist/lib/texture-api/load-image-array.js.map +1 -0
  113. package/dist/lib/texture-api/load-image-cube.d.ts +7 -11
  114. package/dist/lib/texture-api/load-image-cube.d.ts.map +1 -1
  115. package/dist/lib/texture-api/load-image-cube.js +9 -20
  116. package/dist/lib/texture-api/load-image-cube.js.map +1 -0
  117. package/dist/lib/texture-api/load-image.d.ts +6 -3
  118. package/dist/lib/texture-api/load-image.d.ts.map +1 -1
  119. package/dist/lib/texture-api/load-image.js +9 -4
  120. package/dist/lib/texture-api/load-image.js.map +1 -0
  121. package/dist/lib/texture-api/texture-api-types.d.ts +13 -0
  122. package/dist/lib/texture-api/texture-api-types.d.ts.map +1 -1
  123. package/dist/lib/texture-api/texture-api-types.js +1 -0
  124. package/dist/lib/texture-api/texture-api-types.js.map +1 -0
  125. package/dist/lib/utils/detect-supported-texture-formats.d.ts +14 -0
  126. package/dist/lib/utils/detect-supported-texture-formats.d.ts.map +1 -0
  127. package/dist/lib/utils/detect-supported-texture-formats.js +197 -0
  128. package/dist/lib/utils/detect-supported-texture-formats.js.map +1 -0
  129. package/dist/lib/utils/extract-mipmap-images.d.ts +6 -2
  130. package/dist/lib/utils/extract-mipmap-images.d.ts.map +1 -1
  131. package/dist/lib/utils/extract-mipmap-images.js +14 -2
  132. package/dist/lib/utils/extract-mipmap-images.js.map +1 -0
  133. package/dist/lib/utils/ktx-format-helper.d.ts +9 -1
  134. package/dist/lib/utils/ktx-format-helper.d.ts.map +1 -1
  135. package/dist/lib/utils/ktx-format-helper.js +77 -109
  136. package/dist/lib/utils/ktx-format-helper.js.map +1 -0
  137. package/dist/lib/utils/texture-format-map.d.ts +10 -0
  138. package/dist/lib/utils/texture-format-map.d.ts.map +1 -0
  139. package/dist/lib/utils/texture-format-map.js +87 -0
  140. package/dist/lib/utils/texture-format-map.js.map +1 -0
  141. package/dist/lib/utils/version.js +2 -1
  142. package/dist/lib/utils/version.js.map +1 -0
  143. package/dist/libs/libs/README.md +9 -0
  144. package/dist/libs/libs/basis_encoder.js +21 -0
  145. package/dist/libs/libs/basis_encoder.wasm +0 -0
  146. package/dist/libs/libs/basis_transcoder.js +22 -0
  147. package/dist/libs/libs/basis_transcoder.wasm +0 -0
  148. package/dist/libs/libs/crunch.js +136 -0
  149. package/dist/npy-loader.d.ts +2 -2
  150. package/dist/npy-loader.js +1 -0
  151. package/dist/npy-loader.js.map +1 -0
  152. package/dist/npy-worker.d.ts +2 -0
  153. package/dist/npy-worker.d.ts.map +1 -0
  154. package/dist/npy-worker.js +5 -2
  155. package/dist/npy-worker.js.map +1 -0
  156. package/dist/radiance-hdr-loader.d.ts +25 -0
  157. package/dist/radiance-hdr-loader.d.ts.map +1 -0
  158. package/dist/radiance-hdr-loader.js +23 -0
  159. package/dist/radiance-hdr-loader.js.map +1 -0
  160. package/dist/texture-array-loader.d.ts +25 -0
  161. package/dist/texture-array-loader.d.ts.map +1 -0
  162. package/dist/texture-array-loader.js +24 -0
  163. package/dist/texture-array-loader.js.map +1 -0
  164. package/dist/texture-cube-array-loader.d.ts +25 -0
  165. package/dist/texture-cube-array-loader.d.ts.map +1 -0
  166. package/dist/texture-cube-array-loader.js +24 -0
  167. package/dist/texture-cube-array-loader.js.map +1 -0
  168. package/dist/texture-cube-loader.d.ts +25 -0
  169. package/dist/texture-cube-loader.d.ts.map +1 -0
  170. package/dist/texture-cube-loader.js +24 -0
  171. package/dist/texture-cube-loader.js.map +1 -0
  172. package/dist/texture-loader.d.ts +25 -0
  173. package/dist/texture-loader.d.ts.map +1 -0
  174. package/dist/texture-loader.js +24 -0
  175. package/dist/texture-loader.js.map +1 -0
  176. package/dist/workers/basis-worker-node.js +1 -0
  177. package/dist/workers/basis-worker-node.js.map +1 -0
  178. package/dist/workers/basis-worker.js +1 -0
  179. package/dist/workers/basis-worker.js.map +1 -0
  180. package/dist/workers/compressed-texture-worker.js +1 -1
  181. package/dist/workers/compressed-texture-worker.js.map +1 -0
  182. package/dist/workers/crunch-worker.d.ts +1 -3
  183. package/dist/workers/crunch-worker.d.ts.map +1 -1
  184. package/dist/workers/crunch-worker.js +1 -0
  185. package/dist/workers/crunch-worker.js.map +1 -0
  186. package/dist/workers/ktx2-basis-writer-worker-node.js +1 -0
  187. package/dist/workers/ktx2-basis-writer-worker-node.js.map +1 -0
  188. package/dist/workers/ktx2-basis-writer-worker.js +1 -0
  189. package/dist/workers/ktx2-basis-writer-worker.js.map +1 -0
  190. package/dist/workers/npy-worker.js +1 -0
  191. package/dist/workers/npy-worker.js.map +1 -0
  192. package/package.json +27 -6
  193. package/src/basis-loader.ts +19 -9
  194. package/src/basis-worker.ts +7 -0
  195. package/src/compressed-texture-loader.ts +3 -7
  196. package/src/compressed-texture-worker.ts +6 -0
  197. package/src/crunch-loader.ts +1 -5
  198. package/src/crunch-worker.ts +6 -0
  199. package/src/index.ts +21 -4
  200. package/src/ktx2-basis-writer-worker.ts +6 -0
  201. package/src/lib/composite-image/image-texture-cube.ts +49 -0
  202. package/src/lib/composite-image/parse-composite-image.ts +699 -0
  203. package/src/lib/encoders/encode-ktx.ts +1 -1
  204. package/src/lib/encoders/encode-ktx2-basis-texture.ts +4 -2
  205. package/src/lib/gl-extensions.ts +188 -81
  206. package/src/lib/gl-types.ts +136 -0
  207. package/src/lib/parsers/basis-module-loader.ts +5 -5
  208. package/src/lib/parsers/crunch-module-loader.ts +4 -4
  209. package/src/lib/parsers/parse-basis.ts +358 -66
  210. package/src/lib/parsers/parse-crunch.ts +11 -8
  211. package/src/lib/parsers/parse-dds.ts +11 -12
  212. package/src/lib/parsers/parse-hdr.ts +426 -0
  213. package/src/lib/parsers/parse-ktx.ts +13 -3
  214. package/src/lib/parsers/parse-pvr.ts +33 -75
  215. package/src/lib/texture-api/generate-url.ts +2 -12
  216. package/src/lib/texture-api/load-image-array.ts +15 -6
  217. package/src/lib/texture-api/load-image-cube.ts +20 -34
  218. package/src/lib/texture-api/load-image.ts +19 -8
  219. package/src/lib/texture-api/texture-api-types.ts +15 -0
  220. package/src/lib/utils/detect-supported-texture-formats.ts +210 -0
  221. package/src/lib/utils/extract-mipmap-images.ts +23 -4
  222. package/src/lib/utils/ktx-format-helper.ts +135 -111
  223. package/src/lib/utils/texture-format-map.ts +162 -0
  224. package/src/npy-worker.ts +6 -0
  225. package/src/radiance-hdr-loader.ts +36 -0
  226. package/src/texture-array-loader.ts +46 -0
  227. package/src/texture-cube-array-loader.ts +49 -0
  228. package/src/texture-cube-loader.ts +46 -0
  229. package/src/texture-loader.ts +49 -0
  230. package/src/workers/compressed-texture-worker.ts +0 -1
  231. package/dist/lib/utils/texture-formats.d.ts +0 -8
  232. package/dist/lib/utils/texture-formats.d.ts.map +0 -1
  233. package/dist/lib/utils/texture-formats.js +0 -50
  234. package/src/lib/utils/texture-formats.ts +0 -59
@@ -1,12 +1,38 @@
1
- import type { TextureLevel } from '@loaders.gl/schema';
1
+ import type { TextureFormat, TextureLevel } from '@loaders.gl/schema';
2
+ import type { GLTextureFormat } from "../gl-types.js";
3
+ import type { BasisLoaderOptions } from "../../basis-loader.js";
2
4
  export type BasisFormat = 'etc1' | 'etc2' | 'bc1' | 'bc3' | 'bc4' | 'bc5' | 'bc7-m6-opaque-only' | 'bc7-m5' | 'pvrtc1-4-rgb' | 'pvrtc1-4-rgba' | 'astc-4x4' | 'atc-rgb' | 'atc-rgba-interpolated-alpha' | 'rgba32' | 'rgb565' | 'bgr565' | 'rgba4444';
5
+ type BasisOutputOptions = {
6
+ basisFormat: number;
7
+ compressed: boolean;
8
+ format?: GLTextureFormat;
9
+ textureFormat?: TextureFormat;
10
+ };
11
+ export declare const BASIS_FORMAT_TO_OUTPUT_OPTIONS: Record<BasisFormat, BasisOutputOptions>;
12
+ export declare const BASIS_FORMATS: readonly BasisFormat[];
13
+ export type ParseBasisOptions = {
14
+ format: 'auto' | BasisFormat | {
15
+ alpha: BasisFormat;
16
+ noAlpha: BasisFormat;
17
+ };
18
+ containerFormat: 'auto' | 'ktx2' | 'basis';
19
+ module: 'transcoder' | 'encoder';
20
+ supportedTextureFormats?: TextureFormat[];
21
+ };
22
+ /**
23
+ * Serializes access to the Basis transcoder so concurrent callers do not enter the non-reentrant
24
+ * decoder path at the same time.
25
+ * @param transcode - Transcode operation to run with exclusive access.
26
+ * @returns The transcode result.
27
+ */
28
+ export declare function withBasisTranscodingLock<T>(transcode: () => Promise<T> | T): Promise<T>;
3
29
  /**
4
30
  * parse data with a Binomial Basis_Universal module
5
31
  * @param data
6
32
  * @param options
7
33
  * @returns compressed texture data
8
34
  */
9
- export declare function parseBasis(data: ArrayBuffer, options: any): Promise<TextureLevel[][]>;
35
+ export declare function parseBasis(data: ArrayBuffer, options?: BasisLoaderOptions): Promise<TextureLevel[][]>;
10
36
  /**
11
37
  * Select transcode format from the list of supported formats
12
38
  * @returns key for OutputFormat map
@@ -15,4 +41,10 @@ export declare function selectSupportedBasisFormat(): BasisFormat | {
15
41
  alpha: BasisFormat;
16
42
  noAlpha: BasisFormat;
17
43
  };
44
+ export declare function selectSupportedBasisFormat(supportedTextureFormats?: Iterable<TextureFormat>): BasisFormat | {
45
+ alpha: BasisFormat;
46
+ noAlpha: BasisFormat;
47
+ };
48
+ export declare function getSupportedBasisFormats(supportedTextureFormats?: Iterable<TextureFormat>): BasisFormat[];
49
+ export {};
18
50
  //# sourceMappingURL=parse-basis.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse-basis.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-basis.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAMrD,MAAM,MAAM,WAAW,GACnB,MAAM,GACN,MAAM,GACN,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,oBAAoB,GACpB,QAAQ,GACR,cAAc,GACd,eAAe,GACf,UAAU,GACV,SAAS,GACT,6BAA6B,GAC7B,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,UAAU,CAAC;AAoDf;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,KAAA,GAAG,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAwBtF;AA6KD;;;GAGG;AACH,wBAAgB,0BAA0B,IACtC,WAAW,GACX;IACE,KAAK,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,WAAW,CAAC;CACtB,CAoBJ"}
1
+ {"version":3,"file":"parse-basis.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-basis.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,aAAa,EAAE,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAGpE,OAAO,KAAK,EAAC,eAAe,EAAC,uBAAoB;AAsBjD,OAAO,KAAK,EAAC,kBAAkB,EAAC,8BAA2B;AAE3D,MAAM,MAAM,WAAW,GACnB,MAAM,GACN,MAAM,GACN,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,oBAAoB,GACpB,QAAQ,GACR,cAAc,GACd,eAAe,GACf,UAAU,GACV,SAAS,GACT,6BAA6B,GAC7B,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,UAAU,CAAC;AAEf,KAAK,kBAAkB,GAAG;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B,CAAC;AAIF,eAAO,MAAM,8BAA8B,EAAE,MAAM,CAAC,WAAW,EAAE,kBAAkB,CAuGlF,CAAC;AAEF,eAAO,MAAM,aAAa,wBAEzB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG;QAAC,KAAK,EAAE,WAAW,CAAC;QAAC,OAAO,EAAE,WAAW,CAAA;KAAC,CAAC;IAC1E,eAAe,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC3C,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC;IACjC,uBAAuB,CAAC,EAAE,aAAa,EAAE,CAAC;CAC3C,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAe7F;AAED;;;;;GAKG;AAEH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,WAAW,EACjB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CA4B3B;AAoMD;;;GAGG;AACH,wBAAgB,0BAA0B,IACtC,WAAW,GACX;IACE,KAAK,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,WAAW,CAAC;CACtB,CAAC;AACN,wBAAgB,0BAA0B,CAAC,uBAAuB,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC,GACxF,WAAW,GACX;IACE,KAAK,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,WAAW,CAAC;CACtB,CAAC;AAyEN,wBAAgB,wBAAwB,CACtC,uBAAuB,GAAE,QAAQ,CAAC,aAAa,CAAmC,GACjF,WAAW,EAAE,CAuEf"}
@@ -1,83 +1,171 @@
1
1
  // loaders.gl
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
+ import { extractLoadLibraryOptions } from '@loaders.gl/worker-utils';
4
5
  import { loadBasisEncoderModule, loadBasisTranscoderModule } from "./basis-module-loader.js";
5
- import { GL_EXTENSIONS_CONSTANTS } from "../gl-extensions.js";
6
- import { getSupportedGPUTextureFormats } from "../utils/texture-formats.js";
6
+ import { GL_COMPRESSED_RED_GREEN_RGTC2_EXT, GL_COMPRESSED_RED_RGTC1_EXT, GL_COMPRESSED_RGB_ATC_WEBGL, GL_COMPRESSED_RGB_ETC1_WEBGL, GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG, GL_COMPRESSED_RGB_S3TC_DXT1_EXT, GL_COMPRESSED_RGBA8_ETC2_EAC, GL_COMPRESSED_RGBA_ASTC_4x4_KHR, GL_COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL, GL_COMPRESSED_RGBA_BPTC_UNORM_EXT, GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, GL_RGB565, GL_RGBA4, GL_RGBA8 } from "../gl-extensions.js";
7
+ import { detectSupportedTextureFormats } from "../utils/detect-supported-texture-formats.js";
7
8
  import { isKTX } from "./parse-ktx.js";
8
- const OutputFormat = {
9
+ let basisTranscodingLock = Promise.resolve();
10
+ export const BASIS_FORMAT_TO_OUTPUT_OPTIONS = {
9
11
  etc1: {
10
12
  basisFormat: 0,
11
13
  compressed: true,
12
- format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ETC1_WEBGL
14
+ format: GL_COMPRESSED_RGB_ETC1_WEBGL,
15
+ textureFormat: 'etc1-rgb-unorm-webgl'
16
+ },
17
+ etc2: {
18
+ basisFormat: 1,
19
+ compressed: true,
20
+ format: GL_COMPRESSED_RGBA8_ETC2_EAC,
21
+ textureFormat: 'etc2-rgba8unorm'
13
22
  },
14
- etc2: { basisFormat: 1, compressed: true },
15
23
  bc1: {
16
24
  basisFormat: 2,
17
25
  compressed: true,
18
- format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT
26
+ format: GL_COMPRESSED_RGB_S3TC_DXT1_EXT,
27
+ textureFormat: 'bc1-rgb-unorm-webgl'
19
28
  },
20
29
  bc3: {
21
30
  basisFormat: 3,
22
31
  compressed: true,
23
- format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT
32
+ format: GL_COMPRESSED_RGBA_S3TC_DXT5_EXT,
33
+ textureFormat: 'bc3-rgba-unorm'
34
+ },
35
+ bc4: {
36
+ basisFormat: 4,
37
+ compressed: true,
38
+ format: GL_COMPRESSED_RED_RGTC1_EXT,
39
+ textureFormat: 'bc4-r-unorm'
40
+ },
41
+ bc5: {
42
+ basisFormat: 5,
43
+ compressed: true,
44
+ format: GL_COMPRESSED_RED_GREEN_RGTC2_EXT,
45
+ textureFormat: 'bc5-rg-unorm'
46
+ },
47
+ 'bc7-m6-opaque-only': {
48
+ basisFormat: 6,
49
+ compressed: true,
50
+ format: GL_COMPRESSED_RGBA_BPTC_UNORM_EXT,
51
+ textureFormat: 'bc7-rgba-unorm'
52
+ },
53
+ 'bc7-m5': {
54
+ basisFormat: 7,
55
+ compressed: true,
56
+ format: GL_COMPRESSED_RGBA_BPTC_UNORM_EXT,
57
+ textureFormat: 'bc7-rgba-unorm'
24
58
  },
25
- bc4: { basisFormat: 4, compressed: true },
26
- bc5: { basisFormat: 5, compressed: true },
27
- 'bc7-m6-opaque-only': { basisFormat: 6, compressed: true },
28
- 'bc7-m5': { basisFormat: 7, compressed: true },
29
59
  'pvrtc1-4-rgb': {
30
60
  basisFormat: 8,
31
61
  compressed: true,
32
- format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_4BPPV1_IMG
62
+ format: GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG,
63
+ textureFormat: 'pvrtc-rgb4unorm-webgl'
33
64
  },
34
65
  'pvrtc1-4-rgba': {
35
66
  basisFormat: 9,
36
67
  compressed: true,
37
- format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG
68
+ format: GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,
69
+ textureFormat: 'pvrtc-rgba4unorm-webgl'
38
70
  },
39
71
  'astc-4x4': {
40
72
  basisFormat: 10,
41
73
  compressed: true,
42
- format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR
43
- },
44
- 'atc-rgb': { basisFormat: 11, compressed: true },
45
- 'atc-rgba-interpolated-alpha': { basisFormat: 12, compressed: true },
46
- rgba32: { basisFormat: 13, compressed: false },
47
- rgb565: { basisFormat: 14, compressed: false },
48
- bgr565: { basisFormat: 15, compressed: false },
49
- rgba4444: { basisFormat: 16, compressed: false }
74
+ format: GL_COMPRESSED_RGBA_ASTC_4x4_KHR,
75
+ textureFormat: 'astc-4x4-unorm'
76
+ },
77
+ 'atc-rgb': {
78
+ basisFormat: 11,
79
+ compressed: true,
80
+ format: GL_COMPRESSED_RGB_ATC_WEBGL,
81
+ textureFormat: 'atc-rgb-unorm-webgl'
82
+ },
83
+ 'atc-rgba-interpolated-alpha': {
84
+ basisFormat: 12,
85
+ compressed: true,
86
+ format: GL_COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL,
87
+ textureFormat: 'atc-rgbai-unorm-webgl'
88
+ },
89
+ rgba32: {
90
+ basisFormat: 13,
91
+ compressed: false,
92
+ format: GL_RGBA8,
93
+ textureFormat: 'rgba8unorm'
94
+ },
95
+ rgb565: {
96
+ basisFormat: 14,
97
+ compressed: false,
98
+ format: GL_RGB565,
99
+ textureFormat: 'rgb565unorm-webgl'
100
+ },
101
+ bgr565: {
102
+ basisFormat: 15,
103
+ compressed: false,
104
+ format: GL_RGB565,
105
+ textureFormat: 'rgb565unorm-webgl'
106
+ },
107
+ rgba4444: {
108
+ basisFormat: 16,
109
+ compressed: false,
110
+ format: GL_RGBA4,
111
+ textureFormat: 'rgba4unorm-webgl'
112
+ }
50
113
  };
114
+ export const BASIS_FORMATS = Object.freeze(Object.keys(BASIS_FORMAT_TO_OUTPUT_OPTIONS));
115
+ /**
116
+ * Serializes access to the Basis transcoder so concurrent callers do not enter the non-reentrant
117
+ * decoder path at the same time.
118
+ * @param transcode - Transcode operation to run with exclusive access.
119
+ * @returns The transcode result.
120
+ */
121
+ export async function withBasisTranscodingLock(transcode) {
122
+ const previousLock = basisTranscodingLock;
123
+ let releaseLock;
124
+ basisTranscodingLock = new Promise((resolve) => {
125
+ releaseLock = resolve;
126
+ });
127
+ await previousLock;
128
+ try {
129
+ return await transcode();
130
+ }
131
+ finally {
132
+ releaseLock();
133
+ }
134
+ }
51
135
  /**
52
136
  * parse data with a Binomial Basis_Universal module
53
137
  * @param data
54
138
  * @param options
55
139
  * @returns compressed texture data
56
140
  */
57
- export async function parseBasis(data, options) {
58
- if (options.basis.containerFormat === 'auto') {
59
- if (isKTX(data)) {
60
- const fileConstructors = await loadBasisEncoderModule(options);
61
- return parseKTX2File(fileConstructors.KTX2File, data, options);
62
- }
63
- const { BasisFile } = await loadBasisTranscoderModule(options);
64
- return parseBasisFile(BasisFile, data, options);
65
- }
66
- switch (options.basis.module) {
67
- case 'encoder':
68
- const fileConstructors = await loadBasisEncoderModule(options);
69
- switch (options.basis.containerFormat) {
70
- case 'ktx2':
71
- return parseKTX2File(fileConstructors.KTX2File, data, options);
72
- case 'basis':
73
- default:
74
- return parseBasisFile(fileConstructors.BasisFile, data, options);
141
+ // eslint-disable-next-line complexity
142
+ export async function parseBasis(data, options = {}) {
143
+ const loadLibraryOptions = extractLoadLibraryOptions(options);
144
+ return await withBasisTranscodingLock(async () => {
145
+ if (!options.basis?.containerFormat || options.basis.containerFormat === 'auto') {
146
+ if (isKTX(data)) {
147
+ const fileConstructors = await loadBasisEncoderModule(loadLibraryOptions);
148
+ return parseKTX2File(fileConstructors.KTX2File, data, options);
75
149
  }
76
- case 'transcoder':
77
- default:
78
- const { BasisFile } = await loadBasisTranscoderModule(options);
150
+ const { BasisFile } = await loadBasisTranscoderModule(loadLibraryOptions);
79
151
  return parseBasisFile(BasisFile, data, options);
80
- }
152
+ }
153
+ switch (options.basis.module) {
154
+ case 'encoder':
155
+ const fileConstructors = await loadBasisEncoderModule(loadLibraryOptions);
156
+ switch (options.basis.containerFormat) {
157
+ case 'ktx2':
158
+ return parseKTX2File(fileConstructors.KTX2File, data, options);
159
+ case 'basis':
160
+ default:
161
+ return parseBasisFile(fileConstructors.BasisFile, data, options);
162
+ }
163
+ case 'transcoder':
164
+ default:
165
+ const { BasisFile } = await loadBasisTranscoderModule(loadLibraryOptions);
166
+ return parseBasisFile(BasisFile, data, options);
167
+ }
168
+ });
81
169
  }
82
170
  /**
83
171
  * Parse *.basis file data
@@ -123,7 +211,7 @@ function transcodeImage(basisFile, imageIndex, levelIndex, options) {
123
211
  // See https://github.com/BinomialLLC/basis_universal/pull/83
124
212
  const hasAlpha = basisFile.getHasAlpha( /* imageIndex, levelIndex */);
125
213
  // Check options for output format etc
126
- const { compressed, format, basisFormat } = getBasisOptions(options, hasAlpha);
214
+ const { compressed, format, basisFormat, textureFormat } = getBasisOptions(options, hasAlpha);
127
215
  const decodedSize = basisFile.getImageTranscodedSizeInBytes(imageIndex, levelIndex, basisFormat);
128
216
  const decodedData = new Uint8Array(decodedSize);
129
217
  if (!basisFile.transcodeImage(decodedData, imageIndex, levelIndex, basisFormat, 0, 0)) {
@@ -131,11 +219,13 @@ function transcodeImage(basisFile, imageIndex, levelIndex, options) {
131
219
  }
132
220
  return {
133
221
  // standard loaders.gl image category payload
222
+ shape: 'texture-level',
134
223
  width,
135
224
  height,
136
225
  data: decodedData,
137
226
  compressed,
138
- format,
227
+ ...(format !== undefined ? { format } : {}),
228
+ ...(textureFormat !== undefined ? { textureFormat } : {}),
139
229
  // Additional fields
140
230
  // Add levelSize field.
141
231
  hasAlpha
@@ -176,7 +266,7 @@ function parseKTX2File(KTX2File, data, options) {
176
266
  function transcodeKTX2Image(ktx2File, levelIndex, options) {
177
267
  const { alphaFlag, height, width } = ktx2File.getImageLevelInfo(levelIndex, 0, 0);
178
268
  // Check options for output format etc
179
- const { compressed, format, basisFormat } = getBasisOptions(options, alphaFlag);
269
+ const { compressed, format, basisFormat, textureFormat } = getBasisOptions(options, alphaFlag);
180
270
  const decodedSize = ktx2File.getImageTranscodedSizeInBytes(levelIndex, 0 /* layerIndex */, 0 /* faceIndex */, basisFormat);
181
271
  const decodedData = new Uint8Array(decodedSize);
182
272
  if (!ktx2File.transcodeImage(decodedData, levelIndex, 0 /* layerIndex */, 0 /* faceIndex */, basisFormat, 0, -1 /* channel0 */, -1 /* channel1 */)) {
@@ -184,14 +274,16 @@ function transcodeKTX2Image(ktx2File, levelIndex, options) {
184
274
  }
185
275
  return {
186
276
  // standard loaders.gl image category payload
277
+ shape: 'texture-level',
187
278
  width,
188
279
  height,
189
280
  data: decodedData,
190
281
  compressed,
282
+ ...(format !== undefined ? { format } : {}),
283
+ ...(textureFormat !== undefined ? { textureFormat } : {}),
191
284
  // Additional fields
192
285
  levelSize: decodedSize,
193
- hasAlpha: alphaFlag,
194
- format
286
+ hasAlpha: alphaFlag
195
287
  };
196
288
  }
197
289
  /**
@@ -201,42 +293,151 @@ function transcodeKTX2Image(ktx2File, levelIndex, options) {
201
293
  * @returns BasisFormat data
202
294
  */
203
295
  function getBasisOptions(options, hasAlpha) {
204
- let format = options && options.basis && options.basis.format;
296
+ let format = options.basis?.format || 'auto';
205
297
  if (format === 'auto') {
206
- format = selectSupportedBasisFormat();
298
+ format = options.basis?.supportedTextureFormats
299
+ ? selectSupportedBasisFormat(options.basis.supportedTextureFormats)
300
+ : selectSupportedBasisFormat();
207
301
  }
208
302
  if (typeof format === 'object') {
209
303
  format = hasAlpha ? format.alpha : format.noAlpha;
210
304
  }
211
- format = format.toLowerCase();
212
- return OutputFormat[format];
305
+ const normalizedFormat = format.toLowerCase();
306
+ const basisOutputOptions = BASIS_FORMAT_TO_OUTPUT_OPTIONS[normalizedFormat];
307
+ if (!basisOutputOptions) {
308
+ throw new Error(`Unknown Basis format ${format}`);
309
+ }
310
+ return basisOutputOptions;
213
311
  }
214
- /**
215
- * Select transcode format from the list of supported formats
216
- * @returns key for OutputFormat map
217
- */
218
- export function selectSupportedBasisFormat() {
219
- const supportedFormats = getSupportedGPUTextureFormats();
220
- if (supportedFormats.has('astc')) {
312
+ export function selectSupportedBasisFormat(supportedTextureFormats = detectSupportedTextureFormats()) {
313
+ const textureFormats = new Set(supportedTextureFormats);
314
+ if (hasSupportedTextureFormat(textureFormats, ['astc-4x4-unorm', 'astc-4x4-unorm-srgb'])) {
221
315
  return 'astc-4x4';
222
316
  }
223
- else if (supportedFormats.has('dxt')) {
317
+ else if (hasSupportedTextureFormat(textureFormats, ['bc7-rgba-unorm', 'bc7-rgba-unorm-srgb'])) {
318
+ return {
319
+ alpha: 'bc7-m5',
320
+ noAlpha: 'bc7-m6-opaque-only'
321
+ };
322
+ }
323
+ else if (hasSupportedTextureFormat(textureFormats, [
324
+ 'bc1-rgb-unorm-webgl',
325
+ 'bc1-rgb-unorm-srgb-webgl',
326
+ 'bc1-rgba-unorm',
327
+ 'bc1-rgba-unorm-srgb',
328
+ 'bc2-rgba-unorm',
329
+ 'bc2-rgba-unorm-srgb',
330
+ 'bc3-rgba-unorm',
331
+ 'bc3-rgba-unorm-srgb'
332
+ ])) {
224
333
  return {
225
334
  alpha: 'bc3',
226
335
  noAlpha: 'bc1'
227
336
  };
228
337
  }
229
- else if (supportedFormats.has('pvrtc')) {
338
+ else if (hasSupportedTextureFormat(textureFormats, [
339
+ 'pvrtc-rgb4unorm-webgl',
340
+ 'pvrtc-rgba4unorm-webgl',
341
+ 'pvrtc-rgb2unorm-webgl',
342
+ 'pvrtc-rgba2unorm-webgl'
343
+ ])) {
230
344
  return {
231
345
  alpha: 'pvrtc1-4-rgba',
232
346
  noAlpha: 'pvrtc1-4-rgb'
233
347
  };
234
348
  }
235
- else if (supportedFormats.has('etc1')) {
349
+ else if (hasSupportedTextureFormat(textureFormats, [
350
+ 'etc2-rgb8unorm',
351
+ 'etc2-rgb8unorm-srgb',
352
+ 'etc2-rgb8a1unorm',
353
+ 'etc2-rgb8a1unorm-srgb',
354
+ 'etc2-rgba8unorm',
355
+ 'etc2-rgba8unorm-srgb',
356
+ 'eac-r11unorm',
357
+ 'eac-r11snorm',
358
+ 'eac-rg11unorm',
359
+ 'eac-rg11snorm'
360
+ ])) {
361
+ return 'etc2';
362
+ }
363
+ else if (textureFormats.has('etc1-rgb-unorm-webgl')) {
236
364
  return 'etc1';
237
365
  }
238
- else if (supportedFormats.has('etc2')) {
239
- return 'etc2';
366
+ else if (hasSupportedTextureFormat(textureFormats, [
367
+ 'atc-rgb-unorm-webgl',
368
+ 'atc-rgba-unorm-webgl',
369
+ 'atc-rgbai-unorm-webgl'
370
+ ])) {
371
+ return {
372
+ alpha: 'atc-rgba-interpolated-alpha',
373
+ noAlpha: 'atc-rgb'
374
+ };
240
375
  }
241
376
  return 'rgb565';
242
377
  }
378
+ export function getSupportedBasisFormats(supportedTextureFormats = detectSupportedTextureFormats()) {
379
+ const textureFormats = new Set(supportedTextureFormats);
380
+ const basisFormats = [];
381
+ if (hasSupportedTextureFormat(textureFormats, ['astc-4x4-unorm', 'astc-4x4-unorm-srgb'])) {
382
+ basisFormats.push('astc-4x4');
383
+ }
384
+ if (hasSupportedTextureFormat(textureFormats, [
385
+ 'bc1-rgb-unorm-webgl',
386
+ 'bc1-rgb-unorm-srgb-webgl',
387
+ 'bc1-rgba-unorm',
388
+ 'bc1-rgba-unorm-srgb',
389
+ 'bc2-rgba-unorm',
390
+ 'bc2-rgba-unorm-srgb',
391
+ 'bc3-rgba-unorm',
392
+ 'bc3-rgba-unorm-srgb'
393
+ ])) {
394
+ basisFormats.push('bc1', 'bc3');
395
+ }
396
+ if (hasSupportedTextureFormat(textureFormats, ['bc4-r-unorm', 'bc4-r-snorm'])) {
397
+ basisFormats.push('bc4');
398
+ }
399
+ if (hasSupportedTextureFormat(textureFormats, ['bc5-rg-unorm', 'bc5-rg-snorm'])) {
400
+ basisFormats.push('bc5');
401
+ }
402
+ if (hasSupportedTextureFormat(textureFormats, ['bc7-rgba-unorm', 'bc7-rgba-unorm-srgb'])) {
403
+ basisFormats.push('bc7-m5', 'bc7-m6-opaque-only');
404
+ }
405
+ if (hasSupportedTextureFormat(textureFormats, [
406
+ 'pvrtc-rgb4unorm-webgl',
407
+ 'pvrtc-rgba4unorm-webgl',
408
+ 'pvrtc-rgb2unorm-webgl',
409
+ 'pvrtc-rgba2unorm-webgl'
410
+ ])) {
411
+ basisFormats.push('pvrtc1-4-rgb', 'pvrtc1-4-rgba');
412
+ }
413
+ if (hasSupportedTextureFormat(textureFormats, [
414
+ 'etc2-rgb8unorm',
415
+ 'etc2-rgb8unorm-srgb',
416
+ 'etc2-rgb8a1unorm',
417
+ 'etc2-rgb8a1unorm-srgb',
418
+ 'etc2-rgba8unorm',
419
+ 'etc2-rgba8unorm-srgb',
420
+ 'eac-r11unorm',
421
+ 'eac-r11snorm',
422
+ 'eac-rg11unorm',
423
+ 'eac-rg11snorm'
424
+ ])) {
425
+ basisFormats.push('etc2');
426
+ }
427
+ if (textureFormats.has('etc1-rgb-unorm-webgl')) {
428
+ basisFormats.push('etc1');
429
+ }
430
+ if (hasSupportedTextureFormat(textureFormats, [
431
+ 'atc-rgb-unorm-webgl',
432
+ 'atc-rgba-unorm-webgl',
433
+ 'atc-rgbai-unorm-webgl'
434
+ ])) {
435
+ basisFormats.push('atc-rgb', 'atc-rgba-interpolated-alpha');
436
+ }
437
+ basisFormats.push('rgba32', 'rgb565', 'bgr565', 'rgba4444');
438
+ return basisFormats;
439
+ }
440
+ function hasSupportedTextureFormat(supportedTextureFormats, candidateTextureFormats) {
441
+ return candidateTextureFormats.some((textureFormat) => supportedTextureFormats.has(textureFormat));
442
+ }
443
+ //# sourceMappingURL=parse-basis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-basis.js","sourceRoot":"","sources":["../../../src/lib/parsers/parse-basis.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAKpC,OAAO,EAAC,yBAAyB,EAAC,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAC,sBAAsB,EAAE,yBAAyB,EAAC,iCAA8B;AAExF,OAAO,EACL,iCAAiC,EACjC,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,EAC5B,kCAAkC,EAClC,+BAA+B,EAC/B,4BAA4B,EAC5B,+BAA+B,EAC/B,+CAA+C,EAC/C,iCAAiC,EACjC,mCAAmC,EACnC,gCAAgC,EAChC,SAAS,EACT,QAAQ,EACR,QAAQ,EACT,4BAAyB;AAC1B,OAAO,EAAC,6BAA6B,EAAC,qDAAkD;AACxF,OAAO,EAAC,KAAK,EAAC,uBAAoB;AA+BlC,IAAI,oBAAoB,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;AAE5D,MAAM,CAAC,MAAM,8BAA8B,GAA4C;IACrF,IAAI,EAAE;QACJ,WAAW,EAAE,CAAC;QACd,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,4BAA4B;QACpC,aAAa,EAAE,sBAAsB;KACtC;IACD,IAAI,EAAE;QACJ,WAAW,EAAE,CAAC;QACd,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,4BAA4B;QACpC,aAAa,EAAE,iBAAiB;KACjC;IACD,GAAG,EAAE;QACH,WAAW,EAAE,CAAC;QACd,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,+BAA+B;QACvC,aAAa,EAAE,qBAAqB;KACrC;IACD,GAAG,EAAE;QACH,WAAW,EAAE,CAAC;QACd,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,gCAAgC;QACxC,aAAa,EAAE,gBAAgB;KAChC;IACD,GAAG,EAAE;QACH,WAAW,EAAE,CAAC;QACd,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,2BAA2B;QACnC,aAAa,EAAE,aAAa;KAC7B;IACD,GAAG,EAAE;QACH,WAAW,EAAE,CAAC;QACd,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,iCAAiC;QACzC,aAAa,EAAE,cAAc;KAC9B;IACD,oBAAoB,EAAE;QACpB,WAAW,EAAE,CAAC;QACd,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,iCAAiC;QACzC,aAAa,EAAE,gBAAgB;KAChC;IACD,QAAQ,EAAE;QACR,WAAW,EAAE,CAAC;QACd,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,iCAAiC;QACzC,aAAa,EAAE,gBAAgB;KAChC;IACD,cAAc,EAAE;QACd,WAAW,EAAE,CAAC;QACd,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,kCAAkC;QAC1C,aAAa,EAAE,uBAAuB;KACvC;IACD,eAAe,EAAE;QACf,WAAW,EAAE,CAAC;QACd,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,mCAAmC;QAC3C,aAAa,EAAE,wBAAwB;KACxC;IACD,UAAU,EAAE;QACV,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,+BAA+B;QACvC,aAAa,EAAE,gBAAgB;KAChC;IACD,SAAS,EAAE;QACT,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,2BAA2B;QACnC,aAAa,EAAE,qBAAqB;KACrC;IACD,6BAA6B,EAAE;QAC7B,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,+CAA+C;QACvD,aAAa,EAAE,uBAAuB;KACvC;IACD,MAAM,EAAE;QACN,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE,QAAQ;QAChB,aAAa,EAAE,YAAY;KAC5B;IACD,MAAM,EAAE;QACN,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE,SAAS;QACjB,aAAa,EAAE,mBAAmB;KACnC;IACD,MAAM,EAAE;QACN,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE,SAAS;QACjB,aAAa,EAAE,mBAAmB;KACnC;IACD,QAAQ,EAAE;QACR,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE,QAAQ;QAChB,aAAa,EAAE,kBAAkB;KAClC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CACxC,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAkB,CAC7D,CAAC;AASF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAI,SAA+B;IAC/E,MAAM,YAAY,GAAG,oBAAoB,CAAC;IAC1C,IAAI,WAAwB,CAAC;IAE7B,oBAAoB,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7C,WAAW,GAAG,OAAO,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,CAAC;IAEnB,IAAI,CAAC;QACH,OAAO,MAAM,SAAS,EAAE,CAAC;IAC3B,CAAC;YAAS,CAAC;QACT,WAAW,EAAE,CAAC;IAChB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,sCAAsC;AACtC,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,IAAiB,EACjB,UAA8B,EAAE;IAEhC,MAAM,kBAAkB,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAE9D,OAAO,MAAM,wBAAwB,CAAC,KAAK,IAAI,EAAE;QAC/C,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,eAAe,IAAI,OAAO,CAAC,KAAK,CAAC,eAAe,KAAK,MAAM,EAAE,CAAC;YAChF,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChB,MAAM,gBAAgB,GAAG,MAAM,sBAAsB,CAAC,kBAAkB,CAAC,CAAC;gBAC1E,OAAO,aAAa,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YACjE,CAAC;YACD,MAAM,EAAC,SAAS,EAAC,GAAG,MAAM,yBAAyB,CAAC,kBAAkB,CAAC,CAAC;YACxE,OAAO,cAAc,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAClD,CAAC;QACD,QAAQ,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAC7B,KAAK,SAAS;gBACZ,MAAM,gBAAgB,GAAG,MAAM,sBAAsB,CAAC,kBAAkB,CAAC,CAAC;gBAC1E,QAAQ,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;oBACtC,KAAK,MAAM;wBACT,OAAO,aAAa,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;oBACjE,KAAK,OAAO,CAAC;oBACb;wBACE,OAAO,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;gBACrE,CAAC;YACH,KAAK,YAAY,CAAC;YAClB;gBACE,MAAM,EAAC,SAAS,EAAC,GAAG,MAAM,yBAAyB,CAAC,kBAAkB,CAAC,CAAC;gBACxE,OAAO,cAAc,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACpD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,SAAS,cAAc,CACrB,SAAS,EACT,IAAiB,EACjB,OAA2B;IAE3B,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAEtD,IAAI,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,UAAU,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAqB,EAAE,CAAC;QAEpC,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,UAAU,EAAE,UAAU,EAAE,EAAE,CAAC;YAC/D,MAAM,WAAW,GAAG,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YACvD,MAAM,MAAM,GAAmB,EAAE,CAAC;YAElC,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,WAAW,EAAE,UAAU,EAAE,EAAE,CAAC;gBAChE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;YAC1E,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;YAAS,CAAC;QACT,SAAS,CAAC,KAAK,EAAE,CAAC;QAClB,SAAS,CAAC,MAAM,EAAE,CAAC;IACrB,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,cAAc,CACrB,SAAS,EACT,UAAkB,EAClB,UAAkB,EAClB,OAA2B;IAE3B,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,SAAS,CAAC,cAAc,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAEhE,6DAA6D;IAC7D,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,EAAC,4BAA4B,CAAC,CAAC;IAErE,sCAAsC;IACtC,MAAM,EAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAC,GAAG,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAE5F,MAAM,WAAW,GAAG,SAAS,CAAC,6BAA6B,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IACjG,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;IAEhD,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACtF,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IAED,OAAO;QACL,6CAA6C;QAC7C,KAAK,EAAE,eAAe;QACtB,KAAK;QACL,MAAM;QACN,IAAI,EAAE,WAAW;QACjB,UAAU;QACV,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAC,aAAa,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEvD,oBAAoB;QACpB,uBAAuB;QACvB,QAAQ;KACT,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,aAAa,CAAC,QAAQ,EAAE,IAAiB,EAAE,OAA2B;IAC7E,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAEpD,IAAI,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QACD,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;QACzC,MAAM,MAAM,GAAmB,EAAE,CAAC;QAElC,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,WAAW,EAAE,UAAU,EAAE,EAAE,CAAC;YAChE,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QACjE,CAAC;QAED,OAAO,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;YAAS,CAAC;QACT,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjB,QAAQ,CAAC,MAAM,EAAE,CAAC;IACpB,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CACzB,QAAQ,EACR,UAAkB,EAClB,OAA2B;IAE3B,MAAM,EAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAC,GAAG,QAAQ,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAEhF,sCAAsC;IACtC,MAAM,EAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAC,GAAG,eAAe,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAE7F,MAAM,WAAW,GAAG,QAAQ,CAAC,6BAA6B,CACxD,UAAU,EACV,CAAC,CAAC,gBAAgB,EAClB,CAAC,CAAC,eAAe,EACjB,WAAW,CACZ,CAAC;IACF,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;IAEhD,IACE,CAAC,QAAQ,CAAC,cAAc,CACtB,WAAW,EACX,UAAU,EACV,CAAC,CAAC,gBAAgB,EAClB,CAAC,CAAC,eAAe,EACjB,WAAW,EACX,CAAC,EACD,CAAC,CAAC,CAAC,cAAc,EACjB,CAAC,CAAC,CAAC,cAAc,CAClB,EACD,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IAED,OAAO;QACL,6CAA6C;QAC7C,KAAK,EAAE,eAAe;QACtB,KAAK;QACL,MAAM;QACN,IAAI,EAAE,WAAW;QACjB,UAAU;QACV,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAC,aAAa,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEvD,oBAAoB;QACpB,SAAS,EAAE,WAAW;QACtB,QAAQ,EAAE,SAAS;KACpB,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,eAAe,CAAC,OAA2B,EAAE,QAAiB;IACrE,IAAI,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,MAAM,IAAI,MAAM,CAAC;IAC7C,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,uBAAuB;YAC7C,CAAC,CAAC,0BAA0B,CAAC,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC;YACnE,CAAC,CAAC,0BAA0B,EAAE,CAAC;IACnC,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;IACpD,CAAC;IACD,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,EAAiB,CAAC;IAC7D,MAAM,kBAAkB,GAAG,8BAA8B,CAAC,gBAAgB,CAAC,CAAC;IAC5E,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,wBAAwB,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAkBD,MAAM,UAAU,0BAA0B,CACxC,0BAAmD,6BAA6B,EAAE;IAElF,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAExD,IAAI,yBAAyB,CAAC,cAAc,EAAE,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC,EAAE,CAAC;QACzF,OAAO,UAAU,CAAC;IACpB,CAAC;SAAM,IAAI,yBAAyB,CAAC,cAAc,EAAE,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC,EAAE,CAAC;QAChG,OAAO;YACL,KAAK,EAAE,QAAQ;YACf,OAAO,EAAE,oBAAoB;SAC9B,CAAC;IACJ,CAAC;SAAM,IACL,yBAAyB,CAAC,cAAc,EAAE;QACxC,qBAAqB;QACrB,0BAA0B;QAC1B,gBAAgB;QAChB,qBAAqB;QACrB,gBAAgB;QAChB,qBAAqB;QACrB,gBAAgB;QAChB,qBAAqB;KACtB,CAAC,EACF,CAAC;QACD,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;SAAM,IACL,yBAAyB,CAAC,cAAc,EAAE;QACxC,uBAAuB;QACvB,wBAAwB;QACxB,uBAAuB;QACvB,wBAAwB;KACzB,CAAC,EACF,CAAC;QACD,OAAO;YACL,KAAK,EAAE,eAAe;YACtB,OAAO,EAAE,cAAc;SACxB,CAAC;IACJ,CAAC;SAAM,IACL,yBAAyB,CAAC,cAAc,EAAE;QACxC,gBAAgB;QAChB,qBAAqB;QACrB,kBAAkB;QAClB,uBAAuB;QACvB,iBAAiB;QACjB,sBAAsB;QACtB,cAAc;QACd,cAAc;QACd,eAAe;QACf,eAAe;KAChB,CAAC,EACF,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;SAAM,IAAI,cAAc,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,CAAC;QACtD,OAAO,MAAM,CAAC;IAChB,CAAC;SAAM,IACL,yBAAyB,CAAC,cAAc,EAAE;QACxC,qBAAqB;QACrB,sBAAsB;QACtB,uBAAuB;KACxB,CAAC,EACF,CAAC;QACD,OAAO;YACL,KAAK,EAAE,6BAA6B;YACpC,OAAO,EAAE,SAAS;SACnB,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,0BAAmD,6BAA6B,EAAE;IAElF,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACxD,MAAM,YAAY,GAAkB,EAAE,CAAC;IAEvC,IAAI,yBAAyB,CAAC,cAAc,EAAE,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC,EAAE,CAAC;QACzF,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IACD,IACE,yBAAyB,CAAC,cAAc,EAAE;QACxC,qBAAqB;QACrB,0BAA0B;QAC1B,gBAAgB;QAChB,qBAAqB;QACrB,gBAAgB;QAChB,qBAAqB;QACrB,gBAAgB;QAChB,qBAAqB;KACtB,CAAC,EACF,CAAC;QACD,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,yBAAyB,CAAC,cAAc,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC;QAC9E,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IACD,IAAI,yBAAyB,CAAC,cAAc,EAAE,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;QAChF,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IACD,IAAI,yBAAyB,CAAC,cAAc,EAAE,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC,EAAE,CAAC;QACzF,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;IACpD,CAAC;IACD,IACE,yBAAyB,CAAC,cAAc,EAAE;QACxC,uBAAuB;QACvB,wBAAwB;QACxB,uBAAuB;QACvB,wBAAwB;KACzB,CAAC,EACF,CAAC;QACD,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;IACrD,CAAC;IACD,IACE,yBAAyB,CAAC,cAAc,EAAE;QACxC,gBAAgB;QAChB,qBAAqB;QACrB,kBAAkB;QAClB,uBAAuB;QACvB,iBAAiB;QACjB,sBAAsB;QACtB,cAAc;QACd,cAAc;QACd,eAAe;QACf,eAAe;KAChB,CAAC,EACF,CAAC;QACD,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,cAAc,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAC/C,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IACD,IACE,yBAAyB,CAAC,cAAc,EAAE;QACxC,qBAAqB;QACrB,sBAAsB;QACtB,uBAAuB;KACxB,CAAC,EACF,CAAC;QACD,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,6BAA6B,CAAC,CAAC;IAC9D,CAAC;IAED,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC5D,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,yBAAyB,CAChC,uBAA2C,EAC3C,uBAAwC;IAExC,OAAO,uBAAuB,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE,CACpD,uBAAuB,CAAC,GAAG,CAAC,aAAa,CAAC,CAC3C,CAAC;AACJ,CAAC"}
@@ -23,3 +23,4 @@ export function parseCompressedTexture(data) {
23
23
  }
24
24
  throw new Error('Texture container format not recognized');
25
25
  }
26
+ //# sourceMappingURL=parse-compressed-texture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-compressed-texture.js","sourceRoot":"","sources":["../../../src/lib/parsers/parse-compressed-texture.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,EAAC,KAAK,EAAE,QAAQ,EAAC,uBAAoB;AAC5C,OAAO,EAAC,KAAK,EAAE,QAAQ,EAAC,uBAAoB;AAC5C,OAAO,EAAC,KAAK,EAAE,QAAQ,EAAC,uBAAoB;AAE5C;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAiB;IACtD,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAChB,4FAA4F;QAC5F,aAAa;QACb,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAChB,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAChB,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;AAC7D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"parse-crunch.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-crunch.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAsCrD;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,IAAI,KAAA,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAmD7E"}
1
+ {"version":3,"file":"parse-crunch.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-crunch.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAgB,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAyCpE;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,IAAI,KAAA,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAmD7E"}
@@ -2,8 +2,8 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
  import { loadCrunchModule } from "./crunch-module-loader.js";
5
- import { GL_EXTENSIONS_CONSTANTS } from "../gl-extensions.js";
6
5
  import { assert } from '@loaders.gl/loader-utils';
6
+ import { extractLoadLibraryOptions } from '@loaders.gl/worker-utils';
7
7
  import { getDxt1LevelSize, getDxtXLevelSize } from "./parse-dds.js";
8
8
  import { extractMipmapImages } from "../utils/extract-mipmap-images.js";
9
9
  // Taken from crnlib.h
@@ -18,15 +18,15 @@ const CRN_FORMAT = {
18
18
  /** Mapping of Crunch formats to DXT formats. */
19
19
  const DXT_FORMAT_MAP = {
20
20
  [CRN_FORMAT.cCRNFmtDXT1]: {
21
- pixelFormat: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT,
21
+ textureFormat: 'bc1-rgb-unorm-webgl',
22
22
  sizeFunction: getDxt1LevelSize
23
23
  },
24
24
  [CRN_FORMAT.cCRNFmtDXT3]: {
25
- pixelFormat: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT,
25
+ textureFormat: 'bc2-rgba-unorm',
26
26
  sizeFunction: getDxtXLevelSize
27
27
  },
28
28
  [CRN_FORMAT.cCRNFmtDXT5]: {
29
- pixelFormat: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT,
29
+ textureFormat: 'bc3-rgba-unorm',
30
30
  sizeFunction: getDxtXLevelSize
31
31
  }
32
32
  };
@@ -39,7 +39,7 @@ let dst;
39
39
  * @returns Promise of Array of the texture levels
40
40
  */
41
41
  export async function parseCrunch(data, options) {
42
- const crunchModule = await loadCrunchModule(options);
42
+ const crunchModule = await loadCrunchModule(extractLoadLibraryOptions(options));
43
43
  // Copy the contents of the arrayBuffer into emscriptens heap.
44
44
  const srcSize = data.byteLength;
45
45
  const bytes = new Uint8Array(data);
@@ -79,7 +79,7 @@ export async function parseCrunch(data, options) {
79
79
  width,
80
80
  height,
81
81
  sizeFunction,
82
- internalFormat: DXT_FORMAT_MAP[format].pixelFormat
82
+ textureFormat: DXT_FORMAT_MAP[format].textureFormat
83
83
  });
84
84
  }
85
85
  /**
@@ -103,3 +103,4 @@ function arrayBufferCopy(srcData, dstData, dstByteOffset, numBytes) {
103
103
  dstData[dstByteOffset + i] = srcData[i];
104
104
  }
105
105
  }
106
+ //# sourceMappingURL=parse-crunch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-crunch.js","sourceRoot":"","sources":["../../../src/lib/parsers/parse-crunch.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"parse-dds.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-dds.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AA0CrD;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAIhD;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,YAAY,EAAE,CA4B1D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtE"}
1
+ {"version":3,"file":"parse-dds.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-dds.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAgB,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAyCpE;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAIhD;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,YAAY,EAAE,CA4B1D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtE"}
@@ -2,7 +2,6 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
  import { assert } from '@loaders.gl/loader-utils';
5
- import { GL_EXTENSIONS_CONSTANTS } from "../gl-extensions.js";
6
5
  import { extractMipmapImages } from "../utils/extract-mipmap-images.js";
7
6
  const DDS_CONSTANTS = {
8
7
  MAGIC_NUMBER: 0x20534444,
@@ -18,13 +17,13 @@ const DDS_CONSTANTS = {
18
17
  DDSD_MIPMAPCOUNT: 0x20000,
19
18
  DDPF_FOURCC: 0x4
20
19
  };
21
- const DDS_PIXEL_FORMATS = {
22
- DXT1: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT,
23
- DXT3: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT,
24
- DXT5: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT,
25
- 'ATC ': GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ATC_WEBGL,
26
- ATCA: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL,
27
- ATCI: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL
20
+ const DDS_TEXTURE_FORMATS = {
21
+ DXT1: 'bc1-rgb-unorm-webgl',
22
+ DXT3: 'bc2-rgba-unorm',
23
+ DXT5: 'bc3-rgba-unorm',
24
+ 'ATC ': 'atc-rgb-unorm-webgl',
25
+ ATCA: 'atc-rgba-unorm-webgl',
26
+ ATCI: 'atc-rgbai-unorm-webgl'
28
27
  };
29
28
  const getATCLevelSize = getDxt1LevelSize;
30
29
  const getATCALevelSize = getDxtXLevelSize;
@@ -57,9 +56,9 @@ export function parseDDS(data) {
57
56
  const pixelFormatNumber = header[DDS_CONSTANTS.HEADER_PF_FOURCC_INDEX];
58
57
  assert(Boolean(header[DDS_CONSTANTS.HEADER_PF_FLAGS_INDEX] & DDS_CONSTANTS.DDPF_FOURCC), 'DDS: Unsupported format, must contain a FourCC code');
59
58
  const fourCC = int32ToFourCC(pixelFormatNumber);
60
- const internalFormat = DDS_PIXEL_FORMATS[fourCC];
59
+ const textureFormat = DDS_TEXTURE_FORMATS[fourCC];
61
60
  const sizeFunction = DDS_SIZE_FUNCTIONS[fourCC];
62
- assert(internalFormat && sizeFunction, `DDS: Unknown pixel format ${pixelFormatNumber}`);
61
+ assert(textureFormat && sizeFunction, `DDS: Unknown pixel format ${pixelFormatNumber}`);
63
62
  let mipMapLevels = 1;
64
63
  if (header[DDS_CONSTANTS.HEADER_FLAGS_INDEX] & DDS_CONSTANTS.DDSD_MIPMAPCOUNT) {
65
64
  mipMapLevels = Math.max(1, header[DDS_CONSTANTS.MIPMAPCOUNT_INDEX]);
@@ -73,7 +72,7 @@ export function parseDDS(data) {
73
72
  width,
74
73
  height,
75
74
  sizeFunction,
76
- internalFormat
75
+ textureFormat
77
76
  });
78
77
  }
79
78
  /**
@@ -102,3 +101,4 @@ export function getDxtXLevelSize(width, height) {
102
101
  function int32ToFourCC(value) {
103
102
  return String.fromCharCode(value & 0xff, (value >> 8) & 0xff, (value >> 16) & 0xff, (value >> 24) & 0xff);
104
103
  }
104
+ //# sourceMappingURL=parse-dds.js.map