@loaders.gl/textures 4.2.0-beta.2 → 4.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/basis-worker-node.js +2 -2
- package/dist/basis-worker.js +2 -2
- package/dist/compressed-texture-worker.js +2 -2
- package/dist/crunch-worker.js +2 -2
- package/dist/dist.min.js +2 -2
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +2 -2
- package/dist/ktx2-basis-writer-worker-node.js +2 -2
- package/dist/ktx2-basis-writer-worker.js +2 -2
- package/dist/lib/utils/version.js +1 -1
- package/dist/npy-worker.js +1 -1
- package/package.json +6 -6
|
@@ -63898,7 +63898,7 @@ function getVersion() {
|
|
|
63898
63898
|
);
|
|
63899
63899
|
globalThis._loadersgl_.version = NPM_TAG;
|
|
63900
63900
|
} else {
|
|
63901
|
-
globalThis._loadersgl_.version = "4.2.0
|
|
63901
|
+
globalThis._loadersgl_.version = "4.2.0";
|
|
63902
63902
|
}
|
|
63903
63903
|
}
|
|
63904
63904
|
return globalThis._loadersgl_.version;
|
|
@@ -65433,7 +65433,7 @@ if (nodeVersion2 < 18) {
|
|
|
65433
65433
|
}
|
|
65434
65434
|
|
|
65435
65435
|
// src/lib/utils/version.ts
|
|
65436
|
-
var VERSION2 = true ? "4.2.0
|
|
65436
|
+
var VERSION2 = true ? "4.2.0" : "latest";
|
|
65437
65437
|
|
|
65438
65438
|
// src/lib/parsers/basis-module-loader.ts
|
|
65439
65439
|
var BASIS_EXTERNAL_LIBRARIES = {
|
package/dist/basis-worker.js
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
);
|
|
22
22
|
globalThis._loadersgl_.version = NPM_TAG;
|
|
23
23
|
} else {
|
|
24
|
-
globalThis._loadersgl_.version = "4.2.0
|
|
24
|
+
globalThis._loadersgl_.version = "4.2.0";
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
return globalThis._loadersgl_.version;
|
|
@@ -341,7 +341,7 @@
|
|
|
341
341
|
}
|
|
342
342
|
|
|
343
343
|
// src/lib/utils/version.ts
|
|
344
|
-
var VERSION2 = true ? "4.2.0
|
|
344
|
+
var VERSION2 = true ? "4.2.0" : "latest";
|
|
345
345
|
|
|
346
346
|
// src/lib/parsers/basis-module-loader.ts
|
|
347
347
|
var BASIS_EXTERNAL_LIBRARIES = {
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
);
|
|
29
29
|
globalThis._loadersgl_.version = NPM_TAG;
|
|
30
30
|
} else {
|
|
31
|
-
globalThis._loadersgl_.version = "4.2.0
|
|
31
|
+
globalThis._loadersgl_.version = "4.2.0";
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
return globalThis._loadersgl_.version;
|
|
@@ -348,7 +348,7 @@
|
|
|
348
348
|
}
|
|
349
349
|
|
|
350
350
|
// src/lib/utils/version.ts
|
|
351
|
-
var VERSION2 = true ? "4.2.0
|
|
351
|
+
var VERSION2 = true ? "4.2.0" : "latest";
|
|
352
352
|
|
|
353
353
|
// ../../node_modules/ktx-parse/dist/ktx-parse.modern.js
|
|
354
354
|
var t = new Uint8Array([0]);
|
package/dist/crunch-worker.js
CHANGED
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
);
|
|
29
29
|
globalThis._loadersgl_.version = NPM_TAG;
|
|
30
30
|
} else {
|
|
31
|
-
globalThis._loadersgl_.version = "4.2.0
|
|
31
|
+
globalThis._loadersgl_.version = "4.2.0";
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
return globalThis._loadersgl_.version;
|
|
@@ -348,7 +348,7 @@
|
|
|
348
348
|
}
|
|
349
349
|
|
|
350
350
|
// src/lib/utils/version.ts
|
|
351
|
-
var VERSION2 = true ? "4.2.0
|
|
351
|
+
var VERSION2 = true ? "4.2.0" : "latest";
|
|
352
352
|
|
|
353
353
|
// src/crunch-loader.ts
|
|
354
354
|
var CrunchLoader = {
|
package/dist/dist.min.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
else if (typeof define === 'function' && define.amd) define([], factory);
|
|
5
5
|
else if (typeof exports === 'object') exports['loaders'] = factory();
|
|
6
6
|
else root['loaders'] = factory();})(globalThis, function () {
|
|
7
|
-
"use strict";var __exports__=(()=>{var er=Object.create;var V=Object.defineProperty;var tr=Object.getOwnPropertyDescriptor;var rr=Object.getOwnPropertyNames;var or=Object.getPrototypeOf,nr=Object.prototype.hasOwnProperty;var Ve=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),sr=(e,t)=>{for(var r in t)V(e,r,{get:t[r],enumerable:!0})},v=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of rr(t))!nr.call(e,s)&&s!==r&&V(e,s,{get:()=>t[s],enumerable:!(o=tr(t,s))||o.enumerable});return e},k=(e,t,r)=>(v(e,t,"default"),r&&v(r,t,"default")),ne=(e,t,r)=>(r=e!=null?er(or(e)):{},v(t||!e||!e.__esModule?V(r,"default",{value:e,enumerable:!0}):r,e)),ar=e=>v(V({},"__esModule",{value:!0}),e);var We=Ve((Ko,ke)=>{ke.exports=globalThis.loaders});var _e=Ve(()=>{});var K={};sr(K,{BASIS_EXTERNAL_LIBRARIES:()=>y,BasisLoader:()=>ut,BasisWorkerLoader:()=>xe,CRUNCH_EXTERNAL_LIBRARIES:()=>ht,CompressedTextureLoader:()=>Ct,CompressedTextureWorkerLoader:()=>Te,CompressedTextureWriter:()=>Bt,CrunchLoader:()=>Ce,CrunchWorkerLoader:()=>Ce,GL_EXTENSIONS_CONSTANTS:()=>n,KTX2BasisWriter:()=>wt,KTX2BasisWriterWorker:()=>No,NPYLoader:()=>Dt,NPYWorkerLoader:()=>he,getSupportedGPUTextureFormats:()=>$,loadImageTexture:()=>Kt,loadImageTextureArray:()=>vt,loadImageTextureCube:()=>kt,selectSupportedBasisFormat:()=>Ae});k(K,ne(We(),1));var m="4.2.0
|
|
8
|
-
`).forEach(c=>{let _=a.exec(c);_&&s.push(Number(_[1]))});let i=e;for(;s.includes(i);)i++;t(i)})})}var Qe={command:"",arguments:[],port:5e3,autoPort:!0,wait:2e3,onSuccess:e=>{console.log(`Started ${e.props.command}`)}},w=class{id;props={...Qe};childProcess=null;port=0;successTimer;constructor({id:t="browser-driver"}={}){this.id=t}async start(t){t={...Qe,...t},this.props=t;let r=[...t.arguments];return this.port=Number(t.port),t.portArg&&(t.autoPort&&(this.port=await qe(t.port)),r.push(t.portArg,String(this.port))),await new Promise((o,s)=>{try{this._setTimeout(()=>{t.onSuccess&&t.onSuccess(this),o({})}),console.log(`Spawning ${t.command} ${t.arguments.join(" ")}`);let a=(void 0)(t.command,r,t.spawn);this.childProcess=a,a.stdout.on("data",i=>{console.log(i.toString())}),a.stderr.on("data",i=>{console.log(`Child process wrote to stderr: "${i}".`),t.ignoreStderr||(this._clearTimeout(),s(new Error(i)))}),a.on("error",i=>{console.log(`Child process errored with ${i}`),this._clearTimeout(),s(i)}),a.on("close",i=>{console.log(`Child process exited with ${i}`),this.childProcess=null,this._clearTimeout(),o({})})}catch(a){s(a)}})}async stop(){this.childProcess&&(this.childProcess.kill(),this.childProcess=null)}async exit(t=0){try{await this.stop(),process.exit(t)}catch(r){console.error(r.message||r),process.exit(1)}}_setTimeout(t){Number(this.props.wait)>0&&(this.successTimer=setTimeout(t,this.props.wait))}_clearTimeout(){this.successTimer&&clearTimeout(this.successTimer)}};var dr="",tt={};function le(e){for(let t in tt)if(e.startsWith(t)){let r=tt[t];e=e.replace(t,r)}return!e.startsWith("http://")&&!e.startsWith("https://")&&(e=`${dr}${e}`),e}var y={TRANSCODER:"basis_transcoder.js",TRANSCODER_WASM:"basis_transcoder.wasm",ENCODER:"basis_encoder.js",ENCODER_WASM:"basis_encoder.wasm"},rt;async function Se(e){ae(e.modules);let t=ie("basis");return t||(rt||=Rr(e),await rt)}async function Rr(e){let t=null,r=null;return[t,r]=await Promise.all([await M(y.TRANSCODER,"textures",e),await M(y.TRANSCODER_WASM,"textures",e)]),t=t||globalThis.BASIS,await Ar(t,r)}function Ar(e,t){let r={};return t&&(r.wasmBinary=t),new Promise(o=>{e(r).then(s=>{let{BasisFile:a,initializeBasis:i}=s;i(),o({BasisFile:a})})})}var fe;async function I(e){let t=e.modules||{};return t.basisEncoder?t.basisEncoder:(fe=fe||xr(e),await fe)}async function xr(e){let t=null,r=null;return[t,r]=await Promise.all([await M(y.ENCODER,"textures",e),await M(y.ENCODER_WASM,"textures",e)]),t=t||globalThis.BASIS,await Tr(t,r)}function Tr(e,t){let r={};return t&&(r.wasmBinary=t),new Promise(o=>{e(r).then(s=>{let{BasisFile:a,KTX2File:i,initializeBasis:c,BasisEncoder:_}=s;c(),o({BasisFile:a,KTX2File:i,BasisEncoder:_})})})}var n={COMPRESSED_RGB_S3TC_DXT1_EXT:33776,COMPRESSED_RGBA_S3TC_DXT1_EXT:33777,COMPRESSED_RGBA_S3TC_DXT3_EXT:33778,COMPRESSED_RGBA_S3TC_DXT5_EXT:33779,COMPRESSED_R11_EAC:37488,COMPRESSED_SIGNED_R11_EAC:37489,COMPRESSED_RG11_EAC:37490,COMPRESSED_SIGNED_RG11_EAC:37491,COMPRESSED_RGB8_ETC2:37492,COMPRESSED_RGBA8_ETC2_EAC:37493,COMPRESSED_SRGB8_ETC2:37494,COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:37495,COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:37496,COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:37497,COMPRESSED_RGB_PVRTC_4BPPV1_IMG:35840,COMPRESSED_RGBA_PVRTC_4BPPV1_IMG:35842,COMPRESSED_RGB_PVRTC_2BPPV1_IMG:35841,COMPRESSED_RGBA_PVRTC_2BPPV1_IMG:35843,COMPRESSED_RGB_ETC1_WEBGL:36196,COMPRESSED_RGB_ATC_WEBGL:35986,COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL:35987,COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL:34798,COMPRESSED_RGBA_ASTC_4X4_KHR:37808,COMPRESSED_RGBA_ASTC_5X4_KHR:37809,COMPRESSED_RGBA_ASTC_5X5_KHR:37810,COMPRESSED_RGBA_ASTC_6X5_KHR:37811,COMPRESSED_RGBA_ASTC_6X6_KHR:37812,COMPRESSED_RGBA_ASTC_8X5_KHR:37813,COMPRESSED_RGBA_ASTC_8X6_KHR:37814,COMPRESSED_RGBA_ASTC_8X8_KHR:37815,COMPRESSED_RGBA_ASTC_10X5_KHR:37816,COMPRESSED_RGBA_ASTC_10X6_KHR:37817,COMPRESSED_RGBA_ASTC_10X8_KHR:37818,COMPRESSED_RGBA_ASTC_10X10_KHR:37819,COMPRESSED_RGBA_ASTC_12X10_KHR:37820,COMPRESSED_RGBA_ASTC_12X12_KHR:37821,COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR:37840,COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR:37841,COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR:37842,COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR:37843,COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR:37844,COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR:37845,COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR:37846,COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR:37847,COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR:37848,COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR:37849,COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR:37850,COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR:37851,COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR:37852,COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR:37853,COMPRESSED_RED_RGTC1_EXT:36283,COMPRESSED_SIGNED_RED_RGTC1_EXT:36284,COMPRESSED_RED_GREEN_RGTC2_EXT:36285,COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT:36286,COMPRESSED_SRGB_S3TC_DXT1_EXT:35916,COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:35917,COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT:35918,COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:35919};var Cr=["","WEBKIT_","MOZ_"],ot={WEBGL_compressed_texture_s3tc:"dxt",WEBGL_compressed_texture_s3tc_srgb:"dxt-srgb",WEBGL_compressed_texture_etc1:"etc1",WEBGL_compressed_texture_etc:"etc2",WEBGL_compressed_texture_pvrtc:"pvrtc",WEBGL_compressed_texture_atc:"atc",WEBGL_compressed_texture_astc:"astc",EXT_texture_compression_rgtc:"rgtc"},z=null;function $(e){if(!z){e=e||gr()||void 0,z=new Set;for(let t of Cr)for(let r in ot)if(e&&e.getExtension(`${t}${r}`)){let o=ot[r];z.add(o)}}return z}function gr(){try{return document.createElement("canvas").getContext("webgl")}catch{return null}}var On=new Uint8Array([0]),S=[171,75,84,88,32,50,48,187,13,10,26,10],ue,Ee,me,j,nt,pe,st,at;(function(e){e[e.NONE=0]="NONE",e[e.BASISLZ=1]="BASISLZ",e[e.ZSTD=2]="ZSTD",e[e.ZLIB=3]="ZLIB"})(ue||(ue={})),function(e){e[e.BASICFORMAT=0]="BASICFORMAT"}(Ee||(Ee={})),function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.ETC1S=163]="ETC1S",e[e.UASTC=166]="UASTC"}(me||(me={})),function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.SRGB=1]="SRGB"}(j||(j={})),function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.LINEAR=1]="LINEAR",e[e.SRGB=2]="SRGB",e[e.ITU=3]="ITU",e[e.NTSC=4]="NTSC",e[e.SLOG=5]="SLOG",e[e.SLOG2=6]="SLOG2"}(nt||(nt={})),function(e){e[e.ALPHA_STRAIGHT=0]="ALPHA_STRAIGHT",e[e.ALPHA_PREMULTIPLIED=1]="ALPHA_PREMULTIPLIED"}(pe||(pe={})),function(e){e[e.RGB=0]="RGB",e[e.RRR=3]="RRR",e[e.GGG=4]="GGG",e[e.AAA=15]="AAA"}(st||(st={})),function(e){e[e.RGB=0]="RGB",e[e.RGBA=3]="RGBA",e[e.RRR=4]="RRR",e[e.RRRG=5]="RRRG"}(at||(at={}));var de=class{constructor(){this.vkFormat=0,this.typeSize=1,this.pixelWidth=0,this.pixelHeight=0,this.pixelDepth=0,this.layerCount=0,this.faceCount=1,this.supercompressionScheme=ue.NONE,this.levels=[],this.dataFormatDescriptor=[{vendorId:0,descriptorType:Ee.BASICFORMAT,versionNumber:2,descriptorBlockSize:40,colorModel:me.UNSPECIFIED,colorPrimaries:j.SRGB,transferFunction:j.SRGB,flags:pe.ALPHA_STRAIGHT,texelBlockDimension:{x:4,y:4,z:1,w:1},bytesPlane:[],samples:[]}],this.keyValue={},this.globalData=null}},P=class{constructor(t,r,o,s){this._dataView=new DataView(t.buffer,t.byteOffset+r,o),this._littleEndian=s,this._offset=0}_nextUint8(){let t=this._dataView.getUint8(this._offset);return this._offset+=1,t}_nextUint16(){let t=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,t}_nextUint32(){let t=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,t}_nextUint64(){let t=this._dataView.getUint32(this._offset,this._littleEndian)+4294967296*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,t}_skip(t){return this._offset+=t,this}_scan(t,r=0){let o=this._offset,s=0;for(;this._dataView.getUint8(this._offset)!==r&&s<t;)s++,this._offset++;return s<t&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+o,s)}};function it(e){return typeof TextDecoder<"u"?new TextDecoder().decode(e):Buffer.from(e).toString("utf8")}function ct(e){let t=new Uint8Array(e.buffer,e.byteOffset,S.length);if(t[0]!==S[0]||t[1]!==S[1]||t[2]!==S[2]||t[3]!==S[3]||t[4]!==S[4]||t[5]!==S[5]||t[6]!==S[6]||t[7]!==S[7]||t[8]!==S[8]||t[9]!==S[9]||t[10]!==S[10]||t[11]!==S[11])throw new Error("Missing KTX 2.0 identifier.");let r=new de,o=17*Uint32Array.BYTES_PER_ELEMENT,s=new P(e,S.length,o,!0);r.vkFormat=s._nextUint32(),r.typeSize=s._nextUint32(),r.pixelWidth=s._nextUint32(),r.pixelHeight=s._nextUint32(),r.pixelDepth=s._nextUint32(),r.layerCount=s._nextUint32(),r.faceCount=s._nextUint32();let a=s._nextUint32();r.supercompressionScheme=s._nextUint32();let i=s._nextUint32(),c=s._nextUint32(),_=s._nextUint32(),f=s._nextUint32(),u=s._nextUint64(),D=s._nextUint64(),re=new P(e,S.length+o,3*a*8,!0);for(let E=0;E<a;E++)r.levels.push({levelData:new Uint8Array(e.buffer,e.byteOffset+re._nextUint64(),re._nextUint64()),uncompressedByteLength:re._nextUint64()});let l=new P(e,i,c,!0),oe={vendorId:l._skip(4)._nextUint16(),descriptorType:l._nextUint16(),versionNumber:l._nextUint16(),descriptorBlockSize:l._nextUint16(),colorModel:l._nextUint8(),colorPrimaries:l._nextUint8(),transferFunction:l._nextUint8(),flags:l._nextUint8(),texelBlockDimension:{x:l._nextUint8()+1,y:l._nextUint8()+1,z:l._nextUint8()+1,w:l._nextUint8()+1},bytesPlane:[l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8()],samples:[]},Wt=(oe.descriptorBlockSize/4-6)/4;for(let E=0;E<Wt;E++)oe.samples[E]={bitOffset:l._nextUint16(),bitLength:l._nextUint8(),channelID:l._nextUint8(),samplePosition:[l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8()],sampleLower:l._nextUint32(),sampleUpper:l._nextUint32()};r.dataFormatDescriptor.length=0,r.dataFormatDescriptor.push(oe);let b=new P(e,_,f,!0);for(;b._offset<f;){let E=b._nextUint32(),Fe=b._scan(E),Ke=it(Fe),ve=b._scan(E-Fe.byteLength);r.keyValue[Ke]=Ke.match(/^ktx/i)?it(ve):ve,E%4&&b._skip(4-E%4)}if(D<=0)return r;let R=new P(e,u,D,!0),zt=R._nextUint16(),$t=R._nextUint16(),be=R._nextUint32(),Ie=R._nextUint32(),Ue=R._nextUint32(),jt=R._nextUint32(),Le=[];for(let E=0;E<a;E++)Le.push({imageFlags:R._nextUint32(),rgbSliceByteOffset:R._nextUint32(),rgbSliceByteLength:R._nextUint32(),alphaSliceByteOffset:R._nextUint32(),alphaSliceByteLength:R._nextUint32()});let He=u+R._offset,Xe=He+be,Ne=Xe+Ie,Jt=Ne+Ue,Zt=new Uint8Array(e.buffer,e.byteOffset+He,be),Yt=new Uint8Array(e.buffer,e.byteOffset+Xe,Ie),qt=new Uint8Array(e.buffer,e.byteOffset+Ne,Ue),Qt=new Uint8Array(e.buffer,e.byteOffset+Jt,jt);return r.globalData={endpointCount:zt,selectorCount:$t,imageDescs:Le,endpointsData:Zt,selectorsData:Yt,tablesData:qt,extendedData:Qt},r}function O(e,t){let r=new Array(t.mipMapLevels),o=t.width,s=t.height,a=0;for(let i=0;i<t.mipMapLevels;++i){let c=hr(t,o,s,e,i),_=Dr(e,i,a,c);r[i]={compressed:!0,format:t.internalFormat,data:_,width:o,height:s,levelSize:c},o=Math.max(1,o>>1),s=Math.max(1,s>>1),a+=c}return r}function Dr(e,t,r,o){return Array.isArray(e)?e[t].levelData:new Uint8Array(e.buffer,e.byteOffset+r,o)}function hr(e,t,r,o,s){return Array.isArray(o)?e.sizeFunction(o[s]):e.sizeFunction(t,r)}var Pr={131:n.COMPRESSED_RGB_S3TC_DXT1_EXT,132:n.COMPRESSED_SRGB_S3TC_DXT1_EXT,133:n.COMPRESSED_RGBA_S3TC_DXT1_EXT,134:n.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,135:n.COMPRESSED_RGBA_S3TC_DXT3_EXT,136:n.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,137:n.COMPRESSED_RGBA_S3TC_DXT5_EXT,138:n.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,139:n.COMPRESSED_RED_RGTC1_EXT,140:n.COMPRESSED_SIGNED_RED_RGTC1_EXT,141:n.COMPRESSED_RED_GREEN_RGTC2_EXT,142:n.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT,147:n.COMPRESSED_RGB8_ETC2,148:n.COMPRESSED_SRGB8_ETC2,149:n.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,150:n.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,151:n.COMPRESSED_RGBA8_ETC2_EAC,152:n.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,153:n.COMPRESSED_R11_EAC,154:n.COMPRESSED_SIGNED_R11_EAC,155:n.COMPRESSED_RG11_EAC,156:n.COMPRESSED_SIGNED_RG11_EAC,157:n.COMPRESSED_RGBA_ASTC_4x4_KHR,158:n.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,159:n.COMPRESSED_RGBA_ASTC_5x4_KHR,160:n.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR,161:n.COMPRESSED_RGBA_ASTC_5x5_KHR,162:n.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,163:n.COMPRESSED_RGBA_ASTC_6x5_KHR,164:n.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,165:n.COMPRESSED_RGBA_ASTC_6x6_KHR,166:n.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,167:n.COMPRESSED_RGBA_ASTC_8x5_KHR,168:n.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,169:n.COMPRESSED_RGBA_ASTC_8x6_KHR,170:n.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,171:n.COMPRESSED_RGBA_ASTC_8x8_KHR,172:n.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,173:n.COMPRESSED_RGBA_ASTC_10x5_KHR,174:n.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,175:n.COMPRESSED_RGBA_ASTC_10x6_KHR,176:n.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,177:n.COMPRESSED_RGBA_ASTC_10x8_KHR,178:n.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,179:n.COMPRESSED_RGBA_ASTC_10x10_KHR,180:n.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,181:n.COMPRESSED_RGBA_ASTC_12x10_KHR,182:n.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,183:n.COMPRESSED_RGBA_ASTC_12x12_KHR,184:n.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR,1000054e3:n.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,1000054001:n.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,1000066e3:n.COMPRESSED_RGBA_ASTC_4x4_KHR,1000066001:n.COMPRESSED_RGBA_ASTC_5x4_KHR,1000066002:n.COMPRESSED_RGBA_ASTC_5x5_KHR,1000066003:n.COMPRESSED_RGBA_ASTC_6x5_KHR,1000066004:n.COMPRESSED_RGBA_ASTC_6x6_KHR,1000066005:n.COMPRESSED_RGBA_ASTC_8x5_KHR,1000066006:n.COMPRESSED_RGBA_ASTC_8x6_KHR,1000066007:n.COMPRESSED_RGBA_ASTC_8x8_KHR,1000066008:n.COMPRESSED_RGBA_ASTC_10x5_KHR,1000066009:n.COMPRESSED_RGBA_ASTC_10x6_KHR,1000066010:n.COMPRESSED_RGBA_ASTC_10x8_KHR,1000066011:n.COMPRESSED_RGBA_ASTC_10x10_KHR,1000066012:n.COMPRESSED_RGBA_ASTC_12x10_KHR,1000066013:n.COMPRESSED_RGBA_ASTC_12x12_KHR};function _t(e){return Pr[e]}var p=[171,75,84,88,32,50,48,187,13,10,26,10];function J(e){let t=new Uint8Array(e);return!(t.byteLength<p.length||t[0]!==p[0]||t[1]!==p[1]||t[2]!==p[2]||t[3]!==p[3]||t[4]!==p[4]||t[5]!==p[5]||t[6]!==p[6]||t[7]!==p[7]||t[8]!==p[8]||t[9]!==p[9]||t[10]!==p[10]||t[11]!==p[11])}function lt(e){let t=new Uint8Array(e),r=ct(t),o=Math.max(1,r.levels.length),s=r.pixelWidth,a=r.pixelHeight,i=_t(r.vkFormat);return O(r.levels,{mipMapLevels:o,width:s,height:a,sizeFunction:c=>c.uncompressedByteLength,internalFormat:i})}var Br={etc1:{basisFormat:0,compressed:!0,format:n.COMPRESSED_RGB_ETC1_WEBGL},etc2:{basisFormat:1,compressed:!0},bc1:{basisFormat:2,compressed:!0,format:n.COMPRESSED_RGB_S3TC_DXT1_EXT},bc3:{basisFormat:3,compressed:!0,format:n.COMPRESSED_RGBA_S3TC_DXT5_EXT},bc4:{basisFormat:4,compressed:!0},bc5:{basisFormat:5,compressed:!0},"bc7-m6-opaque-only":{basisFormat:6,compressed:!0},"bc7-m5":{basisFormat:7,compressed:!0},"pvrtc1-4-rgb":{basisFormat:8,compressed:!0,format:n.COMPRESSED_RGB_PVRTC_4BPPV1_IMG},"pvrtc1-4-rgba":{basisFormat:9,compressed:!0,format:n.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG},"astc-4x4":{basisFormat:10,compressed:!0,format:n.COMPRESSED_RGBA_ASTC_4X4_KHR},"atc-rgb":{basisFormat:11,compressed:!0},"atc-rgba-interpolated-alpha":{basisFormat:12,compressed:!0},rgba32:{basisFormat:13,compressed:!1},rgb565:{basisFormat:14,compressed:!1},bgr565:{basisFormat:15,compressed:!1},rgba4444:{basisFormat:16,compressed:!1}};async function U(e,t){if(t.basis.containerFormat==="auto"){if(J(e)){let o=await I(t);return ft(o.KTX2File,e,t)}let{BasisFile:r}=await Se(t);return Re(r,e,t)}switch(t.basis.module){case"encoder":let r=await I(t);switch(t.basis.containerFormat){case"ktx2":return ft(r.KTX2File,e,t);case"basis":default:return Re(r.BasisFile,e,t)}case"transcoder":default:let{BasisFile:o}=await Se(t);return Re(o,e,t)}}function Re(e,t,r){let o=new e(new Uint8Array(t));try{if(!o.startTranscoding())throw new Error("Failed to start basis transcoding");let s=o.getNumImages(),a=[];for(let i=0;i<s;i++){let c=o.getNumLevels(i),_=[];for(let f=0;f<c;f++)_.push(Mr(o,i,f,r));a.push(_)}return a}finally{o.close(),o.delete()}}function Mr(e,t,r,o){let s=e.getImageWidth(t,r),a=e.getImageHeight(t,r),i=e.getHasAlpha(),{compressed:c,format:_,basisFormat:f}=St(o,i),u=e.getImageTranscodedSizeInBytes(t,r,f),D=new Uint8Array(u);if(!e.transcodeImage(D,t,r,f,0,0))throw new Error("failed to start Basis transcoding");return{width:s,height:a,data:D,compressed:c,format:_,hasAlpha:i}}function ft(e,t,r){let o=new e(new Uint8Array(t));try{if(!o.startTranscoding())throw new Error("failed to start KTX2 transcoding");let s=o.getLevels(),a=[];for(let i=0;i<s;i++){a.push(wr(o,i,r));break}return[a]}finally{o.close(),o.delete()}}function wr(e,t,r){let{alphaFlag:o,height:s,width:a}=e.getImageLevelInfo(t,0,0),{compressed:i,format:c,basisFormat:_}=St(r,o),f=e.getImageTranscodedSizeInBytes(t,0,0,_),u=new Uint8Array(f);if(!e.transcodeImage(u,t,0,0,_,0,-1,-1))throw new Error("Failed to transcode KTX2 image");return{width:a,height:s,data:u,compressed:i,levelSize:f,hasAlpha:o,format:c}}function St(e,t){let r=e&&e.basis&&e.basis.format;return r==="auto"&&(r=Ae()),typeof r=="object"&&(r=t?r.alpha:r.noAlpha),r=r.toLowerCase(),Br[r]}function Ae(){let e=$();return e.has("astc")?"astc-4x4":e.has("dxt")?{alpha:"bc3",noAlpha:"bc1"}:e.has("pvrtc")?{alpha:"pvrtc1-4-rgba",noAlpha:"pvrtc1-4-rgb"}:e.has("etc1")?"etc1":e.has("etc2")?"etc2":"rgb565"}var xe={dataType:null,batchType:null,name:"Basis",id:"basis",module:"textures",version:m,worker:!0,extensions:["basis","ktx2"],mimeTypes:["application/octet-stream","image/ktx2"],tests:["sB"],binary:!0,options:{basis:{format:"auto",libraryPath:"libs/",containerFormat:"auto",module:"transcoder"}}},ut={...xe,parse:U};var d={MAGIC_NUMBER:542327876,HEADER_LENGTH:31,MAGIC_NUMBER_INDEX:0,HEADER_SIZE_INDEX:1,HEADER_FLAGS_INDEX:2,HEADER_HEIGHT_INDEX:3,HEADER_WIDTH_INDEX:4,MIPMAPCOUNT_INDEX:7,HEADER_PF_FLAGS_INDEX:20,HEADER_PF_FOURCC_INDEX:21,DDSD_MIPMAPCOUNT:131072,DDPF_FOURCC:4},yr={DXT1:n.COMPRESSED_RGB_S3TC_DXT1_EXT,DXT3:n.COMPRESSED_RGBA_S3TC_DXT3_EXT,DXT5:n.COMPRESSED_RGBA_S3TC_DXT5_EXT,"ATC ":n.COMPRESSED_RGB_ATC_WEBGL,ATCA:n.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL,ATCI:n.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL},Or=pt,Gr=Z,br=Z,Ir={DXT1:pt,DXT3:Z,DXT5:Z,"ATC ":Or,ATCA:Gr,ATCI:br};function Et(e){return new Uint32Array(e,0,d.HEADER_LENGTH)[d.MAGIC_NUMBER_INDEX]===d.MAGIC_NUMBER}function mt(e){let t=new Int32Array(e,0,d.HEADER_LENGTH),r=t[d.HEADER_PF_FOURCC_INDEX];x(Boolean(t[d.HEADER_PF_FLAGS_INDEX]&d.DDPF_FOURCC),"DDS: Unsupported format, must contain a FourCC code");let o=Ur(r),s=yr[o],a=Ir[o];x(s&&a,`DDS: Unknown pixel format ${r}`);let i=1;t[d.HEADER_FLAGS_INDEX]&d.DDSD_MIPMAPCOUNT&&(i=Math.max(1,t[d.MIPMAPCOUNT_INDEX]));let c=t[d.HEADER_WIDTH_INDEX],_=t[d.HEADER_HEIGHT_INDEX],f=t[d.HEADER_SIZE_INDEX]+4,u=new Uint8Array(e,f);return O(u,{mipMapLevels:i,width:c,height:_,sizeFunction:a,internalFormat:s})}function pt(e,t){return(e+3>>2)*(t+3>>2)*8}function Z(e,t){return(e+3>>2)*(t+3>>2)*16}function Ur(e){return String.fromCharCode(e&255,e>>8&255,e>>16&255,e>>24&255)}var A={MAGIC_NUMBER:55727696,MAGIC_NUMBER_EXTRA:1347834371,HEADER_LENGTH:13,HEADER_SIZE:52,MAGIC_NUMBER_INDEX:0,PIXEL_FORMAT_INDEX:2,COLOUR_SPACE_INDEX:4,HEIGHT_INDEX:6,WIDTH_INDEX:7,MIPMAPCOUNT_INDEX:11,METADATA_SIZE_INDEX:12},Lr={0:[n.COMPRESSED_RGB_PVRTC_2BPPV1_IMG],1:[n.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG],2:[n.COMPRESSED_RGB_PVRTC_4BPPV1_IMG],3:[n.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG],6:[n.COMPRESSED_RGB_ETC1_WEBGL],7:[n.COMPRESSED_RGB_S3TC_DXT1_EXT],9:[n.COMPRESSED_RGBA_S3TC_DXT3_EXT],11:[n.COMPRESSED_RGBA_S3TC_DXT5_EXT],22:[n.COMPRESSED_RGB8_ETC2],23:[n.COMPRESSED_RGBA8_ETC2_EAC],24:[n.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2],25:[n.COMPRESSED_R11_EAC],26:[n.COMPRESSED_RG11_EAC],27:[n.COMPRESSED_RGBA_ASTC_4X4_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR],28:[n.COMPRESSED_RGBA_ASTC_5X4_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR],29:[n.COMPRESSED_RGBA_ASTC_5X5_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR],30:[n.COMPRESSED_RGBA_ASTC_6X5_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR],31:[n.COMPRESSED_RGBA_ASTC_6X6_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR],32:[n.COMPRESSED_RGBA_ASTC_8X5_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR],33:[n.COMPRESSED_RGBA_ASTC_8X6_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR],34:[n.COMPRESSED_RGBA_ASTC_8X8_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR],35:[n.COMPRESSED_RGBA_ASTC_10X5_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR],36:[n.COMPRESSED_RGBA_ASTC_10X6_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR],37:[n.COMPRESSED_RGBA_ASTC_10X8_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR],38:[n.COMPRESSED_RGBA_ASTC_10X10_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR],39:[n.COMPRESSED_RGBA_ASTC_12X10_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR],40:[n.COMPRESSED_RGBA_ASTC_12X12_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR]},Hr={0:dt,1:dt,2:Rt,3:Rt,6:L,7:L,9:H,11:H,22:L,23:H,24:L,25:L,26:H,27:H,28:Xr,29:Nr,30:Fr,31:Kr,32:vr,33:Vr,34:kr,35:Wr,36:zr,37:$r,38:jr,39:Jr,40:Zr};function At(e){let r=new Uint32Array(e,0,A.HEADER_LENGTH)[A.MAGIC_NUMBER_INDEX];return r===A.MAGIC_NUMBER||r===A.MAGIC_NUMBER_EXTRA}function xt(e){let t=new Uint32Array(e,0,A.HEADER_LENGTH),r=t[A.PIXEL_FORMAT_INDEX],o=t[A.COLOUR_SPACE_INDEX],s=Lr[r]||[],a=s.length>1&&o?s[1]:s[0],i=Hr[r],c=t[A.MIPMAPCOUNT_INDEX],_=t[A.WIDTH_INDEX],f=t[A.HEIGHT_INDEX],u=A.HEADER_SIZE+t[A.METADATA_SIZE_INDEX],D=new Uint8Array(e,u);return O(D,{mipMapLevels:c,width:_,height:f,sizeFunction:i,internalFormat:a})}function dt(e,t){return e=Math.max(e,16),t=Math.max(t,8),e*t/4}function Rt(e,t){return e=Math.max(e,8),t=Math.max(t,8),e*t/2}function L(e,t){return Math.floor((e+3)/4)*Math.floor((t+3)/4)*8}function H(e,t){return Math.floor((e+3)/4)*Math.floor((t+3)/4)*16}function Xr(e,t){return Math.floor((e+4)/5)*Math.floor((t+3)/4)*16}function Nr(e,t){return Math.floor((e+4)/5)*Math.floor((t+4)/5)*16}function Fr(e,t){return Math.floor((e+5)/6)*Math.floor((t+4)/5)*16}function Kr(e,t){return Math.floor((e+5)/6)*Math.floor((t+5)/6)*16}function vr(e,t){return Math.floor((e+7)/8)*Math.floor((t+4)/5)*16}function Vr(e,t){return Math.floor((e+7)/8)*Math.floor((t+5)/6)*16}function kr(e,t){return Math.floor((e+7)/8)*Math.floor((t+7)/8)*16}function Wr(e,t){return Math.floor((e+9)/10)*Math.floor((t+4)/5)*16}function zr(e,t){return Math.floor((e+9)/10)*Math.floor((t+5)/6)*16}function $r(e,t){return Math.floor((e+9)/10)*Math.floor((t+7)/8)*16}function jr(e,t){return Math.floor((e+9)/10)*Math.floor((t+9)/10)*16}function Jr(e,t){return Math.floor((e+11)/12)*Math.floor((t+9)/10)*16}function Zr(e,t){return Math.floor((e+11)/12)*Math.floor((t+11)/12)*16}function Tt(e){if(J(e))return lt(e);if(Et(e))return mt(e);if(At(e))return xt(e);throw new Error("Texture container format not recognized")}var Te={dataType:null,batchType:null,name:"Texture Containers",id:"compressed-texture",module:"textures",version:m,worker:!0,extensions:["ktx","ktx2","dds","pvr"],mimeTypes:["image/ktx2","image/ktx","image/vnd-ms.dds","image/x-dds","application/octet-stream"],binary:!0,options:{"compressed-texture":{libraryPath:"libs/",useBasis:!1}}},Ct={...Te,parse:async(e,t)=>t?.["compressed-texture"]?.useBasis?(t.basis={format:{alpha:"BC3",noAlpha:"BC1"},...t.basis,containerFormat:"ktx2",module:"encoder"},(await U(e,t))[0]):Tt(e)};var Ce={dataType:null,batchType:null,id:"crunch",name:"Crunch",module:"textures",version:m,worker:!0,extensions:["crn"],mimeTypes:["image/crn","image/x-crn","application/octet-stream"],binary:!0,options:{crunch:{libraryPath:"libs/"}}};var ge=new Uint32Array([305419896]),Yr=new Uint8Array(ge.buffer,ge.byteOffset,ge.byteLength),qr=Yr[0]!==18,gt=qr,Qr={u1:Uint8Array,i1:Int8Array,u2:Uint16Array,i2:Int16Array,u4:Uint32Array,i4:Int32Array,f4:Float32Array,f8:Float64Array};function De(e,t){let r=new DataView(e),{header:o,headerEndOffset:s}=eo(r),a=o.descr,i=Qr[a.slice(1,3)];if(!i)throw new Error(`Unimplemented type ${a}`);let _=o.shape?.reduce((u,D)=>u*D)*i.BYTES_PER_ELEMENT;if(e.byteLength<s+_)throw new Error("Buffer overflow");let f=new i(e.slice(s,s+_));if(a[0]===">"&>||a[0]==="<"&&!gt)throw new Error("Incorrect endianness");return{data:f,header:o}}function eo(e){let t=e.getUint8(6),r=8,o;t>=2?(o=e.getUint32(r,!0),r+=4):(o=e.getUint16(r,!0),r+=2);let s=t<=2?"latin1":"utf-8",a=new TextDecoder(s),i=new Uint8Array(e.buffer,r,o),c=a.decode(i);return r+=o,{header:JSON.parse(c.replace(/'/g,'"').replace("False","false").replace("(","[").replace(/,*\),*/g,"]")),headerEndOffset:r}}var to=new Uint8Array([147,78,85,77,80,89]),he={dataType:null,batchType:null,name:"NPY",id:"npy",module:"textures",version:m,worker:!0,extensions:["npy"],mimeTypes:[],tests:[to.buffer],options:{npy:{}}},Dt={...he,parseSync:De,parse:async(e,t)=>De(e,t)};var ht={DECODER:"crunch.js"};async function Pt(e,t,r){let o=["texture-compressor","--type","s3tc","--compression","DXT1","--quality","normal","--input",e,"--output",t];return await new w().start({command:"npx",arguments:o,spawn:r}),t}var Bt={name:"DDS Texture Container",id:"dds",module:"textures",version:m,extensions:["dds"],options:{texture:{format:"auto",compression:"auto",quality:"auto",mipmap:!1,flipY:!1,toolFlags:""}},encodeURLtoURL:Pt,encode(){throw new Error("Not implemented")}};async function Mt(e,t={}){let{useSRGB:r=!1,qualityLevel:o=10,encodeUASTC:s=!1,mipmaps:a=!1}=t?.["ktx2-basis-writer"]||{},{BasisEncoder:i}=await I(t),c=new i;try{let _=new Uint8Array(e.width*e.height*4);c.setCreateKTX2File(!0),c.setKTX2UASTCSupercompression(!0),c.setKTX2SRGBTransferFunc(!0),c.setSliceSourceImage(0,e.data,e.width,e.height,!1),c.setPerceptual(r),c.setMipSRGB(r),c.setQualityLevel(o),c.setUASTC(s),c.setMipGen(a);let f=c.encode(_);return _.subarray(0,f).buffer}catch(_){throw console.error("Basis Universal Supercompressed GPU Texture encoder Error: ",_),_}finally{c.delete()}}var wt={name:"Basis Universal Supercompressed GPU Texture",id:"ktx2-basis-writer",module:"textures",version:m,extensions:["ktx2"],options:{["ktx2-basis-writer"]:{useSRGB:!1,qualityLevel:10,encodeUASTC:!1,mipmaps:!1}},encode:Mt};var yt="4.2.0-beta.1";var ro=globalThis.loaders?.parseImageNode,Pe=typeof Image<"u",Be=typeof ImageBitmap<"u",oo=Boolean(ro),Me=se?!0:oo;function Ot(e){switch(e){case"auto":return Be||Pe||Me;case"imagebitmap":return Be;case"image":return Pe;case"data":return Me;default:throw new Error(`@loaders.gl/images: image ${e} not supported in this environment`)}}function Gt(){if(Be)return"imagebitmap";if(Pe)return"image";if(Me)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}function bt(e){let t=no(e);if(!t)throw new Error("Not an image");return t}function we(e){return Y(e)}function Y(e){switch(bt(e)){case"data":return e;case"image":case"imagebitmap":let t=document.createElement("canvas"),r=t.getContext("2d");if(!r)throw new Error("getImageData");return t.width=e.width,t.height=e.height,r.drawImage(e,0,0),r.getImageData(0,0,e.width,e.height);default:throw new Error("getImageData")}}function no(e){return typeof ImageBitmap<"u"&&e instanceof ImageBitmap?"imagebitmap":typeof Image<"u"&&e instanceof Image?"image":e&&typeof e=="object"&&e.data&&e.width&&e.height?"data":null}var so=/^data:image\/svg\+xml/,ao=/\.svg((\?|#).*)?$/;function q(e){return e&&(so.test(e)||ao.test(e))}function It(e,t){if(q(t)){let o=new TextDecoder().decode(e);try{typeof unescape=="function"&&typeof encodeURIComponent=="function"&&(o=unescape(encodeURIComponent(o)))}catch(a){throw new Error(a.message)}return`data:image/svg+xml;base64,${btoa(o)}`}return ye(e,t)}function ye(e,t){if(q(t))throw new Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(e)])}async function Q(e,t,r){let o=It(e,r),s=self.URL||self.webkitURL,a=typeof o!="string"&&s.createObjectURL(o);try{return await io(a||o,t)}finally{a&&s.revokeObjectURL(a)}}async function io(e,t){let r=new Image;return r.src=e,t.image&&t.image.decode&&r.decode?(await r.decode(),r):await new Promise((o,s)=>{try{r.onload=()=>o(r),r.onerror=a=>{let i=a instanceof Error?a.message:"error";s(new Error(i))}}catch(a){s(a)}})}var co={},Ut=!0;async function Lt(e,t,r){let o;q(r)?o=await Q(e,t,r):o=ye(e,r);let s=t&&t.imagebitmap;return await _o(o,s)}async function _o(e,t=null){if((lo(t)||!Ut)&&(t=null),t)try{return await createImageBitmap(e,t)}catch(r){console.warn(r),Ut=!1}return await createImageBitmap(e)}function lo(e){for(let t in e||co)return!1;return!0}function Ht(e){return!Eo(e,"ftyp",4)||!(e[8]&96)?null:fo(e)}function fo(e){switch(So(e,8,12).replace("\0"," ").trim()){case"avif":case"avis":return{extension:"avif",mimeType:"image/avif"};default:return null}}function So(e,t,r){return String.fromCharCode(...e.slice(t,r))}function uo(e){return[...e].map(t=>t.charCodeAt(0))}function Eo(e,t,r=0){let o=uo(t);for(let s=0;s<o.length;++s)if(o[s]!==e[s+r])return!1;return!0}var g=!1,X=!0;function ee(e){let t=N(e);return po(t)||xo(t)||Ro(t)||Ao(t)||mo(t)}function mo(e){let t=new Uint8Array(e instanceof DataView?e.buffer:e),r=Ht(t);return r?{mimeType:r.mimeType,width:0,height:0}:null}function po(e){let t=N(e);return t.byteLength>=24&&t.getUint32(0,g)===2303741511?{mimeType:"image/png",width:t.getUint32(16,g),height:t.getUint32(20,g)}:null}function Ro(e){let t=N(e);return t.byteLength>=10&&t.getUint32(0,g)===1195984440?{mimeType:"image/gif",width:t.getUint16(6,X),height:t.getUint16(8,X)}:null}function Ao(e){let t=N(e);return t.byteLength>=14&&t.getUint16(0,g)===16973&&t.getUint32(2,X)===t.byteLength?{mimeType:"image/bmp",width:t.getUint32(18,X),height:t.getUint32(22,X)}:null}function xo(e){let t=N(e);if(!(t.byteLength>=3&&t.getUint16(0,g)===65496&&t.getUint8(2)===255))return null;let{tableMarkers:o,sofMarkers:s}=To(),a=2;for(;a+9<t.byteLength;){let i=t.getUint16(a,g);if(s.has(i))return{mimeType:"image/jpeg",height:t.getUint16(a+5,g),width:t.getUint16(a+7,g)};if(!o.has(i))return null;a+=2,a+=t.getUint16(a,g)}return null}function To(){let e=new Set([65499,65476,65484,65501,65534]);for(let r=65504;r<65520;++r)e.add(r);return{tableMarkers:e,sofMarkers:new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502])}}function N(e){if(e instanceof DataView)return e;if(ArrayBuffer.isView(e))return new DataView(e.buffer);if(e instanceof ArrayBuffer)return new DataView(e);throw new Error("toDataView")}async function Xt(e,t){let{mimeType:r}=ee(e)||{},o=globalThis.loaders?.parseImageNode;return x(o),await o(e,r)}async function Nt(e,t,r){t=t||{};let s=(t.image||{}).type||"auto",{url:a}=r||{},i=Co(s),c;switch(i){case"imagebitmap":c=await Lt(e,t,a);break;case"image":c=await Q(e,t,a);break;case"data":c=await Xt(e,t);break;default:x(!1)}return s==="data"&&(c=Y(c)),c}function Co(e){switch(e){case"auto":case"data":return Gt();default:return Ot(e),e}}var go=["png","jpg","jpeg","gif","webp","bmp","ico","svg","avif"],Do=["image/png","image/jpeg","image/gif","image/webp","image/avif","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],ho={image:{type:"auto",decode:!0}},h={dataType:null,batchType:null,id:"image",module:"images",name:"Images",version:yt,mimeTypes:Do,extensions:go,parse:Nt,tests:[e=>Boolean(ee(new DataView(e)))],options:ho};function te(e,t,r){let o=typeof e=="function"?e({...t,...r}):e,s=t.baseUrl;return s&&(o=s[s.length-1]==="/"?`${s}${o}`:`${s}/${o}`),le(o)}var Po=e=>e&&typeof e=="object";async function Ft(e,t,r={}){return await Oe(e,t,r)}async function Oe(e,t,r){return Array.isArray(e)?await Mo(e,t,r):Po(e)?await Bo(e,t,r):await t(e,r)}async function Bo(e,t,r){let o=[],s={};for(let a in e){let i=e[a],c=Oe(i,t,r).then(_=>{s[a]=_});o.push(c)}return await Promise.all(o),s}async function Mo(e,t,r={}){let o=e.map(s=>Oe(s,t,r));return await Promise.all(o)}async function G(e,t,r){return await Ft(e,o=>Ge(o,t,r))}async function Ge(e,t,r){let s=await(await fetch(e,r.fetch)).arrayBuffer();return await t(s,r)}async function Kt(e,t={}){let r=await F(e,t);return await G(r,h.parse,t)}async function F(e,t,r={}){let o=t&&t.image&&t.image.mipLevels||0;return o!==0?await wo(e,o,t,r):te(e,t,r)}async function wo(e,t,r,o){let s=[];if(t==="auto"){let a=te(e,r,{...o,lod:0}),i=await Ge(a,h.parse,r),{width:c,height:_}=we(i);t=yo({width:c,height:_}),s.push(a)}x(t>0);for(let a=s.length;a<t;++a){let i=te(e,r,{...o,lod:a});s.push(i)}return s}function yo(e){return 1+Math.floor(Math.log2(Math.max(e.width,e.height)))}async function vt(e,t,r={}){let o=await Oo(e,t,r);return await G(o,h.parse,r)}async function Oo(e,t,r={}){let o=[];for(let s=0;s<e;s++){let a=F(t,r,{index:s});o.push(a)}return await Promise.all(o)}var Go=34069,bo=34070,Io=34071,Uo=34072,Lo=34073,Ho=34074,Vt=[{face:Go,direction:"right",axis:"x",sign:"positive"},{face:bo,direction:"left",axis:"x",sign:"negative"},{face:Io,direction:"top",axis:"y",sign:"positive"},{face:Uo,direction:"bottom",axis:"y",sign:"negative"},{face:Lo,direction:"front",axis:"z",sign:"positive"},{face:Ho,direction:"back",axis:"z",sign:"negative"}];async function Xo(e,t){let r={},o=[],s=0;for(let a=0;a<Vt.length;++a){let i=Vt[s],c=F(e,t,{...i,index:s++}).then(_=>{r[i.face]=_});o.push(c)}return await Promise.all(o),r}async function kt(e,t={}){let r=await Xo(e,t);return await G(r,h.parse,t)}var No={name:"Basis Universal Supercompressed GPU Texture",id:"ktx2-basis-writer",module:"textures",version:m,extensions:["ktx2"],worker:!0,options:{useSRGB:!1,qualityLevel:10,encodeUASTC:!1,mipmaps:!1}};return ar(K);})();
|
|
7
|
+
"use strict";var __exports__=(()=>{var er=Object.create;var V=Object.defineProperty;var tr=Object.getOwnPropertyDescriptor;var rr=Object.getOwnPropertyNames;var or=Object.getPrototypeOf,nr=Object.prototype.hasOwnProperty;var Ve=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),sr=(e,t)=>{for(var r in t)V(e,r,{get:t[r],enumerable:!0})},v=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of rr(t))!nr.call(e,s)&&s!==r&&V(e,s,{get:()=>t[s],enumerable:!(o=tr(t,s))||o.enumerable});return e},k=(e,t,r)=>(v(e,t,"default"),r&&v(r,t,"default")),ne=(e,t,r)=>(r=e!=null?er(or(e)):{},v(t||!e||!e.__esModule?V(r,"default",{value:e,enumerable:!0}):r,e)),ar=e=>v(V({},"__esModule",{value:!0}),e);var We=Ve((Ko,ke)=>{ke.exports=globalThis.loaders});var _e=Ve(()=>{});var K={};sr(K,{BASIS_EXTERNAL_LIBRARIES:()=>y,BasisLoader:()=>ut,BasisWorkerLoader:()=>xe,CRUNCH_EXTERNAL_LIBRARIES:()=>ht,CompressedTextureLoader:()=>Ct,CompressedTextureWorkerLoader:()=>Te,CompressedTextureWriter:()=>Bt,CrunchLoader:()=>Ce,CrunchWorkerLoader:()=>Ce,GL_EXTENSIONS_CONSTANTS:()=>n,KTX2BasisWriter:()=>wt,KTX2BasisWriterWorker:()=>No,NPYLoader:()=>Dt,NPYWorkerLoader:()=>he,getSupportedGPUTextureFormats:()=>$,loadImageTexture:()=>Kt,loadImageTextureArray:()=>vt,loadImageTextureCube:()=>kt,selectSupportedBasisFormat:()=>Ae});k(K,ne(We(),1));var m="4.2.0";function x(e,t){if(!e)throw new Error(t||"loader assertion failed.")}var T={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},ir=T.self||T.window||T.global||{},cr=T.window||T.self||T.global||{},_r=T.global||T.self||T.window||{},lr=T.document||{};var se=Boolean(typeof process!="object"||String(process)!=="[object process]"||process.browser);var ze=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),fr=ze&&parseFloat(ze[1])||0;function ae(e){globalThis.loaders||={},globalThis.loaders.modules||={},Object.assign(globalThis.loaders.modules,e)}function ie(e){return globalThis.loaders?.modules?.[e]||null}function Sr(){return globalThis._loadersgl_?.version||(globalThis._loadersgl_=globalThis._loadersgl_||{},globalThis._loadersgl_.version="4.2.0"),globalThis._loadersgl_.version}var $e=Sr();function je(e,t){if(!e)throw new Error(t||"loaders.gl assertion failed.")}var C={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},jo=C.self||C.window||C.global||{},Jo=C.window||C.self||C.global||{},Zo=C.global||C.self||C.window||{},Yo=C.document||{};var B=typeof process!="object"||String(process)!=="[object process]"||process.browser,W=typeof importScripts=="function",qo=typeof window<"u"&&typeof window.orientation<"u",Je=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),Qo=Je&&parseFloat(Je[1])||0;var ce={};async function M(e,t=null,r={},o=null){return t&&(e=Ze(e,t,r,o)),ce[e]=ce[e]||ur(e),await ce[e]}function Ze(e,t,r={},o=null){if(!r.useLocalLibraries&&e.startsWith("http"))return e;o=o||e;let s=r.modules||{};return s[o]?s[o]:B?r.CDN?(je(r.CDN.startsWith("http")),`${r.CDN}/${t}@${$e}/dist/libs/${o}`):W?`../src/libs/${o}`:`modules/${t}/src/libs/${o}`:`modules/${t}/dist/libs/${o}`}async function ur(e){if(e.endsWith("wasm"))return await mr(e);if(!B)try{let{requireFromFile:r}=globalThis.loaders||{};return await r?.(e)}catch(r){return console.error(r),null}if(W)return importScripts(e);let t=await pr(e);return Er(t,e)}function Er(e,t){if(!B){let{requireFromString:o}=globalThis.loaders||{};return o?.(e,t)}if(W)return eval.call(globalThis,e),null;let r=document.createElement("script");r.id=t;try{r.appendChild(document.createTextNode(e))}catch{r.text=e}return document.body.appendChild(r),null}async function mr(e){let{readFileAsArrayBuffer:t}=globalThis.loaders||{};return B||!t||e.startsWith("http")?await(await fetch(e)).arrayBuffer():await t(e)}async function pr(e){let{readFileAsText:t}=globalThis.loaders||{};return B||!t||e.startsWith("http")?await(await fetch(e)).text():await t(e)}var et=ne(_e(),1);var Ye=ne(_e(),1);function qe(e=3e3){return new Promise(t=>{Ye.default.exec("lsof -i -P -n | grep LISTEN",(r,o)=>{if(r){t(e);return}let s=[],a=/:(\d+) \(LISTEN\)/;o.split(`
|
|
8
|
+
`).forEach(c=>{let _=a.exec(c);_&&s.push(Number(_[1]))});let i=e;for(;s.includes(i);)i++;t(i)})})}var Qe={command:"",arguments:[],port:5e3,autoPort:!0,wait:2e3,onSuccess:e=>{console.log(`Started ${e.props.command}`)}},w=class{id;props={...Qe};childProcess=null;port=0;successTimer;constructor({id:t="browser-driver"}={}){this.id=t}async start(t){t={...Qe,...t},this.props=t;let r=[...t.arguments];return this.port=Number(t.port),t.portArg&&(t.autoPort&&(this.port=await qe(t.port)),r.push(t.portArg,String(this.port))),await new Promise((o,s)=>{try{this._setTimeout(()=>{t.onSuccess&&t.onSuccess(this),o({})}),console.log(`Spawning ${t.command} ${t.arguments.join(" ")}`);let a=(void 0)(t.command,r,t.spawn);this.childProcess=a,a.stdout.on("data",i=>{console.log(i.toString())}),a.stderr.on("data",i=>{console.log(`Child process wrote to stderr: "${i}".`),t.ignoreStderr||(this._clearTimeout(),s(new Error(i)))}),a.on("error",i=>{console.log(`Child process errored with ${i}`),this._clearTimeout(),s(i)}),a.on("close",i=>{console.log(`Child process exited with ${i}`),this.childProcess=null,this._clearTimeout(),o({})})}catch(a){s(a)}})}async stop(){this.childProcess&&(this.childProcess.kill(),this.childProcess=null)}async exit(t=0){try{await this.stop(),process.exit(t)}catch(r){console.error(r.message||r),process.exit(1)}}_setTimeout(t){Number(this.props.wait)>0&&(this.successTimer=setTimeout(t,this.props.wait))}_clearTimeout(){this.successTimer&&clearTimeout(this.successTimer)}};var dr="",tt={};function le(e){for(let t in tt)if(e.startsWith(t)){let r=tt[t];e=e.replace(t,r)}return!e.startsWith("http://")&&!e.startsWith("https://")&&(e=`${dr}${e}`),e}var y={TRANSCODER:"basis_transcoder.js",TRANSCODER_WASM:"basis_transcoder.wasm",ENCODER:"basis_encoder.js",ENCODER_WASM:"basis_encoder.wasm"},rt;async function Se(e){ae(e.modules);let t=ie("basis");return t||(rt||=Rr(e),await rt)}async function Rr(e){let t=null,r=null;return[t,r]=await Promise.all([await M(y.TRANSCODER,"textures",e),await M(y.TRANSCODER_WASM,"textures",e)]),t=t||globalThis.BASIS,await Ar(t,r)}function Ar(e,t){let r={};return t&&(r.wasmBinary=t),new Promise(o=>{e(r).then(s=>{let{BasisFile:a,initializeBasis:i}=s;i(),o({BasisFile:a})})})}var fe;async function b(e){let t=e.modules||{};return t.basisEncoder?t.basisEncoder:(fe=fe||xr(e),await fe)}async function xr(e){let t=null,r=null;return[t,r]=await Promise.all([await M(y.ENCODER,"textures",e),await M(y.ENCODER_WASM,"textures",e)]),t=t||globalThis.BASIS,await Tr(t,r)}function Tr(e,t){let r={};return t&&(r.wasmBinary=t),new Promise(o=>{e(r).then(s=>{let{BasisFile:a,KTX2File:i,initializeBasis:c,BasisEncoder:_}=s;c(),o({BasisFile:a,KTX2File:i,BasisEncoder:_})})})}var n={COMPRESSED_RGB_S3TC_DXT1_EXT:33776,COMPRESSED_RGBA_S3TC_DXT1_EXT:33777,COMPRESSED_RGBA_S3TC_DXT3_EXT:33778,COMPRESSED_RGBA_S3TC_DXT5_EXT:33779,COMPRESSED_R11_EAC:37488,COMPRESSED_SIGNED_R11_EAC:37489,COMPRESSED_RG11_EAC:37490,COMPRESSED_SIGNED_RG11_EAC:37491,COMPRESSED_RGB8_ETC2:37492,COMPRESSED_RGBA8_ETC2_EAC:37493,COMPRESSED_SRGB8_ETC2:37494,COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:37495,COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:37496,COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:37497,COMPRESSED_RGB_PVRTC_4BPPV1_IMG:35840,COMPRESSED_RGBA_PVRTC_4BPPV1_IMG:35842,COMPRESSED_RGB_PVRTC_2BPPV1_IMG:35841,COMPRESSED_RGBA_PVRTC_2BPPV1_IMG:35843,COMPRESSED_RGB_ETC1_WEBGL:36196,COMPRESSED_RGB_ATC_WEBGL:35986,COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL:35987,COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL:34798,COMPRESSED_RGBA_ASTC_4X4_KHR:37808,COMPRESSED_RGBA_ASTC_5X4_KHR:37809,COMPRESSED_RGBA_ASTC_5X5_KHR:37810,COMPRESSED_RGBA_ASTC_6X5_KHR:37811,COMPRESSED_RGBA_ASTC_6X6_KHR:37812,COMPRESSED_RGBA_ASTC_8X5_KHR:37813,COMPRESSED_RGBA_ASTC_8X6_KHR:37814,COMPRESSED_RGBA_ASTC_8X8_KHR:37815,COMPRESSED_RGBA_ASTC_10X5_KHR:37816,COMPRESSED_RGBA_ASTC_10X6_KHR:37817,COMPRESSED_RGBA_ASTC_10X8_KHR:37818,COMPRESSED_RGBA_ASTC_10X10_KHR:37819,COMPRESSED_RGBA_ASTC_12X10_KHR:37820,COMPRESSED_RGBA_ASTC_12X12_KHR:37821,COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR:37840,COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR:37841,COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR:37842,COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR:37843,COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR:37844,COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR:37845,COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR:37846,COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR:37847,COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR:37848,COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR:37849,COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR:37850,COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR:37851,COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR:37852,COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR:37853,COMPRESSED_RED_RGTC1_EXT:36283,COMPRESSED_SIGNED_RED_RGTC1_EXT:36284,COMPRESSED_RED_GREEN_RGTC2_EXT:36285,COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT:36286,COMPRESSED_SRGB_S3TC_DXT1_EXT:35916,COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:35917,COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT:35918,COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:35919};var Cr=["","WEBKIT_","MOZ_"],ot={WEBGL_compressed_texture_s3tc:"dxt",WEBGL_compressed_texture_s3tc_srgb:"dxt-srgb",WEBGL_compressed_texture_etc1:"etc1",WEBGL_compressed_texture_etc:"etc2",WEBGL_compressed_texture_pvrtc:"pvrtc",WEBGL_compressed_texture_atc:"atc",WEBGL_compressed_texture_astc:"astc",EXT_texture_compression_rgtc:"rgtc"},z=null;function $(e){if(!z){e=e||gr()||void 0,z=new Set;for(let t of Cr)for(let r in ot)if(e&&e.getExtension(`${t}${r}`)){let o=ot[r];z.add(o)}}return z}function gr(){try{return document.createElement("canvas").getContext("webgl")}catch{return null}}var On=new Uint8Array([0]),S=[171,75,84,88,32,50,48,187,13,10,26,10],ue,Ee,me,j,nt,pe,st,at;(function(e){e[e.NONE=0]="NONE",e[e.BASISLZ=1]="BASISLZ",e[e.ZSTD=2]="ZSTD",e[e.ZLIB=3]="ZLIB"})(ue||(ue={})),function(e){e[e.BASICFORMAT=0]="BASICFORMAT"}(Ee||(Ee={})),function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.ETC1S=163]="ETC1S",e[e.UASTC=166]="UASTC"}(me||(me={})),function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.SRGB=1]="SRGB"}(j||(j={})),function(e){e[e.UNSPECIFIED=0]="UNSPECIFIED",e[e.LINEAR=1]="LINEAR",e[e.SRGB=2]="SRGB",e[e.ITU=3]="ITU",e[e.NTSC=4]="NTSC",e[e.SLOG=5]="SLOG",e[e.SLOG2=6]="SLOG2"}(nt||(nt={})),function(e){e[e.ALPHA_STRAIGHT=0]="ALPHA_STRAIGHT",e[e.ALPHA_PREMULTIPLIED=1]="ALPHA_PREMULTIPLIED"}(pe||(pe={})),function(e){e[e.RGB=0]="RGB",e[e.RRR=3]="RRR",e[e.GGG=4]="GGG",e[e.AAA=15]="AAA"}(st||(st={})),function(e){e[e.RGB=0]="RGB",e[e.RGBA=3]="RGBA",e[e.RRR=4]="RRR",e[e.RRRG=5]="RRRG"}(at||(at={}));var de=class{constructor(){this.vkFormat=0,this.typeSize=1,this.pixelWidth=0,this.pixelHeight=0,this.pixelDepth=0,this.layerCount=0,this.faceCount=1,this.supercompressionScheme=ue.NONE,this.levels=[],this.dataFormatDescriptor=[{vendorId:0,descriptorType:Ee.BASICFORMAT,versionNumber:2,descriptorBlockSize:40,colorModel:me.UNSPECIFIED,colorPrimaries:j.SRGB,transferFunction:j.SRGB,flags:pe.ALPHA_STRAIGHT,texelBlockDimension:{x:4,y:4,z:1,w:1},bytesPlane:[],samples:[]}],this.keyValue={},this.globalData=null}},P=class{constructor(t,r,o,s){this._dataView=new DataView(t.buffer,t.byteOffset+r,o),this._littleEndian=s,this._offset=0}_nextUint8(){let t=this._dataView.getUint8(this._offset);return this._offset+=1,t}_nextUint16(){let t=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,t}_nextUint32(){let t=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,t}_nextUint64(){let t=this._dataView.getUint32(this._offset,this._littleEndian)+4294967296*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,t}_skip(t){return this._offset+=t,this}_scan(t,r=0){let o=this._offset,s=0;for(;this._dataView.getUint8(this._offset)!==r&&s<t;)s++,this._offset++;return s<t&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+o,s)}};function it(e){return typeof TextDecoder<"u"?new TextDecoder().decode(e):Buffer.from(e).toString("utf8")}function ct(e){let t=new Uint8Array(e.buffer,e.byteOffset,S.length);if(t[0]!==S[0]||t[1]!==S[1]||t[2]!==S[2]||t[3]!==S[3]||t[4]!==S[4]||t[5]!==S[5]||t[6]!==S[6]||t[7]!==S[7]||t[8]!==S[8]||t[9]!==S[9]||t[10]!==S[10]||t[11]!==S[11])throw new Error("Missing KTX 2.0 identifier.");let r=new de,o=17*Uint32Array.BYTES_PER_ELEMENT,s=new P(e,S.length,o,!0);r.vkFormat=s._nextUint32(),r.typeSize=s._nextUint32(),r.pixelWidth=s._nextUint32(),r.pixelHeight=s._nextUint32(),r.pixelDepth=s._nextUint32(),r.layerCount=s._nextUint32(),r.faceCount=s._nextUint32();let a=s._nextUint32();r.supercompressionScheme=s._nextUint32();let i=s._nextUint32(),c=s._nextUint32(),_=s._nextUint32(),f=s._nextUint32(),u=s._nextUint64(),D=s._nextUint64(),re=new P(e,S.length+o,3*a*8,!0);for(let E=0;E<a;E++)r.levels.push({levelData:new Uint8Array(e.buffer,e.byteOffset+re._nextUint64(),re._nextUint64()),uncompressedByteLength:re._nextUint64()});let l=new P(e,i,c,!0),oe={vendorId:l._skip(4)._nextUint16(),descriptorType:l._nextUint16(),versionNumber:l._nextUint16(),descriptorBlockSize:l._nextUint16(),colorModel:l._nextUint8(),colorPrimaries:l._nextUint8(),transferFunction:l._nextUint8(),flags:l._nextUint8(),texelBlockDimension:{x:l._nextUint8()+1,y:l._nextUint8()+1,z:l._nextUint8()+1,w:l._nextUint8()+1},bytesPlane:[l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8()],samples:[]},Wt=(oe.descriptorBlockSize/4-6)/4;for(let E=0;E<Wt;E++)oe.samples[E]={bitOffset:l._nextUint16(),bitLength:l._nextUint8(),channelID:l._nextUint8(),samplePosition:[l._nextUint8(),l._nextUint8(),l._nextUint8(),l._nextUint8()],sampleLower:l._nextUint32(),sampleUpper:l._nextUint32()};r.dataFormatDescriptor.length=0,r.dataFormatDescriptor.push(oe);let I=new P(e,_,f,!0);for(;I._offset<f;){let E=I._nextUint32(),Fe=I._scan(E),Ke=it(Fe),ve=I._scan(E-Fe.byteLength);r.keyValue[Ke]=Ke.match(/^ktx/i)?it(ve):ve,E%4&&I._skip(4-E%4)}if(D<=0)return r;let R=new P(e,u,D,!0),zt=R._nextUint16(),$t=R._nextUint16(),Ie=R._nextUint32(),be=R._nextUint32(),Ue=R._nextUint32(),jt=R._nextUint32(),Le=[];for(let E=0;E<a;E++)Le.push({imageFlags:R._nextUint32(),rgbSliceByteOffset:R._nextUint32(),rgbSliceByteLength:R._nextUint32(),alphaSliceByteOffset:R._nextUint32(),alphaSliceByteLength:R._nextUint32()});let He=u+R._offset,Xe=He+Ie,Ne=Xe+be,Jt=Ne+Ue,Zt=new Uint8Array(e.buffer,e.byteOffset+He,Ie),Yt=new Uint8Array(e.buffer,e.byteOffset+Xe,be),qt=new Uint8Array(e.buffer,e.byteOffset+Ne,Ue),Qt=new Uint8Array(e.buffer,e.byteOffset+Jt,jt);return r.globalData={endpointCount:zt,selectorCount:$t,imageDescs:Le,endpointsData:Zt,selectorsData:Yt,tablesData:qt,extendedData:Qt},r}function O(e,t){let r=new Array(t.mipMapLevels),o=t.width,s=t.height,a=0;for(let i=0;i<t.mipMapLevels;++i){let c=hr(t,o,s,e,i),_=Dr(e,i,a,c);r[i]={compressed:!0,format:t.internalFormat,data:_,width:o,height:s,levelSize:c},o=Math.max(1,o>>1),s=Math.max(1,s>>1),a+=c}return r}function Dr(e,t,r,o){return Array.isArray(e)?e[t].levelData:new Uint8Array(e.buffer,e.byteOffset+r,o)}function hr(e,t,r,o,s){return Array.isArray(o)?e.sizeFunction(o[s]):e.sizeFunction(t,r)}var Pr={131:n.COMPRESSED_RGB_S3TC_DXT1_EXT,132:n.COMPRESSED_SRGB_S3TC_DXT1_EXT,133:n.COMPRESSED_RGBA_S3TC_DXT1_EXT,134:n.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,135:n.COMPRESSED_RGBA_S3TC_DXT3_EXT,136:n.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,137:n.COMPRESSED_RGBA_S3TC_DXT5_EXT,138:n.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,139:n.COMPRESSED_RED_RGTC1_EXT,140:n.COMPRESSED_SIGNED_RED_RGTC1_EXT,141:n.COMPRESSED_RED_GREEN_RGTC2_EXT,142:n.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT,147:n.COMPRESSED_RGB8_ETC2,148:n.COMPRESSED_SRGB8_ETC2,149:n.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,150:n.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,151:n.COMPRESSED_RGBA8_ETC2_EAC,152:n.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,153:n.COMPRESSED_R11_EAC,154:n.COMPRESSED_SIGNED_R11_EAC,155:n.COMPRESSED_RG11_EAC,156:n.COMPRESSED_SIGNED_RG11_EAC,157:n.COMPRESSED_RGBA_ASTC_4x4_KHR,158:n.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,159:n.COMPRESSED_RGBA_ASTC_5x4_KHR,160:n.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR,161:n.COMPRESSED_RGBA_ASTC_5x5_KHR,162:n.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,163:n.COMPRESSED_RGBA_ASTC_6x5_KHR,164:n.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,165:n.COMPRESSED_RGBA_ASTC_6x6_KHR,166:n.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,167:n.COMPRESSED_RGBA_ASTC_8x5_KHR,168:n.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,169:n.COMPRESSED_RGBA_ASTC_8x6_KHR,170:n.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,171:n.COMPRESSED_RGBA_ASTC_8x8_KHR,172:n.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,173:n.COMPRESSED_RGBA_ASTC_10x5_KHR,174:n.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,175:n.COMPRESSED_RGBA_ASTC_10x6_KHR,176:n.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,177:n.COMPRESSED_RGBA_ASTC_10x8_KHR,178:n.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,179:n.COMPRESSED_RGBA_ASTC_10x10_KHR,180:n.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,181:n.COMPRESSED_RGBA_ASTC_12x10_KHR,182:n.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,183:n.COMPRESSED_RGBA_ASTC_12x12_KHR,184:n.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR,1000054e3:n.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,1000054001:n.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,1000066e3:n.COMPRESSED_RGBA_ASTC_4x4_KHR,1000066001:n.COMPRESSED_RGBA_ASTC_5x4_KHR,1000066002:n.COMPRESSED_RGBA_ASTC_5x5_KHR,1000066003:n.COMPRESSED_RGBA_ASTC_6x5_KHR,1000066004:n.COMPRESSED_RGBA_ASTC_6x6_KHR,1000066005:n.COMPRESSED_RGBA_ASTC_8x5_KHR,1000066006:n.COMPRESSED_RGBA_ASTC_8x6_KHR,1000066007:n.COMPRESSED_RGBA_ASTC_8x8_KHR,1000066008:n.COMPRESSED_RGBA_ASTC_10x5_KHR,1000066009:n.COMPRESSED_RGBA_ASTC_10x6_KHR,1000066010:n.COMPRESSED_RGBA_ASTC_10x8_KHR,1000066011:n.COMPRESSED_RGBA_ASTC_10x10_KHR,1000066012:n.COMPRESSED_RGBA_ASTC_12x10_KHR,1000066013:n.COMPRESSED_RGBA_ASTC_12x12_KHR};function _t(e){return Pr[e]}var p=[171,75,84,88,32,50,48,187,13,10,26,10];function J(e){let t=new Uint8Array(e);return!(t.byteLength<p.length||t[0]!==p[0]||t[1]!==p[1]||t[2]!==p[2]||t[3]!==p[3]||t[4]!==p[4]||t[5]!==p[5]||t[6]!==p[6]||t[7]!==p[7]||t[8]!==p[8]||t[9]!==p[9]||t[10]!==p[10]||t[11]!==p[11])}function lt(e){let t=new Uint8Array(e),r=ct(t),o=Math.max(1,r.levels.length),s=r.pixelWidth,a=r.pixelHeight,i=_t(r.vkFormat);return O(r.levels,{mipMapLevels:o,width:s,height:a,sizeFunction:c=>c.uncompressedByteLength,internalFormat:i})}var Br={etc1:{basisFormat:0,compressed:!0,format:n.COMPRESSED_RGB_ETC1_WEBGL},etc2:{basisFormat:1,compressed:!0},bc1:{basisFormat:2,compressed:!0,format:n.COMPRESSED_RGB_S3TC_DXT1_EXT},bc3:{basisFormat:3,compressed:!0,format:n.COMPRESSED_RGBA_S3TC_DXT5_EXT},bc4:{basisFormat:4,compressed:!0},bc5:{basisFormat:5,compressed:!0},"bc7-m6-opaque-only":{basisFormat:6,compressed:!0},"bc7-m5":{basisFormat:7,compressed:!0},"pvrtc1-4-rgb":{basisFormat:8,compressed:!0,format:n.COMPRESSED_RGB_PVRTC_4BPPV1_IMG},"pvrtc1-4-rgba":{basisFormat:9,compressed:!0,format:n.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG},"astc-4x4":{basisFormat:10,compressed:!0,format:n.COMPRESSED_RGBA_ASTC_4X4_KHR},"atc-rgb":{basisFormat:11,compressed:!0},"atc-rgba-interpolated-alpha":{basisFormat:12,compressed:!0},rgba32:{basisFormat:13,compressed:!1},rgb565:{basisFormat:14,compressed:!1},bgr565:{basisFormat:15,compressed:!1},rgba4444:{basisFormat:16,compressed:!1}};async function U(e,t){if(t.basis.containerFormat==="auto"){if(J(e)){let o=await b(t);return ft(o.KTX2File,e,t)}let{BasisFile:r}=await Se(t);return Re(r,e,t)}switch(t.basis.module){case"encoder":let r=await b(t);switch(t.basis.containerFormat){case"ktx2":return ft(r.KTX2File,e,t);case"basis":default:return Re(r.BasisFile,e,t)}case"transcoder":default:let{BasisFile:o}=await Se(t);return Re(o,e,t)}}function Re(e,t,r){let o=new e(new Uint8Array(t));try{if(!o.startTranscoding())throw new Error("Failed to start basis transcoding");let s=o.getNumImages(),a=[];for(let i=0;i<s;i++){let c=o.getNumLevels(i),_=[];for(let f=0;f<c;f++)_.push(Mr(o,i,f,r));a.push(_)}return a}finally{o.close(),o.delete()}}function Mr(e,t,r,o){let s=e.getImageWidth(t,r),a=e.getImageHeight(t,r),i=e.getHasAlpha(),{compressed:c,format:_,basisFormat:f}=St(o,i),u=e.getImageTranscodedSizeInBytes(t,r,f),D=new Uint8Array(u);if(!e.transcodeImage(D,t,r,f,0,0))throw new Error("failed to start Basis transcoding");return{width:s,height:a,data:D,compressed:c,format:_,hasAlpha:i}}function ft(e,t,r){let o=new e(new Uint8Array(t));try{if(!o.startTranscoding())throw new Error("failed to start KTX2 transcoding");let s=o.getLevels(),a=[];for(let i=0;i<s;i++){a.push(wr(o,i,r));break}return[a]}finally{o.close(),o.delete()}}function wr(e,t,r){let{alphaFlag:o,height:s,width:a}=e.getImageLevelInfo(t,0,0),{compressed:i,format:c,basisFormat:_}=St(r,o),f=e.getImageTranscodedSizeInBytes(t,0,0,_),u=new Uint8Array(f);if(!e.transcodeImage(u,t,0,0,_,0,-1,-1))throw new Error("Failed to transcode KTX2 image");return{width:a,height:s,data:u,compressed:i,levelSize:f,hasAlpha:o,format:c}}function St(e,t){let r=e&&e.basis&&e.basis.format;return r==="auto"&&(r=Ae()),typeof r=="object"&&(r=t?r.alpha:r.noAlpha),r=r.toLowerCase(),Br[r]}function Ae(){let e=$();return e.has("astc")?"astc-4x4":e.has("dxt")?{alpha:"bc3",noAlpha:"bc1"}:e.has("pvrtc")?{alpha:"pvrtc1-4-rgba",noAlpha:"pvrtc1-4-rgb"}:e.has("etc1")?"etc1":e.has("etc2")?"etc2":"rgb565"}var xe={dataType:null,batchType:null,name:"Basis",id:"basis",module:"textures",version:m,worker:!0,extensions:["basis","ktx2"],mimeTypes:["application/octet-stream","image/ktx2"],tests:["sB"],binary:!0,options:{basis:{format:"auto",libraryPath:"libs/",containerFormat:"auto",module:"transcoder"}}},ut={...xe,parse:U};var d={MAGIC_NUMBER:542327876,HEADER_LENGTH:31,MAGIC_NUMBER_INDEX:0,HEADER_SIZE_INDEX:1,HEADER_FLAGS_INDEX:2,HEADER_HEIGHT_INDEX:3,HEADER_WIDTH_INDEX:4,MIPMAPCOUNT_INDEX:7,HEADER_PF_FLAGS_INDEX:20,HEADER_PF_FOURCC_INDEX:21,DDSD_MIPMAPCOUNT:131072,DDPF_FOURCC:4},yr={DXT1:n.COMPRESSED_RGB_S3TC_DXT1_EXT,DXT3:n.COMPRESSED_RGBA_S3TC_DXT3_EXT,DXT5:n.COMPRESSED_RGBA_S3TC_DXT5_EXT,"ATC ":n.COMPRESSED_RGB_ATC_WEBGL,ATCA:n.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL,ATCI:n.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL},Or=pt,Gr=Z,Ir=Z,br={DXT1:pt,DXT3:Z,DXT5:Z,"ATC ":Or,ATCA:Gr,ATCI:Ir};function Et(e){return new Uint32Array(e,0,d.HEADER_LENGTH)[d.MAGIC_NUMBER_INDEX]===d.MAGIC_NUMBER}function mt(e){let t=new Int32Array(e,0,d.HEADER_LENGTH),r=t[d.HEADER_PF_FOURCC_INDEX];x(Boolean(t[d.HEADER_PF_FLAGS_INDEX]&d.DDPF_FOURCC),"DDS: Unsupported format, must contain a FourCC code");let o=Ur(r),s=yr[o],a=br[o];x(s&&a,`DDS: Unknown pixel format ${r}`);let i=1;t[d.HEADER_FLAGS_INDEX]&d.DDSD_MIPMAPCOUNT&&(i=Math.max(1,t[d.MIPMAPCOUNT_INDEX]));let c=t[d.HEADER_WIDTH_INDEX],_=t[d.HEADER_HEIGHT_INDEX],f=t[d.HEADER_SIZE_INDEX]+4,u=new Uint8Array(e,f);return O(u,{mipMapLevels:i,width:c,height:_,sizeFunction:a,internalFormat:s})}function pt(e,t){return(e+3>>2)*(t+3>>2)*8}function Z(e,t){return(e+3>>2)*(t+3>>2)*16}function Ur(e){return String.fromCharCode(e&255,e>>8&255,e>>16&255,e>>24&255)}var A={MAGIC_NUMBER:55727696,MAGIC_NUMBER_EXTRA:1347834371,HEADER_LENGTH:13,HEADER_SIZE:52,MAGIC_NUMBER_INDEX:0,PIXEL_FORMAT_INDEX:2,COLOUR_SPACE_INDEX:4,HEIGHT_INDEX:6,WIDTH_INDEX:7,MIPMAPCOUNT_INDEX:11,METADATA_SIZE_INDEX:12},Lr={0:[n.COMPRESSED_RGB_PVRTC_2BPPV1_IMG],1:[n.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG],2:[n.COMPRESSED_RGB_PVRTC_4BPPV1_IMG],3:[n.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG],6:[n.COMPRESSED_RGB_ETC1_WEBGL],7:[n.COMPRESSED_RGB_S3TC_DXT1_EXT],9:[n.COMPRESSED_RGBA_S3TC_DXT3_EXT],11:[n.COMPRESSED_RGBA_S3TC_DXT5_EXT],22:[n.COMPRESSED_RGB8_ETC2],23:[n.COMPRESSED_RGBA8_ETC2_EAC],24:[n.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2],25:[n.COMPRESSED_R11_EAC],26:[n.COMPRESSED_RG11_EAC],27:[n.COMPRESSED_RGBA_ASTC_4X4_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR],28:[n.COMPRESSED_RGBA_ASTC_5X4_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR],29:[n.COMPRESSED_RGBA_ASTC_5X5_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR],30:[n.COMPRESSED_RGBA_ASTC_6X5_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR],31:[n.COMPRESSED_RGBA_ASTC_6X6_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR],32:[n.COMPRESSED_RGBA_ASTC_8X5_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR],33:[n.COMPRESSED_RGBA_ASTC_8X6_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR],34:[n.COMPRESSED_RGBA_ASTC_8X8_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR],35:[n.COMPRESSED_RGBA_ASTC_10X5_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR],36:[n.COMPRESSED_RGBA_ASTC_10X6_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR],37:[n.COMPRESSED_RGBA_ASTC_10X8_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR],38:[n.COMPRESSED_RGBA_ASTC_10X10_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR],39:[n.COMPRESSED_RGBA_ASTC_12X10_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR],40:[n.COMPRESSED_RGBA_ASTC_12X12_KHR,n.COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR]},Hr={0:dt,1:dt,2:Rt,3:Rt,6:L,7:L,9:H,11:H,22:L,23:H,24:L,25:L,26:H,27:H,28:Xr,29:Nr,30:Fr,31:Kr,32:vr,33:Vr,34:kr,35:Wr,36:zr,37:$r,38:jr,39:Jr,40:Zr};function At(e){let r=new Uint32Array(e,0,A.HEADER_LENGTH)[A.MAGIC_NUMBER_INDEX];return r===A.MAGIC_NUMBER||r===A.MAGIC_NUMBER_EXTRA}function xt(e){let t=new Uint32Array(e,0,A.HEADER_LENGTH),r=t[A.PIXEL_FORMAT_INDEX],o=t[A.COLOUR_SPACE_INDEX],s=Lr[r]||[],a=s.length>1&&o?s[1]:s[0],i=Hr[r],c=t[A.MIPMAPCOUNT_INDEX],_=t[A.WIDTH_INDEX],f=t[A.HEIGHT_INDEX],u=A.HEADER_SIZE+t[A.METADATA_SIZE_INDEX],D=new Uint8Array(e,u);return O(D,{mipMapLevels:c,width:_,height:f,sizeFunction:i,internalFormat:a})}function dt(e,t){return e=Math.max(e,16),t=Math.max(t,8),e*t/4}function Rt(e,t){return e=Math.max(e,8),t=Math.max(t,8),e*t/2}function L(e,t){return Math.floor((e+3)/4)*Math.floor((t+3)/4)*8}function H(e,t){return Math.floor((e+3)/4)*Math.floor((t+3)/4)*16}function Xr(e,t){return Math.floor((e+4)/5)*Math.floor((t+3)/4)*16}function Nr(e,t){return Math.floor((e+4)/5)*Math.floor((t+4)/5)*16}function Fr(e,t){return Math.floor((e+5)/6)*Math.floor((t+4)/5)*16}function Kr(e,t){return Math.floor((e+5)/6)*Math.floor((t+5)/6)*16}function vr(e,t){return Math.floor((e+7)/8)*Math.floor((t+4)/5)*16}function Vr(e,t){return Math.floor((e+7)/8)*Math.floor((t+5)/6)*16}function kr(e,t){return Math.floor((e+7)/8)*Math.floor((t+7)/8)*16}function Wr(e,t){return Math.floor((e+9)/10)*Math.floor((t+4)/5)*16}function zr(e,t){return Math.floor((e+9)/10)*Math.floor((t+5)/6)*16}function $r(e,t){return Math.floor((e+9)/10)*Math.floor((t+7)/8)*16}function jr(e,t){return Math.floor((e+9)/10)*Math.floor((t+9)/10)*16}function Jr(e,t){return Math.floor((e+11)/12)*Math.floor((t+9)/10)*16}function Zr(e,t){return Math.floor((e+11)/12)*Math.floor((t+11)/12)*16}function Tt(e){if(J(e))return lt(e);if(Et(e))return mt(e);if(At(e))return xt(e);throw new Error("Texture container format not recognized")}var Te={dataType:null,batchType:null,name:"Texture Containers",id:"compressed-texture",module:"textures",version:m,worker:!0,extensions:["ktx","ktx2","dds","pvr"],mimeTypes:["image/ktx2","image/ktx","image/vnd-ms.dds","image/x-dds","application/octet-stream"],binary:!0,options:{"compressed-texture":{libraryPath:"libs/",useBasis:!1}}},Ct={...Te,parse:async(e,t)=>t?.["compressed-texture"]?.useBasis?(t.basis={format:{alpha:"BC3",noAlpha:"BC1"},...t.basis,containerFormat:"ktx2",module:"encoder"},(await U(e,t))[0]):Tt(e)};var Ce={dataType:null,batchType:null,id:"crunch",name:"Crunch",module:"textures",version:m,worker:!0,extensions:["crn"],mimeTypes:["image/crn","image/x-crn","application/octet-stream"],binary:!0,options:{crunch:{libraryPath:"libs/"}}};var ge=new Uint32Array([305419896]),Yr=new Uint8Array(ge.buffer,ge.byteOffset,ge.byteLength),qr=Yr[0]!==18,gt=qr,Qr={u1:Uint8Array,i1:Int8Array,u2:Uint16Array,i2:Int16Array,u4:Uint32Array,i4:Int32Array,f4:Float32Array,f8:Float64Array};function De(e,t){let r=new DataView(e),{header:o,headerEndOffset:s}=eo(r),a=o.descr,i=Qr[a.slice(1,3)];if(!i)throw new Error(`Unimplemented type ${a}`);let _=o.shape?.reduce((u,D)=>u*D)*i.BYTES_PER_ELEMENT;if(e.byteLength<s+_)throw new Error("Buffer overflow");let f=new i(e.slice(s,s+_));if(a[0]===">"&>||a[0]==="<"&&!gt)throw new Error("Incorrect endianness");return{data:f,header:o}}function eo(e){let t=e.getUint8(6),r=8,o;t>=2?(o=e.getUint32(r,!0),r+=4):(o=e.getUint16(r,!0),r+=2);let s=t<=2?"latin1":"utf-8",a=new TextDecoder(s),i=new Uint8Array(e.buffer,r,o),c=a.decode(i);return r+=o,{header:JSON.parse(c.replace(/'/g,'"').replace("False","false").replace("(","[").replace(/,*\),*/g,"]")),headerEndOffset:r}}var to=new Uint8Array([147,78,85,77,80,89]),he={dataType:null,batchType:null,name:"NPY",id:"npy",module:"textures",version:m,worker:!0,extensions:["npy"],mimeTypes:[],tests:[to.buffer],options:{npy:{}}},Dt={...he,parseSync:De,parse:async(e,t)=>De(e,t)};var ht={DECODER:"crunch.js"};async function Pt(e,t,r){let o=["texture-compressor","--type","s3tc","--compression","DXT1","--quality","normal","--input",e,"--output",t];return await new w().start({command:"npx",arguments:o,spawn:r}),t}var Bt={name:"DDS Texture Container",id:"dds",module:"textures",version:m,extensions:["dds"],options:{texture:{format:"auto",compression:"auto",quality:"auto",mipmap:!1,flipY:!1,toolFlags:""}},encodeURLtoURL:Pt,encode(){throw new Error("Not implemented")}};async function Mt(e,t={}){let{useSRGB:r=!1,qualityLevel:o=10,encodeUASTC:s=!1,mipmaps:a=!1}=t?.["ktx2-basis-writer"]||{},{BasisEncoder:i}=await b(t),c=new i;try{let _=new Uint8Array(e.width*e.height*4);c.setCreateKTX2File(!0),c.setKTX2UASTCSupercompression(!0),c.setKTX2SRGBTransferFunc(!0),c.setSliceSourceImage(0,e.data,e.width,e.height,!1),c.setPerceptual(r),c.setMipSRGB(r),c.setQualityLevel(o),c.setUASTC(s),c.setMipGen(a);let f=c.encode(_);return _.subarray(0,f).buffer}catch(_){throw console.error("Basis Universal Supercompressed GPU Texture encoder Error: ",_),_}finally{c.delete()}}var wt={name:"Basis Universal Supercompressed GPU Texture",id:"ktx2-basis-writer",module:"textures",version:m,extensions:["ktx2"],options:{["ktx2-basis-writer"]:{useSRGB:!1,qualityLevel:10,encodeUASTC:!1,mipmaps:!1}},encode:Mt};var yt="4.2.0";var ro=globalThis.loaders?.parseImageNode,Pe=typeof Image<"u",Be=typeof ImageBitmap<"u",oo=Boolean(ro),Me=se?!0:oo;function Ot(e){switch(e){case"auto":return Be||Pe||Me;case"imagebitmap":return Be;case"image":return Pe;case"data":return Me;default:throw new Error(`@loaders.gl/images: image ${e} not supported in this environment`)}}function Gt(){if(Be)return"imagebitmap";if(Pe)return"image";if(Me)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}function It(e){let t=no(e);if(!t)throw new Error("Not an image");return t}function we(e){return Y(e)}function Y(e){switch(It(e)){case"data":return e;case"image":case"imagebitmap":let t=document.createElement("canvas"),r=t.getContext("2d");if(!r)throw new Error("getImageData");return t.width=e.width,t.height=e.height,r.drawImage(e,0,0),r.getImageData(0,0,e.width,e.height);default:throw new Error("getImageData")}}function no(e){return typeof ImageBitmap<"u"&&e instanceof ImageBitmap?"imagebitmap":typeof Image<"u"&&e instanceof Image?"image":e&&typeof e=="object"&&e.data&&e.width&&e.height?"data":null}var so=/^data:image\/svg\+xml/,ao=/\.svg((\?|#).*)?$/;function q(e){return e&&(so.test(e)||ao.test(e))}function bt(e,t){if(q(t)){let o=new TextDecoder().decode(e);try{typeof unescape=="function"&&typeof encodeURIComponent=="function"&&(o=unescape(encodeURIComponent(o)))}catch(a){throw new Error(a.message)}return`data:image/svg+xml;base64,${btoa(o)}`}return ye(e,t)}function ye(e,t){if(q(t))throw new Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(e)])}async function Q(e,t,r){let o=bt(e,r),s=self.URL||self.webkitURL,a=typeof o!="string"&&s.createObjectURL(o);try{return await io(a||o,t)}finally{a&&s.revokeObjectURL(a)}}async function io(e,t){let r=new Image;return r.src=e,t.image&&t.image.decode&&r.decode?(await r.decode(),r):await new Promise((o,s)=>{try{r.onload=()=>o(r),r.onerror=a=>{let i=a instanceof Error?a.message:"error";s(new Error(i))}}catch(a){s(a)}})}var co={},Ut=!0;async function Lt(e,t,r){let o;q(r)?o=await Q(e,t,r):o=ye(e,r);let s=t&&t.imagebitmap;return await _o(o,s)}async function _o(e,t=null){if((lo(t)||!Ut)&&(t=null),t)try{return await createImageBitmap(e,t)}catch(r){console.warn(r),Ut=!1}return await createImageBitmap(e)}function lo(e){for(let t in e||co)return!1;return!0}function Ht(e){return!Eo(e,"ftyp",4)||!(e[8]&96)?null:fo(e)}function fo(e){switch(So(e,8,12).replace("\0"," ").trim()){case"avif":case"avis":return{extension:"avif",mimeType:"image/avif"};default:return null}}function So(e,t,r){return String.fromCharCode(...e.slice(t,r))}function uo(e){return[...e].map(t=>t.charCodeAt(0))}function Eo(e,t,r=0){let o=uo(t);for(let s=0;s<o.length;++s)if(o[s]!==e[s+r])return!1;return!0}var g=!1,X=!0;function ee(e){let t=N(e);return po(t)||xo(t)||Ro(t)||Ao(t)||mo(t)}function mo(e){let t=new Uint8Array(e instanceof DataView?e.buffer:e),r=Ht(t);return r?{mimeType:r.mimeType,width:0,height:0}:null}function po(e){let t=N(e);return t.byteLength>=24&&t.getUint32(0,g)===2303741511?{mimeType:"image/png",width:t.getUint32(16,g),height:t.getUint32(20,g)}:null}function Ro(e){let t=N(e);return t.byteLength>=10&&t.getUint32(0,g)===1195984440?{mimeType:"image/gif",width:t.getUint16(6,X),height:t.getUint16(8,X)}:null}function Ao(e){let t=N(e);return t.byteLength>=14&&t.getUint16(0,g)===16973&&t.getUint32(2,X)===t.byteLength?{mimeType:"image/bmp",width:t.getUint32(18,X),height:t.getUint32(22,X)}:null}function xo(e){let t=N(e);if(!(t.byteLength>=3&&t.getUint16(0,g)===65496&&t.getUint8(2)===255))return null;let{tableMarkers:o,sofMarkers:s}=To(),a=2;for(;a+9<t.byteLength;){let i=t.getUint16(a,g);if(s.has(i))return{mimeType:"image/jpeg",height:t.getUint16(a+5,g),width:t.getUint16(a+7,g)};if(!o.has(i))return null;a+=2,a+=t.getUint16(a,g)}return null}function To(){let e=new Set([65499,65476,65484,65501,65534]);for(let r=65504;r<65520;++r)e.add(r);return{tableMarkers:e,sofMarkers:new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502])}}function N(e){if(e instanceof DataView)return e;if(ArrayBuffer.isView(e))return new DataView(e.buffer);if(e instanceof ArrayBuffer)return new DataView(e);throw new Error("toDataView")}async function Xt(e,t){let{mimeType:r}=ee(e)||{},o=globalThis.loaders?.parseImageNode;return x(o),await o(e,r)}async function Nt(e,t,r){t=t||{};let s=(t.image||{}).type||"auto",{url:a}=r||{},i=Co(s),c;switch(i){case"imagebitmap":c=await Lt(e,t,a);break;case"image":c=await Q(e,t,a);break;case"data":c=await Xt(e,t);break;default:x(!1)}return s==="data"&&(c=Y(c)),c}function Co(e){switch(e){case"auto":case"data":return Gt();default:return Ot(e),e}}var go=["png","jpg","jpeg","gif","webp","bmp","ico","svg","avif"],Do=["image/png","image/jpeg","image/gif","image/webp","image/avif","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],ho={image:{type:"auto",decode:!0}},h={dataType:null,batchType:null,id:"image",module:"images",name:"Images",version:yt,mimeTypes:Do,extensions:go,parse:Nt,tests:[e=>Boolean(ee(new DataView(e)))],options:ho};function te(e,t,r){let o=typeof e=="function"?e({...t,...r}):e,s=t.baseUrl;return s&&(o=s[s.length-1]==="/"?`${s}${o}`:`${s}/${o}`),le(o)}var Po=e=>e&&typeof e=="object";async function Ft(e,t,r={}){return await Oe(e,t,r)}async function Oe(e,t,r){return Array.isArray(e)?await Mo(e,t,r):Po(e)?await Bo(e,t,r):await t(e,r)}async function Bo(e,t,r){let o=[],s={};for(let a in e){let i=e[a],c=Oe(i,t,r).then(_=>{s[a]=_});o.push(c)}return await Promise.all(o),s}async function Mo(e,t,r={}){let o=e.map(s=>Oe(s,t,r));return await Promise.all(o)}async function G(e,t,r){return await Ft(e,o=>Ge(o,t,r))}async function Ge(e,t,r){let s=await(await fetch(e,r.fetch)).arrayBuffer();return await t(s,r)}async function Kt(e,t={}){let r=await F(e,t);return await G(r,h.parse,t)}async function F(e,t,r={}){let o=t&&t.image&&t.image.mipLevels||0;return o!==0?await wo(e,o,t,r):te(e,t,r)}async function wo(e,t,r,o){let s=[];if(t==="auto"){let a=te(e,r,{...o,lod:0}),i=await Ge(a,h.parse,r),{width:c,height:_}=we(i);t=yo({width:c,height:_}),s.push(a)}x(t>0);for(let a=s.length;a<t;++a){let i=te(e,r,{...o,lod:a});s.push(i)}return s}function yo(e){return 1+Math.floor(Math.log2(Math.max(e.width,e.height)))}async function vt(e,t,r={}){let o=await Oo(e,t,r);return await G(o,h.parse,r)}async function Oo(e,t,r={}){let o=[];for(let s=0;s<e;s++){let a=F(t,r,{index:s});o.push(a)}return await Promise.all(o)}var Go=34069,Io=34070,bo=34071,Uo=34072,Lo=34073,Ho=34074,Vt=[{face:Go,direction:"right",axis:"x",sign:"positive"},{face:Io,direction:"left",axis:"x",sign:"negative"},{face:bo,direction:"top",axis:"y",sign:"positive"},{face:Uo,direction:"bottom",axis:"y",sign:"negative"},{face:Lo,direction:"front",axis:"z",sign:"positive"},{face:Ho,direction:"back",axis:"z",sign:"negative"}];async function Xo(e,t){let r={},o=[],s=0;for(let a=0;a<Vt.length;++a){let i=Vt[s],c=F(e,t,{...i,index:s++}).then(_=>{r[i.face]=_});o.push(c)}return await Promise.all(o),r}async function kt(e,t={}){let r=await Xo(e,t);return await G(r,h.parse,t)}var No={name:"Basis Universal Supercompressed GPU Texture",id:"ktx2-basis-writer",module:"textures",version:m,extensions:["ktx2"],worker:!0,options:{useSRGB:!1,qualityLevel:10,encodeUASTC:!1,mipmaps:!1}};return ar(K);})();
|
|
9
9
|
return __exports__;
|
|
10
10
|
});
|
package/dist/index.cjs
CHANGED
|
@@ -43,7 +43,7 @@ __export(dist_exports, {
|
|
|
43
43
|
module.exports = __toCommonJS(dist_exports);
|
|
44
44
|
|
|
45
45
|
// dist/lib/utils/version.js
|
|
46
|
-
var VERSION = true ? "4.2.0
|
|
46
|
+
var VERSION = true ? "4.2.0" : "latest";
|
|
47
47
|
|
|
48
48
|
// dist/lib/parsers/basis-module-loader.js
|
|
49
49
|
var import_loader_utils = require("@loaders.gl/loader-utils");
|
package/dist/index.cjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["index.js", "lib/utils/version.js", "lib/parsers/basis-module-loader.js", "lib/gl-extensions.js", "lib/utils/texture-formats.js", "lib/parsers/parse-ktx.js", "lib/utils/extract-mipmap-images.js", "lib/utils/ktx-format-helper.js", "lib/parsers/parse-basis.js", "basis-loader.js", "lib/parsers/parse-dds.js", "lib/parsers/parse-pvr.js", "lib/parsers/parse-compressed-texture.js", "compressed-texture-loader.js", "crunch-loader.js", "lib/parsers/parse-npy.js", "npy-loader.js", "lib/parsers/crunch-module-loader.js", "lib/encoders/encode-texture.js", "compressed-texture-writer.js", "lib/encoders/encode-ktx2-basis-texture.js", "ktx2-basis-writer.js", "lib/texture-api/load-image.js", "lib/texture-api/generate-url.js", "lib/texture-api/async-deep-map.js", "lib/texture-api/deep-load.js", "lib/texture-api/load-image-array.js", "lib/texture-api/load-image-cube.js"],
|
|
4
|
-
"sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { VERSION } from \"./lib/utils/version.js\";\nexport { BasisLoader, BasisWorkerLoader } from \"./basis-loader.js\";\nexport { CompressedTextureLoader, CompressedTextureWorkerLoader } from \"./compressed-texture-loader.js\";\nexport { CrunchLoader } from \"./crunch-loader.js\";\nexport { NPYLoader, NPYWorkerLoader } from \"./npy-loader.js\";\n// Module constants\nexport { BASIS_EXTERNAL_LIBRARIES } from \"./lib/parsers/basis-module-loader.js\";\nexport { CRUNCH_EXTERNAL_LIBRARIES } from \"./lib/parsers/crunch-module-loader.js\";\n// Writers\nexport { CompressedTextureWriter } from \"./compressed-texture-writer.js\";\nexport { KTX2BasisWriter } from \"./ktx2-basis-writer.js\";\nexport const KTX2BasisWriterWorker = {\n name: 'Basis Universal Supercompressed GPU Texture',\n id: 'ktx2-basis-writer',\n module: 'textures',\n version: VERSION,\n extensions: ['ktx2'],\n worker: true,\n options: {\n useSRGB: false,\n qualityLevel: 10,\n encodeUASTC: false,\n mipmaps: false\n }\n};\n// Texture Loading API\nexport { loadImageTexture } from \"./lib/texture-api/load-image.js\";\nexport { loadImageTextureArray } from \"./lib/texture-api/load-image-array.js\";\nexport { loadImageTextureCube } from \"./lib/texture-api/load-image-cube.js\";\n// Utilities\nexport { GL_EXTENSIONS_CONSTANTS } from \"./lib/gl-extensions.js\";\nexport { selectSupportedBasisFormat } from \"./lib/parsers/parse-basis.js\";\nexport { getSupportedGPUTextureFormats } from \"./lib/utils/texture-formats.js\";\n// DEPRECATED\n// @deprecated\nexport { CrunchLoader as CrunchWorkerLoader } from \"./crunch-loader.js\";\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n// Version constant cannot be imported, it needs to correspond to the build version of **this** module.\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nexport const VERSION = typeof \"4.2.0-beta.1\" !== 'undefined' ? \"4.2.0-beta.1\" : 'latest';\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { registerJSModules, getJSModuleOrNull } from '@loaders.gl/loader-utils';\nimport { loadLibrary } from '@loaders.gl/worker-utils';\nexport const BASIS_EXTERNAL_LIBRARIES = {\n /** Basis transcoder, javascript wrapper part */\n TRANSCODER: 'basis_transcoder.js',\n /** Basis transcoder, compiled web assembly part */\n TRANSCODER_WASM: 'basis_transcoder.wasm',\n /** Basis encoder, javascript wrapper part */\n ENCODER: 'basis_encoder.js',\n /** Basis encoder, compiled web assembly part */\n ENCODER_WASM: 'basis_encoder.wasm'\n};\nlet loadBasisTranscoderPromise;\n/**\n * Loads wasm transcoder module\n * @param options\n * @returns {BasisFile} promise\n */\nexport async function loadBasisTranscoderModule(options) {\n registerJSModules(options.modules);\n const basis = getJSModuleOrNull('basis');\n if (basis) {\n return basis;\n }\n loadBasisTranscoderPromise ||= loadBasisTranscoder(options);\n return await loadBasisTranscoderPromise;\n}\n/**\n * Loads wasm transcoder module\n * @param options\n * @returns {BasisFile} promise\n */\nasync function loadBasisTranscoder(options) {\n let BASIS = null;\n let wasmBinary = null;\n [BASIS, wasmBinary] = await Promise.all([\n await loadLibrary(BASIS_EXTERNAL_LIBRARIES.TRANSCODER, 'textures', options),\n await loadLibrary(BASIS_EXTERNAL_LIBRARIES.TRANSCODER_WASM, 'textures', options)\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 initializeBasisTranscoderModule(BASIS, wasmBinary);\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 initializeBasisTranscoderModule(BasisModule, wasmBinary) {\n const options = {};\n if (wasmBinary) {\n options.wasmBinary = wasmBinary;\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}\nlet loadBasisEncoderPromise;\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 loadBasisEncoderPromise = loadBasisEncoderPromise || loadBasisEncoder(options);\n return await loadBasisEncoderPromise;\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 [BASIS_ENCODER, wasmBinary] = await Promise.all([\n await loadLibrary(BASIS_EXTERNAL_LIBRARIES.ENCODER, 'textures', options),\n await loadLibrary(BASIS_EXTERNAL_LIBRARIES.ENCODER_WASM, 'textures', options)\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 * 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 = {};\n if (wasmBinary) {\n options.wasmBinary = wasmBinary;\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", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n/* eslint-disable camelcase */\nexport const GL_EXTENSIONS_CONSTANTS = {\n // WEBGL_compressed_texture_s3tc\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 // WEBGL_compressed_texture_es3\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 // WEBGL_compressed_texture_pvrtc\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 // WEBGL_compressed_texture_etc1\n COMPRESSED_RGB_ETC1_WEBGL: 0x8d64,\n // WEBGL_compressed_texture_atc\n COMPRESSED_RGB_ATC_WEBGL: 0x8c92,\n COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL: 0x8c93,\n COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL: 0x87ee,\n // WEBGL_compressed_texture_astc\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 // EXT_texture_compression_rgtc\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 // WEBGL_compressed_texture_s3tc_srgb\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", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nconst BROWSER_PREFIXES = ['', 'WEBKIT_', 'MOZ_'];\nconst WEBGL_EXTENSIONS = {\n /* eslint-disable camelcase */\n WEBGL_compressed_texture_s3tc: 'dxt',\n WEBGL_compressed_texture_s3tc_srgb: 'dxt-srgb',\n WEBGL_compressed_texture_etc1: 'etc1',\n WEBGL_compressed_texture_etc: 'etc2',\n WEBGL_compressed_texture_pvrtc: 'pvrtc',\n WEBGL_compressed_texture_atc: 'atc',\n WEBGL_compressed_texture_astc: 'astc',\n EXT_texture_compression_rgtc: 'rgtc'\n /* eslint-enable camelcase */\n};\nlet formats = null;\n/**\n * Returns a list of formats.\n * Creates a temporary WebGLRenderingContext if none is provided.\n *\n * @param gl - Optional context.\n */\nexport function getSupportedGPUTextureFormats(gl) {\n if (!formats) {\n gl = gl || getWebGLContext() || undefined;\n formats = new Set();\n for (const prefix of BROWSER_PREFIXES) {\n for (const extension in WEBGL_EXTENSIONS) {\n if (gl && gl.getExtension(`${prefix}${extension}`)) {\n const gpuTextureFormat = WEBGL_EXTENSIONS[extension];\n formats.add(gpuTextureFormat);\n }\n }\n }\n }\n return formats;\n}\n/**\n * @returns {WebGLRenderingContext?}\n */\nfunction getWebGLContext() {\n try {\n const canvas = document.createElement('canvas');\n return canvas.getContext('webgl');\n }\n catch (error) {\n return null;\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { read } from 'ktx-parse';\nimport { extractMipmapImages } from \"../utils/extract-mipmap-images.js\";\nimport { mapVkFormatToWebGL } from \"../utils/ktx-format-helper.js\";\nconst KTX2_ID = [\n // '\u00B4', 'K', 'T', 'X', '2', '0', '\u00AA', '\\r', '\\n', '\\x1A', '\\n'\n 0xab, 0x4b, 0x54, 0x58, 0x20, 0x32, 0x30, 0xbb, 0x0d, 0x0a, 0x1a, 0x0a\n];\n// eslint-disable-next-line complexity\nexport function isKTX(data) {\n // const id = new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n const id = new Uint8Array(data);\n const notKTX = id.byteLength < KTX2_ID.length ||\n id[0] !== KTX2_ID[0] || // '\u00B4'\n id[1] !== KTX2_ID[1] || // 'K'\n id[2] !== KTX2_ID[2] || // 'T'\n id[3] !== KTX2_ID[3] || // 'X'\n id[4] !== KTX2_ID[4] || // ' '\n id[5] !== KTX2_ID[5] || // '2'\n id[6] !== KTX2_ID[6] || // '0'\n id[7] !== KTX2_ID[7] || // '\u00AA'\n id[8] !== KTX2_ID[8] || // '\\r'\n id[9] !== KTX2_ID[9] || // '\\n'\n id[10] !== KTX2_ID[10] || // '\\x1A'\n id[11] !== KTX2_ID[11]; // '\\n'\n return !notKTX;\n}\nexport function parseKTX(arrayBuffer) {\n const uint8Array = new Uint8Array(arrayBuffer);\n const ktx = read(uint8Array);\n const mipMapLevels = Math.max(1, ktx.levels.length);\n const width = ktx.pixelWidth;\n const height = ktx.pixelHeight;\n const internalFormat = mapVkFormatToWebGL(ktx.vkFormat);\n return extractMipmapImages(ktx.levels, {\n mipMapLevels,\n width,\n height,\n sizeFunction: (level) => level.uncompressedByteLength,\n internalFormat\n });\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n/**\n * Extract mipmap images from compressed texture buffer\n * @param data - binary data of compressed texture or Array of level objects\n * @param options.mipMapLevels - number of mipmap level inside image\n * @param options.width - width of 0 - level\n * @param options.height - height of 0 - level\n * @param options.sizeFunction - format-related function to calculate level size in bytes\n * @param options.internalFormat - WebGL compatible format code\n * @returns Array of the texture levels\n */\nexport function extractMipmapImages(data, options) {\n const images = new Array(options.mipMapLevels);\n let levelWidth = options.width;\n let levelHeight = options.height;\n let offset = 0;\n for (let i = 0; i < options.mipMapLevels; ++i) {\n // @ts-expect-error\n const levelSize = getLevelSize(options, levelWidth, levelHeight, data, i);\n // @ts-expect-error\n const levelData = getLevelData(data, i, offset, levelSize);\n images[i] = {\n compressed: true,\n format: options.internalFormat,\n data: levelData,\n width: levelWidth,\n height: levelHeight,\n levelSize\n };\n levelWidth = Math.max(1, levelWidth >> 1);\n levelHeight = Math.max(1, levelHeight >> 1);\n offset += levelSize;\n }\n return images;\n}\nfunction getLevelData(data, index, offset, levelSize) {\n if (!Array.isArray(data)) {\n return new Uint8Array(data.buffer, data.byteOffset + offset, levelSize);\n }\n return data[index].levelData;\n}\nfunction getLevelSize(options, levelWidth, levelHeight, data, index) {\n if (!Array.isArray(data)) {\n return options.sizeFunction(levelWidth, levelHeight);\n }\n return options.sizeFunction(data[index]);\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { GL_EXTENSIONS_CONSTANTS } from \"../gl-extensions.js\";\nconst VULKAN_TO_WEBGL_FORMAT_MAP = {\n 131: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT,\n 132: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB_S3TC_DXT1_EXT,\n 133: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT1_EXT,\n 134: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,\n 135: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT,\n 136: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,\n 137: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT,\n 138: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,\n 139: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RED_RGTC1_EXT,\n 140: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SIGNED_RED_RGTC1_EXT,\n 141: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RED_GREEN_RGTC2_EXT,\n 142: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT,\n 147: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_ETC2,\n 148: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ETC2,\n 149: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,\n 150: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,\n 151: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA8_ETC2_EAC,\n 152: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,\n 153: GL_EXTENSIONS_CONSTANTS.COMPRESSED_R11_EAC,\n 154: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SIGNED_R11_EAC,\n 155: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RG11_EAC,\n 156: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SIGNED_RG11_EAC,\n // @ts-ignore\n 157: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4x4_KHR,\n // @ts-ignore\n 158: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,\n // @ts-ignore\n 159: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5x4_KHR,\n // @ts-ignore\n 160: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR,\n // @ts-ignore\n 161: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5x5_KHR,\n // @ts-ignore\n 162: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,\n // @ts-ignore\n 163: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6x5_KHR,\n // @ts-ignore\n 164: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,\n // @ts-ignore\n 165: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6x6_KHR,\n // @ts-ignore\n 166: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,\n // @ts-ignore\n 167: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x5_KHR,\n // @ts-ignore\n 168: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,\n // @ts-ignore\n 169: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x6_KHR,\n // @ts-ignore\n 170: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,\n // @ts-ignore\n 171: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x8_KHR,\n // @ts-ignore\n 172: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,\n // @ts-ignore\n 173: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x5_KHR,\n // @ts-ignore\n 174: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,\n // @ts-ignore\n 175: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x6_KHR,\n // @ts-ignore\n 176: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,\n // @ts-ignore\n 177: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x8_KHR,\n // @ts-ignore\n 178: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,\n // @ts-ignore\n 179: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x10_KHR,\n // @ts-ignore\n 180: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,\n // @ts-ignore\n 181: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12x10_KHR,\n // @ts-ignore\n 182: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,\n // @ts-ignore\n 183: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12x12_KHR,\n // @ts-ignore\n 184: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR,\n 1000054000: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,\n 1000054001: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,\n // @ts-ignore\n 1000066000: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4x4_KHR,\n // @ts-ignore\n 1000066001: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5x4_KHR,\n // @ts-ignore\n 1000066002: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5x5_KHR,\n // @ts-ignore\n 1000066003: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6x5_KHR,\n // @ts-ignore\n 1000066004: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6x6_KHR,\n // @ts-ignore\n 1000066005: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x5_KHR,\n // @ts-ignore\n 1000066006: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x6_KHR,\n // @ts-ignore\n 1000066007: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x8_KHR,\n // @ts-ignore\n 1000066008: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x5_KHR,\n // @ts-ignore\n 1000066009: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x6_KHR,\n // @ts-ignore\n 1000066010: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x8_KHR,\n // @ts-ignore\n 1000066011: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x10_KHR,\n // @ts-ignore\n 1000066012: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12x10_KHR,\n // @ts-ignore\n 1000066013: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12x12_KHR\n};\n/**\n * Returns WebGl format based on Vulkan format\n * Vulkan to WebGl format mapping provided here http://github.khronos.org/KTX-Specification/#formatMapping\n * Vulkan name to format number mapping provided here: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFormat.html\n * @param vkFormat\n * @returns WebGL / OpenGL constant\n */\nexport function mapVkFormatToWebGL(vkFormat) {\n return VULKAN_TO_WEBGL_FORMAT_MAP[vkFormat];\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { loadBasisEncoderModule, loadBasisTranscoderModule } from \"./basis-module-loader.js\";\nimport { GL_EXTENSIONS_CONSTANTS } from \"../gl-extensions.js\";\nimport { getSupportedGPUTextureFormats } from \"../utils/texture-formats.js\";\nimport { isKTX } from \"./parse-ktx.js\";\nconst OutputFormat = {\n etc1: {\n basisFormat: 0,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ETC1_WEBGL\n },\n etc2: { basisFormat: 1, compressed: true },\n bc1: {\n basisFormat: 2,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT\n },\n bc3: {\n basisFormat: 3,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT\n },\n bc4: { basisFormat: 4, compressed: true },\n bc5: { basisFormat: 5, compressed: true },\n 'bc7-m6-opaque-only': { basisFormat: 6, compressed: true },\n 'bc7-m5': { basisFormat: 7, compressed: true },\n 'pvrtc1-4-rgb': {\n basisFormat: 8,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_4BPPV1_IMG\n },\n 'pvrtc1-4-rgba': {\n basisFormat: 9,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG\n },\n 'astc-4x4': {\n basisFormat: 10,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR\n },\n 'atc-rgb': { basisFormat: 11, compressed: true },\n 'atc-rgba-interpolated-alpha': { basisFormat: 12, compressed: true },\n rgba32: { basisFormat: 13, compressed: false },\n rgb565: { basisFormat: 14, compressed: false },\n bgr565: { basisFormat: 15, compressed: false },\n rgba4444: { basisFormat: 16, compressed: false }\n};\n/**\n * 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, options) {\n if (options.basis.containerFormat === 'auto') {\n if (isKTX(data)) {\n const fileConstructors = await loadBasisEncoderModule(options);\n return parseKTX2File(fileConstructors.KTX2File, data, options);\n }\n const { BasisFile } = await 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 * Parse *.basis file data\n * @param BasisFile - initialized transcoder module\n * @param data\n * @param options\n * @returns compressed texture data\n */\nfunction parseBasisFile(BasisFile, data, options) {\n const basisFile = new BasisFile(new Uint8Array(data));\n try {\n if (!basisFile.startTranscoding()) {\n throw new Error('Failed to start basis transcoding');\n }\n const imageCount = basisFile.getNumImages();\n const images = [];\n for (let imageIndex = 0; imageIndex < imageCount; imageIndex++) {\n const levelsCount = basisFile.getNumLevels(imageIndex);\n const levels = [];\n for (let levelIndex = 0; levelIndex < levelsCount; levelIndex++) {\n levels.push(transcodeImage(basisFile, imageIndex, levelIndex, options));\n }\n images.push(levels);\n }\n return images;\n }\n finally {\n basisFile.close();\n basisFile.delete();\n }\n}\n/**\n * Parse the particular level image of a basis file\n * @param basisFile\n * @param imageIndex\n * @param levelIndex\n * @param options\n * @returns compressed texture data\n */\nfunction transcodeImage(basisFile, imageIndex, levelIndex, options) {\n const width = basisFile.getImageWidth(imageIndex, levelIndex);\n const height = basisFile.getImageHeight(imageIndex, levelIndex);\n // See https://github.com/BinomialLLC/basis_universal/pull/83\n const hasAlpha = basisFile.getHasAlpha( /* imageIndex, levelIndex */);\n // Check options for output format etc\n const { compressed, format, basisFormat } = getBasisOptions(options, hasAlpha);\n const decodedSize = basisFile.getImageTranscodedSizeInBytes(imageIndex, levelIndex, basisFormat);\n const decodedData = new Uint8Array(decodedSize);\n if (!basisFile.transcodeImage(decodedData, imageIndex, levelIndex, basisFormat, 0, 0)) {\n throw new Error('failed to start Basis transcoding');\n }\n return {\n // standard loaders.gl image category payload\n width,\n height,\n data: decodedData,\n compressed,\n format,\n // Additional fields\n // Add levelSize field.\n hasAlpha\n };\n}\n/**\n * Parse *.ktx2 file data\n * @param KTX2File\n * @param data\n * @param options\n * @returns compressed texture data\n */\nfunction parseKTX2File(KTX2File, data, options) {\n const ktx2File = new KTX2File(new Uint8Array(data));\n try {\n if (!ktx2File.startTranscoding()) {\n throw new Error('failed to start KTX2 transcoding');\n }\n const levelsCount = ktx2File.getLevels();\n const levels = [];\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 return [levels];\n }\n finally {\n ktx2File.close();\n ktx2File.delete();\n }\n}\n/**\n * Parse the particular level image of a ktx2 file\n * @param ktx2File\n * @param levelIndex\n * @param options\n * @returns\n */\nfunction transcodeKTX2Image(ktx2File, levelIndex, options) {\n const { alphaFlag, height, width } = ktx2File.getImageLevelInfo(levelIndex, 0, 0);\n // Check options for output format etc\n const { compressed, format, basisFormat } = getBasisOptions(options, alphaFlag);\n const decodedSize = ktx2File.getImageTranscodedSizeInBytes(levelIndex, 0 /* layerIndex */, 0 /* faceIndex */, basisFormat);\n const decodedData = new Uint8Array(decodedSize);\n if (!ktx2File.transcodeImage(decodedData, levelIndex, 0 /* layerIndex */, 0 /* faceIndex */, basisFormat, 0, -1 /* channel0 */, -1 /* channel1 */)) {\n throw new Error('Failed to transcode KTX2 image');\n }\n return {\n // standard loaders.gl image category payload\n width,\n height,\n data: decodedData,\n compressed,\n // Additional fields\n levelSize: decodedSize,\n hasAlpha: alphaFlag,\n format\n };\n}\n/**\n * Get BasisFormat by loader format option\n * @param options\n * @param hasAlpha\n * @returns BasisFormat data\n */\nfunction getBasisOptions(options, hasAlpha) {\n let format = options && options.basis && options.basis.format;\n if (format === 'auto') {\n format = selectSupportedBasisFormat();\n }\n if (typeof format === 'object') {\n format = hasAlpha ? format.alpha : format.noAlpha;\n }\n format = format.toLowerCase();\n return OutputFormat[format];\n}\n/**\n * Select transcode format from the list of supported formats\n * @returns key for OutputFormat map\n */\nexport function selectSupportedBasisFormat() {\n const supportedFormats = getSupportedGPUTextureFormats();\n if (supportedFormats.has('astc')) {\n return 'astc-4x4';\n }\n else if (supportedFormats.has('dxt')) {\n return {\n alpha: 'bc3',\n noAlpha: 'bc1'\n };\n }\n else if (supportedFormats.has('pvrtc')) {\n return {\n alpha: 'pvrtc1-4-rgba',\n noAlpha: 'pvrtc1-4-rgb'\n };\n }\n else if (supportedFormats.has('etc1')) {\n return 'etc1';\n }\n else if (supportedFormats.has('etc2')) {\n return 'etc2';\n }\n return 'rgb565';\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { VERSION } from \"./lib/utils/version.js\";\nimport parseBasis from \"./lib/parsers/parse-basis.js\";\n/**\n * Worker loader for Basis super compressed textures\n */\nexport const BasisWorkerLoader = {\n dataType: null,\n batchType: null,\n name: 'Basis',\n id: 'basis',\n module: 'textures',\n version: VERSION,\n worker: true,\n extensions: ['basis', 'ktx2'],\n mimeTypes: ['application/octet-stream', 'image/ktx2'],\n tests: ['sB'],\n binary: true,\n options: {\n basis: {\n format: 'auto',\n libraryPath: 'libs/',\n containerFormat: 'auto',\n module: 'transcoder'\n }\n }\n};\n/**\n * Loader for Basis super compressed textures\n */\nexport const BasisLoader = {\n ...BasisWorkerLoader,\n parse: parseBasis\n};\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { assert } from '@loaders.gl/loader-utils';\nimport { GL_EXTENSIONS_CONSTANTS } from \"../gl-extensions.js\";\nimport { extractMipmapImages } from \"../utils/extract-mipmap-images.js\";\nconst DDS_CONSTANTS = {\n MAGIC_NUMBER: 0x20534444,\n HEADER_LENGTH: 31,\n MAGIC_NUMBER_INDEX: 0,\n HEADER_SIZE_INDEX: 1,\n HEADER_FLAGS_INDEX: 2,\n HEADER_HEIGHT_INDEX: 3,\n HEADER_WIDTH_INDEX: 4,\n MIPMAPCOUNT_INDEX: 7,\n HEADER_PF_FLAGS_INDEX: 20,\n HEADER_PF_FOURCC_INDEX: 21,\n DDSD_MIPMAPCOUNT: 0x20000,\n DDPF_FOURCC: 0x4\n};\nconst DDS_PIXEL_FORMATS = {\n DXT1: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT,\n DXT3: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT,\n DXT5: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT,\n 'ATC ': GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ATC_WEBGL,\n ATCA: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL,\n ATCI: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL\n};\nconst getATCLevelSize = getDxt1LevelSize;\nconst getATCALevelSize = getDxtXLevelSize;\nconst getATCILevelSize = getDxtXLevelSize;\nconst DDS_SIZE_FUNCTIONS = {\n DXT1: getDxt1LevelSize,\n DXT3: getDxtXLevelSize,\n DXT5: getDxtXLevelSize,\n 'ATC ': getATCLevelSize,\n ATCA: getATCALevelSize,\n ATCI: getATCILevelSize\n};\n/**\n * Check if data is in \"DDS\" format by its magic number\n * @param data - binary data of compressed texture\n * @returns true - data in \"DDS\" format, else - false\n */\nexport function isDDS(data) {\n const header = new Uint32Array(data, 0, DDS_CONSTANTS.HEADER_LENGTH);\n const magic = header[DDS_CONSTANTS.MAGIC_NUMBER_INDEX];\n return magic === DDS_CONSTANTS.MAGIC_NUMBER;\n}\n/**\n * Parse texture data as \"DDS\" format\n * @param data - binary data of compressed texture\n * @returns Array of the texture levels\n */\nexport function parseDDS(data) {\n const header = new Int32Array(data, 0, DDS_CONSTANTS.HEADER_LENGTH);\n const pixelFormatNumber = header[DDS_CONSTANTS.HEADER_PF_FOURCC_INDEX];\n assert(Boolean(header[DDS_CONSTANTS.HEADER_PF_FLAGS_INDEX] & DDS_CONSTANTS.DDPF_FOURCC), 'DDS: Unsupported format, must contain a FourCC code');\n const fourCC = int32ToFourCC(pixelFormatNumber);\n const internalFormat = DDS_PIXEL_FORMATS[fourCC];\n const sizeFunction = DDS_SIZE_FUNCTIONS[fourCC];\n assert(internalFormat && sizeFunction, `DDS: Unknown pixel format ${pixelFormatNumber}`);\n let mipMapLevels = 1;\n if (header[DDS_CONSTANTS.HEADER_FLAGS_INDEX] & DDS_CONSTANTS.DDSD_MIPMAPCOUNT) {\n mipMapLevels = Math.max(1, header[DDS_CONSTANTS.MIPMAPCOUNT_INDEX]);\n }\n const width = header[DDS_CONSTANTS.HEADER_WIDTH_INDEX];\n const height = header[DDS_CONSTANTS.HEADER_HEIGHT_INDEX];\n const dataOffset = header[DDS_CONSTANTS.HEADER_SIZE_INDEX] + 4;\n const image = new Uint8Array(data, dataOffset);\n return extractMipmapImages(image, {\n mipMapLevels,\n width,\n height,\n sizeFunction,\n internalFormat\n });\n}\n/**\n * DXT1 applicable function to calculate level size\n * @param width - level width\n * @param height - level height\n * @returns level size in bytes\n */\nexport function getDxt1LevelSize(width, height) {\n return ((width + 3) >> 2) * ((height + 3) >> 2) * 8;\n}\n/**\n * DXT3 & DXT5 applicable function to calculate level size\n * @param width - level width\n * @param height - level height\n * @returns level size in bytes\n */\nexport function getDxtXLevelSize(width, height) {\n return ((width + 3) >> 2) * ((height + 3) >> 2) * 16;\n}\n/**\n * Convert every byte of Int32 value to char\n * @param value - Int32 number\n * @returns string of 4 characters\n */\nfunction int32ToFourCC(value) {\n return String.fromCharCode(value & 0xff, (value >> 8) & 0xff, (value >> 16) & 0xff, (value >> 24) & 0xff);\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { GL_EXTENSIONS_CONSTANTS } from \"../gl-extensions.js\";\nimport { extractMipmapImages } from \"../utils/extract-mipmap-images.js\";\nconst PVR_CONSTANTS = {\n MAGIC_NUMBER: 0x03525650,\n MAGIC_NUMBER_EXTRA: 0x50565203,\n HEADER_LENGTH: 13,\n HEADER_SIZE: 52,\n MAGIC_NUMBER_INDEX: 0,\n PIXEL_FORMAT_INDEX: 2,\n COLOUR_SPACE_INDEX: 4,\n HEIGHT_INDEX: 6,\n WIDTH_INDEX: 7,\n MIPMAPCOUNT_INDEX: 11,\n METADATA_SIZE_INDEX: 12\n};\nconst PVR_PIXEL_FORMATS = {\n 0: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_2BPPV1_IMG],\n 1: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG],\n 2: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_4BPPV1_IMG],\n 3: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG],\n 6: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ETC1_WEBGL],\n 7: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT],\n 9: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT],\n 11: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT],\n 22: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_ETC2],\n 23: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA8_ETC2_EAC],\n 24: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2],\n 25: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_R11_EAC],\n 26: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RG11_EAC],\n 27: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR\n ],\n 28: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X4_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR\n ],\n 29: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X5_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR\n ],\n 30: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X5_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR\n ],\n 31: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X6_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR\n ],\n 32: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X5_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR\n ],\n 33: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X6_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR\n ],\n 34: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X8_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR\n ],\n 35: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X5_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR\n ],\n 36: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X6_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR\n ],\n 37: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X8_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR\n ],\n 38: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X10_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR\n ],\n 39: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X10_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR\n ],\n 40: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X12_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR\n ]\n};\nconst PVR_SIZE_FUNCTIONS = {\n 0: pvrtc2bppSize,\n 1: pvrtc2bppSize,\n 2: pvrtc4bppSize,\n 3: pvrtc4bppSize,\n 6: dxtEtcSmallSize,\n 7: dxtEtcSmallSize,\n 9: dxtEtcAstcBigSize,\n 11: dxtEtcAstcBigSize,\n 22: dxtEtcSmallSize,\n 23: dxtEtcAstcBigSize,\n 24: dxtEtcSmallSize,\n 25: dxtEtcSmallSize,\n 26: dxtEtcAstcBigSize,\n 27: dxtEtcAstcBigSize,\n 28: atc5x4Size,\n 29: atc5x5Size,\n 30: atc6x5Size,\n 31: atc6x6Size,\n 32: atc8x5Size,\n 33: atc8x6Size,\n 34: atc8x8Size,\n 35: atc10x5Size,\n 36: atc10x6Size,\n 37: atc10x8Size,\n 38: atc10x10Size,\n 39: atc12x10Size,\n 40: atc12x12Size\n};\n/**\n * Check if data is in \"PVR\" format by its magic number\n * @param data - binary data of compressed texture\n * @returns true - data in \"PVR\" format, else - false\n */\nexport function isPVR(data) {\n const header = new Uint32Array(data, 0, PVR_CONSTANTS.HEADER_LENGTH);\n const version = header[PVR_CONSTANTS.MAGIC_NUMBER_INDEX];\n return version === PVR_CONSTANTS.MAGIC_NUMBER || version === PVR_CONSTANTS.MAGIC_NUMBER_EXTRA;\n}\n/**\n * Parse texture data as \"PVR\" format\n * @param data - binary data of compressed texture\n * @returns Array of the texture levels\n * @see http://cdn.imgtec.com/sdk-documentation/PVR+File+Format.Specification.pdf\n */\nexport function parsePVR(data) {\n const header = new Uint32Array(data, 0, PVR_CONSTANTS.HEADER_LENGTH);\n const pvrFormat = header[PVR_CONSTANTS.PIXEL_FORMAT_INDEX];\n const colourSpace = header[PVR_CONSTANTS.COLOUR_SPACE_INDEX];\n const pixelFormats = PVR_PIXEL_FORMATS[pvrFormat] || [];\n const internalFormat = pixelFormats.length > 1 && colourSpace ? pixelFormats[1] : pixelFormats[0];\n const sizeFunction = PVR_SIZE_FUNCTIONS[pvrFormat];\n const mipMapLevels = header[PVR_CONSTANTS.MIPMAPCOUNT_INDEX];\n const width = header[PVR_CONSTANTS.WIDTH_INDEX];\n const height = header[PVR_CONSTANTS.HEIGHT_INDEX];\n const dataOffset = PVR_CONSTANTS.HEADER_SIZE + header[PVR_CONSTANTS.METADATA_SIZE_INDEX];\n const image = new Uint8Array(data, dataOffset);\n return extractMipmapImages(image, {\n mipMapLevels,\n width,\n height,\n sizeFunction,\n internalFormat\n });\n}\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_pvrtc/\nfunction pvrtc2bppSize(width, height) {\n width = Math.max(width, 16);\n height = Math.max(height, 8);\n return (width * height) / 4;\n}\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_pvrtc/\nfunction pvrtc4bppSize(width, height) {\n width = Math.max(width, 8);\n height = Math.max(height, 8);\n return (width * height) / 2;\n}\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_s3tc/\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_etc/\n// Size for:\n// COMPRESSED_RGB_S3TC_DXT1_EXT\n// COMPRESSED_R11_EAC\n// COMPRESSED_SIGNED_R11_EAC\n// COMPRESSED_RGB8_ETC2\n// COMPRESSED_SRGB8_ETC2\n// COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2\n// COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2\nfunction dxtEtcSmallSize(width, height) {\n return Math.floor((width + 3) / 4) * Math.floor((height + 3) / 4) * 8;\n}\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_s3tc/\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_etc/\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\n// Size for:\n// COMPRESSED_RGBA_S3TC_DXT3_EXT\n// COMPRESSED_RGBA_S3TC_DXT5_EXT\n// COMPRESSED_RG11_EAC\n// COMPRESSED_SIGNED_RG11_EAC\n// COMPRESSED_RGBA8_ETC2_EAC\n// COMPRESSED_SRGB8_ALPHA8_ETC2_EAC\n// COMPRESSED_RGBA_ASTC_4x4_KHR\nfunction dxtEtcAstcBigSize(width, height) {\n return Math.floor((width + 3) / 4) * Math.floor((height + 3) / 4) * 16;\n}\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc5x4Size(width, height) {\n return Math.floor((width + 4) / 5) * Math.floor((height + 3) / 4) * 16;\n}\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc5x5Size(width, height) {\n return Math.floor((width + 4) / 5) * Math.floor((height + 4) / 5) * 16;\n}\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc6x5Size(width, height) {\n return Math.floor((width + 5) / 6) * Math.floor((height + 4) / 5) * 16;\n}\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc6x6Size(width, height) {\n return Math.floor((width + 5) / 6) * Math.floor((height + 5) / 6) * 16;\n}\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc8x5Size(width, height) {\n return Math.floor((width + 7) / 8) * Math.floor((height + 4) / 5) * 16;\n}\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc8x6Size(width, height) {\n return Math.floor((width + 7) / 8) * Math.floor((height + 5) / 6) * 16;\n}\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc8x8Size(width, height) {\n return Math.floor((width + 7) / 8) * Math.floor((height + 7) / 8) * 16;\n}\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc10x5Size(width, height) {\n return Math.floor((width + 9) / 10) * Math.floor((height + 4) / 5) * 16;\n}\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc10x6Size(width, height) {\n return Math.floor((width + 9) / 10) * Math.floor((height + 5) / 6) * 16;\n}\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc10x8Size(width, height) {\n return Math.floor((width + 9) / 10) * Math.floor((height + 7) / 8) * 16;\n}\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc10x10Size(width, height) {\n return Math.floor((width + 9) / 10) * Math.floor((height + 9) / 10) * 16;\n}\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc12x10Size(width, height) {\n return Math.floor((width + 11) / 12) * Math.floor((height + 9) / 10) * 16;\n}\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc12x12Size(width, height) {\n return Math.floor((width + 11) / 12) * Math.floor((height + 11) / 12) * 16;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { isKTX, parseKTX } from \"./parse-ktx.js\";\nimport { isDDS, parseDDS } from \"./parse-dds.js\";\nimport { isPVR, parsePVR } from \"./parse-pvr.js\";\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) {\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", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { VERSION } from \"./lib/utils/version.js\";\nimport { parseCompressedTexture } from \"./lib/parsers/parse-compressed-texture.js\";\nimport parseBasis from \"./lib/parsers/parse-basis.js\";\n/**\n * Worker Loader for KTX, DDS, and PVR texture container formats\n */\nexport const CompressedTextureWorkerLoader = {\n dataType: null,\n batchType: null,\n name: 'Texture Containers',\n id: 'compressed-texture',\n module: 'textures',\n version: VERSION,\n worker: true,\n extensions: [\n 'ktx',\n 'ktx2',\n 'dds', // WEBGL_compressed_texture_s3tc, WEBGL_compressed_texture_atc\n 'pvr' // WEBGL_compressed_texture_pvrtc\n ],\n mimeTypes: [\n 'image/ktx2',\n 'image/ktx',\n 'image/vnd-ms.dds',\n 'image/x-dds',\n 'application/octet-stream'\n ],\n binary: true,\n options: {\n 'compressed-texture': {\n libraryPath: 'libs/',\n useBasis: false\n }\n }\n};\n/**\n * Loader for KTX, DDS, and PVR texture container formats\n */\nexport const CompressedTextureLoader = {\n ...CompressedTextureWorkerLoader,\n parse: async (arrayBuffer, options) => {\n if (options?.['compressed-texture']?.useBasis) {\n // @ts-expect-error TODO not allowed to modify inputs\n options.basis = {\n format: {\n alpha: 'BC3',\n noAlpha: 'BC1'\n },\n // @ts-expect-error TODO not allowed to modify inputs\n ...options.basis,\n containerFormat: 'ktx2',\n module: 'encoder'\n };\n const result = await parseBasis(arrayBuffer, options);\n return result[0];\n }\n return parseCompressedTexture(arrayBuffer);\n }\n};\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { VERSION } from \"./lib/utils/version.js\";\n/**\n * Worker loader for the Crunch compressed texture container format\n * @note We avoid bundling crunch - it is a rare format and large lib, so we only offer worker loader\n */\nexport const CrunchLoader = {\n dataType: null,\n batchType: null,\n id: 'crunch',\n name: 'Crunch',\n module: 'textures',\n version: VERSION,\n worker: true,\n extensions: ['crn'],\n mimeTypes: ['image/crn', 'image/x-crn', 'application/octet-stream'],\n binary: true,\n options: {\n crunch: {\n libraryPath: 'libs/'\n }\n }\n};\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nconst a = new Uint32Array([0x12345678]);\nconst b = new Uint8Array(a.buffer, a.byteOffset, a.byteLength);\nconst isLittleEndian = !(b[0] === 0x12);\nconst LITTLE_ENDIAN_OS = isLittleEndian;\n/**\n * The basic string format consists of 3 characters:\n * 1. a character describing the byteorder of the data (<: little-endian, >: big-endian, |: not-relevant)\n * 2. a character code giving the basic type of the array\n * 3. an integer providing the number of bytes the type uses.\n * https://numpy.org/doc/stable/reference/arrays.interface.html\n *\n * Here I only include the second and third characters, and check endianness separately\n */\nconst DTYPES = {\n u1: Uint8Array,\n i1: Int8Array,\n u2: Uint16Array,\n i2: Int16Array,\n u4: Uint32Array,\n i4: Int32Array,\n f4: Float32Array,\n f8: Float64Array\n};\nexport function parseNPY(arrayBuffer, options) {\n const view = new DataView(arrayBuffer);\n const { header, headerEndOffset } = parseHeader(view);\n const numpyType = header.descr;\n const ArrayType = DTYPES[numpyType.slice(1, 3)];\n if (!ArrayType) {\n throw new Error(`Unimplemented type ${numpyType}`);\n }\n const nArrayElements = header.shape?.reduce((a, b) => a * b);\n const arrayByteLength = nArrayElements * ArrayType.BYTES_PER_ELEMENT;\n if (arrayBuffer.byteLength < headerEndOffset + arrayByteLength) {\n throw new Error('Buffer overflow');\n }\n const data = new ArrayType(arrayBuffer.slice(headerEndOffset, headerEndOffset + arrayByteLength));\n // Swap endianness if needed\n if ((numpyType[0] === '>' && LITTLE_ENDIAN_OS) || (numpyType[0] === '<' && !LITTLE_ENDIAN_OS)) {\n throw new Error('Incorrect endianness');\n }\n return {\n data,\n header\n };\n}\n/**\n * Parse NPY header\n *\n * @param view\n * @return\n */\nfunction parseHeader(view) {\n const majorVersion = view.getUint8(6);\n // const minorVersion = view.getUint8(7);\n let offset = 8;\n let headerLength;\n if (majorVersion >= 2) {\n headerLength = view.getUint32(offset, true);\n offset += 4;\n }\n else {\n headerLength = view.getUint16(offset, true);\n offset += 2;\n }\n const encoding = majorVersion <= 2 ? 'latin1' : 'utf-8';\n const decoder = new TextDecoder(encoding);\n const headerArray = new Uint8Array(view.buffer, offset, headerLength);\n const headerText = decoder.decode(headerArray);\n offset += headerLength;\n const header = JSON.parse(headerText\n .replace(/'/g, '\"')\n .replace('False', 'false')\n .replace('(', '[')\n .replace(/,*\\),*/g, ']'));\n return { header, headerEndOffset: offset };\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { VERSION } from \"./lib/utils/version.js\";\nimport { parseNPY } from \"./lib/parsers/parse-npy.js\";\n// \\x93NUMPY\nconst NPY_MAGIC_NUMBER = new Uint8Array([147, 78, 85, 77, 80, 89]);\n/**\n * Worker loader for numpy \"tiles\"\n */\nexport const NPYWorkerLoader = {\n dataType: null,\n batchType: null,\n name: 'NPY',\n id: 'npy',\n module: 'textures',\n version: VERSION,\n worker: true,\n extensions: ['npy'],\n mimeTypes: [],\n tests: [NPY_MAGIC_NUMBER.buffer],\n options: {\n npy: {}\n }\n};\n/**\n * Loader for numpy \"tiles\"\n */\nexport const NPYLoader = {\n ...NPYWorkerLoader,\n parseSync: parseNPY,\n parse: async (arrayBuffer, options) => parseNPY(arrayBuffer, options)\n};\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n// @ts-nocheck\nimport { getJSModuleOrNull, registerJSModules } from '@loaders.gl/loader-utils';\nimport { loadLibrary } from '@loaders.gl/worker-utils';\nexport const CRUNCH_EXTERNAL_LIBRARIES = {\n /** Crunch decoder library. It is used as dynamically imported script */\n DECODER: 'crunch.js'\n};\n/**\n * Load crunch decoder module\n * @param options - loader options\n * @returns Promise of module object\n */\nexport async function loadCrunchModule(options) {\n registerJSModules(options.modules);\n const crunch = getJSModuleOrNull('crunch');\n if (crunch) {\n return crunch;\n }\n return loadCrunch(options);\n}\nlet crunchModule;\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 let loadCrunchDecoder = await loadLibrary(CRUNCH_EXTERNAL_LIBRARIES.DECODER, 'textures', options);\n // Depends on how import happened...\n // @ts-ignore TS2339: Property does not exist on type\n loadCrunchDecoder ||= globalThis.LoadCrunchDecoder;\n crunchModule = loadCrunchDecoder();\n return crunchModule;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { ChildProcessProxy } from '@loaders.gl/worker-utils';\n/*\n * @see https://github.com/TimvanScherpenzeel/texture-compressor\n */\nexport async function encodeImageURLToCompressedTextureURL(inputUrl, outputUrl, options) {\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", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { VERSION } from \"./lib/utils/version.js\";\nimport { encodeImageURLToCompressedTextureURL } from \"./lib/encoders/encode-texture.js\";\n/**\n * DDS Texture Container Exporter\n */\nexport const CompressedTextureWriter = {\n name: 'DDS Texture Container',\n id: 'dds',\n module: 'textures',\n version: VERSION,\n extensions: ['dds'],\n options: {\n texture: {\n format: 'auto',\n compression: 'auto',\n quality: 'auto',\n mipmap: false,\n flipY: false,\n toolFlags: ''\n }\n },\n encodeURLtoURL: encodeImageURLToCompressedTextureURL,\n encode() {\n throw new Error('Not implemented');\n }\n};\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { loadBasisEncoderModule } from \"../parsers/basis-module-loader.js\";\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(image, options = {}) {\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?.['ktx2-basis-writer'] || {};\n const { BasisEncoder } = await loadBasisEncoderModule(options);\n const basisEncoder = new BasisEncoder();\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 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 const numOutputBytes = basisEncoder.encode(basisFileData);\n const actualKTX2FileData = basisFileData.subarray(0, numOutputBytes).buffer;\n return actualKTX2FileData;\n }\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 }\n finally {\n basisEncoder.delete();\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { VERSION } from \"./lib/utils/version.js\";\nimport { encodeKTX2BasisTexture } from \"./lib/encoders/encode-ktx2-basis-texture.js\";\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 extensions: ['ktx2'],\n options: {\n ['ktx2-basis-writer']: {\n useSRGB: false,\n qualityLevel: 10,\n encodeUASTC: false,\n mipmaps: false\n }\n },\n encode: encodeKTX2BasisTexture\n};\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { assert } from '@loaders.gl/loader-utils';\nimport { ImageLoader, getImageSize } from '@loaders.gl/images';\nimport { generateUrl } from \"./generate-url.js\";\nimport { deepLoad, shallowLoad } from \"./deep-load.js\";\nexport async function loadImageTexture(getUrl, options = {}) {\n const imageUrls = await getImageUrls(getUrl, options);\n return await deepLoad(imageUrls, ImageLoader.parse, options);\n}\nexport async function getImageUrls(getUrl, options, urlOptions = {}) {\n const mipLevels = (options && options.image && options.image.mipLevels) || 0;\n return mipLevels !== 0\n ? await getMipmappedImageUrls(getUrl, mipLevels, options, urlOptions)\n : generateUrl(getUrl, options, urlOptions);\n}\nasync function getMipmappedImageUrls(getUrl, mipLevels, options, urlOptions) {\n const urls = [];\n // If no mip levels supplied, we need to load the level 0 image and calculate based on size\n if (mipLevels === 'auto') {\n const url = generateUrl(getUrl, options, { ...urlOptions, lod: 0 });\n const image = await shallowLoad(url, ImageLoader.parse, options);\n const { width, height } = getImageSize(image);\n mipLevels = getMipLevels({ width, height });\n // TODO - push image and make `deepLoad` pass through non-url values, avoid loading twice?\n urls.push(url);\n }\n // We now know how many mipLevels we need, remaining image urls can now be constructed\n assert(mipLevels > 0);\n for (let mipLevel = urls.length; mipLevel < mipLevels; ++mipLevel) {\n const url = generateUrl(getUrl, options, { ...urlOptions, lod: mipLevel });\n urls.push(url);\n }\n return urls;\n}\n// Calculates number of mipmaps based on texture size (log2)\nexport function getMipLevels(size) {\n return 1 + Math.floor(Math.log2(Math.max(size.width, size.height)));\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { resolvePath } from '@loaders.gl/loader-utils';\n// Generate a url by calling getUrl with mix of options, applying options.baseUrl\nexport function generateUrl(getUrl, options, urlOptions) {\n // Get url\n let url = typeof getUrl === 'function' ? getUrl({ ...options, ...urlOptions }) : getUrl;\n // Apply options.baseUrl\n const baseUrl = options.baseUrl;\n if (baseUrl) {\n url = baseUrl[baseUrl.length - 1] === '/' ? `${baseUrl}${url}` : `${baseUrl}/${url}`;\n }\n return resolvePath(url);\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nconst isObject = (value) => value && typeof value === 'object';\n// Loads a deep structure of urls (objects and arrays of urls)\n// Returns an object with six key-value pairs containing the images (or image mip arrays)\n// for each cube face\nexport async function asyncDeepMap(tree, func, options = {}) {\n return await mapSubtree(tree, func, options);\n}\nexport async function mapSubtree(object, func, options) {\n if (Array.isArray(object)) {\n return await mapArray(object, func, options);\n }\n if (isObject(object)) {\n return await mapObject(object, func, options);\n }\n // TODO - ignore non-urls, non-arraybuffers?\n const url = object;\n return await func(url, options);\n}\n// HELPERS\nasync function mapObject(object, func, options) {\n const promises = [];\n const values = {};\n for (const key in object) {\n const url = object[key];\n const promise = mapSubtree(url, func, options).then((value) => {\n values[key] = value;\n });\n promises.push(promise);\n }\n await Promise.all(promises);\n return values;\n}\nasync function mapArray(urlArray, func, options = {}) {\n const promises = urlArray.map((url) => mapSubtree(url, func, options));\n return await Promise.all(promises);\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { asyncDeepMap } from \"./async-deep-map.js\";\nexport async function deepLoad(urlTree, load, options) {\n return await asyncDeepMap(urlTree, (url) => shallowLoad(url, load, options));\n}\nexport async function shallowLoad(url, load, options) {\n const response = await fetch(url, options.fetch);\n const arrayBuffer = await response.arrayBuffer();\n return await load(arrayBuffer, options);\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { ImageLoader } from '@loaders.gl/images';\nimport { getImageUrls } from \"./load-image.js\";\nimport { deepLoad } from \"./deep-load.js\";\nexport async function loadImageTextureArray(count, getUrl, options = {}) {\n const imageUrls = await getImageArrayUrls(count, getUrl, options);\n return await deepLoad(imageUrls, ImageLoader.parse, options);\n}\nexport async function getImageArrayUrls(count, getUrl, options = {}) {\n const promises = [];\n for (let index = 0; index < count; index++) {\n const promise = getImageUrls(getUrl, options, { index });\n promises.push(promise);\n }\n return await Promise.all(promises);\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { ImageLoader } from '@loaders.gl/images';\nimport { getImageUrls } from \"./load-image.js\";\nimport { deepLoad } from \"./deep-load.js\";\n// Returned map will be have keys corresponding to GL cubemap constants\nconst GL_TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515;\nconst GL_TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516;\nconst GL_TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517;\nconst GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518;\nconst GL_TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519;\nconst GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851a;\nconst CUBE_FACES = [\n { face: GL_TEXTURE_CUBE_MAP_POSITIVE_X, direction: 'right', axis: 'x', sign: 'positive' },\n { face: GL_TEXTURE_CUBE_MAP_NEGATIVE_X, direction: 'left', axis: 'x', sign: 'negative' },\n { face: GL_TEXTURE_CUBE_MAP_POSITIVE_Y, direction: 'top', axis: 'y', sign: 'positive' },\n { face: GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, direction: 'bottom', axis: 'y', sign: 'negative' },\n { face: GL_TEXTURE_CUBE_MAP_POSITIVE_Z, direction: 'front', axis: 'z', sign: 'positive' },\n { face: GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, direction: 'back', axis: 'z', sign: 'negative' }\n];\n// Returns an object with six key-value pairs containing the urls (or url mip arrays)\n// for each cube face\nexport async function getImageCubeUrls(getUrl, options) {\n // Calculate URLs\n const urls = {};\n const promises = [];\n let index = 0;\n for (let i = 0; i < CUBE_FACES.length; ++i) {\n const face = CUBE_FACES[index];\n const promise = getImageUrls(getUrl, options, { ...face, index: index++ }).then((url) => {\n urls[face.face] = url;\n });\n promises.push(promise);\n }\n await Promise.all(promises);\n return urls;\n}\n// Returns an object with six key-value pairs containing the images (or image mip arrays)\n// for each cube face\nexport async function loadImageTextureCube(getUrl, options = {}) {\n const urls = await getImageCubeUrls(getUrl, options);\n return (await deepLoad(urls, ImageLoader.parse, options));\n}\n"],
|
|
5
|
-
"mappings": "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,wBAAwB;AAAA,EAC7B,KAAK,wBAAwB;AAAA;AAAA,EAE7B,KAAK,wBAAwB;AAAA;AAAA,EAE7B,KAAK,wBAAwB;AAAA;AAAA,EAE7B,KAAK,wBAAwB;AAAA;AAAA,EAE7B,KAAK,wBAAwB;AAAA;AAAA,EAE7B,KAAK,wBAAwB;AAAA;AAAA,EAE7B,KAAK,wBAAwB;AAAA;AAAA,EAE7B,KAAK,wBAAwB;AAAA;AAAA,EAE7B,KAAK,wBAAwB;AAAA;AAAA,EAE7B,KAAK,wBAAwB;AAAA;AAAA,EAE7B,KAAK,wBAAwB;AAAA;AAAA,EAE7B,KAAK,wBAAwB;AAAA;AAAA,EAE7B,KAAK,wBAAwB;AAAA;AAAA,EAE7B,KAAK,wBAAwB;AAAA;AAAA,EAE7B,KAAK,wBAAwB;AAAA;AAAA,EAE7B,KAAK,wBAAwB;AAAA;AAAA,EAE7B,KAAK,wBAAwB;AAAA;AAAA,EAE7B,KAAK,wBAAwB;AAAA;AAAA,EAE7B,KAAK,wBAAwB;AAAA;AAAA,EAE7B,KAAK,wBAAwB;AAAA;AAAA,EAE7B,KAAK,wBAAwB;AAAA;AAAA,EAE7B,KAAK,wBAAwB;AAAA;AAAA,EAE7B,KAAK,wBAAwB;AAAA;AAAA,EAE7B,KAAK,wBAAwB;AAAA;AAAA,EAE7B,KAAK,wBAAwB;AAAA;AAAA,EAE7B,KAAK,wBAAwB;AAAA;AAAA,EAE7B,KAAK,wBAAwB;AAAA;AAAA,EAE7B,KAAK,wBAAwB;AAAA;AAAA,EAE7B,KAAK,wBAAwB;AAAA,EAC7B,WAAY,wBAAwB;AAAA,EACpC,YAAY,wBAAwB;AAAA;AAAA,EAEpC,WAAY,wBAAwB;AAAA;AAAA,EAEpC,YAAY,wBAAwB;AAAA;AAAA,EAEpC,YAAY,wBAAwB;AAAA;AAAA,EAEpC,YAAY,wBAAwB;AAAA;AAAA,EAEpC,YAAY,wBAAwB;AAAA;AAAA,EAEpC,YAAY,wBAAwB;AAAA;AAAA,EAEpC,YAAY,wBAAwB;AAAA;AAAA,EAEpC,YAAY,wBAAwB;AAAA;AAAA,EAEpC,YAAY,wBAAwB;AAAA;AAAA,EAEpC,YAAY,wBAAwB;AAAA;AAAA,EAEpC,YAAY,wBAAwB;AAAA;AAAA,EAEpC,YAAY,wBAAwB;AAA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",
|
|
4
|
+
"sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { VERSION } from \"./lib/utils/version.js\";\nexport { BasisLoader, BasisWorkerLoader } from \"./basis-loader.js\";\nexport { CompressedTextureLoader, CompressedTextureWorkerLoader } from \"./compressed-texture-loader.js\";\nexport { CrunchLoader } from \"./crunch-loader.js\";\nexport { NPYLoader, NPYWorkerLoader } from \"./npy-loader.js\";\n// Module constants\nexport { BASIS_EXTERNAL_LIBRARIES } from \"./lib/parsers/basis-module-loader.js\";\nexport { CRUNCH_EXTERNAL_LIBRARIES } from \"./lib/parsers/crunch-module-loader.js\";\n// Writers\nexport { CompressedTextureWriter } from \"./compressed-texture-writer.js\";\nexport { KTX2BasisWriter } from \"./ktx2-basis-writer.js\";\nexport const KTX2BasisWriterWorker = {\n name: 'Basis Universal Supercompressed GPU Texture',\n id: 'ktx2-basis-writer',\n module: 'textures',\n version: VERSION,\n extensions: ['ktx2'],\n worker: true,\n options: {\n useSRGB: false,\n qualityLevel: 10,\n encodeUASTC: false,\n mipmaps: false\n }\n};\n// Texture Loading API\nexport { loadImageTexture } from \"./lib/texture-api/load-image.js\";\nexport { loadImageTextureArray } from \"./lib/texture-api/load-image-array.js\";\nexport { loadImageTextureCube } from \"./lib/texture-api/load-image-cube.js\";\n// Utilities\nexport { GL_EXTENSIONS_CONSTANTS } from \"./lib/gl-extensions.js\";\nexport { selectSupportedBasisFormat } from \"./lib/parsers/parse-basis.js\";\nexport { getSupportedGPUTextureFormats } from \"./lib/utils/texture-formats.js\";\n// DEPRECATED\n// @deprecated\nexport { CrunchLoader as CrunchWorkerLoader } from \"./crunch-loader.js\";\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n// Version constant cannot be imported, it needs to correspond to the build version of **this** module.\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nexport const VERSION = typeof \"4.2.0\" !== 'undefined' ? \"4.2.0\" : 'latest';\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { registerJSModules, getJSModuleOrNull } from '@loaders.gl/loader-utils';\nimport { loadLibrary } from '@loaders.gl/worker-utils';\nexport const BASIS_EXTERNAL_LIBRARIES = {\n /** Basis transcoder, javascript wrapper part */\n TRANSCODER: 'basis_transcoder.js',\n /** Basis transcoder, compiled web assembly part */\n TRANSCODER_WASM: 'basis_transcoder.wasm',\n /** Basis encoder, javascript wrapper part */\n ENCODER: 'basis_encoder.js',\n /** Basis encoder, compiled web assembly part */\n ENCODER_WASM: 'basis_encoder.wasm'\n};\nlet loadBasisTranscoderPromise;\n/**\n * Loads wasm transcoder module\n * @param options\n * @returns {BasisFile} promise\n */\nexport async function loadBasisTranscoderModule(options) {\n registerJSModules(options.modules);\n const basis = getJSModuleOrNull('basis');\n if (basis) {\n return basis;\n }\n loadBasisTranscoderPromise ||= loadBasisTranscoder(options);\n return await loadBasisTranscoderPromise;\n}\n/**\n * Loads wasm transcoder module\n * @param options\n * @returns {BasisFile} promise\n */\nasync function loadBasisTranscoder(options) {\n let BASIS = null;\n let wasmBinary = null;\n [BASIS, wasmBinary] = await Promise.all([\n await loadLibrary(BASIS_EXTERNAL_LIBRARIES.TRANSCODER, 'textures', options),\n await loadLibrary(BASIS_EXTERNAL_LIBRARIES.TRANSCODER_WASM, 'textures', options)\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 initializeBasisTranscoderModule(BASIS, wasmBinary);\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 initializeBasisTranscoderModule(BasisModule, wasmBinary) {\n const options = {};\n if (wasmBinary) {\n options.wasmBinary = wasmBinary;\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}\nlet loadBasisEncoderPromise;\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 loadBasisEncoderPromise = loadBasisEncoderPromise || loadBasisEncoder(options);\n return await loadBasisEncoderPromise;\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 [BASIS_ENCODER, wasmBinary] = await Promise.all([\n await loadLibrary(BASIS_EXTERNAL_LIBRARIES.ENCODER, 'textures', options),\n await loadLibrary(BASIS_EXTERNAL_LIBRARIES.ENCODER_WASM, 'textures', options)\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 * 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 = {};\n if (wasmBinary) {\n options.wasmBinary = wasmBinary;\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", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n/* eslint-disable camelcase */\nexport const GL_EXTENSIONS_CONSTANTS = {\n // WEBGL_compressed_texture_s3tc\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 // WEBGL_compressed_texture_es3\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 // WEBGL_compressed_texture_pvrtc\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 // WEBGL_compressed_texture_etc1\n COMPRESSED_RGB_ETC1_WEBGL: 0x8d64,\n // WEBGL_compressed_texture_atc\n COMPRESSED_RGB_ATC_WEBGL: 0x8c92,\n COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL: 0x8c93,\n COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL: 0x87ee,\n // WEBGL_compressed_texture_astc\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 // EXT_texture_compression_rgtc\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 // WEBGL_compressed_texture_s3tc_srgb\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", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nconst BROWSER_PREFIXES = ['', 'WEBKIT_', 'MOZ_'];\nconst WEBGL_EXTENSIONS = {\n /* eslint-disable camelcase */\n WEBGL_compressed_texture_s3tc: 'dxt',\n WEBGL_compressed_texture_s3tc_srgb: 'dxt-srgb',\n WEBGL_compressed_texture_etc1: 'etc1',\n WEBGL_compressed_texture_etc: 'etc2',\n WEBGL_compressed_texture_pvrtc: 'pvrtc',\n WEBGL_compressed_texture_atc: 'atc',\n WEBGL_compressed_texture_astc: 'astc',\n EXT_texture_compression_rgtc: 'rgtc'\n /* eslint-enable camelcase */\n};\nlet formats = null;\n/**\n * Returns a list of formats.\n * Creates a temporary WebGLRenderingContext if none is provided.\n *\n * @param gl - Optional context.\n */\nexport function getSupportedGPUTextureFormats(gl) {\n if (!formats) {\n gl = gl || getWebGLContext() || undefined;\n formats = new Set();\n for (const prefix of BROWSER_PREFIXES) {\n for (const extension in WEBGL_EXTENSIONS) {\n if (gl && gl.getExtension(`${prefix}${extension}`)) {\n const gpuTextureFormat = WEBGL_EXTENSIONS[extension];\n formats.add(gpuTextureFormat);\n }\n }\n }\n }\n return formats;\n}\n/**\n * @returns {WebGLRenderingContext?}\n */\nfunction getWebGLContext() {\n try {\n const canvas = document.createElement('canvas');\n return canvas.getContext('webgl');\n }\n catch (error) {\n return null;\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { read } from 'ktx-parse';\nimport { extractMipmapImages } from \"../utils/extract-mipmap-images.js\";\nimport { mapVkFormatToWebGL } from \"../utils/ktx-format-helper.js\";\nconst KTX2_ID = [\n // '\u00B4', 'K', 'T', 'X', '2', '0', '\u00AA', '\\r', '\\n', '\\x1A', '\\n'\n 0xab, 0x4b, 0x54, 0x58, 0x20, 0x32, 0x30, 0xbb, 0x0d, 0x0a, 0x1a, 0x0a\n];\n// eslint-disable-next-line complexity\nexport function isKTX(data) {\n // const id = new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n const id = new Uint8Array(data);\n const notKTX = id.byteLength < KTX2_ID.length ||\n id[0] !== KTX2_ID[0] || // '\u00B4'\n id[1] !== KTX2_ID[1] || // 'K'\n id[2] !== KTX2_ID[2] || // 'T'\n id[3] !== KTX2_ID[3] || // 'X'\n id[4] !== KTX2_ID[4] || // ' '\n id[5] !== KTX2_ID[5] || // '2'\n id[6] !== KTX2_ID[6] || // '0'\n id[7] !== KTX2_ID[7] || // '\u00AA'\n id[8] !== KTX2_ID[8] || // '\\r'\n id[9] !== KTX2_ID[9] || // '\\n'\n id[10] !== KTX2_ID[10] || // '\\x1A'\n id[11] !== KTX2_ID[11]; // '\\n'\n return !notKTX;\n}\nexport function parseKTX(arrayBuffer) {\n const uint8Array = new Uint8Array(arrayBuffer);\n const ktx = read(uint8Array);\n const mipMapLevels = Math.max(1, ktx.levels.length);\n const width = ktx.pixelWidth;\n const height = ktx.pixelHeight;\n const internalFormat = mapVkFormatToWebGL(ktx.vkFormat);\n return extractMipmapImages(ktx.levels, {\n mipMapLevels,\n width,\n height,\n sizeFunction: (level) => level.uncompressedByteLength,\n internalFormat\n });\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n/**\n * Extract mipmap images from compressed texture buffer\n * @param data - binary data of compressed texture or Array of level objects\n * @param options.mipMapLevels - number of mipmap level inside image\n * @param options.width - width of 0 - level\n * @param options.height - height of 0 - level\n * @param options.sizeFunction - format-related function to calculate level size in bytes\n * @param options.internalFormat - WebGL compatible format code\n * @returns Array of the texture levels\n */\nexport function extractMipmapImages(data, options) {\n const images = new Array(options.mipMapLevels);\n let levelWidth = options.width;\n let levelHeight = options.height;\n let offset = 0;\n for (let i = 0; i < options.mipMapLevels; ++i) {\n // @ts-expect-error\n const levelSize = getLevelSize(options, levelWidth, levelHeight, data, i);\n // @ts-expect-error\n const levelData = getLevelData(data, i, offset, levelSize);\n images[i] = {\n compressed: true,\n format: options.internalFormat,\n data: levelData,\n width: levelWidth,\n height: levelHeight,\n levelSize\n };\n levelWidth = Math.max(1, levelWidth >> 1);\n levelHeight = Math.max(1, levelHeight >> 1);\n offset += levelSize;\n }\n return images;\n}\nfunction getLevelData(data, index, offset, levelSize) {\n if (!Array.isArray(data)) {\n return new Uint8Array(data.buffer, data.byteOffset + offset, levelSize);\n }\n return data[index].levelData;\n}\nfunction getLevelSize(options, levelWidth, levelHeight, data, index) {\n if (!Array.isArray(data)) {\n return options.sizeFunction(levelWidth, levelHeight);\n }\n return options.sizeFunction(data[index]);\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { GL_EXTENSIONS_CONSTANTS } from \"../gl-extensions.js\";\nconst VULKAN_TO_WEBGL_FORMAT_MAP = {\n 131: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT,\n 132: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB_S3TC_DXT1_EXT,\n 133: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT1_EXT,\n 134: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,\n 135: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT,\n 136: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,\n 137: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT,\n 138: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,\n 139: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RED_RGTC1_EXT,\n 140: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SIGNED_RED_RGTC1_EXT,\n 141: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RED_GREEN_RGTC2_EXT,\n 142: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT,\n 147: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_ETC2,\n 148: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ETC2,\n 149: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,\n 150: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,\n 151: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA8_ETC2_EAC,\n 152: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,\n 153: GL_EXTENSIONS_CONSTANTS.COMPRESSED_R11_EAC,\n 154: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SIGNED_R11_EAC,\n 155: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RG11_EAC,\n 156: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SIGNED_RG11_EAC,\n // @ts-ignore\n 157: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4x4_KHR,\n // @ts-ignore\n 158: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,\n // @ts-ignore\n 159: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5x4_KHR,\n // @ts-ignore\n 160: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR,\n // @ts-ignore\n 161: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5x5_KHR,\n // @ts-ignore\n 162: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,\n // @ts-ignore\n 163: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6x5_KHR,\n // @ts-ignore\n 164: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,\n // @ts-ignore\n 165: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6x6_KHR,\n // @ts-ignore\n 166: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,\n // @ts-ignore\n 167: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x5_KHR,\n // @ts-ignore\n 168: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,\n // @ts-ignore\n 169: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x6_KHR,\n // @ts-ignore\n 170: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,\n // @ts-ignore\n 171: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x8_KHR,\n // @ts-ignore\n 172: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,\n // @ts-ignore\n 173: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x5_KHR,\n // @ts-ignore\n 174: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,\n // @ts-ignore\n 175: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x6_KHR,\n // @ts-ignore\n 176: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,\n // @ts-ignore\n 177: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x8_KHR,\n // @ts-ignore\n 178: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,\n // @ts-ignore\n 179: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x10_KHR,\n // @ts-ignore\n 180: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,\n // @ts-ignore\n 181: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12x10_KHR,\n // @ts-ignore\n 182: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,\n // @ts-ignore\n 183: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12x12_KHR,\n // @ts-ignore\n 184: GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR,\n 1000054000: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,\n 1000054001: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,\n // @ts-ignore\n 1000066000: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4x4_KHR,\n // @ts-ignore\n 1000066001: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5x4_KHR,\n // @ts-ignore\n 1000066002: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5x5_KHR,\n // @ts-ignore\n 1000066003: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6x5_KHR,\n // @ts-ignore\n 1000066004: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6x6_KHR,\n // @ts-ignore\n 1000066005: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x5_KHR,\n // @ts-ignore\n 1000066006: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x6_KHR,\n // @ts-ignore\n 1000066007: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8x8_KHR,\n // @ts-ignore\n 1000066008: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x5_KHR,\n // @ts-ignore\n 1000066009: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x6_KHR,\n // @ts-ignore\n 1000066010: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x8_KHR,\n // @ts-ignore\n 1000066011: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10x10_KHR,\n // @ts-ignore\n 1000066012: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12x10_KHR,\n // @ts-ignore\n 1000066013: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12x12_KHR\n};\n/**\n * Returns WebGl format based on Vulkan format\n * Vulkan to WebGl format mapping provided here http://github.khronos.org/KTX-Specification/#formatMapping\n * Vulkan name to format number mapping provided here: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFormat.html\n * @param vkFormat\n * @returns WebGL / OpenGL constant\n */\nexport function mapVkFormatToWebGL(vkFormat) {\n return VULKAN_TO_WEBGL_FORMAT_MAP[vkFormat];\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { loadBasisEncoderModule, loadBasisTranscoderModule } from \"./basis-module-loader.js\";\nimport { GL_EXTENSIONS_CONSTANTS } from \"../gl-extensions.js\";\nimport { getSupportedGPUTextureFormats } from \"../utils/texture-formats.js\";\nimport { isKTX } from \"./parse-ktx.js\";\nconst OutputFormat = {\n etc1: {\n basisFormat: 0,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ETC1_WEBGL\n },\n etc2: { basisFormat: 1, compressed: true },\n bc1: {\n basisFormat: 2,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT\n },\n bc3: {\n basisFormat: 3,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT\n },\n bc4: { basisFormat: 4, compressed: true },\n bc5: { basisFormat: 5, compressed: true },\n 'bc7-m6-opaque-only': { basisFormat: 6, compressed: true },\n 'bc7-m5': { basisFormat: 7, compressed: true },\n 'pvrtc1-4-rgb': {\n basisFormat: 8,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_4BPPV1_IMG\n },\n 'pvrtc1-4-rgba': {\n basisFormat: 9,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG\n },\n 'astc-4x4': {\n basisFormat: 10,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR\n },\n 'atc-rgb': { basisFormat: 11, compressed: true },\n 'atc-rgba-interpolated-alpha': { basisFormat: 12, compressed: true },\n rgba32: { basisFormat: 13, compressed: false },\n rgb565: { basisFormat: 14, compressed: false },\n bgr565: { basisFormat: 15, compressed: false },\n rgba4444: { basisFormat: 16, compressed: false }\n};\n/**\n * 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, options) {\n if (options.basis.containerFormat === 'auto') {\n if (isKTX(data)) {\n const fileConstructors = await loadBasisEncoderModule(options);\n return parseKTX2File(fileConstructors.KTX2File, data, options);\n }\n const { BasisFile } = await 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 * Parse *.basis file data\n * @param BasisFile - initialized transcoder module\n * @param data\n * @param options\n * @returns compressed texture data\n */\nfunction parseBasisFile(BasisFile, data, options) {\n const basisFile = new BasisFile(new Uint8Array(data));\n try {\n if (!basisFile.startTranscoding()) {\n throw new Error('Failed to start basis transcoding');\n }\n const imageCount = basisFile.getNumImages();\n const images = [];\n for (let imageIndex = 0; imageIndex < imageCount; imageIndex++) {\n const levelsCount = basisFile.getNumLevels(imageIndex);\n const levels = [];\n for (let levelIndex = 0; levelIndex < levelsCount; levelIndex++) {\n levels.push(transcodeImage(basisFile, imageIndex, levelIndex, options));\n }\n images.push(levels);\n }\n return images;\n }\n finally {\n basisFile.close();\n basisFile.delete();\n }\n}\n/**\n * Parse the particular level image of a basis file\n * @param basisFile\n * @param imageIndex\n * @param levelIndex\n * @param options\n * @returns compressed texture data\n */\nfunction transcodeImage(basisFile, imageIndex, levelIndex, options) {\n const width = basisFile.getImageWidth(imageIndex, levelIndex);\n const height = basisFile.getImageHeight(imageIndex, levelIndex);\n // See https://github.com/BinomialLLC/basis_universal/pull/83\n const hasAlpha = basisFile.getHasAlpha( /* imageIndex, levelIndex */);\n // Check options for output format etc\n const { compressed, format, basisFormat } = getBasisOptions(options, hasAlpha);\n const decodedSize = basisFile.getImageTranscodedSizeInBytes(imageIndex, levelIndex, basisFormat);\n const decodedData = new Uint8Array(decodedSize);\n if (!basisFile.transcodeImage(decodedData, imageIndex, levelIndex, basisFormat, 0, 0)) {\n throw new Error('failed to start Basis transcoding');\n }\n return {\n // standard loaders.gl image category payload\n width,\n height,\n data: decodedData,\n compressed,\n format,\n // Additional fields\n // Add levelSize field.\n hasAlpha\n };\n}\n/**\n * Parse *.ktx2 file data\n * @param KTX2File\n * @param data\n * @param options\n * @returns compressed texture data\n */\nfunction parseKTX2File(KTX2File, data, options) {\n const ktx2File = new KTX2File(new Uint8Array(data));\n try {\n if (!ktx2File.startTranscoding()) {\n throw new Error('failed to start KTX2 transcoding');\n }\n const levelsCount = ktx2File.getLevels();\n const levels = [];\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 return [levels];\n }\n finally {\n ktx2File.close();\n ktx2File.delete();\n }\n}\n/**\n * Parse the particular level image of a ktx2 file\n * @param ktx2File\n * @param levelIndex\n * @param options\n * @returns\n */\nfunction transcodeKTX2Image(ktx2File, levelIndex, options) {\n const { alphaFlag, height, width } = ktx2File.getImageLevelInfo(levelIndex, 0, 0);\n // Check options for output format etc\n const { compressed, format, basisFormat } = getBasisOptions(options, alphaFlag);\n const decodedSize = ktx2File.getImageTranscodedSizeInBytes(levelIndex, 0 /* layerIndex */, 0 /* faceIndex */, basisFormat);\n const decodedData = new Uint8Array(decodedSize);\n if (!ktx2File.transcodeImage(decodedData, levelIndex, 0 /* layerIndex */, 0 /* faceIndex */, basisFormat, 0, -1 /* channel0 */, -1 /* channel1 */)) {\n throw new Error('Failed to transcode KTX2 image');\n }\n return {\n // standard loaders.gl image category payload\n width,\n height,\n data: decodedData,\n compressed,\n // Additional fields\n levelSize: decodedSize,\n hasAlpha: alphaFlag,\n format\n };\n}\n/**\n * Get BasisFormat by loader format option\n * @param options\n * @param hasAlpha\n * @returns BasisFormat data\n */\nfunction getBasisOptions(options, hasAlpha) {\n let format = options && options.basis && options.basis.format;\n if (format === 'auto') {\n format = selectSupportedBasisFormat();\n }\n if (typeof format === 'object') {\n format = hasAlpha ? format.alpha : format.noAlpha;\n }\n format = format.toLowerCase();\n return OutputFormat[format];\n}\n/**\n * Select transcode format from the list of supported formats\n * @returns key for OutputFormat map\n */\nexport function selectSupportedBasisFormat() {\n const supportedFormats = getSupportedGPUTextureFormats();\n if (supportedFormats.has('astc')) {\n return 'astc-4x4';\n }\n else if (supportedFormats.has('dxt')) {\n return {\n alpha: 'bc3',\n noAlpha: 'bc1'\n };\n }\n else if (supportedFormats.has('pvrtc')) {\n return {\n alpha: 'pvrtc1-4-rgba',\n noAlpha: 'pvrtc1-4-rgb'\n };\n }\n else if (supportedFormats.has('etc1')) {\n return 'etc1';\n }\n else if (supportedFormats.has('etc2')) {\n return 'etc2';\n }\n return 'rgb565';\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { VERSION } from \"./lib/utils/version.js\";\nimport parseBasis from \"./lib/parsers/parse-basis.js\";\n/**\n * Worker loader for Basis super compressed textures\n */\nexport const BasisWorkerLoader = {\n dataType: null,\n batchType: null,\n name: 'Basis',\n id: 'basis',\n module: 'textures',\n version: VERSION,\n worker: true,\n extensions: ['basis', 'ktx2'],\n mimeTypes: ['application/octet-stream', 'image/ktx2'],\n tests: ['sB'],\n binary: true,\n options: {\n basis: {\n format: 'auto',\n libraryPath: 'libs/',\n containerFormat: 'auto',\n module: 'transcoder'\n }\n }\n};\n/**\n * Loader for Basis super compressed textures\n */\nexport const BasisLoader = {\n ...BasisWorkerLoader,\n parse: parseBasis\n};\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { assert } from '@loaders.gl/loader-utils';\nimport { GL_EXTENSIONS_CONSTANTS } from \"../gl-extensions.js\";\nimport { extractMipmapImages } from \"../utils/extract-mipmap-images.js\";\nconst DDS_CONSTANTS = {\n MAGIC_NUMBER: 0x20534444,\n HEADER_LENGTH: 31,\n MAGIC_NUMBER_INDEX: 0,\n HEADER_SIZE_INDEX: 1,\n HEADER_FLAGS_INDEX: 2,\n HEADER_HEIGHT_INDEX: 3,\n HEADER_WIDTH_INDEX: 4,\n MIPMAPCOUNT_INDEX: 7,\n HEADER_PF_FLAGS_INDEX: 20,\n HEADER_PF_FOURCC_INDEX: 21,\n DDSD_MIPMAPCOUNT: 0x20000,\n DDPF_FOURCC: 0x4\n};\nconst DDS_PIXEL_FORMATS = {\n DXT1: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT,\n DXT3: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT,\n DXT5: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT,\n 'ATC ': GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ATC_WEBGL,\n ATCA: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL,\n ATCI: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL\n};\nconst getATCLevelSize = getDxt1LevelSize;\nconst getATCALevelSize = getDxtXLevelSize;\nconst getATCILevelSize = getDxtXLevelSize;\nconst DDS_SIZE_FUNCTIONS = {\n DXT1: getDxt1LevelSize,\n DXT3: getDxtXLevelSize,\n DXT5: getDxtXLevelSize,\n 'ATC ': getATCLevelSize,\n ATCA: getATCALevelSize,\n ATCI: getATCILevelSize\n};\n/**\n * Check if data is in \"DDS\" format by its magic number\n * @param data - binary data of compressed texture\n * @returns true - data in \"DDS\" format, else - false\n */\nexport function isDDS(data) {\n const header = new Uint32Array(data, 0, DDS_CONSTANTS.HEADER_LENGTH);\n const magic = header[DDS_CONSTANTS.MAGIC_NUMBER_INDEX];\n return magic === DDS_CONSTANTS.MAGIC_NUMBER;\n}\n/**\n * Parse texture data as \"DDS\" format\n * @param data - binary data of compressed texture\n * @returns Array of the texture levels\n */\nexport function parseDDS(data) {\n const header = new Int32Array(data, 0, DDS_CONSTANTS.HEADER_LENGTH);\n const pixelFormatNumber = header[DDS_CONSTANTS.HEADER_PF_FOURCC_INDEX];\n assert(Boolean(header[DDS_CONSTANTS.HEADER_PF_FLAGS_INDEX] & DDS_CONSTANTS.DDPF_FOURCC), 'DDS: Unsupported format, must contain a FourCC code');\n const fourCC = int32ToFourCC(pixelFormatNumber);\n const internalFormat = DDS_PIXEL_FORMATS[fourCC];\n const sizeFunction = DDS_SIZE_FUNCTIONS[fourCC];\n assert(internalFormat && sizeFunction, `DDS: Unknown pixel format ${pixelFormatNumber}`);\n let mipMapLevels = 1;\n if (header[DDS_CONSTANTS.HEADER_FLAGS_INDEX] & DDS_CONSTANTS.DDSD_MIPMAPCOUNT) {\n mipMapLevels = Math.max(1, header[DDS_CONSTANTS.MIPMAPCOUNT_INDEX]);\n }\n const width = header[DDS_CONSTANTS.HEADER_WIDTH_INDEX];\n const height = header[DDS_CONSTANTS.HEADER_HEIGHT_INDEX];\n const dataOffset = header[DDS_CONSTANTS.HEADER_SIZE_INDEX] + 4;\n const image = new Uint8Array(data, dataOffset);\n return extractMipmapImages(image, {\n mipMapLevels,\n width,\n height,\n sizeFunction,\n internalFormat\n });\n}\n/**\n * DXT1 applicable function to calculate level size\n * @param width - level width\n * @param height - level height\n * @returns level size in bytes\n */\nexport function getDxt1LevelSize(width, height) {\n return ((width + 3) >> 2) * ((height + 3) >> 2) * 8;\n}\n/**\n * DXT3 & DXT5 applicable function to calculate level size\n * @param width - level width\n * @param height - level height\n * @returns level size in bytes\n */\nexport function getDxtXLevelSize(width, height) {\n return ((width + 3) >> 2) * ((height + 3) >> 2) * 16;\n}\n/**\n * Convert every byte of Int32 value to char\n * @param value - Int32 number\n * @returns string of 4 characters\n */\nfunction int32ToFourCC(value) {\n return String.fromCharCode(value & 0xff, (value >> 8) & 0xff, (value >> 16) & 0xff, (value >> 24) & 0xff);\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { GL_EXTENSIONS_CONSTANTS } from \"../gl-extensions.js\";\nimport { extractMipmapImages } from \"../utils/extract-mipmap-images.js\";\nconst PVR_CONSTANTS = {\n MAGIC_NUMBER: 0x03525650,\n MAGIC_NUMBER_EXTRA: 0x50565203,\n HEADER_LENGTH: 13,\n HEADER_SIZE: 52,\n MAGIC_NUMBER_INDEX: 0,\n PIXEL_FORMAT_INDEX: 2,\n COLOUR_SPACE_INDEX: 4,\n HEIGHT_INDEX: 6,\n WIDTH_INDEX: 7,\n MIPMAPCOUNT_INDEX: 11,\n METADATA_SIZE_INDEX: 12\n};\nconst PVR_PIXEL_FORMATS = {\n 0: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_2BPPV1_IMG],\n 1: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG],\n 2: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_4BPPV1_IMG],\n 3: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG],\n 6: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ETC1_WEBGL],\n 7: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT],\n 9: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT],\n 11: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT],\n 22: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_ETC2],\n 23: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA8_ETC2_EAC],\n 24: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2],\n 25: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_R11_EAC],\n 26: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RG11_EAC],\n 27: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR\n ],\n 28: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X4_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR\n ],\n 29: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X5_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR\n ],\n 30: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X5_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR\n ],\n 31: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X6_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR\n ],\n 32: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X5_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR\n ],\n 33: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X6_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR\n ],\n 34: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X8_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR\n ],\n 35: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X5_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR\n ],\n 36: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X6_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR\n ],\n 37: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X8_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR\n ],\n 38: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X10_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR\n ],\n 39: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X10_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR\n ],\n 40: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X12_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR\n ]\n};\nconst PVR_SIZE_FUNCTIONS = {\n 0: pvrtc2bppSize,\n 1: pvrtc2bppSize,\n 2: pvrtc4bppSize,\n 3: pvrtc4bppSize,\n 6: dxtEtcSmallSize,\n 7: dxtEtcSmallSize,\n 9: dxtEtcAstcBigSize,\n 11: dxtEtcAstcBigSize,\n 22: dxtEtcSmallSize,\n 23: dxtEtcAstcBigSize,\n 24: dxtEtcSmallSize,\n 25: dxtEtcSmallSize,\n 26: dxtEtcAstcBigSize,\n 27: dxtEtcAstcBigSize,\n 28: atc5x4Size,\n 29: atc5x5Size,\n 30: atc6x5Size,\n 31: atc6x6Size,\n 32: atc8x5Size,\n 33: atc8x6Size,\n 34: atc8x8Size,\n 35: atc10x5Size,\n 36: atc10x6Size,\n 37: atc10x8Size,\n 38: atc10x10Size,\n 39: atc12x10Size,\n 40: atc12x12Size\n};\n/**\n * Check if data is in \"PVR\" format by its magic number\n * @param data - binary data of compressed texture\n * @returns true - data in \"PVR\" format, else - false\n */\nexport function isPVR(data) {\n const header = new Uint32Array(data, 0, PVR_CONSTANTS.HEADER_LENGTH);\n const version = header[PVR_CONSTANTS.MAGIC_NUMBER_INDEX];\n return version === PVR_CONSTANTS.MAGIC_NUMBER || version === PVR_CONSTANTS.MAGIC_NUMBER_EXTRA;\n}\n/**\n * Parse texture data as \"PVR\" format\n * @param data - binary data of compressed texture\n * @returns Array of the texture levels\n * @see http://cdn.imgtec.com/sdk-documentation/PVR+File+Format.Specification.pdf\n */\nexport function parsePVR(data) {\n const header = new Uint32Array(data, 0, PVR_CONSTANTS.HEADER_LENGTH);\n const pvrFormat = header[PVR_CONSTANTS.PIXEL_FORMAT_INDEX];\n const colourSpace = header[PVR_CONSTANTS.COLOUR_SPACE_INDEX];\n const pixelFormats = PVR_PIXEL_FORMATS[pvrFormat] || [];\n const internalFormat = pixelFormats.length > 1 && colourSpace ? pixelFormats[1] : pixelFormats[0];\n const sizeFunction = PVR_SIZE_FUNCTIONS[pvrFormat];\n const mipMapLevels = header[PVR_CONSTANTS.MIPMAPCOUNT_INDEX];\n const width = header[PVR_CONSTANTS.WIDTH_INDEX];\n const height = header[PVR_CONSTANTS.HEIGHT_INDEX];\n const dataOffset = PVR_CONSTANTS.HEADER_SIZE + header[PVR_CONSTANTS.METADATA_SIZE_INDEX];\n const image = new Uint8Array(data, dataOffset);\n return extractMipmapImages(image, {\n mipMapLevels,\n width,\n height,\n sizeFunction,\n internalFormat\n });\n}\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_pvrtc/\nfunction pvrtc2bppSize(width, height) {\n width = Math.max(width, 16);\n height = Math.max(height, 8);\n return (width * height) / 4;\n}\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_pvrtc/\nfunction pvrtc4bppSize(width, height) {\n width = Math.max(width, 8);\n height = Math.max(height, 8);\n return (width * height) / 2;\n}\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_s3tc/\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_etc/\n// Size for:\n// COMPRESSED_RGB_S3TC_DXT1_EXT\n// COMPRESSED_R11_EAC\n// COMPRESSED_SIGNED_R11_EAC\n// COMPRESSED_RGB8_ETC2\n// COMPRESSED_SRGB8_ETC2\n// COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2\n// COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2\nfunction dxtEtcSmallSize(width, height) {\n return Math.floor((width + 3) / 4) * Math.floor((height + 3) / 4) * 8;\n}\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_s3tc/\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_etc/\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\n// Size for:\n// COMPRESSED_RGBA_S3TC_DXT3_EXT\n// COMPRESSED_RGBA_S3TC_DXT5_EXT\n// COMPRESSED_RG11_EAC\n// COMPRESSED_SIGNED_RG11_EAC\n// COMPRESSED_RGBA8_ETC2_EAC\n// COMPRESSED_SRGB8_ALPHA8_ETC2_EAC\n// COMPRESSED_RGBA_ASTC_4x4_KHR\nfunction dxtEtcAstcBigSize(width, height) {\n return Math.floor((width + 3) / 4) * Math.floor((height + 3) / 4) * 16;\n}\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc5x4Size(width, height) {\n return Math.floor((width + 4) / 5) * Math.floor((height + 3) / 4) * 16;\n}\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc5x5Size(width, height) {\n return Math.floor((width + 4) / 5) * Math.floor((height + 4) / 5) * 16;\n}\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc6x5Size(width, height) {\n return Math.floor((width + 5) / 6) * Math.floor((height + 4) / 5) * 16;\n}\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc6x6Size(width, height) {\n return Math.floor((width + 5) / 6) * Math.floor((height + 5) / 6) * 16;\n}\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc8x5Size(width, height) {\n return Math.floor((width + 7) / 8) * Math.floor((height + 4) / 5) * 16;\n}\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc8x6Size(width, height) {\n return Math.floor((width + 7) / 8) * Math.floor((height + 5) / 6) * 16;\n}\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc8x8Size(width, height) {\n return Math.floor((width + 7) / 8) * Math.floor((height + 7) / 8) * 16;\n}\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc10x5Size(width, height) {\n return Math.floor((width + 9) / 10) * Math.floor((height + 4) / 5) * 16;\n}\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc10x6Size(width, height) {\n return Math.floor((width + 9) / 10) * Math.floor((height + 5) / 6) * 16;\n}\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc10x8Size(width, height) {\n return Math.floor((width + 9) / 10) * Math.floor((height + 7) / 8) * 16;\n}\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc10x10Size(width, height) {\n return Math.floor((width + 9) / 10) * Math.floor((height + 9) / 10) * 16;\n}\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc12x10Size(width, height) {\n return Math.floor((width + 11) / 12) * Math.floor((height + 9) / 10) * 16;\n}\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc12x12Size(width, height) {\n return Math.floor((width + 11) / 12) * Math.floor((height + 11) / 12) * 16;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { isKTX, parseKTX } from \"./parse-ktx.js\";\nimport { isDDS, parseDDS } from \"./parse-dds.js\";\nimport { isPVR, parsePVR } from \"./parse-pvr.js\";\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) {\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", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { VERSION } from \"./lib/utils/version.js\";\nimport { parseCompressedTexture } from \"./lib/parsers/parse-compressed-texture.js\";\nimport parseBasis from \"./lib/parsers/parse-basis.js\";\n/**\n * Worker Loader for KTX, DDS, and PVR texture container formats\n */\nexport const CompressedTextureWorkerLoader = {\n dataType: null,\n batchType: null,\n name: 'Texture Containers',\n id: 'compressed-texture',\n module: 'textures',\n version: VERSION,\n worker: true,\n extensions: [\n 'ktx',\n 'ktx2',\n 'dds', // WEBGL_compressed_texture_s3tc, WEBGL_compressed_texture_atc\n 'pvr' // WEBGL_compressed_texture_pvrtc\n ],\n mimeTypes: [\n 'image/ktx2',\n 'image/ktx',\n 'image/vnd-ms.dds',\n 'image/x-dds',\n 'application/octet-stream'\n ],\n binary: true,\n options: {\n 'compressed-texture': {\n libraryPath: 'libs/',\n useBasis: false\n }\n }\n};\n/**\n * Loader for KTX, DDS, and PVR texture container formats\n */\nexport const CompressedTextureLoader = {\n ...CompressedTextureWorkerLoader,\n parse: async (arrayBuffer, options) => {\n if (options?.['compressed-texture']?.useBasis) {\n // @ts-expect-error TODO not allowed to modify inputs\n options.basis = {\n format: {\n alpha: 'BC3',\n noAlpha: 'BC1'\n },\n // @ts-expect-error TODO not allowed to modify inputs\n ...options.basis,\n containerFormat: 'ktx2',\n module: 'encoder'\n };\n const result = await parseBasis(arrayBuffer, options);\n return result[0];\n }\n return parseCompressedTexture(arrayBuffer);\n }\n};\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { VERSION } from \"./lib/utils/version.js\";\n/**\n * Worker loader for the Crunch compressed texture container format\n * @note We avoid bundling crunch - it is a rare format and large lib, so we only offer worker loader\n */\nexport const CrunchLoader = {\n dataType: null,\n batchType: null,\n id: 'crunch',\n name: 'Crunch',\n module: 'textures',\n version: VERSION,\n worker: true,\n extensions: ['crn'],\n mimeTypes: ['image/crn', 'image/x-crn', 'application/octet-stream'],\n binary: true,\n options: {\n crunch: {\n libraryPath: 'libs/'\n }\n }\n};\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nconst a = new Uint32Array([0x12345678]);\nconst b = new Uint8Array(a.buffer, a.byteOffset, a.byteLength);\nconst isLittleEndian = !(b[0] === 0x12);\nconst LITTLE_ENDIAN_OS = isLittleEndian;\n/**\n * The basic string format consists of 3 characters:\n * 1. a character describing the byteorder of the data (<: little-endian, >: big-endian, |: not-relevant)\n * 2. a character code giving the basic type of the array\n * 3. an integer providing the number of bytes the type uses.\n * https://numpy.org/doc/stable/reference/arrays.interface.html\n *\n * Here I only include the second and third characters, and check endianness separately\n */\nconst DTYPES = {\n u1: Uint8Array,\n i1: Int8Array,\n u2: Uint16Array,\n i2: Int16Array,\n u4: Uint32Array,\n i4: Int32Array,\n f4: Float32Array,\n f8: Float64Array\n};\nexport function parseNPY(arrayBuffer, options) {\n const view = new DataView(arrayBuffer);\n const { header, headerEndOffset } = parseHeader(view);\n const numpyType = header.descr;\n const ArrayType = DTYPES[numpyType.slice(1, 3)];\n if (!ArrayType) {\n throw new Error(`Unimplemented type ${numpyType}`);\n }\n const nArrayElements = header.shape?.reduce((a, b) => a * b);\n const arrayByteLength = nArrayElements * ArrayType.BYTES_PER_ELEMENT;\n if (arrayBuffer.byteLength < headerEndOffset + arrayByteLength) {\n throw new Error('Buffer overflow');\n }\n const data = new ArrayType(arrayBuffer.slice(headerEndOffset, headerEndOffset + arrayByteLength));\n // Swap endianness if needed\n if ((numpyType[0] === '>' && LITTLE_ENDIAN_OS) || (numpyType[0] === '<' && !LITTLE_ENDIAN_OS)) {\n throw new Error('Incorrect endianness');\n }\n return {\n data,\n header\n };\n}\n/**\n * Parse NPY header\n *\n * @param view\n * @return\n */\nfunction parseHeader(view) {\n const majorVersion = view.getUint8(6);\n // const minorVersion = view.getUint8(7);\n let offset = 8;\n let headerLength;\n if (majorVersion >= 2) {\n headerLength = view.getUint32(offset, true);\n offset += 4;\n }\n else {\n headerLength = view.getUint16(offset, true);\n offset += 2;\n }\n const encoding = majorVersion <= 2 ? 'latin1' : 'utf-8';\n const decoder = new TextDecoder(encoding);\n const headerArray = new Uint8Array(view.buffer, offset, headerLength);\n const headerText = decoder.decode(headerArray);\n offset += headerLength;\n const header = JSON.parse(headerText\n .replace(/'/g, '\"')\n .replace('False', 'false')\n .replace('(', '[')\n .replace(/,*\\),*/g, ']'));\n return { header, headerEndOffset: offset };\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { VERSION } from \"./lib/utils/version.js\";\nimport { parseNPY } from \"./lib/parsers/parse-npy.js\";\n// \\x93NUMPY\nconst NPY_MAGIC_NUMBER = new Uint8Array([147, 78, 85, 77, 80, 89]);\n/**\n * Worker loader for numpy \"tiles\"\n */\nexport const NPYWorkerLoader = {\n dataType: null,\n batchType: null,\n name: 'NPY',\n id: 'npy',\n module: 'textures',\n version: VERSION,\n worker: true,\n extensions: ['npy'],\n mimeTypes: [],\n tests: [NPY_MAGIC_NUMBER.buffer],\n options: {\n npy: {}\n }\n};\n/**\n * Loader for numpy \"tiles\"\n */\nexport const NPYLoader = {\n ...NPYWorkerLoader,\n parseSync: parseNPY,\n parse: async (arrayBuffer, options) => parseNPY(arrayBuffer, options)\n};\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n// @ts-nocheck\nimport { getJSModuleOrNull, registerJSModules } from '@loaders.gl/loader-utils';\nimport { loadLibrary } from '@loaders.gl/worker-utils';\nexport const CRUNCH_EXTERNAL_LIBRARIES = {\n /** Crunch decoder library. It is used as dynamically imported script */\n DECODER: 'crunch.js'\n};\n/**\n * Load crunch decoder module\n * @param options - loader options\n * @returns Promise of module object\n */\nexport async function loadCrunchModule(options) {\n registerJSModules(options.modules);\n const crunch = getJSModuleOrNull('crunch');\n if (crunch) {\n return crunch;\n }\n return loadCrunch(options);\n}\nlet crunchModule;\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 let loadCrunchDecoder = await loadLibrary(CRUNCH_EXTERNAL_LIBRARIES.DECODER, 'textures', options);\n // Depends on how import happened...\n // @ts-ignore TS2339: Property does not exist on type\n loadCrunchDecoder ||= globalThis.LoadCrunchDecoder;\n crunchModule = loadCrunchDecoder();\n return crunchModule;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { ChildProcessProxy } from '@loaders.gl/worker-utils';\n/*\n * @see https://github.com/TimvanScherpenzeel/texture-compressor\n */\nexport async function encodeImageURLToCompressedTextureURL(inputUrl, outputUrl, options) {\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", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { VERSION } from \"./lib/utils/version.js\";\nimport { encodeImageURLToCompressedTextureURL } from \"./lib/encoders/encode-texture.js\";\n/**\n * DDS Texture Container Exporter\n */\nexport const CompressedTextureWriter = {\n name: 'DDS Texture Container',\n id: 'dds',\n module: 'textures',\n version: VERSION,\n extensions: ['dds'],\n options: {\n texture: {\n format: 'auto',\n compression: 'auto',\n quality: 'auto',\n mipmap: false,\n flipY: false,\n toolFlags: ''\n }\n },\n encodeURLtoURL: encodeImageURLToCompressedTextureURL,\n encode() {\n throw new Error('Not implemented');\n }\n};\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { loadBasisEncoderModule } from \"../parsers/basis-module-loader.js\";\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(image, options = {}) {\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?.['ktx2-basis-writer'] || {};\n const { BasisEncoder } = await loadBasisEncoderModule(options);\n const basisEncoder = new BasisEncoder();\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 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 const numOutputBytes = basisEncoder.encode(basisFileData);\n const actualKTX2FileData = basisFileData.subarray(0, numOutputBytes).buffer;\n return actualKTX2FileData;\n }\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 }\n finally {\n basisEncoder.delete();\n }\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { VERSION } from \"./lib/utils/version.js\";\nimport { encodeKTX2BasisTexture } from \"./lib/encoders/encode-ktx2-basis-texture.js\";\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 extensions: ['ktx2'],\n options: {\n ['ktx2-basis-writer']: {\n useSRGB: false,\n qualityLevel: 10,\n encodeUASTC: false,\n mipmaps: false\n }\n },\n encode: encodeKTX2BasisTexture\n};\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { assert } from '@loaders.gl/loader-utils';\nimport { ImageLoader, getImageSize } from '@loaders.gl/images';\nimport { generateUrl } from \"./generate-url.js\";\nimport { deepLoad, shallowLoad } from \"./deep-load.js\";\nexport async function loadImageTexture(getUrl, options = {}) {\n const imageUrls = await getImageUrls(getUrl, options);\n return await deepLoad(imageUrls, ImageLoader.parse, options);\n}\nexport async function getImageUrls(getUrl, options, urlOptions = {}) {\n const mipLevels = (options && options.image && options.image.mipLevels) || 0;\n return mipLevels !== 0\n ? await getMipmappedImageUrls(getUrl, mipLevels, options, urlOptions)\n : generateUrl(getUrl, options, urlOptions);\n}\nasync function getMipmappedImageUrls(getUrl, mipLevels, options, urlOptions) {\n const urls = [];\n // If no mip levels supplied, we need to load the level 0 image and calculate based on size\n if (mipLevels === 'auto') {\n const url = generateUrl(getUrl, options, { ...urlOptions, lod: 0 });\n const image = await shallowLoad(url, ImageLoader.parse, options);\n const { width, height } = getImageSize(image);\n mipLevels = getMipLevels({ width, height });\n // TODO - push image and make `deepLoad` pass through non-url values, avoid loading twice?\n urls.push(url);\n }\n // We now know how many mipLevels we need, remaining image urls can now be constructed\n assert(mipLevels > 0);\n for (let mipLevel = urls.length; mipLevel < mipLevels; ++mipLevel) {\n const url = generateUrl(getUrl, options, { ...urlOptions, lod: mipLevel });\n urls.push(url);\n }\n return urls;\n}\n// Calculates number of mipmaps based on texture size (log2)\nexport function getMipLevels(size) {\n return 1 + Math.floor(Math.log2(Math.max(size.width, size.height)));\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { resolvePath } from '@loaders.gl/loader-utils';\n// Generate a url by calling getUrl with mix of options, applying options.baseUrl\nexport function generateUrl(getUrl, options, urlOptions) {\n // Get url\n let url = typeof getUrl === 'function' ? getUrl({ ...options, ...urlOptions }) : getUrl;\n // Apply options.baseUrl\n const baseUrl = options.baseUrl;\n if (baseUrl) {\n url = baseUrl[baseUrl.length - 1] === '/' ? `${baseUrl}${url}` : `${baseUrl}/${url}`;\n }\n return resolvePath(url);\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nconst isObject = (value) => value && typeof value === 'object';\n// Loads a deep structure of urls (objects and arrays of urls)\n// Returns an object with six key-value pairs containing the images (or image mip arrays)\n// for each cube face\nexport async function asyncDeepMap(tree, func, options = {}) {\n return await mapSubtree(tree, func, options);\n}\nexport async function mapSubtree(object, func, options) {\n if (Array.isArray(object)) {\n return await mapArray(object, func, options);\n }\n if (isObject(object)) {\n return await mapObject(object, func, options);\n }\n // TODO - ignore non-urls, non-arraybuffers?\n const url = object;\n return await func(url, options);\n}\n// HELPERS\nasync function mapObject(object, func, options) {\n const promises = [];\n const values = {};\n for (const key in object) {\n const url = object[key];\n const promise = mapSubtree(url, func, options).then((value) => {\n values[key] = value;\n });\n promises.push(promise);\n }\n await Promise.all(promises);\n return values;\n}\nasync function mapArray(urlArray, func, options = {}) {\n const promises = urlArray.map((url) => mapSubtree(url, func, options));\n return await Promise.all(promises);\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { asyncDeepMap } from \"./async-deep-map.js\";\nexport async function deepLoad(urlTree, load, options) {\n return await asyncDeepMap(urlTree, (url) => shallowLoad(url, load, options));\n}\nexport async function shallowLoad(url, load, options) {\n const response = await fetch(url, options.fetch);\n const arrayBuffer = await response.arrayBuffer();\n return await load(arrayBuffer, options);\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { ImageLoader } from '@loaders.gl/images';\nimport { getImageUrls } from \"./load-image.js\";\nimport { deepLoad } from \"./deep-load.js\";\nexport async function loadImageTextureArray(count, getUrl, options = {}) {\n const imageUrls = await getImageArrayUrls(count, getUrl, options);\n return await deepLoad(imageUrls, ImageLoader.parse, options);\n}\nexport async function getImageArrayUrls(count, getUrl, options = {}) {\n const promises = [];\n for (let index = 0; index < count; index++) {\n const promise = getImageUrls(getUrl, options, { index });\n promises.push(promise);\n }\n return await Promise.all(promises);\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { ImageLoader } from '@loaders.gl/images';\nimport { getImageUrls } from \"./load-image.js\";\nimport { deepLoad } from \"./deep-load.js\";\n// Returned map will be have keys corresponding to GL cubemap constants\nconst GL_TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515;\nconst GL_TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516;\nconst GL_TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517;\nconst GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518;\nconst GL_TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519;\nconst GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851a;\nconst CUBE_FACES = [\n { face: GL_TEXTURE_CUBE_MAP_POSITIVE_X, direction: 'right', axis: 'x', sign: 'positive' },\n { face: GL_TEXTURE_CUBE_MAP_NEGATIVE_X, direction: 'left', axis: 'x', sign: 'negative' },\n { face: GL_TEXTURE_CUBE_MAP_POSITIVE_Y, direction: 'top', axis: 'y', sign: 'positive' },\n { face: GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, direction: 'bottom', axis: 'y', sign: 'negative' },\n { face: GL_TEXTURE_CUBE_MAP_POSITIVE_Z, direction: 'front', axis: 'z', sign: 'positive' },\n { face: GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, direction: 'back', axis: 'z', sign: 'negative' }\n];\n// Returns an object with six key-value pairs containing the urls (or url mip arrays)\n// for each cube face\nexport async function getImageCubeUrls(getUrl, options) {\n // Calculate URLs\n const urls = {};\n const promises = [];\n let index = 0;\n for (let i = 0; i < CUBE_FACES.length; ++i) {\n const face = CUBE_FACES[index];\n const promise = getImageUrls(getUrl, options, { ...face, index: index++ }).then((url) => {\n urls[face.face] = url;\n });\n promises.push(promise);\n }\n await Promise.all(promises);\n return urls;\n}\n// Returns an object with six key-value pairs containing the images (or image mip arrays)\n// for each cube face\nexport async function loadImageTextureCube(getUrl, options = {}) {\n const urls = await getImageCubeUrls(getUrl, options);\n return (await deepLoad(urls, ImageLoader.parse, options));\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["module", "import_loader_utils", "a", "b", "import_loader_utils", "import_worker_utils", "import_worker_utils", "import_loader_utils", "import_loader_utils", "import_images", "import_images"]
|
|
7
7
|
}
|
|
@@ -63711,7 +63711,7 @@ function getVersion() {
|
|
|
63711
63711
|
);
|
|
63712
63712
|
globalThis._loadersgl_.version = NPM_TAG;
|
|
63713
63713
|
} else {
|
|
63714
|
-
globalThis._loadersgl_.version = "4.2.0
|
|
63714
|
+
globalThis._loadersgl_.version = "4.2.0";
|
|
63715
63715
|
}
|
|
63716
63716
|
}
|
|
63717
63717
|
return globalThis._loadersgl_.version;
|
|
@@ -65165,7 +65165,7 @@ if (nodeVersion2 < 18) {
|
|
|
65165
65165
|
}
|
|
65166
65166
|
|
|
65167
65167
|
// src/lib/utils/version.ts
|
|
65168
|
-
var VERSION2 = true ? "4.2.0
|
|
65168
|
+
var VERSION2 = true ? "4.2.0" : "latest";
|
|
65169
65169
|
|
|
65170
65170
|
// src/lib/parsers/basis-module-loader.ts
|
|
65171
65171
|
var BASIS_EXTERNAL_LIBRARIES = {
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
);
|
|
11
11
|
globalThis._loadersgl_.version = NPM_TAG;
|
|
12
12
|
} else {
|
|
13
|
-
globalThis._loadersgl_.version = "4.2.0
|
|
13
|
+
globalThis._loadersgl_.version = "4.2.0";
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
return globalThis._loadersgl_.version;
|
|
@@ -249,7 +249,7 @@
|
|
|
249
249
|
}
|
|
250
250
|
|
|
251
251
|
// src/lib/utils/version.ts
|
|
252
|
-
var VERSION2 = true ? "4.2.0
|
|
252
|
+
var VERSION2 = true ? "4.2.0" : "latest";
|
|
253
253
|
|
|
254
254
|
// src/lib/parsers/basis-module-loader.ts
|
|
255
255
|
var BASIS_EXTERNAL_LIBRARIES = {
|
|
@@ -4,4 +4,4 @@
|
|
|
4
4
|
// Version constant cannot be imported, it needs to correspond to the build version of **this** module.
|
|
5
5
|
// __VERSION__ is injected by babel-plugin-version-inline
|
|
6
6
|
// @ts-ignore TS2304: Cannot find name '__VERSION__'.
|
|
7
|
-
export const VERSION = typeof "4.2.0
|
|
7
|
+
export const VERSION = typeof "4.2.0" !== 'undefined' ? "4.2.0" : 'latest';
|
package/dist/npy-worker.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/textures",
|
|
3
|
-
"version": "4.2.
|
|
3
|
+
"version": "4.2.1",
|
|
4
4
|
"description": "Framework-independent loaders for compressed and super compressed (basis) textures ",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -54,10 +54,10 @@
|
|
|
54
54
|
"build-crunch-worker": "esbuild src/workers/crunch-worker.ts --outfile=dist/crunch-worker.js --target=esnext --bundle --define:__VERSION__=\\\"$npm_package_version\\\""
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"@loaders.gl/images": "4.2.
|
|
58
|
-
"@loaders.gl/loader-utils": "4.2.
|
|
59
|
-
"@loaders.gl/schema": "4.2.
|
|
60
|
-
"@loaders.gl/worker-utils": "4.2.
|
|
57
|
+
"@loaders.gl/images": "4.2.1",
|
|
58
|
+
"@loaders.gl/loader-utils": "4.2.1",
|
|
59
|
+
"@loaders.gl/schema": "4.2.1",
|
|
60
|
+
"@loaders.gl/worker-utils": "4.2.1",
|
|
61
61
|
"@math.gl/types": "^4.0.1",
|
|
62
62
|
"ktx-parse": "^0.0.4",
|
|
63
63
|
"texture-compressor": "^1.0.2"
|
|
@@ -65,5 +65,5 @@
|
|
|
65
65
|
"peerDependencies": {
|
|
66
66
|
"@loaders.gl/core": "^4.0.0"
|
|
67
67
|
},
|
|
68
|
-
"gitHead": "
|
|
68
|
+
"gitHead": "b2ea799ff9f233ab8af0a6c3696e28ddf6e3c5a3"
|
|
69
69
|
}
|