@loaders.gl/textures 4.0.0-alpha.4 → 4.0.0-alpha.5

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 (144) hide show
  1. package/dist/basis-loader.d.ts +50 -0
  2. package/dist/basis-loader.d.ts.map +1 -0
  3. package/dist/basis-worker.js +116 -60
  4. package/dist/bundle.d.ts +2 -0
  5. package/dist/bundle.d.ts.map +1 -0
  6. package/dist/compressed-texture-loader.d.ts +49 -0
  7. package/dist/compressed-texture-loader.d.ts.map +1 -0
  8. package/dist/compressed-texture-loader.js +1 -1
  9. package/dist/compressed-texture-loader.js.map +1 -1
  10. package/dist/compressed-texture-worker.js +221 -123
  11. package/dist/compressed-texture-writer.d.ts +25 -0
  12. package/dist/compressed-texture-writer.d.ts.map +1 -0
  13. package/dist/crunch-loader.d.ts +21 -0
  14. package/dist/crunch-loader.d.ts.map +1 -0
  15. package/dist/crunch-worker.js +59 -26
  16. package/dist/dist.min.js +2123 -0
  17. package/dist/index.d.ts +16 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +1 -1
  20. package/dist/index.js.map +1 -1
  21. package/dist/ktx2-basis-universal-texture-writer.d.ts +22 -0
  22. package/dist/ktx2-basis-universal-texture-writer.d.ts.map +1 -0
  23. package/dist/lib/encoders/encode-ktx.d.ts +2 -0
  24. package/dist/lib/encoders/encode-ktx.d.ts.map +1 -0
  25. package/dist/lib/encoders/encode-ktx2-basis-texture.d.ts +10 -0
  26. package/dist/lib/encoders/encode-ktx2-basis-texture.d.ts.map +1 -0
  27. package/dist/lib/encoders/encode-ktx2-basis-texture.js +1 -1
  28. package/dist/lib/encoders/encode-ktx2-basis-texture.js.map +1 -1
  29. package/dist/lib/encoders/encode-texture.d.ts +4 -0
  30. package/dist/lib/encoders/encode-texture.d.ts.map +1 -0
  31. package/dist/lib/encoders/encode-texture.js +2 -5
  32. package/dist/lib/encoders/encode-texture.js.map +1 -1
  33. package/dist/lib/gl-extensions.d.ts +61 -0
  34. package/dist/lib/gl-extensions.d.ts.map +1 -0
  35. package/dist/lib/{gl-constants.js → gl-extensions.js} +2 -2
  36. package/dist/lib/gl-extensions.js.map +1 -0
  37. package/dist/lib/parsers/basis-module-loader.d.ts +13 -0
  38. package/dist/lib/parsers/basis-module-loader.d.ts.map +1 -0
  39. package/dist/lib/parsers/basis-module-loader.js +1 -1
  40. package/dist/lib/parsers/crunch-module-loader.d.ts +7 -0
  41. package/dist/lib/parsers/crunch-module-loader.d.ts.map +1 -0
  42. package/dist/lib/parsers/crunch-module-loader.js +1 -1
  43. package/dist/lib/parsers/crunch-module-loader.js.map +1 -1
  44. package/dist/lib/parsers/parse-basis.d.ts +18 -0
  45. package/dist/lib/parsers/parse-basis.d.ts.map +1 -0
  46. package/dist/lib/parsers/parse-basis.js +16 -16
  47. package/dist/lib/parsers/parse-basis.js.map +1 -1
  48. package/dist/lib/parsers/parse-compressed-texture.d.ts +8 -0
  49. package/dist/lib/parsers/parse-compressed-texture.d.ts.map +1 -0
  50. package/dist/lib/parsers/parse-compressed-texture.js.map +1 -1
  51. package/dist/lib/parsers/parse-crunch.d.ts +9 -0
  52. package/dist/lib/parsers/parse-crunch.d.ts.map +1 -0
  53. package/dist/lib/parsers/parse-crunch.js +14 -13
  54. package/dist/lib/parsers/parse-crunch.js.map +1 -1
  55. package/dist/lib/parsers/parse-dds.d.ts +28 -0
  56. package/dist/lib/parsers/parse-dds.d.ts.map +1 -0
  57. package/dist/lib/parsers/parse-dds.js +7 -7
  58. package/dist/lib/parsers/parse-dds.js.map +1 -1
  59. package/dist/lib/parsers/parse-ktx.d.ts +4 -0
  60. package/dist/lib/parsers/parse-ktx.d.ts.map +1 -0
  61. package/dist/lib/parsers/parse-ktx.js.map +1 -1
  62. package/dist/lib/parsers/parse-npy.d.ts +10 -0
  63. package/dist/lib/parsers/parse-npy.d.ts.map +1 -0
  64. package/dist/lib/parsers/parse-npy.js.map +1 -1
  65. package/dist/lib/parsers/parse-pvr.d.ts +15 -0
  66. package/dist/lib/parsers/parse-pvr.d.ts.map +1 -0
  67. package/dist/lib/parsers/parse-pvr.js +28 -28
  68. package/dist/lib/parsers/parse-pvr.js.map +1 -1
  69. package/dist/lib/texture-api/async-deep-map.d.ts +5 -0
  70. package/dist/lib/texture-api/async-deep-map.d.ts.map +1 -0
  71. package/dist/lib/texture-api/deep-load.d.ts +5 -0
  72. package/dist/lib/texture-api/deep-load.d.ts.map +1 -0
  73. package/dist/lib/texture-api/generate-url.d.ts +3 -0
  74. package/dist/lib/texture-api/generate-url.d.ts.map +1 -0
  75. package/dist/lib/texture-api/load-image-array.d.ts +4 -0
  76. package/dist/lib/texture-api/load-image-array.d.ts.map +1 -0
  77. package/dist/lib/texture-api/load-image-cube.d.ts +12 -0
  78. package/dist/lib/texture-api/load-image-cube.d.ts.map +1 -0
  79. package/dist/lib/texture-api/load-image.d.ts +8 -0
  80. package/dist/lib/texture-api/load-image.d.ts.map +1 -0
  81. package/dist/lib/texture-api/texture-api-types.d.ts +10 -0
  82. package/dist/lib/texture-api/texture-api-types.d.ts.map +1 -0
  83. package/dist/lib/utils/extract-mipmap-images.d.ts +20 -0
  84. package/dist/lib/utils/extract-mipmap-images.d.ts.map +1 -0
  85. package/dist/lib/utils/extract-mipmap-images.js.map +1 -1
  86. package/dist/lib/utils/ktx-format-helper.d.ts +9 -0
  87. package/dist/lib/utils/ktx-format-helper.d.ts.map +1 -0
  88. package/dist/lib/utils/ktx-format-helper.js +67 -67
  89. package/dist/lib/utils/ktx-format-helper.js.map +1 -1
  90. package/dist/lib/utils/texture-formats.d.ts +8 -0
  91. package/dist/lib/utils/texture-formats.d.ts.map +1 -0
  92. package/dist/lib/utils/texture-formats.js.map +1 -1
  93. package/dist/lib/utils/version.d.ts +2 -0
  94. package/dist/lib/utils/version.d.ts.map +1 -0
  95. package/dist/lib/utils/version.js +1 -1
  96. package/dist/libs/README.md +2 -2
  97. package/dist/libs/basis_encoder.js +1 -1
  98. package/dist/libs/basis_transcoder.js +1 -1
  99. package/dist/libs/crunch.js +1 -0
  100. package/dist/libs/libs/README.md +9 -0
  101. package/dist/libs/libs/basis_encoder.js +22 -0
  102. package/dist/libs/libs/basis_encoder.wasm +0 -0
  103. package/dist/libs/libs/basis_transcoder.js +21 -0
  104. package/dist/libs/libs/basis_transcoder.wasm +0 -0
  105. package/dist/libs/libs/crunch.js +136 -0
  106. package/dist/npy-loader.d.ts +45 -0
  107. package/dist/npy-loader.d.ts.map +1 -0
  108. package/dist/npy-worker.js +1 -1
  109. package/dist/types.d.ts +1 -0
  110. package/dist/types.d.ts.map +1 -0
  111. package/dist/types.js +1 -1
  112. package/dist/workers/basis-worker.d.ts +2 -0
  113. package/dist/workers/basis-worker.d.ts.map +1 -0
  114. package/dist/workers/compressed-texture-worker.d.ts +2 -0
  115. package/dist/workers/compressed-texture-worker.d.ts.map +1 -0
  116. package/dist/workers/crunch-worker.d.ts +21 -0
  117. package/dist/workers/crunch-worker.d.ts.map +1 -0
  118. package/dist/workers/npy-worker.d.ts +2 -0
  119. package/dist/workers/npy-worker.d.ts.map +1 -0
  120. package/package.json +12 -11
  121. package/src/compressed-texture-loader.ts +1 -1
  122. package/src/index.ts +2 -2
  123. package/src/lib/encoders/encode-ktx2-basis-texture.ts +2 -2
  124. package/src/lib/encoders/encode-texture.ts +6 -6
  125. package/src/lib/{gl-constants.ts → gl-extensions.ts} +1 -1
  126. package/src/lib/parsers/crunch-module-loader.ts +1 -1
  127. package/src/lib/parsers/{parse-basis.js → parse-basis.ts} +100 -44
  128. package/src/lib/parsers/parse-compressed-texture.ts +1 -1
  129. package/src/lib/parsers/parse-crunch.ts +16 -15
  130. package/src/lib/parsers/parse-dds.ts +8 -8
  131. package/src/lib/parsers/parse-ktx.ts +2 -1
  132. package/src/lib/parsers/parse-npy.ts +2 -0
  133. package/src/lib/parsers/parse-pvr.ts +72 -29
  134. package/src/lib/utils/extract-mipmap-images.ts +9 -1
  135. package/src/lib/utils/ktx-format-helper.ts +67 -67
  136. package/src/lib/utils/texture-formats.ts +1 -1
  137. package/src/libs/README.md +2 -2
  138. package/src/libs/basis_encoder.js +1 -1
  139. package/src/libs/basis_transcoder.js +1 -1
  140. package/src/libs/crunch.js +1 -0
  141. package/src/types.ts +0 -30
  142. package/dist/lib/gl-constants.js.map +0 -1
  143. package/src/lib/parsers/parse-ktx.js +0 -45
  144. package/src/lib/parsers/parse-npy.js +0 -96
@@ -0,0 +1,16 @@
1
+ export type { GPUTextureFormat } from '@loaders.gl/schema';
2
+ export type { TextureLoaderOptions } from './compressed-texture-loader';
3
+ export { BasisLoader, BasisWorkerLoader } from './basis-loader';
4
+ export { CompressedTextureLoader, CompressedTextureWorkerLoader } from './compressed-texture-loader';
5
+ export { CrunchLoader } from './crunch-loader';
6
+ export { NPYLoader, NPYWorkerLoader } from './npy-loader';
7
+ export { CompressedTextureWriter } from './compressed-texture-writer';
8
+ export { KTX2BasisUniversalTextureWriter } from './ktx2-basis-universal-texture-writer';
9
+ export { loadImageTexture } from './lib/texture-api/load-image';
10
+ export { loadImageTextureArray } from './lib/texture-api/load-image-array';
11
+ export { loadImageTextureCube } from './lib/texture-api/load-image-cube';
12
+ export { GL_EXTENSIONS_CONSTANTS } from './lib/gl-extensions';
13
+ export { selectSupportedBasisFormat } from './lib/parsers/parse-basis';
14
+ export { getSupportedGPUTextureFormats } from './lib/utils/texture-formats';
15
+ export { CrunchLoader as CrunchWorkerLoader } from './crunch-loader';
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AACzD,YAAY,EAAC,oBAAoB,EAAC,MAAM,6BAA6B,CAAC;AAGtE,OAAO,EAAC,WAAW,EAAE,iBAAiB,EAAC,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAC,uBAAuB,EAAE,6BAA6B,EAAC,MAAM,6BAA6B,CAAC;AACnG,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAC,SAAS,EAAE,eAAe,EAAC,MAAM,cAAc,CAAC;AAGxD,OAAO,EAAC,uBAAuB,EAAC,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAC,+BAA+B,EAAC,MAAM,uCAAuC,CAAC;AAGtF,OAAO,EAAC,gBAAgB,EAAC,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAC,qBAAqB,EAAC,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAC,oBAAoB,EAAC,MAAM,mCAAmC,CAAC;AAGvE,OAAO,EAAC,uBAAuB,EAAC,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAC,0BAA0B,EAAC,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAC,6BAA6B,EAAC,MAAM,6BAA6B,CAAC;AAG1E,OAAO,EAAC,YAAY,IAAI,kBAAkB,EAAC,MAAM,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -7,7 +7,7 @@ export { KTX2BasisUniversalTextureWriter } from './ktx2-basis-universal-texture-
7
7
  export { loadImageTexture } from './lib/texture-api/load-image';
