@loaders.gl/textures 3.1.3 → 4.0.0-alpha.5
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-loader.js +24 -37
- package/dist/basis-loader.js.map +1 -0
- package/dist/basis-worker.js +13 -14
- package/dist/bundle.js +2 -2
- package/dist/bundle.js.map +1 -0
- package/dist/compressed-texture-loader.d.ts +1 -1
- package/dist/compressed-texture-loader.js +36 -59
- package/dist/compressed-texture-loader.js.map +1 -0
- package/dist/compressed-texture-worker.js +14 -15
- package/dist/compressed-texture-writer.js +21 -27
- package/dist/compressed-texture-writer.js.map +1 -0
- package/dist/crunch-loader.js +16 -23
- package/dist/crunch-loader.js.map +1 -0
- package/dist/crunch-worker.js +18 -18
- package/dist/dist.min.js +13 -13
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -37
- package/dist/index.js.map +1 -0
- package/dist/ktx2-basis-universal-texture-writer.js +17 -24
- package/dist/ktx2-basis-universal-texture-writer.js.map +1 -0
- package/dist/lib/encoders/encode-ktx.js +5 -9
- package/dist/lib/encoders/encode-ktx.js.map +1 -0
- package/dist/lib/encoders/encode-ktx2-basis-texture.js +34 -40
- package/dist/lib/encoders/encode-ktx2-basis-texture.js.map +1 -0
- package/dist/lib/encoders/encode-texture.js +11 -26
- package/dist/lib/encoders/encode-texture.js.map +1 -0
- package/dist/lib/gl-extensions.js +60 -71
- package/dist/lib/gl-extensions.js.map +1 -0
- package/dist/lib/parsers/basis-module-loader.js +76 -100
- package/dist/lib/parsers/basis-module-loader.js.map +1 -0
- package/dist/lib/parsers/crunch-module-loader.js +18 -30
- package/dist/lib/parsers/crunch-module-loader.js.map +1 -0
- package/dist/lib/parsers/parse-basis.d.ts +8 -6
- package/dist/lib/parsers/parse-basis.d.ts.map +1 -1
- package/dist/lib/parsers/parse-basis.js +240 -225
- package/dist/lib/parsers/parse-basis.js.map +1 -0
- package/dist/lib/parsers/parse-compressed-texture.d.ts +1 -1
- package/dist/lib/parsers/parse-compressed-texture.d.ts.map +1 -1
- package/dist/lib/parsers/parse-compressed-texture.js +18 -25
- package/dist/lib/parsers/parse-compressed-texture.js.map +1 -0
- package/dist/lib/parsers/parse-crunch.d.ts +1 -1
- package/dist/lib/parsers/parse-crunch.d.ts.map +1 -1
- package/dist/lib/parsers/parse-crunch.js +83 -96
- package/dist/lib/parsers/parse-crunch.js.map +1 -0
- package/dist/lib/parsers/parse-dds.d.ts +1 -1
- package/dist/lib/parsers/parse-dds.d.ts.map +1 -1
- package/dist/lib/parsers/parse-dds.js +63 -93
- package/dist/lib/parsers/parse-dds.js.map +1 -0
- package/dist/lib/parsers/parse-ktx.d.ts +2 -1
- package/dist/lib/parsers/parse-ktx.d.ts.map +1 -1
- package/dist/lib/parsers/parse-ktx.js +23 -44
- package/dist/lib/parsers/parse-ktx.js.map +1 -0
- package/dist/lib/parsers/parse-npy.d.ts.map +1 -1
- package/dist/lib/parsers/parse-npy.js +68 -77
- package/dist/lib/parsers/parse-npy.js.map +1 -0
- package/dist/lib/parsers/parse-pvr.d.ts +1 -1
- package/dist/lib/parsers/parse-pvr.d.ts.map +1 -1
- package/dist/lib/parsers/parse-pvr.js +133 -212
- package/dist/lib/parsers/parse-pvr.js.map +1 -0
- package/dist/lib/texture-api/async-deep-map.js +33 -35
- package/dist/lib/texture-api/async-deep-map.js.map +1 -0
- package/dist/lib/texture-api/deep-load.js +8 -14
- package/dist/lib/texture-api/deep-load.js.map +1 -0
- package/dist/lib/texture-api/generate-url.js +13 -16
- package/dist/lib/texture-api/generate-url.js.map +1 -0
- package/dist/lib/texture-api/load-image-array.js +18 -19
- package/dist/lib/texture-api/load-image-array.js.map +1 -0
- package/dist/lib/texture-api/load-image-cube.js +55 -39
- package/dist/lib/texture-api/load-image-cube.js.map +1 -0
- package/dist/lib/texture-api/load-image.js +43 -38
- package/dist/lib/texture-api/load-image.js.map +1 -0
- package/dist/lib/texture-api/texture-api-types.js +2 -3
- package/dist/{es5/lib → lib}/texture-api/texture-api-types.js.map +0 -0
- package/dist/lib/utils/extract-mipmap-images.d.ts +8 -1
- package/dist/lib/utils/extract-mipmap-images.d.ts.map +1 -1
- package/dist/lib/utils/extract-mipmap-images.js +36 -45
- package/dist/lib/utils/extract-mipmap-images.js.map +1 -0
- package/dist/lib/utils/ktx-format-helper.js +70 -122
- package/dist/lib/utils/ktx-format-helper.js.map +1 -0
- package/dist/lib/utils/texture-formats.js +30 -42
- package/dist/lib/utils/texture-formats.js.map +1 -0
- package/dist/lib/utils/version.d.ts.map +1 -1
- package/dist/lib/utils/version.js +2 -7
- package/dist/lib/utils/version.js.map +1 -0
- package/dist/{es5 → libs}/libs/README.md +0 -0
- package/dist/{es5 → libs}/libs/basis_encoder.js +0 -0
- package/dist/{es5 → libs}/libs/basis_encoder.wasm +0 -0
- package/dist/{es5 → libs}/libs/basis_transcoder.js +0 -0
- package/dist/{es5 → libs}/libs/basis_transcoder.wasm +0 -0
- package/dist/{es5 → libs}/libs/crunch.js +0 -0
- package/dist/npy-loader.js +20 -31
- package/dist/npy-loader.js.map +1 -0
- package/dist/npy-worker.js +1 -1
- package/dist/types.d.ts +0 -20
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -2
- package/dist/{es5/types.js.map → types.js.map} +0 -0
- package/dist/workers/basis-worker.js +4 -5
- package/dist/workers/basis-worker.js.map +1 -0
- package/dist/workers/compressed-texture-worker.js +4 -5
- package/dist/workers/compressed-texture-worker.js.map +1 -0
- package/dist/workers/crunch-worker.js +7 -13
- package/dist/workers/crunch-worker.js.map +1 -0
- package/dist/workers/npy-worker.js +4 -5
- package/dist/workers/npy-worker.js.map +1 -0
- package/package.json +12 -11
- package/src/compressed-texture-loader.ts +1 -1
- package/src/index.ts +1 -1
- package/src/lib/parsers/basis-module-loader.ts +1 -1
- package/src/lib/parsers/crunch-module-loader.ts +1 -1
- package/src/lib/parsers/parse-basis.ts +68 -36
- package/src/lib/parsers/parse-compressed-texture.ts +1 -1
- package/src/lib/parsers/parse-crunch.ts +15 -14
- package/src/lib/parsers/parse-dds.ts +1 -1
- package/src/lib/parsers/parse-ktx.ts +2 -1
- package/src/lib/parsers/parse-npy.ts +2 -0
- package/src/lib/parsers/parse-pvr.ts +2 -1
- package/src/lib/utils/extract-mipmap-images.ts +9 -1
- package/src/lib/utils/texture-formats.ts +1 -1
- package/src/lib/utils/version.ts +2 -1
- package/src/types.ts +0 -30
- package/dist/es5/basis-loader.js +0 -50
- package/dist/es5/basis-loader.js.map +0 -1
- package/dist/es5/bundle.js +0 -7
- package/dist/es5/bundle.js.map +0 -1
- package/dist/es5/compressed-texture-loader.js +0 -96
- package/dist/es5/compressed-texture-loader.js.map +0 -1
- package/dist/es5/compressed-texture-writer.js +0 -33
- package/dist/es5/compressed-texture-writer.js.map +0 -1
- package/dist/es5/crunch-loader.js +0 -28
- package/dist/es5/crunch-loader.js.map +0 -1
- package/dist/es5/index.js +0 -126
- package/dist/es5/index.js.map +0 -1
- package/dist/es5/ktx2-basis-universal-texture-writer.js +0 -29
- package/dist/es5/ktx2-basis-universal-texture-writer.js.map +0 -1
- package/dist/es5/lib/encoders/encode-ktx.js +0 -14
- package/dist/es5/lib/encoders/encode-ktx.js.map +0 -1
- package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js +0 -87
- package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js.map +0 -1
- package/dist/es5/lib/encoders/encode-texture.js +0 -48
- package/dist/es5/lib/encoders/encode-texture.js.map +0 -1
- package/dist/es5/lib/gl-extensions.js +0 -68
- package/dist/es5/lib/gl-extensions.js.map +0 -1
- package/dist/es5/lib/parsers/basis-module-loader.js +0 -245
- package/dist/es5/lib/parsers/basis-module-loader.js.map +0 -1
- package/dist/es5/lib/parsers/crunch-module-loader.js +0 -88
- package/dist/es5/lib/parsers/crunch-module-loader.js.map +0 -1
- package/dist/es5/lib/parsers/parse-basis.js +0 -325
- package/dist/es5/lib/parsers/parse-basis.js.map +0 -1
- package/dist/es5/lib/parsers/parse-compressed-texture.js +0 -29
- package/dist/es5/lib/parsers/parse-compressed-texture.js.map +0 -1
- package/dist/es5/lib/parsers/parse-crunch.js +0 -125
- package/dist/es5/lib/parsers/parse-crunch.js.map +0 -1
- package/dist/es5/lib/parsers/parse-dds.js +0 -95
- package/dist/es5/lib/parsers/parse-dds.js.map +0 -1
- package/dist/es5/lib/parsers/parse-ktx.js +0 -40
- package/dist/es5/lib/parsers/parse-ktx.js.map +0 -1
- package/dist/es5/lib/parsers/parse-npy.js +0 -87
- package/dist/es5/lib/parsers/parse-npy.js.map +0 -1
- package/dist/es5/lib/parsers/parse-pvr.js +0 -183
- package/dist/es5/lib/parsers/parse-pvr.js.map +0 -1
- package/dist/es5/lib/texture-api/async-deep-map.js +0 -177
- package/dist/es5/lib/texture-api/async-deep-map.js.map +0 -1
- package/dist/es5/lib/texture-api/deep-load.js +0 -81
- package/dist/es5/lib/texture-api/deep-load.js.map +0 -1
- package/dist/es5/lib/texture-api/generate-url.js +0 -28
- package/dist/es5/lib/texture-api/generate-url.js.map +0 -1
- package/dist/es5/lib/texture-api/load-image-array.js +0 -96
- package/dist/es5/lib/texture-api/load-image-array.js.map +0 -1
- package/dist/es5/lib/texture-api/load-image-cube.js +0 -145
- package/dist/es5/lib/texture-api/load-image-cube.js.map +0 -1
- package/dist/es5/lib/texture-api/load-image.js +0 -169
- package/dist/es5/lib/texture-api/load-image.js.map +0 -1
- package/dist/es5/lib/texture-api/texture-api-types.js +0 -2
- package/dist/es5/lib/utils/extract-mipmap-images.js +0 -48
- package/dist/es5/lib/utils/extract-mipmap-images.js.map +0 -1
- package/dist/es5/lib/utils/ktx-format-helper.js +0 -82
- package/dist/es5/lib/utils/ktx-format-helper.js.map +0 -1
- package/dist/es5/lib/utils/texture-formats.js +0 -64
- package/dist/es5/lib/utils/texture-formats.js.map +0 -1
- package/dist/es5/lib/utils/version.js +0 -9
- package/dist/es5/lib/utils/version.js.map +0 -1
- package/dist/es5/npy-loader.js +0 -71
- package/dist/es5/npy-loader.js.map +0 -1
- package/dist/es5/types.js +0 -2
- package/dist/es5/workers/basis-worker.js +0 -8
- package/dist/es5/workers/basis-worker.js.map +0 -1
- package/dist/es5/workers/compressed-texture-worker.js +0 -8
- package/dist/es5/workers/compressed-texture-worker.js.map +0 -1
- package/dist/es5/workers/crunch-worker.js +0 -28
- package/dist/es5/workers/crunch-worker.js.map +0 -1
- package/dist/es5/workers/npy-worker.js +0 -8
- package/dist/es5/workers/npy-worker.js.map +0 -1
- package/dist/esm/basis-loader.js +0 -27
- package/dist/esm/basis-loader.js.map +0 -1
- package/dist/esm/bundle.js +0 -5
- package/dist/esm/bundle.js.map +0 -1
- package/dist/esm/compressed-texture-loader.js +0 -41
- package/dist/esm/compressed-texture-loader.js.map +0 -1
- package/dist/esm/compressed-texture-writer.js +0 -22
- package/dist/esm/compressed-texture-writer.js.map +0 -1
- package/dist/esm/crunch-loader.js +0 -18
- package/dist/esm/crunch-loader.js.map +0 -1
- package/dist/esm/index.js +0 -14
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/ktx2-basis-universal-texture-writer.js +0 -18
- package/dist/esm/ktx2-basis-universal-texture-writer.js.map +0 -1
- package/dist/esm/lib/encoders/encode-ktx.js +0 -6
- package/dist/esm/lib/encoders/encode-ktx.js.map +0 -1
- package/dist/esm/lib/encoders/encode-ktx2-basis-texture.js +0 -35
- package/dist/esm/lib/encoders/encode-ktx2-basis-texture.js.map +0 -1
- package/dist/esm/lib/encoders/encode-texture.js +0 -12
- package/dist/esm/lib/encoders/encode-texture.js.map +0 -1
- package/dist/esm/lib/gl-extensions.js +0 -61
- package/dist/esm/lib/gl-extensions.js.map +0 -1
- package/dist/esm/lib/parsers/basis-module-loader.js +0 -90
- package/dist/esm/lib/parsers/basis-module-loader.js.map +0 -1
- package/dist/esm/lib/parsers/crunch-module-loader.js +0 -23
- package/dist/esm/lib/parsers/crunch-module-loader.js.map +0 -1
- package/dist/esm/lib/parsers/parse-basis.js +0 -260
- package/dist/esm/lib/parsers/parse-basis.js.map +0 -1
- package/dist/esm/lib/parsers/parse-compressed-texture.js +0 -19
- package/dist/esm/lib/parsers/parse-compressed-texture.js.map +0 -1
- package/dist/esm/lib/parsers/parse-crunch.js +0 -91
- package/dist/esm/lib/parsers/parse-crunch.js.map +0 -1
- package/dist/esm/lib/parsers/parse-dds.js +0 -78
- package/dist/esm/lib/parsers/parse-dds.js.map +0 -1
- package/dist/esm/lib/parsers/parse-ktx.js +0 -25
- package/dist/esm/lib/parsers/parse-ktx.js.map +0 -1
- package/dist/esm/lib/parsers/parse-npy.js +0 -76
- package/dist/esm/lib/parsers/parse-npy.js.map +0 -1
- package/dist/esm/lib/parsers/parse-pvr.js +0 -171
- package/dist/esm/lib/parsers/parse-pvr.js.map +0 -1
- package/dist/esm/lib/texture-api/async-deep-map.js +0 -39
- package/dist/esm/lib/texture-api/async-deep-map.js.map +0 -1
- package/dist/esm/lib/texture-api/deep-load.js +0 -10
- package/dist/esm/lib/texture-api/deep-load.js.map +0 -1
- package/dist/esm/lib/texture-api/generate-url.js +0 -14
- package/dist/esm/lib/texture-api/generate-url.js.map +0 -1
- package/dist/esm/lib/texture-api/load-image-array.js +0 -20
- package/dist/esm/lib/texture-api/load-image-array.js.map +0 -1
- package/dist/esm/lib/texture-api/load-image-cube.js +0 -63
- package/dist/esm/lib/texture-api/load-image-cube.js.map +0 -1
- package/dist/esm/lib/texture-api/load-image.js +0 -48
- package/dist/esm/lib/texture-api/load-image.js.map +0 -1
- package/dist/esm/lib/texture-api/texture-api-types.js +0 -2
- package/dist/esm/lib/texture-api/texture-api-types.js.map +0 -1
- package/dist/esm/lib/utils/extract-mipmap-images.js +0 -41
- package/dist/esm/lib/utils/extract-mipmap-images.js.map +0 -1
- package/dist/esm/lib/utils/ktx-format-helper.js +0 -73
- package/dist/esm/lib/utils/ktx-format-helper.js.map +0 -1
- package/dist/esm/lib/utils/texture-formats.js +0 -39
- package/dist/esm/lib/utils/texture-formats.js.map +0 -1
- package/dist/esm/lib/utils/version.js +0 -2
- package/dist/esm/lib/utils/version.js.map +0 -1
- package/dist/esm/libs/README.md +0 -9
- package/dist/esm/libs/basis_encoder.js +0 -22
- package/dist/esm/libs/basis_encoder.wasm +0 -0
- package/dist/esm/libs/basis_transcoder.js +0 -21
- package/dist/esm/libs/basis_transcoder.wasm +0 -0
- package/dist/esm/libs/crunch.js +0 -136
- package/dist/esm/npy-loader.js +0 -23
- package/dist/esm/npy-loader.js.map +0 -1
- package/dist/esm/types.js +0 -2
- package/dist/esm/types.js.map +0 -1
- package/dist/esm/workers/basis-worker.js +0 -4
- package/dist/esm/workers/basis-worker.js.map +0 -1
- package/dist/esm/workers/compressed-texture-worker.js +0 -4
- package/dist/esm/workers/compressed-texture-worker.js.map +0 -1
- package/dist/esm/workers/crunch-worker.js +0 -8
- package/dist/esm/workers/crunch-worker.js.map +0 -1
- package/dist/esm/workers/npy-worker.js +0 -4
- package/dist/esm/workers/npy-worker.js.map +0 -1
|
@@ -1,245 +1,260 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const gl_extensions_1 = require("../gl-extensions");
|
|
6
|
-
const texture_formats_1 = require("../utils/texture-formats");
|
|
7
|
-
const parse_ktx_1 = require("./parse-ktx");
|
|
1
|
+
import { loadBasisEncoderModule, loadBasisTrascoderModule } from './basis-module-loader';
|
|
2
|
+
import { GL_EXTENSIONS_CONSTANTS } from '../gl-extensions';
|
|
3
|
+
import { getSupportedGPUTextureFormats } from '../utils/texture-formats';
|
|
4
|
+
import { isKTX } from './parse-ktx';
|
|
8
5
|
const OutputFormat = {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
6
|
+
etc1: {
|
|
7
|
+
basisFormat: 0,
|
|
8
|
+
compressed: true,
|
|
9
|
+
format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ETC1_WEBGL
|
|
10
|
+
},
|
|
11
|
+
etc2: {
|
|
12
|
+
basisFormat: 1,
|
|
13
|
+
compressed: true
|
|
14
|
+
},
|
|
15
|
+
bc1: {
|
|
16
|
+
basisFormat: 2,
|
|
17
|
+
compressed: true,
|
|
18
|
+
format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT
|
|
19
|
+
},
|
|
20
|
+
bc3: {
|
|
21
|
+
basisFormat: 3,
|
|
22
|
+
compressed: true,
|
|
23
|
+
format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT
|
|
24
|
+
},
|
|
25
|
+
bc4: {
|
|
26
|
+
basisFormat: 4,
|
|
27
|
+
compressed: true
|
|
28
|
+
},
|
|
29
|
+
bc5: {
|
|
30
|
+
basisFormat: 5,
|
|
31
|
+
compressed: true
|
|
32
|
+
},
|
|
33
|
+
'bc7-m6-opaque-only': {
|
|
34
|
+
basisFormat: 6,
|
|
35
|
+
compressed: true
|
|
36
|
+
},
|
|
37
|
+
'bc7-m5': {
|
|
38
|
+
basisFormat: 7,
|
|
39
|
+
compressed: true
|
|
40
|
+
},
|
|
41
|
+
'pvrtc1-4-rgb': {
|
|
42
|
+
basisFormat: 8,
|
|
43
|
+
compressed: true,
|
|
44
|
+
format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_4BPPV1_IMG
|
|
45
|
+
},
|
|
46
|
+
'pvrtc1-4-rgba': {
|
|
47
|
+
basisFormat: 9,
|
|
48
|
+
compressed: true,
|
|
49
|
+
format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG
|
|
50
|
+
},
|
|
51
|
+
'astc-4x4': {
|
|
52
|
+
basisFormat: 10,
|
|
53
|
+
compressed: true,
|
|
54
|
+
format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR
|
|
55
|
+
},
|
|
56
|
+
'atc-rgb': {
|
|
57
|
+
basisFormat: 11,
|
|
58
|
+
compressed: true
|
|
59
|
+
},
|
|
60
|
+
'atc-rgba-interpolated-alpha': {
|
|
61
|
+
basisFormat: 12,
|
|
62
|
+
compressed: true
|
|
63
|
+
},
|
|
64
|
+
rgba32: {
|
|
65
|
+
basisFormat: 13,
|
|
66
|
+
compressed: false
|
|
67
|
+
},
|
|
68
|
+
rgb565: {
|
|
69
|
+
basisFormat: 14,
|
|
70
|
+
compressed: false
|
|
71
|
+
},
|
|
72
|
+
bgr565: {
|
|
73
|
+
basisFormat: 15,
|
|
74
|
+
compressed: false
|
|
75
|
+
},
|
|
76
|
+
rgba4444: {
|
|
77
|
+
basisFormat: 16,
|
|
78
|
+
compressed: false
|
|
79
|
+
}
|
|
50
80
|
};
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
*/
|
|
57
|
-
async function parseBasis(data, options) {
|
|
58
|
-
if (options.basis.containerFormat === 'auto') {
|
|
59
|
-
if ((0, parse_ktx_1.isKTX)(data)) {
|
|
60
|
-
const fileConstructors = await (0, basis_module_loader_1.loadBasisEncoderModule)(options);
|
|
61
|
-
return parseKTX2File(fileConstructors.KTX2File, data, options);
|
|
62
|
-
}
|
|
63
|
-
const { BasisFile } = await (0, basis_module_loader_1.loadBasisTrascoderModule)(options);
|
|
64
|
-
return parseBasisFile(BasisFile, data, options);
|
|
81
|
+
export default async function parseBasis(data, options) {
|
|
82
|
+
if (options.basis.containerFormat === 'auto') {
|
|
83
|
+
if (isKTX(data)) {
|
|
84
|
+
const fileConstructors = await loadBasisEncoderModule(options);
|
|
85
|
+
return parseKTX2File(fileConstructors.KTX2File, data, options);
|
|
65
86
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
87
|
+
|
|
88
|
+
const {
|
|
89
|
+
BasisFile
|
|
90
|
+
} = await loadBasisTrascoderModule(options);
|
|
91
|
+
return parseBasisFile(BasisFile, data, options);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
switch (options.basis.module) {
|
|
95
|
+
case 'encoder':
|
|
96
|
+
const fileConstructors = await loadBasisEncoderModule(options);
|
|
97
|
+
|
|
98
|
+
switch (options.basis.containerFormat) {
|
|
99
|
+
case 'ktx2':
|
|
100
|
+
return parseKTX2File(fileConstructors.KTX2File, data, options);
|
|
101
|
+
|
|
102
|
+
case 'basis':
|
|
77
103
|
default:
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
104
|
+
return parseBasisFile(fileConstructors.BasisFile, data, options);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
case 'transcoder':
|
|
108
|
+
default:
|
|
109
|
+
const {
|
|
110
|
+
BasisFile
|
|
111
|
+
} = await loadBasisTrascoderModule(options);
|
|
112
|
+
return parseBasisFile(BasisFile, data, options);
|
|
113
|
+
}
|
|
81
114
|
}
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
* Parse *.basis file data
|
|
85
|
-
* @param {*} BasisFile - initialized transcoder module
|
|
86
|
-
* @param {*} data
|
|
87
|
-
* @param {*} options
|
|
88
|
-
* @returns compressed texture data
|
|
89
|
-
*/
|
|
115
|
+
|
|
90
116
|
function parseBasisFile(BasisFile, data, options) {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
const imageCount = basisFile.getNumImages();
|
|
97
|
-
const images = [];
|
|
98
|
-
for (let imageIndex = 0; imageIndex < imageCount; imageIndex++) {
|
|
99
|
-
const levelsCount = basisFile.getNumLevels(imageIndex);
|
|
100
|
-
const levels = [];
|
|
101
|
-
for (let levelIndex = 0; levelIndex < levelsCount; levelIndex++) {
|
|
102
|
-
levels.push(transcodeImage(basisFile, imageIndex, levelIndex, options));
|
|
103
|
-
}
|
|
104
|
-
images.push(levels);
|
|
105
|
-
}
|
|
106
|
-
return images;
|
|
117
|
+
const basisFile = new BasisFile(new Uint8Array(data));
|
|
118
|
+
|
|
119
|
+
try {
|
|
120
|
+
if (!basisFile.startTranscoding()) {
|
|
121
|
+
throw new Error('Failed to start basis transcoding');
|
|
107
122
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
123
|
+
|
|
124
|
+
const imageCount = basisFile.getNumImages();
|
|
125
|
+
const images = [];
|
|
126
|
+
|
|
127
|
+
for (let imageIndex = 0; imageIndex < imageCount; imageIndex++) {
|
|
128
|
+
const levelsCount = basisFile.getNumLevels(imageIndex);
|
|
129
|
+
const levels = [];
|
|
130
|
+
|
|
131
|
+
for (let levelIndex = 0; levelIndex < levelsCount; levelIndex++) {
|
|
132
|
+
levels.push(transcodeImage(basisFile, imageIndex, levelIndex, options));
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
images.push(levels);
|
|
111
136
|
}
|
|
137
|
+
|
|
138
|
+
return images;
|
|
139
|
+
} finally {
|
|
140
|
+
basisFile.close();
|
|
141
|
+
basisFile.delete();
|
|
142
|
+
}
|
|
112
143
|
}
|
|
113
|
-
|
|
114
|
-
* Parse the particular level image of a basis file
|
|
115
|
-
* @param {*} basisFile
|
|
116
|
-
* @param {*} imageIndex
|
|
117
|
-
* @param {*} levelIndex
|
|
118
|
-
* @param {*} options
|
|
119
|
-
* @returns compressed texture data
|
|
120
|
-
*/
|
|
144
|
+
|
|
121
145
|
function transcodeImage(basisFile, imageIndex, levelIndex, options) {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
146
|
+
const width = basisFile.getImageWidth(imageIndex, levelIndex);
|
|
147
|
+
const height = basisFile.getImageHeight(imageIndex, levelIndex);
|
|
148
|
+
const hasAlpha = basisFile.getHasAlpha();
|
|
149
|
+
const {
|
|
150
|
+
compressed,
|
|
151
|
+
format,
|
|
152
|
+
basisFormat
|
|
153
|
+
} = getBasisOptions(options, hasAlpha);
|
|
154
|
+
const decodedSize = basisFile.getImageTranscodedSizeInBytes(imageIndex, levelIndex, basisFormat);
|
|
155
|
+
const decodedData = new Uint8Array(decodedSize);
|
|
156
|
+
|
|
157
|
+
if (!basisFile.transcodeImage(decodedData, imageIndex, levelIndex, basisFormat, 0, 0)) {
|
|
158
|
+
throw new Error('failed to start Basis transcoding');
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
return {
|
|
162
|
+
width,
|
|
163
|
+
height,
|
|
164
|
+
data: decodedData,
|
|
165
|
+
compressed,
|
|
166
|
+
format,
|
|
167
|
+
hasAlpha
|
|
168
|
+
};
|
|
144
169
|
}
|
|
145
|
-
|
|
146
|
-
* Parse *.ktx2 file data
|
|
147
|
-
* @param {*} KTX2File
|
|
148
|
-
* @param {*} data
|
|
149
|
-
* @param {*} options
|
|
150
|
-
* @returns compressed texture data
|
|
151
|
-
*/
|
|
170
|
+
|
|
152
171
|
function parseKTX2File(KTX2File, data, options) {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
const levelsCount = ktx2File.getLevels();
|
|
159
|
-
const levels = [];
|
|
160
|
-
for (let levelIndex = 0; levelIndex < levelsCount; levelIndex++) {
|
|
161
|
-
levels.push(transcodeKTX2Image(ktx2File, levelIndex, options));
|
|
162
|
-
break; // texture app can only show one level for some reason
|
|
163
|
-
}
|
|
164
|
-
return levels;
|
|
172
|
+
const ktx2File = new KTX2File(new Uint8Array(data));
|
|
173
|
+
|
|
174
|
+
try {
|
|
175
|
+
if (!ktx2File.startTranscoding()) {
|
|
176
|
+
throw new Error('failed to start KTX2 transcoding');
|
|
165
177
|
}
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
178
|
+
|
|
179
|
+
const levelsCount = ktx2File.getLevels();
|
|
180
|
+
const levels = [];
|
|
181
|
+
|
|
182
|
+
for (let levelIndex = 0; levelIndex < levelsCount; levelIndex++) {
|
|
183
|
+
levels.push(transcodeKTX2Image(ktx2File, levelIndex, options));
|
|
184
|
+
break;
|
|
169
185
|
}
|
|
186
|
+
|
|
187
|
+
return [levels];
|
|
188
|
+
} finally {
|
|
189
|
+
ktx2File.close();
|
|
190
|
+
ktx2File.delete();
|
|
191
|
+
}
|
|
170
192
|
}
|
|
171
|
-
|
|
172
|
-
* Parse the particular level image of a ktx2 file
|
|
173
|
-
* @param {*} ktx2File
|
|
174
|
-
* @param {*} levelIndex
|
|
175
|
-
* @param {*} options
|
|
176
|
-
* @returns
|
|
177
|
-
*/
|
|
193
|
+
|
|
178
194
|
function transcodeKTX2Image(ktx2File, levelIndex, options) {
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
195
|
+
const {
|
|
196
|
+
alphaFlag,
|
|
197
|
+
height,
|
|
198
|
+
width
|
|
199
|
+
} = ktx2File.getImageLevelInfo(levelIndex, 0, 0);
|
|
200
|
+
const {
|
|
201
|
+
compressed,
|
|
202
|
+
format,
|
|
203
|
+
basisFormat
|
|
204
|
+
} = getBasisOptions(options, alphaFlag);
|
|
205
|
+
const decodedSize = ktx2File.getImageTranscodedSizeInBytes(levelIndex, 0, 0, basisFormat);
|
|
206
|
+
const decodedData = new Uint8Array(decodedSize);
|
|
207
|
+
|
|
208
|
+
if (!ktx2File.transcodeImage(decodedData, levelIndex, 0, 0, basisFormat, 0, -1, -1)) {
|
|
209
|
+
throw new Error('Failed to transcode KTX2 image');
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
return {
|
|
213
|
+
width,
|
|
214
|
+
height,
|
|
215
|
+
data: decodedData,
|
|
216
|
+
compressed,
|
|
217
|
+
hasAlpha: alphaFlag,
|
|
218
|
+
format
|
|
219
|
+
};
|
|
198
220
|
}
|
|
199
|
-
|
|
200
|
-
* Get BasisFormat by loader format option
|
|
201
|
-
* @param {*} options
|
|
202
|
-
* @param {*} hasAlpha
|
|
203
|
-
* @returns BasisFormat data
|
|
204
|
-
*/
|
|
221
|
+
|
|
205
222
|
function getBasisOptions(options, hasAlpha) {
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
format = format.
|
|
214
|
-
|
|
223
|
+
let format = options && options.basis && options.basis.format;
|
|
224
|
+
|
|
225
|
+
if (format === 'auto') {
|
|
226
|
+
format = selectSupportedBasisFormat();
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
if (typeof format === 'object') {
|
|
230
|
+
format = hasAlpha ? format.alpha : format.noAlpha;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
format = format.toLowerCase();
|
|
234
|
+
return OutputFormat[format];
|
|
215
235
|
}
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
}
|
|
240
|
-
else if (supportedFormats.has('etc2')) {
|
|
241
|
-
return 'etc2';
|
|
242
|
-
}
|
|
243
|
-
return 'rgb565';
|
|
236
|
+
|
|
237
|
+
export function selectSupportedBasisFormat() {
|
|
238
|
+
const supportedFormats = getSupportedGPUTextureFormats();
|
|
239
|
+
|
|
240
|
+
if (supportedFormats.has('astc')) {
|
|
241
|
+
return 'astc-4x4';
|
|
242
|
+
} else if (supportedFormats.has('dxt')) {
|
|
243
|
+
return {
|
|
244
|
+
alpha: 'bc3',
|
|
245
|
+
noAlpha: 'bc1'
|
|
246
|
+
};
|
|
247
|
+
} else if (supportedFormats.has('pvrtc')) {
|
|
248
|
+
return {
|
|
249
|
+
alpha: 'pvrtc1-4-rgba',
|
|
250
|
+
noAlpha: 'pvrtc1-4-rgb'
|
|
251
|
+
};
|
|
252
|
+
} else if (supportedFormats.has('etc1')) {
|
|
253
|
+
return 'etc1';
|
|
254
|
+
} else if (supportedFormats.has('etc2')) {
|
|
255
|
+
return 'etc2';
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
return 'rgb565';
|
|
244
259
|
}
|
|
245
|
-
|
|
260
|
+
//# sourceMappingURL=parse-basis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/parsers/parse-basis.ts"],"names":["loadBasisEncoderModule","loadBasisTrascoderModule","GL_EXTENSIONS_CONSTANTS","getSupportedGPUTextureFormats","isKTX","OutputFormat","etc1","basisFormat","compressed","format","COMPRESSED_RGB_ETC1_WEBGL","etc2","bc1","COMPRESSED_RGB_S3TC_DXT1_EXT","bc3","COMPRESSED_RGBA_S3TC_DXT5_EXT","bc4","bc5","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_ASTC_4X4_KHR","rgba32","rgb565","bgr565","rgba4444","parseBasis","data","options","basis","containerFormat","fileConstructors","parseKTX2File","KTX2File","BasisFile","parseBasisFile","module","basisFile","Uint8Array","startTranscoding","Error","imageCount","getNumImages","images","imageIndex","levelsCount","getNumLevels","levels","levelIndex","push","transcodeImage","close","delete","width","getImageWidth","height","getImageHeight","hasAlpha","getHasAlpha","getBasisOptions","decodedSize","getImageTranscodedSizeInBytes","decodedData","ktx2File","getLevels","transcodeKTX2Image","alphaFlag","getImageLevelInfo","selectSupportedBasisFormat","alpha","noAlpha","toLowerCase","supportedFormats","has"],"mappings":"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","sourcesContent":["/* eslint-disable indent */\nimport type {TextureLevel} from '@loaders.gl/schema';\nimport {loadBasisEncoderModule, loadBasisTrascoderModule} from './basis-module-loader';\nimport {GL_EXTENSIONS_CONSTANTS} from '../gl-extensions';\nimport {getSupportedGPUTextureFormats} from '../utils/texture-formats';\nimport {isKTX} from './parse-ktx';\n\nexport type BasisFormat =\n | 'etc1'\n | 'etc2'\n | 'bc1'\n | 'bc3'\n | 'bc4'\n | 'bc5'\n | 'bc7-m6-opaque-only'\n | 'bc7-m5'\n | 'pvrtc1-4-rgb'\n | 'pvrtc1-4-rgba'\n | 'astc-4x4'\n | 'atc-rgb'\n | 'atc-rgba-interpolated-alpha'\n | 'rgba32'\n | 'rgb565'\n | 'bgr565'\n | 'rgba4444';\n\ntype BasisOutputOptions = {\n basisFormat: number;\n compressed: boolean;\n format?: number;\n};\n\nconst OutputFormat: Record<string, BasisOutputOptions> = {\n etc1: {\n basisFormat: 0,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ETC1_WEBGL\n },\n etc2: {basisFormat: 1, compressed: true},\n bc1: {\n basisFormat: 2,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT\n },\n bc3: {\n basisFormat: 3,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT\n },\n bc4: {basisFormat: 4, compressed: true},\n bc5: {basisFormat: 5, compressed: true},\n 'bc7-m6-opaque-only': {basisFormat: 6, compressed: true},\n 'bc7-m5': {basisFormat: 7, compressed: true},\n 'pvrtc1-4-rgb': {\n basisFormat: 8,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_4BPPV1_IMG\n },\n 'pvrtc1-4-rgba': {\n basisFormat: 9,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG\n },\n 'astc-4x4': {\n basisFormat: 10,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR\n },\n 'atc-rgb': {basisFormat: 11, compressed: true},\n 'atc-rgba-interpolated-alpha': {basisFormat: 12, compressed: true},\n rgba32: {basisFormat: 13, compressed: false},\n rgb565: {basisFormat: 14, compressed: false},\n bgr565: {basisFormat: 15, compressed: false},\n rgba4444: {basisFormat: 16, compressed: false}\n};\n\n/**\n * parse data with a Binomial Basis_Universal module\n * @param data\n * @param options\n * @returns compressed texture data\n */\nexport default async function parseBasis(data: ArrayBuffer, options): Promise<TextureLevel[][]> {\n if (options.basis.containerFormat === 'auto') {\n if (isKTX(data)) {\n const fileConstructors = await loadBasisEncoderModule(options);\n return parseKTX2File(fileConstructors.KTX2File, data, options);\n }\n const {BasisFile} = await loadBasisTrascoderModule(options);\n return parseBasisFile(BasisFile, data, options);\n }\n switch (options.basis.module) {\n case 'encoder':\n const fileConstructors = await loadBasisEncoderModule(options);\n switch (options.basis.containerFormat) {\n case 'ktx2':\n return parseKTX2File(fileConstructors.KTX2File, data, options);\n case 'basis':\n default:\n return parseBasisFile(fileConstructors.BasisFile, data, options);\n }\n case 'transcoder':\n default:\n const {BasisFile} = await loadBasisTrascoderModule(options);\n return parseBasisFile(BasisFile, data, options);\n }\n}\n\n/**\n * Parse *.basis file data\n * @param BasisFile - initialized transcoder module\n * @param data\n * @param options\n * @returns compressed texture data\n */\nfunction parseBasisFile(BasisFile, data, options): TextureLevel[][] {\n const basisFile = new BasisFile(new Uint8Array(data));\n\n try {\n if (!basisFile.startTranscoding()) {\n throw new Error('Failed to start basis transcoding');\n }\n\n const imageCount = basisFile.getNumImages();\n const images: TextureLevel[][] = [];\n\n for (let imageIndex = 0; imageIndex < imageCount; imageIndex++) {\n const levelsCount = basisFile.getNumLevels(imageIndex);\n const levels: TextureLevel[] = [];\n\n for (let levelIndex = 0; levelIndex < levelsCount; levelIndex++) {\n levels.push(transcodeImage(basisFile, imageIndex, levelIndex, options));\n }\n\n images.push(levels);\n }\n\n return images;\n } finally {\n basisFile.close();\n basisFile.delete();\n }\n}\n\n/**\n * Parse the particular level image of a basis file\n * @param basisFile\n * @param imageIndex\n * @param levelIndex\n * @param options\n * @returns compressed texture data\n */\nfunction transcodeImage(basisFile, imageIndex, levelIndex, options): TextureLevel {\n const width = basisFile.getImageWidth(imageIndex, levelIndex);\n const height = basisFile.getImageHeight(imageIndex, levelIndex);\n\n // See https://github.com/BinomialLLC/basis_universal/pull/83\n const hasAlpha = basisFile.getHasAlpha(/* imageIndex, levelIndex */);\n\n // Check options for output format etc\n const {compressed, format, basisFormat} = getBasisOptions(options, hasAlpha);\n\n const decodedSize = basisFile.getImageTranscodedSizeInBytes(imageIndex, levelIndex, basisFormat);\n const decodedData = new Uint8Array(decodedSize);\n\n if (!basisFile.transcodeImage(decodedData, imageIndex, levelIndex, basisFormat, 0, 0)) {\n throw new Error('failed to start Basis transcoding');\n }\n\n return {\n // standard loaders.gl image category payload\n width,\n height,\n data: decodedData,\n compressed,\n format,\n\n // Additional fields\n // Add levelSize field.\n hasAlpha\n };\n}\n\n/**\n * Parse *.ktx2 file data\n * @param KTX2File\n * @param data\n * @param options\n * @returns compressed texture data\n */\nfunction parseKTX2File(KTX2File, data: ArrayBuffer, options): TextureLevel[][] {\n const ktx2File = new KTX2File(new Uint8Array(data));\n\n try {\n if (!ktx2File.startTranscoding()) {\n throw new Error('failed to start KTX2 transcoding');\n }\n const levelsCount = ktx2File.getLevels();\n const levels: TextureLevel[] = [];\n\n for (let levelIndex = 0; levelIndex < levelsCount; levelIndex++) {\n levels.push(transcodeKTX2Image(ktx2File, levelIndex, options));\n break; // texture app can only show one level for some reason\n }\n\n return [levels];\n } finally {\n ktx2File.close();\n ktx2File.delete();\n }\n}\n\n/**\n * Parse the particular level image of a ktx2 file\n * @param ktx2File\n * @param levelIndex\n * @param options\n * @returns\n */\nfunction transcodeKTX2Image(ktx2File, levelIndex: number, options): TextureLevel {\n const {alphaFlag, height, width} = ktx2File.getImageLevelInfo(levelIndex, 0, 0);\n\n // Check options for output format etc\n const {compressed, format, basisFormat} = getBasisOptions(options, alphaFlag);\n\n const decodedSize = ktx2File.getImageTranscodedSizeInBytes(\n levelIndex,\n 0 /* layerIndex */,\n 0 /* faceIndex */,\n basisFormat\n );\n const decodedData = new Uint8Array(decodedSize);\n\n if (\n !ktx2File.transcodeImage(\n decodedData,\n levelIndex,\n 0 /* layerIndex */,\n 0 /* faceIndex */,\n basisFormat,\n 0,\n -1 /* channel0 */,\n -1 /* channel1 */\n )\n ) {\n throw new Error('Failed to transcode KTX2 image');\n }\n\n return {\n // standard loaders.gl image category payload\n width,\n height,\n data: decodedData,\n compressed,\n\n // Additional fields\n // Add levelSize field.\n hasAlpha: alphaFlag,\n format\n };\n}\n\n/**\n * Get BasisFormat by loader format option\n * @param options\n * @param hasAlpha\n * @returns BasisFormat data\n */\nfunction getBasisOptions(options, hasAlpha: boolean): BasisOutputOptions {\n let format = options && options.basis && options.basis.format;\n if (format === 'auto') {\n format = selectSupportedBasisFormat();\n }\n if (typeof format === 'object') {\n format = hasAlpha ? format.alpha : format.noAlpha;\n }\n format = format.toLowerCase();\n return OutputFormat[format];\n}\n\n/**\n * Select transcode format from the list of supported formats\n * @returns key for OutputFormat map\n */\nexport function selectSupportedBasisFormat():\n | BasisFormat\n | {\n alpha: BasisFormat;\n noAlpha: BasisFormat;\n } {\n const supportedFormats = getSupportedGPUTextureFormats();\n if (supportedFormats.has('astc')) {\n return 'astc-4x4';\n } else if (supportedFormats.has('dxt')) {\n return {\n alpha: 'bc3',\n noAlpha: 'bc1'\n };\n } else if (supportedFormats.has('pvrtc')) {\n return {\n alpha: 'pvrtc1-4-rgba',\n noAlpha: 'pvrtc1-4-rgb'\n };\n } else if (supportedFormats.has('etc1')) {\n return 'etc1';\n } else if (supportedFormats.has('etc2')) {\n return 'etc2';\n }\n return 'rgb565';\n}\n"],"file":"parse-basis.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-compressed-texture.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-compressed-texture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"parse-compressed-texture.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-compressed-texture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAKrD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,WAAW,GAAG,YAAY,EAAE,CAaxE"}
|
|
@@ -1,26 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
if ((0, parse_dds_1.isDDS)(data)) {
|
|
19
|
-
return (0, parse_dds_1.parseDDS)(data);
|
|
20
|
-
}
|
|
21
|
-
if ((0, parse_pvr_1.isPVR)(data)) {
|
|
22
|
-
return (0, parse_pvr_1.parsePVR)(data);
|
|
23
|
-
}
|
|
24
|
-
throw new Error('Texture container format not recognized');
|
|
1
|
+
import { isKTX, parseKTX } from './parse-ktx';
|
|
2
|
+
import { isDDS, parseDDS } from './parse-dds';
|
|
3
|
+
import { isPVR, parsePVR } from './parse-pvr';
|
|
4
|
+
export function parseCompressedTexture(data) {
|
|
5
|
+
if (isKTX(data)) {
|
|
6
|
+
return parseKTX(data);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
if (isDDS(data)) {
|
|
10
|
+
return parseDDS(data);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
if (isPVR(data)) {
|
|
14
|
+
return parsePVR(data);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
throw new Error('Texture container format not recognized');
|
|
25
18
|
}
|
|
26
|
-
|
|
19
|
+
//# sourceMappingURL=parse-compressed-texture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/parsers/parse-compressed-texture.ts"],"names":["isKTX","parseKTX","isDDS","parseDDS","isPVR","parsePVR","parseCompressedTexture","data","Error"],"mappings":"AACA,SAAQA,KAAR,EAAeC,QAAf,QAA8B,aAA9B;AACA,SAAQC,KAAR,EAAeC,QAAf,QAA8B,aAA9B;AACA,SAAQC,KAAR,EAAeC,QAAf,QAA8B,aAA9B;AAOA,OAAO,SAASC,sBAAT,CAAgCC,IAAhC,EAAmE;AACxE,MAAIP,KAAK,CAACO,IAAD,CAAT,EAAiB;AAGf,WAAON,QAAQ,CAACM,IAAD,CAAf;AACD;;AACD,MAAIL,KAAK,CAACK,IAAD,CAAT,EAAiB;AACf,WAAOJ,QAAQ,CAACI,IAAD,CAAf;AACD;;AACD,MAAIH,KAAK,CAACG,IAAD,CAAT,EAAiB;AACf,WAAOF,QAAQ,CAACE,IAAD,CAAf;AACD;;AACD,QAAM,IAAIC,KAAJ,CAAU,yCAAV,CAAN;AACD","sourcesContent":["import type {TextureLevel} from '@loaders.gl/schema';\nimport {isKTX, parseKTX} from './parse-ktx';\nimport {isDDS, parseDDS} from './parse-dds';\nimport {isPVR, parsePVR} from './parse-pvr';\n\n/**\n * Deduces format and parses compressed texture loaded in ArrayBuffer\n * @param data - binary data of compressed texture\n * @returns Array of the texture levels\n */\nexport function parseCompressedTexture(data: ArrayBuffer): TextureLevel[] {\n if (isKTX(data)) {\n // TODO: remove @ts-ignore when `parseKTX` output is normalized to loaders.gl texture format\n // @ts-ignore\n return parseKTX(data);\n }\n if (isDDS(data)) {\n return parseDDS(data);\n }\n if (isPVR(data)) {\n return parsePVR(data);\n }\n throw new Error('Texture container format not recognized');\n}\n"],"file":"parse-compressed-texture.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-crunch.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-crunch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"parse-crunch.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-crunch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAsCrD;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,IAAI,KAAA,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAmD7E"}
|