@loaders.gl/textures 3.3.0-alpha.11 → 3.3.0-alpha.13

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.
@@ -63357,7 +63357,7 @@ var require_ktx_parse = __commonJS({
63357
63357
  });
63358
63358
 
63359
63359
  // ../worker-utils/src/lib/env-utils/version.ts
63360
- var VERSION = true ? "3.3.0-alpha.11" : DEFAULT_VERSION;
63360
+ var VERSION = true ? "3.3.0-alpha.13" : DEFAULT_VERSION;
63361
63361
  if (false) {
63362
63362
  console.error("loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.");
63363
63363
  }
@@ -65901,10 +65901,10 @@ if (!("allSettled" in Promise)) {
65901
65901
  }
65902
65902
 
65903
65903
  // src/lib/utils/version.ts
65904
- var VERSION3 = true ? "3.3.0-alpha.11" : "beta";
65904
+ var VERSION3 = true ? "3.3.0-alpha.13" : "beta";
65905
65905
 
65906
65906
  // src/lib/parsers/basis-module-loader.ts
65907
- var VERSION4 = true ? "3.3.0-alpha.11" : "beta";
65907
+ var VERSION4 = true ? "3.3.0-alpha.13" : "beta";
65908
65908
  var BASIS_CDN_ENCODER_WASM = `https://unpkg.com/@loaders.gl/textures@${VERSION4}/dist/libs/basis_encoder.wasm`;
65909
65909
  var BASIS_CDN_ENCODER_JS = `https://unpkg.com/@loaders.gl/textures@${VERSION4}/dist/libs/basis_encoder.js`;
65910
65910
  var loadBasisTranscoderPromise;
@@ -66234,6 +66234,7 @@ function transcodeKTX2Image(ktx2File, levelIndex, options) {
66234
66234
  height,
66235
66235
  data: decodedData,
66236
66236
  compressed,
66237
+ levelSize: decodedSize,
66237
66238
  hasAlpha: alphaFlag,
66238
66239
  format
66239
66240
  };
@@ -28,7 +28,7 @@
28
28
  });
29
29
 
30
30
  // ../worker-utils/src/lib/env-utils/version.ts
31
- var VERSION = true ? "3.3.0-alpha.11" : DEFAULT_VERSION;
31
+ var VERSION = true ? "3.3.0-alpha.13" : DEFAULT_VERSION;
32
32
  if (false) {
33
33
  console.error("loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.");
34
34
  }
@@ -312,10 +312,10 @@
312
312
  }
313
313
 
314
314
  // src/lib/utils/version.ts
315
- var VERSION3 = true ? "3.3.0-alpha.11" : "beta";
315
+ var VERSION3 = true ? "3.3.0-alpha.13" : "beta";
316
316
 
317
317
  // src/lib/parsers/basis-module-loader.ts
318
- var VERSION4 = true ? "3.3.0-alpha.11" : "beta";
318
+ var VERSION4 = true ? "3.3.0-alpha.13" : "beta";
319
319
  var BASIS_CDN_ENCODER_WASM = `https://unpkg.com/@loaders.gl/textures@${VERSION4}/dist/libs/basis_encoder.wasm`;
320
320
  var BASIS_CDN_ENCODER_JS = `https://unpkg.com/@loaders.gl/textures@${VERSION4}/dist/libs/basis_encoder.js`;
321
321
  var loadBasisTranscoderPromise;
@@ -672,6 +672,7 @@
672
672
  height,
673
673
  data: decodedData,
674
674
  compressed,
675
+ levelSize: decodedSize,
675
676
  hasAlpha: alphaFlag,
676
677
  format
677
678
  };
@@ -35,7 +35,7 @@
35
35
  }
36
36
 
37
37
  // ../worker-utils/src/lib/env-utils/version.ts
38
- var VERSION = true ? "3.3.0-alpha.11" : DEFAULT_VERSION;
38
+ var VERSION = true ? "3.3.0-alpha.13" : DEFAULT_VERSION;
39
39
  if (false) {
40
40
  console.error("loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.");
41
41
  }