8
8
  export { loadImageTextureArray } from './lib/texture-api/load-image-array';
9
9
  export { loadImageTextureCube } from './lib/texture-api/load-image-cube';
10
- export { GL as GL_CONSTANTS } from './lib/gl-constants';
10
+ export { GL_EXTENSIONS_CONSTANTS } from './lib/gl-extensions';
11
11
  export { selectSupportedBasisFormat } from './lib/parsers/parse-basis';
12
12
  export { getSupportedGPUTextureFormats } from './lib/utils/texture-formats';
13
13
  export { CrunchLoader as CrunchWorkerLoader } from './crunch-loader';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["BasisLoader","BasisWorkerLoader","CompressedTextureLoader","CompressedTextureWorkerLoader","CrunchLoader","NPYLoader","NPYWorkerLoader","CompressedTextureWriter","KTX2BasisUniversalTextureWriter","loadImageTexture","loadImageTextureArray","loadImageTextureCube","GL","GL_CONSTANTS","selectSupportedBasisFormat","getSupportedGPUTextureFormats","CrunchWorkerLoader"],"mappings":"AAKA,SAAQA,WAAR,EAAqBC,iBAArB,QAA6C,gBAA7C;AACA,SAAQC,uBAAR,EAAiCC,6BAAjC,QAAqE,6BAArE;AACA,SAAQC,YAAR,QAA2B,iBAA3B;AACA,SAAQC,SAAR,EAAmBC,eAAnB,QAAyC,cAAzC;AAGA,SAAQC,uBAAR,QAAsC,6BAAtC;AACA,SAAQC,+BAAR,QAA8C,uCAA9C;AAGA,SAAQC,gBAAR,QAA+B,8BAA/B;AACA,SAAQC,qBAAR,QAAoC,oCAApC;AACA,SAAQC,oBAAR,QAAmC,mCAAnC;AAGA,SAAQC,EAAE,IAAIC,YAAd,QAAiC,oBAAjC;AACA,SAAQC,0BAAR,QAAyC,2BAAzC;AACA,SAAQC,6BAAR,QAA4C,6BAA5C;AAGA,SAAQX,YAAY,IAAIY,kBAAxB,QAAiD,iBAAjD","sourcesContent":["// Types\nexport type {GPUTextureFormat} from './types';\nexport type {TextureLoaderOptions} from './compressed-texture-loader';\n\n// Loaders\nexport {BasisLoader, BasisWorkerLoader} from './basis-loader';\nexport {CompressedTextureLoader, CompressedTextureWorkerLoader} from './compressed-texture-loader';\nexport {CrunchLoader} from './crunch-loader';\nexport {NPYLoader, NPYWorkerLoader} from './npy-loader';\n\n// Writers\nexport {CompressedTextureWriter} from './compressed-texture-writer';\nexport {KTX2BasisUniversalTextureWriter} from './ktx2-basis-universal-texture-writer';\n\n// Texture Loading API\nexport {loadImageTexture} from './lib/texture-api/load-image';\nexport {loadImageTextureArray} from './lib/texture-api/load-image-array';\nexport {loadImageTextureCube} from './lib/texture-api/load-image-cube';\n\n// Utilities\nexport {GL as GL_CONSTANTS} from './lib/gl-constants';\nexport {selectSupportedBasisFormat} from './lib/parsers/parse-basis';\nexport {getSupportedGPUTextureFormats} from './lib/utils/texture-formats';\n\n// DEPRECATED\nexport {CrunchLoader as CrunchWorkerLoader} from './crunch-loader';\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.ts"],"names":["BasisLoader","BasisWorkerLoader","CompressedTextureLoader","CompressedTextureWorkerLoader","CrunchLoader","NPYLoader","NPYWorkerLoader","CompressedTextureWriter","KTX2BasisUniversalTextureWriter","loadImageTexture","loadImageTextureArray","loadImageTextureCube","GL_EXTENSIONS_CONSTANTS","selectSupportedBasisFormat","getSupportedGPUTextureFormats","CrunchWorkerLoader"],"mappings":"AAKA,SAAQA,WAAR,EAAqBC,iBAArB,QAA6C,gBAA7C;AACA,SAAQC,uBAAR,EAAiCC,6BAAjC,QAAqE,6BAArE;AACA,SAAQC,YAAR,QAA2B,iBAA3B;AACA,SAAQC,SAAR,EAAmBC,eAAnB,QAAyC,cAAzC;AAGA,SAAQC,uBAAR,QAAsC,6BAAtC;AACA,SAAQC,+BAAR,QAA8C,uCAA9C;AAGA,SAAQC,gBAAR,QAA+B,8BAA/B;AACA,SAAQC,qBAAR,QAAoC,oCAApC;AACA,SAAQC,oBAAR,QAAmC,mCAAnC;AAGA,SAAQC,uBAAR,QAAsC,qBAAtC;AACA,SAAQC,0BAAR,QAAyC,2BAAzC;AACA,SAAQC,6BAAR,QAA4C,6BAA5C;AAGA,SAAQV,YAAY,IAAIW,kBAAxB,QAAiD,iBAAjD","sourcesContent":["// Types\nexport type {GPUTextureFormat} from '@loaders.gl/schema';\nexport type {TextureLoaderOptions} from './compressed-texture-loader';\n\n// Loaders\nexport {BasisLoader, BasisWorkerLoader} from './basis-loader';\nexport {CompressedTextureLoader, CompressedTextureWorkerLoader} from './compressed-texture-loader';\nexport {CrunchLoader} from './crunch-loader';\nexport {NPYLoader, NPYWorkerLoader} from './npy-loader';\n\n// Writers\nexport {CompressedTextureWriter} from './compressed-texture-writer';\nexport {KTX2BasisUniversalTextureWriter} from './ktx2-basis-universal-texture-writer';\n\n// Texture Loading API\nexport {loadImageTexture} from './lib/texture-api/load-image';\nexport {loadImageTextureArray} from './lib/texture-api/load-image-array';\nexport {loadImageTextureCube} from './lib/texture-api/load-image-cube';\n\n// Utilities\nexport {GL_EXTENSIONS_CONSTANTS} from './lib/gl-extensions';\nexport {selectSupportedBasisFormat} from './lib/parsers/parse-basis';\nexport {getSupportedGPUTextureFormats} from './lib/utils/texture-formats';\n\n// DEPRECATED\nexport {CrunchLoader as CrunchWorkerLoader} from './crunch-loader';\n"],"file":"index.js"}
