@loaders.gl/textures 3.4.0-alpha.2 → 3.4.0-alpha.3

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 (140) hide show
  1. package/dist/basis-nodejs-worker.js +124 -45
  2. package/dist/basis-worker.js +3 -3
  3. package/dist/compressed-texture-worker.js +3 -3
  4. package/dist/crunch-worker.js +2 -2
  5. package/dist/es5/basis-loader.js +0 -2
  6. package/dist/es5/basis-loader.js.map +1 -1
  7. package/dist/es5/compressed-texture-loader.js +24 -31
  8. package/dist/es5/compressed-texture-loader.js.map +1 -1
  9. package/dist/es5/compressed-texture-writer.js +0 -1
  10. package/dist/es5/compressed-texture-writer.js.map +1 -1
  11. package/dist/es5/crunch-loader.js +0 -2
  12. package/dist/es5/crunch-loader.js.map +1 -1
  13. package/dist/es5/index.js +0 -2
  14. package/dist/es5/index.js.map +1 -1
  15. package/dist/es5/ktx2-basis-writer-nodejs.js.map +1 -1
  16. package/dist/es5/ktx2-basis-writer.js +0 -1
  17. package/dist/es5/ktx2-basis-writer.js.map +1 -1
  18. package/dist/es5/lib/encoders/encode-ktx.js.map +1 -1
  19. package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js +36 -38
  20. package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js.map +1 -1
  21. package/dist/es5/lib/encoders/encode-texture.js +15 -18
  22. package/dist/es5/lib/encoders/encode-texture.js.map +1 -1
  23. package/dist/es5/lib/gl-extensions.js +0 -8
  24. package/dist/es5/lib/gl-extensions.js.map +1 -1
  25. package/dist/es5/lib/parsers/basis-module-loader.js +93 -104
  26. package/dist/es5/lib/parsers/basis-module-loader.js.map +1 -1
  27. package/dist/es5/lib/parsers/crunch-module-loader.js +31 -36
  28. package/dist/es5/lib/parsers/crunch-module-loader.js.map +1 -1
  29. package/dist/es5/lib/parsers/parse-basis.js +46 -59
  30. package/dist/es5/lib/parsers/parse-basis.js.map +1 -1
  31. package/dist/es5/lib/parsers/parse-compressed-texture.js.map +1 -1
  32. package/dist/es5/lib/parsers/parse-crunch.js +39 -49
  33. package/dist/es5/lib/parsers/parse-crunch.js.map +1 -1
  34. package/dist/es5/lib/parsers/parse-dds.js +0 -5
  35. package/dist/es5/lib/parsers/parse-dds.js.map +1 -1
  36. package/dist/es5/lib/parsers/parse-ktx.js +2 -16
  37. package/dist/es5/lib/parsers/parse-ktx.js.map +1 -1
  38. package/dist/es5/lib/parsers/parse-npy.js +0 -5
  39. package/dist/es5/lib/parsers/parse-npy.js.map +1 -1
  40. package/dist/es5/lib/parsers/parse-pvr.js +0 -20
  41. package/dist/es5/lib/parsers/parse-pvr.js.map +1 -1
  42. package/dist/es5/lib/texture-api/async-deep-map.js +93 -85
  43. package/dist/es5/lib/texture-api/async-deep-map.js.map +1 -1
  44. package/dist/es5/lib/texture-api/deep-load.js +28 -32
  45. package/dist/es5/lib/texture-api/deep-load.js.map +1 -1
  46. package/dist/es5/lib/texture-api/generate-url.js +0 -1
  47. package/dist/es5/lib/texture-api/generate-url.js.map +1 -1
  48. package/dist/es5/lib/texture-api/load-image-array.js +31 -35
  49. package/dist/es5/lib/texture-api/load-image-array.js.map +1 -1
  50. package/dist/es5/lib/texture-api/load-image-cube.js +59 -45
  51. package/dist/es5/lib/texture-api/load-image-cube.js.map +1 -1
  52. package/dist/es5/lib/texture-api/load-image.js +65 -72
  53. package/dist/es5/lib/texture-api/load-image.js.map +1 -1
  54. package/dist/es5/lib/utils/extract-mipmap-images.js.map +1 -1
  55. package/dist/es5/lib/utils/ktx-format-helper.js +0 -1
  56. package/dist/es5/lib/utils/ktx-format-helper.js.map +1 -1
  57. package/dist/es5/lib/utils/texture-formats.js +1 -4
  58. package/dist/es5/lib/utils/texture-formats.js.map +1 -1
  59. package/dist/es5/lib/utils/version.js +1 -1
  60. package/dist/es5/lib/utils/version.js.map +1 -1
  61. package/dist/es5/npy-loader.js +6 -11
  62. package/dist/es5/npy-loader.js.map +1 -1
  63. package/dist/es5/workers/basis-nodejs-worker.js.map +1 -1
  64. package/dist/es5/workers/basis-worker.js.map +1 -1
  65. package/dist/es5/workers/compressed-texture-worker.js.map +1 -1
  66. package/dist/es5/workers/crunch-worker.js.map +1 -1
  67. package/dist/es5/workers/ktx2-basis-writer-nodejs-worker.js +29 -31
  68. package/dist/es5/workers/ktx2-basis-writer-nodejs-worker.js.map +1 -1
  69. package/dist/es5/workers/ktx2-basis-writer-worker.js +29 -31
  70. package/dist/es5/workers/ktx2-basis-writer-worker.js.map +1 -1
  71. package/dist/es5/workers/npy-worker.js.map +1 -1
  72. package/dist/esm/basis-loader.js +0 -3
  73. package/dist/esm/basis-loader.js.map +1 -1
  74. package/dist/esm/bundle.js +0 -1
  75. package/dist/esm/bundle.js.map +1 -1
  76. package/dist/esm/compressed-texture-loader.js +1 -6
  77. package/dist/esm/compressed-texture-loader.js.map +1 -1
  78. package/dist/esm/compressed-texture-writer.js +0 -1
  79. package/dist/esm/compressed-texture-writer.js.map +1 -1
  80. package/dist/esm/crunch-loader.js +0 -2
  81. package/dist/esm/crunch-loader.js.map +1 -1
  82. package/dist/esm/index.js +0 -5
  83. package/dist/esm/index.js.map +1 -1
  84. package/dist/esm/ktx2-basis-writer-nodejs.js +0 -1
  85. package/dist/esm/ktx2-basis-writer-nodejs.js.map +1 -1
  86. package/dist/esm/ktx2-basis-writer.js +0 -2
  87. package/dist/esm/ktx2-basis-writer.js.map +1 -1
  88. package/dist/esm/lib/encoders/encode-ktx.js.map +1 -1
  89. package/dist/esm/lib/encoders/encode-ktx2-basis-texture.js +0 -1
  90. package/dist/esm/lib/encoders/encode-ktx2-basis-texture.js.map +1 -1
  91. package/dist/esm/lib/encoders/encode-texture.js +1 -2
  92. package/dist/esm/lib/encoders/encode-texture.js.map +1 -1
  93. package/dist/esm/lib/gl-extensions.js +0 -9
  94. package/dist/esm/lib/gl-extensions.js.map +1 -1
  95. package/dist/esm/lib/parsers/basis-module-loader.js +1 -11
  96. package/dist/esm/lib/parsers/basis-module-loader.js.map +1 -1
  97. package/dist/esm/lib/parsers/crunch-module-loader.js +0 -4
  98. package/dist/esm/lib/parsers/crunch-module-loader.js.map +1 -1
  99. package/dist/esm/lib/parsers/parse-basis.js +0 -13
  100. package/dist/esm/lib/parsers/parse-basis.js.map +1 -1
  101. package/dist/esm/lib/parsers/parse-compressed-texture.js +0 -1
  102. package/dist/esm/lib/parsers/parse-compressed-texture.js.map +1 -1
  103. package/dist/esm/lib/parsers/parse-crunch.js +0 -12
  104. package/dist/esm/lib/parsers/parse-crunch.js.map +1 -1
  105. package/dist/esm/lib/parsers/parse-dds.js +0 -5
  106. package/dist/esm/lib/parsers/parse-dds.js.map +1 -1
  107. package/dist/esm/lib/parsers/parse-ktx.js +2 -16
  108. package/dist/esm/lib/parsers/parse-ktx.js.map +1 -1
  109. package/dist/esm/lib/parsers/parse-npy.js +0 -6
  110. package/dist/esm/lib/parsers/parse-npy.js.map +1 -1
  111. package/dist/esm/lib/parsers/parse-pvr.js +0 -21
  112. package/dist/esm/lib/parsers/parse-pvr.js.map +1 -1
  113. package/dist/esm/lib/texture-api/async-deep-map.js +0 -5
  114. package/dist/esm/lib/texture-api/async-deep-map.js.map +1 -1
  115. package/dist/esm/lib/texture-api/deep-load.js +0 -1
  116. package/dist/esm/lib/texture-api/deep-load.js.map +1 -1
  117. package/dist/esm/lib/texture-api/generate-url.js +0 -2
  118. package/dist/esm/lib/texture-api/generate-url.js.map +1 -1
  119. package/dist/esm/lib/texture-api/load-image-array.js +0 -1
  120. package/dist/esm/lib/texture-api/load-image-array.js.map +1 -1
  121. package/dist/esm/lib/texture-api/load-image-cube.js +0 -3
  122. package/dist/esm/lib/texture-api/load-image-cube.js.map +1 -1
  123. package/dist/esm/lib/texture-api/load-image.js +0 -4
  124. package/dist/esm/lib/texture-api/load-image.js.map +1 -1
  125. package/dist/esm/lib/utils/extract-mipmap-images.js +0 -1
  126. package/dist/esm/lib/utils/extract-mipmap-images.js.map +1 -1
  127. package/dist/esm/lib/utils/ktx-format-helper.js +0 -1
  128. package/dist/esm/lib/utils/ktx-format-helper.js.map +1 -1
  129. package/dist/esm/lib/utils/texture-formats.js +0 -3
  130. package/dist/esm/lib/utils/texture-formats.js.map +1 -1
  131. package/dist/esm/lib/utils/version.js +1 -2
  132. package/dist/esm/lib/utils/version.js.map +1 -1
  133. package/dist/esm/npy-loader.js +0 -4
  134. package/dist/esm/npy-loader.js.map +1 -1
  135. package/dist/esm/workers/crunch-worker.js +0 -1
  136. package/dist/esm/workers/crunch-worker.js.map +1 -1
  137. package/dist/ktx2-basis-writer-nodejs-worker.js +124 -45
  138. package/dist/ktx2-basis-writer-worker.js +3 -3
  139. package/dist/npy-worker.js +1 -1
  140. package/package.json +7 -7