@@ -319,7 +319,7 @@
319
319
  }
320
320
 
321
321
  // src/lib/utils/version.ts
322
- var VERSION3 = true ? "3.3.0-alpha.11" : "beta";
322
+ var VERSION3 = true ? "3.3.0-alpha.13" : "beta";
323
323
 
324
324
  // ../../node_modules/ktx-parse/dist/ktx-parse.modern.js
325
325
  var t = new Uint8Array([0]);
@@ -907,7 +907,7 @@
907
907
  }
908
908
 
909
909
  // src/lib/parsers/basis-module-loader.ts
910
- var VERSION4 = true ? "3.3.0-alpha.11" : "beta";
910
+ var VERSION4 = true ? "3.3.0-alpha.13" : "beta";
911
911
  var BASIS_CDN_ENCODER_WASM = `https://unpkg.com/@loaders.gl/textures@${VERSION4}/dist/libs/basis_encoder.wasm`;
912
912
  var BASIS_CDN_ENCODER_JS = `https://unpkg.com/@loaders.gl/textures@${VERSION4}/dist/libs/basis_encoder.js`;
913
913
  var loadBasisTranscoderPromise;
@@ -1153,6 +1153,7 @@
1153
1153
  height,
1154
1154
  data: decodedData,
1155
1155
  compressed,
1156
+ levelSize: decodedSize,
1156
1157
  hasAlpha: alphaFlag,
1157
1158
  format
1158
1159
  };
@@ -35,7 +35,7 @@
35
35
  }
36
36
 
37
37
  // ../worker-utils/src/lib/env-utils/version.ts
38
- var VERSION = true ? "3.3.0-alpha.11" : DEFAULT_VERSION;
38
+ var VERSION = true ? "3.3.0-alpha.13" : DEFAULT_VERSION;
39
39
  if (false) {
40
40
  console.error("loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.");
41
41
  }
@@ -319,7 +319,7 @@
319
319
  }
320
320
 
321
321
  // src/lib/utils/version.ts
322
- var VERSION3 = true ? "3.3.0-alpha.11" : "beta";
322
+ var VERSION3 = true ? "3.3.0-alpha.13" : "beta";
323
323
 
324
324
  // src/crunch-loader.ts
325
325
  var CrunchLoader = {
package/dist/dist.min.js CHANGED
@@ -778,6 +778,7 @@
778
778
  height,
779
779
  data: decodedData,
780
780
  compressed,
781
+ levelSize: decodedSize,
781
782
  hasAlpha: alphaFlag,
782
783
  format
783
784
  };
@@ -10,7 +10,7 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
10
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
11
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
12
12
  var _workerUtils = require("@loaders.gl/worker-utils");
13
- var VERSION = typeof "3.3.0-alpha.11" !== 'undefined' ? "3.3.0-alpha.11" : 'beta';
13
+ var VERSION = typeof "3.3.0-alpha.13" !== 'undefined' ? "3.3.0-alpha.13" : 'beta';
14
14
 
15
15
  var BASIS_CDN_ENCODER_WASM = "https://unpkg.com/@loaders.gl/textures@".concat(VERSION, "/dist/libs/basis_encoder.wasm");
16
16
  var BASIS_CDN_ENCODER_JS = "https://unpkg.com/@loaders.gl/textures@".concat(VERSION, "/dist/libs/basis_encoder.js");
@@ -241,6 +241,7 @@ function transcodeKTX2Image(ktx2File, levelIndex, options) {
241
241
  height: height,
242
242
  data: decodedData,
243
243
  compressed: compressed,
244
+ levelSize: decodedSize,
244
245
  hasAlpha: alphaFlag,
245
246
  format: format
246
247
  };
