@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.
Files changed (235) hide show
  1. package/dist/{esm/basis-loader.js → basis-loader.js} +2 -2
  2. package/dist/basis-loader.js.map +1 -0
  3. package/dist/basis-worker-node.js +5203 -3479
  4. package/dist/basis-worker.js +105 -31
  5. package/dist/{esm/compressed-texture-loader.js → compressed-texture-loader.js} +3 -3
  6. package/dist/compressed-texture-loader.js.map +1 -0
  7. package/dist/compressed-texture-worker.js +158 -34
  8. package/dist/{esm/compressed-texture-writer.js → compressed-texture-writer.js} +2 -2
  9. package/dist/compressed-texture-writer.js.map +1 -0
  10. package/dist/{esm/crunch-loader.js → crunch-loader.js} +1 -1
  11. package/dist/crunch-loader.js.map +1 -0
  12. package/dist/crunch-worker.js +60 -26
  13. package/dist/{dist.min.js → dist.dev.js} +953 -1100
  14. package/dist/index.cjs +1360 -0
  15. package/dist/index.js +31 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/ktx2-basis-writer-worker-node.js +4887 -3214
  18. package/dist/ktx2-basis-writer-worker.js +52 -26
  19. package/dist/{esm/ktx2-basis-writer.js → ktx2-basis-writer.js} +2 -2
  20. package/dist/ktx2-basis-writer.js.map +1 -0
  21. package/dist/lib/encoders/encode-ktx.js.map +1 -0
  22. package/dist/{esm/lib → lib}/encoders/encode-ktx2-basis-texture.js +1 -1
  23. package/dist/lib/encoders/encode-ktx2-basis-texture.js.map +1 -0
  24. package/dist/lib/encoders/encode-texture.js.map +1 -0
  25. package/dist/lib/gl-extensions.js.map +1 -0
  26. package/dist/lib/parsers/basis-module-loader.js.map +1 -0
  27. package/dist/lib/parsers/crunch-module-loader.js.map +1 -0
  28. package/dist/{esm/lib → lib}/parsers/parse-basis.js +4 -4
  29. package/dist/lib/parsers/parse-basis.js.map +1 -0
  30. package/dist/{esm/lib → lib}/parsers/parse-compressed-texture.js +3 -3
  31. package/dist/lib/parsers/parse-compressed-texture.js.map +1 -0
  32. package/dist/{esm/lib → lib}/parsers/parse-crunch.js +4 -4
  33. package/dist/lib/parsers/parse-crunch.js.map +1 -0
  34. package/dist/{esm/lib → lib}/parsers/parse-dds.js +3 -3
  35. package/dist/lib/parsers/parse-dds.js.map +1 -0
  36. package/dist/{esm/lib → lib}/parsers/parse-ktx.js +2 -2
  37. package/dist/lib/parsers/parse-ktx.js.map +1 -0
  38. package/dist/lib/parsers/parse-npy.d.ts.map +1 -1
  39. package/dist/{esm/lib → lib}/parsers/parse-npy.js +1 -1
  40. package/dist/lib/parsers/parse-npy.js.map +1 -0
  41. package/dist/{esm/lib → lib}/parsers/parse-pvr.js +2 -2
  42. package/dist/lib/parsers/parse-pvr.js.map +1 -0
  43. package/dist/lib/texture-api/async-deep-map.js.map +1 -0
  44. package/dist/{esm/lib → lib}/texture-api/deep-load.js +1 -1
  45. package/dist/lib/texture-api/deep-load.js.map +1 -0
  46. package/dist/{esm/lib → lib}/texture-api/generate-url.js +1 -1
  47. package/dist/lib/texture-api/generate-url.js.map +1 -0
  48. package/dist/{esm/lib → lib}/texture-api/load-image-array.js +2 -2
  49. package/dist/lib/texture-api/load-image-array.js.map +1 -0
  50. package/dist/{esm/lib → lib}/texture-api/load-image-cube.js +2 -2
  51. package/dist/lib/texture-api/load-image-cube.js.map +1 -0
  52. package/dist/{esm/lib → lib}/texture-api/load-image.js +2 -2
  53. package/dist/lib/texture-api/load-image.js.map +1 -0
  54. package/dist/lib/texture-api/texture-api-types.js.map +1 -0
  55. package/dist/lib/utils/extract-mipmap-images.js.map +1 -0
  56. package/dist/{esm/lib → lib}/utils/ktx-format-helper.js +1 -1
  57. package/dist/lib/utils/ktx-format-helper.js.map +1 -0
  58. package/dist/{esm/lib → lib}/utils/texture-formats.js +1 -1
  59. package/dist/lib/utils/texture-formats.js.map +1 -0
  60. package/dist/lib/utils/version.js +2 -0
  61. package/dist/lib/utils/version.js.map +1 -0
  62. package/dist/libs/basis_encoder.js +5435 -19
  63. package/dist/libs/basis_encoder.js.map +1 -0
  64. package/dist/libs/basis_transcoder.js +2523 -20
  65. package/dist/libs/basis_transcoder.js.map +1 -0
  66. package/dist/libs/crunch.js +10043 -129
  67. package/dist/libs/crunch.js.map +1 -0
  68. package/dist/{esm/npy-loader.js → npy-loader.js} +2 -2
  69. package/dist/npy-loader.js.map +1 -0
  70. package/dist/npy-worker.js +17 -4
  71. package/dist/types.js.map +1 -0
  72. package/dist/{esm/workers → workers}/basis-worker-node.js +1 -1
  73. package/dist/workers/basis-worker-node.js.map +1 -0
  74. package/dist/{esm/workers → workers}/basis-worker.js +1 -1
  75. package/dist/workers/basis-worker.js.map +1 -0
  76. package/dist/workers/compressed-texture-worker.js +4 -0
  77. package/dist/workers/compressed-texture-worker.js.map +1 -0
  78. package/dist/{esm/workers → workers}/crunch-worker.js +2 -2
  79. package/dist/workers/crunch-worker.js.map +1 -0
  80. package/dist/{esm/workers → workers}/ktx2-basis-writer-worker-node.js +1 -1
  81. package/dist/workers/ktx2-basis-writer-worker-node.js.map +1 -0
  82. package/dist/{esm/workers → workers}/ktx2-basis-writer-worker.js +1 -1
  83. package/dist/workers/ktx2-basis-writer-worker.js.map +1 -0
  84. package/dist/{esm/workers → workers}/npy-worker.js +1 -1
  85. package/dist/workers/npy-worker.js.map +1 -0
  86. package/package.json +19 -11
  87. package/src/lib/parsers/parse-npy.ts +0 -2
  88. package/dist/bundle.d.ts +0 -2
  89. package/dist/bundle.d.ts.map +0 -1
  90. package/dist/es5/basis-loader.js +0 -37
  91. package/dist/es5/basis-loader.js.map +0 -1
  92. package/dist/es5/bundle.js +0 -6
  93. package/dist/es5/bundle.js.map +0 -1
  94. package/dist/es5/compressed-texture-loader.js +0 -74
  95. package/dist/es5/compressed-texture-loader.js.map +0 -1
  96. package/dist/es5/compressed-texture-writer.js +0 -28
  97. package/dist/es5/compressed-texture-writer.js.map +0 -1
  98. package/dist/es5/crunch-loader.js +0 -24
  99. package/dist/es5/crunch-loader.js.map +0 -1
  100. package/dist/es5/index.js +0 -145
  101. package/dist/es5/index.js.map +0 -1
  102. package/dist/es5/ktx2-basis-writer.js +0 -26
  103. package/dist/es5/ktx2-basis-writer.js.map +0 -1
  104. package/dist/es5/lib/encoders/encode-ktx.js +0 -12
  105. package/dist/es5/lib/encoders/encode-ktx.js.map +0 -1
  106. package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js +0 -75
  107. package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js.map +0 -1
  108. package/dist/es5/lib/encoders/encode-texture.js +0 -38
  109. package/dist/es5/lib/encoders/encode-texture.js.map +0 -1
  110. package/dist/es5/lib/gl-extensions.js +0 -68
  111. package/dist/es5/lib/gl-extensions.js.map +0 -1
  112. package/dist/es5/lib/parsers/basis-module-loader.js +0 -199
  113. package/dist/es5/lib/parsers/basis-module-loader.js.map +0 -1
  114. package/dist/es5/lib/parsers/crunch-module-loader.js +0 -72
  115. package/dist/es5/lib/parsers/crunch-module-loader.js.map +0 -1
  116. package/dist/es5/lib/parsers/parse-basis.js +0 -270
  117. package/dist/es5/lib/parsers/parse-basis.js.map +0 -1
  118. package/dist/es5/lib/parsers/parse-compressed-texture.js +0 -22
  119. package/dist/es5/lib/parsers/parse-compressed-texture.js.map +0 -1
  120. package/dist/es5/lib/parsers/parse-crunch.js +0 -100
  121. package/dist/es5/lib/parsers/parse-crunch.js.map +0 -1
  122. package/dist/es5/lib/parsers/parse-dds.js +0 -84
  123. package/dist/es5/lib/parsers/parse-dds.js.map +0 -1
  124. package/dist/es5/lib/parsers/parse-ktx.js +0 -34
  125. package/dist/es5/lib/parsers/parse-ktx.js.map +0 -1
  126. package/dist/es5/lib/parsers/parse-npy.js +0 -70
  127. package/dist/es5/lib/parsers/parse-npy.js.map +0 -1
  128. package/dist/es5/lib/parsers/parse-pvr.js +0 -161
  129. package/dist/es5/lib/parsers/parse-pvr.js.map +0 -1
  130. package/dist/es5/lib/texture-api/async-deep-map.js +0 -156
  131. package/dist/es5/lib/texture-api/async-deep-map.js.map +0 -1
  132. package/dist/es5/lib/texture-api/deep-load.js +0 -63
  133. package/dist/es5/lib/texture-api/deep-load.js.map +0 -1
  134. package/dist/es5/lib/texture-api/generate-url.js +0 -20
  135. package/dist/es5/lib/texture-api/generate-url.js.map +0 -1
  136. package/dist/es5/lib/texture-api/load-image-array.js +0 -75
  137. package/dist/es5/lib/texture-api/load-image-array.js.map +0 -1
  138. package/dist/es5/lib/texture-api/load-image-cube.js +0 -136
  139. package/dist/es5/lib/texture-api/load-image-cube.js.map +0 -1
  140. package/dist/es5/lib/texture-api/load-image.js +0 -129
  141. package/dist/es5/lib/texture-api/load-image.js.map +0 -1
  142. package/dist/es5/lib/texture-api/texture-api-types.js +0 -2
  143. package/dist/es5/lib/texture-api/texture-api-types.js.map +0 -1
  144. package/dist/es5/lib/utils/extract-mipmap-images.js +0 -41
  145. package/dist/es5/lib/utils/extract-mipmap-images.js.map +0 -1
  146. package/dist/es5/lib/utils/ktx-format-helper.js +0 -79
  147. package/dist/es5/lib/utils/ktx-format-helper.js.map +0 -1
  148. package/dist/es5/lib/utils/texture-formats.js +0 -54
  149. package/dist/es5/lib/utils/texture-formats.js.map +0 -1
  150. package/dist/es5/lib/utils/version.js +0 -9
  151. package/dist/es5/lib/utils/version.js.map +0 -1
  152. package/dist/es5/npy-loader.js +0 -51
  153. package/dist/es5/npy-loader.js.map +0 -1
  154. package/dist/es5/types.js +0 -2
  155. package/dist/es5/types.js.map +0 -1
  156. package/dist/es5/workers/basis-worker-node.js +0 -7
  157. package/dist/es5/workers/basis-worker-node.js.map +0 -1
  158. package/dist/es5/workers/basis-worker.js +0 -6
  159. package/dist/es5/workers/basis-worker.js.map +0 -1
  160. package/dist/es5/workers/compressed-texture-worker.js +0 -6
  161. package/dist/es5/workers/compressed-texture-worker.js.map +0 -1
  162. package/dist/es5/workers/crunch-worker.js +0 -19
  163. package/dist/es5/workers/crunch-worker.js.map +0 -1
  164. package/dist/es5/workers/ktx2-basis-writer-worker-node.js +0 -54
  165. package/dist/es5/workers/ktx2-basis-writer-worker-node.js.map +0 -1
  166. package/dist/es5/workers/ktx2-basis-writer-worker.js +0 -53
  167. package/dist/es5/workers/ktx2-basis-writer-worker.js.map +0 -1
  168. package/dist/es5/workers/npy-worker.js +0 -6
  169. package/dist/es5/workers/npy-worker.js.map +0 -1
  170. package/dist/esm/basis-loader.js.map +0 -1
  171. package/dist/esm/bundle.js +0 -4
  172. package/dist/esm/bundle.js.map +0 -1
  173. package/dist/esm/compressed-texture-loader.js.map +0 -1
  174. package/dist/esm/compressed-texture-writer.js.map +0 -1
  175. package/dist/esm/crunch-loader.js.map +0 -1
  176. package/dist/esm/index.js +0 -31
  177. package/dist/esm/index.js.map +0 -1
  178. package/dist/esm/ktx2-basis-writer.js.map +0 -1
  179. package/dist/esm/lib/encoders/encode-ktx.js.map +0 -1
  180. package/dist/esm/lib/encoders/encode-ktx2-basis-texture.js.map +0 -1
  181. package/dist/esm/lib/encoders/encode-texture.js.map +0 -1
  182. package/dist/esm/lib/gl-extensions.js.map +0 -1
  183. package/dist/esm/lib/parsers/basis-module-loader.js.map +0 -1
  184. package/dist/esm/lib/parsers/crunch-module-loader.js.map +0 -1
  185. package/dist/esm/lib/parsers/parse-basis.js.map +0 -1
  186. package/dist/esm/lib/parsers/parse-compressed-texture.js.map +0 -1
  187. package/dist/esm/lib/parsers/parse-crunch.js.map +0 -1
  188. package/dist/esm/lib/parsers/parse-dds.js.map +0 -1
  189. package/dist/esm/lib/parsers/parse-ktx.js.map +0 -1
  190. package/dist/esm/lib/parsers/parse-npy.js.map +0 -1
  191. package/dist/esm/lib/parsers/parse-pvr.js.map +0 -1
  192. package/dist/esm/lib/texture-api/async-deep-map.js.map +0 -1
  193. package/dist/esm/lib/texture-api/deep-load.js.map +0 -1
  194. package/dist/esm/lib/texture-api/generate-url.js.map +0 -1
  195. package/dist/esm/lib/texture-api/load-image-array.js.map +0 -1
  196. package/dist/esm/lib/texture-api/load-image-cube.js.map +0 -1
  197. package/dist/esm/lib/texture-api/load-image.js.map +0 -1
  198. package/dist/esm/lib/texture-api/texture-api-types.js.map +0 -1
  199. package/dist/esm/lib/utils/extract-mipmap-images.js.map +0 -1
  200. package/dist/esm/lib/utils/ktx-format-helper.js.map +0 -1
  201. package/dist/esm/lib/utils/texture-formats.js.map +0 -1
  202. package/dist/esm/lib/utils/version.js +0 -2
  203. package/dist/esm/lib/utils/version.js.map +0 -1
  204. package/dist/esm/libs/README.md +0 -9
  205. package/dist/esm/libs/basis_encoder.js +0 -21
  206. package/dist/esm/libs/basis_encoder.wasm +0 -0
  207. package/dist/esm/libs/basis_transcoder.js +0 -22
  208. package/dist/esm/libs/basis_transcoder.wasm +0 -0
  209. package/dist/esm/libs/crunch.js +0 -136
  210. package/dist/esm/npy-loader.js.map +0 -1
  211. package/dist/esm/types.js.map +0 -1
  212. package/dist/esm/workers/basis-worker-node.js.map +0 -1
  213. package/dist/esm/workers/basis-worker.js.map +0 -1
  214. package/dist/esm/workers/compressed-texture-worker.js +0 -4
  215. package/dist/esm/workers/compressed-texture-worker.js.map +0 -1
  216. package/dist/esm/workers/crunch-worker.js.map +0 -1
  217. package/dist/esm/workers/ktx2-basis-writer-worker-node.js.map +0 -1
  218. package/dist/esm/workers/ktx2-basis-writer-worker.js.map +0 -1
  219. package/dist/esm/workers/npy-worker.js.map +0 -1
  220. package/src/bundle.ts +0 -4
  221. /package/dist/{esm/lib → lib}/encoders/encode-ktx.js +0 -0
  222. /package/dist/{esm/lib → lib}/encoders/encode-texture.js +0 -0
  223. /package/dist/{esm/lib → lib}/gl-extensions.js +0 -0
  224. /package/dist/{esm/lib → lib}/parsers/basis-module-loader.js +0 -0
  225. /package/dist/{esm/lib → lib}/parsers/crunch-module-loader.js +0 -0
  226. /package/dist/{esm/lib → lib}/texture-api/async-deep-map.js +0 -0
  227. /package/dist/{esm/lib → lib}/texture-api/texture-api-types.js +0 -0
  228. /package/dist/{esm/lib → lib}/utils/extract-mipmap-images.js +0 -0
  229. /package/dist/{es5 → libs}/libs/README.md +0 -0
  230. /package/dist/{es5 → libs}/libs/basis_encoder.js +0 -0
  231. /package/dist/{es5 → libs}/libs/basis_encoder.wasm +0 -0
  232. /package/dist/{es5 → libs}/libs/basis_transcoder.js +0 -0
  233. /package/dist/{es5 → libs}/libs/basis_transcoder.wasm +0 -0
  234. /package/dist/{es5 → libs}/libs/crunch.js +0 -0
  235. /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"}