@loaders.gl/textures 3.1.0-beta.3 → 3.1.1

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 (94) hide show
  1. package/dist/basis-worker.js +38 -5
  2. package/dist/bundle.js +32 -16
  3. package/dist/compressed-texture-loader.d.ts +1 -15
  4. package/dist/compressed-texture-loader.d.ts.map +1 -1
  5. package/dist/compressed-texture-worker.js +38 -5
  6. package/dist/crunch-worker.js +37 -4
  7. package/dist/es5/basis-loader.js +13 -5
  8. package/dist/es5/basis-loader.js.map +1 -1
  9. package/dist/es5/bundle.js +1 -1
  10. package/dist/es5/bundle.js.map +1 -1
  11. package/dist/es5/compressed-texture-loader.js +59 -20
  12. package/dist/es5/compressed-texture-loader.js.map +1 -1
  13. package/dist/es5/compressed-texture-writer.js +2 -2
  14. package/dist/es5/compressed-texture-writer.js.map +1 -1
  15. package/dist/es5/crunch-loader.js +2 -2
  16. package/dist/es5/crunch-loader.js.map +1 -1
  17. package/dist/es5/index.js +16 -16
  18. package/dist/es5/ktx2-basis-universal-texture-writer.js +2 -2
  19. package/dist/es5/ktx2-basis-universal-texture-writer.js.map +1 -1
  20. package/dist/es5/lib/encoders/encode-ktx.js +1 -1
  21. package/dist/es5/lib/encoders/encode-ktx.js.map +1 -1
  22. package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js +76 -32
  23. package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js.map +1 -1
  24. package/dist/es5/lib/encoders/encode-texture.js +37 -13
  25. package/dist/es5/lib/encoders/encode-texture.js.map +1 -1
  26. package/dist/es5/lib/gl-extensions.js +1 -1
  27. package/dist/es5/lib/gl-extensions.js.map +1 -1
  28. package/dist/es5/lib/parsers/basis-module-loader.js +195 -51
  29. package/dist/es5/lib/parsers/basis-module-loader.js.map +1 -1
  30. package/dist/es5/lib/parsers/crunch-module-loader.js +71 -15
  31. package/dist/es5/lib/parsers/crunch-module-loader.js.map +1 -1
  32. package/dist/es5/lib/parsers/parse-basis.js +130 -78
  33. package/dist/es5/lib/parsers/parse-basis.js.map +1 -1
  34. package/dist/es5/lib/parsers/parse-crunch.js +76 -55
  35. package/dist/es5/lib/parsers/parse-crunch.js.map +1 -1
  36. package/dist/es5/lib/parsers/parse-dds.js +23 -23
  37. package/dist/es5/lib/parsers/parse-dds.js.map +1 -1
  38. package/dist/es5/lib/parsers/parse-ktx.js +16 -14
  39. package/dist/es5/lib/parsers/parse-ktx.js.map +1 -1
  40. package/dist/es5/lib/parsers/parse-npy.js +28 -25
  41. package/dist/es5/lib/parsers/parse-npy.js.map +1 -1
  42. package/dist/es5/lib/parsers/parse-pvr.js +21 -21
  43. package/dist/es5/lib/parsers/parse-pvr.js.map +1 -1
  44. package/dist/es5/lib/texture-api/async-deep-map.js +156 -27
  45. package/dist/es5/lib/texture-api/async-deep-map.js.map +1 -1
  46. package/dist/es5/lib/texture-api/deep-load.js +67 -6
  47. package/dist/es5/lib/texture-api/deep-load.js.map +1 -1
  48. package/dist/es5/lib/texture-api/generate-url.js +10 -4
  49. package/dist/es5/lib/texture-api/generate-url.js.map +1 -1
  50. package/dist/es5/lib/texture-api/load-image-array.js +76 -12
  51. package/dist/es5/lib/texture-api/load-image-array.js.map +1 -1
  52. package/dist/es5/lib/texture-api/load-image-cube.js +96 -27
  53. package/dist/es5/lib/texture-api/load-image-cube.js.map +1 -1
  54. package/dist/es5/lib/texture-api/load-image.js +142 -35
  55. package/dist/es5/lib/texture-api/load-image.js.map +1 -1
  56. package/dist/es5/lib/utils/extract-mipmap-images.js +9 -9
  57. package/dist/es5/lib/utils/extract-mipmap-images.js.map +1 -1
  58. package/dist/es5/lib/utils/ktx-format-helper.js +1 -1
  59. package/dist/es5/lib/utils/ktx-format-helper.js.map +1 -1
  60. package/dist/es5/lib/utils/texture-formats.js +27 -9
  61. package/dist/es5/lib/utils/texture-formats.js.map +1 -1
  62. package/dist/es5/lib/utils/version.js +1 -1
  63. package/dist/es5/lib/utils/version.js.map +1 -1
  64. package/dist/es5/npy-loader.js +42 -7
  65. package/dist/es5/npy-loader.js.map +1 -1
  66. package/dist/es5/workers/crunch-worker.js +11 -2
  67. package/dist/es5/workers/crunch-worker.js.map +1 -1
  68. package/dist/esm/lib/encoders/encode-ktx2-basis-texture.js +1 -1
  69. package/dist/esm/lib/encoders/encode-ktx2-basis-texture.js.map +1 -1
  70. package/dist/esm/lib/encoders/encode-texture.js +2 -5
  71. package/dist/esm/lib/encoders/encode-texture.js.map +1 -1
  72. package/dist/esm/lib/parsers/basis-module-loader.js +1 -1
  73. package/dist/esm/lib/parsers/basis-module-loader.js.map +1 -1
  74. package/dist/esm/lib/parsers/parse-basis.js.map +1 -1
  75. package/dist/esm/lib/utils/version.js +1 -1
  76. package/dist/esm/lib/utils/version.js.map +1 -1
  77. package/dist/lib/encoders/encode-ktx2-basis-texture.d.ts +1 -1
  78. package/dist/lib/encoders/encode-ktx2-basis-texture.d.ts.map +1 -1
  79. package/dist/lib/encoders/encode-ktx2-basis-texture.js +1 -1
  80. package/dist/lib/encoders/encode-texture.d.ts +3 -1
  81. package/dist/lib/encoders/encode-texture.d.ts.map +1 -1
  82. package/dist/lib/encoders/encode-texture.js +2 -5
  83. package/dist/lib/parsers/parse-basis.d.ts +2 -16
  84. package/dist/lib/parsers/parse-basis.d.ts.map +1 -1
  85. package/dist/lib/utils/version.d.ts.map +1 -1
  86. package/dist/lib/utils/version.js +1 -2
  87. package/dist/npy-worker.js +1 -1
  88. package/package.json +5 -5
  89. package/src/lib/encoders/encode-ktx2-basis-texture.ts +2 -2
  90. package/src/lib/encoders/encode-texture.ts +6 -6
  91. package/src/lib/parsers/{parse-basis.js → parse-basis.ts} +3 -3
  92. package/src/lib/utils/version.ts +1 -2
  93. package/src/lib/parsers/parse-ktx.js +0 -42
  94. package/src/lib/parsers/parse-npy.js +0 -82