@@ -1 +1 @@
1
- {"version":3,"file":"parse-basis.js","names":["OutputFormat","etc1","basisFormat","compressed","format","GL_EXTENSIONS_CONSTANTS","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","isKTX","loadBasisEncoderModule","fileConstructors","parseKTX2File","KTX2File","loadBasisTrascoderModule","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","getImageLevelInfo","alphaFlag","selectSupportedBasisFormat","alpha","noAlpha","toLowerCase","supportedFormats","getSupportedGPUTextureFormats","has"],"sources":["../../../../src/lib/parsers/parse-basis.ts"],"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"],"mappings":"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"}
1
+ {"version":3,"file":"parse-basis.js","names":["OutputFormat","etc1","basisFormat","compressed","format","GL_EXTENSIONS_CONSTANTS","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","isKTX","loadBasisEncoderModule","fileConstructors","parseKTX2File","KTX2File","loadBasisTrascoderModule","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","getImageLevelInfo","alphaFlag","levelSize","selectSupportedBasisFormat","alpha","noAlpha","toLowerCase","supportedFormats","getSupportedGPUTextureFormats","has"],"sources":["../../../../src/lib/parsers/parse-basis.ts"],"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 levelSize: decodedSize,\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"],"mappings":"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"}
@@ -4,6 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.VERSION = void 0;
7
- var VERSION = typeof "3.3.0-alpha.11" !== 'undefined' ? "3.3.0-alpha.11" : 'beta';
7
+ var VERSION = typeof "3.3.0-alpha.13" !== 'undefined' ? "3.3.0-alpha.13" : 'beta';
8
8
  exports.VERSION = VERSION;
9
9
  //# sourceMappingURL=version.js.map
@@ -1,5 +1,5 @@
1
1
 
2
- const VERSION = typeof "3.3.0-alpha.11" !== 'undefined' ? "3.3.0-alpha.11" : 'beta';
2
+ const VERSION = typeof "3.3.0-alpha.13" !== 'undefined' ? "3.3.0-alpha.13" : 'beta';
3
3
 
4
4
  import { loadLibrary } from '@loaders.gl/worker-utils';
5
5
  const BASIS_CDN_ENCODER_WASM = "https://unpkg.com/@loaders.gl/textures@".concat(VERSION, "/dist/libs/basis_encoder.wasm");
@@ -202,6 +202,7 @@ function transcodeKTX2Image(ktx2File, levelIndex, options) {
202
202
  height,
203
203
  data: decodedData,
204
204
  compressed,
205
+ levelSize: decodedSize,
205
206
  hasAlpha: alphaFlag,
206
207
  format
207
208
  };