@@ -1,4 +1,3 @@
1
-
2
1
  import '@loaders.gl/polyfills';
3
2
  export { KTX2BasisWriter as KTX2BasisWriterNodeJS } from './ktx2-basis-writer';
4
3
  //# sourceMappingURL=ktx2-basis-writer-nodejs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ktx2-basis-writer-nodejs.js","names":["KTX2BasisWriter","KTX2BasisWriterNodeJS"],"sources":["../../src/ktx2-basis-writer-nodejs.ts"],"sourcesContent":["// Polyfills increases the bundle size significantly. Use it for NodeJS worker only\nimport '@loaders.gl/polyfills';\n\nexport {KTX2BasisWriter as KTX2BasisWriterNodeJS} from './ktx2-basis-writer';\n"],"mappings":";AACA,OAAO,uBAAuB;AAE9B,SAAQA,eAAe,IAAIC,qBAAqB,QAAO,qBAAqB"}
1
+ {"version":3,"file":"ktx2-basis-writer-nodejs.js","names":["KTX2BasisWriter","KTX2BasisWriterNodeJS"],"sources":["../../src/ktx2-basis-writer-nodejs.ts"],"sourcesContent":["// Polyfills increases the bundle size significantly. Use it for NodeJS worker only\nimport '@loaders.gl/polyfills';\n\nexport {KTX2BasisWriter as KTX2BasisWriterNodeJS} from './ktx2-basis-writer';\n"],"mappings":"AACA,OAAO,uBAAuB;AAE9B,SAAQA,eAAe,IAAIC,qBAAqB,QAAO,qBAAqB"}
@@ -1,6 +1,5 @@
1
1
  import { VERSION } from './lib/utils/version';
2
2
  import { encodeKTX2BasisTexture } from './lib/encoders/encode-ktx2-basis-texture';
3
-
4
3
  export const KTX2BasisWriter = {
5
4
  name: 'Basis Universal Supercompressed GPU Texture',
6
5
  id: 'ktx2-basis-writer',
@@ -15,6 +14,5 @@ export const KTX2BasisWriter = {
15
14
  },
16
15
  encode: encodeKTX2BasisTexture
17
16
  };
18
-
19
17
  export const _TypecheckKTX2TextureWriter = KTX2BasisWriter;
20
18
  //# sourceMappingURL=ktx2-basis-writer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ktx2-basis-writer.js","names":["VERSION","encodeKTX2BasisTexture","KTX2BasisWriter","name","id","module","version","extensions","options","useSRGB","qualityLevel","encodeUASTC","mipmaps","encode","_TypecheckKTX2TextureWriter"],"sources":["../../src/ktx2-basis-writer.ts"],"sourcesContent":["import type {Writer} from '@loaders.gl/loader-utils';\nimport {VERSION} from './lib/utils/version';\nimport {encodeKTX2BasisTexture} from './lib/encoders/encode-ktx2-basis-texture';\n\n/**\n * Basis Universal Supercompressed GPU Texture.\n * Spec - https://github.com/Esri/i3s-spec/blob/master/docs/1.8/textureSetDefinitionFormat.cmn.md\n */\nexport const KTX2BasisWriter = {\n name: 'Basis Universal Supercompressed GPU Texture',\n id: 'ktx2-basis-writer',\n module: 'textures',\n version: VERSION,\n\n extensions: ['ktx2'],\n options: {\n useSRGB: false,\n qualityLevel: 10,\n encodeUASTC: false,\n mipmaps: false\n },\n\n encode: encodeKTX2BasisTexture\n};\n\n// TYPE TESTS - TODO find a better way than exporting junk\nexport const _TypecheckKTX2TextureWriter: Writer = KTX2BasisWriter;\n"],"mappings":"AACA,SAAQA,OAAO,QAAO,qBAAqB;AAC3C,SAAQC,sBAAsB,QAAO,0CAA0C;;AAM/E,OAAO,MAAMC,eAAe,GAAG;EAC7BC,IAAI,EAAE,6CAA6C;EACnDC,EAAE,EAAE,mBAAmB;EACvBC,MAAM,EAAE,UAAU;EAClBC,OAAO,EAAEN,OAAO;EAEhBO,UAAU,EAAE,CAAC,MAAM,CAAC;EACpBC,OAAO,EAAE;IACPC,OAAO,EAAE,KAAK;IACdC,YAAY,EAAE,EAAE;IAChBC,WAAW,EAAE,KAAK;IAClBC,OAAO,EAAE;EACX,CAAC;EAEDC,MAAM,EAAEZ;AACV,CAAC;;AAGD,OAAO,MAAMa,2BAAmC,GAAGZ,eAAe"}