@@ -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"}
@@ -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"}
@@ -1,4 +1,4 @@
1
- const VERSION = typeof "3.1.0-beta.3" !== 'undefined' ? "3.1.0-beta.3" : 'beta';
1
+ const VERSION = typeof "3.1.1" !== 'undefined' ? "3.1.1" : '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");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/parsers/basis-module-loader.ts"],"names":["VERSION","loadLibrary","BASIS_CDN_ENCODER_WASM","BASIS_CDN_ENCODER_JS","loadBasisTranscoderPromise","loadBasisTrascoderModule","options","modules","basis","loadBasisTrascoder","BASIS","wasmBinary","Promise","all","globalThis","initializeBasisTrascoderModule","BasisModule","resolve","then","module","BasisFile","initializeBasis","loadBasisEncoderPromise","loadBasisEncoderModule","basisEncoder","loadBasisEncoder","BASIS_ENCODER","initializeBasisEncoderModule","BasisEncoderModule","KTX2File","BasisEncoder"],"mappings":"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","sourcesContent":["// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'beta';\n\n// @ts-nocheck\nimport {loadLibrary} from '@loaders.gl/worker-utils';\n\nconst BASIS_CDN_ENCODER_WASM = `https://unpkg.com/@loaders.gl/textures@${VERSION}/dist/libs/basis_encoder.wasm`;\nconst BASIS_CDN_ENCODER_JS = `https://unpkg.com/@loaders.gl/textures@${VERSION}/dist/libs/basis_encoder.js`;\n\nlet loadBasisTranscoderPromise;\n\n/**\n * Loads wasm transcoder module\n * @param options\n * @returns {BasisFile} promise\n */\nexport async function loadBasisTrascoderModule(options) {\n const modules = options.modules || {};\n if (modules.basis) {\n return modules.basis;\n }\n\n loadBasisTranscoderPromise = loadBasisTranscoderPromise || loadBasisTrascoder(options);\n return await loadBasisTranscoderPromise;\n}\n\n/**\n * Loads wasm transcoder module\n * @param options\n * @returns {BasisFile} promise\n */\nasync function loadBasisTrascoder(options) {\n let BASIS = null;\n let wasmBinary = null;\n\n [BASIS, wasmBinary] = await Promise.all([\n await loadLibrary('basis_transcoder.js', 'textures', options),\n await loadLibrary('basis_transcoder.wasm', 'textures', options)\n ]);\n\n // Depends on how import happened...\n // @ts-ignore TS2339: Property does not exist on type\n BASIS = BASIS || globalThis.BASIS;\n return await initializeBasisTrascoderModule(BASIS, wasmBinary);\n}\n\n/**\n * Initialize wasm transcoder module\n * @param BasisModule - js part of the module\n * @param wasmBinary - wasm part of the module\n * @returns {BasisFile} promise\n */\nfunction initializeBasisTrascoderModule(BasisModule, wasmBinary) {\n const options: {wasmBinary?} = {};\n\n if (wasmBinary) {\n options.wasmBinary = wasmBinary;\n }\n\n return new Promise((resolve) => {\n // if you try to return BasisModule the browser crashes!\n BasisModule(options).then((module) => {\n const {BasisFile, initializeBasis} = module;\n initializeBasis();\n resolve({BasisFile});\n });\n });\n}\n\nlet loadBasisEncoderPromise;\n\n/**\n * Loads wasm encoder module\n * @param options\n * @returns {BasisFile, KTX2File} promise\n */\nexport async function loadBasisEncoderModule(options) {\n const modules = options.modules || {};\n if (modules.basisEncoder) {\n return modules.basisEncoder;\n }\n\n loadBasisEncoderPromise = loadBasisEncoderPromise || loadBasisEncoder(options);\n return await loadBasisEncoderPromise;\n}\n\n/**\n * Loads wasm encoder module\n * @param options\n * @returns {BasisFile, KTX2File} promise\n */\nasync function loadBasisEncoder(options) {\n let BASIS_ENCODER = null;\n let wasmBinary = null;\n\n [BASIS_ENCODER, wasmBinary] = await Promise.all([\n await loadLibrary(BASIS_CDN_ENCODER_JS, 'textures', options),\n await loadLibrary(BASIS_CDN_ENCODER_WASM, 'textures', options)\n ]);\n\n // Depends on how import happened...\n // @ts-ignore TS2339: Property does not exist on type\n BASIS_ENCODER = BASIS_ENCODER || globalThis.BASIS;\n return await initializeBasisEncoderModule(BASIS_ENCODER, wasmBinary);\n}\n\n/**\n * Initialize wasm transcoder module\n * @param BasisEncoderModule - js part of the module\n * @param wasmBinary - wasm part of the module\n * @returns {BasisFile, KTX2File} promise\n */\nfunction initializeBasisEncoderModule(BasisEncoderModule, wasmBinary) {\n const options: {wasmBinary?} = {};\n\n if (wasmBinary) {\n options.wasmBinary = wasmBinary;\n }\n\n return new Promise((resolve) => {\n // if you try to return BasisModule the browser crashes!\n BasisEncoderModule(options).then((module) => {\n const {BasisFile, KTX2File, initializeBasis, BasisEncoder} = module;\n initializeBasis();\n resolve({BasisFile, KTX2File, BasisEncoder});\n });\n });\n}\n"],"file":"basis-module-loader.js"}
1
+ {"version":3,"sources":["../../../../src/lib/parsers/basis-module-loader.ts"],"names":["VERSION","loadLibrary","BASIS_CDN_ENCODER_WASM","BASIS_CDN_ENCODER_JS","loadBasisTranscoderPromise","loadBasisTrascoderModule","options","modules","basis","loadBasisTrascoder","BASIS","wasmBinary","Promise","all","globalThis","initializeBasisTrascoderModule","BasisModule","resolve","then","module","BasisFile","initializeBasis","loadBasisEncoderPromise","loadBasisEncoderModule","basisEncoder","loadBasisEncoder","BASIS_ENCODER","initializeBasisEncoderModule","BasisEncoderModule","KTX2File","BasisEncoder"],"mappings":"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","sourcesContent":["// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'beta';\n\n// @ts-nocheck\nimport {loadLibrary} from '@loaders.gl/worker-utils';\n\nconst BASIS_CDN_ENCODER_WASM = `https://unpkg.com/@loaders.gl/textures@${VERSION}/dist/libs/basis_encoder.wasm`;\nconst BASIS_CDN_ENCODER_JS = `https://unpkg.com/@loaders.gl/textures@${VERSION}/dist/libs/basis_encoder.js`;\n\nlet loadBasisTranscoderPromise;\n\n/**\n * Loads wasm transcoder module\n * @param options\n * @returns {BasisFile} promise\n */\nexport async function loadBasisTrascoderModule(options) {\n const modules = options.modules || {};\n if (modules.basis) {\n return modules.basis;\n }\n\n loadBasisTranscoderPromise = loadBasisTranscoderPromise || loadBasisTrascoder(options);\n return await loadBasisTranscoderPromise;\n}\n\n/**\n * Loads wasm transcoder module\n * @param options\n * @returns {BasisFile} promise\n */\nasync function loadBasisTrascoder(options) {\n let BASIS = null;\n let wasmBinary = null;\n\n [BASIS, wasmBinary] = await Promise.all([\n await loadLibrary('basis_transcoder.js', 'textures', options),\n await loadLibrary('basis_transcoder.wasm', 'textures', options)\n ]);\n\n // Depends on how import happened...\n // @ts-ignore TS2339: Property does not exist on type\n BASIS = BASIS || globalThis.BASIS;\n return await initializeBasisTrascoderModule(BASIS, wasmBinary);\n}\n\n/**\n * Initialize wasm transcoder module\n * @param BasisModule - js part of the module\n * @param wasmBinary - wasm part of the module\n * @returns {BasisFile} promise\n */\nfunction initializeBasisTrascoderModule(BasisModule, wasmBinary) {\n const options: {wasmBinary?} = {};\n\n if (wasmBinary) {\n options.wasmBinary = wasmBinary;\n }\n\n return new Promise((resolve) => {\n // if you try to return BasisModule the browser crashes!\n BasisModule(options).then((module) => {\n const {BasisFile, initializeBasis} = module;\n initializeBasis();\n resolve({BasisFile});\n });\n });\n}\n\nlet loadBasisEncoderPromise;\n\n/**\n * Loads wasm encoder module\n * @param options\n * @returns {BasisFile, KTX2File} promise\n */\nexport async function loadBasisEncoderModule(options) {\n const modules = options.modules || {};\n if (modules.basisEncoder) {\n return modules.basisEncoder;\n }\n\n loadBasisEncoderPromise = loadBasisEncoderPromise || loadBasisEncoder(options);\n return await loadBasisEncoderPromise;\n}\n\n/**\n * Loads wasm encoder module\n * @param options\n * @returns {BasisFile, KTX2File} promise\n */\nasync function loadBasisEncoder(options) {\n let BASIS_ENCODER = null;\n let wasmBinary = null;\n\n [BASIS_ENCODER, wasmBinary] = await Promise.all([\n await loadLibrary(BASIS_CDN_ENCODER_JS, 'textures', options),\n await loadLibrary(BASIS_CDN_ENCODER_WASM, 'textures', options)\n ]);\n\n // Depends on how import happened...\n // @ts-ignore TS2339: Property does not exist on type\n BASIS_ENCODER = BASIS_ENCODER || globalThis.BASIS;\n return await initializeBasisEncoderModule(BASIS_ENCODER, wasmBinary);\n}\n\n/**\n * Initialize wasm transcoder module\n * @param BasisEncoderModule - js part of the module\n * @param wasmBinary - wasm part of the module\n * @returns {BasisFile, KTX2File} promise\n */\nfunction initializeBasisEncoderModule(BasisEncoderModule, wasmBinary) {\n const options: {wasmBinary?} = {};\n\n if (wasmBinary) {\n options.wasmBinary = wasmBinary;\n }\n\n return new Promise((resolve) => {\n // if you try to return BasisModule the browser crashes!\n BasisEncoderModule(options).then((module) => {\n const {BasisFile, KTX2File, initializeBasis, BasisEncoder} = module;\n initializeBasis();\n resolve({BasisFile, KTX2File, BasisEncoder});\n });\n });\n}\n"],"file":"basis-module-loader.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/parsers/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","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":"AAAA,SAAQA,sBAAR,EAAgCC,wBAAhC,QAA+D,uBAA/D;AACA,SAAQC,uBAAR,QAAsC,kBAAtC;AACA,SAAQC,6BAAR,QAA4C,0BAA5C;AACA,SAAQC,KAAR,QAAoB,aAApB;AAEA,MAAMC,YAAY,GAAG;AACnBC,EAAAA,IAAI,EAAE;AACJC,IAAAA,WAAW,EAAE,CADT;AAEJC,IAAAA,UAAU,EAAE,IAFR;AAGJC,IAAAA,MAAM,EAAEP,uBAAuB,CAACQ;AAH5B,GADa;AAMnBC,EAAAA,IAAI,EAAE;AAACJ,IAAAA,WAAW,EAAE,CAAd;AAAiBC,IAAAA,UAAU,EAAE;AAA7B,GANa;AAOnBI,EAAAA,GAAG,EAAE;AACHL,IAAAA,WAAW,EAAE,CADV;AAEHC,IAAAA,UAAU,EAAE,IAFT;AAGHC,IAAAA,MAAM,EAAEP,uBAAuB,CAACW;AAH7B,GAPc;AAYnBC,EAAAA,GAAG,EAAE;AACHP,IAAAA,WAAW,EAAE,CADV;AAEHC,IAAAA,UAAU,EAAE,IAFT;AAGHC,IAAAA,MAAM,EAAEP,uBAAuB,CAACa;AAH7B,GAZc;AAiBnBC,EAAAA,GAAG,EAAE;AAACT,IAAAA,WAAW,EAAE,CAAd;AAAiBC,IAAAA,UAAU,EAAE;AAA7B,GAjBc;AAkBnBS,EAAAA,GAAG,EAAE;AAACV,IAAAA,WAAW,EAAE,CAAd;AAAiBC,IAAAA,UAAU,EAAE;AAA7B,GAlBc;AAmBnB,wBAAsB;AAACD,IAAAA,WAAW,EAAE,CAAd;AAAiBC,IAAAA,UAAU,EAAE;AAA7B,GAnBH;AAoBnB,YAAU;AAACD,IAAAA,WAAW,EAAE,CAAd;AAAiBC,IAAAA,UAAU,EAAE;AAA7B,GApBS;AAqBnB,kBAAgB;AACdD,IAAAA,WAAW,EAAE,CADC;AAEdC,IAAAA,UAAU,EAAE,IAFE;AAGdC,IAAAA,MAAM,EAAEP,uBAAuB,CAACgB;AAHlB,GArBG;AA0BnB,mBAAiB;AACfX,IAAAA,WAAW,EAAE,CADE;AAEfC,IAAAA,UAAU,EAAE,IAFG;AAGfC,IAAAA,MAAM,EAAEP,uBAAuB,CAACiB;AAHjB,GA1BE;AA+BnB,cAAY;AACVZ,IAAAA,WAAW,EAAE,EADH;AAEVC,IAAAA,UAAU,EAAE,IAFF;AAGVC,IAAAA,MAAM,EAAEP,uBAAuB,CAACkB;AAHtB,GA/BO;AAoCnB,aAAW;AAACb,IAAAA,WAAW,EAAE,EAAd;AAAkBC,IAAAA,UAAU,EAAE;AAA9B,GApCQ;AAqCnB,iCAA+B;AAACD,IAAAA,WAAW,EAAE,EAAd;AAAkBC,IAAAA,UAAU,EAAE;AAA9B,GArCZ;AAsCnBa,EAAAA,MAAM,EAAE;AAACd,IAAAA,WAAW,EAAE,EAAd;AAAkBC,IAAAA,UAAU,EAAE;AAA9B,GAtCW;AAuCnBc,EAAAA,MAAM,EAAE;AAACf,IAAAA,WAAW,EAAE,EAAd;AAAkBC,IAAAA,UAAU,EAAE;AAA9B,GAvCW;AAwCnBe,EAAAA,MAAM,EAAE;AAAChB,IAAAA,WAAW,EAAE,EAAd;AAAkBC,IAAAA,UAAU,EAAE;AAA9B,GAxCW;AAyCnBgB,EAAAA,QAAQ,EAAE;AAACjB,IAAAA,WAAW,EAAE,EAAd;AAAkBC,IAAAA,UAAU,EAAE;AAA9B;AAzCS,CAArB;AAkDA,eAAe,eAAeiB,UAAf,CAA0BC,IAA1B,EAAgCC,OAAhC,EAAyC;AACtD,MAAIA,OAAO,CAACC,KAAR,CAAcC,eAAd,KAAkC,MAAtC,EAA8C;AAC5C,QAAIzB,KAAK,CAACsB,IAAD,CAAT,EAAiB;AACf,YAAMI,gBAAgB,GAAG,MAAM9B,sBAAsB,CAAC2B,OAAD,CAArD;AACA,aAAOI,aAAa,CAACD,gBAAgB,CAACE,QAAlB,EAA4BN,IAA5B,EAAkCC,OAAlC,CAApB;AACD;;AACD,UAAM;AAACM,MAAAA;AAAD,QAAc,MAAMhC,wBAAwB,CAAC0B,OAAD,CAAlD;AACA,WAAOO,cAAc,CAACD,SAAD,EAAYP,IAAZ,EAAkBC,OAAlB,CAArB;AACD;;AACD,UAAQA,OAAO,CAACC,KAAR,CAAcO,MAAtB;AACE,SAAK,SAAL;AACE,YAAML,gBAAgB,GAAG,MAAM9B,sBAAsB,CAAC2B,OAAD,CAArD;;AACA,cAAQA,OAAO,CAACC,KAAR,CAAcC,eAAtB;AACE,aAAK,MAAL;AACE,iBAAOE,aAAa,CAACD,gBAAgB,CAACE,QAAlB,EAA4BN,IAA5B,EAAkCC,OAAlC,CAApB;;AACF,aAAK,OAAL;AACA;AACE,iBAAOO,cAAc,CAACJ,gBAAgB,CAACG,SAAlB,EAA6BP,IAA7B,EAAmCC,OAAnC,CAArB;AALJ;;AAOF,SAAK,YAAL;AACA;AACE,YAAM;AAACM,QAAAA;AAAD,UAAc,MAAMhC,wBAAwB,CAAC0B,OAAD,CAAlD;AACA,aAAOO,cAAc,CAACD,SAAD,EAAYP,IAAZ,EAAkBC,OAAlB,CAArB;AAbJ;AAeD;;AASD,SAASO,cAAT,CAAwBD,SAAxB,EAAmCP,IAAnC,EAAyCC,OAAzC,EAAkD;AAChD,QAAMS,SAAS,GAAG,IAAIH,SAAJ,CAAc,IAAII,UAAJ,CAAeX,IAAf,CAAd,CAAlB;;AAEA,MAAI;AACF,QAAI,CAACU,SAAS,CAACE,gBAAV,EAAL,EAAmC;AACjC,aAAO,IAAP;AACD;;AAED,UAAMC,UAAU,GAAGH,SAAS,CAACI,YAAV,EAAnB;AACA,UAAMC,MAAM,GAAG,EAAf;;AAEA,SAAK,IAAIC,UAAU,GAAG,CAAtB,EAAyBA,UAAU,GAAGH,UAAtC,EAAkDG,UAAU,EAA5D,EAAgE;AAC9D,YAAMC,WAAW,GAAGP,SAAS,CAACQ,YAAV,CAAuBF,UAAvB,CAApB;AACA,YAAMG,MAAM,GAAG,EAAf;;AAEA,WAAK,IAAIC,UAAU,GAAG,CAAtB,EAAyBA,UAAU,GAAGH,WAAtC,EAAmDG,UAAU,EAA7D,EAAiE;AAC/DD,QAAAA,MAAM,CAACE,IAAP,CAAYC,cAAc,CAACZ,SAAD,EAAYM,UAAZ,EAAwBI,UAAxB,EAAoCnB,OAApC,CAA1B;AACD;;AAEDc,MAAAA,MAAM,CAACM,IAAP,CAAYF,MAAZ;AACD;;AAED,WAAOJ,MAAP;AACD,GApBD,SAoBU;AACRL,IAAAA,SAAS,CAACa,KAAV;AACAb,IAAAA,SAAS,CAACc,MAAV;AACD;AACF;;AAUD,SAASF,cAAT,CAAwBZ,SAAxB,EAAmCM,UAAnC,EAA+CI,UAA/C,EAA2DnB,OAA3D,EAAoE;AAClE,QAAMwB,KAAK,GAAGf,SAAS,CAACgB,aAAV,CAAwBV,UAAxB,EAAoCI,UAApC,CAAd;AACA,QAAMO,MAAM,GAAGjB,SAAS,CAACkB,cAAV,CAAyBZ,UAAzB,EAAqCI,UAArC,CAAf;AAGA,QAAMS,QAAQ,GAAGnB,SAAS,CAACoB,WAAV,EAAjB;AAGA,QAAM;AAAChD,IAAAA,UAAD;AAAaC,IAAAA,MAAb;AAAqBF,IAAAA;AAArB,MAAoCkD,eAAe,CAAC9B,OAAD,EAAU4B,QAAV,CAAzD;AAEA,QAAMG,WAAW,GAAGtB,SAAS,CAACuB,6BAAV,CAAwCjB,UAAxC,EAAoDI,UAApD,EAAgEvC,WAAhE,CAApB;AACA,QAAMqD,WAAW,GAAG,IAAIvB,UAAJ,CAAeqB,WAAf,CAApB;;AAEA,MAAI,CAACtB,SAAS,CAACY,cAAV,CAAyBY,WAAzB,EAAsClB,UAAtC,EAAkDI,UAAlD,EAA8DvC,WAA9D,EAA2E,CAA3E,EAA8E,CAA9E,CAAL,EAAuF;AACrF,WAAO,IAAP;AACD;;AAED,SAAO;AAEL4C,IAAAA,KAFK;AAGLE,IAAAA,MAHK;AAIL3B,IAAAA,IAAI,EAAEkC,WAJD;AAKLpD,IAAAA,UALK;AASL+C,IAAAA,QATK;AAUL9C,IAAAA;AAVK,GAAP;AAYD;;AASD,SAASsB,aAAT,CAAuBC,QAAvB,EAAiCN,IAAjC,EAAuCC,OAAvC,EAAgD;AAC9C,QAAMkC,QAAQ,GAAG,IAAI7B,QAAJ,CAAa,IAAIK,UAAJ,CAAeX,IAAf,CAAb,CAAjB;;AAEA,MAAI;AACF,QAAI,CAACmC,QAAQ,CAACvB,gBAAT,EAAL,EAAkC;AAChC,aAAO,IAAP;AACD;;AACD,UAAMK,WAAW,GAAGkB,QAAQ,CAACC,SAAT,EAApB;AACA,UAAMjB,MAAM,GAAG,EAAf;;AAEA,SAAK,IAAIC,UAAU,GAAG,CAAtB,EAAyBA,UAAU,GAAGH,WAAtC,EAAmDG,UAAU,EAA7D,EAAiE;AAC/DD,MAAAA,MAAM,CAACE,IAAP,CAAYgB,kBAAkB,CAACF,QAAD,EAAWf,UAAX,EAAuBnB,OAAvB,CAA9B;AACA;AACD;;AAED,WAAOkB,MAAP;AACD,GAbD,SAaU;AACRgB,IAAAA,QAAQ,CAACZ,KAAT;AACAY,IAAAA,QAAQ,CAACX,MAAT;AACD;AACF;;AASD,SAASa,kBAAT,CAA4BF,QAA5B,EAAsCf,UAAtC,EAAkDnB,OAAlD,EAA2D;AACzD,QAAM;AAACqC,IAAAA,SAAD;AAAYX,IAAAA,MAAZ;AAAoBF,IAAAA;AAApB,MAA6BU,QAAQ,CAACI,iBAAT,CAA2BnB,UAA3B,EAAuC,CAAvC,EAA0C,CAA1C,CAAnC;AAGA,QAAM;AAACtC,IAAAA,UAAD;AAAaC,IAAAA,MAAb;AAAqBF,IAAAA;AAArB,MAAoCkD,eAAe,CAAC9B,OAAD,EAAUqC,SAAV,CAAzD;AAEA,QAAMN,WAAW,GAAGG,QAAQ,CAACF,6BAAT,CAClBb,UADkB,EAElB,CAFkB,EAGlB,CAHkB,EAIlBvC,WAJkB,CAApB;AAMA,QAAMqD,WAAW,GAAG,IAAIvB,UAAJ,CAAeqB,WAAf,CAApB;;AAEA,MACE,CAACG,QAAQ,CAACb,cAAT,CACCY,WADD,EAECd,UAFD,EAGC,CAHD,EAIC,CAJD,EAKCvC,WALD,EAMC,CAND,EAOC,CAAC,CAPF,EAQC,CAAC,CARF,CADH,EAWE;AACA,WAAO,IAAP;AACD;;AAED,SAAO;AAEL4C,IAAAA,KAFK;AAGLE,IAAAA,MAHK;AAIL3B,IAAAA,IAAI,EAAEkC,WAJD;AAKLpD,IAAAA,UALK;AASLwD,IAAAA,SATK;AAULvD,IAAAA;AAVK,GAAP;AAYD;;AAQD,SAASgD,eAAT,CAAyB9B,OAAzB,EAAkC4B,QAAlC,EAA4C;AAC1C,MAAI9C,MAAM,GAAGkB,OAAO,IAAIA,OAAO,CAACC,KAAnB,IAA4BD,OAAO,CAACC,KAAR,CAAcnB,MAAvD;;AACA,MAAIA,MAAM,KAAK,MAAf,EAAuB;AACrBA,IAAAA,MAAM,GAAGyD,0BAA0B,EAAnC;AACD;;AACD,MAAI,OAAOzD,MAAP,KAAkB,QAAtB,EAAgC;AAC9BA,IAAAA,MAAM,GAAG8C,QAAQ,GAAG9C,MAAM,CAAC0D,KAAV,GAAkB1D,MAAM,CAAC2D,OAA1C;AACD;;AACD3D,EAAAA,MAAM,GAAGA,MAAM,CAAC4D,WAAP,EAAT;AACA,SAAOhE,YAAY,CAACI,MAAD,CAAnB;AACD;;AAMD,OAAO,SAASyD,0BAAT,GAAsC;AAC3C,QAAMI,gBAAgB,GAAGnE,6BAA6B,EAAtD;;AACA,MAAImE,gBAAgB,CAACC,GAAjB,CAAqB,MAArB,CAAJ,EAAkC;AAChC,WAAO,UAAP;AACD,GAFD,MAEO,IAAID,gBAAgB,CAACC,GAAjB,CAAqB,KAArB,CAAJ,EAAiC;AACtC,WAAO;AACLJ,MAAAA,KAAK,EAAE,KADF;AAELC,MAAAA,OAAO,EAAE;AAFJ,KAAP;AAID,GALM,MAKA,IAAIE,gBAAgB,CAACC,GAAjB,CAAqB,OAArB,CAAJ,EAAmC;AACxC,WAAO;AACLJ,MAAAA,KAAK,EAAE,eADF;AAELC,MAAAA,OAAO,EAAE;AAFJ,KAAP;AAID,GALM,MAKA,IAAIE,gBAAgB,CAACC,GAAjB,CAAqB,MAArB,CAAJ,EAAkC;AACvC,WAAO,MAAP;AACD,GAFM,MAEA,IAAID,gBAAgB,CAACC,GAAjB,CAAqB,MAArB,CAAJ,EAAkC;AACvC,WAAO,MAAP;AACD;;AACD,SAAO,QAAP;AACD","sourcesContent":["import {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\nconst OutputFormat = {\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 {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","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_EXTENSIONS_CONSTANTS} from '../gl-extensions';\nimport {getSupportedGPUTextureFormats} from '../utils/texture-formats';\nimport {isKTX} from './parse-ktx';\n\nconst OutputFormat = {\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 {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: any[] = [];\n\n for (let imageIndex = 0; imageIndex < imageCount; imageIndex++) {\n const levelsCount = basisFile.getNumLevels(imageIndex);\n const levels: any[] = [];\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: any[] = [];\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,2 +1,2 @@
1
- export const VERSION = typeof "3.1.0-beta.3" !== 'undefined' ? "3.1.0-beta.3" : 'beta';
1
+ export const VERSION = typeof "3.1.1" !== 'undefined' ? "3.1.1" : 'latest';
2
2
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/utils/version.ts"],"names":["VERSION"],"mappings":"AAIA,OAAO,MAAMA,OAAO,GAAG,0BAAuB,WAAvB,oBAAmD,MAAnE","sourcesContent":["// Version constant cannot be imported, it needs to correspond to the build version of **this** module.\n// __VERSION__ is injected by babel-plugin-version-inline\n// TODO: use 'latest' instead of 'beta' when 3.0.0 version is released as 'latest'\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'beta';\n"],"file":"version.js"}
1
+ {"version":3,"sources":["../../../../src/lib/utils/version.ts"],"names":["VERSION"],"mappings":"AAGA,OAAO,MAAMA,OAAO,GAAG,mBAAuB,WAAvB,aAAmD,QAAnE","sourcesContent":["// Version constant cannot be imported, it needs to correspond to the build version of **this** module.\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n"],"file":"version.js"}
@@ -6,5 +6,5 @@ import type { ImageDataType } from '@loaders.gl/images';
6
6
  * @param image
7
7
  * @param options
8
8
  */
9
- export declare function encodeKTX2BasisTexture(image: ImageDataType, options?: any): Promise<Uint8Array>;
9
+ export declare function encodeKTX2BasisTexture(image: ImageDataType, options?: any): Promise<ArrayBuffer>;
10
10
  //# sourceMappingURL=encode-ktx2-basis-texture.d.ts.map
@@ -1 +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,UAAU,CAAC,CA8BrB"}
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"}
@@ -26,7 +26,7 @@ async function encodeKTX2BasisTexture(image, options = {}) {
26
26
  basisEncoder.setUASTC(encodeUASTC);
27
27
  basisEncoder.setMipGen(mipmaps);
28
28
  const numOutputBytes = basisEncoder.encode(basisFileData);
29
- const actualKTX2FileData = new Uint8Array(basisFileData.buffer, 0, numOutputBytes);
29
+ const actualKTX2FileData = basisFileData.subarray(0, numOutputBytes).buffer;
30
30
  return actualKTX2FileData;
31
31
  }
32
32
  catch (error) {
@@ -1,2 +1,4 @@
1
- export declare function encodeImageURLToCompressedTextureURL(inputUrl: any, outputUrl: any): Promise<any>;
1
+ export declare function encodeImageURLToCompressedTextureURL(inputUrl: string, outputUrl: string, options?: {
2
+ cwd?: string;
3
+ }): Promise<string>;
2
4
  //# sourceMappingURL=encode-texture.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"encode-texture.d.ts","sourceRoot":"","sources":["../../../src/lib/encoders/encode-texture.ts"],"names":[],"mappings":"AAOA,wBAAsB,oCAAoC,CAAC,QAAQ,KAAA,EAAE,SAAS,KAAA,gBAoB7E"}
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"}
@@ -2,11 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.encodeImageURLToCompressedTextureURL = void 0;
4
4
  const worker_utils_1 = require("@loaders.gl/worker-utils");
5
- const MODULE_ROOT = `${__dirname}/../../..`;
6
5
  /*
7
6
  * @see https://github.com/TimvanScherpenzeel/texture-compressor
8
7
  */
9
- async function encodeImageURLToCompressedTextureURL(inputUrl, outputUrl) {
8
+ async function encodeImageURLToCompressedTextureURL(inputUrl, outputUrl, options) {
10
9
  // prettier-ignore
11
10
  const args = [
12
11
  // Note: our actual executable is `npx`, so `texture-compressor` is an argument
@@ -21,9 +20,7 @@ async function encodeImageURLToCompressedTextureURL(inputUrl, outputUrl) {
21
20
  await childProcess.start({
22
21
  command: 'npx',
23
22
  arguments: args,
24
- spawn: {
25
- cwd: MODULE_ROOT
26
- }
23
+ spawn: options
27
24
  });
28
25
  return outputUrl;
29
26
  }
@@ -4,26 +4,12 @@
4
4
  * @param {*} options
5
5
  * @returns compressed texture data
6
6
  */
7
- export default function parseBasis(data: ArrayBuffer, options: any): Promise<({
8
- width: any;
9
- height: any;
10
- data: Uint8Array;
11
- compressed: any;
12
- alphaFlag: any;
13
- format: any;
14
- } | null)[] | ({
15
- width: any;
16
- height: any;
17
- data: Uint8Array;
18
- compressed: any;
19
- hasAlpha: any;
20
- format: any;
21
- } | null)[][] | null>;
7
+ export default function parseBasis(data: any, options: any): Promise<any[] | null>;
22
8
  /**
23
9
  * Select transcode format from the list of supported formats
24
10
  * @returns key for OutputFormat map
25
11
  */
26
- export function selectSupportedBasisFormat(): "etc1" | "etc2" | "astc-4x4" | "rgb565" | {
12
+ export declare function selectSupportedBasisFormat(): "etc1" | "etc2" | "astc-4x4" | "rgb565" | {
27
13
  alpha: string;
28
14
  noAlpha: string;
29
15
  };
@@ -1 +1 @@
1
- {"version":3,"file":"parse-basis.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-basis.js"],"names":[],"mappings":"AAiDA;;;;;GAKG;AACH,yCAJW,WAAW;;;;;;;;;;;;;;sBA4BrB;AA8KD;;;GAGG;AACH;;;EAoBC"}
1
+ {"version":3,"file":"parse-basis.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-basis.ts"],"names":[],"mappings":"AAiDA;;;;;GAKG;AACH,wBAA8B,UAAU,CAAC,IAAI,KAAA,EAAE,OAAO,KAAA,yBAwBrD;AA8KD;;;GAGG;AACH,wBAAgB,0BAA0B;;;EAoBzC"}
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/version.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,OAAO,KAA4D,CAAC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/version.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,OAAO,KAA8D,CAAC"}
@@ -3,6 +3,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
4
  // Version constant cannot be imported, it needs to correspond to the build version of **this** module.
5
5
  // __VERSION__ is injected by babel-plugin-version-inline
6
- // TODO: use 'latest' instead of 'beta' when 3.0.0 version is released as 'latest'
7
6
  // @ts-ignore TS2304: Cannot find name '__VERSION__'.
8
- exports.VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'beta';
7
+ exports.VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
@@ -1,6 +1,6 @@
1
1
  (() => {
2
2
  // src/lib/utils/version.ts
3
- var VERSION = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
3
+ var VERSION = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
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.1.0-beta.3",
3
+ "version": "3.1.1",
4
4
  "description": "Framework-independent loaders for compressed and super compressed (basis) textures ",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -42,11 +42,11 @@
42
42
  "build-crunch-worker": "esbuild src/workers/crunch-worker.ts --bundle --outfile=dist/crunch-worker.js"
43
43
  },
44
44
  "dependencies": {
45
- "@loaders.gl/images": "3.1.0-beta.3",
46
- "@loaders.gl/loader-utils": "3.1.0-beta.3",
47
- "@loaders.gl/worker-utils": "3.1.0-beta.3",
45
+ "@loaders.gl/images": "3.1.1",
46
+ "@loaders.gl/loader-utils": "3.1.1",
47
+ "@loaders.gl/worker-utils": "3.1.1",
48
48
  "ktx-parse": "^0.0.4",
49
49
  "texture-compressor": "^1.0.2"
50
50
  },
51
- "gitHead": "3537c382b3ea4e092b24b6f94c3edee72076039c"
51
+ "gitHead": "ed3c238bcb68ab5a2d4ddc64319f6f4c02a20df7"
52
52
  }
@@ -11,7 +11,7 @@ import {loadBasisEncoderModule} from '../parsers/basis-module-loader';
11
11
  export async function encodeKTX2BasisTexture(
12
12
  image: ImageDataType,
13
13
  options: any = {}
14
- ): Promise<Uint8Array> {
14
+ ): Promise<ArrayBuffer> {
15
15
  // TODO remove default values after writer options will be normalized like it done in load module.
16
16
  const {useSRGB = false, qualityLevel = 10, encodeUASTC = false, mipmaps = false} = options;
17
17
  const {BasisEncoder} = await loadBasisEncoderModule(options);
@@ -32,7 +32,7 @@ export async function encodeKTX2BasisTexture(
32
32
 
33
33
  const numOutputBytes = basisEncoder.encode(basisFileData);
34
34
 
35
- const actualKTX2FileData = new Uint8Array(basisFileData.buffer, 0, numOutputBytes);
35
+ const actualKTX2FileData = basisFileData.subarray(0, numOutputBytes).buffer;
36
36
  return actualKTX2FileData;
37
37
  } catch (error) {
38
38
  // eslint-disable-next-line no-console
@@ -1,11 +1,13 @@
1
1
  import {ChildProcessProxy} from '@loaders.gl/worker-utils';
2
2
 
3
- const MODULE_ROOT = `${__dirname}/../../..`;
4
-
5
3
  /*
6
4
  * @see https://github.com/TimvanScherpenzeel/texture-compressor
7
5
  */
8
- export async function encodeImageURLToCompressedTextureURL(inputUrl, outputUrl) {
6
+ export async function encodeImageURLToCompressedTextureURL(
7
+ inputUrl: string,
8
+ outputUrl: string,
9
+ options?: {cwd?: string}
10
+ ): Promise<string> {
9
11
  // prettier-ignore
10
12
  const args = [
11
13
  // Note: our actual executable is `npx`, so `texture-compressor` is an argument
@@ -20,9 +22,7 @@ export async function encodeImageURLToCompressedTextureURL(inputUrl, outputUrl)
20
22
  await childProcess.start({
21
23
  command: 'npx',
22
24
  arguments: args,
23
- spawn: {
24
- cwd: MODULE_ROOT
25
- }
25
+ spawn: options
26
26
  });
27
27
  return outputUrl;
28
28
  }
@@ -95,11 +95,11 @@ function parseBasisFile(BasisFile, data, options) {
95
95
  }
96
96
 
97
97
  const imageCount = basisFile.getNumImages();
98
- const images = [];
98
+ const images: any[] = [];
99
99
 
100
100
  for (let imageIndex = 0; imageIndex < imageCount; imageIndex++) {
101
101
  const levelsCount = basisFile.getNumLevels(imageIndex);
102
- const levels = [];
102
+ const levels: any[] = [];
103
103
 
104
104
  for (let levelIndex = 0; levelIndex < levelsCount; levelIndex++) {
105
105
  levels.push(transcodeImage(basisFile, imageIndex, levelIndex, options));
@@ -169,7 +169,7 @@ function parseKTX2File(KTX2File, data, options) {
169
169
  return null;
170
170
  }
171
171
  const levelsCount = ktx2File.getLevels();
172
- const levels = [];
172
+ const levels: any[] = [];
173
173
 
174
174
  for (let levelIndex = 0; levelIndex < levelsCount; levelIndex++) {
175
175
  levels.push(transcodeKTX2Image(ktx2File, levelIndex, options));
@@ -1,5 +1,4 @@
1
1
  // Version constant cannot be imported, it needs to correspond to the build version of **this** module.
2
2
  // __VERSION__ is injected by babel-plugin-version-inline
3
- // TODO: use 'latest' instead of 'beta' when 3.0.0 version is released as 'latest'
4
3
  // @ts-ignore TS2304: Cannot find name '__VERSION__'.
5
- export const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'beta';
4
+ export const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
@@ -1,42 +0,0 @@
1
- import {read} from 'ktx-parse';
2
- import {extractMipmapImages} from '../utils/extract-mipmap-images';
3
- import {mapVkFormatToWebGL} from '../utils/ktx-format-helper';
4
- const KTX2_ID = [
5
- // '´', 'K', 'T', 'X', '2', '0', 'ª', '\r', '\n', '\x1A', '\n'
6
- 0xab, 0x4b, 0x54, 0x58, 0x20, 0x32, 0x30, 0xbb, 0x0d, 0x0a, 0x1a, 0x0a
7
- ];
8
- // eslint-disable-next-line complexity
9
- export function isKTX(data) {
10
- // const id = new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
11
- const id = new Uint8Array(data);
12
- const notKTX =
13
- id.byteLength < KTX2_ID.length ||
14
- id[0] !== KTX2_ID[0] || // '´'
15
- id[1] !== KTX2_ID[1] || // 'K'
16
- id[2] !== KTX2_ID[2] || // 'T'
17
- id[3] !== KTX2_ID[3] || // 'X'
18
- id[4] !== KTX2_ID[4] || // ' '
19
- id[5] !== KTX2_ID[5] || // '2'
20
- id[6] !== KTX2_ID[6] || // '0'
21
- id[7] !== KTX2_ID[7] || // 'ª'
22
- id[8] !== KTX2_ID[8] || // '\r'
23
- id[9] !== KTX2_ID[9] || // '\n'
24
- id[10] !== KTX2_ID[10] || // '\x1A'
25
- id[11] !== KTX2_ID[11]; // '\n'
26
- return !notKTX;
27
- }
28
- export function parseKTX(arrayBuffer) {
29
- const uint8Array = new Uint8Array(arrayBuffer);
30
- const ktx = read(uint8Array);
31
- const mipMapLevels = Math.max(1, ktx.levels.length);
32
- const width = ktx.pixelWidth;
33
- const height = ktx.pixelHeight;
34
- const internalFormat = mapVkFormatToWebGL(ktx.vkFormat);
35
- return extractMipmapImages(ktx.levels, {
36
- mipMapLevels,
37
- width,
38
- height,
39
- sizeFunction: (level) => level.uncompressedByteLength,
40
- internalFormat
41
- });
42
- }
@@ -1,82 +0,0 @@
1
- function systemIsLittleEndian() {
2
- const a = new Uint32Array([0x12345678]);
3
- const b = new Uint8Array(a.buffer, a.byteOffset, a.byteLength);
4
- return !(b[0] === 0x12);
5
- }
6
- const LITTLE_ENDIAN_OS = systemIsLittleEndian();
7
- // The basic string format consists of 3 characters:
8
- // 1. a character describing the byteorder of the data (<: little-endian, >: big-endian, |: not-relevant)
9
- // 2. a character code giving the basic type of the array
10
- // 3. an integer providing the number of bytes the type uses.
11
- // https://numpy.org/doc/stable/reference/arrays.interface.html
12
- //
13
- // Here I only include the second and third characters, and check endianness
14
- // separately
15
- const DTYPES = {
16
- u1: Uint8Array,
17
- i1: Int8Array,
18
- u2: Uint16Array,
19
- i2: Int16Array,
20
- u4: Uint32Array,
21
- i4: Int32Array,
22
- f4: Float32Array,
23
- f8: Float64Array
24
- };
25
- export function parseNPY(arrayBuffer, options) {
26
- if (!arrayBuffer) {
27
- return null;
28
- }
29
- const view = new DataView(arrayBuffer);
30
- const {header, headerEndOffset} = parseHeader(view);
31
- const numpyType = header.descr;
32
- const ArrayType = DTYPES[numpyType.slice(1, 3)];
33
- if (!ArrayType) {
34
- // eslint-disable-next-line no-console, no-undef
35
- console.warn(`Decoding of npy dtype not implemented: ${numpyType}`);
36
- return null;
37
- }
38
- const nArrayElements = header.shape?.reduce((a, b) => a * b);
39
- const arrayByteLength = nArrayElements * ArrayType.BYTES_PER_ELEMENT;
40
- const data = new ArrayType(arrayBuffer.slice(headerEndOffset, headerEndOffset + arrayByteLength));
41
- // Swap endianness if needed
42
- if ((numpyType[0] === '>' && LITTLE_ENDIAN_OS) || (numpyType[0] === '<' && !LITTLE_ENDIAN_OS)) {
43
- // eslint-disable-next-line no-console, no-undef
44
- console.warn('Data is wrong endianness, byte swapping not yet implemented.');
45
- }
46
- return {
47
- data,
48
- header
49
- };
50
- }
51
- /**
52
- * Parse NPY header
53
- *
54
- * @param view
55
- * @return
56
- */
57
- function parseHeader(view) {
58
- const majorVersion = view.getUint8(6);
59
- // const minorVersion = view.getUint8(7);
60
- let offset = 8;
61
- let headerLength;
62
- if (majorVersion >= 2) {
63
- headerLength = view.getUint32(8, true);
64
- offset += 4;
65
- } else {
66
- headerLength = view.getUint16(8, true);
67
- offset += 2;
68
- }
69
- const encoding = majorVersion <= 2 ? 'latin1' : 'utf-8';
70
- const decoder = new TextDecoder(encoding);
71
- const headerArray = new Uint8Array(view.buffer, offset, headerLength);
72
- const headerText = decoder.decode(headerArray);
73
- offset += headerLength;
74
- const header = JSON.parse(
75
- headerText
76
- .replace(/'/g, '"')
77
- .replace('False', 'false')
78
- .replace('(', '[')
79
- .replace(/,*\),*/g, ']')
80
- );
81
- return {header, headerEndOffset: offset};
82
- }