@@ -1 +1 @@
1
- {"version":3,"file":"parse-basis.js","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"],"sources":["../../../../src/lib/parsers/parse-basis.ts"],"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"],"mappings":"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"}
1
+ {"version":3,"file":"parse-basis.js","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","levelSize","selectSupportedBasisFormat","alpha","noAlpha","toLowerCase","supportedFormats","has"],"sources":["../../../../src/lib/parsers/parse-basis.ts"],"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 levelSize: decodedSize,\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"],"mappings":";;AAEA,SAAQA,sBAAsB,EAAEC,wBAAwB,QAAO,uBAAuB;AACtF,SAAQC,uBAAuB,QAAO,kBAAkB;AACxD,SAAQC,6BAA6B,QAAO,0BAA0B;AACtE,SAAQC,KAAK,QAAO,aAAa;AA2BjC,MAAMC,YAAgD,GAAG;EACvDC,IAAI,EAAE;IACJC,WAAW,EAAE,CAAC;IACdC,UAAU,EAAE,IAAI;IAChBC,MAAM,EAAEP,uBAAuB,CAACQ;EAClC,CAAC;EACDC,IAAI,EAAE;IAACJ,WAAW,EAAE,CAAC;IAAEC,UAAU,EAAE;EAAI,CAAC;EACxCI,GAAG,EAAE;IACHL,WAAW,EAAE,CAAC;IACdC,UAAU,EAAE,IAAI;IAChBC,MAAM,EAAEP,uBAAuB,CAACW;EAClC,CAAC;EACDC,GAAG,EAAE;IACHP,WAAW,EAAE,CAAC;IACdC,UAAU,EAAE,IAAI;IAChBC,MAAM,EAAEP,uBAAuB,CAACa;EAClC,CAAC;EACDC,GAAG,EAAE;IAACT,WAAW,EAAE,CAAC;IAAEC,UAAU,EAAE;EAAI,CAAC;EACvCS,GAAG,EAAE;IAACV,WAAW,EAAE,CAAC;IAAEC,UAAU,EAAE;EAAI,CAAC;EACvC,oBAAoB,EAAE;IAACD,WAAW,EAAE,CAAC;IAAEC,UAAU,EAAE;EAAI,CAAC;EACxD,QAAQ,EAAE;IAACD,WAAW,EAAE,CAAC;IAAEC,UAAU,EAAE;EAAI,CAAC;EAC5C,cAAc,EAAE;IACdD,WAAW,EAAE,CAAC;IACdC,UAAU,EAAE,IAAI;IAChBC,MAAM,EAAEP,uBAAuB,CAACgB;EAClC,CAAC;EACD,eAAe,EAAE;IACfX,WAAW,EAAE,CAAC;IACdC,UAAU,EAAE,IAAI;IAChBC,MAAM,EAAEP,uBAAuB,CAACiB;EAClC,CAAC;EACD,UAAU,EAAE;IACVZ,WAAW,EAAE,EAAE;IACfC,UAAU,EAAE,IAAI;IAChBC,MAAM,EAAEP,uBAAuB,CAACkB;EAClC,CAAC;EACD,SAAS,EAAE;IAACb,WAAW,EAAE,EAAE;IAAEC,UAAU,EAAE;EAAI,CAAC;EAC9C,6BAA6B,EAAE;IAACD,WAAW,EAAE,EAAE;IAAEC,UAAU,EAAE;EAAI,CAAC;EAClEa,MAAM,EAAE;IAACd,WAAW,EAAE,EAAE;IAAEC,UAAU,EAAE;EAAK,CAAC;EAC5Cc,MAAM,EAAE;IAACf,WAAW,EAAE,EAAE;IAAEC,UAAU,EAAE;EAAK,CAAC;EAC5Ce,MAAM,EAAE;IAAChB,WAAW,EAAE,EAAE;IAAEC,UAAU,EAAE;EAAK,CAAC;EAC5CgB,QAAQ,EAAE;IAACjB,WAAW,EAAE,EAAE;IAAEC,UAAU,EAAE;EAAK;AAC/C,CAAC;;AAQD,eAAe,eAAeiB,UAAU,CAACC,IAAiB,EAAEC,OAAO,EAA6B;EAC9F,IAAIA,OAAO,CAACC,KAAK,CAACC,eAAe,KAAK,MAAM,EAAE;IAC5C,IAAIzB,KAAK,CAACsB,IAAI,CAAC,EAAE;MACf,MAAMI,gBAAgB,GAAG,MAAM9B,sBAAsB,CAAC2B,OAAO,CAAC;MAC9D,OAAOI,aAAa,CAACD,gBAAgB,CAACE,QAAQ,EAAEN,IAAI,EAAEC,OAAO,CAAC;IAChE;IACA,MAAM;MAACM;IAAS,CAAC,GAAG,MAAMhC,wBAAwB,CAAC0B,OAAO,CAAC;IAC3D,OAAOO,cAAc,CAACD,SAAS,EAAEP,IAAI,EAAEC,OAAO,CAAC;EACjD;EACA,QAAQA,OAAO,CAACC,KAAK,CAACO,MAAM;IAC1B,KAAK,SAAS;MACZ,MAAML,gBAAgB,GAAG,MAAM9B,sBAAsB,CAAC2B,OAAO,CAAC;MAC9D,QAAQA,OAAO,CAACC,KAAK,CAACC,eAAe;QACnC,KAAK,MAAM;UACT,OAAOE,aAAa,CAACD,gBAAgB,CAACE,QAAQ,EAAEN,IAAI,EAAEC,OAAO,CAAC;QAChE,KAAK,OAAO;QACZ;UACE,OAAOO,cAAc,CAACJ,gBAAgB,CAACG,SAAS,EAAEP,IAAI,EAAEC,OAAO,CAAC;MAAC;IAEvE,KAAK,YAAY;IACjB;MACE,MAAM;QAACM;MAAS,CAAC,GAAG,MAAMhC,wBAAwB,CAAC0B,OAAO,CAAC;MAC3D,OAAOO,cAAc,CAACD,SAAS,EAAEP,IAAI,EAAEC,OAAO,CAAC;EAAC;AAEtD;;AASA,SAASO,cAAc,CAACD,SAAS,EAAEP,IAAI,EAAEC,OAAO,EAAoB;EAClE,MAAMS,SAAS,GAAG,IAAIH,SAAS,CAAC,IAAII,UAAU,CAACX,IAAI,CAAC,CAAC;EAErD,IAAI;IACF,IAAI,CAACU,SAAS,CAACE,gBAAgB,EAAE,EAAE;MACjC,MAAM,IAAIC,KAAK,CAAC,mCAAmC,CAAC;IACtD;IAEA,MAAMC,UAAU,GAAGJ,SAAS,CAACK,YAAY,EAAE;IAC3C,MAAMC,MAAwB,GAAG,EAAE;IAEnC,KAAK,IAAIC,UAAU,GAAG,CAAC,EAAEA,UAAU,GAAGH,UAAU,EAAEG,UAAU,EAAE,EAAE;MAC9D,MAAMC,WAAW,GAAGR,SAAS,CAACS,YAAY,CAACF,UAAU,CAAC;MACtD,MAAMG,MAAsB,GAAG,EAAE;MAEjC,KAAK,IAAIC,UAAU,GAAG,CAAC,EAAEA,UAAU,GAAGH,WAAW,EAAEG,UAAU,EAAE,EAAE;QAC/DD,MAAM,CAACE,IAAI,CAACC,cAAc,CAACb,SAAS,EAAEO,UAAU,EAAEI,UAAU,EAAEpB,OAAO,CAAC,CAAC;MACzE;MAEAe,MAAM,CAACM,IAAI,CAACF,MAAM,CAAC;IACrB;IAEA,OAAOJ,MAAM;EACf,CAAC,SAAS;IACRN,SAAS,CAACc,KAAK,EAAE;IACjBd,SAAS,CAACe,MAAM,EAAE;EACpB;AACF;;AAUA,SAASF,cAAc,CAACb,SAAS,EAAEO,UAAU,EAAEI,UAAU,EAAEpB,OAAO,EAAgB;EAChF,MAAMyB,KAAK,GAAGhB,SAAS,CAACiB,aAAa,CAACV,UAAU,EAAEI,UAAU,CAAC;EAC7D,MAAMO,MAAM,GAAGlB,SAAS,CAACmB,cAAc,CAACZ,UAAU,EAAEI,UAAU,CAAC;;EAG/D,MAAMS,QAAQ,GAAGpB,SAAS,CAACqB,WAAW,EAA8B;;EAGpE,MAAM;IAACjD,UAAU;IAAEC,MAAM;IAAEF;EAAW,CAAC,GAAGmD,eAAe,CAAC/B,OAAO,EAAE6B,QAAQ,CAAC;EAE5E,MAAMG,WAAW,GAAGvB,SAAS,CAACwB,6BAA6B,CAACjB,UAAU,EAAEI,UAAU,EAAExC,WAAW,CAAC;EAChG,MAAMsD,WAAW,GAAG,IAAIxB,UAAU,CAACsB,WAAW,CAAC;EAE/C,IAAI,CAACvB,SAAS,CAACa,cAAc,CAACY,WAAW,EAAElB,UAAU,EAAEI,UAAU,EAAExC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;IACrF,MAAM,IAAIgC,KAAK,CAAC,mCAAmC,CAAC;EACtD;EAEA,OAAO;IAELa,KAAK;IACLE,MAAM;IACN5B,IAAI,EAAEmC,WAAW;IACjBrD,UAAU;IACVC,MAAM;IAIN+C;EACF,CAAC;AACH;;AASA,SAASzB,aAAa,CAACC,QAAQ,EAAEN,IAAiB,EAAEC,OAAO,EAAoB;EAC7E,MAAMmC,QAAQ,GAAG,IAAI9B,QAAQ,CAAC,IAAIK,UAAU,CAACX,IAAI,CAAC,CAAC;EAEnD,IAAI;IACF,IAAI,CAACoC,QAAQ,CAACxB,gBAAgB,EAAE,EAAE;MAChC,MAAM,IAAIC,KAAK,CAAC,kCAAkC,CAAC;IACrD;IACA,MAAMK,WAAW,GAAGkB,QAAQ,CAACC,SAAS,EAAE;IACxC,MAAMjB,MAAsB,GAAG,EAAE;IAEjC,KAAK,IAAIC,UAAU,GAAG,CAAC,EAAEA,UAAU,GAAGH,WAAW,EAAEG,UAAU,EAAE,EAAE;MAC/DD,MAAM,CAACE,IAAI,CAACgB,kBAAkB,CAACF,QAAQ,EAAEf,UAAU,EAAEpB,OAAO,CAAC,CAAC;MAC9D;IACF;;IAEA,OAAO,CAACmB,MAAM,CAAC;EACjB,CAAC,SAAS;IACRgB,QAAQ,CAACZ,KAAK,EAAE;IAChBY,QAAQ,CAACX,MAAM,EAAE;EACnB;AACF;;AASA,SAASa,kBAAkB,CAACF,QAAQ,EAAEf,UAAkB,EAAEpB,OAAO,EAAgB;EAC/E,MAAM;IAACsC,SAAS;IAAEX,MAAM;IAAEF;EAAK,CAAC,GAAGU,QAAQ,CAACI,iBAAiB,CAACnB,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;;EAG/E,MAAM;IAACvC,UAAU;IAAEC,MAAM;IAAEF;EAAW,CAAC,GAAGmD,eAAe,CAAC/B,OAAO,EAAEsC,SAAS,CAAC;EAE7E,MAAMN,WAAW,GAAGG,QAAQ,CAACF,6BAA6B,CACxDb,UAAU,EACV,CAAC,EACD,CAAC,EACDxC,WAAW,CACZ;EACD,MAAMsD,WAAW,GAAG,IAAIxB,UAAU,CAACsB,WAAW,CAAC;EAE/C,IACE,CAACG,QAAQ,CAACb,cAAc,CACtBY,WAAW,EACXd,UAAU,EACV,CAAC,EACD,CAAC,EACDxC,WAAW,EACX,CAAC,EACD,CAAC,CAAC,EACF,CAAC,CAAC,CACH,EACD;IACA,MAAM,IAAIgC,KAAK,CAAC,gCAAgC,CAAC;EACnD;EAEA,OAAO;IAELa,KAAK;IACLE,MAAM;IACN5B,IAAI,EAAEmC,WAAW;IACjBrD,UAAU;IAGV2D,SAAS,EAAER,WAAW;IACtBH,QAAQ,EAAES,SAAS;IACnBxD;EACF,CAAC;AACH;;AAQA,SAASiD,eAAe,CAAC/B,OAAO,EAAE6B,QAAiB,EAAsB;EACvE,IAAI/C,MAAM,GAAGkB,OAAO,IAAIA,OAAO,CAACC,KAAK,IAAID,OAAO,CAACC,KAAK,CAACnB,MAAM;EAC7D,IAAIA,MAAM,KAAK,MAAM,EAAE;IACrBA,MAAM,GAAG2D,0BAA0B,EAAE;EACvC;EACA,IAAI,OAAO3D,MAAM,KAAK,QAAQ,EAAE;IAC9BA,MAAM,GAAG+C,QAAQ,GAAG/C,MAAM,CAAC4D,KAAK,GAAG5D,MAAM,CAAC6D,OAAO;EACnD;EACA7D,MAAM,GAAGA,MAAM,CAAC8D,WAAW,EAAE;EAC7B,OAAOlE,YAAY,CAACI,MAAM,CAAC;AAC7B;;AAMA,OAAO,SAAS2D,0BAA0B,GAKpC;EACJ,MAAMI,gBAAgB,GAAGrE,6BAA6B,EAAE;EACxD,IAAIqE,gBAAgB,CAACC,GAAG,CAAC,MAAM,CAAC,EAAE;IAChC,OAAO,UAAU;EACnB,CAAC,MAAM,IAAID,gBAAgB,CAACC,GAAG,CAAC,KAAK,CAAC,EAAE;IACtC,OAAO;MACLJ,KAAK,EAAE,KAAK;MACZC,OAAO,EAAE;IACX,CAAC;EACH,CAAC,MAAM,IAAIE,gBAAgB,CAACC,GAAG,CAAC,OAAO,CAAC,EAAE;IACxC,OAAO;MACLJ,KAAK,EAAE,eAAe;MACtBC,OAAO,EAAE;IACX,CAAC;EACH,CAAC,MAAM,IAAIE,gBAAgB,CAACC,GAAG,CAAC,MAAM,CAAC,EAAE;IACvC,OAAO,MAAM;EACf,CAAC,MAAM,IAAID,gBAAgB,CAACC,GAAG,CAAC,MAAM,CAAC,EAAE;IACvC,OAAO,MAAM;EACf;EACA,OAAO,QAAQ;AACjB"}
@@ -1,3 +1,3 @@
1
1
 