1
+ {"version":3,"file":"ktx2-basis-writer.js","names":["VERSION","encodeKTX2BasisTexture","KTX2BasisWriter","name","id","module","version","extensions","options","useSRGB","qualityLevel","encodeUASTC","mipmaps","encode","_TypecheckKTX2TextureWriter"],"sources":["../../src/ktx2-basis-writer.ts"],"sourcesContent":["import type {Writer} from '@loaders.gl/loader-utils';\nimport {VERSION} from './lib/utils/version';\nimport {encodeKTX2BasisTexture} from './lib/encoders/encode-ktx2-basis-texture';\n\n/**\n * Basis Universal Supercompressed GPU Texture.\n * Spec - https://github.com/Esri/i3s-spec/blob/master/docs/1.8/textureSetDefinitionFormat.cmn.md\n */\nexport const KTX2BasisWriter = {\n name: 'Basis Universal Supercompressed GPU Texture',\n id: 'ktx2-basis-writer',\n module: 'textures',\n version: VERSION,\n\n extensions: ['ktx2'],\n options: {\n useSRGB: false,\n qualityLevel: 10,\n encodeUASTC: false,\n mipmaps: false\n },\n\n encode: encodeKTX2BasisTexture\n};\n\n// TYPE TESTS - TODO find a better way than exporting junk\nexport const _TypecheckKTX2TextureWriter: Writer = KTX2BasisWriter;\n"],"mappings":"AACA,SAAQA,OAAO,QAAO,qBAAqB;AAC3C,SAAQC,sBAAsB,QAAO,0CAA0C;AAM/E,OAAO,MAAMC,eAAe,GAAG;EAC7BC,IAAI,EAAE,6CAA6C;EACnDC,EAAE,EAAE,mBAAmB;EACvBC,MAAM,EAAE,UAAU;EAClBC,OAAO,EAAEN,OAAO;EAEhBO,UAAU,EAAE,CAAC,MAAM,CAAC;EACpBC,OAAO,EAAE;IACPC,OAAO,EAAE,KAAK;IACdC,YAAY,EAAE,EAAE;IAChBC,WAAW,EAAE,KAAK;IAClBC,OAAO,EAAE;EACX,CAAC;EAEDC,MAAM,EAAEZ;AACV,CAAC;AAGD,OAAO,MAAMa,2BAAmC,GAAGZ,eAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"encode-ktx.js","names":["read","encodeKTX","texture","ktx"],"sources":["../../../../src/lib/encoders/encode-ktx.ts"],"sourcesContent":["import {read} from 'ktx-parse';\n\nexport function encodeKTX(texture) {\n const ktx = read(texture);\n // post process\n return ktx;\n}\n"],"mappings":"AAAA,SAAQA,IAAI,QAAO,WAAW;AAE9B,OAAO,SAASC,SAAS,CAACC,OAAO,EAAE;EACjC,MAAMC,GAAG,GAAGH,IAAI,CAACE,OAAO,CAAC;EAEzB,OAAOC,GAAG;AACZ"}
1
+ {"version":3,"file":"encode-ktx.js","names":["read","encodeKTX","texture","ktx"],"sources":["../../../../src/lib/encoders/encode-ktx.ts"],"sourcesContent":["import {read} from 'ktx-parse';\n\nexport function encodeKTX(texture) {\n const ktx = read(texture);\n // post process\n return ktx;\n}\n"],"mappings":"AAAA,SAAQA,IAAI,QAAO,WAAW;AAE9B,OAAO,SAASC,SAASA,CAACC,OAAO,EAAE;EACjC,MAAMC,GAAG,GAAGH,IAAI,CAACE,OAAO,CAAC;EAEzB,OAAOC,GAAG;AACZ"}
@@ -1,5 +1,4 @@
1
1
  import { loadBasisEncoderModule } from '../parsers/basis-module-loader';
2
-
3
2
  export async function encodeKTX2BasisTexture(image) {
4
3
  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
5
4
  const {
@@ -1 +1 @@
1
- {"version":3,"file":"encode-ktx2-basis-texture.js","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"],"sources":["../../../../src/lib/encoders/encode-ktx2-basis-texture.ts"],"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"],"mappings":"AACA,SAAQA,sBAAsB,QAAO,gCAAgC;;AASrE,OAAO,eAAeC,sBAAsB,CAC1CC,KAAoB,EAEE;EAAA,IADtBC,OAAY,uEAAG,CAAC,CAAC;EAGjB,MAAM;IAACC,OAAO,GAAG,KAAK;IAAEC,YAAY,GAAG,EAAE;IAAEC,WAAW,GAAG,KAAK;IAAEC,OAAO,GAAG;EAAK,CAAC,GAAGJ,OAAO;EAC1F,MAAM;IAACK;EAAY,CAAC,GAAG,MAAMR,sBAAsB,CAACG,OAAO,CAAC;EAC5D,MAAMM,YAAY,GAAG,IAAID,YAAY,EAAE;EAEvC,IAAI;IACF,MAAME,aAAa,GAAG,IAAIC,UAAU,CAACT,KAAK,CAACU,KAAK,GAAGV,KAAK,CAACW,MAAM,GAAG,CAAC,CAAC;IACpEJ,YAAY,CAACK,iBAAiB,CAAC,IAAI,CAAC;IACpCL,YAAY,CAACM,4BAA4B,CAAC,IAAI,CAAC;IAC/CN,YAAY,CAACO,uBAAuB,CAAC,IAAI,CAAC;IAE1CP,YAAY,CAACQ,mBAAmB,CAAC,CAAC,EAAEf,KAAK,CAACgB,IAAI,EAAEhB,KAAK,CAACU,KAAK,EAAEV,KAAK,CAACW,MAAM,EAAE,KAAK,CAAC;IACjFJ,YAAY,CAACU,aAAa,CAACf,OAAO,CAAC;IACnCK,YAAY,CAACW,UAAU,CAAChB,OAAO,CAAC;IAChCK,YAAY,CAACY,eAAe,CAAChB,YAAY,CAAC;IAC1CI,YAAY,CAACa,QAAQ,CAAChB,WAAW,CAAC;IAClCG,YAAY,CAACc,SAAS,CAAChB,OAAO,CAAC;IAE/B,MAAMiB,cAAc,GAAGf,YAAY,CAACgB,MAAM,CAACf,aAAa,CAAC;IAEzD,MAAMgB,kBAAkB,GAAGhB,aAAa,CAACiB,QAAQ,CAAC,CAAC,EAAEH,cAAc,CAAC,CAACI,MAAM;IAC3E,OAAOF,kBAAkB;EAC3B,CAAC,CAAC,OAAOG,KAAK,EAAE;IAEdC,OAAO,CAACD,KAAK,CAAC,6DAA6D,EAAEA,KAAK,CAAC;IACnF,MAAMA,KAAK;EACb,CAAC,SAAS;IACRpB,YAAY,CAACsB,MAAM,EAAE;EACvB;AACF"}
1
+ {"version":3,"file":"encode-ktx2-basis-texture.js","names":["loadBasisEncoderModule","encodeKTX2BasisTexture","image","options","arguments","length","undefined","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"],"sources":["../../../../src/lib/encoders/encode-ktx2-basis-texture.ts"],"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"],"mappings":"AACA,SAAQA,sBAAsB,QAAO,gCAAgC;AASrE,OAAO,eAAeC,sBAAsBA,CAC1CC,KAAoB,EAEE;EAAA,IADtBC,OAAY,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAGjB,MAAM;IAACG,OAAO,GAAG,KAAK;IAAEC,YAAY,GAAG,EAAE;IAAEC,WAAW,GAAG,KAAK;IAAEC,OAAO,GAAG;EAAK,CAAC,GAAGP,OAAO;EAC1F,MAAM;IAACQ;EAAY,CAAC,GAAG,MAAMX,sBAAsB,CAACG,OAAO,CAAC;EAC5D,MAAMS,YAAY,GAAG,IAAID,YAAY,EAAE;EAEvC,IAAI;IACF,MAAME,aAAa,GAAG,IAAIC,UAAU,CAACZ,KAAK,CAACa,KAAK,GAAGb,KAAK,CAACc,MAAM,GAAG,CAAC,CAAC;IACpEJ,YAAY,CAACK,iBAAiB,CAAC,IAAI,CAAC;IACpCL,YAAY,CAACM,4BAA4B,CAAC,IAAI,CAAC;IAC/CN,YAAY,CAACO,uBAAuB,CAAC,IAAI,CAAC;IAE1CP,YAAY,CAACQ,mBAAmB,CAAC,CAAC,EAAElB,KAAK,CAACmB,IAAI,EAAEnB,KAAK,CAACa,KAAK,EAAEb,KAAK,CAACc,MAAM,EAAE,KAAK,CAAC;IACjFJ,YAAY,CAACU,aAAa,CAACf,OAAO,CAAC;IACnCK,YAAY,CAACW,UAAU,CAAChB,OAAO,CAAC;IAChCK,YAAY,CAACY,eAAe,CAAChB,YAAY,CAAC;IAC1CI,YAAY,CAACa,QAAQ,CAAChB,WAAW,CAAC;IAClCG,YAAY,CAACc,SAAS,CAAChB,OAAO,CAAC;IAE/B,MAAMiB,cAAc,GAAGf,YAAY,CAACgB,MAAM,CAACf,aAAa,CAAC;IAEzD,MAAMgB,kBAAkB,GAAGhB,aAAa,CAACiB,QAAQ,CAAC,CAAC,EAAEH,cAAc,CAAC,CAACI,MAAM;IAC3E,OAAOF,kBAAkB;EAC3B,CAAC,CAAC,OAAOG,KAAK,EAAE;IAEdC,OAAO,CAACD,KAAK,CAAC,6DAA6D,EAAEA,KAAK,CAAC;IACnF,MAAMA,KAAK;EACb,CAAC,SAAS;IACRpB,YAAY,CAACsB,MAAM,EAAE;EACvB;AACF"}
@@ -1,7 +1,6 @@
1
1
  import { ChildProcessProxy } from '@loaders.gl/worker-utils';
2
2
  export async function encodeImageURLToCompressedTextureURL(inputUrl, outputUrl, options) {
3
- const args = [
4
- 'texture-compressor', '--type', 's3tc', '--compression', 'DXT1', '--quality', 'normal', '--input', inputUrl, '--output', outputUrl];
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',
@@ -1 +1 @@
1
- {"version":3,"file":"encode-texture.js","names":["ChildProcessProxy","encodeImageURLToCompressedTextureURL","inputUrl","outputUrl","options","args","childProcess","start","command","arguments","spawn"],"sources":["../../../../src/lib/encoders/encode-texture.ts"],"sourcesContent":["import {ChildProcessProxy} from '@loaders.gl/worker-utils';\nimport {CompressedTextureWriterOptions} from '../../compressed-texture-writer';\n\n/*\n * @see https://github.com/TimvanScherpenzeel/texture-compressor\n */\nexport async function encodeImageURLToCompressedTextureURL(\n inputUrl: string,\n outputUrl: string,\n options?: CompressedTextureWriterOptions\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"],"mappings":"AAAA,SAAQA,iBAAiB,QAAO,0BAA0B;AAM1D,OAAO,eAAeC,oCAAoC,CACxDC,QAAgB,EAChBC,SAAiB,EACjBC,OAAwC,EACvB;EAEjB,MAAMC,IAAI,GAAG;EAEX,oBAAoB,EACpB,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,QAAQ,EACrB,SAAS,EAAEH,QAAQ,EACnB,UAAU,EAAEC,SAAS,CACtB;EACD,MAAMG,YAAY,GAAG,IAAIN,iBAAiB,EAAE;EAC5C,MAAMM,YAAY,CAACC,KAAK,CAAC;IACvBC,OAAO,EAAE,KAAK;IACdC,SAAS,EAAEJ,IAAI;IACfK,KAAK,EAAEN;EACT,CAAC,CAAC;EACF,OAAOD,SAAS;AAClB"}
1
+ {"version":3,"file":"encode-texture.js","names":["ChildProcessProxy","encodeImageURLToCompressedTextureURL","inputUrl","outputUrl","options","args","childProcess","start","command","arguments","spawn"],"sources":["../../../../src/lib/encoders/encode-texture.ts"],"sourcesContent":["import {ChildProcessProxy} from '@loaders.gl/worker-utils';\nimport {CompressedTextureWriterOptions} from '../../compressed-texture-writer';\n\n/*\n * @see https://github.com/TimvanScherpenzeel/texture-compressor\n */\nexport async function encodeImageURLToCompressedTextureURL(\n inputUrl: string,\n outputUrl: string,\n options?: CompressedTextureWriterOptions\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"],"mappings":"AAAA,SAAQA,iBAAiB,QAAO,0BAA0B;AAM1D,OAAO,eAAeC,oCAAoCA,CACxDC,QAAgB,EAChBC,SAAiB,EACjBC,OAAwC,EACvB;EAEjB,MAAMC,IAAI,GAAG,CAEX,oBAAoB,EACpB,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,QAAQ,EACrB,SAAS,EAAEH,QAAQ,EACnB,UAAU,EAAEC,SAAS,CACtB;EACD,MAAMG,YAAY,GAAG,IAAIN,iBAAiB,EAAE;EAC5C,MAAMM,YAAY,CAACC,KAAK,CAAC;IACvBC,OAAO,EAAE,KAAK;IACdC,SAAS,EAAEJ,IAAI;IACfK,KAAK,EAAEN;EACT,CAAC,CAAC;EACF,OAAOD,SAAS;AAClB"}
@@ -1,11 +1,8 @@
1
-
2
1
  export const GL_EXTENSIONS_CONSTANTS = {
3
-
4
2
  COMPRESSED_RGB_S3TC_DXT1_EXT: 0x83f0,
5
3
  COMPRESSED_RGBA_S3TC_DXT1_EXT: 0x83f1,
6
4
  COMPRESSED_RGBA_S3TC_DXT3_EXT: 0x83f2,
7
5
  COMPRESSED_RGBA_S3TC_DXT5_EXT: 0x83f3,
8
-
9
6
  COMPRESSED_R11_EAC: 0x9270,
10
7
  COMPRESSED_SIGNED_R11_EAC: 0x9271,
11
8
  COMPRESSED_RG11_EAC: 0x9272,
@@ -16,18 +13,14 @@ export const GL_EXTENSIONS_CONSTANTS = {
16
13
  COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: 0x9277,
17
14
  COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: 0x9278,
18
15
  COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: 0x9279,
19
-
20
16
  COMPRESSED_RGB_PVRTC_4BPPV1_IMG: 0x8c00,
21
17
  COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: 0x8c02,
22
18
  COMPRESSED_RGB_PVRTC_2BPPV1_IMG: 0x8c01,
23
19
  COMPRESSED_RGBA_PVRTC_2BPPV1_IMG: 0x8c03,
24
-
25
20
  COMPRESSED_RGB_ETC1_WEBGL: 0x8d64,
26
-
27
21
  COMPRESSED_RGB_ATC_WEBGL: 0x8c92,
28
22
  COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL: 0x8c93,
29
23
  COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL: 0x87ee,
30
-
31
24
  COMPRESSED_RGBA_ASTC_4X4_KHR: 0x93b0,
32
25
  COMPRESSED_RGBA_ASTC_5X4_KHR: 0x93b1,
33
26
  COMPRESSED_RGBA_ASTC_5X5_KHR: 0x93b2,
@@ -56,12 +49,10 @@ export const GL_EXTENSIONS_CONSTANTS = {
56
49
  COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR: 0x93db,
57
50
  COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR: 0x93dc,
58
51
  COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR: 0x93dd,
59
-
60
52
  COMPRESSED_RED_RGTC1_EXT: 0x8dbb,
61
53
  COMPRESSED_SIGNED_RED_RGTC1_EXT: 0x8dbc,
62
54
  COMPRESSED_RED_GREEN_RGTC2_EXT: 0x8dbd,
63
55
  COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT: 0x8dbe,
64
-
65
56
  COMPRESSED_SRGB_S3TC_DXT1_EXT: 0x8c4c,
66
57
  COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: 0x8c4d,
67
58
  COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: 0x8c4e,
@@ -1 +1 @@
1
- {"version":3,"file":"gl-extensions.js","names":["GL_EXTENSIONS_CONSTANTS","COMPRESSED_RGB_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","COMPRESSED_R11_EAC","COMPRESSED_SIGNED_R11_EAC","COMPRESSED_RG11_EAC","COMPRESSED_SIGNED_RG11_EAC","COMPRESSED_RGB8_ETC2","COMPRESSED_RGBA8_ETC2_EAC","COMPRESSED_SRGB8_ETC2","COMPRESSED_SRGB8_ALPHA8_ETC2_EAC","COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2","COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGB_PVRTC_2BPPV1_IMG","COMPRESSED_RGBA_PVRTC_2BPPV1_IMG","COMPRESSED_RGB_ETC1_WEBGL","COMPRESSED_RGB_ATC_WEBGL","COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL","COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL","COMPRESSED_RGBA_ASTC_4X4_KHR","COMPRESSED_RGBA_ASTC_5X4_KHR","COMPRESSED_RGBA_ASTC_5X5_KHR","COMPRESSED_RGBA_ASTC_6X5_KHR","COMPRESSED_RGBA_ASTC_6X6_KHR","COMPRESSED_RGBA_ASTC_8X5_KHR","COMPRESSED_RGBA_ASTC_8X6_KHR","COMPRESSED_RGBA_ASTC_8X8_KHR","COMPRESSED_RGBA_ASTC_10X5_KHR","COMPRESSED_RGBA_ASTC_10X6_KHR","COMPRESSED_RGBA_ASTC_10X8_KHR","COMPRESSED_RGBA_ASTC_10X10_KHR","COMPRESSED_RGBA_ASTC_12X10_KHR","COMPRESSED_RGBA_ASTC_12X12_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR","COMPRESSED_RED_RGTC1_EXT","COMPRESSED_SIGNED_RED_RGTC1_EXT","COMPRESSED_RED_GREEN_RGTC2_EXT","COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT","COMPRESSED_SRGB_S3TC_DXT1_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT"],"sources":["../../../src/lib/gl-extensions.ts"],"sourcesContent":["/* eslint-disable camelcase */\nexport const GL_EXTENSIONS_CONSTANTS = {\n // WEBGL_compressed_texture_s3tc\n\n COMPRESSED_RGB_S3TC_DXT1_EXT: 0x83f0,\n COMPRESSED_RGBA_S3TC_DXT1_EXT: 0x83f1,\n COMPRESSED_RGBA_S3TC_DXT3_EXT: 0x83f2,\n COMPRESSED_RGBA_S3TC_DXT5_EXT: 0x83f3,\n\n // WEBGL_compressed_texture_es3\n\n COMPRESSED_R11_EAC: 0x9270,\n COMPRESSED_SIGNED_R11_EAC: 0x9271,\n COMPRESSED_RG11_EAC: 0x9272,\n COMPRESSED_SIGNED_RG11_EAC: 0x9273,\n COMPRESSED_RGB8_ETC2: 0x9274,\n COMPRESSED_RGBA8_ETC2_EAC: 0x9275,\n COMPRESSED_SRGB8_ETC2: 0x9276,\n COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: 0x9277,\n COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: 0x9278,\n COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: 0x9279,\n\n // WEBGL_compressed_texture_pvrtc\n\n COMPRESSED_RGB_PVRTC_4BPPV1_IMG: 0x8c00,\n COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: 0x8c02,\n COMPRESSED_RGB_PVRTC_2BPPV1_IMG: 0x8c01,\n COMPRESSED_RGBA_PVRTC_2BPPV1_IMG: 0x8c03,\n\n // WEBGL_compressed_texture_etc1\n\n COMPRESSED_RGB_ETC1_WEBGL: 0x8d64,\n\n // WEBGL_compressed_texture_atc\n\n COMPRESSED_RGB_ATC_WEBGL: 0x8c92,\n COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL: 0x8c93,\n COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL: 0x87ee,\n\n // WEBGL_compressed_texture_astc\n\n COMPRESSED_RGBA_ASTC_4X4_KHR: 0x93b0,\n COMPRESSED_RGBA_ASTC_5X4_KHR: 0x93b1,\n COMPRESSED_RGBA_ASTC_5X5_KHR: 0x93b2,\n COMPRESSED_RGBA_ASTC_6X5_KHR: 0x93b3,\n COMPRESSED_RGBA_ASTC_6X6_KHR: 0x93b4,\n COMPRESSED_RGBA_ASTC_8X5_KHR: 0x93b5,\n COMPRESSED_RGBA_ASTC_8X6_KHR: 0x93b6,\n COMPRESSED_RGBA_ASTC_8X8_KHR: 0x93b7,\n COMPRESSED_RGBA_ASTC_10X5_KHR: 0x93b8,\n COMPRESSED_RGBA_ASTC_10X6_KHR: 0x93b9,\n COMPRESSED_RGBA_ASTC_10X8_KHR: 0x93ba,\n COMPRESSED_RGBA_ASTC_10X10_KHR: 0x93bb,\n COMPRESSED_RGBA_ASTC_12X10_KHR: 0x93bc,\n COMPRESSED_RGBA_ASTC_12X12_KHR: 0x93bd,\n COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR: 0x93d0,\n COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR: 0x93d1,\n COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR: 0x93d2,\n COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR: 0x93d3,\n COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR: 0x93d4,\n COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR: 0x93d5,\n COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR: 0x93d6,\n COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR: 0x93d7,\n COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR: 0x93d8,\n COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR: 0x93d9,\n COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR: 0x93da,\n COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR: 0x93db,\n COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR: 0x93dc,\n COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR: 0x93dd,\n\n // EXT_texture_compression_rgtc\n\n COMPRESSED_RED_RGTC1_EXT: 0x8dbb,\n COMPRESSED_SIGNED_RED_RGTC1_EXT: 0x8dbc,\n COMPRESSED_RED_GREEN_RGTC2_EXT: 0x8dbd,\n COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT: 0x8dbe,\n\n // WEBGL_compressed_texture_s3tc_srgb\n\n COMPRESSED_SRGB_S3TC_DXT1_EXT: 0x8c4c,\n COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: 0x8c4d,\n COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: 0x8c4e,\n COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: 0x8c4f\n};\n"],"mappings":";AACA,OAAO,MAAMA,uBAAuB,GAAG;;EAGrCC,4BAA4B,EAAE,MAAM;EACpCC,6BAA6B,EAAE,MAAM;EACrCC,6BAA6B,EAAE,MAAM;EACrCC,6BAA6B,EAAE,MAAM;;EAIrCC,kBAAkB,EAAE,MAAM;EAC1BC,yBAAyB,EAAE,MAAM;EACjCC,mBAAmB,EAAE,MAAM;EAC3BC,0BAA0B,EAAE,MAAM;EAClCC,oBAAoB,EAAE,MAAM;EAC5BC,yBAAyB,EAAE,MAAM;EACjCC,qBAAqB,EAAE,MAAM;EAC7BC,gCAAgC,EAAE,MAAM;EACxCC,wCAAwC,EAAE,MAAM;EAChDC,yCAAyC,EAAE,MAAM;;EAIjDC,+BAA+B,EAAE,MAAM;EACvCC,gCAAgC,EAAE,MAAM;EACxCC,+BAA+B,EAAE,MAAM;EACvCC,gCAAgC,EAAE,MAAM;;EAIxCC,yBAAyB,EAAE,MAAM;;EAIjCC,wBAAwB,EAAE,MAAM;EAChCC,wCAAwC,EAAE,MAAM;EAChDC,4CAA4C,EAAE,MAAM;;EAIpDC,4BAA4B,EAAE,MAAM;EACpCC,4BAA4B,EAAE,MAAM;EACpCC,4BAA4B,EAAE,MAAM;EACpCC,4BAA4B,EAAE,MAAM;EACpCC,4BAA4B,EAAE,MAAM;EACpCC,4BAA4B,EAAE,MAAM;EACpCC,4BAA4B,EAAE,MAAM;EACpCC,4BAA4B,EAAE,MAAM;EACpCC,6BAA6B,EAAE,MAAM;EACrCC,6BAA6B,EAAE,MAAM;EACrCC,6BAA6B,EAAE,MAAM;EACrCC,8BAA8B,EAAE,MAAM;EACtCC,8BAA8B,EAAE,MAAM;EACtCC,8BAA8B,EAAE,MAAM;EACtCC,oCAAoC,EAAE,MAAM;EAC5CC,oCAAoC,EAAE,MAAM;EAC5CC,oCAAoC,EAAE,MAAM;EAC5CC,oCAAoC,EAAE,MAAM;EAC5CC,oCAAoC,EAAE,MAAM;EAC5CC,oCAAoC,EAAE,MAAM;EAC5CC,oCAAoC,EAAE,MAAM;EAC5CC,oCAAoC,EAAE,MAAM;EAC5CC,qCAAqC,EAAE,MAAM;EAC7CC,qCAAqC,EAAE,MAAM;EAC7CC,qCAAqC,EAAE,MAAM;EAC7CC,sCAAsC,EAAE,MAAM;EAC9CC,sCAAsC,EAAE,MAAM;EAC9CC,sCAAsC,EAAE,MAAM;;EAI9CC,wBAAwB,EAAE,MAAM;EAChCC,+BAA+B,EAAE,MAAM;EACvCC,8BAA8B,EAAE,MAAM;EACtCC,qCAAqC,EAAE,MAAM;;EAI7CC,6BAA6B,EAAE,MAAM;EACrCC,mCAAmC,EAAE,MAAM;EAC3CC,mCAAmC,EAAE,MAAM;EAC3CC,mCAAmC,EAAE;AACvC,CAAC"}
1
+ {"version":3,"file":"gl-extensions.js","names":["GL_EXTENSIONS_CONSTANTS","COMPRESSED_RGB_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","COMPRESSED_R11_EAC","COMPRESSED_SIGNED_R11_EAC","COMPRESSED_RG11_EAC","COMPRESSED_SIGNED_RG11_EAC","COMPRESSED_RGB8_ETC2","COMPRESSED_RGBA8_ETC2_EAC","COMPRESSED_SRGB8_ETC2","COMPRESSED_SRGB8_ALPHA8_ETC2_EAC","COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2","COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGB_PVRTC_2BPPV1_IMG","COMPRESSED_RGBA_PVRTC_2BPPV1_IMG","COMPRESSED_RGB_ETC1_WEBGL","COMPRESSED_RGB_ATC_WEBGL","COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL","COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL","COMPRESSED_RGBA_ASTC_4X4_KHR","COMPRESSED_RGBA_ASTC_5X4_KHR","COMPRESSED_RGBA_ASTC_5X5_KHR","COMPRESSED_RGBA_ASTC_6X5_KHR","COMPRESSED_RGBA_ASTC_6X6_KHR","COMPRESSED_RGBA_ASTC_8X5_KHR","COMPRESSED_RGBA_ASTC_8X6_KHR","COMPRESSED_RGBA_ASTC_8X8_KHR","COMPRESSED_RGBA_ASTC_10X5_KHR","COMPRESSED_RGBA_ASTC_10X6_KHR","COMPRESSED_RGBA_ASTC_10X8_KHR","COMPRESSED_RGBA_ASTC_10X10_KHR","COMPRESSED_RGBA_ASTC_12X10_KHR","COMPRESSED_RGBA_ASTC_12X12_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR","COMPRESSED_RED_RGTC1_EXT","COMPRESSED_SIGNED_RED_RGTC1_EXT","COMPRESSED_RED_GREEN_RGTC2_EXT","COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT","COMPRESSED_SRGB_S3TC_DXT1_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT"],"sources":["../../../src/lib/gl-extensions.ts"],"sourcesContent":["/* eslint-disable camelcase */\nexport const GL_EXTENSIONS_CONSTANTS = {\n // WEBGL_compressed_texture_s3tc\n\n COMPRESSED_RGB_S3TC_DXT1_EXT: 0x83f0,\n COMPRESSED_RGBA_S3TC_DXT1_EXT: 0x83f1,\n COMPRESSED_RGBA_S3TC_DXT3_EXT: 0x83f2,\n COMPRESSED_RGBA_S3TC_DXT5_EXT: 0x83f3,\n\n // WEBGL_compressed_texture_es3\n\n COMPRESSED_R11_EAC: 0x9270,\n COMPRESSED_SIGNED_R11_EAC: 0x9271,\n COMPRESSED_RG11_EAC: 0x9272,\n COMPRESSED_SIGNED_RG11_EAC: 0x9273,\n COMPRESSED_RGB8_ETC2: 0x9274,\n COMPRESSED_RGBA8_ETC2_EAC: 0x9275,\n COMPRESSED_SRGB8_ETC2: 0x9276,\n COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: 0x9277,\n COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: 0x9278,\n COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: 0x9279,\n\n // WEBGL_compressed_texture_pvrtc\n\n COMPRESSED_RGB_PVRTC_4BPPV1_IMG: 0x8c00,\n COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: 0x8c02,\n COMPRESSED_RGB_PVRTC_2BPPV1_IMG: 0x8c01,\n COMPRESSED_RGBA_PVRTC_2BPPV1_IMG: 0x8c03,\n\n // WEBGL_compressed_texture_etc1\n\n COMPRESSED_RGB_ETC1_WEBGL: 0x8d64,\n\n // WEBGL_compressed_texture_atc\n\n COMPRESSED_RGB_ATC_WEBGL: 0x8c92,\n COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL: 0x8c93,\n COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL: 0x87ee,\n\n // WEBGL_compressed_texture_astc\n\n COMPRESSED_RGBA_ASTC_4X4_KHR: 0x93b0,\n COMPRESSED_RGBA_ASTC_5X4_KHR: 0x93b1,\n COMPRESSED_RGBA_ASTC_5X5_KHR: 0x93b2,\n COMPRESSED_RGBA_ASTC_6X5_KHR: 0x93b3,\n COMPRESSED_RGBA_ASTC_6X6_KHR: 0x93b4,\n COMPRESSED_RGBA_ASTC_8X5_KHR: 0x93b5,\n COMPRESSED_RGBA_ASTC_8X6_KHR: 0x93b6,\n COMPRESSED_RGBA_ASTC_8X8_KHR: 0x93b7,\n COMPRESSED_RGBA_ASTC_10X5_KHR: 0x93b8,\n COMPRESSED_RGBA_ASTC_10X6_KHR: 0x93b9,\n COMPRESSED_RGBA_ASTC_10X8_KHR: 0x93ba,\n COMPRESSED_RGBA_ASTC_10X10_KHR: 0x93bb,\n COMPRESSED_RGBA_ASTC_12X10_KHR: 0x93bc,\n COMPRESSED_RGBA_ASTC_12X12_KHR: 0x93bd,\n COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR: 0x93d0,\n COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR: 0x93d1,\n COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR: 0x93d2,\n COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR: 0x93d3,\n COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR: 0x93d4,\n COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR: 0x93d5,\n COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR: 0x93d6,\n COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR: 0x93d7,\n COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR: 0x93d8,\n COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR: 0x93d9,\n COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR: 0x93da,\n COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR: 0x93db,\n COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR: 0x93dc,\n COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR: 0x93dd,\n\n // EXT_texture_compression_rgtc\n\n COMPRESSED_RED_RGTC1_EXT: 0x8dbb,\n COMPRESSED_SIGNED_RED_RGTC1_EXT: 0x8dbc,\n COMPRESSED_RED_GREEN_RGTC2_EXT: 0x8dbd,\n COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT: 0x8dbe,\n\n // WEBGL_compressed_texture_s3tc_srgb\n\n COMPRESSED_SRGB_S3TC_DXT1_EXT: 0x8c4c,\n COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: 0x8c4d,\n COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: 0x8c4e,\n COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: 0x8c4f\n};\n"],"mappings":"AACA,OAAO,MAAMA,uBAAuB,GAAG;EAGrCC,4BAA4B,EAAE,MAAM;EACpCC,6BAA6B,EAAE,MAAM;EACrCC,6BAA6B,EAAE,MAAM;EACrCC,6BAA6B,EAAE,MAAM;EAIrCC,kBAAkB,EAAE,MAAM;EAC1BC,yBAAyB,EAAE,MAAM;EACjCC,mBAAmB,EAAE,MAAM;EAC3BC,0BAA0B,EAAE,MAAM;EAClCC,oBAAoB,EAAE,MAAM;EAC5BC,yBAAyB,EAAE,MAAM;EACjCC,qBAAqB,EAAE,MAAM;EAC7BC,gCAAgC,EAAE,MAAM;EACxCC,wCAAwC,EAAE,MAAM;EAChDC,yCAAyC,EAAE,MAAM;EAIjDC,+BAA+B,EAAE,MAAM;EACvCC,gCAAgC,EAAE,MAAM;EACxCC,+BAA+B,EAAE,MAAM;EACvCC,gCAAgC,EAAE,MAAM;EAIxCC,yBAAyB,EAAE,MAAM;EAIjCC,wBAAwB,EAAE,MAAM;EAChCC,wCAAwC,EAAE,MAAM;EAChDC,4CAA4C,EAAE,MAAM;EAIpDC,4BAA4B,EAAE,MAAM;EACpCC,4BAA4B,EAAE,MAAM;EACpCC,4BAA4B,EAAE,MAAM;EACpCC,4BAA4B,EAAE,MAAM;EACpCC,4BAA4B,EAAE,MAAM;EACpCC,4BAA4B,EAAE,MAAM;EACpCC,4BAA4B,EAAE,MAAM;EACpCC,4BAA4B,EAAE,MAAM;EACpCC,6BAA6B,EAAE,MAAM;EACrCC,6BAA6B,EAAE,MAAM;EACrCC,6BAA6B,EAAE,MAAM;EACrCC,8BAA8B,EAAE,MAAM;EACtCC,8BAA8B,EAAE,MAAM;EACtCC,8BAA8B,EAAE,MAAM;EACtCC,oCAAoC,EAAE,MAAM;EAC5CC,oCAAoC,EAAE,MAAM;EAC5CC,oCAAoC,EAAE,MAAM;EAC5CC,oCAAoC,EAAE,MAAM;EAC5CC,oCAAoC,EAAE,MAAM;EAC5CC,oCAAoC,EAAE,MAAM;EAC5CC,oCAAoC,EAAE,MAAM;EAC5CC,oCAAoC,EAAE,MAAM;EAC5CC,qCAAqC,EAAE,MAAM;EAC7CC,qCAAqC,EAAE,MAAM;EAC7CC,qCAAqC,EAAE,MAAM;EAC7CC,sCAAsC,EAAE,MAAM;EAC9CC,sCAAsC,EAAE,MAAM;EAC9CC,sCAAsC,EAAE,MAAM;EAI9CC,wBAAwB,EAAE,MAAM;EAChCC,+BAA+B,EAAE,MAAM;EACvCC,8BAA8B,EAAE,MAAM;EACtCC,qCAAqC,EAAE,MAAM;EAI7CC,6BAA6B,EAAE,MAAM;EACrCC,mCAAmC,EAAE,MAAM;EAC3CC,mCAAmC,EAAE,MAAM;EAC3CC,mCAAmC,EAAE;AACvC,CAAC"}
@@ -1,11 +1,8 @@
1
-
2
- const VERSION = typeof "3.4.0-alpha.2" !== 'undefined' ? "3.4.0-alpha.2" : 'beta';
3
-
1
+ const VERSION = typeof "3.4.0-alpha.3" !== 'undefined' ? "3.4.0-alpha.3" : 'beta';
4
2
  import { loadLibrary } from '@loaders.gl/worker-utils';
5
3
  const BASIS_CDN_ENCODER_WASM = "https://unpkg.com/@loaders.gl/textures@".concat(VERSION, "/dist/libs/basis_encoder.wasm");
6
4
  const BASIS_CDN_ENCODER_JS = "https://unpkg.com/@loaders.gl/textures@".concat(VERSION, "/dist/libs/basis_encoder.js");
7
5
  let loadBasisTranscoderPromise;
8
-
9
6
  export async function loadBasisTrascoderModule(options) {
10
7
  const modules = options.modules || {};
11
8
  if (modules.basis) {
@@ -14,16 +11,13 @@ export async function loadBasisTrascoderModule(options) {
14
11
  loadBasisTranscoderPromise = loadBasisTranscoderPromise || loadBasisTrascoder(options);
15
12
  return await loadBasisTranscoderPromise;
16
13
  }
17
-
18
14
  async function loadBasisTrascoder(options) {
19
15
  let BASIS = null;
20
16
  let wasmBinary = null;
21
17
  [BASIS, wasmBinary] = await Promise.all([await loadLibrary('basis_transcoder.js', 'textures', options), await loadLibrary('basis_transcoder.wasm', 'textures', options)]);
22
-
23
18
  BASIS = BASIS || globalThis.BASIS;
24
19
  return await initializeBasisTrascoderModule(BASIS, wasmBinary);
25
20
  }
26
-
27
21
  function initializeBasisTrascoderModule(BasisModule, wasmBinary) {
28
22
  const options = {};
29
23
  if (wasmBinary) {
@@ -43,7 +37,6 @@ function initializeBasisTrascoderModule(BasisModule, wasmBinary) {
43
37
  });
44
38
  }
45
39
  let loadBasisEncoderPromise;
46
-
47
40
  export async function loadBasisEncoderModule(options) {
48
41
  const modules = options.modules || {};
49
42
  if (modules.basisEncoder) {
@@ -52,16 +45,13 @@ export async function loadBasisEncoderModule(options) {
52
45
  loadBasisEncoderPromise = loadBasisEncoderPromise || loadBasisEncoder(options);
53
46
  return await loadBasisEncoderPromise;
54
47
  }
55
-
56
48
  async function loadBasisEncoder(options) {
57
49
  let BASIS_ENCODER = null;
58
50
  let wasmBinary = null;
59
51
  [BASIS_ENCODER, wasmBinary] = await Promise.all([await loadLibrary(BASIS_CDN_ENCODER_JS, 'textures', options), await loadLibrary(BASIS_CDN_ENCODER_WASM, 'textures', options)]);
60
-
61
52
  BASIS_ENCODER = BASIS_ENCODER || globalThis.BASIS;
62
53
  return await initializeBasisEncoderModule(BASIS_ENCODER, wasmBinary);
63
54
  }
64
-
65
55
  function initializeBasisEncoderModule(BasisEncoderModule, wasmBinary) {
66
56
  const options = {};
67
57
  if (wasmBinary) {
@@ -1 +1 @@
1
- {"version":3,"file":"basis-module-loader.js","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"],"sources":["../../../../src/lib/parsers/basis-module-loader.ts"],"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"],"mappings":"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"}
1
+ {"version":3,"file":"basis-module-loader.js","names":["VERSION","loadLibrary","BASIS_CDN_ENCODER_WASM","concat","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"],"sources":["../../../../src/lib/parsers/basis-module-loader.ts"],"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"],"mappings":"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"}
@@ -1,6 +1,4 @@
1
-
2
1
  import { loadLibrary } from '@loaders.gl/worker-utils';
3
-
4
2
  export async function loadCrunchModule(options) {
5
3
  const modules = options.modules || {};
6
4
  if (modules.crunch) {
@@ -9,13 +7,11 @@ export async function loadCrunchModule(options) {
9
7
  return loadCrunch(options);
10
8
  }
11
9
  let crunchModule;
12
-
13
10
  async function loadCrunch(options) {
14
11
  if (crunchModule) {
15
12
  return crunchModule;
16
13
  }
17
14
  let loadCrunchDecoder = await loadLibrary('crunch.js', 'textures', options);
18
-
19
15
  loadCrunchDecoder = loadCrunchDecoder || globalThis.LoadCrunchDecoder;
20
16
  crunchModule = loadCrunchDecoder();
21
17
  return crunchModule;
@@ -1 +1 @@
1
- {"version":3,"file":"crunch-module-loader.js","names":["loadLibrary","loadCrunchModule","options","modules","crunch","loadCrunch","crunchModule","loadCrunchDecoder","globalThis","LoadCrunchDecoder"],"sources":["../../../../src/lib/parsers/crunch-module-loader.ts"],"sourcesContent":["// @ts-nocheck\nimport {loadLibrary} from '@loaders.gl/worker-utils';\n\n/**\n * Load crunch decoder module\n * @param options - loader options\n * @returns Promise of module object\n */\nexport async function loadCrunchModule(options): Promise<any> {\n const modules = options.modules || {};\n if (modules.crunch) {\n return modules.crunch;\n }\n\n return loadCrunch(options);\n}\n\nlet crunchModule;\n\n/**\n * Load crunch decoder module\n * @param {any} options - Loader options\n * @returns {Promise<any>} Promise of Module object\n */\nasync function loadCrunch(options) {\n if (crunchModule) {\n return crunchModule;\n }\n\n let loadCrunchDecoder = await loadLibrary('crunch.js', 'textures', options);\n\n // Depends on how import happened...\n // @ts-ignore TS2339: Property does not exist on type\n loadCrunchDecoder = loadCrunchDecoder || globalThis.LoadCrunchDecoder;\n crunchModule = loadCrunchDecoder();\n return crunchModule;\n}\n"],"mappings":";AACA,SAAQA,WAAW,QAAO,0BAA0B;;AAOpD,OAAO,eAAeC,gBAAgB,CAACC,OAAO,EAAgB;EAC5D,MAAMC,OAAO,GAAGD,OAAO,CAACC,OAAO,IAAI,CAAC,CAAC;EACrC,IAAIA,OAAO,CAACC,MAAM,EAAE;IAClB,OAAOD,OAAO,CAACC,MAAM;EACvB;EAEA,OAAOC,UAAU,CAACH,OAAO,CAAC;AAC5B;AAEA,IAAII,YAAY;;AAOhB,eAAeD,UAAU,CAACH,OAAO,EAAE;EACjC,IAAII,YAAY,EAAE;IAChB,OAAOA,YAAY;EACrB;EAEA,IAAIC,iBAAiB,GAAG,MAAMP,WAAW,CAAC,WAAW,EAAE,UAAU,EAAEE,OAAO,CAAC;;EAI3EK,iBAAiB,GAAGA,iBAAiB,IAAIC,UAAU,CAACC,iBAAiB;EACrEH,YAAY,GAAGC,iBAAiB,EAAE;EAClC,OAAOD,YAAY;AACrB"}
1
+ {"version":3,"file":"crunch-module-loader.js","names":["loadLibrary","loadCrunchModule","options","modules","crunch","loadCrunch","crunchModule","loadCrunchDecoder","globalThis","LoadCrunchDecoder"],"sources":["../../../../src/lib/parsers/crunch-module-loader.ts"],"sourcesContent":["// @ts-nocheck\nimport {loadLibrary} from '@loaders.gl/worker-utils';\n\n/**\n * Load crunch decoder module\n * @param options - loader options\n * @returns Promise of module object\n */\nexport async function loadCrunchModule(options): Promise<any> {\n const modules = options.modules || {};\n if (modules.crunch) {\n return modules.crunch;\n }\n\n return loadCrunch(options);\n}\n\nlet crunchModule;\n\n/**\n * Load crunch decoder module\n * @param {any} options - Loader options\n * @returns {Promise<any>} Promise of Module object\n */\nasync function loadCrunch(options) {\n if (crunchModule) {\n return crunchModule;\n }\n\n let loadCrunchDecoder = await loadLibrary('crunch.js', 'textures', options);\n\n // Depends on how import happened...\n // @ts-ignore TS2339: Property does not exist on type\n loadCrunchDecoder = loadCrunchDecoder || globalThis.LoadCrunchDecoder;\n crunchModule = loadCrunchDecoder();\n return crunchModule;\n}\n"],"mappings":"AACA,SAAQA,WAAW,QAAO,0BAA0B;AAOpD,OAAO,eAAeC,gBAAgBA,CAACC,OAAO,EAAgB;EAC5D,MAAMC,OAAO,GAAGD,OAAO,CAACC,OAAO,IAAI,CAAC,CAAC;EACrC,IAAIA,OAAO,CAACC,MAAM,EAAE;IAClB,OAAOD,OAAO,CAACC,MAAM;EACvB;EAEA,OAAOC,UAAU,CAACH,OAAO,CAAC;AAC5B;AAEA,IAAII,YAAY;AAOhB,eAAeD,UAAUA,CAACH,OAAO,EAAE;EACjC,IAAII,YAAY,EAAE;IAChB,OAAOA,YAAY;EACrB;EAEA,IAAIC,iBAAiB,GAAG,MAAMP,WAAW,CAAC,WAAW,EAAE,UAAU,EAAEE,OAAO,CAAC;EAI3EK,iBAAiB,GAAGA,iBAAiB,IAAIC,UAAU,CAACC,iBAAiB;EACrEH,YAAY,GAAGC,iBAAiB,EAAE;EAClC,OAAOD,YAAY;AACrB"}
@@ -1,5 +1,3 @@
1
-
2
-
3
1
  import { loadBasisEncoderModule, loadBasisTrascoderModule } from './basis-module-loader';
4
2
  import { GL_EXTENSIONS_CONSTANTS } from '../gl-extensions';
5
3
  import { getSupportedGPUTextureFormats } from '../utils/texture-formats';
@@ -80,7 +78,6 @@ const OutputFormat = {
80
78
  compressed: false
81
79
  }
82
80
  };
83
-
84
81
  export default async function parseBasis(data, options) {
85
82
  if (options.basis.containerFormat === 'auto') {
86
83
  if (isKTX(data)) {
@@ -110,7 +107,6 @@ export default async function parseBasis(data, options) {
110
107
  return parseBasisFile(BasisFile, data, options);
111
108
  }
112
109
  }
113
-
114
110
  function parseBasisFile(BasisFile, data, options) {
115
111
  const basisFile = new BasisFile(new Uint8Array(data));
116
112
  try {
@@ -133,13 +129,10 @@ function parseBasisFile(BasisFile, data, options) {
133
129
  basisFile.delete();
134
130
  }
135
131
  }
136
-
137
132
  function transcodeImage(basisFile, imageIndex, levelIndex, options) {
138
133
  const width = basisFile.getImageWidth(imageIndex, levelIndex);
139
134
  const height = basisFile.getImageHeight(imageIndex, levelIndex);
140
-
141
135
  const hasAlpha = basisFile.getHasAlpha();
142
-
143
136
  const {
144
137
  compressed,
145
138
  format,
@@ -159,7 +152,6 @@ function transcodeImage(basisFile, imageIndex, levelIndex, options) {
159
152
  hasAlpha
160
153
  };
161
154
  }
162
-
163
155
  function parseKTX2File(KTX2File, data, options) {
164
156
  const ktx2File = new KTX2File(new Uint8Array(data));
165
157
  try {
@@ -172,21 +164,18 @@ function parseKTX2File(KTX2File, data, options) {
172
164
  levels.push(transcodeKTX2Image(ktx2File, levelIndex, options));
173
165
  break;
174
166
  }
175
-
176
167
  return [levels];
177
168
  } finally {
178
169
  ktx2File.close();
179
170
  ktx2File.delete();
180
171
  }
181
172
  }
182
-
183
173
  function transcodeKTX2Image(ktx2File, levelIndex, options) {
184
174
  const {
185
175
  alphaFlag,
186
176
  height,
187
177
  width
188
178
  } = ktx2File.getImageLevelInfo(levelIndex, 0, 0);
189
-
190
179
  const {
191
180
  compressed,
192
181
  format,
@@ -207,7 +196,6 @@ function transcodeKTX2Image(ktx2File, levelIndex, options) {
207
196
  format
208
197
  };
209
198
  }
210
-
211
199
  function getBasisOptions(options, hasAlpha) {
212
200
  let format = options && options.basis && options.basis.format;
213
201
  if (format === 'auto') {
@@ -219,7 +207,6 @@ function getBasisOptions(options, hasAlpha) {
219
207
  format = format.toLowerCase();
220
208
  return OutputFormat[format];
221
209
  }
222
-
223
210
  export function selectSupportedBasisFormat() {
224
211
  const supportedFormats = getSupportedGPUTextureFormats();
225
212
  if (supportedFormats.has('astc')) {
@@ -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","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
+ {"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":"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"}
@@ -1,7 +1,6 @@
1
1
  import { isKTX, parseKTX } from './parse-ktx';
2
2
  import { isDDS, parseDDS } from './parse-dds';
3
3
  import { isPVR, parsePVR } from './parse-pvr';
4
-
5
4
  export function parseCompressedTexture(data) {
6
5
  if (isKTX(data)) {
7
6
  return parseKTX(data);
@@ -1 +1 @@
1
- {"version":3,"file":"parse-compressed-texture.js","names":["isKTX","parseKTX","isDDS","parseDDS","isPVR","parsePVR","parseCompressedTexture","data","Error"],"sources":["../../../../src/lib/parsers/parse-compressed-texture.ts"],"sourcesContent":["import type {TextureLevel} from '@loaders.gl/schema';\nimport {isKTX, parseKTX} from './parse-ktx';\nimport {isDDS, parseDDS} from './parse-dds';\nimport {isPVR, parsePVR} from './parse-pvr';\n\n/**\n * Deduces format and parses compressed texture loaded in ArrayBuffer\n * @param data - binary data of compressed texture\n * @returns Array of the texture levels\n */\nexport function parseCompressedTexture(data: ArrayBuffer): TextureLevel[] {\n if (isKTX(data)) {\n // TODO: remove @ts-ignore when `parseKTX` output is normalized to loaders.gl texture format\n // @ts-ignore\n return parseKTX(data);\n }\n if (isDDS(data)) {\n return parseDDS(data);\n }\n if (isPVR(data)) {\n return parsePVR(data);\n }\n throw new Error('Texture container format not recognized');\n}\n"],"mappings":"AACA,SAAQA,KAAK,EAAEC,QAAQ,QAAO,aAAa;AAC3C,SAAQC,KAAK,EAAEC,QAAQ,QAAO,aAAa;AAC3C,SAAQC,KAAK,EAAEC,QAAQ,QAAO,aAAa;;AAO3C,OAAO,SAASC,sBAAsB,CAACC,IAAiB,EAAkB;EACxE,IAAIP,KAAK,CAACO,IAAI,CAAC,EAAE;IAGf,OAAON,QAAQ,CAACM,IAAI,CAAC;EACvB;EACA,IAAIL,KAAK,CAACK,IAAI,CAAC,EAAE;IACf,OAAOJ,QAAQ,CAACI,IAAI,CAAC;EACvB;EACA,IAAIH,KAAK,CAACG,IAAI,CAAC,EAAE;IACf,OAAOF,QAAQ,CAACE,IAAI,CAAC;EACvB;EACA,MAAM,IAAIC,KAAK,CAAC,yCAAyC,CAAC;AAC5D"}
1
+ {"version":3,"file":"parse-compressed-texture.js","names":["isKTX","parseKTX","isDDS","parseDDS","isPVR","parsePVR","parseCompressedTexture","data","Error"],"sources":["../../../../src/lib/parsers/parse-compressed-texture.ts"],"sourcesContent":["import type {TextureLevel} from '@loaders.gl/schema';\nimport {isKTX, parseKTX} from './parse-ktx';\nimport {isDDS, parseDDS} from './parse-dds';\nimport {isPVR, parsePVR} from './parse-pvr';\n\n/**\n * Deduces format and parses compressed texture loaded in ArrayBuffer\n * @param data - binary data of compressed texture\n * @returns Array of the texture levels\n */\nexport function parseCompressedTexture(data: ArrayBuffer): TextureLevel[] {\n if (isKTX(data)) {\n // TODO: remove @ts-ignore when `parseKTX` output is normalized to loaders.gl texture format\n // @ts-ignore\n return parseKTX(data);\n }\n if (isDDS(data)) {\n return parseDDS(data);\n }\n if (isPVR(data)) {\n return parsePVR(data);\n }\n throw new Error('Texture container format not recognized');\n}\n"],"mappings":"AACA,SAAQA,KAAK,EAAEC,QAAQ,QAAO,aAAa;AAC3C,SAAQC,KAAK,EAAEC,QAAQ,QAAO,aAAa;AAC3C,SAAQC,KAAK,EAAEC,QAAQ,QAAO,aAAa;AAO3C,OAAO,SAASC,sBAAsBA,CAACC,IAAiB,EAAkB;EACxE,IAAIP,KAAK,CAACO,IAAI,CAAC,EAAE;IAGf,OAAON,QAAQ,CAACM,IAAI,CAAC;EACvB;EACA,IAAIL,KAAK,CAACK,IAAI,CAAC,EAAE;IACf,OAAOJ,QAAQ,CAACI,IAAI,CAAC;EACvB;EACA,IAAIH,KAAK,CAACG,IAAI,CAAC,EAAE;IACf,OAAOF,QAAQ,CAACE,IAAI,CAAC;EACvB;EACA,MAAM,IAAIC,KAAK,CAAC,yCAAyC,CAAC;AAC5D"}
@@ -3,15 +3,12 @@ import { GL_EXTENSIONS_CONSTANTS } from '../gl-extensions';
3
3
  import { assert } from '@loaders.gl/loader-utils';
4
4
  import { getDxt1LevelSize, getDxtXLevelSize } from './parse-dds';
5
5
  import { extractMipmapImages } from '../utils/extract-mipmap-images';
6
-
7
6
  const CRN_FORMAT = {
8
7
  cCRNFmtInvalid: -1,
9
8
  cCRNFmtDXT1: 0,
10
9
  cCRNFmtDXT3: 1,
11
10
  cCRNFmtDXT5: 2
12
-
13
11
  };
14
-
15
12
  const DXT_FORMAT_MAP = {
16
13
  [CRN_FORMAT.cCRNFmtDXT1]: {
17
14
  pixelFormat: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT,
@@ -28,28 +25,22 @@ const DXT_FORMAT_MAP = {
28
25
  };
29
26
  let cachedDstSize = 0;
30
27
  let dst;
31
-
32
28
  export async function parseCrunch(data, options) {
33
29
  const crunchModule = await loadCrunchModule(options);
34
-
35
30
  const srcSize = data.byteLength;
36
31
  const bytes = new Uint8Array(data);
37
32
  const src = crunchModule._malloc(srcSize);
38
33
  arrayBufferCopy(bytes, crunchModule.HEAPU8, src, srcSize);
39
-
40
34
  const format = crunchModule._crn_get_dxt_format(src, srcSize);
41
35
  assert(Boolean(DXT_FORMAT_MAP[format]), 'Unsupported format');
42
-
43
36
  const mipMapLevels = crunchModule._crn_get_levels(src, srcSize);
44
37
  const width = crunchModule._crn_get_width(src, srcSize);
45
38
  const height = crunchModule._crn_get_height(src, srcSize);
46
-
47
39
  const sizeFunction = DXT_FORMAT_MAP[format].sizeFunction;
48
40
  let dstSize = 0;
49
41
  for (let i = 0; i < mipMapLevels; ++i) {
50
42
  dstSize += sizeFunction(width >> i, height >> i);
51
43
  }
52
-
53
44
  if (cachedDstSize < dstSize) {
54
45
  if (dst) {
55
46
  crunchModule._free(dst);
@@ -57,9 +48,7 @@ export async function parseCrunch(data, options) {
57
48
  dst = crunchModule._malloc(dstSize);
58
49
  cachedDstSize = dstSize;
59
50
  }
60
-
61
51
  crunchModule._crn_decompress(src, srcSize, dst, dstSize, 0, mipMapLevels);
62
-
63
52
  crunchModule._free(src);
64
53
  const image = new Uint8Array(crunchModule.HEAPU8.buffer, dst, dstSize).slice();
65
54
  return extractMipmapImages(image, {
@@ -70,7 +59,6 @@ export async function parseCrunch(data, options) {
70
59
  internalFormat: DXT_FORMAT_MAP[format].pixelFormat
71
60
  });
72
61
  }
73
-
74
62
  function arrayBufferCopy(srcData, dstData, dstByteOffset, numBytes) {
75
63
  let i;
76
64
  const dst32Offset = dstByteOffset / 4;
@@ -1 +1 @@
1
- {"version":3,"file":"parse-crunch.js","names":["loadCrunchModule","GL_EXTENSIONS_CONSTANTS","assert","getDxt1LevelSize","getDxtXLevelSize","extractMipmapImages","CRN_FORMAT","cCRNFmtInvalid","cCRNFmtDXT1","cCRNFmtDXT3","cCRNFmtDXT5","DXT_FORMAT_MAP","pixelFormat","COMPRESSED_RGB_S3TC_DXT1_EXT","sizeFunction","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","cachedDstSize","dst","parseCrunch","data","options","crunchModule","srcSize","byteLength","bytes","Uint8Array","src","_malloc","arrayBufferCopy","HEAPU8","format","_crn_get_dxt_format","Boolean","mipMapLevels","_crn_get_levels","width","_crn_get_width","height","_crn_get_height","dstSize","i","_free","_crn_decompress","image","buffer","slice","internalFormat","srcData","dstData","dstByteOffset","numBytes","dst32Offset","tail","src32","Uint32Array","dst32","length"],"sources":["../../../../src/lib/parsers/parse-crunch.ts"],"sourcesContent":["import type {TextureLevel} from '@loaders.gl/schema';\nimport {loadCrunchModule} from './crunch-module-loader';\nimport {GL_EXTENSIONS_CONSTANTS} from '../gl-extensions';\nimport {assert} from '@loaders.gl/loader-utils';\nimport {getDxt1LevelSize, getDxtXLevelSize} from './parse-dds';\nimport {extractMipmapImages} from '../utils/extract-mipmap-images';\n\n// Taken from crnlib.h\nconst CRN_FORMAT = {\n cCRNFmtInvalid: -1,\n\n cCRNFmtDXT1: 0,\n // cCRNFmtDXT3 is not currently supported when writing to CRN - only DDS.\n cCRNFmtDXT3: 1,\n cCRNFmtDXT5: 2\n\n // Crunch supports more formats than this.\n};\n\n/** Mapping of Crunch formats to DXT formats. */\nconst DXT_FORMAT_MAP = {\n [CRN_FORMAT.cCRNFmtDXT1]: {\n pixelFormat: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT,\n sizeFunction: getDxt1LevelSize\n },\n [CRN_FORMAT.cCRNFmtDXT3]: {\n pixelFormat: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT,\n sizeFunction: getDxtXLevelSize\n },\n [CRN_FORMAT.cCRNFmtDXT5]: {\n pixelFormat: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT,\n sizeFunction: getDxtXLevelSize\n }\n};\n\nlet cachedDstSize = 0;\nlet dst: number;\n\n/**\n * Parse texture data as \"CRN\" format.\n * Function is \"async\" as emscriptified decoder module is loaded asyncronously\n * @param data - binary data of compressed texture\n * @returns Promise of Array of the texture levels\n */\nexport async function parseCrunch(data, options: any): Promise<TextureLevel[]> {\n const crunchModule = await loadCrunchModule(options);\n\n // Copy the contents of the arrayBuffer into emscriptens heap.\n const srcSize = data.byteLength;\n const bytes = new Uint8Array(data);\n const src = crunchModule._malloc(srcSize);\n arrayBufferCopy(bytes, crunchModule.HEAPU8, src, srcSize);\n\n // Determine what type of compressed data the file contains.\n const format = crunchModule._crn_get_dxt_format(src, srcSize);\n assert(Boolean(DXT_FORMAT_MAP[format]), 'Unsupported format');\n\n // Gather basic metrics about the DXT data.\n const mipMapLevels = crunchModule._crn_get_levels(src, srcSize);\n const width = crunchModule._crn_get_width(src, srcSize);\n const height = crunchModule._crn_get_height(src, srcSize);\n // const bytesPerBlock = crunchModule._crn_get_bytes_per_block(src, srcSize);\n\n // Determine the size of the decoded DXT data.\n const sizeFunction = DXT_FORMAT_MAP[format].sizeFunction;\n let dstSize = 0;\n for (let i = 0; i < mipMapLevels; ++i) {\n dstSize += sizeFunction(width >> i, height >> i);\n }\n\n // Allocate enough space on the emscripten heap to hold the decoded DXT data\n // or reuse the existing allocation if a previous call to this function has\n // already acquired a large enough buffer.\n if (cachedDstSize < dstSize) {\n if (dst) {\n crunchModule._free(dst);\n }\n dst = crunchModule._malloc(dstSize);\n cachedDstSize = dstSize;\n }\n\n // Decompress the DXT data from the Crunch file into the allocated space.\n crunchModule._crn_decompress(src, srcSize, dst, dstSize, 0, mipMapLevels);\n\n // Release the crunch file data from the emscripten heap.\n crunchModule._free(src);\n\n const image = new Uint8Array(crunchModule.HEAPU8.buffer, dst, dstSize).slice();\n return extractMipmapImages(image, {\n mipMapLevels,\n width,\n height,\n sizeFunction,\n internalFormat: DXT_FORMAT_MAP[format].pixelFormat\n });\n}\n\n/**\n * Copy an array of bytes into or out of the emscripten heap\n * @param {Uint8Array} srcData - Source data array\n * @param {Uint8Array} dstData - Destination data array\n * @param {number} dstByteOffset - Destination data offset\n * @param {number} numBytes - number of bytes to copy\n * @returns {void}\n */\nfunction arrayBufferCopy(srcData, dstData, dstByteOffset, numBytes) {\n let i;\n const dst32Offset = dstByteOffset / 4;\n const tail = numBytes % 4;\n const src32 = new Uint32Array(srcData.buffer, 0, (numBytes - tail) / 4);\n const dst32 = new Uint32Array(dstData.buffer);\n for (i = 0; i < src32.length; i++) {\n dst32[dst32Offset + i] = src32[i];\n }\n for (i = numBytes - tail; i < numBytes; i++) {\n dstData[dstByteOffset + i] = srcData[i];\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"parse-crunch.js","names":["loadCrunchModule","GL_EXTENSIONS_CONSTANTS","assert","getDxt1LevelSize","getDxtXLevelSize","extractMipmapImages","CRN_FORMAT","cCRNFmtInvalid","cCRNFmtDXT1","cCRNFmtDXT3","cCRNFmtDXT5","DXT_FORMAT_MAP","pixelFormat","COMPRESSED_RGB_S3TC_DXT1_EXT","sizeFunction","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","cachedDstSize","dst","parseCrunch","data","options","crunchModule","srcSize","byteLength","bytes","Uint8Array","src","_malloc","arrayBufferCopy","HEAPU8","format","_crn_get_dxt_format","Boolean","mipMapLevels","_crn_get_levels","width","_crn_get_width","height","_crn_get_height","dstSize","i","_free","_crn_decompress","image","buffer","slice","internalFormat","srcData","dstData","dstByteOffset","numBytes","dst32Offset","tail","src32","Uint32Array","dst32","length"],"sources":["../../../../src/lib/parsers/parse-crunch.ts"],"sourcesContent":["import type {TextureLevel} from '@loaders.gl/schema';\nimport {loadCrunchModule} from './crunch-module-loader';\nimport {GL_EXTENSIONS_CONSTANTS} from '../gl-extensions';\nimport {assert} from '@loaders.gl/loader-utils';\nimport {getDxt1LevelSize, getDxtXLevelSize} from './parse-dds';\nimport {extractMipmapImages} from '../utils/extract-mipmap-images';\n\n// Taken from crnlib.h\nconst CRN_FORMAT = {\n cCRNFmtInvalid: -1,\n\n cCRNFmtDXT1: 0,\n // cCRNFmtDXT3 is not currently supported when writing to CRN - only DDS.\n cCRNFmtDXT3: 1,\n cCRNFmtDXT5: 2\n\n // Crunch supports more formats than this.\n};\n\n/** Mapping of Crunch formats to DXT formats. */\nconst DXT_FORMAT_MAP = {\n [CRN_FORMAT.cCRNFmtDXT1]: {\n pixelFormat: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT,\n sizeFunction: getDxt1LevelSize\n },\n [CRN_FORMAT.cCRNFmtDXT3]: {\n pixelFormat: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT,\n sizeFunction: getDxtXLevelSize\n },\n [CRN_FORMAT.cCRNFmtDXT5]: {\n pixelFormat: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT,\n sizeFunction: getDxtXLevelSize\n }\n};\n\nlet cachedDstSize = 0;\nlet dst: number;\n\n/**\n * Parse texture data as \"CRN\" format.\n * Function is \"async\" as emscriptified decoder module is loaded asyncronously\n * @param data - binary data of compressed texture\n * @returns Promise of Array of the texture levels\n */\nexport async function parseCrunch(data, options: any): Promise<TextureLevel[]> {\n const crunchModule = await loadCrunchModule(options);\n\n // Copy the contents of the arrayBuffer into emscriptens heap.\n const srcSize = data.byteLength;\n const bytes = new Uint8Array(data);\n const src = crunchModule._malloc(srcSize);\n arrayBufferCopy(bytes, crunchModule.HEAPU8, src, srcSize);\n\n // Determine what type of compressed data the file contains.\n const format = crunchModule._crn_get_dxt_format(src, srcSize);\n assert(Boolean(DXT_FORMAT_MAP[format]), 'Unsupported format');\n\n // Gather basic metrics about the DXT data.\n const mipMapLevels = crunchModule._crn_get_levels(src, srcSize);\n const width = crunchModule._crn_get_width(src, srcSize);\n const height = crunchModule._crn_get_height(src, srcSize);\n // const bytesPerBlock = crunchModule._crn_get_bytes_per_block(src, srcSize);\n\n // Determine the size of the decoded DXT data.\n const sizeFunction = DXT_FORMAT_MAP[format].sizeFunction;\n let dstSize = 0;\n for (let i = 0; i < mipMapLevels; ++i) {\n dstSize += sizeFunction(width >> i, height >> i);\n }\n\n // Allocate enough space on the emscripten heap to hold the decoded DXT data\n // or reuse the existing allocation if a previous call to this function has\n // already acquired a large enough buffer.\n if (cachedDstSize < dstSize) {\n if (dst) {\n crunchModule._free(dst);\n }\n dst = crunchModule._malloc(dstSize);\n cachedDstSize = dstSize;\n }\n\n // Decompress the DXT data from the Crunch file into the allocated space.\n crunchModule._crn_decompress(src, srcSize, dst, dstSize, 0, mipMapLevels);\n\n // Release the crunch file data from the emscripten heap.\n crunchModule._free(src);\n\n const image = new Uint8Array(crunchModule.HEAPU8.buffer, dst, dstSize).slice();\n return extractMipmapImages(image, {\n mipMapLevels,\n width,\n height,\n sizeFunction,\n internalFormat: DXT_FORMAT_MAP[format].pixelFormat\n });\n}\n\n/**\n * Copy an array of bytes into or out of the emscripten heap\n * @param {Uint8Array} srcData - Source data array\n * @param {Uint8Array} dstData - Destination data array\n * @param {number} dstByteOffset - Destination data offset\n * @param {number} numBytes - number of bytes to copy\n * @returns {void}\n */\nfunction arrayBufferCopy(srcData, dstData, dstByteOffset, numBytes) {\n let i;\n const dst32Offset = dstByteOffset / 4;\n const tail = numBytes % 4;\n const src32 = new Uint32Array(srcData.buffer, 0, (numBytes - tail) / 4);\n const dst32 = new Uint32Array(dstData.buffer);\n for (i = 0; i < src32.length; i++) {\n dst32[dst32Offset + i] = src32[i];\n }\n for (i = numBytes - tail; i < numBytes; i++) {\n dstData[dstByteOffset + i] = srcData[i];\n }\n}\n"],"mappings":"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"}