@@ -0,0 +1,22 @@
1
+ import type { Writer } from '@loaders.gl/loader-utils';
2
+ import { encodeKTX2BasisTexture } from './lib/encoders/encode-ktx2-basis-texture';
3
+ /**
4
+ * Basis Universal Supercompressed GPU Texture.
5
+ * Spec - https://github.com/Esri/i3s-spec/blob/master/docs/1.8/textureSetDefinitionFormat.cmn.md
6
+ */
7
+ export declare const KTX2BasisUniversalTextureWriter: {
8
+ name: string;
9
+ id: string;
10
+ module: string;
11
+ version: any;
12
+ extensions: string[];
13
+ options: {
14
+ useSRGB: boolean;
15
+ qualityLevel: number;
16
+ encodeUASTC: boolean;
17
+ mipmaps: boolean;
18
+ };
19
+ encode: typeof encodeKTX2BasisTexture;
20
+ };
21
+ export declare const _TypecheckKTX2TextureWriter: Writer;
22
+ //# sourceMappingURL=ktx2-basis-universal-texture-writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ktx2-basis-universal-texture-writer.d.ts","sourceRoot":"","sources":["../src/ktx2-basis-universal-texture-writer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,0BAA0B,CAAC;AAErD,OAAO,EAAC,sBAAsB,EAAC,MAAM,0CAA0C,CAAC;AAEhF;;;GAGG;AACH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;CAe3C,CAAC;AAGF,eAAO,MAAM,2BAA2B,EAAE,MAAwC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function encodeKTX(texture: any): import("ktx-parse").KTX2Container;
2
+ //# sourceMappingURL=encode-ktx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encode-ktx.d.ts","sourceRoot":"","sources":["../../../src/lib/encoders/encode-ktx.ts"],"names":[],"mappings":"AAEA,wBAAgB,SAAS,CAAC,OAAO,KAAA,qCAIhC"}
@@ -0,0 +1,10 @@
1
+ import type { ImageDataType } from '@loaders.gl/images';
2
+ /**
3
+ * Encodes image to Basis Universal Supercompressed GPU Texture.
4
+ * Code example is taken from here - https://github.com/BinomialLLC/basis_universal/blob/master/webgl/ktx2_encode_test/index.html#L279
5
+ * BasisEncoder API - https://github.com/BinomialLLC/basis_universal/blob/master/webgl/transcoder/basis_wrappers.cpp#L1712
6
+ * @param image
7
+ * @param options
8
+ */
9
+ export declare function encodeKTX2BasisTexture(image: ImageDataType, options?: any): Promise<ArrayBuffer>;
10
+ //# sourceMappingURL=encode-ktx2-basis-texture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encode-ktx2-basis-texture.d.ts","sourceRoot":"","sources":["../../../src/lib/encoders/encode-ktx2-basis-texture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AAGtD;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,aAAa,EACpB,OAAO,GAAE,GAAQ,GAChB,OAAO,CAAC,WAAW,CAAC,CA8BtB"}
@@ -23,7 +23,7 @@ export async function encodeKTX2BasisTexture(image, options = {}) {
23
23
  basisEncoder.setUASTC(encodeUASTC);
24
24
  basisEncoder.setMipGen(mipmaps);
25
25
  const numOutputBytes = basisEncoder.encode(basisFileData);
26
- const actualKTX2FileData = new Uint8Array(basisFileData.buffer, 0, numOutputBytes);
26
+ const actualKTX2FileData = basisFileData.subarray(0, numOutputBytes).buffer;
27
27
  return actualKTX2FileData;
28
28
  } catch (error) {
29
29
  console.error('Basis Universal Supercompressed GPU Texture encoder Error: ', error);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/encoders/encode-ktx2-basis-texture.ts"],"names":["loadBasisEncoderModule","encodeKTX2BasisTexture","image","options","useSRGB","qualityLevel","encodeUASTC","mipmaps","BasisEncoder","basisEncoder","basisFileData","Uint8Array","width","height","setCreateKTX2File","setKTX2UASTCSupercompression","setKTX2SRGBTransferFunc","setSliceSourceImage","data","setPerceptual","setMipSRGB","setQualityLevel","setUASTC","setMipGen","numOutputBytes","encode","actualKTX2FileData","buffer","error","console","delete"],"mappings":"AACA,SAAQA,sBAAR,QAAqC,gCAArC;AASA,OAAO,eAAeC,sBAAf,CACLC,KADK,EAELC,OAAY,GAAG,EAFV,EAGgB;AAErB,QAAM;AAACC,IAAAA,OAAO,GAAG,KAAX;AAAkBC,IAAAA,YAAY,GAAG,EAAjC;AAAqCC,IAAAA,WAAW,GAAG,KAAnD;AAA0DC,IAAAA,OAAO,GAAG;AAApE,MAA6EJ,OAAnF;AACA,QAAM;AAACK,IAAAA;AAAD,MAAiB,MAAMR,sBAAsB,CAACG,OAAD,CAAnD;AACA,QAAMM,YAAY,GAAG,IAAID,YAAJ,EAArB;;AAEA,MAAI;AACF,UAAME,aAAa,GAAG,IAAIC,UAAJ,CAAeT,KAAK,CAACU,KAAN,GAAcV,KAAK,CAACW,MAApB,GAA6B,CAA5C,CAAtB;AACAJ,IAAAA,YAAY,CAACK,iBAAb,CAA+B,IAA/B;AACAL,IAAAA,YAAY,CAACM,4BAAb,CAA0C,IAA1C;AACAN,IAAAA,YAAY,CAACO,uBAAb,CAAqC,IAArC;AAEAP,IAAAA,YAAY,CAACQ,mBAAb,CAAiC,CAAjC,EAAoCf,KAAK,CAACgB,IAA1C,EAAgDhB,KAAK,CAACU,KAAtD,EAA6DV,KAAK,CAACW,MAAnE,EAA2E,KAA3E;AACAJ,IAAAA,YAAY,CAACU,aAAb,CAA2Bf,OAA3B;AACAK,IAAAA,YAAY,CAACW,UAAb,CAAwBhB,OAAxB;AACAK,IAAAA,YAAY,CAACY,eAAb,CAA6BhB,YAA7B;AACAI,IAAAA,YAAY,CAACa,QAAb,CAAsBhB,WAAtB;AACAG,IAAAA,YAAY,CAACc,SAAb,CAAuBhB,OAAvB;AAEA,UAAMiB,cAAc,GAAGf,YAAY,CAACgB,MAAb,CAAoBf,aAApB,CAAvB;AAEA,UAAMgB,kBAAkB,GAAG,IAAIf,UAAJ,CAAeD,aAAa,CAACiB,MAA7B,EAAqC,CAArC,EAAwCH,cAAxC,CAA3B;AACA,WAAOE,kBAAP;AACD,GAjBD,CAiBE,OAAOE,KAAP,EAAc;AAEdC,IAAAA,OAAO,CAACD,KAAR,CAAc,6DAAd,EAA6EA,KAA7E;AACA,UAAMA,KAAN;AACD,GArBD,SAqBU;AACRnB,IAAAA,YAAY,CAACqB,MAAb;AACD;AACF","sourcesContent":["import type {ImageDataType} from '@loaders.gl/images';\nimport {loadBasisEncoderModule} from '../parsers/basis-module-loader';\n\n/**\n * Encodes image to Basis Universal Supercompressed GPU Texture.\n * Code example is taken from here - https://github.com/BinomialLLC/basis_universal/blob/master/webgl/ktx2_encode_test/index.html#L279\n * BasisEncoder API - https://github.com/BinomialLLC/basis_universal/blob/master/webgl/transcoder/basis_wrappers.cpp#L1712\n * @param image\n * @param options\n */\nexport async function encodeKTX2BasisTexture(\n image: ImageDataType,\n options: any = {}\n): Promise<Uint8Array> {\n // TODO remove default values after writer options will be normalized like it done in load module.\n const {useSRGB = false, qualityLevel = 10, encodeUASTC = false, mipmaps = false} = options;\n const {BasisEncoder} = await loadBasisEncoderModule(options);\n const basisEncoder = new BasisEncoder();\n\n try {\n const basisFileData = new Uint8Array(image.width * image.height * 4);\n basisEncoder.setCreateKTX2File(true);\n basisEncoder.setKTX2UASTCSupercompression(true);\n basisEncoder.setKTX2SRGBTransferFunc(true);\n\n basisEncoder.setSliceSourceImage(0, image.data, image.width, image.height, false);\n basisEncoder.setPerceptual(useSRGB);\n basisEncoder.setMipSRGB(useSRGB);\n basisEncoder.setQualityLevel(qualityLevel);\n basisEncoder.setUASTC(encodeUASTC);\n basisEncoder.setMipGen(mipmaps);\n\n const numOutputBytes = basisEncoder.encode(basisFileData);\n\n const actualKTX2FileData = new Uint8Array(basisFileData.buffer, 0, numOutputBytes);\n return actualKTX2FileData;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Basis Universal Supercompressed GPU Texture encoder Error: ', error);\n throw error;\n } finally {\n basisEncoder.delete();\n }\n}\n"],"file":"encode-ktx2-basis-texture.js"}
1
+ {"version":3,"sources":["../../../src/lib/encoders/encode-ktx2-basis-texture.ts"],"names":["loadBasisEncoderModule","encodeKTX2BasisTexture","image","options","useSRGB","qualityLevel","encodeUASTC","mipmaps","BasisEncoder","basisEncoder","basisFileData","Uint8Array","width","height","setCreateKTX2File","setKTX2UASTCSupercompression","setKTX2SRGBTransferFunc","setSliceSourceImage","data","setPerceptual","setMipSRGB","setQualityLevel","setUASTC","setMipGen","numOutputBytes","encode","actualKTX2FileData","subarray","buffer","error","console","delete"],"mappings":"AACA,SAAQA,sBAAR,QAAqC,gCAArC;AASA,OAAO,eAAeC,sBAAf,CACLC,KADK,EAELC,OAAY,GAAG,EAFV,EAGiB;AAEtB,QAAM;AAACC,IAAAA,OAAO,GAAG,KAAX;AAAkBC,IAAAA,YAAY,GAAG,EAAjC;AAAqCC,IAAAA,WAAW,GAAG,KAAnD;AAA0DC,IAAAA,OAAO,GAAG;AAApE,MAA6EJ,OAAnF;AACA,QAAM;AAACK,IAAAA;AAAD,MAAiB,MAAMR,sBAAsB,CAACG,OAAD,CAAnD;AACA,QAAMM,YAAY,GAAG,IAAID,YAAJ,EAArB;;AAEA,MAAI;AACF,UAAME,aAAa,GAAG,IAAIC,UAAJ,CAAeT,KAAK,CAACU,KAAN,GAAcV,KAAK,CAACW,MAApB,GAA6B,CAA5C,CAAtB;AACAJ,IAAAA,YAAY,CAACK,iBAAb,CAA+B,IAA/B;AACAL,IAAAA,YAAY,CAACM,4BAAb,CAA0C,IAA1C;AACAN,IAAAA,YAAY,CAACO,uBAAb,CAAqC,IAArC;AAEAP,IAAAA,YAAY,CAACQ,mBAAb,CAAiC,CAAjC,EAAoCf,KAAK,CAACgB,IAA1C,EAAgDhB,KAAK,CAACU,KAAtD,EAA6DV,KAAK,CAACW,MAAnE,EAA2E,KAA3E;AACAJ,IAAAA,YAAY,CAACU,aAAb,CAA2Bf,OAA3B;AACAK,IAAAA,YAAY,CAACW,UAAb,CAAwBhB,OAAxB;AACAK,IAAAA,YAAY,CAACY,eAAb,CAA6BhB,YAA7B;AACAI,IAAAA,YAAY,CAACa,QAAb,CAAsBhB,WAAtB;AACAG,IAAAA,YAAY,CAACc,SAAb,CAAuBhB,OAAvB;AAEA,UAAMiB,cAAc,GAAGf,YAAY,CAACgB,MAAb,CAAoBf,aAApB,CAAvB;AAEA,UAAMgB,kBAAkB,GAAGhB,aAAa,CAACiB,QAAd,CAAuB,CAAvB,EAA0BH,cAA1B,EAA0CI,MAArE;AACA,WAAOF,kBAAP;AACD,GAjBD,CAiBE,OAAOG,KAAP,EAAc;AAEdC,IAAAA,OAAO,CAACD,KAAR,CAAc,6DAAd,EAA6EA,KAA7E;AACA,UAAMA,KAAN;AACD,GArBD,SAqBU;AACRpB,IAAAA,YAAY,CAACsB,MAAb;AACD;AACF","sourcesContent":["import type {ImageDataType} from '@loaders.gl/images';\nimport {loadBasisEncoderModule} from '../parsers/basis-module-loader';\n\n/**\n * Encodes image to Basis Universal Supercompressed GPU Texture.\n * Code example is taken from here - https://github.com/BinomialLLC/basis_universal/blob/master/webgl/ktx2_encode_test/index.html#L279\n * BasisEncoder API - https://github.com/BinomialLLC/basis_universal/blob/master/webgl/transcoder/basis_wrappers.cpp#L1712\n * @param image\n * @param options\n */\nexport async function encodeKTX2BasisTexture(\n image: ImageDataType,\n options: any = {}\n): Promise<ArrayBuffer> {\n // TODO remove default values after writer options will be normalized like it done in load module.\n const {useSRGB = false, qualityLevel = 10, encodeUASTC = false, mipmaps = false} = options;\n const {BasisEncoder} = await loadBasisEncoderModule(options);\n const basisEncoder = new BasisEncoder();\n\n try {\n const basisFileData = new Uint8Array(image.width * image.height * 4);\n basisEncoder.setCreateKTX2File(true);\n basisEncoder.setKTX2UASTCSupercompression(true);\n basisEncoder.setKTX2SRGBTransferFunc(true);\n\n basisEncoder.setSliceSourceImage(0, image.data, image.width, image.height, false);\n basisEncoder.setPerceptual(useSRGB);\n basisEncoder.setMipSRGB(useSRGB);\n basisEncoder.setQualityLevel(qualityLevel);\n basisEncoder.setUASTC(encodeUASTC);\n basisEncoder.setMipGen(mipmaps);\n\n const numOutputBytes = basisEncoder.encode(basisFileData);\n\n const actualKTX2FileData = basisFileData.subarray(0, numOutputBytes).buffer;\n return actualKTX2FileData;\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Basis Universal Supercompressed GPU Texture encoder Error: ', error);\n throw error;\n } finally {\n basisEncoder.delete();\n }\n}\n"],"file":"encode-ktx2-basis-texture.js"}
@@ -0,0 +1,4 @@
1
+ export declare function encodeImageURLToCompressedTextureURL(inputUrl: string, outputUrl: string, options?: {
2
+ cwd?: string;
3
+ }): Promise<string>;
4
+ //# sourceMappingURL=encode-texture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encode-texture.d.ts","sourceRoot":"","sources":["../../../src/lib/encoders/encode-texture.ts"],"names":[],"mappings":"AAKA,wBAAsB,oCAAoC,CACxD,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAC,GACvB,OAAO,CAAC,MAAM,CAAC,CAkBjB"}
@@ -1,14 +1,11 @@
1
1
  import { ChildProcessProxy } from '@loaders.gl/worker-utils';
2
- const MODULE_ROOT = "".concat(__dirname, "/../../..");
3
- export async function encodeImageURLToCompressedTextureURL(inputUrl, outputUrl) {
2
+ export async function encodeImageURLToCompressedTextureURL(inputUrl, outputUrl, options) {
4
3
  const args = ['texture-compressor', '--type', 's3tc', '--compression', 'DXT1', '--quality', 'normal', '--input', inputUrl, '--output', outputUrl];
5
4
  const childProcess = new ChildProcessProxy();
6
5
  await childProcess.start({
7
6
  command: 'npx',
8
7
  arguments: args,
9
- spawn: {
10
- cwd: MODULE_ROOT
11
- }
8
+ spawn: options
12
9
  });
13
10
  return outputUrl;
14
11
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/encoders/encode-texture.ts"],"names":["ChildProcessProxy","MODULE_ROOT","__dirname","encodeImageURLToCompressedTextureURL","inputUrl","outputUrl","args","childProcess","start","command","arguments","spawn","cwd"],"mappings":"AAAA,SAAQA,iBAAR,QAAgC,0BAAhC;AAEA,MAAMC,WAAW,aAAMC,SAAN,cAAjB;AAKA,OAAO,eAAeC,oCAAf,CAAoDC,QAApD,EAA8DC,SAA9D,EAAyE;AAE9E,QAAMC,IAAI,GAAG,CAEX,oBAFW,EAGX,QAHW,EAGD,MAHC,EAIX,eAJW,EAIM,MAJN,EAKX,WALW,EAKE,QALF,EAMX,SANW,EAMAF,QANA,EAOX,UAPW,EAOCC,SAPD,CAAb;AASA,QAAME,YAAY,GAAG,IAAIP,iBAAJ,EAArB;AACA,QAAMO,YAAY,CAACC,KAAb,CAAmB;AACvBC,IAAAA,OAAO,EAAE,KADc;AAEvBC,IAAAA,SAAS,EAAEJ,IAFY;AAGvBK,IAAAA,KAAK,EAAE;AACLC,MAAAA,GAAG,EAAEX;AADA;AAHgB,GAAnB,CAAN;AAOA,SAAOI,SAAP;AACD","sourcesContent":["import {ChildProcessProxy} from '@loaders.gl/worker-utils';\n\nconst MODULE_ROOT = `${__dirname}/../../..`;\n\n/*\n * @see https://github.com/TimvanScherpenzeel/texture-compressor\n */\nexport async function encodeImageURLToCompressedTextureURL(inputUrl, outputUrl) {\n // prettier-ignore\n const args = [\n // Note: our actual executable is `npx`, so `texture-compressor` is an argument\n 'texture-compressor',\n '--type', 's3tc',\n '--compression', 'DXT1',\n '--quality', 'normal',\n '--input', inputUrl,\n '--output', outputUrl\n ];\n const childProcess = new ChildProcessProxy();\n await childProcess.start({\n command: 'npx',\n arguments: args,\n spawn: {\n cwd: MODULE_ROOT\n }\n });\n return outputUrl;\n}\n"],"file":"encode-texture.js"}
1
+ {"version":3,"sources":["../../../src/lib/encoders/encode-texture.ts"],"names":["ChildProcessProxy","encodeImageURLToCompressedTextureURL","inputUrl","outputUrl","options","args","childProcess","start","command","arguments","spawn"],"mappings":"AAAA,SAAQA,iBAAR,QAAgC,0BAAhC;AAKA,OAAO,eAAeC,oCAAf,CACLC,QADK,EAELC,SAFK,EAGLC,OAHK,EAIY;AAEjB,QAAMC,IAAI,GAAG,CAEX,oBAFW,EAGX,QAHW,EAGD,MAHC,EAIX,eAJW,EAIM,MAJN,EAKX,WALW,EAKE,QALF,EAMX,SANW,EAMAH,QANA,EAOX,UAPW,EAOCC,SAPD,CAAb;AASA,QAAMG,YAAY,GAAG,IAAIN,iBAAJ,EAArB;AACA,QAAMM,YAAY,CAACC,KAAb,CAAmB;AACvBC,IAAAA,OAAO,EAAE,KADc;AAEvBC,IAAAA,SAAS,EAAEJ,IAFY;AAGvBK,IAAAA,KAAK,EAAEN;AAHgB,GAAnB,CAAN;AAKA,SAAOD,SAAP;AACD","sourcesContent":["import {ChildProcessProxy} from '@loaders.gl/worker-utils';\n\n/*\n * @see https://github.com/TimvanScherpenzeel/texture-compressor\n */\nexport async function encodeImageURLToCompressedTextureURL(\n inputUrl: string,\n outputUrl: string,\n options?: {cwd?: string}\n): Promise<string> {\n // prettier-ignore\n const args = [\n // Note: our actual executable is `npx`, so `texture-compressor` is an argument\n 'texture-compressor',\n '--type', 's3tc',\n '--compression', 'DXT1',\n '--quality', 'normal',\n '--input', inputUrl,\n '--output', outputUrl\n ];\n const childProcess = new ChildProcessProxy();\n await childProcess.start({\n command: 'npx',\n arguments: args,\n spawn: options\n });\n return outputUrl;\n}\n"],"file":"encode-texture.js"}
@@ -0,0 +1,61 @@
1
+ export declare const GL_EXTENSIONS_CONSTANTS: {
2
+ COMPRESSED_RGB_S3TC_DXT1_EXT: number;
3
+ COMPRESSED_RGBA_S3TC_DXT1_EXT: number;
4
+ COMPRESSED_RGBA_S3TC_DXT3_EXT: number;
5
+ COMPRESSED_RGBA_S3TC_DXT5_EXT: number;
6
+ COMPRESSED_R11_EAC: number;
7
+ COMPRESSED_SIGNED_R11_EAC: number;
8
+ COMPRESSED_RG11_EAC: number;
9
+ COMPRESSED_SIGNED_RG11_EAC: number;
10
+ COMPRESSED_RGB8_ETC2: number;
11
+ COMPRESSED_RGBA8_ETC2_EAC: number;
12
+ COMPRESSED_SRGB8_ETC2: number;
13
+ COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: number;
14
+ COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: number;
15
+ COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: number;
16
+ COMPRESSED_RGB_PVRTC_4BPPV1_IMG: number;
17
+ COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: number;
18
+ COMPRESSED_RGB_PVRTC_2BPPV1_IMG: number;
19
+ COMPRESSED_RGBA_PVRTC_2BPPV1_IMG: number;
20
+ COMPRESSED_RGB_ETC1_WEBGL: number;
21
+ COMPRESSED_RGB_ATC_WEBGL: number;
22
+ COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL: number;
23
+ COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL: number;
24
+ COMPRESSED_RGBA_ASTC_4X4_KHR: number;
25
+ COMPRESSED_RGBA_ASTC_5X4_KHR: number;
26
+ COMPRESSED_RGBA_ASTC_5X5_KHR: number;
27
+ COMPRESSED_RGBA_ASTC_6X5_KHR: number;
28
+ COMPRESSED_RGBA_ASTC_6X6_KHR: number;
29
+ COMPRESSED_RGBA_ASTC_8X5_KHR: number;
30
+ COMPRESSED_RGBA_ASTC_8X6_KHR: number;
31
+ COMPRESSED_RGBA_ASTC_8X8_KHR: number;
32
+ COMPRESSED_RGBA_ASTC_10X5_KHR: number;
33
+ COMPRESSED_RGBA_ASTC_10X6_KHR: number;
34
+ COMPRESSED_RGBA_ASTC_10X8_KHR: number;
35
+ COMPRESSED_RGBA_ASTC_10X10_KHR: number;
36
+ COMPRESSED_RGBA_ASTC_12X10_KHR: number;
37
+ COMPRESSED_RGBA_ASTC_12X12_KHR: number;
38
+ COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR: number;
39
+ COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR: number;
40
+ COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR: number;
41
+ COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR: number;
42
+ COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR: number;
43
+ COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR: number;
44
+ COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR: number;
45
+ COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR: number;
46
+ COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR: number;
47
+ COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR: number;
48
+ COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR: number;
49
+ COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR: number;
50
+ COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR: number;
51
+ COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR: number;
52
+ COMPRESSED_RED_RGTC1_EXT: number;
53
+ COMPRESSED_SIGNED_RED_RGTC1_EXT: number;
54
+ COMPRESSED_RED_GREEN_RGTC2_EXT: number;
55
+ COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT: number;
56
+ COMPRESSED_SRGB_S3TC_DXT1_EXT: number;
57
+ COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: number;
58
+ COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: number;
59
+ COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: number;
60
+ };
61
+ //# sourceMappingURL=gl-extensions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gl-extensions.d.ts","sourceRoot":"","sources":["../../src/lib/gl-extensions.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkFnC,CAAC"}
@@ -1,4 +1,4 @@
1
- export const GL = {
1
+ export const GL_EXTENSIONS_CONSTANTS = {
2
2
  COMPRESSED_RGB_S3TC_DXT1_EXT: 0x83f0,
3
3
  COMPRESSED_RGBA_S3TC_DXT1_EXT: 0x83f1,
4
4
  COMPRESSED_RGBA_S3TC_DXT3_EXT: 0x83f2,
@@ -58,4 +58,4 @@ export const GL = {
58
58
  COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: 0x8c4e,
59
59
  COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: 0x8c4f
60
60
  };
61
- //# sourceMappingURL=gl-constants.js.map
61
+ //# sourceMappingURL=gl-extensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/gl-extensions.ts"],"names":["GL_EXTENSIONS_CONSTANTS","COMPRESSED_RGB_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","COMPRESSED_R11_EAC","COMPRESSED_SIGNED_R11_EAC","COMPRESSED_RG11_EAC","COMPRESSED_SIGNED_RG11_EAC","COMPRESSED_RGB8_ETC2","COMPRESSED_RGBA8_ETC2_EAC","COMPRESSED_SRGB8_ETC2","COMPRESSED_SRGB8_ALPHA8_ETC2_EAC","COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2","COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGB_PVRTC_2BPPV1_IMG","COMPRESSED_RGBA_PVRTC_2BPPV1_IMG","COMPRESSED_RGB_ETC1_WEBGL","COMPRESSED_RGB_ATC_WEBGL","COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL","COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL","COMPRESSED_RGBA_ASTC_4X4_KHR","COMPRESSED_RGBA_ASTC_5X4_KHR","COMPRESSED_RGBA_ASTC_5X5_KHR","COMPRESSED_RGBA_ASTC_6X5_KHR","COMPRESSED_RGBA_ASTC_6X6_KHR","COMPRESSED_RGBA_ASTC_8X5_KHR","COMPRESSED_RGBA_ASTC_8X6_KHR","COMPRESSED_RGBA_ASTC_8X8_KHR","COMPRESSED_RGBA_ASTC_10X5_KHR","COMPRESSED_RGBA_ASTC_10X6_KHR","COMPRESSED_RGBA_ASTC_10X8_KHR","COMPRESSED_RGBA_ASTC_10X10_KHR","COMPRESSED_RGBA_ASTC_12X10_KHR","COMPRESSED_RGBA_ASTC_12X12_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR","COMPRESSED_RED_RGTC1_EXT","COMPRESSED_SIGNED_RED_RGTC1_EXT","COMPRESSED_RED_GREEN_RGTC2_EXT","COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT","COMPRESSED_SRGB_S3TC_DXT1_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT"],"mappings":"AACA,OAAO,MAAMA,uBAAuB,GAAG;AAGrCC,EAAAA,4BAA4B,EAAE,MAHO;AAIrCC,EAAAA,6BAA6B,EAAE,MAJM;AAKrCC,EAAAA,6BAA6B,EAAE,MALM;AAMrCC,EAAAA,6BAA6B,EAAE,MANM;AAUrCC,EAAAA,kBAAkB,EAAE,MAViB;AAWrCC,EAAAA,yBAAyB,EAAE,MAXU;AAYrCC,EAAAA,mBAAmB,EAAE,MAZgB;AAarCC,EAAAA,0BAA0B,EAAE,MAbS;AAcrCC,EAAAA,oBAAoB,EAAE,MAde;AAerCC,EAAAA,yBAAyB,EAAE,MAfU;AAgBrCC,EAAAA,qBAAqB,EAAE,MAhBc;AAiBrCC,EAAAA,gCAAgC,EAAE,MAjBG;AAkBrCC,EAAAA,wCAAwC,EAAE,MAlBL;AAmBrCC,EAAAA,yCAAyC,EAAE,MAnBN;AAuBrCC,EAAAA,+BAA+B,EAAE,MAvBI;AAwBrCC,EAAAA,gCAAgC,EAAE,MAxBG;AAyBrCC,EAAAA,+BAA+B,EAAE,MAzBI;AA0BrCC,EAAAA,gCAAgC,EAAE,MA1BG;AA8BrCC,EAAAA,yBAAyB,EAAE,MA9BU;AAkCrCC,EAAAA,wBAAwB,EAAE,MAlCW;AAmCrCC,EAAAA,wCAAwC,EAAE,MAnCL;AAoCrCC,EAAAA,4CAA4C,EAAE,MApCT;AAwCrCC,EAAAA,4BAA4B,EAAE,MAxCO;AAyCrCC,EAAAA,4BAA4B,EAAE,MAzCO;AA0CrCC,EAAAA,4BAA4B,EAAE,MA1CO;AA2CrCC,EAAAA,4BAA4B,EAAE,MA3CO;AA4CrCC,EAAAA,4BAA4B,EAAE,MA5CO;AA6CrCC,EAAAA,4BAA4B,EAAE,MA7CO;AA8CrCC,EAAAA,4BAA4B,EAAE,MA9CO;AA+CrCC,EAAAA,4BAA4B,EAAE,MA/CO;AAgDrCC,EAAAA,6BAA6B,EAAE,MAhDM;AAiDrCC,EAAAA,6BAA6B,EAAE,MAjDM;AAkDrCC,EAAAA,6BAA6B,EAAE,MAlDM;AAmDrCC,EAAAA,8BAA8B,EAAE,MAnDK;AAoDrCC,EAAAA,8BAA8B,EAAE,MApDK;AAqDrCC,EAAAA,8BAA8B,EAAE,MArDK;AAsDrCC,EAAAA,oCAAoC,EAAE,MAtDD;AAuDrCC,EAAAA,oCAAoC,EAAE,MAvDD;AAwDrCC,EAAAA,oCAAoC,EAAE,MAxDD;AAyDrCC,EAAAA,oCAAoC,EAAE,MAzDD;AA0DrCC,EAAAA,oCAAoC,EAAE,MA1DD;AA2DrCC,EAAAA,oCAAoC,EAAE,MA3DD;AA4DrCC,EAAAA,oCAAoC,EAAE,MA5DD;AA6DrCC,EAAAA,oCAAoC,EAAE,MA7DD;AA8DrCC,EAAAA,qCAAqC,EAAE,MA9DF;AA+DrCC,EAAAA,qCAAqC,EAAE,MA/DF;AAgErCC,EAAAA,qCAAqC,EAAE,MAhEF;AAiErCC,EAAAA,sCAAsC,EAAE,MAjEH;AAkErCC,EAAAA,sCAAsC,EAAE,MAlEH;AAmErCC,EAAAA,sCAAsC,EAAE,MAnEH;AAuErCC,EAAAA,wBAAwB,EAAE,MAvEW;AAwErCC,EAAAA,+BAA+B,EAAE,MAxEI;AAyErCC,EAAAA,8BAA8B,EAAE,MAzEK;AA0ErCC,EAAAA,qCAAqC,EAAE,MA1EF;AA8ErCC,EAAAA,6BAA6B,EAAE,MA9EM;AA+ErCC,EAAAA,mCAAmC,EAAE,MA/EA;AAgFrCC,EAAAA,mCAAmC,EAAE,MAhFA;AAiFrCC,EAAAA,mCAAmC,EAAE;AAjFA,CAAhC","sourcesContent":["/* eslint-disable camelcase */\nexport const GL_EXTENSIONS_CONSTANTS = {\n // WEBGL_compressed_texture_s3tc\n\n COMPRESSED_RGB_S3TC_DXT1_EXT: 0x83f0,\n COMPRESSED_RGBA_S3TC_DXT1_EXT: 0x83f1,\n COMPRESSED_RGBA_S3TC_DXT3_EXT: 0x83f2,\n COMPRESSED_RGBA_S3TC_DXT5_EXT: 0x83f3,\n\n // WEBGL_compressed_texture_es3\n\n COMPRESSED_R11_EAC: 0x9270,\n COMPRESSED_SIGNED_R11_EAC: 0x9271,\n COMPRESSED_RG11_EAC: 0x9272,\n COMPRESSED_SIGNED_RG11_EAC: 0x9273,\n COMPRESSED_RGB8_ETC2: 0x9274,\n COMPRESSED_RGBA8_ETC2_EAC: 0x9275,\n COMPRESSED_SRGB8_ETC2: 0x9276,\n COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: 0x9277,\n COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: 0x9278,\n COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: 0x9279,\n\n // WEBGL_compressed_texture_pvrtc\n\n COMPRESSED_RGB_PVRTC_4BPPV1_IMG: 0x8c00,\n COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: 0x8c02,\n COMPRESSED_RGB_PVRTC_2BPPV1_IMG: 0x8c01,\n COMPRESSED_RGBA_PVRTC_2BPPV1_IMG: 0x8c03,\n\n // WEBGL_compressed_texture_etc1\n\n COMPRESSED_RGB_ETC1_WEBGL: 0x8d64,\n\n // WEBGL_compressed_texture_atc\n\n COMPRESSED_RGB_ATC_WEBGL: 0x8c92,\n COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL: 0x8c93,\n COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL: 0x87ee,\n\n // WEBGL_compressed_texture_astc\n\n COMPRESSED_RGBA_ASTC_4X4_KHR: 0x93b0,\n COMPRESSED_RGBA_ASTC_5X4_KHR: 0x93b1,\n COMPRESSED_RGBA_ASTC_5X5_KHR: 0x93b2,\n COMPRESSED_RGBA_ASTC_6X5_KHR: 0x93b3,\n COMPRESSED_RGBA_ASTC_6X6_KHR: 0x93b4,\n COMPRESSED_RGBA_ASTC_8X5_KHR: 0x93b5,\n COMPRESSED_RGBA_ASTC_8X6_KHR: 0x93b6,\n COMPRESSED_RGBA_ASTC_8X8_KHR: 0x93b7,\n COMPRESSED_RGBA_ASTC_10X5_KHR: 0x93b8,\n COMPRESSED_RGBA_ASTC_10X6_KHR: 0x93b9,\n COMPRESSED_RGBA_ASTC_10X8_KHR: 0x93ba,\n COMPRESSED_RGBA_ASTC_10X10_KHR: 0x93bb,\n COMPRESSED_RGBA_ASTC_12X10_KHR: 0x93bc,\n COMPRESSED_RGBA_ASTC_12X12_KHR: 0x93bd,\n COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR: 0x93d0,\n COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR: 0x93d1,\n COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR: 0x93d2,\n COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR: 0x93d3,\n COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR: 0x93d4,\n COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR: 0x93d5,\n COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR: 0x93d6,\n COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR: 0x93d7,\n COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR: 0x93d8,\n COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR: 0x93d9,\n COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR: 0x93da,\n COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR: 0x93db,\n COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR: 0x93dc,\n COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR: 0x93dd,\n\n // EXT_texture_compression_rgtc\n\n COMPRESSED_RED_RGTC1_EXT: 0x8dbb,\n COMPRESSED_SIGNED_RED_RGTC1_EXT: 0x8dbc,\n COMPRESSED_RED_GREEN_RGTC2_EXT: 0x8dbd,\n COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT: 0x8dbe,\n\n // WEBGL_compressed_texture_s3tc_srgb\n\n COMPRESSED_SRGB_S3TC_DXT1_EXT: 0x8c4c,\n COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: 0x8c4d,\n COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: 0x8c4e,\n COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: 0x8c4f\n};\n"],"file":"gl-extensions.js"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Loads wasm transcoder module
3
+ * @param options
4
+ * @returns {BasisFile} promise
5
+ */
6
+ export declare function loadBasisTrascoderModule(options: any): Promise<any>;
7
+ /**
8
+ * Loads wasm encoder module
9
+ * @param options
10
+ * @returns {BasisFile, KTX2File} promise
11
+ */
12
+ export declare function loadBasisEncoderModule(options: any): Promise<any>;
13
+ //# sourceMappingURL=basis-module-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"basis-module-loader.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/basis-module-loader.ts"],"names":[],"mappings":"AAYA;;;;GAIG;AACH,wBAAsB,wBAAwB,CAAC,OAAO,KAAA,gBAQrD;AA+CD;;;;GAIG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,KAAA,gBAQnD"}
@@ -1,4 +1,4 @@
1
- const VERSION = typeof "4.0.0-alpha.4" !== 'undefined' ? "4.0.0-alpha.4" : 'beta';
1
+ const VERSION = typeof "4.0.0-alpha.5" !== 'undefined' ? "4.0.0-alpha.5" : 'beta';
2
2
  import { loadLibrary } from '@loaders.gl/worker-utils';
3
3
  const BASIS_CDN_ENCODER_WASM = "https://unpkg.com/@loaders.gl/textures@".concat(VERSION, "/dist/libs/basis_encoder.wasm");
4
4
  const BASIS_CDN_ENCODER_JS = "https://unpkg.com/@loaders.gl/textures@".concat(VERSION, "/dist/libs/basis_encoder.js");
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Load crunch decoder module
3
+ * @param options - loader options
4
+ * @returns Promise of module object
5
+ */
6
+ export declare function loadCrunchModule(options: any): Promise<any>;
7
+ //# sourceMappingURL=crunch-module-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crunch-module-loader.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/crunch-module-loader.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,KAAA,GAAG,OAAO,CAAC,GAAG,CAAC,CAO5D"}
@@ -16,7 +16,7 @@ async function loadCrunch(options) {
16
16
  }
17
17
 
18
18
  let loadCrunchDecoder = await loadLibrary('crunch.js', 'textures', options);
19
- loadCrunchDecoder = loadCrunchDecoder || globalThis.loadCrunchDecoder;
19
+ loadCrunchDecoder = loadCrunchDecoder || globalThis.LoadCrunchDecoder;
20
20
  crunchModule = loadCrunchDecoder();
21
21
  return crunchModule;
22
22
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/parsers/crunch-module-loader.ts"],"names":["loadLibrary","loadCrunchModule","options","modules","crunch","loadCrunch","crunchModule","loadCrunchDecoder","globalThis"],"mappings":"AACA,SAAQA,WAAR,QAA0B,0BAA1B;AAOA,OAAO,eAAeC,gBAAf,CAAgCC,OAAhC,EAAuD;AAC5D,QAAMC,OAAO,GAAGD,OAAO,CAACC,OAAR,IAAmB,EAAnC;;AACA,MAAIA,OAAO,CAACC,MAAZ,EAAoB;AAClB,WAAOD,OAAO,CAACC,MAAf;AACD;;AAED,SAAOC,UAAU,CAACH,OAAD,CAAjB;AACD;AAED,IAAII,YAAJ;;AAOA,eAAeD,UAAf,CAA0BH,OAA1B,EAAmC;AACjC,MAAII,YAAJ,EAAkB;AAChB,WAAOA,YAAP;AACD;;AAED,MAAIC,iBAAiB,GAAG,MAAMP,WAAW,CAAC,WAAD,EAAc,UAAd,EAA0BE,OAA1B,CAAzC;AAIAK,EAAAA,iBAAiB,GAAGA,iBAAiB,IAAIC,UAAU,CAACD,iBAApD;AACAD,EAAAA,YAAY,GAAGC,iBAAiB,EAAhC;AACA,SAAOD,YAAP;AACD","sourcesContent":["// @ts-nocheck\nimport {loadLibrary} from '@loaders.gl/worker-utils';\n\n/**\n * Load crunch decoder module\n * @param options - loader options\n * @returns Promise of module object\n */\nexport async function loadCrunchModule(options): Promise<any> {\n const modules = options.modules || {};\n if (modules.crunch) {\n return modules.crunch;\n }\n\n return loadCrunch(options);\n}\n\nlet crunchModule;\n\n/**\n * Load crunch decoder module\n * @param {any} options - Loader options\n * @returns {Promise<any>} Promise of Module object\n */\nasync function loadCrunch(options) {\n if (crunchModule) {\n return crunchModule;\n }\n\n let loadCrunchDecoder = await loadLibrary('crunch.js', 'textures', options);\n\n // Depends on how import happened...\n // @ts-ignore TS2339: Property does not exist on type\n loadCrunchDecoder = loadCrunchDecoder || globalThis.loadCrunchDecoder;\n crunchModule = loadCrunchDecoder();\n return crunchModule;\n}\n"],"file":"crunch-module-loader.js"}
1
+ {"version":3,"sources":["../../../src/lib/parsers/crunch-module-loader.ts"],"names":["loadLibrary","loadCrunchModule","options","modules","crunch","loadCrunch","crunchModule","loadCrunchDecoder","globalThis","LoadCrunchDecoder"],"mappings":"AACA,SAAQA,WAAR,QAA0B,0BAA1B;AAOA,OAAO,eAAeC,gBAAf,CAAgCC,OAAhC,EAAuD;AAC5D,QAAMC,OAAO,GAAGD,OAAO,CAACC,OAAR,IAAmB,EAAnC;;AACA,MAAIA,OAAO,CAACC,MAAZ,EAAoB;AAClB,WAAOD,OAAO,CAACC,MAAf;AACD;;AAED,SAAOC,UAAU,CAACH,OAAD,CAAjB;AACD;AAED,IAAII,YAAJ;;AAOA,eAAeD,UAAf,CAA0BH,OAA1B,EAAmC;AACjC,MAAII,YAAJ,EAAkB;AAChB,WAAOA,YAAP;AACD;;AAED,MAAIC,iBAAiB,GAAG,MAAMP,WAAW,CAAC,WAAD,EAAc,UAAd,EAA0BE,OAA1B,CAAzC;AAIAK,EAAAA,iBAAiB,GAAGA,iBAAiB,IAAIC,UAAU,CAACC,iBAApD;AACAH,EAAAA,YAAY,GAAGC,iBAAiB,EAAhC;AACA,SAAOD,YAAP;AACD","sourcesContent":["// @ts-nocheck\nimport {loadLibrary} from '@loaders.gl/worker-utils';\n\n/**\n * Load crunch decoder module\n * @param options - loader options\n * @returns Promise of module object\n */\nexport async function loadCrunchModule(options): Promise<any> {\n const modules = options.modules || {};\n if (modules.crunch) {\n return modules.crunch;\n }\n\n return loadCrunch(options);\n}\n\nlet crunchModule;\n\n/**\n * Load crunch decoder module\n * @param {any} options - Loader options\n * @returns {Promise<any>} Promise of Module object\n */\nasync function loadCrunch(options) {\n if (crunchModule) {\n return crunchModule;\n }\n\n let loadCrunchDecoder = await loadLibrary('crunch.js', 'textures', options);\n\n // Depends on how import happened...\n // @ts-ignore TS2339: Property does not exist on type\n loadCrunchDecoder = loadCrunchDecoder || globalThis.LoadCrunchDecoder;\n crunchModule = loadCrunchDecoder();\n return crunchModule;\n}\n"],"file":"crunch-module-loader.js"}
@@ -0,0 +1,18 @@
1
+ import type { TextureLevel } from '@loaders.gl/schema';
2
+ export declare 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';
3
+ /**
4
+ * parse data with a Binomial Basis_Universal module
5
+ * @param data
6
+ * @param options
7
+ * @returns compressed texture data
8
+ */
9
+ export default function parseBasis(data: ArrayBuffer, options: any): Promise<TextureLevel[][]>;
10
+ /**
11
+ * Select transcode format from the list of supported formats
12
+ * @returns key for OutputFormat map
13
+ */
14
+ export declare function selectSupportedBasisFormat(): BasisFormat | {
15
+ alpha: BasisFormat;
16
+ noAlpha: BasisFormat;
17
+ };
18
+ //# sourceMappingURL=parse-basis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-basis.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-basis.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAMrD,oBAAY,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,wBAA8B,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,KAAA,GAAG,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAwB9F;AA8KD;;;GAGG;AACH,wBAAgB,0BAA0B,IACtC,WAAW,GACX;IACE,KAAK,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,WAAW,CAAC;CACtB,CAoBJ"}
@@ -1,12 +1,12 @@
1
1
  import { loadBasisEncoderModule, loadBasisTrascoderModule } from './basis-module-loader';
2
- import { GL } from '../gl-constants';
3
- import { getSupportedGPUTextureFormats } from '../..';
2
+ import { GL_EXTENSIONS_CONSTANTS } from '../gl-extensions';
3
+ import { getSupportedGPUTextureFormats } from '../utils/texture-formats';
4
4
  import { isKTX } from './parse-ktx';
5
5
  const OutputFormat = {
6
6
  etc1: {
7
7
  basisFormat: 0,
8
8
  compressed: true,
9
- format: GL.COMPRESSED_RGB_ETC1_WEBGL
9
+ format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ETC1_WEBGL
10
10
  },
11
11
  etc2: {
12
12
  basisFormat: 1,
@@ -15,12 +15,12 @@ const OutputFormat = {
15
15
  bc1: {
16
16
  basisFormat: 2,
17
17
  compressed: true,
18
- format: GL.COMPRESSED_RGB_S3TC_DXT1_EXT
18
+ format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT
19
19
  },
20
20
  bc3: {
21
21
  basisFormat: 3,
22
22
  compressed: true,
23
- format: GL.COMPRESSED_RGBA_S3TC_DXT5_EXT
23
+ format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT
24
24
  },
25
25
  bc4: {
26
26
  basisFormat: 4,
@@ -41,17 +41,17 @@ const OutputFormat = {
41
41
  'pvrtc1-4-rgb': {
42
42
  basisFormat: 8,
43
43
  compressed: true,
44
- format: GL.COMPRESSED_RGB_PVRTC_4BPPV1_IMG
44
+ format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_4BPPV1_IMG
45
45
  },
46
46
  'pvrtc1-4-rgba': {
47
47
  basisFormat: 9,
48
48
  compressed: true,
49
- format: GL.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG
49
+ format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG
50
50
  },
51
51
  'astc-4x4': {
52
52
  basisFormat: 10,
53
53
  compressed: true,
54
- format: GL.COMPRESSED_RGBA_ASTC_4X4_KHR
54
+ format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR
55
55
  },
56
56
  'atc-rgb': {
57
57
  basisFormat: 11,
@@ -118,7 +118,7 @@ function parseBasisFile(BasisFile, data, options) {
118
118
 
119
119
  try {
120
120
  if (!basisFile.startTranscoding()) {
121
- return null;
121
+ throw new Error('Failed to start basis transcoding');
122
122
  }
123
123
 
124
124
  const imageCount = basisFile.getNumImages();
@@ -155,7 +155,7 @@ function transcodeImage(basisFile, imageIndex, levelIndex, options) {
155
155
  const decodedData = new Uint8Array(decodedSize);
156
156
 
157
157
  if (!basisFile.transcodeImage(decodedData, imageIndex, levelIndex, basisFormat, 0, 0)) {
158
- return null;
158
+ throw new Error('failed to start Basis transcoding');
159
159
  }
160
160
 
161
161
  return {
@@ -163,8 +163,8 @@ function transcodeImage(basisFile, imageIndex, levelIndex, options) {
163
163
  height,
164
164
  data: decodedData,
165
165
  compressed,
166
- hasAlpha,
167
- format
166
+ format,
167
+ hasAlpha
168
168
  };
169
169
  }
170
170
 
@@ -173,7 +173,7 @@ function parseKTX2File(KTX2File, data, options) {
173
173
 
174
174
  try {
175
175
  if (!ktx2File.startTranscoding()) {
176
- return null;
176
+ throw new Error('failed to start KTX2 transcoding');
177
177
  }
178
178
 
179
179
  const levelsCount = ktx2File.getLevels();
@@ -184,7 +184,7 @@ function parseKTX2File(KTX2File, data, options) {
184
184
  break;
185
185
  }
186
186
 
187
- return levels;
187
+ return [levels];
188
188
  } finally {
189
189
  ktx2File.close();
190
190
  ktx2File.delete();
@@ -206,7 +206,7 @@ function transcodeKTX2Image(ktx2File, levelIndex, options) {
206
206
  const decodedData = new Uint8Array(decodedSize);
207
207
 
208
208
  if (!ktx2File.transcodeImage(decodedData, levelIndex, 0, 0, basisFormat, 0, -1, -1)) {
209
- return null;
209
+ throw new Error('Failed to transcode KTX2 image');
210
210
  }
211
211
 
212
212
  return {
@@ -214,7 +214,7 @@ function transcodeKTX2Image(ktx2File, levelIndex, options) {
214
214
  height,
215
215
  data: decodedData,
216
216
  compressed,
217
- alphaFlag,
217
+ hasAlpha: alphaFlag,
218
218
  format
219
219
  };
220
220
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/parsers/parse-basis.js"],"names":["loadBasisEncoderModule","loadBasisTrascoderModule","GL","getSupportedGPUTextureFormats","isKTX","OutputFormat","etc1","basisFormat","compressed","format","COMPRESSED_RGB_ETC1_WEBGL","etc2","bc1","COMPRESSED_RGB_S3TC_DXT1_EXT","bc3","COMPRESSED_RGBA_S3TC_DXT5_EXT","bc4","bc5","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_ASTC_4X4_KHR","rgba32","rgb565","bgr565","rgba4444","parseBasis","data","options","basis","containerFormat","fileConstructors","parseKTX2File","KTX2File","BasisFile","parseBasisFile","module","basisFile","Uint8Array","startTranscoding","imageCount","getNumImages","images","imageIndex","levelsCount","getNumLevels","levels","levelIndex","push","transcodeImage","close","delete","width","getImageWidth","height","getImageHeight","hasAlpha","getHasAlpha","getBasisOptions","decodedSize","getImageTranscodedSizeInBytes","decodedData","ktx2File","getLevels","transcodeKTX2Image","alphaFlag","getImageLevelInfo","selectSupportedBasisFormat","alpha","noAlpha","toLowerCase","supportedFormats","has"],"mappings":"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","sourcesContent":["import {loadBasisEncoderModule, loadBasisTrascoderModule} from './basis-module-loader';\nimport {GL} from '../gl-constants';\nimport {getSupportedGPUTextureFormats} from '../..';\nimport {isKTX} from './parse-ktx';\n\nconst OutputFormat = {\n etc1: {basisFormat: 0, compressed: true, format: GL.COMPRESSED_RGB_ETC1_WEBGL},\n etc2: {basisFormat: 1, compressed: true},\n bc1: {basisFormat: 2, compressed: true, format: GL.COMPRESSED_RGB_S3TC_DXT1_EXT},\n bc3: {basisFormat: 3, compressed: true, format: GL.COMPRESSED_RGBA_S3TC_DXT5_EXT},\n bc4: {basisFormat: 4, compressed: true},\n bc5: {basisFormat: 5, compressed: true},\n 'bc7-m6-opaque-only': {basisFormat: 6, compressed: true},\n 'bc7-m5': {basisFormat: 7, compressed: true},\n 'pvrtc1-4-rgb': {basisFormat: 8, compressed: true, format: GL.COMPRESSED_RGB_PVRTC_4BPPV1_IMG},\n 'pvrtc1-4-rgba': {basisFormat: 9, compressed: true, format: GL.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG},\n 'astc-4x4': {basisFormat: 10, compressed: true, format: GL.COMPRESSED_RGBA_ASTC_4X4_KHR},\n 'atc-rgb': {basisFormat: 11, compressed: true},\n 'atc-rgba-interpolated-alpha': {basisFormat: 12, compressed: true},\n rgba32: {basisFormat: 13, compressed: false},\n rgb565: {basisFormat: 14, compressed: false},\n bgr565: {basisFormat: 15, compressed: false},\n rgba4444: {basisFormat: 16, compressed: false}\n};\n\n/**\n * parse data with a Binomial Basis_Universal module\n * @param {ArrayBuffer} data\n * @param {*} options\n * @returns compressed texture data\n */\nexport default async function parseBasis(data, options) {\n if (options.basis.containerFormat === 'auto') {\n if (isKTX(data)) {\n const fileConstructors = await loadBasisEncoderModule(options);\n return parseKTX2File(fileConstructors.KTX2File, data, options);\n }\n const {BasisFile} = await loadBasisTrascoderModule(options);\n return parseBasisFile(BasisFile, data, options);\n }\n switch (options.basis.module) {\n case 'encoder':\n const fileConstructors = await loadBasisEncoderModule(options);\n switch (options.basis.containerFormat) {\n case 'ktx2':\n return parseKTX2File(fileConstructors.KTX2File, data, options);\n case 'basis':\n default:\n return parseBasisFile(fileConstructors.BasisFile, data, options);\n }\n case 'transcoder':\n default:\n const {BasisFile} = await loadBasisTrascoderModule(options);\n return parseBasisFile(BasisFile, data, options);\n }\n}\n\n/**\n * Parse *.basis file data\n * @param {*} BasisFile - initialized transcoder module\n * @param {*} data\n * @param {*} options\n * @returns compressed texture data\n */\nfunction parseBasisFile(BasisFile, data, options) {\n const basisFile = new BasisFile(new Uint8Array(data));\n\n try {\n if (!basisFile.startTranscoding()) {\n return null;\n }\n\n const imageCount = basisFile.getNumImages();\n const images = [];\n\n for (let imageIndex = 0; imageIndex < imageCount; imageIndex++) {\n const levelsCount = basisFile.getNumLevels(imageIndex);\n const levels = [];\n\n for (let levelIndex = 0; levelIndex < levelsCount; levelIndex++) {\n levels.push(transcodeImage(basisFile, imageIndex, levelIndex, options));\n }\n\n images.push(levels);\n }\n\n return images;\n } finally {\n basisFile.close();\n basisFile.delete();\n }\n}\n\n/**\n * Parse the particular level image of a basis file\n * @param {*} basisFile\n * @param {*} imageIndex\n * @param {*} levelIndex\n * @param {*} options\n * @returns compressed texture data\n */\nfunction transcodeImage(basisFile, imageIndex, levelIndex, options) {\n const width = basisFile.getImageWidth(imageIndex, levelIndex);\n const height = basisFile.getImageHeight(imageIndex, levelIndex);\n\n // See https://github.com/BinomialLLC/basis_universal/pull/83\n const hasAlpha = basisFile.getHasAlpha(/* imageIndex, levelIndex */);\n\n // Check options for output format etc\n const {compressed, format, basisFormat} = getBasisOptions(options, hasAlpha);\n\n const decodedSize = basisFile.getImageTranscodedSizeInBytes(imageIndex, levelIndex, basisFormat);\n const decodedData = new Uint8Array(decodedSize);\n\n if (!basisFile.transcodeImage(decodedData, imageIndex, levelIndex, basisFormat, 0, 0)) {\n return null;\n }\n\n return {\n // standard loaders.gl image category payload\n width,\n height,\n data: decodedData,\n compressed,\n\n // Additional fields\n // Add levelSize field.\n hasAlpha,\n format\n };\n}\n\n/**\n * Parse *.ktx2 file data\n * @param {*} KTX2File\n * @param {*} data\n * @param {*} options\n * @returns compressed texture data\n */\nfunction parseKTX2File(KTX2File, data, options) {\n const ktx2File = new KTX2File(new Uint8Array(data));\n\n try {\n if (!ktx2File.startTranscoding()) {\n return null;\n }\n const levelsCount = ktx2File.getLevels();\n const levels = [];\n\n for (let levelIndex = 0; levelIndex < levelsCount; levelIndex++) {\n levels.push(transcodeKTX2Image(ktx2File, levelIndex, options));\n break; // texture app can only show one level for some reason\n }\n\n return levels;\n } finally {\n ktx2File.close();\n ktx2File.delete();\n }\n}\n\n/**\n * Parse the particular level image of a ktx2 file\n * @param {*} ktx2File\n * @param {*} levelIndex\n * @param {*} options\n * @returns\n */\nfunction transcodeKTX2Image(ktx2File, levelIndex, options) {\n const {alphaFlag, height, width} = ktx2File.getImageLevelInfo(levelIndex, 0, 0);\n\n // Check options for output format etc\n const {compressed, format, basisFormat} = getBasisOptions(options, alphaFlag);\n\n const decodedSize = ktx2File.getImageTranscodedSizeInBytes(\n levelIndex,\n 0 /* layerIndex */,\n 0 /* faceIndex */,\n basisFormat\n );\n const decodedData = new Uint8Array(decodedSize);\n\n if (\n !ktx2File.transcodeImage(\n decodedData,\n levelIndex,\n 0 /* layerIndex */,\n 0 /* faceIndex */,\n basisFormat,\n 0,\n -1 /* channel0 */,\n -1 /* channel1 */\n )\n ) {\n return null;\n }\n\n return {\n // standard loaders.gl image category payload\n width,\n height,\n data: decodedData,\n compressed,\n\n // Additional fields\n // Add levelSize field.\n alphaFlag,\n format\n };\n}\n\n/**\n * Get BasisFormat by loader format option\n * @param {*} options\n * @param {*} hasAlpha\n * @returns BasisFormat data\n */\nfunction getBasisOptions(options, hasAlpha) {\n let format = options && options.basis && options.basis.format;\n if (format === 'auto') {\n format = selectSupportedBasisFormat();\n }\n if (typeof format === 'object') {\n format = hasAlpha ? format.alpha : format.noAlpha;\n }\n format = format.toLowerCase();\n return OutputFormat[format];\n}\n\n/**\n * Select transcode format from the list of supported formats\n * @returns key for OutputFormat map\n */\nexport function selectSupportedBasisFormat() {\n const supportedFormats = getSupportedGPUTextureFormats();\n if (supportedFormats.has('astc')) {\n return 'astc-4x4';\n } else if (supportedFormats.has('dxt')) {\n return {\n alpha: 'bc3',\n noAlpha: 'bc1'\n };\n } else if (supportedFormats.has('pvrtc')) {\n return {\n alpha: 'pvrtc1-4-rgba',\n noAlpha: 'pvrtc1-4-rgb'\n };\n } else if (supportedFormats.has('etc1')) {\n return 'etc1';\n } else if (supportedFormats.has('etc2')) {\n return 'etc2';\n }\n return 'rgb565';\n}\n"],"file":"parse-basis.js"}
1
+ {"version":3,"sources":["../../../src/lib/parsers/parse-basis.ts"],"names":["loadBasisEncoderModule","loadBasisTrascoderModule","GL_EXTENSIONS_CONSTANTS","getSupportedGPUTextureFormats","isKTX","OutputFormat","etc1","basisFormat","compressed","format","COMPRESSED_RGB_ETC1_WEBGL","etc2","bc1","COMPRESSED_RGB_S3TC_DXT1_EXT","bc3","COMPRESSED_RGBA_S3TC_DXT5_EXT","bc4","bc5","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_ASTC_4X4_KHR","rgba32","rgb565","bgr565","rgba4444","parseBasis","data","options","basis","containerFormat","fileConstructors","parseKTX2File","KTX2File","BasisFile","parseBasisFile","module","basisFile","Uint8Array","startTranscoding","Error","imageCount","getNumImages","images","imageIndex","levelsCount","getNumLevels","levels","levelIndex","push","transcodeImage","close","delete","width","getImageWidth","height","getImageHeight","hasAlpha","getHasAlpha","getBasisOptions","decodedSize","getImageTranscodedSizeInBytes","decodedData","ktx2File","getLevels","transcodeKTX2Image","alphaFlag","getImageLevelInfo","selectSupportedBasisFormat","alpha","noAlpha","toLowerCase","supportedFormats","has"],"mappings":"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","sourcesContent":["/* eslint-disable indent */\nimport type {TextureLevel} from '@loaders.gl/schema';\nimport {loadBasisEncoderModule, loadBasisTrascoderModule} from './basis-module-loader';\nimport {GL_EXTENSIONS_CONSTANTS} from '../gl-extensions';\nimport {getSupportedGPUTextureFormats} from '../utils/texture-formats';\nimport {isKTX} from './parse-ktx';\n\nexport type BasisFormat =\n | 'etc1'\n | 'etc2'\n | 'bc1'\n | 'bc3'\n | 'bc4'\n | 'bc5'\n | 'bc7-m6-opaque-only'\n | 'bc7-m5'\n | 'pvrtc1-4-rgb'\n | 'pvrtc1-4-rgba'\n | 'astc-4x4'\n | 'atc-rgb'\n | 'atc-rgba-interpolated-alpha'\n | 'rgba32'\n | 'rgb565'\n | 'bgr565'\n | 'rgba4444';\n\ntype BasisOutputOptions = {\n basisFormat: number;\n compressed: boolean;\n format?: number;\n};\n\nconst OutputFormat: Record<string, BasisOutputOptions> = {\n etc1: {\n basisFormat: 0,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ETC1_WEBGL\n },\n etc2: {basisFormat: 1, compressed: true},\n bc1: {\n basisFormat: 2,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT\n },\n bc3: {\n basisFormat: 3,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT\n },\n bc4: {basisFormat: 4, compressed: true},\n bc5: {basisFormat: 5, compressed: true},\n 'bc7-m6-opaque-only': {basisFormat: 6, compressed: true},\n 'bc7-m5': {basisFormat: 7, compressed: true},\n 'pvrtc1-4-rgb': {\n basisFormat: 8,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_4BPPV1_IMG\n },\n 'pvrtc1-4-rgba': {\n basisFormat: 9,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG\n },\n 'astc-4x4': {\n basisFormat: 10,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR\n },\n 'atc-rgb': {basisFormat: 11, compressed: true},\n 'atc-rgba-interpolated-alpha': {basisFormat: 12, compressed: true},\n rgba32: {basisFormat: 13, compressed: false},\n rgb565: {basisFormat: 14, compressed: false},\n bgr565: {basisFormat: 15, compressed: false},\n rgba4444: {basisFormat: 16, compressed: false}\n};\n\n/**\n * parse data with a Binomial Basis_Universal module\n * @param data\n * @param options\n * @returns compressed texture data\n */\nexport default async function parseBasis(data: ArrayBuffer, options): Promise<TextureLevel[][]> {\n if (options.basis.containerFormat === 'auto') {\n if (isKTX(data)) {\n const fileConstructors = await loadBasisEncoderModule(options);\n return parseKTX2File(fileConstructors.KTX2File, data, options);\n }\n const {BasisFile} = await loadBasisTrascoderModule(options);\n return parseBasisFile(BasisFile, data, options);\n }\n switch (options.basis.module) {\n case 'encoder':\n const fileConstructors = await loadBasisEncoderModule(options);\n switch (options.basis.containerFormat) {\n case 'ktx2':\n return parseKTX2File(fileConstructors.KTX2File, data, options);\n case 'basis':\n default:\n return parseBasisFile(fileConstructors.BasisFile, data, options);\n }\n case 'transcoder':\n default:\n const {BasisFile} = await loadBasisTrascoderModule(options);\n return parseBasisFile(BasisFile, data, options);\n }\n}\n\n/**\n * Parse *.basis file data\n * @param BasisFile - initialized transcoder module\n * @param data\n * @param options\n * @returns compressed texture data\n */\nfunction parseBasisFile(BasisFile, data, options): TextureLevel[][] {\n const basisFile = new BasisFile(new Uint8Array(data));\n\n try {\n if (!basisFile.startTranscoding()) {\n throw new Error('Failed to start basis transcoding');\n }\n\n const imageCount = basisFile.getNumImages();\n const images: TextureLevel[][] = [];\n\n for (let imageIndex = 0; imageIndex < imageCount; imageIndex++) {\n const levelsCount = basisFile.getNumLevels(imageIndex);\n const levels: TextureLevel[] = [];\n\n for (let levelIndex = 0; levelIndex < levelsCount; levelIndex++) {\n levels.push(transcodeImage(basisFile, imageIndex, levelIndex, options));\n }\n\n images.push(levels);\n }\n\n return images;\n } finally {\n basisFile.close();\n basisFile.delete();\n }\n}\n\n/**\n * Parse the particular level image of a basis file\n * @param basisFile\n * @param imageIndex\n * @param levelIndex\n * @param options\n * @returns compressed texture data\n */\nfunction transcodeImage(basisFile, imageIndex, levelIndex, options): TextureLevel {\n const width = basisFile.getImageWidth(imageIndex, levelIndex);\n const height = basisFile.getImageHeight(imageIndex, levelIndex);\n\n // See https://github.com/BinomialLLC/basis_universal/pull/83\n const hasAlpha = basisFile.getHasAlpha(/* imageIndex, levelIndex */);\n\n // Check options for output format etc\n const {compressed, format, basisFormat} = getBasisOptions(options, hasAlpha);\n\n const decodedSize = basisFile.getImageTranscodedSizeInBytes(imageIndex, levelIndex, basisFormat);\n const decodedData = new Uint8Array(decodedSize);\n\n if (!basisFile.transcodeImage(decodedData, imageIndex, levelIndex, basisFormat, 0, 0)) {\n throw new Error('failed to start Basis transcoding');\n }\n\n return {\n // standard loaders.gl image category payload\n width,\n height,\n data: decodedData,\n compressed,\n format,\n\n // Additional fields\n // Add levelSize field.\n hasAlpha\n };\n}\n\n/**\n * Parse *.ktx2 file data\n * @param KTX2File\n * @param data\n * @param options\n * @returns compressed texture data\n */\nfunction parseKTX2File(KTX2File, data: ArrayBuffer, options): TextureLevel[][] {\n const ktx2File = new KTX2File(new Uint8Array(data));\n\n try {\n if (!ktx2File.startTranscoding()) {\n throw new Error('failed to start KTX2 transcoding');\n }\n const levelsCount = ktx2File.getLevels();\n const levels: TextureLevel[] = [];\n\n for (let levelIndex = 0; levelIndex < levelsCount; levelIndex++) {\n levels.push(transcodeKTX2Image(ktx2File, levelIndex, options));\n break; // texture app can only show one level for some reason\n }\n\n return [levels];\n } finally {\n ktx2File.close();\n ktx2File.delete();\n }\n}\n\n/**\n * Parse the particular level image of a ktx2 file\n * @param ktx2File\n * @param levelIndex\n * @param options\n * @returns\n */\nfunction transcodeKTX2Image(ktx2File, levelIndex: number, options): TextureLevel {\n const {alphaFlag, height, width} = ktx2File.getImageLevelInfo(levelIndex, 0, 0);\n\n // Check options for output format etc\n const {compressed, format, basisFormat} = getBasisOptions(options, alphaFlag);\n\n const decodedSize = ktx2File.getImageTranscodedSizeInBytes(\n levelIndex,\n 0 /* layerIndex */,\n 0 /* faceIndex */,\n basisFormat\n );\n const decodedData = new Uint8Array(decodedSize);\n\n if (\n !ktx2File.transcodeImage(\n decodedData,\n levelIndex,\n 0 /* layerIndex */,\n 0 /* faceIndex */,\n basisFormat,\n 0,\n -1 /* channel0 */,\n -1 /* channel1 */\n )\n ) {\n throw new Error('Failed to transcode KTX2 image');\n }\n\n return {\n // standard loaders.gl image category payload\n width,\n height,\n data: decodedData,\n compressed,\n\n // Additional fields\n // Add levelSize field.\n hasAlpha: alphaFlag,\n format\n };\n}\n\n/**\n * Get BasisFormat by loader format option\n * @param options\n * @param hasAlpha\n * @returns BasisFormat data\n */\nfunction getBasisOptions(options, hasAlpha: boolean): BasisOutputOptions {\n let format = options && options.basis && options.basis.format;\n if (format === 'auto') {\n format = selectSupportedBasisFormat();\n }\n if (typeof format === 'object') {\n format = hasAlpha ? format.alpha : format.noAlpha;\n }\n format = format.toLowerCase();\n return OutputFormat[format];\n}\n\n/**\n * Select transcode format from the list of supported formats\n * @returns key for OutputFormat map\n */\nexport function selectSupportedBasisFormat():\n | BasisFormat\n | {\n alpha: BasisFormat;\n noAlpha: BasisFormat;\n } {\n const supportedFormats = getSupportedGPUTextureFormats();\n if (supportedFormats.has('astc')) {\n return 'astc-4x4';\n } else if (supportedFormats.has('dxt')) {\n return {\n alpha: 'bc3',\n noAlpha: 'bc1'\n };\n } else if (supportedFormats.has('pvrtc')) {\n return {\n alpha: 'pvrtc1-4-rgba',\n noAlpha: 'pvrtc1-4-rgb'\n };\n } else if (supportedFormats.has('etc1')) {\n return 'etc1';\n } else if (supportedFormats.has('etc2')) {\n return 'etc2';\n }\n return 'rgb565';\n}\n"],"file":"parse-basis.js"}
@@ -0,0 +1,8 @@
1
+ import type { TextureLevel } from '@loaders.gl/schema';
2
+ /**
3
+ * Deduces format and parses compressed texture loaded in ArrayBuffer
4
+ * @param data - binary data of compressed texture
5
+ * @returns Array of the texture levels
6
+ */
7
+ export declare function parseCompressedTexture(data: ArrayBuffer): TextureLevel[];
8
+ //# sourceMappingURL=parse-compressed-texture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-compressed-texture.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-compressed-texture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAKrD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,WAAW,GAAG,YAAY,EAAE,CAaxE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/parsers/parse-compressed-texture.ts"],"names":["isKTX","parseKTX","isDDS","parseDDS","isPVR","parsePVR","parseCompressedTexture","data","Error"],"mappings":"AACA,SAAQA,KAAR,EAAeC,QAAf,QAA8B,aAA9B;AACA,SAAQC,KAAR,EAAeC,QAAf,QAA8B,aAA9B;AACA,SAAQC,KAAR,EAAeC,QAAf,QAA8B,aAA9B;AAOA,OAAO,SAASC,sBAAT,CAAgCC,IAAhC,EAAmE;AACxE,MAAIP,KAAK,CAACO,IAAD,CAAT,EAAiB;AAGf,WAAON,QAAQ,CAACM,IAAD,CAAf;AACD;;AACD,MAAIL,KAAK,CAACK,IAAD,CAAT,EAAiB;AACf,WAAOJ,QAAQ,CAACI,IAAD,CAAf;AACD;;AACD,MAAIH,KAAK,CAACG,IAAD,CAAT,EAAiB;AACf,WAAOF,QAAQ,CAACE,IAAD,CAAf;AACD;;AACD,QAAM,IAAIC,KAAJ,CAAU,yCAAV,CAAN;AACD","sourcesContent":["import type {TextureLevel} from '../../types';\nimport {isKTX, parseKTX} from './parse-ktx';\nimport {isDDS, parseDDS} from './parse-dds';\nimport {isPVR, parsePVR} from './parse-pvr';\n\n/**\n * Deduces format and parses compressed texture loaded in ArrayBuffer\n * @param data - binary data of compressed texture\n * @returns Array of the texture levels\n */\nexport function parseCompressedTexture(data: ArrayBuffer): TextureLevel[] {\n if (isKTX(data)) {\n // TODO: remove @ts-ignore when `parseKTX` output is normalized to loaders.gl texture format\n // @ts-ignore\n return parseKTX(data);\n }\n if (isDDS(data)) {\n return parseDDS(data);\n }\n if (isPVR(data)) {\n return parsePVR(data);\n }\n throw new Error('Texture container format not recognized');\n}\n"],"file":"parse-compressed-texture.js"}
1
+ {"version":3,"sources":["../../../src/lib/parsers/parse-compressed-texture.ts"],"names":["isKTX","parseKTX","isDDS","parseDDS","isPVR","parsePVR","parseCompressedTexture","data","Error"],"mappings":"AACA,SAAQA,KAAR,EAAeC,QAAf,QAA8B,aAA9B;AACA,SAAQC,KAAR,EAAeC,QAAf,QAA8B,aAA9B;AACA,SAAQC,KAAR,EAAeC,QAAf,QAA8B,aAA9B;AAOA,OAAO,SAASC,sBAAT,CAAgCC,IAAhC,EAAmE;AACxE,MAAIP,KAAK,CAACO,IAAD,CAAT,EAAiB;AAGf,WAAON,QAAQ,CAACM,IAAD,CAAf;AACD;;AACD,MAAIL,KAAK,CAACK,IAAD,CAAT,EAAiB;AACf,WAAOJ,QAAQ,CAACI,IAAD,CAAf;AACD;;AACD,MAAIH,KAAK,CAACG,IAAD,CAAT,EAAiB;AACf,WAAOF,QAAQ,CAACE,IAAD,CAAf;AACD;;AACD,QAAM,IAAIC,KAAJ,CAAU,yCAAV,CAAN;AACD","sourcesContent":["import type {TextureLevel} from '@loaders.gl/schema';\nimport {isKTX, parseKTX} from './parse-ktx';\nimport {isDDS, parseDDS} from './parse-dds';\nimport {isPVR, parsePVR} from './parse-pvr';\n\n/**\n * Deduces format and parses compressed texture loaded in ArrayBuffer\n * @param data - binary data of compressed texture\n * @returns Array of the texture levels\n */\nexport function parseCompressedTexture(data: ArrayBuffer): TextureLevel[] {\n if (isKTX(data)) {\n // TODO: remove @ts-ignore when `parseKTX` output is normalized to loaders.gl texture format\n // @ts-ignore\n return parseKTX(data);\n }\n if (isDDS(data)) {\n return parseDDS(data);\n }\n if (isPVR(data)) {\n return parsePVR(data);\n }\n throw new Error('Texture container format not recognized');\n}\n"],"file":"parse-compressed-texture.js"}
@@ -0,0 +1,9 @@
1
+ import type { TextureLevel } from '@loaders.gl/schema';
2
+ /**
3
+ * Parse texture data as "CRN" format.
4
+ * Function is "async" as emscriptified decoder module is loaded asyncronously
5
+ * @param data - binary data of compressed texture
6
+ * @returns Promise of Array of the texture levels
7
+ */
8
+ export declare function parseCrunch(data: any, options: any): Promise<TextureLevel[]>;
9
+ //# sourceMappingURL=parse-crunch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-crunch.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-crunch.ts"],"names":[],"mappings":"AAAA,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"}