@loaders.gl/textures 4.4.0-alpha.2 → 4.4.0
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/README.md +197 -1
- package/dist/basis-loader.d.ts +15 -10
- package/dist/basis-loader.d.ts.map +1 -1
- package/dist/basis-loader.js +1 -1
- package/dist/basis-loader.js.map +1 -0
- package/dist/basis-worker-node.js +932 -10040
- package/dist/basis-worker.d.ts +2 -0
- package/dist/basis-worker.d.ts.map +1 -0
- package/dist/basis-worker.js +337 -151
- package/dist/basis-worker.js.map +1 -0
- package/dist/compressed-texture-loader.d.ts +2 -5
- package/dist/compressed-texture-loader.d.ts.map +1 -1
- package/dist/compressed-texture-loader.js +2 -3
- package/dist/compressed-texture-loader.js.map +1 -0
- package/dist/compressed-texture-worker.d.ts +2 -0
- package/dist/compressed-texture-worker.d.ts.map +1 -0
- package/dist/compressed-texture-worker.js +1148 -365
- package/dist/compressed-texture-worker.js.map +1 -0
- package/dist/compressed-texture-writer.js +1 -0
- package/dist/compressed-texture-writer.js.map +1 -0
- package/dist/crunch-loader.d.ts +1 -5
- package/dist/crunch-loader.d.ts.map +1 -1
- package/dist/crunch-loader.js +2 -3
- package/dist/crunch-loader.js.map +1 -0
- package/dist/crunch-worker.d.ts +2 -0
- package/dist/crunch-worker.d.ts.map +1 -0
- package/dist/crunch-worker.js +204 -92
- package/dist/crunch-worker.js.map +1 -0
- package/dist/dist.dev.js +2687 -677
- package/dist/dist.min.js +1 -2
- package/dist/index.cjs +1644 -428
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +13 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -0
- package/dist/ktx2-basis-writer-worker-node.js +574 -9832
- package/dist/ktx2-basis-writer-worker.d.ts +2 -0
- package/dist/ktx2-basis-writer-worker.d.ts.map +1 -0
- package/dist/ktx2-basis-writer-worker.js +45 -7
- package/dist/ktx2-basis-writer-worker.js.map +1 -0
- package/dist/ktx2-basis-writer.js +1 -0
- package/dist/ktx2-basis-writer.js.map +1 -0
- package/dist/lib/composite-image/image-texture-cube.d.ts +47 -0
- package/dist/lib/composite-image/image-texture-cube.d.ts.map +1 -0
- package/dist/lib/composite-image/image-texture-cube.js +42 -0
- package/dist/lib/composite-image/image-texture-cube.js.map +1 -0
- package/dist/lib/composite-image/parse-composite-image.d.ts +43 -0
- package/dist/lib/composite-image/parse-composite-image.d.ts.map +1 -0
- package/dist/lib/composite-image/parse-composite-image.js +437 -0
- package/dist/lib/composite-image/parse-composite-image.js.map +1 -0
- package/dist/lib/encoders/encode-ktx.d.ts +1 -1
- package/dist/lib/encoders/encode-ktx.d.ts.map +1 -1
- package/dist/lib/encoders/encode-ktx.js +1 -0
- package/dist/lib/encoders/encode-ktx.js.map +1 -0
- package/dist/lib/encoders/encode-ktx2-basis-texture.d.ts +2 -1
- package/dist/lib/encoders/encode-ktx2-basis-texture.d.ts.map +1 -1
- package/dist/lib/encoders/encode-ktx2-basis-texture.js +3 -1
- package/dist/lib/encoders/encode-ktx2-basis-texture.js.map +1 -0
- package/dist/lib/encoders/encode-texture.js +1 -0
- package/dist/lib/encoders/encode-texture.js.map +1 -0
- package/dist/lib/gl-extensions.d.ts +166 -58
- package/dist/lib/gl-extensions.d.ts.map +1 -1
- package/dist/lib/gl-extensions.js +178 -66
- package/dist/lib/gl-extensions.js.map +1 -0
- package/dist/lib/gl-types.d.ts +4 -0
- package/dist/lib/gl-types.d.ts.map +1 -0
- package/dist/lib/gl-types.js +5 -0
- package/dist/lib/gl-types.js.map +1 -0
- package/dist/lib/parsers/basis-module-loader.d.ts +3 -2
- package/dist/lib/parsers/basis-module-loader.d.ts.map +1 -1
- package/dist/lib/parsers/basis-module-loader.js +1 -0
- package/dist/lib/parsers/basis-module-loader.js.map +1 -0
- package/dist/lib/parsers/crunch-module-loader.d.ts +2 -2
- package/dist/lib/parsers/crunch-module-loader.d.ts.map +1 -1
- package/dist/lib/parsers/crunch-module-loader.js +1 -0
- package/dist/lib/parsers/crunch-module-loader.js.map +1 -0
- package/dist/lib/parsers/parse-basis.d.ts +34 -2
- package/dist/lib/parsers/parse-basis.d.ts.map +1 -1
- package/dist/lib/parsers/parse-basis.js +265 -64
- package/dist/lib/parsers/parse-basis.js.map +1 -0
- package/dist/lib/parsers/parse-compressed-texture.js +1 -0
- package/dist/lib/parsers/parse-compressed-texture.js.map +1 -0
- package/dist/lib/parsers/parse-crunch.d.ts.map +1 -1
- package/dist/lib/parsers/parse-crunch.js +7 -6
- package/dist/lib/parsers/parse-crunch.js.map +1 -0
- package/dist/lib/parsers/parse-dds.d.ts.map +1 -1
- package/dist/lib/parsers/parse-dds.js +11 -11
- package/dist/lib/parsers/parse-dds.js.map +1 -0
- package/dist/lib/parsers/parse-hdr.d.ts +21 -0
- package/dist/lib/parsers/parse-hdr.d.ts.map +1 -0
- package/dist/lib/parsers/parse-hdr.js +305 -0
- package/dist/lib/parsers/parse-hdr.js.map +1 -0
- package/dist/lib/parsers/parse-ktx.d.ts.map +1 -1
- package/dist/lib/parsers/parse-ktx.js +11 -3
- package/dist/lib/parsers/parse-ktx.js.map +1 -0
- package/dist/lib/parsers/parse-npy.js +1 -0
- package/dist/lib/parsers/parse-npy.js.map +1 -0
- package/dist/lib/parsers/parse-pvr.d.ts.map +1 -1
- package/dist/lib/parsers/parse-pvr.js +32 -74
- package/dist/lib/parsers/parse-pvr.js.map +1 -0
- package/dist/lib/texture-api/async-deep-map.js +1 -0
- package/dist/lib/texture-api/async-deep-map.js.map +1 -0
- package/dist/lib/texture-api/deep-load.js +1 -0
- package/dist/lib/texture-api/deep-load.js.map +1 -0
- package/dist/lib/texture-api/generate-url.d.ts.map +1 -1
- package/dist/lib/texture-api/generate-url.js +3 -10
- package/dist/lib/texture-api/generate-url.js.map +1 -0
- package/dist/lib/texture-api/load-image-array.d.ts +6 -3
- package/dist/lib/texture-api/load-image-array.d.ts.map +1 -1
- package/dist/lib/texture-api/load-image-array.js +6 -3
- package/dist/lib/texture-api/load-image-array.js.map +1 -0
- package/dist/lib/texture-api/load-image-cube.d.ts +7 -11
- package/dist/lib/texture-api/load-image-cube.d.ts.map +1 -1
- package/dist/lib/texture-api/load-image-cube.js +9 -20
- package/dist/lib/texture-api/load-image-cube.js.map +1 -0
- package/dist/lib/texture-api/load-image.d.ts +6 -3
- package/dist/lib/texture-api/load-image.d.ts.map +1 -1
- package/dist/lib/texture-api/load-image.js +9 -4
- package/dist/lib/texture-api/load-image.js.map +1 -0
- package/dist/lib/texture-api/texture-api-types.d.ts +13 -0
- package/dist/lib/texture-api/texture-api-types.d.ts.map +1 -1
- package/dist/lib/texture-api/texture-api-types.js +1 -0
- package/dist/lib/texture-api/texture-api-types.js.map +1 -0
- package/dist/lib/utils/detect-supported-texture-formats.d.ts +14 -0
- package/dist/lib/utils/detect-supported-texture-formats.d.ts.map +1 -0
- package/dist/lib/utils/detect-supported-texture-formats.js +197 -0
- package/dist/lib/utils/detect-supported-texture-formats.js.map +1 -0
- package/dist/lib/utils/extract-mipmap-images.d.ts +6 -2
- package/dist/lib/utils/extract-mipmap-images.d.ts.map +1 -1
- package/dist/lib/utils/extract-mipmap-images.js +14 -2
- package/dist/lib/utils/extract-mipmap-images.js.map +1 -0
- package/dist/lib/utils/ktx-format-helper.d.ts +9 -1
- package/dist/lib/utils/ktx-format-helper.d.ts.map +1 -1
- package/dist/lib/utils/ktx-format-helper.js +77 -109
- package/dist/lib/utils/ktx-format-helper.js.map +1 -0
- package/dist/lib/utils/texture-format-map.d.ts +10 -0
- package/dist/lib/utils/texture-format-map.d.ts.map +1 -0
- package/dist/lib/utils/texture-format-map.js +87 -0
- package/dist/lib/utils/texture-format-map.js.map +1 -0
- package/dist/lib/utils/version.js +2 -1
- package/dist/lib/utils/version.js.map +1 -0
- package/dist/libs/libs/README.md +9 -0
- package/dist/libs/libs/basis_encoder.js +21 -0
- package/dist/libs/libs/basis_encoder.wasm +0 -0
- package/dist/libs/libs/basis_transcoder.js +22 -0
- package/dist/libs/libs/basis_transcoder.wasm +0 -0
- package/dist/libs/libs/crunch.js +136 -0
- package/dist/npy-loader.d.ts +2 -2
- package/dist/npy-loader.js +1 -0
- package/dist/npy-loader.js.map +1 -0
- package/dist/npy-worker.d.ts +2 -0
- package/dist/npy-worker.d.ts.map +1 -0
- package/dist/npy-worker.js +5 -2
- package/dist/npy-worker.js.map +1 -0
- package/dist/radiance-hdr-loader.d.ts +25 -0
- package/dist/radiance-hdr-loader.d.ts.map +1 -0
- package/dist/radiance-hdr-loader.js +23 -0
- package/dist/radiance-hdr-loader.js.map +1 -0
- package/dist/texture-array-loader.d.ts +25 -0
- package/dist/texture-array-loader.d.ts.map +1 -0
- package/dist/texture-array-loader.js +24 -0
- package/dist/texture-array-loader.js.map +1 -0
- package/dist/texture-cube-array-loader.d.ts +25 -0
- package/dist/texture-cube-array-loader.d.ts.map +1 -0
- package/dist/texture-cube-array-loader.js +24 -0
- package/dist/texture-cube-array-loader.js.map +1 -0
- package/dist/texture-cube-loader.d.ts +25 -0
- package/dist/texture-cube-loader.d.ts.map +1 -0
- package/dist/texture-cube-loader.js +24 -0
- package/dist/texture-cube-loader.js.map +1 -0
- package/dist/texture-loader.d.ts +25 -0
- package/dist/texture-loader.d.ts.map +1 -0
- package/dist/texture-loader.js +24 -0
- package/dist/texture-loader.js.map +1 -0
- package/dist/workers/basis-worker-node.js +1 -0
- package/dist/workers/basis-worker-node.js.map +1 -0
- package/dist/workers/basis-worker.js +1 -0
- package/dist/workers/basis-worker.js.map +1 -0
- package/dist/workers/compressed-texture-worker.js +1 -1
- package/dist/workers/compressed-texture-worker.js.map +1 -0
- package/dist/workers/crunch-worker.d.ts +1 -3
- package/dist/workers/crunch-worker.d.ts.map +1 -1
- package/dist/workers/crunch-worker.js +1 -0
- package/dist/workers/crunch-worker.js.map +1 -0
- package/dist/workers/ktx2-basis-writer-worker-node.js +1 -0
- package/dist/workers/ktx2-basis-writer-worker-node.js.map +1 -0
- package/dist/workers/ktx2-basis-writer-worker.js +1 -0
- package/dist/workers/ktx2-basis-writer-worker.js.map +1 -0
- package/dist/workers/npy-worker.js +1 -0
- package/dist/workers/npy-worker.js.map +1 -0
- package/package.json +27 -6
- package/src/basis-loader.ts +19 -9
- package/src/basis-worker.ts +7 -0
- package/src/compressed-texture-loader.ts +3 -7
- package/src/compressed-texture-worker.ts +6 -0
- package/src/crunch-loader.ts +1 -5
- package/src/crunch-worker.ts +6 -0
- package/src/index.ts +21 -4
- package/src/ktx2-basis-writer-worker.ts +6 -0
- package/src/lib/composite-image/image-texture-cube.ts +49 -0
- package/src/lib/composite-image/parse-composite-image.ts +699 -0
- package/src/lib/encoders/encode-ktx.ts +1 -1
- package/src/lib/encoders/encode-ktx2-basis-texture.ts +4 -2
- package/src/lib/gl-extensions.ts +188 -81
- package/src/lib/gl-types.ts +136 -0
- package/src/lib/parsers/basis-module-loader.ts +5 -5
- package/src/lib/parsers/crunch-module-loader.ts +4 -4
- package/src/lib/parsers/parse-basis.ts +358 -66
- package/src/lib/parsers/parse-crunch.ts +11 -8
- package/src/lib/parsers/parse-dds.ts +11 -12
- package/src/lib/parsers/parse-hdr.ts +426 -0
- package/src/lib/parsers/parse-ktx.ts +13 -3
- package/src/lib/parsers/parse-pvr.ts +33 -75
- package/src/lib/texture-api/generate-url.ts +2 -12
- package/src/lib/texture-api/load-image-array.ts +15 -6
- package/src/lib/texture-api/load-image-cube.ts +20 -34
- package/src/lib/texture-api/load-image.ts +19 -8
- package/src/lib/texture-api/texture-api-types.ts +15 -0
- package/src/lib/utils/detect-supported-texture-formats.ts +210 -0
- package/src/lib/utils/extract-mipmap-images.ts +23 -4
- package/src/lib/utils/ktx-format-helper.ts +135 -111
- package/src/lib/utils/texture-format-map.ts +162 -0
- package/src/npy-worker.ts +6 -0
- package/src/radiance-hdr-loader.ts +36 -0
- package/src/texture-array-loader.ts +46 -0
- package/src/texture-cube-array-loader.ts +49 -0
- package/src/texture-cube-loader.ts +46 -0
- package/src/texture-loader.ts +49 -0
- package/src/workers/compressed-texture-worker.ts +0 -1
- package/dist/lib/utils/texture-formats.d.ts +0 -8
- package/dist/lib/utils/texture-formats.d.ts.map +0 -1
- package/dist/lib/utils/texture-formats.js +0 -50
- package/src/lib/utils/texture-formats.ts +0 -59
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"basis-worker.d.ts","sourceRoot":"","sources":["../src/basis-worker.ts"],"names":[],"mappings":""}
|
package/dist/basis-worker.js
CHANGED
|
@@ -20,8 +20,9 @@
|
|
|
20
20
|
"loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN."
|
|
21
21
|
);
|
|
22
22
|
globalThis._loadersgl_.version = NPM_TAG;
|
|
23
|
+
warningIssued = true;
|
|
23
24
|
} else {
|
|
24
|
-
globalThis._loadersgl_.version = "4.4.0
|
|
25
|
+
globalThis._loadersgl_.version = "4.4.0";
|
|
25
26
|
}
|
|
26
27
|
}
|
|
27
28
|
return globalThis._loadersgl_.version;
|
|
@@ -175,6 +176,16 @@
|
|
|
175
176
|
|
|
176
177
|
// ../worker-utils/src/lib/library-utils/library-utils.ts
|
|
177
178
|
var loadLibraryPromises = {};
|
|
179
|
+
function extractLoadLibraryOptions(options = {}) {
|
|
180
|
+
const useLocalLibraries = options.useLocalLibraries ?? options.core?.useLocalLibraries;
|
|
181
|
+
const CDN = options.CDN ?? options.core?.CDN;
|
|
182
|
+
const modules = options.modules;
|
|
183
|
+
return {
|
|
184
|
+
...useLocalLibraries !== void 0 ? { useLocalLibraries } : {},
|
|
185
|
+
...CDN !== void 0 ? { CDN } : {},
|
|
186
|
+
...modules !== void 0 ? { modules } : {}
|
|
187
|
+
};
|
|
188
|
+
}
|
|
178
189
|
async function loadLibrary(libraryUrl, moduleName = null, options = {}, libraryName = null) {
|
|
179
190
|
if (moduleName) {
|
|
180
191
|
libraryUrl = getLibraryUrl(libraryUrl, moduleName, options, libraryName);
|
|
@@ -184,6 +195,9 @@
|
|
|
184
195
|
return await loadLibraryPromises[libraryUrl];
|
|
185
196
|
}
|
|
186
197
|
function getLibraryUrl(library, moduleName, options = {}, libraryName = null) {
|
|
198
|
+
if (options?.core) {
|
|
199
|
+
throw new Error("loadLibrary: options.core must be pre-normalized");
|
|
200
|
+
}
|
|
187
201
|
if (!options.useLocalLibraries && library.startsWith("http")) {
|
|
188
202
|
return library;
|
|
189
203
|
}
|
|
@@ -209,10 +223,20 @@
|
|
|
209
223
|
return await loadAsArrayBuffer(libraryUrl);
|
|
210
224
|
}
|
|
211
225
|
if (!isBrowser) {
|
|
226
|
+
const { requireFromFile } = globalThis.loaders || {};
|
|
212
227
|
try {
|
|
213
|
-
const
|
|
214
|
-
|
|
228
|
+
const result = await requireFromFile?.(libraryUrl);
|
|
229
|
+
if (result || !libraryUrl.includes("/dist/libs/")) {
|
|
230
|
+
return result;
|
|
231
|
+
}
|
|
232
|
+
return await requireFromFile?.(libraryUrl.replace("/dist/libs/", "/src/libs/"));
|
|
215
233
|
} catch (error) {
|
|
234
|
+
if (libraryUrl.includes("/dist/libs/")) {
|
|
235
|
+
try {
|
|
236
|
+
return await requireFromFile?.(libraryUrl.replace("/dist/libs/", "/src/libs/"));
|
|
237
|
+
} catch {
|
|
238
|
+
}
|
|
239
|
+
}
|
|
216
240
|
console.error(error);
|
|
217
241
|
return null;
|
|
218
242
|
}
|
|
@@ -248,7 +272,14 @@
|
|
|
248
272
|
const response = await fetch(url);
|
|
249
273
|
return await response.arrayBuffer();
|
|
250
274
|
}
|
|
251
|
-
|
|
275
|
+
try {
|
|
276
|
+
return await readFileAsArrayBuffer(url);
|
|
277
|
+
} catch {
|
|
278
|
+
if (url.includes("/dist/libs/")) {
|
|
279
|
+
return await readFileAsArrayBuffer(url.replace("/dist/libs/", "/src/libs/"));
|
|
280
|
+
}
|
|
281
|
+
throw new Error(`Failed to load ArrayBuffer from ${url}`);
|
|
282
|
+
}
|
|
252
283
|
}
|
|
253
284
|
async function loadAsText(url) {
|
|
254
285
|
const { readFileAsText } = globalThis.loaders || {};
|
|
@@ -256,7 +287,14 @@
|
|
|
256
287
|
const response = await fetch(url);
|
|
257
288
|
return await response.text();
|
|
258
289
|
}
|
|
259
|
-
|
|
290
|
+
try {
|
|
291
|
+
return await readFileAsText(url);
|
|
292
|
+
} catch {
|
|
293
|
+
if (url.includes("/dist/libs/")) {
|
|
294
|
+
return await readFileAsText(url.replace("/dist/libs/", "/src/libs/"));
|
|
295
|
+
}
|
|
296
|
+
throw new Error(`Failed to load text from ${url}`);
|
|
297
|
+
}
|
|
260
298
|
}
|
|
261
299
|
|
|
262
300
|
// ../loader-utils/src/lib/worker-loader-utils/create-loader-worker.ts
|
|
@@ -335,13 +373,16 @@
|
|
|
335
373
|
options = {
|
|
336
374
|
...options,
|
|
337
375
|
modules: loader && loader.options && loader.options.modules || {},
|
|
338
|
-
|
|
376
|
+
core: {
|
|
377
|
+
...options.core,
|
|
378
|
+
worker: false
|
|
379
|
+
}
|
|
339
380
|
};
|
|
340
381
|
return await parser(data, { ...options }, context, loader);
|
|
341
382
|
}
|
|
342
383
|
|
|
343
384
|
// src/lib/utils/version.ts
|
|
344
|
-
var VERSION2 = true ? "4.4.0
|
|
385
|
+
var VERSION2 = true ? "4.4.0" : "latest";
|
|
345
386
|
|
|
346
387
|
// src/lib/parsers/basis-module-loader.ts
|
|
347
388
|
var BASIS_EXTERNAL_LIBRARIES = {
|
|
@@ -421,104 +462,117 @@
|
|
|
421
462
|
}
|
|
422
463
|
|
|
423
464
|
// src/lib/gl-extensions.ts
|
|
424
|
-
var
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: 37496,
|
|
440
|
-
COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: 37497,
|
|
441
|
-
// WEBGL_compressed_texture_pvrtc
|
|
442
|
-
COMPRESSED_RGB_PVRTC_4BPPV1_IMG: 35840,
|
|
443
|
-
COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: 35842,
|
|
444
|
-
COMPRESSED_RGB_PVRTC_2BPPV1_IMG: 35841,
|
|
445
|
-
COMPRESSED_RGBA_PVRTC_2BPPV1_IMG: 35843,
|
|
446
|
-
// WEBGL_compressed_texture_etc1
|
|
447
|
-
COMPRESSED_RGB_ETC1_WEBGL: 36196,
|
|
448
|
-
// WEBGL_compressed_texture_atc
|
|
449
|
-
COMPRESSED_RGB_ATC_WEBGL: 35986,
|
|
450
|
-
COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL: 35987,
|
|
451
|
-
COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL: 34798,
|
|
452
|
-
// WEBGL_compressed_texture_astc
|
|
453
|
-
COMPRESSED_RGBA_ASTC_4X4_KHR: 37808,
|
|
454
|
-
COMPRESSED_RGBA_ASTC_5X4_KHR: 37809,
|
|
455
|
-
COMPRESSED_RGBA_ASTC_5X5_KHR: 37810,
|
|
456
|
-
COMPRESSED_RGBA_ASTC_6X5_KHR: 37811,
|
|
457
|
-
COMPRESSED_RGBA_ASTC_6X6_KHR: 37812,
|
|
458
|
-
COMPRESSED_RGBA_ASTC_8X5_KHR: 37813,
|
|
459
|
-
COMPRESSED_RGBA_ASTC_8X6_KHR: 37814,
|
|
460
|
-
COMPRESSED_RGBA_ASTC_8X8_KHR: 37815,
|
|
461
|
-
COMPRESSED_RGBA_ASTC_10X5_KHR: 37816,
|
|
462
|
-
COMPRESSED_RGBA_ASTC_10X6_KHR: 37817,
|
|
463
|
-
COMPRESSED_RGBA_ASTC_10X8_KHR: 37818,
|
|
464
|
-
COMPRESSED_RGBA_ASTC_10X10_KHR: 37819,
|
|
465
|
-
COMPRESSED_RGBA_ASTC_12X10_KHR: 37820,
|
|
466
|
-
COMPRESSED_RGBA_ASTC_12X12_KHR: 37821,
|
|
467
|
-
COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR: 37840,
|
|
468
|
-
COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR: 37841,
|
|
469
|
-
COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR: 37842,
|
|
470
|
-
COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR: 37843,
|
|
471
|
-
COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR: 37844,
|
|
472
|
-
COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR: 37845,
|
|
473
|
-
COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR: 37846,
|
|
474
|
-
COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR: 37847,
|
|
475
|
-
COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR: 37848,
|
|
476
|
-
COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR: 37849,
|
|
477
|
-
COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR: 37850,
|
|
478
|
-
COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR: 37851,
|
|
479
|
-
COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR: 37852,
|
|
480
|
-
COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR: 37853,
|
|
481
|
-
// EXT_texture_compression_rgtc
|
|
482
|
-
COMPRESSED_RED_RGTC1_EXT: 36283,
|
|
483
|
-
COMPRESSED_SIGNED_RED_RGTC1_EXT: 36284,
|
|
484
|
-
COMPRESSED_RED_GREEN_RGTC2_EXT: 36285,
|
|
485
|
-
COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT: 36286,
|
|
486
|
-
// WEBGL_compressed_texture_s3tc_srgb
|
|
487
|
-
COMPRESSED_SRGB_S3TC_DXT1_EXT: 35916,
|
|
488
|
-
COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: 35917,
|
|
489
|
-
COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: 35918,
|
|
490
|
-
COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: 35919
|
|
491
|
-
};
|
|
465
|
+
var GL_RGBA4 = 32854;
|
|
466
|
+
var GL_RGBA8 = 32856;
|
|
467
|
+
var GL_RGB565 = 36194;
|
|
468
|
+
var GL_COMPRESSED_RGB_S3TC_DXT1_EXT = 33776;
|
|
469
|
+
var GL_COMPRESSED_RGBA_S3TC_DXT5_EXT = 33779;
|
|
470
|
+
var GL_COMPRESSED_RGBA8_ETC2_EAC = 37493;
|
|
471
|
+
var GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 35840;
|
|
472
|
+
var GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 35842;
|
|
473
|
+
var GL_COMPRESSED_RGB_ETC1_WEBGL = 36196;
|
|
474
|
+
var GL_COMPRESSED_RGB_ATC_WEBGL = 35986;
|
|
475
|
+
var GL_COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL = 34798;
|
|
476
|
+
var GL_COMPRESSED_RGBA_ASTC_4x4_KHR = 37808;
|
|
477
|
+
var GL_COMPRESSED_RED_RGTC1_EXT = 36283;
|
|
478
|
+
var GL_COMPRESSED_RED_GREEN_RGTC2_EXT = 36285;
|
|
479
|
+
var GL_COMPRESSED_RGBA_BPTC_UNORM_EXT = 36492;
|
|
492
480
|
|
|
493
|
-
// src/lib/utils/texture-formats.ts
|
|
481
|
+
// src/lib/utils/detect-supported-texture-formats.ts
|
|
494
482
|
var BROWSER_PREFIXES = ["", "WEBKIT_", "MOZ_"];
|
|
495
|
-
var
|
|
483
|
+
var WEBGL_TEXTURE_FORMATS = {
|
|
496
484
|
/* eslint-disable camelcase */
|
|
497
|
-
WEBGL_compressed_texture_s3tc:
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
485
|
+
WEBGL_compressed_texture_s3tc: [
|
|
486
|
+
"bc1-rgb-unorm-webgl",
|
|
487
|
+
"bc1-rgba-unorm",
|
|
488
|
+
"bc2-rgba-unorm",
|
|
489
|
+
"bc3-rgba-unorm"
|
|
490
|
+
],
|
|
491
|
+
WEBGL_compressed_texture_s3tc_srgb: [
|
|
492
|
+
"bc1-rgb-unorm-srgb-webgl",
|
|
493
|
+
"bc1-rgba-unorm-srgb",
|
|
494
|
+
"bc2-rgba-unorm-srgb",
|
|
495
|
+
"bc3-rgba-unorm-srgb"
|
|
496
|
+
],
|
|
497
|
+
EXT_texture_compression_rgtc: ["bc4-r-unorm", "bc4-r-snorm", "bc5-rg-unorm", "bc5-rg-snorm"],
|
|
498
|
+
EXT_texture_compression_bptc: [
|
|
499
|
+
"bc6h-rgb-ufloat",
|
|
500
|
+
"bc6h-rgb-float",
|
|
501
|
+
"bc7-rgba-unorm",
|
|
502
|
+
"bc7-rgba-unorm-srgb"
|
|
503
|
+
],
|
|
504
|
+
WEBGL_compressed_texture_etc1: ["etc1-rgb-unorm-webgl"],
|
|
505
|
+
WEBGL_compressed_texture_etc: [
|
|
506
|
+
"etc2-rgb8unorm",
|
|
507
|
+
"etc2-rgb8unorm-srgb",
|
|
508
|
+
"etc2-rgb8a1unorm",
|
|
509
|
+
"etc2-rgb8a1unorm-srgb",
|
|
510
|
+
"etc2-rgba8unorm",
|
|
511
|
+
"etc2-rgba8unorm-srgb",
|
|
512
|
+
"eac-r11unorm",
|
|
513
|
+
"eac-r11snorm",
|
|
514
|
+
"eac-rg11unorm",
|
|
515
|
+
"eac-rg11snorm"
|
|
516
|
+
],
|
|
517
|
+
WEBGL_compressed_texture_pvrtc: [
|
|
518
|
+
"pvrtc-rgb4unorm-webgl",
|
|
519
|
+
"pvrtc-rgba4unorm-webgl",
|
|
520
|
+
"pvrtc-rgb2unorm-webgl",
|
|
521
|
+
"pvrtc-rgba2unorm-webgl"
|
|
522
|
+
],
|
|
523
|
+
WEBGL_compressed_texture_atc: [
|
|
524
|
+
"atc-rgb-unorm-webgl",
|
|
525
|
+
"atc-rgba-unorm-webgl",
|
|
526
|
+
"atc-rgbai-unorm-webgl"
|
|
527
|
+
],
|
|
528
|
+
WEBGL_compressed_texture_astc: [
|
|
529
|
+
"astc-4x4-unorm",
|
|
530
|
+
"astc-4x4-unorm-srgb",
|
|
531
|
+
"astc-5x4-unorm",
|
|
532
|
+
"astc-5x4-unorm-srgb",
|
|
533
|
+
"astc-5x5-unorm",
|
|
534
|
+
"astc-5x5-unorm-srgb",
|
|
535
|
+
"astc-6x5-unorm",
|
|
536
|
+
"astc-6x5-unorm-srgb",
|
|
537
|
+
"astc-6x6-unorm",
|
|
538
|
+
"astc-6x6-unorm-srgb",
|
|
539
|
+
"astc-8x5-unorm",
|
|
540
|
+
"astc-8x5-unorm-srgb",
|
|
541
|
+
"astc-8x6-unorm",
|
|
542
|
+
"astc-8x6-unorm-srgb",
|
|
543
|
+
"astc-8x8-unorm",
|
|
544
|
+
"astc-8x8-unorm-srgb",
|
|
545
|
+
"astc-10x5-unorm",
|
|
546
|
+
"astc-10x5-unorm-srgb",
|
|
547
|
+
"astc-10x6-unorm",
|
|
548
|
+
"astc-10x6-unorm-srgb",
|
|
549
|
+
"astc-10x8-unorm",
|
|
550
|
+
"astc-10x8-unorm-srgb",
|
|
551
|
+
"astc-10x10-unorm",
|
|
552
|
+
"astc-10x10-unorm-srgb",
|
|
553
|
+
"astc-12x10-unorm",
|
|
554
|
+
"astc-12x10-unorm-srgb",
|
|
555
|
+
"astc-12x12-unorm",
|
|
556
|
+
"astc-12x12-unorm-srgb"
|
|
557
|
+
]
|
|
505
558
|
/* eslint-enable camelcase */
|
|
506
559
|
};
|
|
507
|
-
var
|
|
508
|
-
function
|
|
509
|
-
if (!
|
|
560
|
+
var textureFormats = null;
|
|
561
|
+
function detectSupportedTextureFormats(gl) {
|
|
562
|
+
if (!textureFormats) {
|
|
510
563
|
gl = gl || getWebGLContext() || void 0;
|
|
511
|
-
|
|
564
|
+
textureFormats = /* @__PURE__ */ new Set();
|
|
512
565
|
for (const prefix of BROWSER_PREFIXES) {
|
|
513
|
-
for (const extension in
|
|
566
|
+
for (const extension in WEBGL_TEXTURE_FORMATS) {
|
|
514
567
|
if (gl && gl.getExtension(`${prefix}${extension}`)) {
|
|
515
|
-
const
|
|
516
|
-
|
|
568
|
+
for (const textureFormat of WEBGL_TEXTURE_FORMATS[extension]) {
|
|
569
|
+
textureFormats.add(textureFormat);
|
|
570
|
+
}
|
|
517
571
|
}
|
|
518
572
|
}
|
|
519
573
|
}
|
|
520
574
|
}
|
|
521
|
-
return
|
|
575
|
+
return textureFormats;
|
|
522
576
|
}
|
|
523
577
|
function getWebGLContext() {
|
|
524
578
|
try {
|
|
@@ -563,73 +617,154 @@
|
|
|
563
617
|
}
|
|
564
618
|
|
|
565
619
|
// src/lib/parsers/parse-basis.ts
|
|
566
|
-
var
|
|
620
|
+
var basisTranscodingLock = Promise.resolve();
|
|
621
|
+
var BASIS_FORMAT_TO_OUTPUT_OPTIONS = {
|
|
567
622
|
etc1: {
|
|
568
623
|
basisFormat: 0,
|
|
569
624
|
compressed: true,
|
|
570
|
-
format:
|
|
625
|
+
format: GL_COMPRESSED_RGB_ETC1_WEBGL,
|
|
626
|
+
textureFormat: "etc1-rgb-unorm-webgl"
|
|
627
|
+
},
|
|
628
|
+
etc2: {
|
|
629
|
+
basisFormat: 1,
|
|
630
|
+
compressed: true,
|
|
631
|
+
format: GL_COMPRESSED_RGBA8_ETC2_EAC,
|
|
632
|
+
textureFormat: "etc2-rgba8unorm"
|
|
571
633
|
},
|
|
572
|
-
etc2: { basisFormat: 1, compressed: true },
|
|
573
634
|
bc1: {
|
|
574
635
|
basisFormat: 2,
|
|
575
636
|
compressed: true,
|
|
576
|
-
format:
|
|
637
|
+
format: GL_COMPRESSED_RGB_S3TC_DXT1_EXT,
|
|
638
|
+
textureFormat: "bc1-rgb-unorm-webgl"
|
|
577
639
|
},
|
|
578
640
|
bc3: {
|
|
579
641
|
basisFormat: 3,
|
|
580
642
|
compressed: true,
|
|
581
|
-
format:
|
|
643
|
+
format: GL_COMPRESSED_RGBA_S3TC_DXT5_EXT,
|
|
644
|
+
textureFormat: "bc3-rgba-unorm"
|
|
645
|
+
},
|
|
646
|
+
bc4: {
|
|
647
|
+
basisFormat: 4,
|
|
648
|
+
compressed: true,
|
|
649
|
+
format: GL_COMPRESSED_RED_RGTC1_EXT,
|
|
650
|
+
textureFormat: "bc4-r-unorm"
|
|
651
|
+
},
|
|
652
|
+
bc5: {
|
|
653
|
+
basisFormat: 5,
|
|
654
|
+
compressed: true,
|
|
655
|
+
format: GL_COMPRESSED_RED_GREEN_RGTC2_EXT,
|
|
656
|
+
textureFormat: "bc5-rg-unorm"
|
|
657
|
+
},
|
|
658
|
+
"bc7-m6-opaque-only": {
|
|
659
|
+
basisFormat: 6,
|
|
660
|
+
compressed: true,
|
|
661
|
+
format: GL_COMPRESSED_RGBA_BPTC_UNORM_EXT,
|
|
662
|
+
textureFormat: "bc7-rgba-unorm"
|
|
663
|
+
},
|
|
664
|
+
"bc7-m5": {
|
|
665
|
+
basisFormat: 7,
|
|
666
|
+
compressed: true,
|
|
667
|
+
format: GL_COMPRESSED_RGBA_BPTC_UNORM_EXT,
|
|
668
|
+
textureFormat: "bc7-rgba-unorm"
|
|
582
669
|
},
|
|
583
|
-
bc4: { basisFormat: 4, compressed: true },
|
|
584
|
-
bc5: { basisFormat: 5, compressed: true },
|
|
585
|
-
"bc7-m6-opaque-only": { basisFormat: 6, compressed: true },
|
|
586
|
-
"bc7-m5": { basisFormat: 7, compressed: true },
|
|
587
670
|
"pvrtc1-4-rgb": {
|
|
588
671
|
basisFormat: 8,
|
|
589
672
|
compressed: true,
|
|
590
|
-
format:
|
|
673
|
+
format: GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG,
|
|
674
|
+
textureFormat: "pvrtc-rgb4unorm-webgl"
|
|
591
675
|
},
|
|
592
676
|
"pvrtc1-4-rgba": {
|
|
593
677
|
basisFormat: 9,
|
|
594
678
|
compressed: true,
|
|
595
|
-
format:
|
|
679
|
+
format: GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,
|
|
680
|
+
textureFormat: "pvrtc-rgba4unorm-webgl"
|
|
596
681
|
},
|
|
597
682
|
"astc-4x4": {
|
|
598
683
|
basisFormat: 10,
|
|
599
684
|
compressed: true,
|
|
600
|
-
format:
|
|
685
|
+
format: GL_COMPRESSED_RGBA_ASTC_4x4_KHR,
|
|
686
|
+
textureFormat: "astc-4x4-unorm"
|
|
601
687
|
},
|
|
602
|
-
"atc-rgb": {
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
688
|
+
"atc-rgb": {
|
|
689
|
+
basisFormat: 11,
|
|
690
|
+
compressed: true,
|
|
691
|
+
format: GL_COMPRESSED_RGB_ATC_WEBGL,
|
|
692
|
+
textureFormat: "atc-rgb-unorm-webgl"
|
|
693
|
+
},
|
|
694
|
+
"atc-rgba-interpolated-alpha": {
|
|
695
|
+
basisFormat: 12,
|
|
696
|
+
compressed: true,
|
|
697
|
+
format: GL_COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL,
|
|
698
|
+
textureFormat: "atc-rgbai-unorm-webgl"
|
|
699
|
+
},
|
|
700
|
+
rgba32: {
|
|
701
|
+
basisFormat: 13,
|
|
702
|
+
compressed: false,
|
|
703
|
+
format: GL_RGBA8,
|
|
704
|
+
textureFormat: "rgba8unorm"
|
|
705
|
+
},
|
|
706
|
+
rgb565: {
|
|
707
|
+
basisFormat: 14,
|
|
708
|
+
compressed: false,
|
|
709
|
+
format: GL_RGB565,
|
|
710
|
+
textureFormat: "rgb565unorm-webgl"
|
|
711
|
+
},
|
|
712
|
+
bgr565: {
|
|
713
|
+
basisFormat: 15,
|
|
714
|
+
compressed: false,
|
|
715
|
+
format: GL_RGB565,
|
|
716
|
+
textureFormat: "rgb565unorm-webgl"
|
|
717
|
+
},
|
|
718
|
+
rgba4444: {
|
|
719
|
+
basisFormat: 16,
|
|
720
|
+
compressed: false,
|
|
721
|
+
format: GL_RGBA4,
|
|
722
|
+
textureFormat: "rgba4unorm-webgl"
|
|
723
|
+
}
|
|
608
724
|
};
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
}
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
725
|
+
var BASIS_FORMATS = Object.freeze(
|
|
726
|
+
Object.keys(BASIS_FORMAT_TO_OUTPUT_OPTIONS)
|
|
727
|
+
);
|
|
728
|
+
async function withBasisTranscodingLock(transcode) {
|
|
729
|
+
const previousLock = basisTranscodingLock;
|
|
730
|
+
let releaseLock;
|
|
731
|
+
basisTranscodingLock = new Promise((resolve) => {
|
|
732
|
+
releaseLock = resolve;
|
|
733
|
+
});
|
|
734
|
+
await previousLock;
|
|
735
|
+
try {
|
|
736
|
+
return await transcode();
|
|
737
|
+
} finally {
|
|
738
|
+
releaseLock();
|
|
739
|
+
}
|
|
740
|
+
}
|
|
741
|
+
async function parseBasis(data, options = {}) {
|
|
742
|
+
const loadLibraryOptions = extractLoadLibraryOptions(options);
|
|
743
|
+
return await withBasisTranscodingLock(async () => {
|
|
744
|
+
if (!options.basis?.containerFormat || options.basis.containerFormat === "auto") {
|
|
745
|
+
if (isKTX(data)) {
|
|
746
|
+
const fileConstructors = await loadBasisEncoderModule(loadLibraryOptions);
|
|
747
|
+
return parseKTX2File(fileConstructors.KTX2File, data, options);
|
|
627
748
|
}
|
|
628
|
-
|
|
629
|
-
default:
|
|
630
|
-
const { BasisFile } = await loadBasisTranscoderModule(options);
|
|
749
|
+
const { BasisFile } = await loadBasisTranscoderModule(loadLibraryOptions);
|
|
631
750
|
return parseBasisFile(BasisFile, data, options);
|
|
632
|
-
|
|
751
|
+
}
|
|
752
|
+
switch (options.basis.module) {
|
|
753
|
+
case "encoder":
|
|
754
|
+
const fileConstructors = await loadBasisEncoderModule(loadLibraryOptions);
|
|
755
|
+
switch (options.basis.containerFormat) {
|
|
756
|
+
case "ktx2":
|
|
757
|
+
return parseKTX2File(fileConstructors.KTX2File, data, options);
|
|
758
|
+
case "basis":
|
|
759
|
+
default:
|
|
760
|
+
return parseBasisFile(fileConstructors.BasisFile, data, options);
|
|
761
|
+
}
|
|
762
|
+
case "transcoder":
|
|
763
|
+
default:
|
|
764
|
+
const { BasisFile } = await loadBasisTranscoderModule(loadLibraryOptions);
|
|
765
|
+
return parseBasisFile(BasisFile, data, options);
|
|
766
|
+
}
|
|
767
|
+
});
|
|
633
768
|
}
|
|
634
769
|
function parseBasisFile(BasisFile, data, options) {
|
|
635
770
|
const basisFile = new BasisFile(new Uint8Array(data));
|
|
@@ -659,7 +794,7 @@
|
|
|
659
794
|
const hasAlpha = basisFile.getHasAlpha(
|
|
660
795
|
/* imageIndex, levelIndex */
|
|
661
796
|
);
|
|
662
|
-
const { compressed, format, basisFormat } = getBasisOptions(options, hasAlpha);
|
|
797
|
+
const { compressed, format, basisFormat, textureFormat } = getBasisOptions(options, hasAlpha);
|
|
663
798
|
const decodedSize = basisFile.getImageTranscodedSizeInBytes(imageIndex, levelIndex, basisFormat);
|
|
664
799
|
const decodedData = new Uint8Array(decodedSize);
|
|
665
800
|
if (!basisFile.transcodeImage(decodedData, imageIndex, levelIndex, basisFormat, 0, 0)) {
|
|
@@ -667,11 +802,13 @@
|
|
|
667
802
|
}
|
|
668
803
|
return {
|
|
669
804
|
// standard loaders.gl image category payload
|
|
805
|
+
shape: "texture-level",
|
|
670
806
|
width,
|
|
671
807
|
height,
|
|
672
808
|
data: decodedData,
|
|
673
809
|
compressed,
|
|
674
|
-
format,
|
|
810
|
+
...format !== void 0 ? { format } : {},
|
|
811
|
+
...textureFormat !== void 0 ? { textureFormat } : {},
|
|
675
812
|
// Additional fields
|
|
676
813
|
// Add levelSize field.
|
|
677
814
|
hasAlpha
|
|
@@ -696,7 +833,7 @@
|
|
|
696
833
|
}
|
|
697
834
|
function transcodeKTX2Image(ktx2File, levelIndex, options) {
|
|
698
835
|
const { alphaFlag, height, width } = ktx2File.getImageLevelInfo(levelIndex, 0, 0);
|
|
699
|
-
const { compressed, format, basisFormat } = getBasisOptions(options, alphaFlag);
|
|
836
|
+
const { compressed, format, basisFormat, textureFormat } = getBasisOptions(options, alphaFlag);
|
|
700
837
|
const decodedSize = ktx2File.getImageTranscodedSizeInBytes(
|
|
701
838
|
levelIndex,
|
|
702
839
|
0,
|
|
@@ -719,48 +856,98 @@
|
|
|
719
856
|
}
|
|
720
857
|
return {
|
|
721
858
|
// standard loaders.gl image category payload
|
|
859
|
+
shape: "texture-level",
|
|
722
860
|
width,
|
|
723
861
|
height,
|
|
724
862
|
data: decodedData,
|
|
725
863
|
compressed,
|
|
864
|
+
...format !== void 0 ? { format } : {},
|
|
865
|
+
...textureFormat !== void 0 ? { textureFormat } : {},
|
|
726
866
|
// Additional fields
|
|
727
867
|
levelSize: decodedSize,
|
|
728
|
-
hasAlpha: alphaFlag
|
|
729
|
-
format
|
|
868
|
+
hasAlpha: alphaFlag
|
|
730
869
|
};
|
|
731
870
|
}
|
|
732
871
|
function getBasisOptions(options, hasAlpha) {
|
|
733
|
-
let format = options
|
|
872
|
+
let format = options.basis?.format || "auto";
|
|
734
873
|
if (format === "auto") {
|
|
735
|
-
format = selectSupportedBasisFormat();
|
|
874
|
+
format = options.basis?.supportedTextureFormats ? selectSupportedBasisFormat(options.basis.supportedTextureFormats) : selectSupportedBasisFormat();
|
|
736
875
|
}
|
|
737
876
|
if (typeof format === "object") {
|
|
738
877
|
format = hasAlpha ? format.alpha : format.noAlpha;
|
|
739
878
|
}
|
|
740
|
-
|
|
741
|
-
|
|
879
|
+
const normalizedFormat = format.toLowerCase();
|
|
880
|
+
const basisOutputOptions = BASIS_FORMAT_TO_OUTPUT_OPTIONS[normalizedFormat];
|
|
881
|
+
if (!basisOutputOptions) {
|
|
882
|
+
throw new Error(`Unknown Basis format ${format}`);
|
|
883
|
+
}
|
|
884
|
+
return basisOutputOptions;
|
|
742
885
|
}
|
|
743
|
-
function selectSupportedBasisFormat() {
|
|
744
|
-
const
|
|
745
|
-
if (
|
|
886
|
+
function selectSupportedBasisFormat(supportedTextureFormats = detectSupportedTextureFormats()) {
|
|
887
|
+
const textureFormats2 = new Set(supportedTextureFormats);
|
|
888
|
+
if (hasSupportedTextureFormat(textureFormats2, ["astc-4x4-unorm", "astc-4x4-unorm-srgb"])) {
|
|
746
889
|
return "astc-4x4";
|
|
747
|
-
} else if (
|
|
890
|
+
} else if (hasSupportedTextureFormat(textureFormats2, ["bc7-rgba-unorm", "bc7-rgba-unorm-srgb"])) {
|
|
891
|
+
return {
|
|
892
|
+
alpha: "bc7-m5",
|
|
893
|
+
noAlpha: "bc7-m6-opaque-only"
|
|
894
|
+
};
|
|
895
|
+
} else if (hasSupportedTextureFormat(textureFormats2, [
|
|
896
|
+
"bc1-rgb-unorm-webgl",
|
|
897
|
+
"bc1-rgb-unorm-srgb-webgl",
|
|
898
|
+
"bc1-rgba-unorm",
|
|
899
|
+
"bc1-rgba-unorm-srgb",
|
|
900
|
+
"bc2-rgba-unorm",
|
|
901
|
+
"bc2-rgba-unorm-srgb",
|
|
902
|
+
"bc3-rgba-unorm",
|
|
903
|
+
"bc3-rgba-unorm-srgb"
|
|
904
|
+
])) {
|
|
748
905
|
return {
|
|
749
906
|
alpha: "bc3",
|
|
750
907
|
noAlpha: "bc1"
|
|
751
908
|
};
|
|
752
|
-
} else if (
|
|
909
|
+
} else if (hasSupportedTextureFormat(textureFormats2, [
|
|
910
|
+
"pvrtc-rgb4unorm-webgl",
|
|
911
|
+
"pvrtc-rgba4unorm-webgl",
|
|
912
|
+
"pvrtc-rgb2unorm-webgl",
|
|
913
|
+
"pvrtc-rgba2unorm-webgl"
|
|
914
|
+
])) {
|
|
753
915
|
return {
|
|
754
916
|
alpha: "pvrtc1-4-rgba",
|
|
755
917
|
noAlpha: "pvrtc1-4-rgb"
|
|
756
918
|
};
|
|
757
|
-
} else if (
|
|
758
|
-
|
|
759
|
-
|
|
919
|
+
} else if (hasSupportedTextureFormat(textureFormats2, [
|
|
920
|
+
"etc2-rgb8unorm",
|
|
921
|
+
"etc2-rgb8unorm-srgb",
|
|
922
|
+
"etc2-rgb8a1unorm",
|
|
923
|
+
"etc2-rgb8a1unorm-srgb",
|
|
924
|
+
"etc2-rgba8unorm",
|
|
925
|
+
"etc2-rgba8unorm-srgb",
|
|
926
|
+
"eac-r11unorm",
|
|
927
|
+
"eac-r11snorm",
|
|
928
|
+
"eac-rg11unorm",
|
|
929
|
+
"eac-rg11snorm"
|
|
930
|
+
])) {
|
|
760
931
|
return "etc2";
|
|
932
|
+
} else if (textureFormats2.has("etc1-rgb-unorm-webgl")) {
|
|
933
|
+
return "etc1";
|
|
934
|
+
} else if (hasSupportedTextureFormat(textureFormats2, [
|
|
935
|
+
"atc-rgb-unorm-webgl",
|
|
936
|
+
"atc-rgba-unorm-webgl",
|
|
937
|
+
"atc-rgbai-unorm-webgl"
|
|
938
|
+
])) {
|
|
939
|
+
return {
|
|
940
|
+
alpha: "atc-rgba-interpolated-alpha",
|
|
941
|
+
noAlpha: "atc-rgb"
|
|
942
|
+
};
|
|
761
943
|
}
|
|
762
944
|
return "rgb565";
|
|
763
945
|
}
|
|
946
|
+
function hasSupportedTextureFormat(supportedTextureFormats, candidateTextureFormats) {
|
|
947
|
+
return candidateTextureFormats.some(
|
|
948
|
+
(textureFormat) => supportedTextureFormats.has(textureFormat)
|
|
949
|
+
);
|
|
950
|
+
}
|
|
764
951
|
|
|
765
952
|
// src/basis-loader.ts
|
|
766
953
|
var BasisWorkerLoader = {
|
|
@@ -778,7 +965,6 @@
|
|
|
778
965
|
options: {
|
|
779
966
|
basis: {
|
|
780
967
|
format: "auto",
|
|
781
|
-
libraryPath: "libs/",
|
|
782
968
|
containerFormat: "auto",
|
|
783
969
|
module: "transcoder"
|
|
784
970
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"basis-worker.js","sourceRoot":"","sources":["../src/basis-worker.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAEpC,6EAA6E;AAC7E,gFAAgF;AAChF,MAAM,CAAC,IAAI,GAAG,CAAC,2BAA2B,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC"}
|