2
- export const VERSION = typeof "3.3.0-alpha.11" !== 'undefined' ? "3.3.0-alpha.11" : 'beta';
2
+ export const VERSION = typeof "3.3.0-alpha.13" !== 'undefined' ? "3.3.0-alpha.13" : 'beta';
3
3
  //# sourceMappingURL=version.js.map
@@ -63182,7 +63182,7 @@ var require_polyfill = __commonJS({
63182
63182
  });
63183
63183
 
63184
63184
  // ../worker-utils/src/lib/env-utils/version.ts
63185
- var VERSION = true ? "3.3.0-alpha.11" : DEFAULT_VERSION;
63185
+ var VERSION = true ? "3.3.0-alpha.13" : DEFAULT_VERSION;
63186
63186
  if (false) {
63187
63187
  console.error("loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.");
63188
63188
  }
@@ -65653,10 +65653,10 @@ if (!("allSettled" in Promise)) {
65653
65653
  }
65654
65654
 
65655
65655
  // src/lib/utils/version.ts
65656
- var VERSION3 = true ? "3.3.0-alpha.11" : "beta";
65656
+ var VERSION3 = true ? "3.3.0-alpha.13" : "beta";
65657
65657
 
65658
65658
  // src/lib/parsers/basis-module-loader.ts
