@loaders.gl/textures 4.0.0-alpha.17 → 4.0.0-alpha.19
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.
- package/dist/basis-worker-node.js +70 -71
- package/dist/basis-worker.js +46 -30
- package/dist/compressed-texture-worker.js +46 -30
- package/dist/crunch-worker.js +33 -17
- package/dist/dist.min.js +74 -37
- package/dist/es5/index.js +14 -0
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/ktx2-basis-writer.js +4 -2
- package/dist/es5/ktx2-basis-writer.js.map +1 -1
- package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js +6 -5
- package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js.map +1 -1
- package/dist/es5/lib/parsers/basis-module-loader.js +26 -21
- package/dist/es5/lib/parsers/basis-module-loader.js.map +1 -1
- package/dist/es5/lib/parsers/crunch-module-loader.js +6 -1
- package/dist/es5/lib/parsers/crunch-module-loader.js.map +1 -1
- package/dist/es5/lib/parsers/parse-basis.js +7 -7
- package/dist/es5/lib/parsers/parse-basis.js.map +1 -1
- package/dist/es5/lib/texture-api/deep-load.js.map +1 -1
- package/dist/es5/lib/utils/version.js +1 -1
- package/dist/es5/workers/ktx2-basis-writer-worker-node.js.map +1 -1
- package/dist/es5/workers/ktx2-basis-writer-worker.js.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/ktx2-basis-writer.js +6 -4
- package/dist/esm/ktx2-basis-writer.js.map +1 -1
- package/dist/esm/lib/encoders/encode-ktx2-basis-texture.js +1 -1
- package/dist/esm/lib/encoders/encode-ktx2-basis-texture.js.map +1 -1
- package/dist/esm/lib/parsers/basis-module-loader.js +13 -10
- package/dist/esm/lib/parsers/basis-module-loader.js.map +1 -1
- package/dist/esm/lib/parsers/crunch-module-loader.js +4 -1
- package/dist/esm/lib/parsers/crunch-module-loader.js.map +1 -1
- package/dist/esm/lib/parsers/parse-basis.js +3 -3
- package/dist/esm/lib/parsers/parse-basis.js.map +1 -1
- package/dist/esm/lib/texture-api/deep-load.js.map +1 -1
- package/dist/esm/lib/utils/version.js +1 -1
- package/dist/esm/workers/ktx2-basis-writer-worker-node.js.map +1 -1
- package/dist/esm/workers/ktx2-basis-writer-worker.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/ktx2-basis-writer-worker-node.js +73 -67
- package/dist/ktx2-basis-writer-worker.js +49 -26
- package/dist/ktx2-basis-writer.d.ts +8 -6
- package/dist/ktx2-basis-writer.d.ts.map +1 -1
- package/dist/ktx2-basis-writer.js +6 -4
- package/dist/lib/encoders/encode-ktx2-basis-texture.d.ts.map +1 -1
- package/dist/lib/encoders/encode-ktx2-basis-texture.js +1 -1
- package/dist/lib/parsers/basis-module-loader.d.ts +11 -1
- package/dist/lib/parsers/basis-module-loader.d.ts.map +1 -1
- package/dist/lib/parsers/basis-module-loader.js +21 -17
- package/dist/lib/parsers/crunch-module-loader.d.ts +4 -0
- package/dist/lib/parsers/crunch-module-loader.d.ts.map +1 -1
- package/dist/lib/parsers/crunch-module-loader.js +6 -2
- package/dist/lib/parsers/parse-basis.js +2 -2
- package/dist/lib/texture-api/deep-load.d.ts.map +1 -1
- package/dist/lib/texture-api/deep-load.js +0 -1
- package/dist/npy-worker.js +1 -1
- package/package.json +7 -7
- package/src/index.ts +4 -0
- package/src/ktx2-basis-writer.ts +14 -10
- package/src/lib/encoders/encode-ktx2-basis-texture.ts +6 -1
- package/src/lib/parsers/basis-module-loader.ts +19 -16
- package/src/lib/parsers/crunch-module-loader.ts +6 -1
- package/src/lib/parsers/parse-basis.ts +3 -3
- package/src/lib/texture-api/deep-load.ts +0 -1
- package/src/workers/ktx2-basis-writer-worker-node.ts +2 -2
- package/src/workers/ktx2-basis-writer-worker.ts +2 -2
|
@@ -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,UAAUA,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;MACpE;IACF,KAAK,YAAY;IACjB;MACE,MAAM;QAACM;MAAS,CAAC,GAAG,MAAMhC,wBAAwB,CAAC0B,OAAO,CAAC;MAC3D,OAAOO,cAAc,CAACD,SAAS,EAAEP,IAAI,EAAEC,OAAO,CAAC;EACnD;AACF;AASA,SAASO,cAAcA,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,CAAC,CAAC,EAAE;MACjC,MAAM,IAAIC,KAAK,CAAC,mCAAmC,CAAC;IACtD;IAEA,MAAMC,UAAU,GAAGJ,SAAS,CAACK,YAAY,CAAC,CAAC;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,CAAC,CAAC;IACjBd,SAAS,CAACe,MAAM,CAAC,CAAC;EACpB;AACF;AAUA,SAASF,cAAcA,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,CAA6B,CAAC;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,aAAaA,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,CAAC,CAAC,EAAE;MAChC,MAAM,IAAIC,KAAK,CAAC,kCAAkC,CAAC;IACrD;IACA,MAAMK,WAAW,GAAGkB,QAAQ,CAACC,SAAS,CAAC,CAAC;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,CAAC,CAAC;IAChBY,QAAQ,CAACX,MAAM,CAAC,CAAC;EACnB;AACF;AASA,SAASa,kBAAkBA,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,WACF,CAAC;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,CACH,CAAC,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,eAAeA,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,CAAC,CAAC;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,CAAC,CAAC;EAC7B,OAAOlE,YAAY,CAACI,MAAM,CAAC;AAC7B;AAMA,OAAO,SAAS2D,0BAA0BA,CAAA,EAKpC;EACJ,MAAMI,gBAAgB,GAAGrE,6BAA6B,CAAC,CAAC;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","loadBasisTranscoderModule","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, loadBasisTranscoderModule} 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 loadBasisTranscoderModule(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 loadBasisTranscoderModule(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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deep-load.js","names":["asyncDeepMap","deepLoad","urlTree","load","options","url","shallowLoad","response","fetch","arrayBuffer"],"sources":["../../../../src/lib/texture-api/deep-load.ts"],"sourcesContent":["// loaders.gl, MIT license\nimport {asyncDeepMap} from './async-deep-map';\n\nexport type LoadOptions = Record<string, any>;\nexport type Load = (data: ArrayBuffer, options: Record<string, any>) => Promise<any>;\n\nexport async function deepLoad(urlTree: unknown, load: Load, options: LoadOptions) {\n return await asyncDeepMap(urlTree, (url: string) => shallowLoad(url, load, options));\n}\n\nexport async function shallowLoad(url: string, load: Load, options: LoadOptions): Promise<any> {\n
|
|
1
|
+
{"version":3,"file":"deep-load.js","names":["asyncDeepMap","deepLoad","urlTree","load","options","url","shallowLoad","response","fetch","arrayBuffer"],"sources":["../../../../src/lib/texture-api/deep-load.ts"],"sourcesContent":["// loaders.gl, MIT license\nimport {asyncDeepMap} from './async-deep-map';\n\nexport type LoadOptions = Record<string, any>;\nexport type Load = (data: ArrayBuffer, options: Record<string, any>) => Promise<any>;\n\nexport async function deepLoad(urlTree: unknown, load: Load, options: LoadOptions) {\n return await asyncDeepMap(urlTree, (url: string) => shallowLoad(url, load, options));\n}\n\nexport async function shallowLoad(url: string, load: Load, options: LoadOptions): Promise<any> {\n const response = await fetch(url, options.fetch);\n const arrayBuffer = await response.arrayBuffer();\n return await load(arrayBuffer, options);\n}\n"],"mappings":"AACA,SAAQA,YAAY,QAAO,kBAAkB;AAK7C,OAAO,eAAeC,QAAQA,CAACC,OAAgB,EAAEC,IAAU,EAAEC,OAAoB,EAAE;EACjF,OAAO,MAAMJ,YAAY,CAACE,OAAO,EAAGG,GAAW,IAAKC,WAAW,CAACD,GAAG,EAAEF,IAAI,EAAEC,OAAO,CAAC,CAAC;AACtF;AAEA,OAAO,eAAeE,WAAWA,CAACD,GAAW,EAAEF,IAAU,EAAEC,OAAoB,EAAgB;EAC7F,MAAMG,QAAQ,GAAG,MAAMC,KAAK,CAACH,GAAG,EAAED,OAAO,CAACI,KAAK,CAAC;EAChD,MAAMC,WAAW,GAAG,MAAMF,QAAQ,CAACE,WAAW,CAAC,CAAC;EAChD,OAAO,MAAMN,IAAI,CAACM,WAAW,EAAEL,OAAO,CAAC;AACzC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const VERSION = typeof "4.0.0-alpha.
|
|
1
|
+
export const VERSION = typeof "4.0.0-alpha.19" !== 'undefined' ? "4.0.0-alpha.19" : 'beta';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ktx2-basis-writer-worker-node.js","names":["WorkerBody","KTX2BasisWriter","inWorkerThread","onmessage","type","payload","_KTX2BasisWriter$enco","input","options","result","encode","call","postMessage","error","message","Error"],"sources":["../../../src/workers/ktx2-basis-writer-worker-node.ts"],"sourcesContent":["// Polyfills increases the bundle size significantly. Use it for NodeJS worker only\nimport '@loaders.gl/polyfills';\nimport {WorkerBody, WorkerMessagePayload} from '@loaders.gl/worker-utils';\nimport {KTX2BasisWriter} from '../ktx2-basis-writer';\n\n(() => {\n // Check that we are actually in a worker thread\n if (!WorkerBody.inWorkerThread()) {\n return;\n }\n\n WorkerBody.onmessage = async (type, payload: WorkerMessagePayload) => {\n switch (type) {\n case 'process':\n try {\n const {input, options} = payload;\n const result = await KTX2BasisWriter.encode?.(input, options);\n WorkerBody.postMessage('done', {result});\n } catch (error) {\n const message = error instanceof Error ? error.message : '';\n WorkerBody.postMessage('error', {error: message});\n }\n break;\n default:\n }\n };\n})();\n"],"mappings":"AACA,OAAO,uBAAuB;AAC9B,SAAQA,UAAU,QAA6B,0BAA0B;AACzE,SAAQC,eAAe,
|
|
1
|
+
{"version":3,"file":"ktx2-basis-writer-worker-node.js","names":["WorkerBody","KTX2BasisWriter","inWorkerThread","onmessage","type","payload","_KTX2BasisWriter$enco","input","options","result","encode","call","postMessage","error","message","Error"],"sources":["../../../src/workers/ktx2-basis-writer-worker-node.ts"],"sourcesContent":["// Polyfills increases the bundle size significantly. Use it for NodeJS worker only\nimport '@loaders.gl/polyfills';\nimport {WorkerBody, WorkerMessagePayload} from '@loaders.gl/worker-utils';\nimport {KTX2BasisWriter, KTX2BasisWriterOptions} from '../ktx2-basis-writer';\n\n(() => {\n // Check that we are actually in a worker thread\n if (!WorkerBody.inWorkerThread()) {\n return;\n }\n\n WorkerBody.onmessage = async (type, payload: WorkerMessagePayload) => {\n switch (type) {\n case 'process':\n try {\n const {input, options} = payload;\n const result = await KTX2BasisWriter.encode?.(input, options as KTX2BasisWriterOptions);\n WorkerBody.postMessage('done', {result});\n } catch (error) {\n const message = error instanceof Error ? error.message : '';\n WorkerBody.postMessage('error', {error: message});\n }\n break;\n default:\n }\n };\n})();\n"],"mappings":"AACA,OAAO,uBAAuB;AAC9B,SAAQA,UAAU,QAA6B,0BAA0B;AACzE,SAAQC,eAAe,QAA+B,sBAAsB;AAE5E,CAAC,MAAM;EAEL,IAAI,CAACD,UAAU,CAACE,cAAc,CAAC,CAAC,EAAE;IAChC;EACF;EAEAF,UAAU,CAACG,SAAS,GAAG,OAAOC,IAAI,EAAEC,OAA6B,KAAK;IACpE,QAAQD,IAAI;MACV,KAAK,SAAS;QACZ,IAAI;UAAA,IAAAE,qBAAA;UACF,MAAM;YAACC,KAAK;YAAEC;UAAO,CAAC,GAAGH,OAAO;UAChC,MAAMI,MAAM,GAAG,QAAAH,qBAAA,GAAML,eAAe,CAACS,MAAM,cAAAJ,qBAAA,uBAAtBA,qBAAA,CAAAK,IAAA,CAAAV,eAAe,EAAUM,KAAK,EAAEC,OAAiC,CAAC;UACvFR,UAAU,CAACY,WAAW,CAAC,MAAM,EAAE;YAACH;UAAM,CAAC,CAAC;QAC1C,CAAC,CAAC,OAAOI,KAAK,EAAE;UACd,MAAMC,OAAO,GAAGD,KAAK,YAAYE,KAAK,GAAGF,KAAK,CAACC,OAAO,GAAG,EAAE;UAC3Dd,UAAU,CAACY,WAAW,CAAC,OAAO,EAAE;YAACC,KAAK,EAAEC;UAAO,CAAC,CAAC;QACnD;QACA;MACF;IACF;EACF,CAAC;AACH,CAAC,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ktx2-basis-writer-worker.js","names":["WorkerBody","KTX2BasisWriter","inWorkerThread","onmessage","type","payload","_KTX2BasisWriter$enco","input","options","result","encode","call","postMessage","error","message","Error"],"sources":["../../../src/workers/ktx2-basis-writer-worker.ts"],"sourcesContent":["import {WorkerBody, WorkerMessagePayload} from '@loaders.gl/worker-utils';\nimport {KTX2BasisWriter} from '../ktx2-basis-writer';\n\n(() => {\n // Check that we are actually in a worker thread\n if (!WorkerBody.inWorkerThread()) {\n return;\n }\n\n WorkerBody.onmessage = async (type, payload: WorkerMessagePayload) => {\n switch (type) {\n case 'process':\n try {\n const {input, options} = payload;\n const result = await KTX2BasisWriter.encode?.(input, options);\n WorkerBody.postMessage('done', {result});\n } catch (error) {\n const message = error instanceof Error ? error.message : '';\n WorkerBody.postMessage('error', {error: message});\n }\n break;\n default:\n }\n };\n})();\n"],"mappings":"AAAA,SAAQA,UAAU,QAA6B,0BAA0B;AACzE,SAAQC,eAAe,
|
|
1
|
+
{"version":3,"file":"ktx2-basis-writer-worker.js","names":["WorkerBody","KTX2BasisWriter","inWorkerThread","onmessage","type","payload","_KTX2BasisWriter$enco","input","options","result","encode","call","postMessage","error","message","Error"],"sources":["../../../src/workers/ktx2-basis-writer-worker.ts"],"sourcesContent":["import {WorkerBody, WorkerMessagePayload} from '@loaders.gl/worker-utils';\nimport {KTX2BasisWriter, KTX2BasisWriterOptions} from '../ktx2-basis-writer';\n\n(() => {\n // Check that we are actually in a worker thread\n if (!WorkerBody.inWorkerThread()) {\n return;\n }\n\n WorkerBody.onmessage = async (type, payload: WorkerMessagePayload) => {\n switch (type) {\n case 'process':\n try {\n const {input, options} = payload;\n const result = await KTX2BasisWriter.encode?.(input, options as KTX2BasisWriterOptions);\n WorkerBody.postMessage('done', {result});\n } catch (error) {\n const message = error instanceof Error ? error.message : '';\n WorkerBody.postMessage('error', {error: message});\n }\n break;\n default:\n }\n };\n})();\n"],"mappings":"AAAA,SAAQA,UAAU,QAA6B,0BAA0B;AACzE,SAAQC,eAAe,QAA+B,sBAAsB;AAE5E,CAAC,MAAM;EAEL,IAAI,CAACD,UAAU,CAACE,cAAc,CAAC,CAAC,EAAE;IAChC;EACF;EAEAF,UAAU,CAACG,SAAS,GAAG,OAAOC,IAAI,EAAEC,OAA6B,KAAK;IACpE,QAAQD,IAAI;MACV,KAAK,SAAS;QACZ,IAAI;UAAA,IAAAE,qBAAA;UACF,MAAM;YAACC,KAAK;YAAEC;UAAO,CAAC,GAAGH,OAAO;UAChC,MAAMI,MAAM,GAAG,QAAAH,qBAAA,GAAML,eAAe,CAACS,MAAM,cAAAJ,qBAAA,uBAAtBA,qBAAA,CAAAK,IAAA,CAAAV,eAAe,EAAUM,KAAK,EAAEC,OAAiC,CAAC;UACvFR,UAAU,CAACY,WAAW,CAAC,MAAM,EAAE;YAACH;UAAM,CAAC,CAAC;QAC1C,CAAC,CAAC,OAAOI,KAAK,EAAE;UACd,MAAMC,OAAO,GAAGD,KAAK,YAAYE,KAAK,GAAGF,KAAK,CAACC,OAAO,GAAG,EAAE;UAC3Dd,UAAU,CAACY,WAAW,CAAC,OAAO,EAAE;YAACC,KAAK,EAAEC;UAAO,CAAC,CAAC;QACnD;QACA;MACF;IACF;EACF,CAAC;AACH,CAAC,EAAE,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ export { BasisLoader, BasisWorkerLoader } from './basis-loader';
|
|
|
4
4
|
export { CompressedTextureLoader, CompressedTextureWorkerLoader } from './compressed-texture-loader';
|
|
5
5
|
export { CrunchLoader } from './crunch-loader';
|
|
6
6
|
export { NPYLoader, NPYWorkerLoader } from './npy-loader';
|
|
7
|
+
export { BASIS_EXTERNAL_LIBRARIES } from './lib/parsers/basis-module-loader';
|
|
8
|
+
export { CRUNCH_EXTERNAL_LIBRARIES } from './lib/parsers/crunch-module-loader';
|
|
7
9
|
export { CompressedTextureWriter } from './compressed-texture-writer';
|
|
8
10
|
export { KTX2BasisWriter } from './ktx2-basis-writer';
|
|
9
11
|
export declare const KTX2BasisWriterWorker: {
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AACzD,YAAY,EAAC,oBAAoB,EAAC,MAAM,6BAA6B,CAAC;AAGtE,OAAO,EAAC,WAAW,EAAE,iBAAiB,EAAC,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAC,uBAAuB,EAAE,6BAA6B,EAAC,MAAM,6BAA6B,CAAC;AACnG,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAC,SAAS,EAAE,eAAe,EAAC,MAAM,cAAc,CAAC;AAGxD,OAAO,EAAC,uBAAuB,EAAC,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AAEpD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;CAajC,CAAC;AAGF,OAAO,EAAC,gBAAgB,EAAC,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAC,qBAAqB,EAAC,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAC,oBAAoB,EAAC,MAAM,mCAAmC,CAAC;AAGvE,OAAO,EAAC,uBAAuB,EAAC,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAC,0BAA0B,EAAC,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAC,6BAA6B,EAAC,MAAM,6BAA6B,CAAC;AAG1E,OAAO,EAAC,YAAY,IAAI,kBAAkB,EAAC,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AACzD,YAAY,EAAC,oBAAoB,EAAC,MAAM,6BAA6B,CAAC;AAGtE,OAAO,EAAC,WAAW,EAAE,iBAAiB,EAAC,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAC,uBAAuB,EAAE,6BAA6B,EAAC,MAAM,6BAA6B,CAAC;AACnG,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAC,SAAS,EAAE,eAAe,EAAC,MAAM,cAAc,CAAC;AAGxD,OAAO,EAAC,wBAAwB,EAAC,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAC,yBAAyB,EAAC,MAAM,oCAAoC,CAAC;AAG7E,OAAO,EAAC,uBAAuB,EAAC,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AAEpD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;CAajC,CAAC;AAGF,OAAO,EAAC,gBAAgB,EAAC,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAC,qBAAqB,EAAC,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAC,oBAAoB,EAAC,MAAM,mCAAmC,CAAC;AAGvE,OAAO,EAAC,uBAAuB,EAAC,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAC,0BAA0B,EAAC,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAC,6BAA6B,EAAC,MAAM,6BAA6B,CAAC;AAG1E,OAAO,EAAC,YAAY,IAAI,kBAAkB,EAAC,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CrunchWorkerLoader = exports.getSupportedGPUTextureFormats = exports.selectSupportedBasisFormat = exports.GL_EXTENSIONS_CONSTANTS = exports.loadImageTextureCube = exports.loadImageTextureArray = exports.loadImageTexture = exports.KTX2BasisWriterWorker = exports.KTX2BasisWriter = exports.CompressedTextureWriter = exports.NPYWorkerLoader = exports.NPYLoader = exports.CrunchLoader = exports.CompressedTextureWorkerLoader = exports.CompressedTextureLoader = exports.BasisWorkerLoader = exports.BasisLoader = void 0;
|
|
3
|
+
exports.CrunchWorkerLoader = exports.getSupportedGPUTextureFormats = exports.selectSupportedBasisFormat = exports.GL_EXTENSIONS_CONSTANTS = exports.loadImageTextureCube = exports.loadImageTextureArray = exports.loadImageTexture = exports.KTX2BasisWriterWorker = exports.KTX2BasisWriter = exports.CompressedTextureWriter = exports.CRUNCH_EXTERNAL_LIBRARIES = exports.BASIS_EXTERNAL_LIBRARIES = exports.NPYWorkerLoader = exports.NPYLoader = exports.CrunchLoader = exports.CompressedTextureWorkerLoader = exports.CompressedTextureLoader = exports.BasisWorkerLoader = exports.BasisLoader = void 0;
|
|
4
4
|
const version_1 = require("./lib/utils/version");
|
|
5
5
|
// Loaders
|
|
6
6
|
var basis_loader_1 = require("./basis-loader");
|
|
@@ -14,6 +14,11 @@ Object.defineProperty(exports, "CrunchLoader", { enumerable: true, get: function
|
|
|
14
14
|
var npy_loader_1 = require("./npy-loader");
|
|
15
15
|
Object.defineProperty(exports, "NPYLoader", { enumerable: true, get: function () { return npy_loader_1.NPYLoader; } });
|
|
16
16
|
Object.defineProperty(exports, "NPYWorkerLoader", { enumerable: true, get: function () { return npy_loader_1.NPYWorkerLoader; } });
|
|
17
|
+
// Module constants
|
|
18
|
+
var basis_module_loader_1 = require("./lib/parsers/basis-module-loader");
|
|
19
|
+
Object.defineProperty(exports, "BASIS_EXTERNAL_LIBRARIES", { enumerable: true, get: function () { return basis_module_loader_1.BASIS_EXTERNAL_LIBRARIES; } });
|
|
20
|
+
var crunch_module_loader_1 = require("./lib/parsers/crunch-module-loader");
|
|
21
|
+
Object.defineProperty(exports, "CRUNCH_EXTERNAL_LIBRARIES", { enumerable: true, get: function () { return crunch_module_loader_1.CRUNCH_EXTERNAL_LIBRARIES; } });
|
|
17
22
|
// Writers
|
|
18
23
|
var compressed_texture_writer_1 = require("./compressed-texture-writer");
|
|
19
24
|
Object.defineProperty(exports, "CompressedTextureWriter", { enumerable: true, get: function () { return compressed_texture_writer_1.CompressedTextureWriter; } });
|
|
@@ -21408,7 +21408,7 @@ var require_cookie = __commonJS({
|
|
|
21408
21408
|
var Store = require_store().Store;
|
|
21409
21409
|
var MemoryCookieStore = require_memstore().MemoryCookieStore;
|
|
21410
21410
|
var pathMatch = require_pathMatch().pathMatch;
|
|
21411
|
-
var
|
|
21411
|
+
var VERSION4 = require_version();
|
|
21412
21412
|
var punycode;
|
|
21413
21413
|
try {
|
|
21414
21414
|
punycode = require("punycode");
|
|
@@ -22225,7 +22225,7 @@ var require_cookie = __commonJS({
|
|
|
22225
22225
|
type = null;
|
|
22226
22226
|
}
|
|
22227
22227
|
var serialized = {
|
|
22228
|
-
version: "tough-cookie@" +
|
|
22228
|
+
version: "tough-cookie@" + VERSION4,
|
|
22229
22229
|
storeType: type,
|
|
22230
22230
|
rejectPublicSuffixes: !!this.rejectPublicSuffixes,
|
|
22231
22231
|
cookies: []
|
|
@@ -22377,7 +22377,7 @@ var require_cookie = __commonJS({
|
|
|
22377
22377
|
CAN_BE_SYNC.forEach(function(method) {
|
|
22378
22378
|
CookieJar.prototype[method + "Sync"] = syncWrap(method);
|
|
22379
22379
|
});
|
|
22380
|
-
exports2.version =
|
|
22380
|
+
exports2.version = VERSION4;
|
|
22381
22381
|
exports2.CookieJar = CookieJar;
|
|
22382
22382
|
exports2.Cookie = Cookie;
|
|
22383
22383
|
exports2.Store = Store;
|
|
@@ -62764,48 +62764,12 @@ var Response = class {
|
|
|
62764
62764
|
// ../polyfills/src/node/fetch/fetch.node.ts
|
|
62765
62765
|
var import_http = __toModule(require("http"));
|
|
62766
62766
|
var import_https = __toModule(require("https"));
|
|
62767
|
-
|
|
62768
|
-
// ../polyfills/src/node/fetch/fetch-file.node.ts
|
|
62769
|
-
var import_fs = __toModule(require("fs"));
|
|
62770
|
-
async function fetchFileNode(url, options) {
|
|
62771
|
-
const noqueryUrl = url.split("?")[0];
|
|
62772
|
-
try {
|
|
62773
|
-
const body = await new Promise((resolve, reject) => {
|
|
62774
|
-
const stream = import_fs.default.createReadStream(noqueryUrl, { encoding: null });
|
|
62775
|
-
stream.once("readable", () => resolve(stream));
|
|
62776
|
-
stream.on("error", (error) => reject(error));
|
|
62777
|
-
});
|
|
62778
|
-
const status = 200;
|
|
62779
|
-
const statusText = "OK";
|
|
62780
|
-
const headers = getHeadersForFile(noqueryUrl);
|
|
62781
|
-
return new Response(body, { headers, status, statusText, url });
|
|
62782
|
-
} catch (error) {
|
|
62783
|
-
const status = 400;
|
|
62784
|
-
const statusText = error.message;
|
|
62785
|
-
const headers = {};
|
|
62786
|
-
return new Response(error.message, { headers, status, statusText, url });
|
|
62787
|
-
}
|
|
62788
|
-
}
|
|
62789
|
-
function getHeadersForFile(noqueryUrl) {
|
|
62790
|
-
const headers = {};
|
|
62791
|
-
if (!headers["content-length"]) {
|
|
62792
|
-
const stats = import_fs.default.statSync(noqueryUrl);
|
|
62793
|
-
headers["content-length"] = stats.size;
|
|
62794
|
-
}
|
|
62795
|
-
if (noqueryUrl.endsWith(".gz")) {
|
|
62796
|
-
noqueryUrl = noqueryUrl.slice(0, -3);
|
|
62797
|
-
headers["content-encoding"] = "gzip";
|
|
62798
|
-
}
|
|
62799
|
-
return new Headers(headers);
|
|
62800
|
-
}
|
|
62801
|
-
|
|
62802
|
-
// ../polyfills/src/node/fetch/fetch.node.ts
|
|
62803
62767
|
var isDataURL = (url) => url.startsWith("data:");
|
|
62804
62768
|
var isRequestURL = (url) => url.startsWith("http:") || url.startsWith("https:");
|
|
62805
62769
|
async function fetchNode(url, options) {
|
|
62806
62770
|
try {
|
|
62807
|
-
if (
|
|
62808
|
-
return await
|
|
62771
|
+
if (globalThis.fetch !== fetchNode && (isRequestURL(url) || isDataURL(url))) {
|
|
62772
|
+
return await fetch(url, options);
|
|
62809
62773
|
}
|
|
62810
62774
|
if (isDataURL(url)) {
|
|
62811
62775
|
const { arrayBuffer, mimeType } = decodeDataUri(url);
|
|
@@ -63163,7 +63127,7 @@ if (!("allSettled" in Promise)) {
|
|
|
63163
63127
|
}
|
|
63164
63128
|
|
|
63165
63129
|
// ../worker-utils/src/lib/env-utils/version.ts
|
|
63166
|
-
var VERSION = true ? "4.0.0-alpha.
|
|
63130
|
+
var VERSION = true ? "4.0.0-alpha.19" : DEFAULT_VERSION;
|
|
63167
63131
|
if (false) {
|
|
63168
63132
|
console.error("loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.");
|
|
63169
63133
|
}
|
|
@@ -63304,11 +63268,30 @@ function isKnownMessage(message) {
|
|
|
63304
63268
|
// ../worker-utils/src/lib/node/require-utils.node.ts
|
|
63305
63269
|
var require_utils_node_exports = {};
|
|
63306
63270
|
__export(require_utils_node_exports, {
|
|
63271
|
+
readFileAsArrayBuffer: () => readFileAsArrayBuffer,
|
|
63272
|
+
readFileAsText: () => readFileAsText,
|
|
63307
63273
|
requireFromFile: () => requireFromFile,
|
|
63308
63274
|
requireFromString: () => requireFromString
|
|
63309
63275
|
});
|
|
63310
63276
|
var import_module = __toModule(require("module"));
|
|
63311
63277
|
var import_path = __toModule(require("path"));
|
|
63278
|
+
var import_fs = __toModule(require("fs"));
|
|
63279
|
+
async function readFileAsArrayBuffer(filename) {
|
|
63280
|
+
if (filename.startsWith("http")) {
|
|
63281
|
+
const response = await fetch(filename);
|
|
63282
|
+
return await response.arrayBuffer();
|
|
63283
|
+
}
|
|
63284
|
+
const buffer = import_fs.default.readFileSync(filename);
|
|
63285
|
+
return buffer.buffer;
|
|
63286
|
+
}
|
|
63287
|
+
async function readFileAsText(filename) {
|
|
63288
|
+
if (filename.startsWith("http")) {
|
|
63289
|
+
const response = await fetch(filename);
|
|
63290
|
+
return await response.text();
|
|
63291
|
+
}
|
|
63292
|
+
const text = import_fs.default.readFileSync(filename, "utf8");
|
|
63293
|
+
return text;
|
|
63294
|
+
}
|
|
63312
63295
|
async function requireFromFile(filename) {
|
|
63313
63296
|
if (filename.startsWith("http")) {
|
|
63314
63297
|
const response = await fetch(filename);
|
|
@@ -63344,37 +63327,37 @@ function requireFromString(code, filename = "", options) {
|
|
|
63344
63327
|
var LATEST = "beta";
|
|
63345
63328
|
var VERSION2 = typeof VERSION !== "undefined" ? VERSION : LATEST;
|
|
63346
63329
|
var loadLibraryPromises = {};
|
|
63347
|
-
async function loadLibrary(libraryUrl, moduleName = null, options = {}) {
|
|
63330
|
+
async function loadLibrary(libraryUrl, moduleName = null, options = {}, libraryName = null) {
|
|
63348
63331
|
if (moduleName) {
|
|
63349
|
-
libraryUrl = getLibraryUrl(libraryUrl, moduleName, options);
|
|
63332
|
+
libraryUrl = getLibraryUrl(libraryUrl, moduleName, options, libraryName);
|
|
63350
63333
|
}
|
|
63351
63334
|
loadLibraryPromises[libraryUrl] = loadLibraryPromises[libraryUrl] || loadLibraryFromFile(libraryUrl);
|
|
63352
63335
|
return await loadLibraryPromises[libraryUrl];
|
|
63353
63336
|
}
|
|
63354
|
-
function getLibraryUrl(library, moduleName, options) {
|
|
63355
|
-
if (library.startsWith("http")) {
|
|
63337
|
+
function getLibraryUrl(library, moduleName, options = {}, libraryName = null) {
|
|
63338
|
+
if (!options.useLocalLibraries && library.startsWith("http")) {
|
|
63356
63339
|
return library;
|
|
63357
63340
|
}
|
|
63341
|
+
libraryName = libraryName || library;
|
|
63358
63342
|
const modules = options.modules || {};
|
|
63359
|
-
if (modules[
|
|
63360
|
-
return modules[
|
|
63343
|
+
if (modules[libraryName]) {
|
|
63344
|
+
return modules[libraryName];
|
|
63361
63345
|
}
|
|
63362
63346
|
if (!isBrowser2) {
|
|
63363
|
-
return `modules/${moduleName}/dist/libs/${
|
|
63347
|
+
return `modules/${moduleName}/dist/libs/${libraryName}`;
|
|
63364
63348
|
}
|
|
63365
63349
|
if (options.CDN) {
|
|
63366
63350
|
assert2(options.CDN.startsWith("http"));
|
|
63367
|
-
return `${options.CDN}/${moduleName}@${VERSION2}/dist/libs/${
|
|
63351
|
+
return `${options.CDN}/${moduleName}@${VERSION2}/dist/libs/${libraryName}`;
|
|
63368
63352
|
}
|
|
63369
63353
|
if (isWorker) {
|
|
63370
|
-
return `../src/libs/${
|
|
63354
|
+
return `../src/libs/${libraryName}`;
|
|
63371
63355
|
}
|
|
63372
|
-
return `modules/${moduleName}/src/libs/${
|
|
63356
|
+
return `modules/${moduleName}/src/libs/${libraryName}`;
|
|
63373
63357
|
}
|
|
63374
63358
|
async function loadLibraryFromFile(libraryUrl) {
|
|
63375
63359
|
if (libraryUrl.endsWith("wasm")) {
|
|
63376
|
-
|
|
63377
|
-
return await response2.arrayBuffer();
|
|
63360
|
+
return await loadAsArrayBuffer(libraryUrl);
|
|
63378
63361
|
}
|
|
63379
63362
|
if (!isBrowser2) {
|
|
63380
63363
|
try {
|
|
@@ -63386,8 +63369,7 @@ async function loadLibraryFromFile(libraryUrl) {
|
|
|
63386
63369
|
if (isWorker) {
|
|
63387
63370
|
return importScripts(libraryUrl);
|
|
63388
63371
|
}
|
|
63389
|
-
const
|
|
63390
|
-
const scriptSource = await response.text();
|
|
63372
|
+
const scriptSource = await loadAsText(libraryUrl);
|
|
63391
63373
|
return loadLibraryFromString(scriptSource, libraryUrl);
|
|
63392
63374
|
}
|
|
63393
63375
|
function loadLibraryFromString(scriptSource, id) {
|
|
@@ -63408,14 +63390,31 @@ function loadLibraryFromString(scriptSource, id) {
|
|
|
63408
63390
|
document.body.appendChild(script);
|
|
63409
63391
|
return null;
|
|
63410
63392
|
}
|
|
63393
|
+
async function loadAsArrayBuffer(url) {
|
|
63394
|
+
if (!readFileAsArrayBuffer || url.startsWith("http")) {
|
|
63395
|
+
const response = await fetch(url);
|
|
63396
|
+
return await response.arrayBuffer();
|
|
63397
|
+
}
|
|
63398
|
+
return await readFileAsArrayBuffer(url);
|
|
63399
|
+
}
|
|
63400
|
+
async function loadAsText(url) {
|
|
63401
|
+
if (!readFileAsText || url.startsWith("http")) {
|
|
63402
|
+
const response = await fetch(url);
|
|
63403
|
+
return await response.text();
|
|
63404
|
+
}
|
|
63405
|
+
return await readFileAsText(url);
|
|
63406
|
+
}
|
|
63411
63407
|
|
|
63412
63408
|
// src/lib/utils/version.ts
|
|
63413
|
-
var VERSION3 = true ? "4.0.0-alpha.
|
|
63409
|
+
var VERSION3 = true ? "4.0.0-alpha.19" : "beta";
|
|
63414
63410
|
|
|
63415
63411
|
// src/lib/parsers/basis-module-loader.ts
|
|
63416
|
-
var
|
|
63417
|
-
|
|
63418
|
-
|
|
63412
|
+
var BASIS_EXTERNAL_LIBRARIES = {
|
|
63413
|
+
TRANSCODER: "basis_transcoder.js",
|
|
63414
|
+
TRANSCODER_WASM: "basis_transcoder.wasm",
|
|
63415
|
+
ENCODER: "basis_encoder.js",
|
|
63416
|
+
ENCODER_WASM: "basis_encoder.wasm"
|
|
63417
|
+
};
|
|
63419
63418
|
var loadBasisEncoderPromise;
|
|
63420
63419
|
async function loadBasisEncoderModule(options) {
|
|
63421
63420
|
const modules = options.modules || {};
|
|
@@ -63429,8 +63428,8 @@ async function loadBasisEncoder(options) {
|
|
|
63429
63428
|
let BASIS_ENCODER = null;
|
|
63430
63429
|
let wasmBinary = null;
|
|
63431
63430
|
[BASIS_ENCODER, wasmBinary] = await Promise.all([
|
|
63432
|
-
await loadLibrary(
|
|
63433
|
-
await loadLibrary(
|
|
63431
|
+
await loadLibrary(BASIS_EXTERNAL_LIBRARIES.ENCODER, "textures", options),
|
|
63432
|
+
await loadLibrary(BASIS_EXTERNAL_LIBRARIES.ENCODER_WASM, "textures", options)
|
|
63434
63433
|
]);
|
|
63435
63434
|
BASIS_ENCODER = BASIS_ENCODER || globalThis.BASIS;
|
|
63436
63435
|
return await initializeBasisEncoderModule(BASIS_ENCODER, wasmBinary);
|
|
@@ -63451,7 +63450,12 @@ function initializeBasisEncoderModule(BasisEncoderModule, wasmBinary) {
|
|
|
63451
63450
|
|
|
63452
63451
|
// src/lib/encoders/encode-ktx2-basis-texture.ts
|
|
63453
63452
|
async function encodeKTX2BasisTexture(image, options = {}) {
|
|
63454
|
-
const {
|
|
63453
|
+
const {
|
|
63454
|
+
useSRGB = false,
|
|
63455
|
+
qualityLevel = 10,
|
|
63456
|
+
encodeUASTC = false,
|
|
63457
|
+
mipmaps = false
|
|
63458
|
+
} = (options == null ? void 0 : options["ktx2-basis-writer"]) || {};
|
|
63455
63459
|
const { BasisEncoder } = await loadBasisEncoderModule(options);
|
|
63456
63460
|
const basisEncoder = new BasisEncoder();
|
|
63457
63461
|
try {
|
|
@@ -63484,10 +63488,12 @@ var KTX2BasisWriter = {
|
|
|
63484
63488
|
version: VERSION3,
|
|
63485
63489
|
extensions: ["ktx2"],
|
|
63486
63490
|
options: {
|
|
63487
|
-
|
|
63488
|
-
|
|
63489
|
-
|
|
63490
|
-
|
|
63491
|
+
["ktx2-basis-writer"]: {
|
|
63492
|
+
useSRGB: false,
|
|
63493
|
+
qualityLevel: 10,
|
|
63494
|
+
encodeUASTC: false,
|
|
63495
|
+
mipmaps: false
|
|
63496
|
+
}
|
|
63491
63497
|
},
|
|
63492
63498
|
encode: encodeKTX2BasisTexture
|
|
63493
63499
|
};
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
});
|
|
29
29
|
|
|
30
30
|
// ../worker-utils/src/lib/env-utils/version.ts
|
|
31
|
-
var VERSION = true ? "4.0.0-alpha.
|
|
31
|
+
var VERSION = true ? "4.0.0-alpha.19" : DEFAULT_VERSION;
|
|
32
32
|
if (false) {
|
|
33
33
|
console.error("loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.");
|
|
34
34
|
}
|
|
@@ -171,37 +171,37 @@
|
|
|
171
171
|
var LATEST = "beta";
|
|
172
172
|
var VERSION2 = typeof VERSION !== "undefined" ? VERSION : LATEST;
|
|
173
173
|
var loadLibraryPromises = {};
|
|
174
|
-
async function loadLibrary(libraryUrl, moduleName = null, options = {}) {
|
|
174
|
+
async function loadLibrary(libraryUrl, moduleName = null, options = {}, libraryName = null) {
|
|
175
175
|
if (moduleName) {
|
|
176
|
-
libraryUrl = getLibraryUrl(libraryUrl, moduleName, options);
|
|
176
|
+
libraryUrl = getLibraryUrl(libraryUrl, moduleName, options, libraryName);
|
|
177
177
|
}
|
|
178
178
|
loadLibraryPromises[libraryUrl] = loadLibraryPromises[libraryUrl] || loadLibraryFromFile(libraryUrl);
|
|
179
179
|
return await loadLibraryPromises[libraryUrl];
|
|
180
180
|
}
|
|
181
|
-
function getLibraryUrl(library, moduleName, options) {
|
|
182
|
-
if (library.startsWith("http")) {
|
|
181
|
+
function getLibraryUrl(library, moduleName, options = {}, libraryName = null) {
|
|
182
|
+
if (!options.useLocalLibraries && library.startsWith("http")) {
|
|
183
183
|
return library;
|
|
184
184
|
}
|
|
185
|
+
libraryName = libraryName || library;
|
|
185
186
|
const modules = options.modules || {};
|
|
186
|
-
if (modules[
|
|
187
|
-
return modules[
|
|
187
|
+
if (modules[libraryName]) {
|
|
188
|
+
return modules[libraryName];
|
|
188
189
|
}
|
|
189
190
|
if (!isBrowser) {
|
|
190
|
-
return `modules/${moduleName}/dist/libs/${
|
|
191
|
+
return `modules/${moduleName}/dist/libs/${libraryName}`;
|
|
191
192
|
}
|
|
192
193
|
if (options.CDN) {
|
|
193
194
|
assert(options.CDN.startsWith("http"));
|
|
194
|
-
return `${options.CDN}/${moduleName}@${VERSION2}/dist/libs/${
|
|
195
|
+
return `${options.CDN}/${moduleName}@${VERSION2}/dist/libs/${libraryName}`;
|
|
195
196
|
}
|
|
196
197
|
if (isWorker) {
|
|
197
|
-
return `../src/libs/${
|
|
198
|
+
return `../src/libs/${libraryName}`;
|
|
198
199
|
}
|
|
199
|
-
return `modules/${moduleName}/src/libs/${
|
|
200
|
+
return `modules/${moduleName}/src/libs/${libraryName}`;
|
|
200
201
|
}
|
|
201
202
|
async function loadLibraryFromFile(libraryUrl) {
|
|
202
203
|
if (libraryUrl.endsWith("wasm")) {
|
|
203
|
-
|
|
204
|
-
return await response2.arrayBuffer();
|
|
204
|
+
return await loadAsArrayBuffer(libraryUrl);
|
|
205
205
|
}
|
|
206
206
|
if (!isBrowser) {
|
|
207
207
|
try {
|
|
@@ -213,8 +213,7 @@
|
|
|
213
213
|
if (isWorker) {
|
|
214
214
|
return importScripts(libraryUrl);
|
|
215
215
|
}
|
|
216
|
-
const
|
|
217
|
-
const scriptSource = await response.text();
|
|
216
|
+
const scriptSource = await loadAsText(libraryUrl);
|
|
218
217
|
return loadLibraryFromString(scriptSource, libraryUrl);
|
|
219
218
|
}
|
|
220
219
|
function loadLibraryFromString(scriptSource, id) {
|
|
@@ -235,14 +234,31 @@
|
|
|
235
234
|
document.body.appendChild(script);
|
|
236
235
|
return null;
|
|
237
236
|
}
|
|
237
|
+
async function loadAsArrayBuffer(url) {
|
|
238
|
+
if (!node.readFileAsArrayBuffer || url.startsWith("http")) {
|
|
239
|
+
const response = await fetch(url);
|
|
240
|
+
return await response.arrayBuffer();
|
|
241
|
+
}
|
|
242
|
+
return await node.readFileAsArrayBuffer(url);
|
|
243
|
+
}
|
|
244
|
+
async function loadAsText(url) {
|
|
245
|
+
if (!node.readFileAsText || url.startsWith("http")) {
|
|
246
|
+
const response = await fetch(url);
|
|
247
|
+
return await response.text();
|
|
248
|
+
}
|
|
249
|
+
return await node.readFileAsText(url);
|
|
250
|
+
}
|
|
238
251
|
|
|
239
252
|
// src/lib/utils/version.ts
|
|
240
|
-
var VERSION3 = true ? "4.0.0-alpha.
|
|
253
|
+
var VERSION3 = true ? "4.0.0-alpha.19" : "beta";
|
|
241
254
|
|
|
242
255
|
// src/lib/parsers/basis-module-loader.ts
|
|
243
|
-
var
|
|
244
|
-
|
|
245
|
-
|
|
256
|
+
var BASIS_EXTERNAL_LIBRARIES = {
|
|
257
|
+
TRANSCODER: "basis_transcoder.js",
|
|
258
|
+
TRANSCODER_WASM: "basis_transcoder.wasm",
|
|
259
|
+
ENCODER: "basis_encoder.js",
|
|
260
|
+
ENCODER_WASM: "basis_encoder.wasm"
|
|
261
|
+
};
|
|
246
262
|
var loadBasisEncoderPromise;
|
|
247
263
|
async function loadBasisEncoderModule(options) {
|
|
248
264
|
const modules = options.modules || {};
|
|
@@ -256,8 +272,8 @@
|
|
|
256
272
|
let BASIS_ENCODER = null;
|
|
257
273
|
let wasmBinary = null;
|
|
258
274
|
[BASIS_ENCODER, wasmBinary] = await Promise.all([
|
|
259
|
-
await loadLibrary(
|
|
260
|
-
await loadLibrary(
|
|
275
|
+
await loadLibrary(BASIS_EXTERNAL_LIBRARIES.ENCODER, "textures", options),
|
|
276
|
+
await loadLibrary(BASIS_EXTERNAL_LIBRARIES.ENCODER_WASM, "textures", options)
|
|
261
277
|
]);
|
|
262
278
|
BASIS_ENCODER = BASIS_ENCODER || globalThis.BASIS;
|
|
263
279
|
return await initializeBasisEncoderModule(BASIS_ENCODER, wasmBinary);
|
|
@@ -278,7 +294,12 @@
|
|
|
278
294
|
|
|
279
295
|
// src/lib/encoders/encode-ktx2-basis-texture.ts
|
|
280
296
|
async function encodeKTX2BasisTexture(image, options = {}) {
|
|
281
|
-
const {
|
|
297
|
+
const {
|
|
298
|
+
useSRGB = false,
|
|
299
|
+
qualityLevel = 10,
|
|
300
|
+
encodeUASTC = false,
|
|
301
|
+
mipmaps = false
|
|
302
|
+
} = options?.["ktx2-basis-writer"] || {};
|
|
282
303
|
const { BasisEncoder } = await loadBasisEncoderModule(options);
|
|
283
304
|
const basisEncoder = new BasisEncoder();
|
|
284
305
|
try {
|
|
@@ -311,10 +332,12 @@
|
|
|
311
332
|
version: VERSION3,
|
|
312
333
|
extensions: ["ktx2"],
|
|
313
334
|
options: {
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
335
|
+
["ktx2-basis-writer"]: {
|
|
336
|
+
useSRGB: false,
|
|
337
|
+
qualityLevel: 10,
|
|
338
|
+
encodeUASTC: false,
|
|
339
|
+
mipmaps: false
|
|
340
|
+
}
|
|
318
341
|
},
|
|
319
342
|
encode: encodeKTX2BasisTexture
|
|
320
343
|
};
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import type { Writer } from '@loaders.gl/loader-utils';
|
|
1
|
+
import type { Writer, WriterOptions } from '@loaders.gl/loader-utils';
|
|
2
2
|
import type { ImageDataType } from '@loaders.gl/images';
|
|
3
3
|
/** @todo should be in basis sub-object */
|
|
4
|
-
export type KTX2BasisWriterOptions = {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
export type KTX2BasisWriterOptions = WriterOptions & {
|
|
5
|
+
['ktx2-basis-writer']: {
|
|
6
|
+
useSRGB?: boolean;
|
|
7
|
+
qualityLevel?: number;
|
|
8
|
+
encodeUASTC?: boolean;
|
|
9
|
+
mipmaps?: boolean;
|
|
10
|
+
};
|
|
9
11
|
};
|
|
10
12
|
/**
|
|
11
13
|
* Basis Universal Supercompressed GPU Texture.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ktx2-basis-writer.d.ts","sourceRoot":"","sources":["../src/ktx2-basis-writer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"ktx2-basis-writer.d.ts","sourceRoot":"","sources":["../src/ktx2-basis-writer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,MAAM,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAEpE,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AAGtD,0CAA0C;AAC1C,MAAM,MAAM,sBAAsB,GAAG,aAAa,GAAG;IACnD,CAAC,mBAAmB,CAAC,EAAE;QACrB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;CACH,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,sBAAsB,CAiBlF,CAAC;AAGF,eAAO,MAAM,2BAA2B,EAAE,MAAwB,CAAC"}
|
|
@@ -15,10 +15,12 @@ exports.KTX2BasisWriter = {
|
|
|
15
15
|
version: version_1.VERSION,
|
|
16
16
|
extensions: ['ktx2'],
|
|
17
17
|
options: {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
['ktx2-basis-writer']: {
|
|
19
|
+
useSRGB: false,
|
|
20
|
+
qualityLevel: 10,
|
|
21
|
+
encodeUASTC: false,
|
|
22
|
+
mipmaps: false
|
|
23
|
+
}
|
|
22
24
|
},
|
|
23
25
|
encode: encode_ktx2_basis_texture_1.encodeKTX2BasisTexture
|
|
24
26
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encode-ktx2-basis-texture.d.ts","sourceRoot":"","sources":["../../../src/lib/encoders/encode-ktx2-basis-texture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AAGtD;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,aAAa,EACpB,OAAO,GAAE,GAAQ,GAChB,OAAO,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"encode-ktx2-basis-texture.d.ts","sourceRoot":"","sources":["../../../src/lib/encoders/encode-ktx2-basis-texture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AAGtD;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,aAAa,EACpB,OAAO,GAAE,GAAQ,GAChB,OAAO,CAAC,WAAW,CAAC,CAmCtB"}
|
|
@@ -11,7 +11,7 @@ const basis_module_loader_1 = require("../parsers/basis-module-loader");
|
|
|
11
11
|
*/
|
|
12
12
|
async function encodeKTX2BasisTexture(image, options = {}) {
|
|
13
13
|
// TODO remove default values after writer options will be normalized like it done in load module.
|
|
14
|
-
const { useSRGB = false, qualityLevel = 10, encodeUASTC = false, mipmaps = false } = options;
|
|
14
|
+
const { useSRGB = false, qualityLevel = 10, encodeUASTC = false, mipmaps = false } = options?.['ktx2-basis-writer'] || {};
|
|
15
15
|
const { BasisEncoder } = await (0, basis_module_loader_1.loadBasisEncoderModule)(options);
|
|
16
16
|
const basisEncoder = new BasisEncoder();
|
|
17
17
|
try {
|