@loaders.gl/textures 4.0.0-beta.2 → 4.0.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{esm/basis-loader.js → basis-loader.js} +2 -2
- package/dist/basis-loader.js.map +1 -0
- package/dist/basis-worker-node.js +5203 -3479
- package/dist/basis-worker.js +105 -31
- package/dist/{esm/compressed-texture-loader.js → compressed-texture-loader.js} +3 -3
- package/dist/compressed-texture-loader.js.map +1 -0
- package/dist/compressed-texture-worker.js +158 -34
- package/dist/{esm/compressed-texture-writer.js → compressed-texture-writer.js} +2 -2
- package/dist/compressed-texture-writer.js.map +1 -0
- package/dist/{esm/crunch-loader.js → crunch-loader.js} +1 -1
- package/dist/crunch-loader.js.map +1 -0
- package/dist/crunch-worker.js +60 -26
- package/dist/{dist.min.js → dist.dev.js} +953 -1100
- package/dist/index.cjs +1360 -0
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -0
- package/dist/ktx2-basis-writer-worker-node.js +4887 -3214
- package/dist/ktx2-basis-writer-worker.js +52 -26
- package/dist/{esm/ktx2-basis-writer.js → ktx2-basis-writer.js} +2 -2
- package/dist/ktx2-basis-writer.js.map +1 -0
- package/dist/lib/encoders/encode-ktx.js.map +1 -0
- package/dist/{esm/lib → lib}/encoders/encode-ktx2-basis-texture.js +1 -1
- package/dist/lib/encoders/encode-ktx2-basis-texture.js.map +1 -0
- package/dist/lib/encoders/encode-texture.js.map +1 -0
- package/dist/lib/gl-extensions.js.map +1 -0
- package/dist/lib/parsers/basis-module-loader.js.map +1 -0
- package/dist/lib/parsers/crunch-module-loader.js.map +1 -0
- package/dist/{esm/lib → lib}/parsers/parse-basis.js +4 -4
- package/dist/lib/parsers/parse-basis.js.map +1 -0
- package/dist/{esm/lib → lib}/parsers/parse-compressed-texture.js +3 -3
- package/dist/lib/parsers/parse-compressed-texture.js.map +1 -0
- package/dist/{esm/lib → lib}/parsers/parse-crunch.js +4 -4
- package/dist/lib/parsers/parse-crunch.js.map +1 -0
- package/dist/{esm/lib → lib}/parsers/parse-dds.js +3 -3
- package/dist/lib/parsers/parse-dds.js.map +1 -0
- package/dist/{esm/lib → lib}/parsers/parse-ktx.js +2 -2
- package/dist/lib/parsers/parse-ktx.js.map +1 -0
- package/dist/lib/parsers/parse-npy.d.ts.map +1 -1
- package/dist/{esm/lib → lib}/parsers/parse-npy.js +1 -1
- package/dist/lib/parsers/parse-npy.js.map +1 -0
- package/dist/{esm/lib → lib}/parsers/parse-pvr.js +2 -2
- package/dist/lib/parsers/parse-pvr.js.map +1 -0
- package/dist/lib/texture-api/async-deep-map.js.map +1 -0
- package/dist/{esm/lib → lib}/texture-api/deep-load.js +1 -1
- package/dist/lib/texture-api/deep-load.js.map +1 -0
- package/dist/{esm/lib → lib}/texture-api/generate-url.js +1 -1
- package/dist/lib/texture-api/generate-url.js.map +1 -0
- package/dist/{esm/lib → lib}/texture-api/load-image-array.js +2 -2
- package/dist/lib/texture-api/load-image-array.js.map +1 -0
- package/dist/{esm/lib → lib}/texture-api/load-image-cube.js +2 -2
- package/dist/lib/texture-api/load-image-cube.js.map +1 -0
- package/dist/{esm/lib → lib}/texture-api/load-image.js +2 -2
- package/dist/lib/texture-api/load-image.js.map +1 -0
- package/dist/lib/texture-api/texture-api-types.js.map +1 -0
- package/dist/lib/utils/extract-mipmap-images.js.map +1 -0
- package/dist/{esm/lib → lib}/utils/ktx-format-helper.js +1 -1
- package/dist/lib/utils/ktx-format-helper.js.map +1 -0
- package/dist/{esm/lib → lib}/utils/texture-formats.js +1 -1
- package/dist/lib/utils/texture-formats.js.map +1 -0
- package/dist/lib/utils/version.js +2 -0
- package/dist/lib/utils/version.js.map +1 -0
- package/dist/libs/basis_encoder.js +5435 -19
- package/dist/libs/basis_encoder.js.map +1 -0
- package/dist/libs/basis_transcoder.js +2523 -20
- package/dist/libs/basis_transcoder.js.map +1 -0
- package/dist/libs/crunch.js +10043 -129
- package/dist/libs/crunch.js.map +1 -0
- package/dist/{esm/npy-loader.js → npy-loader.js} +2 -2
- package/dist/npy-loader.js.map +1 -0
- package/dist/npy-worker.js +17 -4
- package/dist/types.js.map +1 -0
- package/dist/{esm/workers → workers}/basis-worker-node.js +1 -1
- package/dist/workers/basis-worker-node.js.map +1 -0
- package/dist/{esm/workers → workers}/basis-worker.js +1 -1
- package/dist/workers/basis-worker.js.map +1 -0
- package/dist/workers/compressed-texture-worker.js +4 -0
- package/dist/workers/compressed-texture-worker.js.map +1 -0
- package/dist/{esm/workers → workers}/crunch-worker.js +2 -2
- package/dist/workers/crunch-worker.js.map +1 -0
- package/dist/{esm/workers → workers}/ktx2-basis-writer-worker-node.js +1 -1
- package/dist/workers/ktx2-basis-writer-worker-node.js.map +1 -0
- package/dist/{esm/workers → workers}/ktx2-basis-writer-worker.js +1 -1
- package/dist/workers/ktx2-basis-writer-worker.js.map +1 -0
- package/dist/{esm/workers → workers}/npy-worker.js +1 -1
- package/dist/workers/npy-worker.js.map +1 -0
- package/package.json +19 -11
- package/src/lib/parsers/parse-npy.ts +0 -2
- package/dist/bundle.d.ts +0 -2
- package/dist/bundle.d.ts.map +0 -1
- package/dist/es5/basis-loader.js +0 -37
- package/dist/es5/basis-loader.js.map +0 -1
- package/dist/es5/bundle.js +0 -6
- package/dist/es5/bundle.js.map +0 -1
- package/dist/es5/compressed-texture-loader.js +0 -74
- package/dist/es5/compressed-texture-loader.js.map +0 -1
- package/dist/es5/compressed-texture-writer.js +0 -28
- package/dist/es5/compressed-texture-writer.js.map +0 -1
- package/dist/es5/crunch-loader.js +0 -24
- package/dist/es5/crunch-loader.js.map +0 -1
- package/dist/es5/index.js +0 -145
- package/dist/es5/index.js.map +0 -1
- package/dist/es5/ktx2-basis-writer.js +0 -26
- package/dist/es5/ktx2-basis-writer.js.map +0 -1
- package/dist/es5/lib/encoders/encode-ktx.js +0 -12
- package/dist/es5/lib/encoders/encode-ktx.js.map +0 -1
- package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js +0 -75
- package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js.map +0 -1
- package/dist/es5/lib/encoders/encode-texture.js +0 -38
- 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 -199
- package/dist/es5/lib/parsers/basis-module-loader.js.map +0 -1
- package/dist/es5/lib/parsers/crunch-module-loader.js +0 -72
- package/dist/es5/lib/parsers/crunch-module-loader.js.map +0 -1
- package/dist/es5/lib/parsers/parse-basis.js +0 -270
- package/dist/es5/lib/parsers/parse-basis.js.map +0 -1
- package/dist/es5/lib/parsers/parse-compressed-texture.js +0 -22
- package/dist/es5/lib/parsers/parse-compressed-texture.js.map +0 -1
- package/dist/es5/lib/parsers/parse-crunch.js +0 -100
- package/dist/es5/lib/parsers/parse-crunch.js.map +0 -1
- package/dist/es5/lib/parsers/parse-dds.js +0 -84
- package/dist/es5/lib/parsers/parse-dds.js.map +0 -1
- package/dist/es5/lib/parsers/parse-ktx.js +0 -34
- package/dist/es5/lib/parsers/parse-ktx.js.map +0 -1
- package/dist/es5/lib/parsers/parse-npy.js +0 -70
- package/dist/es5/lib/parsers/parse-npy.js.map +0 -1
- package/dist/es5/lib/parsers/parse-pvr.js +0 -161
- package/dist/es5/lib/parsers/parse-pvr.js.map +0 -1
- package/dist/es5/lib/texture-api/async-deep-map.js +0 -156
- package/dist/es5/lib/texture-api/async-deep-map.js.map +0 -1
- package/dist/es5/lib/texture-api/deep-load.js +0 -63
- package/dist/es5/lib/texture-api/deep-load.js.map +0 -1
- package/dist/es5/lib/texture-api/generate-url.js +0 -20
- package/dist/es5/lib/texture-api/generate-url.js.map +0 -1
- package/dist/es5/lib/texture-api/load-image-array.js +0 -75
- package/dist/es5/lib/texture-api/load-image-array.js.map +0 -1
- package/dist/es5/lib/texture-api/load-image-cube.js +0 -136
- package/dist/es5/lib/texture-api/load-image-cube.js.map +0 -1
- package/dist/es5/lib/texture-api/load-image.js +0 -129
- 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/texture-api/texture-api-types.js.map +0 -1
- package/dist/es5/lib/utils/extract-mipmap-images.js +0 -41
- package/dist/es5/lib/utils/extract-mipmap-images.js.map +0 -1
- package/dist/es5/lib/utils/ktx-format-helper.js +0 -79
- package/dist/es5/lib/utils/ktx-format-helper.js.map +0 -1
- package/dist/es5/lib/utils/texture-formats.js +0 -54
- 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 -51
- package/dist/es5/npy-loader.js.map +0 -1
- package/dist/es5/types.js +0 -2
- package/dist/es5/types.js.map +0 -1
- package/dist/es5/workers/basis-worker-node.js +0 -7
- package/dist/es5/workers/basis-worker-node.js.map +0 -1
- package/dist/es5/workers/basis-worker.js +0 -6
- package/dist/es5/workers/basis-worker.js.map +0 -1
- package/dist/es5/workers/compressed-texture-worker.js +0 -6
- package/dist/es5/workers/compressed-texture-worker.js.map +0 -1
- package/dist/es5/workers/crunch-worker.js +0 -19
- package/dist/es5/workers/crunch-worker.js.map +0 -1
- package/dist/es5/workers/ktx2-basis-writer-worker-node.js +0 -54
- package/dist/es5/workers/ktx2-basis-writer-worker-node.js.map +0 -1
- package/dist/es5/workers/ktx2-basis-writer-worker.js +0 -53
- package/dist/es5/workers/ktx2-basis-writer-worker.js.map +0 -1
- package/dist/es5/workers/npy-worker.js +0 -6
- package/dist/es5/workers/npy-worker.js.map +0 -1
- package/dist/esm/basis-loader.js.map +0 -1
- package/dist/esm/bundle.js +0 -4
- package/dist/esm/bundle.js.map +0 -1
- package/dist/esm/compressed-texture-loader.js.map +0 -1
- package/dist/esm/compressed-texture-writer.js.map +0 -1
- package/dist/esm/crunch-loader.js.map +0 -1
- package/dist/esm/index.js +0 -31
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/ktx2-basis-writer.js.map +0 -1
- package/dist/esm/lib/encoders/encode-ktx.js.map +0 -1
- package/dist/esm/lib/encoders/encode-ktx2-basis-texture.js.map +0 -1
- package/dist/esm/lib/encoders/encode-texture.js.map +0 -1
- package/dist/esm/lib/gl-extensions.js.map +0 -1
- package/dist/esm/lib/parsers/basis-module-loader.js.map +0 -1
- package/dist/esm/lib/parsers/crunch-module-loader.js.map +0 -1
- package/dist/esm/lib/parsers/parse-basis.js.map +0 -1
- package/dist/esm/lib/parsers/parse-compressed-texture.js.map +0 -1
- package/dist/esm/lib/parsers/parse-crunch.js.map +0 -1
- package/dist/esm/lib/parsers/parse-dds.js.map +0 -1
- package/dist/esm/lib/parsers/parse-ktx.js.map +0 -1
- package/dist/esm/lib/parsers/parse-npy.js.map +0 -1
- package/dist/esm/lib/parsers/parse-pvr.js.map +0 -1
- package/dist/esm/lib/texture-api/async-deep-map.js.map +0 -1
- package/dist/esm/lib/texture-api/deep-load.js.map +0 -1
- package/dist/esm/lib/texture-api/generate-url.js.map +0 -1
- package/dist/esm/lib/texture-api/load-image-array.js.map +0 -1
- package/dist/esm/lib/texture-api/load-image-cube.js.map +0 -1
- package/dist/esm/lib/texture-api/load-image.js.map +0 -1
- package/dist/esm/lib/texture-api/texture-api-types.js.map +0 -1
- package/dist/esm/lib/utils/extract-mipmap-images.js.map +0 -1
- package/dist/esm/lib/utils/ktx-format-helper.js.map +0 -1
- 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 -21
- package/dist/esm/libs/basis_encoder.wasm +0 -0
- package/dist/esm/libs/basis_transcoder.js +0 -22
- package/dist/esm/libs/basis_transcoder.wasm +0 -0
- package/dist/esm/libs/crunch.js +0 -136
- package/dist/esm/npy-loader.js.map +0 -1
- package/dist/esm/types.js.map +0 -1
- package/dist/esm/workers/basis-worker-node.js.map +0 -1
- 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.map +0 -1
- package/dist/esm/workers/ktx2-basis-writer-worker-node.js.map +0 -1
- package/dist/esm/workers/ktx2-basis-writer-worker.js.map +0 -1
- package/dist/esm/workers/npy-worker.js.map +0 -1
- package/src/bundle.ts +0 -4
- /package/dist/{esm/lib → lib}/encoders/encode-ktx.js +0 -0
- /package/dist/{esm/lib → lib}/encoders/encode-texture.js +0 -0
- /package/dist/{esm/lib → lib}/gl-extensions.js +0 -0
- /package/dist/{esm/lib → lib}/parsers/basis-module-loader.js +0 -0
- /package/dist/{esm/lib → lib}/parsers/crunch-module-loader.js +0 -0
- /package/dist/{esm/lib → lib}/texture-api/async-deep-map.js +0 -0
- /package/dist/{esm/lib → lib}/texture-api/texture-api-types.js +0 -0
- /package/dist/{esm/lib → lib}/utils/extract-mipmap-images.js +0 -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/{esm/types.js → types.js} +0 -0
|
@@ -1,270 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.default = parseBasis;
|
|
8
|
-
exports.selectSupportedBasisFormat = selectSupportedBasisFormat;
|
|
9
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
|
-
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
11
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
12
|
-
var _basisModuleLoader = require("./basis-module-loader");
|
|
13
|
-
var _glExtensions = require("../gl-extensions");
|
|
14
|
-
var _textureFormats = require("../utils/texture-formats");
|
|
15
|
-
var _parseKtx = require("./parse-ktx");
|
|
16
|
-
var OutputFormat = {
|
|
17
|
-
etc1: {
|
|
18
|
-
basisFormat: 0,
|
|
19
|
-
compressed: true,
|
|
20
|
-
format: _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ETC1_WEBGL
|
|
21
|
-
},
|
|
22
|
-
etc2: {
|
|
23
|
-
basisFormat: 1,
|
|
24
|
-
compressed: true
|
|
25
|
-
},
|
|
26
|
-
bc1: {
|
|
27
|
-
basisFormat: 2,
|
|
28
|
-
compressed: true,
|
|
29
|
-
format: _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT
|
|
30
|
-
},
|
|
31
|
-
bc3: {
|
|
32
|
-
basisFormat: 3,
|
|
33
|
-
compressed: true,
|
|
34
|
-
format: _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT
|
|
35
|
-
},
|
|
36
|
-
bc4: {
|
|
37
|
-
basisFormat: 4,
|
|
38
|
-
compressed: true
|
|
39
|
-
},
|
|
40
|
-
bc5: {
|
|
41
|
-
basisFormat: 5,
|
|
42
|
-
compressed: true
|
|
43
|
-
},
|
|
44
|
-
'bc7-m6-opaque-only': {
|
|
45
|
-
basisFormat: 6,
|
|
46
|
-
compressed: true
|
|
47
|
-
},
|
|
48
|
-
'bc7-m5': {
|
|
49
|
-
basisFormat: 7,
|
|
50
|
-
compressed: true
|
|
51
|
-
},
|
|
52
|
-
'pvrtc1-4-rgb': {
|
|
53
|
-
basisFormat: 8,
|
|
54
|
-
compressed: true,
|
|
55
|
-
format: _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_4BPPV1_IMG
|
|
56
|
-
},
|
|
57
|
-
'pvrtc1-4-rgba': {
|
|
58
|
-
basisFormat: 9,
|
|
59
|
-
compressed: true,
|
|
60
|
-
format: _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG
|
|
61
|
-
},
|
|
62
|
-
'astc-4x4': {
|
|
63
|
-
basisFormat: 10,
|
|
64
|
-
compressed: true,
|
|
65
|
-
format: _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR
|
|
66
|
-
},
|
|
67
|
-
'atc-rgb': {
|
|
68
|
-
basisFormat: 11,
|
|
69
|
-
compressed: true
|
|
70
|
-
},
|
|
71
|
-
'atc-rgba-interpolated-alpha': {
|
|
72
|
-
basisFormat: 12,
|
|
73
|
-
compressed: true
|
|
74
|
-
},
|
|
75
|
-
rgba32: {
|
|
76
|
-
basisFormat: 13,
|
|
77
|
-
compressed: false
|
|
78
|
-
},
|
|
79
|
-
rgb565: {
|
|
80
|
-
basisFormat: 14,
|
|
81
|
-
compressed: false
|
|
82
|
-
},
|
|
83
|
-
bgr565: {
|
|
84
|
-
basisFormat: 15,
|
|
85
|
-
compressed: false
|
|
86
|
-
},
|
|
87
|
-
rgba4444: {
|
|
88
|
-
basisFormat: 16,
|
|
89
|
-
compressed: false
|
|
90
|
-
}
|
|
91
|
-
};
|
|
92
|
-
function parseBasis(_x, _x2) {
|
|
93
|
-
return _parseBasis.apply(this, arguments);
|
|
94
|
-
}
|
|
95
|
-
function _parseBasis() {
|
|
96
|
-
_parseBasis = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(data, options) {
|
|
97
|
-
var fileConstructors, _yield$loadBasisTrans, BasisFile, _fileConstructors, _yield$loadBasisTrans2, _BasisFile;
|
|
98
|
-
return _regenerator.default.wrap(function _callee$(_context) {
|
|
99
|
-
while (1) switch (_context.prev = _context.next) {
|
|
100
|
-
case 0:
|
|
101
|
-
if (!(options.basis.containerFormat === 'auto')) {
|
|
102
|
-
_context.next = 11;
|
|
103
|
-
break;
|
|
104
|
-
}
|
|
105
|
-
if (!(0, _parseKtx.isKTX)(data)) {
|
|
106
|
-
_context.next = 6;
|
|
107
|
-
break;
|
|
108
|
-
}
|
|
109
|
-
_context.next = 4;
|
|
110
|
-
return (0, _basisModuleLoader.loadBasisEncoderModule)(options);
|
|
111
|
-
case 4:
|
|
112
|
-
fileConstructors = _context.sent;
|
|
113
|
-
return _context.abrupt("return", parseKTX2File(fileConstructors.KTX2File, data, options));
|
|
114
|
-
case 6:
|
|
115
|
-
_context.next = 8;
|
|
116
|
-
return (0, _basisModuleLoader.loadBasisTranscoderModule)(options);
|
|
117
|
-
case 8:
|
|
118
|
-
_yield$loadBasisTrans = _context.sent;
|
|
119
|
-
BasisFile = _yield$loadBasisTrans.BasisFile;
|
|
120
|
-
return _context.abrupt("return", parseBasisFile(BasisFile, data, options));
|
|
121
|
-
case 11:
|
|
122
|
-
_context.t0 = options.basis.module;
|
|
123
|
-
_context.next = _context.t0 === 'encoder' ? 14 : _context.t0 === 'transcoder' ? 22 : 22;
|
|
124
|
-
break;
|
|
125
|
-
case 14:
|
|
126
|
-
_context.next = 16;
|
|
127
|
-
return (0, _basisModuleLoader.loadBasisEncoderModule)(options);
|
|
128
|
-
case 16:
|
|
129
|
-
_fileConstructors = _context.sent;
|
|
130
|
-
_context.t1 = options.basis.containerFormat;
|
|
131
|
-
_context.next = _context.t1 === 'ktx2' ? 20 : _context.t1 === 'basis' ? 21 : 21;
|
|
132
|
-
break;
|
|
133
|
-
case 20:
|
|
134
|
-
return _context.abrupt("return", parseKTX2File(_fileConstructors.KTX2File, data, options));
|
|
135
|
-
case 21:
|
|
136
|
-
return _context.abrupt("return", parseBasisFile(_fileConstructors.BasisFile, data, options));
|
|
137
|
-
case 22:
|
|
138
|
-
_context.next = 24;
|
|
139
|
-
return (0, _basisModuleLoader.loadBasisTranscoderModule)(options);
|
|
140
|
-
case 24:
|
|
141
|
-
_yield$loadBasisTrans2 = _context.sent;
|
|
142
|
-
_BasisFile = _yield$loadBasisTrans2.BasisFile;
|
|
143
|
-
return _context.abrupt("return", parseBasisFile(_BasisFile, data, options));
|
|
144
|
-
case 27:
|
|
145
|
-
case "end":
|
|
146
|
-
return _context.stop();
|
|
147
|
-
}
|
|
148
|
-
}, _callee);
|
|
149
|
-
}));
|
|
150
|
-
return _parseBasis.apply(this, arguments);
|
|
151
|
-
}
|
|
152
|
-
function parseBasisFile(BasisFile, data, options) {
|
|
153
|
-
var basisFile = new BasisFile(new Uint8Array(data));
|
|
154
|
-
try {
|
|
155
|
-
if (!basisFile.startTranscoding()) {
|
|
156
|
-
throw new Error('Failed to start basis transcoding');
|
|
157
|
-
}
|
|
158
|
-
var imageCount = basisFile.getNumImages();
|
|
159
|
-
var images = [];
|
|
160
|
-
for (var imageIndex = 0; imageIndex < imageCount; imageIndex++) {
|
|
161
|
-
var levelsCount = basisFile.getNumLevels(imageIndex);
|
|
162
|
-
var levels = [];
|
|
163
|
-
for (var levelIndex = 0; levelIndex < levelsCount; levelIndex++) {
|
|
164
|
-
levels.push(transcodeImage(basisFile, imageIndex, levelIndex, options));
|
|
165
|
-
}
|
|
166
|
-
images.push(levels);
|
|
167
|
-
}
|
|
168
|
-
return images;
|
|
169
|
-
} finally {
|
|
170
|
-
basisFile.close();
|
|
171
|
-
basisFile.delete();
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
function transcodeImage(basisFile, imageIndex, levelIndex, options) {
|
|
175
|
-
var width = basisFile.getImageWidth(imageIndex, levelIndex);
|
|
176
|
-
var height = basisFile.getImageHeight(imageIndex, levelIndex);
|
|
177
|
-
var hasAlpha = basisFile.getHasAlpha();
|
|
178
|
-
var _getBasisOptions = getBasisOptions(options, hasAlpha),
|
|
179
|
-
compressed = _getBasisOptions.compressed,
|
|
180
|
-
format = _getBasisOptions.format,
|
|
181
|
-
basisFormat = _getBasisOptions.basisFormat;
|
|
182
|
-
var decodedSize = basisFile.getImageTranscodedSizeInBytes(imageIndex, levelIndex, basisFormat);
|
|
183
|
-
var decodedData = new Uint8Array(decodedSize);
|
|
184
|
-
if (!basisFile.transcodeImage(decodedData, imageIndex, levelIndex, basisFormat, 0, 0)) {
|
|
185
|
-
throw new Error('failed to start Basis transcoding');
|
|
186
|
-
}
|
|
187
|
-
return {
|
|
188
|
-
width: width,
|
|
189
|
-
height: height,
|
|
190
|
-
data: decodedData,
|
|
191
|
-
compressed: compressed,
|
|
192
|
-
format: format,
|
|
193
|
-
hasAlpha: hasAlpha
|
|
194
|
-
};
|
|
195
|
-
}
|
|
196
|
-
function parseKTX2File(KTX2File, data, options) {
|
|
197
|
-
var ktx2File = new KTX2File(new Uint8Array(data));
|
|
198
|
-
try {
|
|
199
|
-
if (!ktx2File.startTranscoding()) {
|
|
200
|
-
throw new Error('failed to start KTX2 transcoding');
|
|
201
|
-
}
|
|
202
|
-
var levelsCount = ktx2File.getLevels();
|
|
203
|
-
var levels = [];
|
|
204
|
-
for (var levelIndex = 0; levelIndex < levelsCount; levelIndex++) {
|
|
205
|
-
levels.push(transcodeKTX2Image(ktx2File, levelIndex, options));
|
|
206
|
-
break;
|
|
207
|
-
}
|
|
208
|
-
return [levels];
|
|
209
|
-
} finally {
|
|
210
|
-
ktx2File.close();
|
|
211
|
-
ktx2File.delete();
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
function transcodeKTX2Image(ktx2File, levelIndex, options) {
|
|
215
|
-
var _ktx2File$getImageLev = ktx2File.getImageLevelInfo(levelIndex, 0, 0),
|
|
216
|
-
alphaFlag = _ktx2File$getImageLev.alphaFlag,
|
|
217
|
-
height = _ktx2File$getImageLev.height,
|
|
218
|
-
width = _ktx2File$getImageLev.width;
|
|
219
|
-
var _getBasisOptions2 = getBasisOptions(options, alphaFlag),
|
|
220
|
-
compressed = _getBasisOptions2.compressed,
|
|
221
|
-
format = _getBasisOptions2.format,
|
|
222
|
-
basisFormat = _getBasisOptions2.basisFormat;
|
|
223
|
-
var decodedSize = ktx2File.getImageTranscodedSizeInBytes(levelIndex, 0, 0, basisFormat);
|
|
224
|
-
var decodedData = new Uint8Array(decodedSize);
|
|
225
|
-
if (!ktx2File.transcodeImage(decodedData, levelIndex, 0, 0, basisFormat, 0, -1, -1)) {
|
|
226
|
-
throw new Error('Failed to transcode KTX2 image');
|
|
227
|
-
}
|
|
228
|
-
return {
|
|
229
|
-
width: width,
|
|
230
|
-
height: height,
|
|
231
|
-
data: decodedData,
|
|
232
|
-
compressed: compressed,
|
|
233
|
-
levelSize: decodedSize,
|
|
234
|
-
hasAlpha: alphaFlag,
|
|
235
|
-
format: format
|
|
236
|
-
};
|
|
237
|
-
}
|
|
238
|
-
function getBasisOptions(options, hasAlpha) {
|
|
239
|
-
var format = options && options.basis && options.basis.format;
|
|
240
|
-
if (format === 'auto') {
|
|
241
|
-
format = selectSupportedBasisFormat();
|
|
242
|
-
}
|
|
243
|
-
if ((0, _typeof2.default)(format) === 'object') {
|
|
244
|
-
format = hasAlpha ? format.alpha : format.noAlpha;
|
|
245
|
-
}
|
|
246
|
-
format = format.toLowerCase();
|
|
247
|
-
return OutputFormat[format];
|
|
248
|
-
}
|
|
249
|
-
function selectSupportedBasisFormat() {
|
|
250
|
-
var supportedFormats = (0, _textureFormats.getSupportedGPUTextureFormats)();
|
|
251
|
-
if (supportedFormats.has('astc')) {
|
|
252
|
-
return 'astc-4x4';
|
|
253
|
-
} else if (supportedFormats.has('dxt')) {
|
|
254
|
-
return {
|
|
255
|
-
alpha: 'bc3',
|
|
256
|
-
noAlpha: 'bc1'
|
|
257
|
-
};
|
|
258
|
-
} else if (supportedFormats.has('pvrtc')) {
|
|
259
|
-
return {
|
|
260
|
-
alpha: 'pvrtc1-4-rgba',
|
|
261
|
-
noAlpha: 'pvrtc1-4-rgb'
|
|
262
|
-
};
|
|
263
|
-
} else if (supportedFormats.has('etc1')) {
|
|
264
|
-
return 'etc1';
|
|
265
|
-
} else if (supportedFormats.has('etc2')) {
|
|
266
|
-
return 'etc2';
|
|
267
|
-
}
|
|
268
|
-
return 'rgb565';
|
|
269
|
-
}
|
|
270
|
-
//# sourceMappingURL=parse-basis.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parse-basis.js","names":["_basisModuleLoader","require","_glExtensions","_textureFormats","_parseKtx","OutputFormat","etc1","basisFormat","compressed","format","GL_EXTENSIONS_CONSTANTS","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","_x","_x2","_parseBasis","apply","arguments","_asyncToGenerator2","default","_regenerator","mark","_callee","data","options","fileConstructors","_yield$loadBasisTrans","BasisFile","_fileConstructors","_yield$loadBasisTrans2","_BasisFile","wrap","_callee$","_context","prev","next","basis","containerFormat","isKTX","loadBasisEncoderModule","sent","abrupt","parseKTX2File","KTX2File","loadBasisTranscoderModule","parseBasisFile","t0","module","t1","stop","basisFile","Uint8Array","startTranscoding","Error","imageCount","getNumImages","images","imageIndex","levelsCount","getNumLevels","levels","levelIndex","push","transcodeImage","close","delete","width","getImageWidth","height","getImageHeight","hasAlpha","getHasAlpha","_getBasisOptions","getBasisOptions","decodedSize","getImageTranscodedSizeInBytes","decodedData","ktx2File","getLevels","transcodeKTX2Image","_ktx2File$getImageLev","getImageLevelInfo","alphaFlag","_getBasisOptions2","levelSize","selectSupportedBasisFormat","_typeof2","alpha","noAlpha","toLowerCase","supportedFormats","getSupportedGPUTextureFormats","has"],"sources":["../../../../src/lib/parsers/parse-basis.ts"],"sourcesContent":["/* eslint-disable indent */\nimport type {TextureLevel} from '@loaders.gl/schema';\nimport {loadBasisEncoderModule, loadBasisTranscoderModule} from './basis-module-loader';\nimport {GL_EXTENSIONS_CONSTANTS} from '../gl-extensions';\nimport {getSupportedGPUTextureFormats} from '../utils/texture-formats';\nimport {isKTX} from './parse-ktx';\n\nexport type BasisFormat =\n | 'etc1'\n | 'etc2'\n | 'bc1'\n | 'bc3'\n | 'bc4'\n | 'bc5'\n | 'bc7-m6-opaque-only'\n | 'bc7-m5'\n | 'pvrtc1-4-rgb'\n | 'pvrtc1-4-rgba'\n | 'astc-4x4'\n | 'atc-rgb'\n | 'atc-rgba-interpolated-alpha'\n | 'rgba32'\n | 'rgb565'\n | 'bgr565'\n | 'rgba4444';\n\ntype BasisOutputOptions = {\n basisFormat: number;\n compressed: boolean;\n format?: number;\n};\n\nconst OutputFormat: Record<string, BasisOutputOptions> = {\n etc1: {\n basisFormat: 0,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ETC1_WEBGL\n },\n etc2: {basisFormat: 1, compressed: true},\n bc1: {\n basisFormat: 2,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT\n },\n bc3: {\n basisFormat: 3,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT\n },\n bc4: {basisFormat: 4, compressed: true},\n bc5: {basisFormat: 5, compressed: true},\n 'bc7-m6-opaque-only': {basisFormat: 6, compressed: true},\n 'bc7-m5': {basisFormat: 7, compressed: true},\n 'pvrtc1-4-rgb': {\n basisFormat: 8,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_4BPPV1_IMG\n },\n 'pvrtc1-4-rgba': {\n basisFormat: 9,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG\n },\n 'astc-4x4': {\n basisFormat: 10,\n compressed: true,\n format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR\n },\n 'atc-rgb': {basisFormat: 11, compressed: true},\n 'atc-rgba-interpolated-alpha': {basisFormat: 12, compressed: true},\n rgba32: {basisFormat: 13, compressed: false},\n rgb565: {basisFormat: 14, compressed: false},\n bgr565: {basisFormat: 15, compressed: false},\n rgba4444: {basisFormat: 16, compressed: false}\n};\n\n/**\n * parse data with a Binomial Basis_Universal module\n * @param data\n * @param options\n * @returns compressed texture data\n */\nexport default async function parseBasis(data: ArrayBuffer, options): Promise<TextureLevel[][]> {\n if (options.basis.containerFormat === 'auto') {\n if (isKTX(data)) {\n const fileConstructors = await loadBasisEncoderModule(options);\n return parseKTX2File(fileConstructors.KTX2File, data, options);\n }\n const {BasisFile} = await loadBasisTranscoderModule(options);\n return parseBasisFile(BasisFile, data, options);\n }\n switch (options.basis.module) {\n case 'encoder':\n const fileConstructors = await loadBasisEncoderModule(options);\n switch (options.basis.containerFormat) {\n case 'ktx2':\n return parseKTX2File(fileConstructors.KTX2File, data, options);\n case 'basis':\n default:\n return parseBasisFile(fileConstructors.BasisFile, data, options);\n }\n case 'transcoder':\n default:\n const {BasisFile} = await loadBasisTranscoderModule(options);\n return parseBasisFile(BasisFile, data, options);\n }\n}\n\n/**\n * Parse *.basis file data\n * @param BasisFile - initialized transcoder module\n * @param data\n * @param options\n * @returns compressed texture data\n */\nfunction parseBasisFile(BasisFile, data, options): TextureLevel[][] {\n const basisFile = new BasisFile(new Uint8Array(data));\n\n try {\n if (!basisFile.startTranscoding()) {\n throw new Error('Failed to start basis transcoding');\n }\n\n const imageCount = basisFile.getNumImages();\n const images: TextureLevel[][] = [];\n\n for (let imageIndex = 0; imageIndex < imageCount; imageIndex++) {\n const levelsCount = basisFile.getNumLevels(imageIndex);\n const levels: TextureLevel[] = [];\n\n for (let levelIndex = 0; levelIndex < levelsCount; levelIndex++) {\n levels.push(transcodeImage(basisFile, imageIndex, levelIndex, options));\n }\n\n images.push(levels);\n }\n\n return images;\n } finally {\n basisFile.close();\n basisFile.delete();\n }\n}\n\n/**\n * Parse the particular level image of a basis file\n * @param basisFile\n * @param imageIndex\n * @param levelIndex\n * @param options\n * @returns compressed texture data\n */\nfunction transcodeImage(basisFile, imageIndex, levelIndex, options): TextureLevel {\n const width = basisFile.getImageWidth(imageIndex, levelIndex);\n const height = basisFile.getImageHeight(imageIndex, levelIndex);\n\n // See https://github.com/BinomialLLC/basis_universal/pull/83\n const hasAlpha = basisFile.getHasAlpha(/* imageIndex, levelIndex */);\n\n // Check options for output format etc\n const {compressed, format, basisFormat} = getBasisOptions(options, hasAlpha);\n\n const decodedSize = basisFile.getImageTranscodedSizeInBytes(imageIndex, levelIndex, basisFormat);\n const decodedData = new Uint8Array(decodedSize);\n\n if (!basisFile.transcodeImage(decodedData, imageIndex, levelIndex, basisFormat, 0, 0)) {\n throw new Error('failed to start Basis transcoding');\n }\n\n return {\n // standard loaders.gl image category payload\n width,\n height,\n data: decodedData,\n compressed,\n format,\n\n // Additional fields\n // Add levelSize field.\n hasAlpha\n };\n}\n\n/**\n * Parse *.ktx2 file data\n * @param KTX2File\n * @param data\n * @param options\n * @returns compressed texture data\n */\nfunction parseKTX2File(KTX2File, data: ArrayBuffer, options): TextureLevel[][] {\n const ktx2File = new KTX2File(new Uint8Array(data));\n\n try {\n if (!ktx2File.startTranscoding()) {\n throw new Error('failed to start KTX2 transcoding');\n }\n const levelsCount = ktx2File.getLevels();\n const levels: TextureLevel[] = [];\n\n for (let levelIndex = 0; levelIndex < levelsCount; levelIndex++) {\n levels.push(transcodeKTX2Image(ktx2File, levelIndex, options));\n break; // texture app can only show one level for some reason\n }\n\n return [levels];\n } finally {\n ktx2File.close();\n ktx2File.delete();\n }\n}\n\n/**\n * Parse the particular level image of a ktx2 file\n * @param ktx2File\n * @param levelIndex\n * @param options\n * @returns\n */\nfunction transcodeKTX2Image(ktx2File, levelIndex: number, options): TextureLevel {\n const {alphaFlag, height, width} = ktx2File.getImageLevelInfo(levelIndex, 0, 0);\n\n // Check options for output format etc\n const {compressed, format, basisFormat} = getBasisOptions(options, alphaFlag);\n\n const decodedSize = ktx2File.getImageTranscodedSizeInBytes(\n levelIndex,\n 0 /* layerIndex */,\n 0 /* faceIndex */,\n basisFormat\n );\n const decodedData = new Uint8Array(decodedSize);\n\n if (\n !ktx2File.transcodeImage(\n decodedData,\n levelIndex,\n 0 /* layerIndex */,\n 0 /* faceIndex */,\n basisFormat,\n 0,\n -1 /* channel0 */,\n -1 /* channel1 */\n )\n ) {\n throw new Error('Failed to transcode KTX2 image');\n }\n\n return {\n // standard loaders.gl image category payload\n width,\n height,\n data: decodedData,\n compressed,\n\n // Additional fields\n levelSize: decodedSize,\n hasAlpha: alphaFlag,\n format\n };\n}\n\n/**\n * Get BasisFormat by loader format option\n * @param options\n * @param hasAlpha\n * @returns BasisFormat data\n */\nfunction getBasisOptions(options, hasAlpha: boolean): BasisOutputOptions {\n let format = options && options.basis && options.basis.format;\n if (format === 'auto') {\n format = selectSupportedBasisFormat();\n }\n if (typeof format === 'object') {\n format = hasAlpha ? format.alpha : format.noAlpha;\n }\n format = format.toLowerCase();\n return OutputFormat[format];\n}\n\n/**\n * Select transcode format from the list of supported formats\n * @returns key for OutputFormat map\n */\nexport function selectSupportedBasisFormat():\n | BasisFormat\n | {\n alpha: BasisFormat;\n noAlpha: BasisFormat;\n } {\n const supportedFormats = getSupportedGPUTextureFormats();\n if (supportedFormats.has('astc')) {\n return 'astc-4x4';\n } else if (supportedFormats.has('dxt')) {\n return {\n alpha: 'bc3',\n noAlpha: 'bc1'\n };\n } else if (supportedFormats.has('pvrtc')) {\n return {\n alpha: 'pvrtc1-4-rgba',\n noAlpha: 'pvrtc1-4-rgb'\n };\n } else if (supportedFormats.has('etc1')) {\n return 'etc1';\n } else if (supportedFormats.has('etc2')) {\n return 'etc2';\n }\n return 'rgb565';\n}\n"],"mappings":"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"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.parseCompressedTexture = parseCompressedTexture;
|
|
7
|
-
var _parseKtx = require("./parse-ktx");
|
|
8
|
-
var _parseDds = require("./parse-dds");
|
|
9
|
-
var _parsePvr = require("./parse-pvr");
|
|
10
|
-
function parseCompressedTexture(data) {
|
|
11
|
-
if ((0, _parseKtx.isKTX)(data)) {
|
|
12
|
-
return (0, _parseKtx.parseKTX)(data);
|
|
13
|
-
}
|
|
14
|
-
if ((0, _parseDds.isDDS)(data)) {
|
|
15
|
-
return (0, _parseDds.parseDDS)(data);
|
|
16
|
-
}
|
|
17
|
-
if ((0, _parsePvr.isPVR)(data)) {
|
|
18
|
-
return (0, _parsePvr.parsePVR)(data);
|
|
19
|
-
}
|
|
20
|
-
throw new Error('Texture container format not recognized');
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=parse-compressed-texture.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parse-compressed-texture.js","names":["_parseKtx","require","_parseDds","_parsePvr","parseCompressedTexture","data","isKTX","parseKTX","isDDS","parseDDS","isPVR","parsePVR","Error"],"sources":["../../../../src/lib/parsers/parse-compressed-texture.ts"],"sourcesContent":["import type {TextureLevel} from '@loaders.gl/schema';\nimport {isKTX, parseKTX} from './parse-ktx';\nimport {isDDS, parseDDS} from './parse-dds';\nimport {isPVR, parsePVR} from './parse-pvr';\n\n/**\n * Deduces format and parses compressed texture loaded in ArrayBuffer\n * @param data - binary data of compressed texture\n * @returns Array of the texture levels\n */\nexport function parseCompressedTexture(data: ArrayBuffer): TextureLevel[] {\n if (isKTX(data)) {\n // TODO: remove @ts-ignore when `parseKTX` output is normalized to loaders.gl texture format\n // @ts-ignore\n return parseKTX(data);\n }\n if (isDDS(data)) {\n return parseDDS(data);\n }\n if (isPVR(data)) {\n return parsePVR(data);\n }\n throw new Error('Texture container format not recognized');\n}\n"],"mappings":";;;;;;AACA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAOO,SAASG,sBAAsBA,CAACC,IAAiB,EAAkB;EACxE,IAAI,IAAAC,eAAK,EAACD,IAAI,CAAC,EAAE;IAGf,OAAO,IAAAE,kBAAQ,EAACF,IAAI,CAAC;EACvB;EACA,IAAI,IAAAG,eAAK,EAACH,IAAI,CAAC,EAAE;IACf,OAAO,IAAAI,kBAAQ,EAACJ,IAAI,CAAC;EACvB;EACA,IAAI,IAAAK,eAAK,EAACL,IAAI,CAAC,EAAE;IACf,OAAO,IAAAM,kBAAQ,EAACN,IAAI,CAAC;EACvB;EACA,MAAM,IAAIO,KAAK,CAAC,yCAAyC,CAAC;AAC5D"}
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.parseCrunch = parseCrunch;
|
|
8
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
-
var _crunchModuleLoader = require("./crunch-module-loader");
|
|
12
|
-
var _glExtensions = require("../gl-extensions");
|
|
13
|
-
var _loaderUtils = require("@loaders.gl/loader-utils");
|
|
14
|
-
var _parseDds = require("./parse-dds");
|
|
15
|
-
var _extractMipmapImages = require("../utils/extract-mipmap-images");
|
|
16
|
-
var _DXT_FORMAT_MAP;
|
|
17
|
-
var CRN_FORMAT = {
|
|
18
|
-
cCRNFmtInvalid: -1,
|
|
19
|
-
cCRNFmtDXT1: 0,
|
|
20
|
-
cCRNFmtDXT3: 1,
|
|
21
|
-
cCRNFmtDXT5: 2
|
|
22
|
-
};
|
|
23
|
-
var DXT_FORMAT_MAP = (_DXT_FORMAT_MAP = {}, (0, _defineProperty2.default)(_DXT_FORMAT_MAP, CRN_FORMAT.cCRNFmtDXT1, {
|
|
24
|
-
pixelFormat: _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT,
|
|
25
|
-
sizeFunction: _parseDds.getDxt1LevelSize
|
|
26
|
-
}), (0, _defineProperty2.default)(_DXT_FORMAT_MAP, CRN_FORMAT.cCRNFmtDXT3, {
|
|
27
|
-
pixelFormat: _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT,
|
|
28
|
-
sizeFunction: _parseDds.getDxtXLevelSize
|
|
29
|
-
}), (0, _defineProperty2.default)(_DXT_FORMAT_MAP, CRN_FORMAT.cCRNFmtDXT5, {
|
|
30
|
-
pixelFormat: _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT,
|
|
31
|
-
sizeFunction: _parseDds.getDxtXLevelSize
|
|
32
|
-
}), _DXT_FORMAT_MAP);
|
|
33
|
-
var cachedDstSize = 0;
|
|
34
|
-
var dst;
|
|
35
|
-
function parseCrunch(_x, _x2) {
|
|
36
|
-
return _parseCrunch.apply(this, arguments);
|
|
37
|
-
}
|
|
38
|
-
function _parseCrunch() {
|
|
39
|
-
_parseCrunch = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(data, options) {
|
|
40
|
-
var crunchModule, srcSize, bytes, src, format, mipMapLevels, width, height, sizeFunction, dstSize, i, image;
|
|
41
|
-
return _regenerator.default.wrap(function _callee$(_context) {
|
|
42
|
-
while (1) switch (_context.prev = _context.next) {
|
|
43
|
-
case 0:
|
|
44
|
-
_context.next = 2;
|
|
45
|
-
return (0, _crunchModuleLoader.loadCrunchModule)(options);
|
|
46
|
-
case 2:
|
|
47
|
-
crunchModule = _context.sent;
|
|
48
|
-
srcSize = data.byteLength;
|
|
49
|
-
bytes = new Uint8Array(data);
|
|
50
|
-
src = crunchModule._malloc(srcSize);
|
|
51
|
-
arrayBufferCopy(bytes, crunchModule.HEAPU8, src, srcSize);
|
|
52
|
-
format = crunchModule._crn_get_dxt_format(src, srcSize);
|
|
53
|
-
(0, _loaderUtils.assert)(Boolean(DXT_FORMAT_MAP[format]), 'Unsupported format');
|
|
54
|
-
mipMapLevels = crunchModule._crn_get_levels(src, srcSize);
|
|
55
|
-
width = crunchModule._crn_get_width(src, srcSize);
|
|
56
|
-
height = crunchModule._crn_get_height(src, srcSize);
|
|
57
|
-
sizeFunction = DXT_FORMAT_MAP[format].sizeFunction;
|
|
58
|
-
dstSize = 0;
|
|
59
|
-
for (i = 0; i < mipMapLevels; ++i) {
|
|
60
|
-
dstSize += sizeFunction(width >> i, height >> i);
|
|
61
|
-
}
|
|
62
|
-
if (cachedDstSize < dstSize) {
|
|
63
|
-
if (dst) {
|
|
64
|
-
crunchModule._free(dst);
|
|
65
|
-
}
|
|
66
|
-
dst = crunchModule._malloc(dstSize);
|
|
67
|
-
cachedDstSize = dstSize;
|
|
68
|
-
}
|
|
69
|
-
crunchModule._crn_decompress(src, srcSize, dst, dstSize, 0, mipMapLevels);
|
|
70
|
-
crunchModule._free(src);
|
|
71
|
-
image = new Uint8Array(crunchModule.HEAPU8.buffer, dst, dstSize).slice();
|
|
72
|
-
return _context.abrupt("return", (0, _extractMipmapImages.extractMipmapImages)(image, {
|
|
73
|
-
mipMapLevels: mipMapLevels,
|
|
74
|
-
width: width,
|
|
75
|
-
height: height,
|
|
76
|
-
sizeFunction: sizeFunction,
|
|
77
|
-
internalFormat: DXT_FORMAT_MAP[format].pixelFormat
|
|
78
|
-
}));
|
|
79
|
-
case 20:
|
|
80
|
-
case "end":
|
|
81
|
-
return _context.stop();
|
|
82
|
-
}
|
|
83
|
-
}, _callee);
|
|
84
|
-
}));
|
|
85
|
-
return _parseCrunch.apply(this, arguments);
|
|
86
|
-
}
|
|
87
|
-
function arrayBufferCopy(srcData, dstData, dstByteOffset, numBytes) {
|
|
88
|
-
var i;
|
|
89
|
-
var dst32Offset = dstByteOffset / 4;
|
|
90
|
-
var tail = numBytes % 4;
|
|
91
|
-
var src32 = new Uint32Array(srcData.buffer, 0, (numBytes - tail) / 4);
|
|
92
|
-
var dst32 = new Uint32Array(dstData.buffer);
|
|
93
|
-
for (i = 0; i < src32.length; i++) {
|
|
94
|
-
dst32[dst32Offset + i] = src32[i];
|
|
95
|
-
}
|
|
96
|
-
for (i = numBytes - tail; i < numBytes; i++) {
|
|
97
|
-
dstData[dstByteOffset + i] = srcData[i];
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
//# sourceMappingURL=parse-crunch.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parse-crunch.js","names":["_crunchModuleLoader","require","_glExtensions","_loaderUtils","_parseDds","_extractMipmapImages","_DXT_FORMAT_MAP","CRN_FORMAT","cCRNFmtInvalid","cCRNFmtDXT1","cCRNFmtDXT3","cCRNFmtDXT5","DXT_FORMAT_MAP","_defineProperty2","default","pixelFormat","GL_EXTENSIONS_CONSTANTS","COMPRESSED_RGB_S3TC_DXT1_EXT","sizeFunction","getDxt1LevelSize","COMPRESSED_RGBA_S3TC_DXT3_EXT","getDxtXLevelSize","COMPRESSED_RGBA_S3TC_DXT5_EXT","cachedDstSize","dst","parseCrunch","_x","_x2","_parseCrunch","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee","data","options","crunchModule","srcSize","bytes","src","format","mipMapLevels","width","height","dstSize","i","image","wrap","_callee$","_context","prev","next","loadCrunchModule","sent","byteLength","Uint8Array","_malloc","arrayBufferCopy","HEAPU8","_crn_get_dxt_format","assert","Boolean","_crn_get_levels","_crn_get_width","_crn_get_height","_free","_crn_decompress","buffer","slice","abrupt","extractMipmapImages","internalFormat","stop","srcData","dstData","dstByteOffset","numBytes","dst32Offset","tail","src32","Uint32Array","dst32","length"],"sources":["../../../../src/lib/parsers/parse-crunch.ts"],"sourcesContent":["import type {TextureLevel} from '@loaders.gl/schema';\nimport {loadCrunchModule} from './crunch-module-loader';\nimport {GL_EXTENSIONS_CONSTANTS} from '../gl-extensions';\nimport {assert} from '@loaders.gl/loader-utils';\nimport {getDxt1LevelSize, getDxtXLevelSize} from './parse-dds';\nimport {extractMipmapImages} from '../utils/extract-mipmap-images';\n\n// Taken from crnlib.h\nconst CRN_FORMAT = {\n cCRNFmtInvalid: -1,\n\n cCRNFmtDXT1: 0,\n // cCRNFmtDXT3 is not currently supported when writing to CRN - only DDS.\n cCRNFmtDXT3: 1,\n cCRNFmtDXT5: 2\n\n // Crunch supports more formats than this.\n};\n\n/** Mapping of Crunch formats to DXT formats. */\nconst DXT_FORMAT_MAP = {\n [CRN_FORMAT.cCRNFmtDXT1]: {\n pixelFormat: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT,\n sizeFunction: getDxt1LevelSize\n },\n [CRN_FORMAT.cCRNFmtDXT3]: {\n pixelFormat: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT,\n sizeFunction: getDxtXLevelSize\n },\n [CRN_FORMAT.cCRNFmtDXT5]: {\n pixelFormat: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT,\n sizeFunction: getDxtXLevelSize\n }\n};\n\nlet cachedDstSize = 0;\nlet dst: number;\n\n/**\n * Parse texture data as \"CRN\" format.\n * Function is \"async\" as emscriptified decoder module is loaded asyncronously\n * @param data - binary data of compressed texture\n * @returns Promise of Array of the texture levels\n */\nexport async function parseCrunch(data, options: any): Promise<TextureLevel[]> {\n const crunchModule = await loadCrunchModule(options);\n\n // Copy the contents of the arrayBuffer into emscriptens heap.\n const srcSize = data.byteLength;\n const bytes = new Uint8Array(data);\n const src = crunchModule._malloc(srcSize);\n arrayBufferCopy(bytes, crunchModule.HEAPU8, src, srcSize);\n\n // Determine what type of compressed data the file contains.\n const format = crunchModule._crn_get_dxt_format(src, srcSize);\n assert(Boolean(DXT_FORMAT_MAP[format]), 'Unsupported format');\n\n // Gather basic metrics about the DXT data.\n const mipMapLevels = crunchModule._crn_get_levels(src, srcSize);\n const width = crunchModule._crn_get_width(src, srcSize);\n const height = crunchModule._crn_get_height(src, srcSize);\n // const bytesPerBlock = crunchModule._crn_get_bytes_per_block(src, srcSize);\n\n // Determine the size of the decoded DXT data.\n const sizeFunction = DXT_FORMAT_MAP[format].sizeFunction;\n let dstSize = 0;\n for (let i = 0; i < mipMapLevels; ++i) {\n dstSize += sizeFunction(width >> i, height >> i);\n }\n\n // Allocate enough space on the emscripten heap to hold the decoded DXT data\n // or reuse the existing allocation if a previous call to this function has\n // already acquired a large enough buffer.\n if (cachedDstSize < dstSize) {\n if (dst) {\n crunchModule._free(dst);\n }\n dst = crunchModule._malloc(dstSize);\n cachedDstSize = dstSize;\n }\n\n // Decompress the DXT data from the Crunch file into the allocated space.\n crunchModule._crn_decompress(src, srcSize, dst, dstSize, 0, mipMapLevels);\n\n // Release the crunch file data from the emscripten heap.\n crunchModule._free(src);\n\n const image = new Uint8Array(crunchModule.HEAPU8.buffer, dst, dstSize).slice();\n return extractMipmapImages(image, {\n mipMapLevels,\n width,\n height,\n sizeFunction,\n internalFormat: DXT_FORMAT_MAP[format].pixelFormat\n });\n}\n\n/**\n * Copy an array of bytes into or out of the emscripten heap\n * @param {Uint8Array} srcData - Source data array\n * @param {Uint8Array} dstData - Destination data array\n * @param {number} dstByteOffset - Destination data offset\n * @param {number} numBytes - number of bytes to copy\n * @returns {void}\n */\nfunction arrayBufferCopy(srcData, dstData, dstByteOffset, numBytes) {\n let i;\n const dst32Offset = dstByteOffset / 4;\n const tail = numBytes % 4;\n const src32 = new Uint32Array(srcData.buffer, 0, (numBytes - tail) / 4);\n const dst32 = new Uint32Array(dstData.buffer);\n for (i = 0; i < src32.length; i++) {\n dst32[dst32Offset + i] = src32[i];\n }\n for (i = numBytes - tail; i < numBytes; i++) {\n dstData[dstByteOffset + i] = srcData[i];\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.getDxt1LevelSize = getDxt1LevelSize;
|
|
7
|
-
exports.getDxtXLevelSize = getDxtXLevelSize;
|
|
8
|
-
exports.isDDS = isDDS;
|
|
9
|
-
exports.parseDDS = parseDDS;
|
|
10
|
-
var _loaderUtils = require("@loaders.gl/loader-utils");
|
|
11
|
-
var _glExtensions = require("../gl-extensions");
|
|
12
|
-
var _extractMipmapImages = require("../utils/extract-mipmap-images");
|
|
13
|
-
var DDS_CONSTANTS = {
|
|
14
|
-
MAGIC_NUMBER: 0x20534444,
|
|
15
|
-
HEADER_LENGTH: 31,
|
|
16
|
-
MAGIC_NUMBER_INDEX: 0,
|
|
17
|
-
HEADER_SIZE_INDEX: 1,
|
|
18
|
-
HEADER_FLAGS_INDEX: 2,
|
|
19
|
-
HEADER_HEIGHT_INDEX: 3,
|
|
20
|
-
HEADER_WIDTH_INDEX: 4,
|
|
21
|
-
MIPMAPCOUNT_INDEX: 7,
|
|
22
|
-
HEADER_PF_FLAGS_INDEX: 20,
|
|
23
|
-
HEADER_PF_FOURCC_INDEX: 21,
|
|
24
|
-
DDSD_MIPMAPCOUNT: 0x20000,
|
|
25
|
-
DDPF_FOURCC: 0x4
|
|
26
|
-
};
|
|
27
|
-
var DDS_PIXEL_FORMATS = {
|
|
28
|
-
DXT1: _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT,
|
|
29
|
-
DXT3: _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT,
|
|
30
|
-
DXT5: _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT,
|
|
31
|
-
'ATC ': _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ATC_WEBGL,
|
|
32
|
-
ATCA: _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL,
|
|
33
|
-
ATCI: _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL
|
|
34
|
-
};
|
|
35
|
-
var getATCLevelSize = getDxt1LevelSize;
|
|
36
|
-
var getATCALevelSize = getDxtXLevelSize;
|
|
37
|
-
var getATCILevelSize = getDxtXLevelSize;
|
|
38
|
-
var DDS_SIZE_FUNCTIONS = {
|
|
39
|
-
DXT1: getDxt1LevelSize,
|
|
40
|
-
DXT3: getDxtXLevelSize,
|
|
41
|
-
DXT5: getDxtXLevelSize,
|
|
42
|
-
'ATC ': getATCLevelSize,
|
|
43
|
-
ATCA: getATCALevelSize,
|
|
44
|
-
ATCI: getATCILevelSize
|
|
45
|
-
};
|
|
46
|
-
function isDDS(data) {
|
|
47
|
-
var header = new Uint32Array(data, 0, DDS_CONSTANTS.HEADER_LENGTH);
|
|
48
|
-
var magic = header[DDS_CONSTANTS.MAGIC_NUMBER_INDEX];
|
|
49
|
-
return magic === DDS_CONSTANTS.MAGIC_NUMBER;
|
|
50
|
-
}
|
|
51
|
-
function parseDDS(data) {
|
|
52
|
-
var header = new Int32Array(data, 0, DDS_CONSTANTS.HEADER_LENGTH);
|
|
53
|
-
var pixelFormatNumber = header[DDS_CONSTANTS.HEADER_PF_FOURCC_INDEX];
|
|
54
|
-
(0, _loaderUtils.assert)(Boolean(header[DDS_CONSTANTS.HEADER_PF_FLAGS_INDEX] & DDS_CONSTANTS.DDPF_FOURCC), 'DDS: Unsupported format, must contain a FourCC code');
|
|
55
|
-
var fourCC = int32ToFourCC(pixelFormatNumber);
|
|
56
|
-
var internalFormat = DDS_PIXEL_FORMATS[fourCC];
|
|
57
|
-
var sizeFunction = DDS_SIZE_FUNCTIONS[fourCC];
|
|
58
|
-
(0, _loaderUtils.assert)(internalFormat && sizeFunction, "DDS: Unknown pixel format ".concat(pixelFormatNumber));
|
|
59
|
-
var mipMapLevels = 1;
|
|
60
|
-
if (header[DDS_CONSTANTS.HEADER_FLAGS_INDEX] & DDS_CONSTANTS.DDSD_MIPMAPCOUNT) {
|
|
61
|
-
mipMapLevels = Math.max(1, header[DDS_CONSTANTS.MIPMAPCOUNT_INDEX]);
|
|
62
|
-
}
|
|
63
|
-
var width = header[DDS_CONSTANTS.HEADER_WIDTH_INDEX];
|
|
64
|
-
var height = header[DDS_CONSTANTS.HEADER_HEIGHT_INDEX];
|
|
65
|
-
var dataOffset = header[DDS_CONSTANTS.HEADER_SIZE_INDEX] + 4;
|
|
66
|
-
var image = new Uint8Array(data, dataOffset);
|
|
67
|
-
return (0, _extractMipmapImages.extractMipmapImages)(image, {
|
|
68
|
-
mipMapLevels: mipMapLevels,
|
|
69
|
-
width: width,
|
|
70
|
-
height: height,
|
|
71
|
-
sizeFunction: sizeFunction,
|
|
72
|
-
internalFormat: internalFormat
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
function getDxt1LevelSize(width, height) {
|
|
76
|
-
return (width + 3 >> 2) * (height + 3 >> 2) * 8;
|
|
77
|
-
}
|
|
78
|
-
function getDxtXLevelSize(width, height) {
|
|
79
|
-
return (width + 3 >> 2) * (height + 3 >> 2) * 16;
|
|
80
|
-
}
|
|
81
|
-
function int32ToFourCC(value) {
|
|
82
|
-
return String.fromCharCode(value & 0xff, value >> 8 & 0xff, value >> 16 & 0xff, value >> 24 & 0xff);
|
|
83
|
-
}
|
|
84
|
-
//# sourceMappingURL=parse-dds.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parse-dds.js","names":["_loaderUtils","require","_glExtensions","_extractMipmapImages","DDS_CONSTANTS","MAGIC_NUMBER","HEADER_LENGTH","MAGIC_NUMBER_INDEX","HEADER_SIZE_INDEX","HEADER_FLAGS_INDEX","HEADER_HEIGHT_INDEX","HEADER_WIDTH_INDEX","MIPMAPCOUNT_INDEX","HEADER_PF_FLAGS_INDEX","HEADER_PF_FOURCC_INDEX","DDSD_MIPMAPCOUNT","DDPF_FOURCC","DDS_PIXEL_FORMATS","DXT1","GL_EXTENSIONS_CONSTANTS","COMPRESSED_RGB_S3TC_DXT1_EXT","DXT3","COMPRESSED_RGBA_S3TC_DXT3_EXT","DXT5","COMPRESSED_RGBA_S3TC_DXT5_EXT","COMPRESSED_RGB_ATC_WEBGL","ATCA","COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL","ATCI","COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL","getATCLevelSize","getDxt1LevelSize","getATCALevelSize","getDxtXLevelSize","getATCILevelSize","DDS_SIZE_FUNCTIONS","isDDS","data","header","Uint32Array","magic","parseDDS","Int32Array","pixelFormatNumber","assert","Boolean","fourCC","int32ToFourCC","internalFormat","sizeFunction","concat","mipMapLevels","Math","max","width","height","dataOffset","image","Uint8Array","extractMipmapImages","value","String","fromCharCode"],"sources":["../../../../src/lib/parsers/parse-dds.ts"],"sourcesContent":["import type {TextureLevel} from '@loaders.gl/schema';\nimport {assert} from '@loaders.gl/loader-utils';\nimport {GL_EXTENSIONS_CONSTANTS} from '../gl-extensions';\nimport {extractMipmapImages} from '../utils/extract-mipmap-images';\n\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};\n\nconst DDS_PIXEL_FORMATS: Record<string, number> = {\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};\n\nconst getATCLevelSize = getDxt1LevelSize;\nconst getATCALevelSize = getDxtXLevelSize;\nconst getATCILevelSize = getDxtXLevelSize;\n\nconst DDS_SIZE_FUNCTIONS: Record<string, (width: number, height: number) => number> = {\n DXT1: getDxt1LevelSize,\n DXT3: getDxtXLevelSize,\n DXT5: getDxtXLevelSize,\n 'ATC ': getATCLevelSize,\n ATCA: getATCALevelSize,\n ATCI: getATCILevelSize\n};\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: ArrayBuffer): boolean {\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/**\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: ArrayBuffer): TextureLevel[] {\n const header = new Int32Array(data, 0, DDS_CONSTANTS.HEADER_LENGTH);\n const pixelFormatNumber = header[DDS_CONSTANTS.HEADER_PF_FOURCC_INDEX];\n assert(\n Boolean(header[DDS_CONSTANTS.HEADER_PF_FLAGS_INDEX] & DDS_CONSTANTS.DDPF_FOURCC),\n 'DDS: Unsupported format, must contain a FourCC code'\n );\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\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\n return extractMipmapImages(image, {\n mipMapLevels,\n width,\n height,\n sizeFunction,\n internalFormat\n });\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: number, height: number): number {\n return ((width + 3) >> 2) * ((height + 3) >> 2) * 8;\n}\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: number, height: number): number {\n return ((width + 3) >> 2) * ((height + 3) >> 2) * 16;\n}\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: number): string {\n return String.fromCharCode(\n value & 0xff,\n (value >> 8) & 0xff,\n (value >> 16) & 0xff,\n (value >> 24) & 0xff\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.isKTX = isKTX;
|
|
7
|
-
exports.parseKTX = parseKTX;
|
|
8
|
-
var _ktxParse = require("ktx-parse");
|
|
9
|
-
var _extractMipmapImages = require("../utils/extract-mipmap-images");
|
|
10
|
-
var _ktxFormatHelper = require("../utils/ktx-format-helper");
|
|
11
|
-
var KTX2_ID = [0xab, 0x4b, 0x54, 0x58, 0x20, 0x32, 0x30, 0xbb, 0x0d, 0x0a, 0x1a, 0x0a];
|
|
12
|
-
function isKTX(data) {
|
|
13
|
-
var id = new Uint8Array(data);
|
|
14
|
-
var notKTX = id.byteLength < KTX2_ID.length || id[0] !== KTX2_ID[0] || id[1] !== KTX2_ID[1] || id[2] !== KTX2_ID[2] || id[3] !== KTX2_ID[3] || id[4] !== KTX2_ID[4] || id[5] !== KTX2_ID[5] || id[6] !== KTX2_ID[6] || id[7] !== KTX2_ID[7] || id[8] !== KTX2_ID[8] || id[9] !== KTX2_ID[9] || id[10] !== KTX2_ID[10] || id[11] !== KTX2_ID[11];
|
|
15
|
-
return !notKTX;
|
|
16
|
-
}
|
|
17
|
-
function parseKTX(arrayBuffer) {
|
|
18
|
-
var uint8Array = new Uint8Array(arrayBuffer);
|
|
19
|
-
var ktx = (0, _ktxParse.read)(uint8Array);
|
|
20
|
-
var mipMapLevels = Math.max(1, ktx.levels.length);
|
|
21
|
-
var width = ktx.pixelWidth;
|
|
22
|
-
var height = ktx.pixelHeight;
|
|
23
|
-
var internalFormat = (0, _ktxFormatHelper.mapVkFormatToWebGL)(ktx.vkFormat);
|
|
24
|
-
return (0, _extractMipmapImages.extractMipmapImages)(ktx.levels, {
|
|
25
|
-
mipMapLevels: mipMapLevels,
|
|
26
|
-
width: width,
|
|
27
|
-
height: height,
|
|
28
|
-
sizeFunction: function sizeFunction(level) {
|
|
29
|
-
return level.uncompressedByteLength;
|
|
30
|
-
},
|
|
31
|
-
internalFormat: internalFormat
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=parse-ktx.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parse-ktx.js","names":["_ktxParse","require","_extractMipmapImages","_ktxFormatHelper","KTX2_ID","isKTX","data","id","Uint8Array","notKTX","byteLength","length","parseKTX","arrayBuffer","uint8Array","ktx","read","mipMapLevels","Math","max","levels","width","pixelWidth","height","pixelHeight","internalFormat","mapVkFormatToWebGL","vkFormat","extractMipmapImages","sizeFunction","level","uncompressedByteLength"],"sources":["../../../../src/lib/parsers/parse-ktx.ts"],"sourcesContent":["import type {TextureLevel} from '@loaders.gl/schema';\nimport {read} from 'ktx-parse';\nimport {extractMipmapImages} from '../utils/extract-mipmap-images';\nimport {mapVkFormatToWebGL} from '../utils/ktx-format-helper';\n\nconst KTX2_ID = [\n // '´', 'K', 'T', 'X', '2', '0', 'ª', '\\r', '\\n', '\\x1A', '\\n'\n 0xab, 0x4b, 0x54, 0x58, 0x20, 0x32, 0x30, 0xbb, 0x0d, 0x0a, 0x1a, 0x0a\n];\n\n// eslint-disable-next-line complexity\nexport function isKTX(data: ArrayBuffer) {\n // const id = new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n const id = new Uint8Array(data);\n const notKTX =\n id.byteLength < KTX2_ID.length ||\n id[0] !== KTX2_ID[0] || // '´'\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] || // 'ª'\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\n return !notKTX;\n}\n\nexport function parseKTX(arrayBuffer: ArrayBuffer): TextureLevel[] {\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\n return extractMipmapImages(ktx.levels, {\n mipMapLevels,\n width,\n height,\n sizeFunction: (level: any): number => level.uncompressedByteLength,\n internalFormat\n });\n}\n"],"mappings":";;;;;;;AACA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,oBAAA,GAAAD,OAAA;AACA,IAAAE,gBAAA,GAAAF,OAAA;AAEA,IAAMG,OAAO,GAAG,CAEd,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CACvE;AAGM,SAASC,KAAKA,CAACC,IAAiB,EAAE;EAEvC,IAAMC,EAAE,GAAG,IAAIC,UAAU,CAACF,IAAI,CAAC;EAC/B,IAAMG,MAAM,GACVF,EAAE,CAACG,UAAU,GAAGN,OAAO,CAACO,MAAM,IAC9BJ,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC,IACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC,IACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC,IACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC,IACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC,IACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC,IACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC,IACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC,IACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC,IACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC,IACpBG,EAAE,CAAC,EAAE,CAAC,KAAKH,OAAO,CAAC,EAAE,CAAC,IACtBG,EAAE,CAAC,EAAE,CAAC,KAAKH,OAAO,CAAC,EAAE,CAAC;EAExB,OAAO,CAACK,MAAM;AAChB;AAEO,SAASG,QAAQA,CAACC,WAAwB,EAAkB;EACjE,IAAMC,UAAU,GAAG,IAAIN,UAAU,CAACK,WAAW,CAAC;EAC9C,IAAME,GAAG,GAAG,IAAAC,cAAI,EAACF,UAAU,CAAC;EAC5B,IAAMG,YAAY,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEJ,GAAG,CAACK,MAAM,CAACT,MAAM,CAAC;EACnD,IAAMU,KAAK,GAAGN,GAAG,CAACO,UAAU;EAC5B,IAAMC,MAAM,GAAGR,GAAG,CAACS,WAAW;EAC9B,IAAMC,cAAc,GAAG,IAAAC,mCAAkB,EAACX,GAAG,CAACY,QAAQ,CAAC;EAEvD,OAAO,IAAAC,wCAAmB,EAACb,GAAG,CAACK,MAAM,EAAE;IACrCH,YAAY,EAAZA,YAAY;IACZI,KAAK,EAALA,KAAK;IACLE,MAAM,EAANA,MAAM;IACNM,YAAY,EAAE,SAAAA,aAACC,KAAU;MAAA,OAAaA,KAAK,CAACC,sBAAsB;IAAA;IAClEN,cAAc,EAAdA;EACF,CAAC,CAAC;AACJ"}
|