65659
- var VERSION4 = true ? "3.3.0-alpha.11" : "beta";
65659
+ var VERSION4 = true ? "3.3.0-alpha.13" : "beta";
65660
65660
  var BASIS_CDN_ENCODER_WASM = `https://unpkg.com/@loaders.gl/textures@${VERSION4}/dist/libs/basis_encoder.wasm`;
65661
65661
  var BASIS_CDN_ENCODER_JS = `https://unpkg.com/@loaders.gl/textures@${VERSION4}/dist/libs/basis_encoder.js`;
65662
65662
  var loadBasisEncoderPromise;
@@ -28,7 +28,7 @@
28
28
  });
29
29
 
30
30
  // ../worker-utils/src/lib/env-utils/version.ts
31
- var VERSION = true ? "3.3.0-alpha.11" : DEFAULT_VERSION;
31
+ var VERSION = true ? "3.3.0-alpha.13" : DEFAULT_VERSION;
32
32
  if (false) {
33
33
  console.error("loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.");
34
34
  }
@@ -237,10 +237,10 @@
237
237
  }
238
238
 
239
239
  // src/lib/utils/version.ts
240
- var VERSION3 = true ? "3.3.0-alpha.11" : "beta";
240
+ var VERSION3 = true ? "3.3.0-alpha.13" : "beta";
241
241
 
242
242
  // src/lib/parsers/basis-module-loader.ts
243
- var VERSION4 = true ? "3.3.0-alpha.11" : "beta";
243
+ var VERSION4 = true ? "3.3.0-alpha.13" : "beta";
244
244
  var BASIS_CDN_ENCODER_WASM = `https://unpkg.com/@loaders.gl/textures@${VERSION4}/dist/libs/basis_encoder.wasm`;
245
245
  var BASIS_CDN_ENCODER_JS = `https://unpkg.com/@loaders.gl/textures@${VERSION4}/dist/libs/basis_encoder.js`;
246
246
  var loadBasisEncoderPromise;
@@ -191,7 +191,7 @@ function transcodeKTX2Image(ktx2File, levelIndex, options) {
191
191
  data: decodedData,
192
192
  compressed,
193
193
  // Additional fields
194
- // Add levelSize field.
194
+ levelSize: decodedSize,
195
195
  hasAlpha: alphaFlag,
196
196
  format
197
197
  };
@@ -1,6 +1,6 @@
1
1
  (() => {
2
2
  // src/lib/utils/version.ts
3
- var VERSION = true ? "3.3.0-alpha.11" : "beta";
3
+ var VERSION = true ? "3.3.0-alpha.13" : "beta";
4
4
 
5
5
  // src/lib/parsers/parse-npy.ts
6
6
  function systemIsLittleEndian() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/textures",
3
- "version": "3.3.0-alpha.11",
3
+ "version": "3.3.0-alpha.13",
4
4
  "description": "Framework-independent loaders for compressed and super compressed (basis) textures ",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -45,15 +45,15 @@
45
45
  "build-ktx2-basis-writer-nodejs-worker": "esbuild src/workers/ktx2-basis-writer-nodejs-worker.ts --platform=node --target=esnext,node12 --bundle --outfile=dist/ktx2-basis-writer-nodejs-worker.js --define:__VERSION__=\\\"$npm_package_version\\\""
46
46
  },
47
47
  "dependencies": {
48
- "@loaders.gl/images": "3.3.0-alpha.11",
49
- "@loaders.gl/loader-utils": "3.3.0-alpha.11",
50
- "@loaders.gl/schema": "3.3.0-alpha.11",
51
- "@loaders.gl/worker-utils": "3.3.0-alpha.11",
48
+ "@loaders.gl/images": "3.3.0-alpha.13",
49
+ "@loaders.gl/loader-utils": "3.3.0-alpha.13",
50
+ "@loaders.gl/schema": "3.3.0-alpha.13",
51
+ "@loaders.gl/worker-utils": "3.3.0-alpha.13",
52
52
  "ktx-parse": "^0.0.4",
53
53
  "texture-compressor": "^1.0.2"
54
54
  },
55
55
  "devDependencies": {
56
- "@loaders.gl/polyfills": "3.3.0-alpha.11"
56
+ "@loaders.gl/polyfills": "3.3.0-alpha.13"
57
57
  },
58
- "gitHead": "1863a8875f63d578c0fdf5bdb3b7d6827f799db9"
58
+ "gitHead": "429a5667c9903cc2de4d1f3e55e1c2f2e58a3ff6"
59
59
  }
@@ -254,7 +254,7 @@ function transcodeKTX2Image(ktx2File, levelIndex: number, options): TextureLevel
254
254
  compressed,
255
255
 
256
256
  // Additional fields
257
- // Add levelSize field.
257
+ levelSize: decodedSize,
258
258
  hasAlpha: alphaFlag,
259
259
  format
260
260
  };