@loaders.gl/textures 3.1.3 → 4.0.0-alpha.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (274) hide show
  1. package/dist/basis-loader.js +24 -37
  2. package/dist/basis-loader.js.map +1 -0
  3. package/dist/basis-worker.js +13 -14
  4. package/dist/bundle.js +2 -2
  5. package/dist/bundle.js.map +1 -0
  6. package/dist/compressed-texture-loader.d.ts +1 -1
  7. package/dist/compressed-texture-loader.js +36 -59
  8. package/dist/compressed-texture-loader.js.map +1 -0
  9. package/dist/compressed-texture-worker.js +14 -15
  10. package/dist/compressed-texture-writer.js +21 -27
  11. package/dist/compressed-texture-writer.js.map +1 -0
  12. package/dist/crunch-loader.js +16 -23
  13. package/dist/crunch-loader.js.map +1 -0
  14. package/dist/crunch-worker.js +18 -18
  15. package/dist/dist.min.js +13 -13
  16. package/dist/index.d.ts +1 -1
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +14 -37
  19. package/dist/index.js.map +1 -0
  20. package/dist/ktx2-basis-universal-texture-writer.js +17 -24
  21. package/dist/ktx2-basis-universal-texture-writer.js.map +1 -0
  22. package/dist/lib/encoders/encode-ktx.js +5 -9
  23. package/dist/lib/encoders/encode-ktx.js.map +1 -0
  24. package/dist/lib/encoders/encode-ktx2-basis-texture.js +34 -40
  25. package/dist/lib/encoders/encode-ktx2-basis-texture.js.map +1 -0
  26. package/dist/lib/encoders/encode-texture.js +11 -26
  27. package/dist/lib/encoders/encode-texture.js.map +1 -0
  28. package/dist/lib/gl-extensions.js +60 -71
  29. package/dist/lib/gl-extensions.js.map +1 -0
  30. package/dist/lib/parsers/basis-module-loader.js +76 -100
  31. package/dist/lib/parsers/basis-module-loader.js.map +1 -0
  32. package/dist/lib/parsers/crunch-module-loader.js +18 -30
  33. package/dist/lib/parsers/crunch-module-loader.js.map +1 -0
  34. package/dist/lib/parsers/parse-basis.d.ts +8 -6
  35. package/dist/lib/parsers/parse-basis.d.ts.map +1 -1
  36. package/dist/lib/parsers/parse-basis.js +240 -225
  37. package/dist/lib/parsers/parse-basis.js.map +1 -0
  38. package/dist/lib/parsers/parse-compressed-texture.d.ts +1 -1
  39. package/dist/lib/parsers/parse-compressed-texture.d.ts.map +1 -1
  40. package/dist/lib/parsers/parse-compressed-texture.js +18 -25
  41. package/dist/lib/parsers/parse-compressed-texture.js.map +1 -0
  42. package/dist/lib/parsers/parse-crunch.d.ts +1 -1
  43. package/dist/lib/parsers/parse-crunch.d.ts.map +1 -1
  44. package/dist/lib/parsers/parse-crunch.js +83 -96
  45. package/dist/lib/parsers/parse-crunch.js.map +1 -0
  46. package/dist/lib/parsers/parse-dds.d.ts +1 -1
  47. package/dist/lib/parsers/parse-dds.d.ts.map +1 -1
  48. package/dist/lib/parsers/parse-dds.js +63 -93
  49. package/dist/lib/parsers/parse-dds.js.map +1 -0
  50. package/dist/lib/parsers/parse-ktx.d.ts +2 -1
  51. package/dist/lib/parsers/parse-ktx.d.ts.map +1 -1
  52. package/dist/lib/parsers/parse-ktx.js +23 -44
  53. package/dist/lib/parsers/parse-ktx.js.map +1 -0
  54. package/dist/lib/parsers/parse-npy.d.ts.map +1 -1
  55. package/dist/lib/parsers/parse-npy.js +68 -77
  56. package/dist/lib/parsers/parse-npy.js.map +1 -0
  57. package/dist/lib/parsers/parse-pvr.d.ts +1 -1
  58. package/dist/lib/parsers/parse-pvr.d.ts.map +1 -1
  59. package/dist/lib/parsers/parse-pvr.js +133 -212
  60. package/dist/lib/parsers/parse-pvr.js.map +1 -0
  61. package/dist/lib/texture-api/async-deep-map.js +33 -35
  62. package/dist/lib/texture-api/async-deep-map.js.map +1 -0
  63. package/dist/lib/texture-api/deep-load.js +8 -14
  64. package/dist/lib/texture-api/deep-load.js.map +1 -0
  65. package/dist/lib/texture-api/generate-url.js +13 -16
  66. package/dist/lib/texture-api/generate-url.js.map +1 -0
  67. package/dist/lib/texture-api/load-image-array.js +18 -19
  68. package/dist/lib/texture-api/load-image-array.js.map +1 -0
  69. package/dist/lib/texture-api/load-image-cube.js +55 -39
  70. package/dist/lib/texture-api/load-image-cube.js.map +1 -0
  71. package/dist/lib/texture-api/load-image.js +43 -38
  72. package/dist/lib/texture-api/load-image.js.map +1 -0
  73. package/dist/lib/texture-api/texture-api-types.js +2 -3
  74. package/dist/{es5/lib → lib}/texture-api/texture-api-types.js.map +0 -0
  75. package/dist/lib/utils/extract-mipmap-images.d.ts +8 -1
  76. package/dist/lib/utils/extract-mipmap-images.d.ts.map +1 -1
  77. package/dist/lib/utils/extract-mipmap-images.js +36 -45
  78. package/dist/lib/utils/extract-mipmap-images.js.map +1 -0
  79. package/dist/lib/utils/ktx-format-helper.js +70 -122
  80. package/dist/lib/utils/ktx-format-helper.js.map +1 -0
  81. package/dist/lib/utils/texture-formats.js +30 -42
  82. package/dist/lib/utils/texture-formats.js.map +1 -0
  83. package/dist/lib/utils/version.d.ts.map +1 -1
  84. package/dist/lib/utils/version.js +2 -7
  85. package/dist/lib/utils/version.js.map +1 -0
  86. package/dist/{es5 → libs}/libs/README.md +0 -0
  87. package/dist/{es5 → libs}/libs/basis_encoder.js +0 -0
  88. package/dist/{es5 → libs}/libs/basis_encoder.wasm +0 -0
  89. package/dist/{es5 → libs}/libs/basis_transcoder.js +0 -0
  90. package/dist/{es5 → libs}/libs/basis_transcoder.wasm +0 -0
  91. package/dist/{es5 → libs}/libs/crunch.js +0 -0
  92. package/dist/npy-loader.js +20 -31
  93. package/dist/npy-loader.js.map +1 -0
  94. package/dist/npy-worker.js +1 -1
  95. package/dist/types.d.ts +0 -20
  96. package/dist/types.d.ts.map +1 -1
  97. package/dist/types.js +2 -2
  98. package/dist/{es5/types.js.map → types.js.map} +0 -0
  99. package/dist/workers/basis-worker.js +4 -5
  100. package/dist/workers/basis-worker.js.map +1 -0
  101. package/dist/workers/compressed-texture-worker.js +4 -5
  102. package/dist/workers/compressed-texture-worker.js.map +1 -0
  103. package/dist/workers/crunch-worker.js +7 -13
  104. package/dist/workers/crunch-worker.js.map +1 -0
  105. package/dist/workers/npy-worker.js +4 -5
  106. package/dist/workers/npy-worker.js.map +1 -0
  107. package/package.json +12 -11
  108. package/src/compressed-texture-loader.ts +1 -1
  109. package/src/index.ts +1 -1
  110. package/src/lib/parsers/basis-module-loader.ts +1 -1
  111. package/src/lib/parsers/crunch-module-loader.ts +1 -1
  112. package/src/lib/parsers/parse-basis.ts +68 -36
  113. package/src/lib/parsers/parse-compressed-texture.ts +1 -1
  114. package/src/lib/parsers/parse-crunch.ts +15 -14
  115. package/src/lib/parsers/parse-dds.ts +1 -1
  116. package/src/lib/parsers/parse-ktx.ts +2 -1
  117. package/src/lib/parsers/parse-npy.ts +2 -0
  118. package/src/lib/parsers/parse-pvr.ts +2 -1
  119. package/src/lib/utils/extract-mipmap-images.ts +9 -1
  120. package/src/lib/utils/texture-formats.ts +1 -1
  121. package/src/lib/utils/version.ts +2 -1
  122. package/src/types.ts +0 -30
  123. package/dist/es5/basis-loader.js +0 -50
  124. package/dist/es5/basis-loader.js.map +0 -1
  125. package/dist/es5/bundle.js +0 -7
  126. package/dist/es5/bundle.js.map +0 -1
  127. package/dist/es5/compressed-texture-loader.js +0 -96
  128. package/dist/es5/compressed-texture-loader.js.map +0 -1
  129. package/dist/es5/compressed-texture-writer.js +0 -33
  130. package/dist/es5/compressed-texture-writer.js.map +0 -1
  131. package/dist/es5/crunch-loader.js +0 -28
  132. package/dist/es5/crunch-loader.js.map +0 -1
  133. package/dist/es5/index.js +0 -126
  134. package/dist/es5/index.js.map +0 -1
  135. package/dist/es5/ktx2-basis-universal-texture-writer.js +0 -29
  136. package/dist/es5/ktx2-basis-universal-texture-writer.js.map +0 -1
  137. package/dist/es5/lib/encoders/encode-ktx.js +0 -14
  138. package/dist/es5/lib/encoders/encode-ktx.js.map +0 -1
  139. package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js +0 -87
  140. package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js.map +0 -1
  141. package/dist/es5/lib/encoders/encode-texture.js +0 -48
  142. package/dist/es5/lib/encoders/encode-texture.js.map +0 -1
  143. package/dist/es5/lib/gl-extensions.js +0 -68
  144. package/dist/es5/lib/gl-extensions.js.map +0 -1
  145. package/dist/es5/lib/parsers/basis-module-loader.js +0 -245
  146. package/dist/es5/lib/parsers/basis-module-loader.js.map +0 -1
  147. package/dist/es5/lib/parsers/crunch-module-loader.js +0 -88
  148. package/dist/es5/lib/parsers/crunch-module-loader.js.map +0 -1
  149. package/dist/es5/lib/parsers/parse-basis.js +0 -325
  150. package/dist/es5/lib/parsers/parse-basis.js.map +0 -1
  151. package/dist/es5/lib/parsers/parse-compressed-texture.js +0 -29
  152. package/dist/es5/lib/parsers/parse-compressed-texture.js.map +0 -1
  153. package/dist/es5/lib/parsers/parse-crunch.js +0 -125
  154. package/dist/es5/lib/parsers/parse-crunch.js.map +0 -1
  155. package/dist/es5/lib/parsers/parse-dds.js +0 -95
  156. package/dist/es5/lib/parsers/parse-dds.js.map +0 -1
  157. package/dist/es5/lib/parsers/parse-ktx.js +0 -40
  158. package/dist/es5/lib/parsers/parse-ktx.js.map +0 -1
  159. package/dist/es5/lib/parsers/parse-npy.js +0 -87
  160. package/dist/es5/lib/parsers/parse-npy.js.map +0 -1
  161. package/dist/es5/lib/parsers/parse-pvr.js +0 -183
  162. package/dist/es5/lib/parsers/parse-pvr.js.map +0 -1
  163. package/dist/es5/lib/texture-api/async-deep-map.js +0 -177
  164. package/dist/es5/lib/texture-api/async-deep-map.js.map +0 -1
  165. package/dist/es5/lib/texture-api/deep-load.js +0 -81
  166. package/dist/es5/lib/texture-api/deep-load.js.map +0 -1
  167. package/dist/es5/lib/texture-api/generate-url.js +0 -28
  168. package/dist/es5/lib/texture-api/generate-url.js.map +0 -1
  169. package/dist/es5/lib/texture-api/load-image-array.js +0 -96
  170. package/dist/es5/lib/texture-api/load-image-array.js.map +0 -1
  171. package/dist/es5/lib/texture-api/load-image-cube.js +0 -145
  172. package/dist/es5/lib/texture-api/load-image-cube.js.map +0 -1
  173. package/dist/es5/lib/texture-api/load-image.js +0 -169
  174. package/dist/es5/lib/texture-api/load-image.js.map +0 -1
  175. package/dist/es5/lib/texture-api/texture-api-types.js +0 -2
  176. package/dist/es5/lib/utils/extract-mipmap-images.js +0 -48
  177. package/dist/es5/lib/utils/extract-mipmap-images.js.map +0 -1
  178. package/dist/es5/lib/utils/ktx-format-helper.js +0 -82
  179. package/dist/es5/lib/utils/ktx-format-helper.js.map +0 -1
  180. package/dist/es5/lib/utils/texture-formats.js +0 -64
  181. package/dist/es5/lib/utils/texture-formats.js.map +0 -1
  182. package/dist/es5/lib/utils/version.js +0 -9
  183. package/dist/es5/lib/utils/version.js.map +0 -1
  184. package/dist/es5/npy-loader.js +0 -71
  185. package/dist/es5/npy-loader.js.map +0 -1
  186. package/dist/es5/types.js +0 -2
  187. package/dist/es5/workers/basis-worker.js +0 -8
  188. package/dist/es5/workers/basis-worker.js.map +0 -1
  189. package/dist/es5/workers/compressed-texture-worker.js +0 -8
  190. package/dist/es5/workers/compressed-texture-worker.js.map +0 -1
  191. package/dist/es5/workers/crunch-worker.js +0 -28
  192. package/dist/es5/workers/crunch-worker.js.map +0 -1
  193. package/dist/es5/workers/npy-worker.js +0 -8
  194. package/dist/es5/workers/npy-worker.js.map +0 -1
  195. package/dist/esm/basis-loader.js +0 -27
  196. package/dist/esm/basis-loader.js.map +0 -1
  197. package/dist/esm/bundle.js +0 -5
  198. package/dist/esm/bundle.js.map +0 -1
  199. package/dist/esm/compressed-texture-loader.js +0 -41
  200. package/dist/esm/compressed-texture-loader.js.map +0 -1
  201. package/dist/esm/compressed-texture-writer.js +0 -22
  202. package/dist/esm/compressed-texture-writer.js.map +0 -1
  203. package/dist/esm/crunch-loader.js +0 -18
  204. package/dist/esm/crunch-loader.js.map +0 -1
  205. package/dist/esm/index.js +0 -14
  206. package/dist/esm/index.js.map +0 -1
  207. package/dist/esm/ktx2-basis-universal-texture-writer.js +0 -18
  208. package/dist/esm/ktx2-basis-universal-texture-writer.js.map +0 -1
  209. package/dist/esm/lib/encoders/encode-ktx.js +0 -6
  210. package/dist/esm/lib/encoders/encode-ktx.js.map +0 -1
  211. package/dist/esm/lib/encoders/encode-ktx2-basis-texture.js +0 -35
  212. package/dist/esm/lib/encoders/encode-ktx2-basis-texture.js.map +0 -1
  213. package/dist/esm/lib/encoders/encode-texture.js +0 -12
  214. package/dist/esm/lib/encoders/encode-texture.js.map +0 -1
  215. package/dist/esm/lib/gl-extensions.js +0 -61
  216. package/dist/esm/lib/gl-extensions.js.map +0 -1
  217. package/dist/esm/lib/parsers/basis-module-loader.js +0 -90
  218. package/dist/esm/lib/parsers/basis-module-loader.js.map +0 -1
  219. package/dist/esm/lib/parsers/crunch-module-loader.js +0 -23
  220. package/dist/esm/lib/parsers/crunch-module-loader.js.map +0 -1
  221. package/dist/esm/lib/parsers/parse-basis.js +0 -260
  222. package/dist/esm/lib/parsers/parse-basis.js.map +0 -1
  223. package/dist/esm/lib/parsers/parse-compressed-texture.js +0 -19
  224. package/dist/esm/lib/parsers/parse-compressed-texture.js.map +0 -1
  225. package/dist/esm/lib/parsers/parse-crunch.js +0 -91
  226. package/dist/esm/lib/parsers/parse-crunch.js.map +0 -1
  227. package/dist/esm/lib/parsers/parse-dds.js +0 -78
  228. package/dist/esm/lib/parsers/parse-dds.js.map +0 -1
  229. package/dist/esm/lib/parsers/parse-ktx.js +0 -25
  230. package/dist/esm/lib/parsers/parse-ktx.js.map +0 -1
  231. package/dist/esm/lib/parsers/parse-npy.js +0 -76
  232. package/dist/esm/lib/parsers/parse-npy.js.map +0 -1
  233. package/dist/esm/lib/parsers/parse-pvr.js +0 -171
  234. package/dist/esm/lib/parsers/parse-pvr.js.map +0 -1
  235. package/dist/esm/lib/texture-api/async-deep-map.js +0 -39
  236. package/dist/esm/lib/texture-api/async-deep-map.js.map +0 -1
  237. package/dist/esm/lib/texture-api/deep-load.js +0 -10
  238. package/dist/esm/lib/texture-api/deep-load.js.map +0 -1
  239. package/dist/esm/lib/texture-api/generate-url.js +0 -14
  240. package/dist/esm/lib/texture-api/generate-url.js.map +0 -1
  241. package/dist/esm/lib/texture-api/load-image-array.js +0 -20
  242. package/dist/esm/lib/texture-api/load-image-array.js.map +0 -1
  243. package/dist/esm/lib/texture-api/load-image-cube.js +0 -63
  244. package/dist/esm/lib/texture-api/load-image-cube.js.map +0 -1
  245. package/dist/esm/lib/texture-api/load-image.js +0 -48
  246. package/dist/esm/lib/texture-api/load-image.js.map +0 -1
  247. package/dist/esm/lib/texture-api/texture-api-types.js +0 -2
  248. package/dist/esm/lib/texture-api/texture-api-types.js.map +0 -1
  249. package/dist/esm/lib/utils/extract-mipmap-images.js +0 -41
  250. package/dist/esm/lib/utils/extract-mipmap-images.js.map +0 -1
  251. package/dist/esm/lib/utils/ktx-format-helper.js +0 -73
  252. package/dist/esm/lib/utils/ktx-format-helper.js.map +0 -1
  253. package/dist/esm/lib/utils/texture-formats.js +0 -39
  254. package/dist/esm/lib/utils/texture-formats.js.map +0 -1
  255. package/dist/esm/lib/utils/version.js +0 -2
  256. package/dist/esm/lib/utils/version.js.map +0 -1
  257. package/dist/esm/libs/README.md +0 -9
  258. package/dist/esm/libs/basis_encoder.js +0 -22
  259. package/dist/esm/libs/basis_encoder.wasm +0 -0
  260. package/dist/esm/libs/basis_transcoder.js +0 -21
  261. package/dist/esm/libs/basis_transcoder.wasm +0 -0
  262. package/dist/esm/libs/crunch.js +0 -136
  263. package/dist/esm/npy-loader.js +0 -23
  264. package/dist/esm/npy-loader.js.map +0 -1
  265. package/dist/esm/types.js +0 -2
  266. package/dist/esm/types.js.map +0 -1
  267. package/dist/esm/workers/basis-worker.js +0 -4
  268. package/dist/esm/workers/basis-worker.js.map +0 -1
  269. package/dist/esm/workers/compressed-texture-worker.js +0 -4
  270. package/dist/esm/workers/compressed-texture-worker.js.map +0 -1
  271. package/dist/esm/workers/crunch-worker.js +0 -8
  272. package/dist/esm/workers/crunch-worker.js.map +0 -1
  273. package/dist/esm/workers/npy-worker.js +0 -4
  274. package/dist/esm/workers/npy-worker.js.map +0 -1
@@ -1,95 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.isDDS = isDDS;
7
- exports.parseDDS = parseDDS;
8
- exports.getDxt1LevelSize = getDxt1LevelSize;
9
- exports.getDxtXLevelSize = getDxtXLevelSize;
10
-
11
- var _loaderUtils = require("@loaders.gl/loader-utils");
12
-
13
- var _glExtensions = require("../gl-extensions");
14
-
15
- var _extractMipmapImages = require("../utils/extract-mipmap-images");
16
-
17
- var DDS_CONSTANTS = {
18
- MAGIC_NUMBER: 0x20534444,
19
- HEADER_LENGTH: 31,
20
- MAGIC_NUMBER_INDEX: 0,
21
- HEADER_SIZE_INDEX: 1,
22
- HEADER_FLAGS_INDEX: 2,
23
- HEADER_HEIGHT_INDEX: 3,
24
- HEADER_WIDTH_INDEX: 4,
25
- MIPMAPCOUNT_INDEX: 7,
26
- HEADER_PF_FLAGS_INDEX: 20,
27
- HEADER_PF_FOURCC_INDEX: 21,
28
- DDSD_MIPMAPCOUNT: 0x20000,
29
- DDPF_FOURCC: 0x4
30
- };
31
- var DDS_PIXEL_FORMATS = {
32
- DXT1: _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT,
33
- DXT3: _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT,
34
- DXT5: _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT,
35
- 'ATC ': _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ATC_WEBGL,
36
- ATCA: _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL,
37
- ATCI: _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL
38
- };
39
- var getATCLevelSize = getDxt1LevelSize;
40
- var getATCALevelSize = getDxtXLevelSize;
41
- var getATCILevelSize = getDxtXLevelSize;
42
- var DDS_SIZE_FUNCTIONS = {
43
- DXT1: getDxt1LevelSize,
44
- DXT3: getDxtXLevelSize,
45
- DXT5: getDxtXLevelSize,
46
- 'ATC ': getATCLevelSize,
47
- ATCA: getATCALevelSize,
48
- ATCI: getATCILevelSize
49
- };
50
-
51
- function isDDS(data) {
52
- var header = new Uint32Array(data, 0, DDS_CONSTANTS.HEADER_LENGTH);
53
- var magic = header[DDS_CONSTANTS.MAGIC_NUMBER_INDEX];
54
- return magic === DDS_CONSTANTS.MAGIC_NUMBER;
55
- }
56
-
57
- function parseDDS(data) {
58
- var header = new Int32Array(data, 0, DDS_CONSTANTS.HEADER_LENGTH);
59
- var pixelFormatNumber = header[DDS_CONSTANTS.HEADER_PF_FOURCC_INDEX];
60
- (0, _loaderUtils.assert)(Boolean(header[DDS_CONSTANTS.HEADER_PF_FLAGS_INDEX] & DDS_CONSTANTS.DDPF_FOURCC), 'DDS: Unsupported format, must contain a FourCC code');
61
- var fourCC = int32ToFourCC(pixelFormatNumber);
62
- var internalFormat = DDS_PIXEL_FORMATS[fourCC];
63
- var sizeFunction = DDS_SIZE_FUNCTIONS[fourCC];
64
- (0, _loaderUtils.assert)(internalFormat && sizeFunction, "DDS: Unknown pixel format ".concat(pixelFormatNumber));
65
- var mipMapLevels = 1;
66
-
67
- if (header[DDS_CONSTANTS.HEADER_FLAGS_INDEX] & DDS_CONSTANTS.DDSD_MIPMAPCOUNT) {
68
- mipMapLevels = Math.max(1, header[DDS_CONSTANTS.MIPMAPCOUNT_INDEX]);
69
- }
70
-
71
- var width = header[DDS_CONSTANTS.HEADER_WIDTH_INDEX];
72
- var height = header[DDS_CONSTANTS.HEADER_HEIGHT_INDEX];
73
- var dataOffset = header[DDS_CONSTANTS.HEADER_SIZE_INDEX] + 4;
74
- var image = new Uint8Array(data, dataOffset);
75
- return (0, _extractMipmapImages.extractMipmapImages)(image, {
76
- mipMapLevels: mipMapLevels,
77
- width: width,
78
- height: height,
79
- sizeFunction: sizeFunction,
80
- internalFormat: internalFormat
81
- });
82
- }
83
-
84
- function getDxt1LevelSize(width, height) {
85
- return (width + 3 >> 2) * (height + 3 >> 2) * 8;
86
- }
87
-
88
- function getDxtXLevelSize(width, height) {
89
- return (width + 3 >> 2) * (height + 3 >> 2) * 16;
90
- }
91
-
92
- function int32ToFourCC(value) {
93
- return String.fromCharCode(value & 0xff, value >> 8 & 0xff, value >> 16 & 0xff, value >> 24 & 0xff);
94
- }
95
- //# sourceMappingURL=parse-dds.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/lib/parsers/parse-dds.ts"],"names":["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","Boolean","fourCC","int32ToFourCC","internalFormat","sizeFunction","mipMapLevels","Math","max","width","height","dataOffset","image","Uint8Array","value","String","fromCharCode"],"mappings":"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","sourcesContent":["import type {TextureLevel} from '../../types';\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"],"file":"parse-dds.js"}
@@ -1,40 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.isKTX = isKTX;
7
- exports.parseKTX = parseKTX;
8
-
9
- var _ktxParse = require("ktx-parse");
10
-
11
- var _extractMipmapImages = require("../utils/extract-mipmap-images");
12
-
13
- var _ktxFormatHelper = require("../utils/ktx-format-helper");
14
-
15
- var KTX2_ID = [0xab, 0x4b, 0x54, 0x58, 0x20, 0x32, 0x30, 0xbb, 0x0d, 0x0a, 0x1a, 0x0a];
16
-
17
- function isKTX(data) {
18
- var id = new Uint8Array(data);
19
- 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];
20
- return !notKTX;
21
- }
22
-
23
- function parseKTX(arrayBuffer) {
24
- var uint8Array = new Uint8Array(arrayBuffer);
25
- var ktx = (0, _ktxParse.read)(uint8Array);
26
- var mipMapLevels = Math.max(1, ktx.levels.length);
27
- var width = ktx.pixelWidth;
28
- var height = ktx.pixelHeight;
29
- var internalFormat = (0, _ktxFormatHelper.mapVkFormatToWebGL)(ktx.vkFormat);
30
- return (0, _extractMipmapImages.extractMipmapImages)(ktx.levels, {
31
- mipMapLevels: mipMapLevels,
32
- width: width,
33
- height: height,
34
- sizeFunction: function sizeFunction(level) {
35
- return level.uncompressedByteLength;
36
- },
37
- internalFormat: internalFormat
38
- });
39
- }
40
- //# sourceMappingURL=parse-ktx.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/lib/parsers/parse-ktx.ts"],"names":["KTX2_ID","isKTX","data","id","Uint8Array","notKTX","byteLength","length","parseKTX","arrayBuffer","uint8Array","ktx","mipMapLevels","Math","max","levels","width","pixelWidth","height","pixelHeight","internalFormat","vkFormat","sizeFunction","level","uncompressedByteLength"],"mappings":";;;;;;;;AAAA;;AACA;;AACA;;AAEA,IAAMA,OAAO,GAAG,CAEd,IAFc,EAER,IAFQ,EAEF,IAFE,EAEI,IAFJ,EAEU,IAFV,EAEgB,IAFhB,EAEsB,IAFtB,EAE4B,IAF5B,EAEkC,IAFlC,EAEwC,IAFxC,EAE8C,IAF9C,EAEoD,IAFpD,CAAhB;;AAMO,SAASC,KAAT,CAAeC,IAAf,EAAkC;AAEvC,MAAMC,EAAE,GAAG,IAAIC,UAAJ,CAAeF,IAAf,CAAX;AACA,MAAMG,MAAM,GACVF,EAAE,CAACG,UAAH,GAAgBN,OAAO,CAACO,MAAxB,IACAJ,EAAE,CAAC,CAAD,CAAF,KAAUH,OAAO,CAAC,CAAD,CADjB,IAEAG,EAAE,CAAC,CAAD,CAAF,KAAUH,OAAO,CAAC,CAAD,CAFjB,IAGAG,EAAE,CAAC,CAAD,CAAF,KAAUH,OAAO,CAAC,CAAD,CAHjB,IAIAG,EAAE,CAAC,CAAD,CAAF,KAAUH,OAAO,CAAC,CAAD,CAJjB,IAKAG,EAAE,CAAC,CAAD,CAAF,KAAUH,OAAO,CAAC,CAAD,CALjB,IAMAG,EAAE,CAAC,CAAD,CAAF,KAAUH,OAAO,CAAC,CAAD,CANjB,IAOAG,EAAE,CAAC,CAAD,CAAF,KAAUH,OAAO,CAAC,CAAD,CAPjB,IAQAG,EAAE,CAAC,CAAD,CAAF,KAAUH,OAAO,CAAC,CAAD,CARjB,IASAG,EAAE,CAAC,CAAD,CAAF,KAAUH,OAAO,CAAC,CAAD,CATjB,IAUAG,EAAE,CAAC,CAAD,CAAF,KAAUH,OAAO,CAAC,CAAD,CAVjB,IAWAG,EAAE,CAAC,EAAD,CAAF,KAAWH,OAAO,CAAC,EAAD,CAXlB,IAYAG,EAAE,CAAC,EAAD,CAAF,KAAWH,OAAO,CAAC,EAAD,CAbpB;AAeA,SAAO,CAACK,MAAR;AACD;;AAEM,SAASG,QAAT,CAAkBC,WAAlB,EAA4C;AACjD,MAAMC,UAAU,GAAG,IAAIN,UAAJ,CAAeK,WAAf,CAAnB;AACA,MAAME,GAAG,GAAG,oBAAKD,UAAL,CAAZ;AACA,MAAME,YAAY,GAAGC,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYH,GAAG,CAACI,MAAJ,CAAWR,MAAvB,CAArB;AACA,MAAMS,KAAK,GAAGL,GAAG,CAACM,UAAlB;AACA,MAAMC,MAAM,GAAGP,GAAG,CAACQ,WAAnB;AACA,MAAMC,cAAc,GAAG,yCAAmBT,GAAG,CAACU,QAAvB,CAAvB;AAEA,SAAO,8CAAoBV,GAAG,CAACI,MAAxB,EAAgC;AACrCH,IAAAA,YAAY,EAAZA,YADqC;AAErCI,IAAAA,KAAK,EAALA,KAFqC;AAGrCE,IAAAA,MAAM,EAANA,MAHqC;AAIrCI,IAAAA,YAAY,EAAE,sBAACC,KAAD;AAAA,aAAwBA,KAAK,CAACC,sBAA9B;AAAA,KAJuB;AAKrCJ,IAAAA,cAAc,EAAdA;AALqC,GAAhC,CAAP;AAOD","sourcesContent":["import {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) {\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"],"file":"parse-ktx.js"}
@@ -1,87 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.parseNPY = parseNPY;
7
-
8
- function systemIsLittleEndian() {
9
- var a = new Uint32Array([0x12345678]);
10
- var b = new Uint8Array(a.buffer, a.byteOffset, a.byteLength);
11
- return !(b[0] === 0x12);
12
- }
13
-
14
- var LITTLE_ENDIAN_OS = systemIsLittleEndian();
15
- var DTYPES = {
16
- u1: Uint8Array,
17
- i1: Int8Array,
18
- u2: Uint16Array,
19
- i2: Int16Array,
20
- u4: Uint32Array,
21
- i4: Int32Array,
22
- f4: Float32Array,
23
- f8: Float64Array
24
- };
25
-
26
- function parseNPY(arrayBuffer, options) {
27
- var _header$shape;
28
-
29
- if (!arrayBuffer) {
30
- return null;
31
- }
32
-
33
- var view = new DataView(arrayBuffer);
34
-
35
- var _parseHeader = parseHeader(view),
36
- header = _parseHeader.header,
37
- headerEndOffset = _parseHeader.headerEndOffset;
38
-
39
- var numpyType = header.descr;
40
- var ArrayType = DTYPES[numpyType.slice(1, 3)];
41
-
42
- if (!ArrayType) {
43
- console.warn("Decoding of npy dtype not implemented: ".concat(numpyType));
44
- return null;
45
- }
46
-
47
- var nArrayElements = (_header$shape = header.shape) === null || _header$shape === void 0 ? void 0 : _header$shape.reduce(function (a, b) {
48
- return a * b;
49
- });
50
- var arrayByteLength = nArrayElements * ArrayType.BYTES_PER_ELEMENT;
51
- var data = new ArrayType(arrayBuffer.slice(headerEndOffset, headerEndOffset + arrayByteLength));
52
-
53
- if (numpyType[0] === '>' && LITTLE_ENDIAN_OS || numpyType[0] === '<' && !LITTLE_ENDIAN_OS) {
54
- console.warn('Data is wrong endianness, byte swapping not yet implemented.');
55
- }
56
-
57
- return {
58
- data: data,
59
- header: header
60
- };
61
- }
62
-
63
- function parseHeader(view) {
64
- var majorVersion = view.getUint8(6);
65
- var offset = 8;
66
- var headerLength;
67
-
68
- if (majorVersion >= 2) {
69
- headerLength = view.getUint32(8, true);
70
- offset += 4;
71
- } else {
72
- headerLength = view.getUint16(8, true);
73
- offset += 2;
74
- }
75
-
76
- var encoding = majorVersion <= 2 ? 'latin1' : 'utf-8';
77
- var decoder = new TextDecoder(encoding);
78
- var headerArray = new Uint8Array(view.buffer, offset, headerLength);
79
- var headerText = decoder.decode(headerArray);
80
- offset += headerLength;
81
- var header = JSON.parse(headerText.replace(/'/g, '"').replace('False', 'false').replace('(', '[').replace(/,*\),*/g, ']'));
82
- return {
83
- header: header,
84
- headerEndOffset: offset
85
- };
86
- }
87
- //# sourceMappingURL=parse-npy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/lib/parsers/parse-npy.ts"],"names":["systemIsLittleEndian","a","Uint32Array","b","Uint8Array","buffer","byteOffset","byteLength","LITTLE_ENDIAN_OS","DTYPES","u1","i1","Int8Array","u2","Uint16Array","i2","Int16Array","u4","i4","Int32Array","f4","Float32Array","f8","Float64Array","parseNPY","arrayBuffer","options","view","DataView","parseHeader","header","headerEndOffset","numpyType","descr","ArrayType","slice","console","warn","nArrayElements","shape","reduce","arrayByteLength","BYTES_PER_ELEMENT","data","majorVersion","getUint8","offset","headerLength","getUint32","getUint16","encoding","decoder","TextDecoder","headerArray","headerText","decode","JSON","parse","replace"],"mappings":"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","sourcesContent":["type NumpyHeader = {descr: string; shape: number[]};\n\nfunction systemIsLittleEndian() {\n const a = new Uint32Array([0x12345678]);\n const b = new Uint8Array(a.buffer, a.byteOffset, a.byteLength);\n return !(b[0] === 0x12);\n}\n\nconst LITTLE_ENDIAN_OS = systemIsLittleEndian();\n\n// The basic string format consists of 3 characters:\n// 1. a character describing the byteorder of the data (<: little-endian, >: big-endian, |: not-relevant)\n// 2. a character code giving the basic type of the array\n// 3. an integer providing the number of bytes the type uses.\n// https://numpy.org/doc/stable/reference/arrays.interface.html\n//\n// Here I only include the second and third characters, and check endianness\n// separately\nconst DTYPES: Record<string, any> = {\n u1: Uint8Array,\n i1: Int8Array,\n u2: Uint16Array,\n i2: Int16Array,\n u4: Uint32Array,\n i4: Int32Array,\n f4: Float32Array,\n f8: Float64Array\n};\n\nexport function parseNPY(arrayBuffer: ArrayBuffer, options?: unknown) {\n if (!arrayBuffer) {\n return null;\n }\n\n const view = new DataView(arrayBuffer);\n const {header, headerEndOffset} = parseHeader(view);\n\n const numpyType = header.descr;\n const ArrayType = DTYPES[numpyType.slice(1, 3)];\n if (!ArrayType) {\n // eslint-disable-next-line no-console, no-undef\n console.warn(`Decoding of npy dtype not implemented: ${numpyType}`);\n return null;\n }\n\n const nArrayElements = header.shape?.reduce((a: number, b: number): number => a * b);\n const arrayByteLength = nArrayElements * ArrayType.BYTES_PER_ELEMENT;\n\n const data = new ArrayType(arrayBuffer.slice(headerEndOffset, headerEndOffset + arrayByteLength));\n\n // Swap endianness if needed\n if ((numpyType[0] === '>' && LITTLE_ENDIAN_OS) || (numpyType[0] === '<' && !LITTLE_ENDIAN_OS)) {\n // eslint-disable-next-line no-console, no-undef\n console.warn('Data is wrong endianness, byte swapping not yet implemented.');\n }\n\n return {\n data,\n header\n };\n}\n\n/**\n * Parse NPY header\n *\n * @param view\n * @return\n */\nfunction parseHeader(view: DataView): {header: NumpyHeader; headerEndOffset: number} {\n const majorVersion = view.getUint8(6);\n // const minorVersion = view.getUint8(7);\n\n let offset = 8;\n let headerLength;\n if (majorVersion >= 2) {\n headerLength = view.getUint32(8, true);\n offset += 4;\n } else {\n headerLength = view.getUint16(8, true);\n offset += 2;\n }\n\n const encoding = majorVersion <= 2 ? 'latin1' : 'utf-8';\n const decoder = new TextDecoder(encoding);\n const headerArray = new Uint8Array(view.buffer, offset, headerLength);\n const headerText = decoder.decode(headerArray);\n offset += headerLength;\n\n const header = JSON.parse(\n headerText\n .replace(/'/g, '\"')\n .replace('False', 'false')\n .replace('(', '[')\n .replace(/,*\\),*/g, ']')\n );\n\n return {header, headerEndOffset: offset};\n}\n"],"file":"parse-npy.js"}
@@ -1,183 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.isPVR = isPVR;
7
- exports.parsePVR = parsePVR;
8
-
9
- var _glExtensions = require("../gl-extensions");
10
-
11
- var _extractMipmapImages = require("../utils/extract-mipmap-images");
12
-
13
- var PVR_CONSTANTS = {
14
- MAGIC_NUMBER: 0x03525650,
15
- MAGIC_NUMBER_EXTRA: 0x50565203,
16
- HEADER_LENGTH: 13,
17
- HEADER_SIZE: 52,
18
- MAGIC_NUMBER_INDEX: 0,
19
- PIXEL_FORMAT_INDEX: 2,
20
- COLOUR_SPACE_INDEX: 4,
21
- HEIGHT_INDEX: 6,
22
- WIDTH_INDEX: 7,
23
- MIPMAPCOUNT_INDEX: 11,
24
- METADATA_SIZE_INDEX: 12
25
- };
26
- var PVR_PIXEL_FORMATS = {
27
- 0: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_2BPPV1_IMG],
28
- 1: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG],
29
- 2: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_4BPPV1_IMG],
30
- 3: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG],
31
- 6: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ETC1_WEBGL],
32
- 7: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT],
33
- 9: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT],
34
- 11: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT],
35
- 22: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_ETC2],
36
- 23: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA8_ETC2_EAC],
37
- 24: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2],
38
- 25: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_R11_EAC],
39
- 26: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RG11_EAC],
40
- 27: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR, _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR],
41
- 28: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X4_KHR, _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR],
42
- 29: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X5_KHR, _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR],
43
- 30: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X5_KHR, _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR],
44
- 31: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X6_KHR, _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR],
45
- 32: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X5_KHR, _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR],
46
- 33: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X6_KHR, _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR],
47
- 34: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X8_KHR, _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR],
48
- 35: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X5_KHR, _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR],
49
- 36: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X6_KHR, _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR],
50
- 37: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X8_KHR, _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR],
51
- 38: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X10_KHR, _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR],
52
- 39: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X10_KHR, _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR],
53
- 40: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X12_KHR, _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR]
54
- };
55
- var PVR_SIZE_FUNCTIONS = {
56
- 0: pvrtc2bppSize,
57
- 1: pvrtc2bppSize,
58
- 2: pvrtc4bppSize,
59
- 3: pvrtc4bppSize,
60
- 6: dxtEtcSmallSize,
61
- 7: dxtEtcSmallSize,
62
- 9: dxtEtcAstcBigSize,
63
- 11: dxtEtcAstcBigSize,
64
- 22: dxtEtcSmallSize,
65
- 23: dxtEtcAstcBigSize,
66
- 24: dxtEtcSmallSize,
67
- 25: dxtEtcSmallSize,
68
- 26: dxtEtcAstcBigSize,
69
- 27: dxtEtcAstcBigSize,
70
- 28: atc5x4Size,
71
- 29: atc5x5Size,
72
- 30: atc6x5Size,
73
- 31: atc6x6Size,
74
- 32: atc8x5Size,
75
- 33: atc8x6Size,
76
- 34: atc8x8Size,
77
- 35: atc10x5Size,
78
- 36: atc10x6Size,
79
- 37: atc10x8Size,
80
- 38: atc10x10Size,
81
- 39: atc12x10Size,
82
- 40: atc12x12Size
83
- };
84
-
85
- function isPVR(data) {
86
- var header = new Uint32Array(data, 0, PVR_CONSTANTS.HEADER_LENGTH);
87
- var version = header[PVR_CONSTANTS.MAGIC_NUMBER_INDEX];
88
- return version === PVR_CONSTANTS.MAGIC_NUMBER || version === PVR_CONSTANTS.MAGIC_NUMBER_EXTRA;
89
- }
90
-
91
- function parsePVR(data) {
92
- var header = new Uint32Array(data, 0, PVR_CONSTANTS.HEADER_LENGTH);
93
- var pvrFormat = header[PVR_CONSTANTS.PIXEL_FORMAT_INDEX];
94
- var colourSpace = header[PVR_CONSTANTS.COLOUR_SPACE_INDEX];
95
- var pixelFormats = PVR_PIXEL_FORMATS[pvrFormat] || [];
96
- var internalFormat = pixelFormats.length > 1 && colourSpace ? pixelFormats[1] : pixelFormats[0];
97
- var sizeFunction = PVR_SIZE_FUNCTIONS[pvrFormat];
98
- var mipMapLevels = header[PVR_CONSTANTS.MIPMAPCOUNT_INDEX];
99
- var width = header[PVR_CONSTANTS.WIDTH_INDEX];
100
- var height = header[PVR_CONSTANTS.HEIGHT_INDEX];
101
- var dataOffset = PVR_CONSTANTS.HEADER_SIZE + header[PVR_CONSTANTS.METADATA_SIZE_INDEX];
102
- var image = new Uint8Array(data, dataOffset);
103
- return (0, _extractMipmapImages.extractMipmapImages)(image, {
104
- mipMapLevels: mipMapLevels,
105
- width: width,
106
- height: height,
107
- sizeFunction: sizeFunction,
108
- internalFormat: internalFormat
109
- });
110
- }
111
-
112
- function pvrtc2bppSize(width, height) {
113
- width = Math.max(width, 16);
114
- height = Math.max(height, 8);
115
- return width * height / 4;
116
- }
117
-
118
- function pvrtc4bppSize(width, height) {
119
- width = Math.max(width, 8);
120
- height = Math.max(height, 8);
121
- return width * height / 2;
122
- }
123
-
124
- function dxtEtcSmallSize(width, height) {
125
- return Math.floor((width + 3) / 4) * Math.floor((height + 3) / 4) * 8;
126
- }
127
-
128
- function dxtEtcAstcBigSize(width, height) {
129
- return Math.floor((width + 3) / 4) * Math.floor((height + 3) / 4) * 16;
130
- }
131
-
132
- function atc5x4Size(width, height) {
133
- return Math.floor((width + 4) / 5) * Math.floor((height + 3) / 4) * 16;
134
- }
135
-
136
- function atc5x5Size(width, height) {
137
- return Math.floor((width + 4) / 5) * Math.floor((height + 4) / 5) * 16;
138
- }
139
-
140
- function atc6x5Size(width, height) {
141
- return Math.floor((width + 5) / 6) * Math.floor((height + 4) / 5) * 16;
142
- }
143
-
144
- function atc6x6Size(width, height) {
145
- return Math.floor((width + 5) / 6) * Math.floor((height + 5) / 6) * 16;
146
- }
147
-
148
- function atc8x5Size(width, height) {
149
- return Math.floor((width + 7) / 8) * Math.floor((height + 4) / 5) * 16;
150
- }
151
-
152
- function atc8x6Size(width, height) {
153
- return Math.floor((width + 7) / 8) * Math.floor((height + 5) / 6) * 16;
154
- }
155
-
156
- function atc8x8Size(width, height) {
157
- return Math.floor((width + 7) / 8) * Math.floor((height + 7) / 8) * 16;
158
- }
159
-
160
- function atc10x5Size(width, height) {
161
- return Math.floor((width + 9) / 10) * Math.floor((height + 4) / 5) * 16;
162
- }
163
-
164
- function atc10x6Size(width, height) {
165
- return Math.floor((width + 9) / 10) * Math.floor((height + 5) / 6) * 16;
166
- }
167
-
168
- function atc10x8Size(width, height) {
169
- return Math.floor((width + 9) / 10) * Math.floor((height + 7) / 8) * 16;
170
- }
171
-
172
- function atc10x10Size(width, height) {
173
- return Math.floor((width + 9) / 10) * Math.floor((height + 9) / 10) * 16;
174
- }
175
-
176
- function atc12x10Size(width, height) {
177
- return Math.floor((width + 11) / 12) * Math.floor((height + 9) / 10) * 16;
178
- }
179
-
180
- function atc12x12Size(width, height) {
181
- return Math.floor((width + 11) / 12) * Math.floor((height + 11) / 12) * 16;
182
- }
183
- //# sourceMappingURL=parse-pvr.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/lib/parsers/parse-pvr.ts"],"names":["PVR_CONSTANTS","MAGIC_NUMBER","MAGIC_NUMBER_EXTRA","HEADER_LENGTH","HEADER_SIZE","MAGIC_NUMBER_INDEX","PIXEL_FORMAT_INDEX","COLOUR_SPACE_INDEX","HEIGHT_INDEX","WIDTH_INDEX","MIPMAPCOUNT_INDEX","METADATA_SIZE_INDEX","PVR_PIXEL_FORMATS","GL_EXTENSIONS_CONSTANTS","COMPRESSED_RGB_PVRTC_2BPPV1_IMG","COMPRESSED_RGBA_PVRTC_2BPPV1_IMG","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGB_ETC1_WEBGL","COMPRESSED_RGB_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","COMPRESSED_RGB8_ETC2","COMPRESSED_RGBA8_ETC2_EAC","COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2","COMPRESSED_R11_EAC","COMPRESSED_RG11_EAC","COMPRESSED_RGBA_ASTC_4X4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR","COMPRESSED_RGBA_ASTC_5X4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR","COMPRESSED_RGBA_ASTC_5X5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR","COMPRESSED_RGBA_ASTC_6X5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR","COMPRESSED_RGBA_ASTC_6X6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR","COMPRESSED_RGBA_ASTC_8X5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR","COMPRESSED_RGBA_ASTC_8X6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR","COMPRESSED_RGBA_ASTC_8X8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR","COMPRESSED_RGBA_ASTC_10X5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR","COMPRESSED_RGBA_ASTC_10X6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR","COMPRESSED_RGBA_ASTC_10X8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR","COMPRESSED_RGBA_ASTC_10X10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR","COMPRESSED_RGBA_ASTC_12X10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR","COMPRESSED_RGBA_ASTC_12X12_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR","PVR_SIZE_FUNCTIONS","pvrtc2bppSize","pvrtc4bppSize","dxtEtcSmallSize","dxtEtcAstcBigSize","atc5x4Size","atc5x5Size","atc6x5Size","atc6x6Size","atc8x5Size","atc8x6Size","atc8x8Size","atc10x5Size","atc10x6Size","atc10x8Size","atc10x10Size","atc12x10Size","atc12x12Size","isPVR","data","header","Uint32Array","version","parsePVR","pvrFormat","colourSpace","pixelFormats","internalFormat","length","sizeFunction","mipMapLevels","width","height","dataOffset","image","Uint8Array","Math","max","floor"],"mappings":"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","sourcesContent":["import {TextureLevel} from '../../types';\n/* eslint-disable camelcase */\n// Forked from PicoGL: https://github.com/tsherif/picogl.js/blob/master/examples/utils/utils.js\n// Copyright (c) 2017 Tarek Sherif, The MIT License (MIT)\nimport {GL_EXTENSIONS_CONSTANTS} from '../gl-extensions';\nimport {extractMipmapImages} from '../utils/extract-mipmap-images';\n\nconst PVR_CONSTANTS: Record<string, number> = {\n MAGIC_NUMBER: 0x03525650,\n MAGIC_NUMBER_EXTRA: 0x50565203,\n HEADER_LENGTH: 13,\n HEADER_SIZE: 52,\n MAGIC_NUMBER_INDEX: 0,\n PIXEL_FORMAT_INDEX: 2,\n COLOUR_SPACE_INDEX: 4,\n HEIGHT_INDEX: 6,\n WIDTH_INDEX: 7,\n MIPMAPCOUNT_INDEX: 11,\n METADATA_SIZE_INDEX: 12\n};\n\nconst PVR_PIXEL_FORMATS: Record<number, number[]> = {\n 0: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_2BPPV1_IMG],\n 1: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG],\n 2: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_4BPPV1_IMG],\n 3: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG],\n 6: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ETC1_WEBGL],\n 7: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT],\n 9: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT],\n 11: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT],\n 22: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_ETC2],\n 23: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA8_ETC2_EAC],\n 24: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2],\n 25: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_R11_EAC],\n 26: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RG11_EAC],\n 27: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR\n ],\n 28: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X4_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR\n ],\n 29: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X5_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR\n ],\n 30: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X5_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR\n ],\n 31: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X6_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR\n ],\n 32: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X5_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR\n ],\n 33: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X6_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR\n ],\n 34: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X8_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR\n ],\n 35: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X5_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR\n ],\n 36: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X6_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR\n ],\n 37: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X8_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR\n ],\n 38: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X10_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR\n ],\n 39: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X10_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR\n ],\n 40: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X12_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR\n ]\n};\n\nconst PVR_SIZE_FUNCTIONS: Record<number, (width: number, height: number) => number> = {\n 0: pvrtc2bppSize,\n 1: pvrtc2bppSize,\n 2: pvrtc4bppSize,\n 3: pvrtc4bppSize,\n 6: dxtEtcSmallSize,\n 7: dxtEtcSmallSize,\n 9: dxtEtcAstcBigSize,\n 11: dxtEtcAstcBigSize,\n 22: dxtEtcSmallSize,\n 23: dxtEtcAstcBigSize,\n 24: dxtEtcSmallSize,\n 25: dxtEtcSmallSize,\n 26: dxtEtcAstcBigSize,\n 27: dxtEtcAstcBigSize,\n 28: atc5x4Size,\n 29: atc5x5Size,\n 30: atc6x5Size,\n 31: atc6x6Size,\n 32: atc8x5Size,\n 33: atc8x6Size,\n 34: atc8x8Size,\n 35: atc10x5Size,\n 36: atc10x6Size,\n 37: atc10x8Size,\n 38: atc10x10Size,\n 39: atc12x10Size,\n 40: atc12x12Size\n};\n\n/**\n * Check if data is in \"PVR\" format by its magic number\n * @param data - binary data of compressed texture\n * @returns true - data in \"PVR\" format, else - false\n */\nexport function isPVR(data: ArrayBuffer): boolean {\n const header = new Uint32Array(data, 0, PVR_CONSTANTS.HEADER_LENGTH);\n const version = header[PVR_CONSTANTS.MAGIC_NUMBER_INDEX];\n\n return version === PVR_CONSTANTS.MAGIC_NUMBER || version === PVR_CONSTANTS.MAGIC_NUMBER_EXTRA;\n}\n\n/**\n * Parse texture data as \"PVR\" format\n * @param data - binary data of compressed texture\n * @returns Array of the texture levels\n * @see http://cdn.imgtec.com/sdk-documentation/PVR+File+Format.Specification.pdf\n */\nexport function parsePVR(data: ArrayBuffer): TextureLevel[] {\n const header = new Uint32Array(data, 0, PVR_CONSTANTS.HEADER_LENGTH);\n\n const pvrFormat = header[PVR_CONSTANTS.PIXEL_FORMAT_INDEX];\n const colourSpace = header[PVR_CONSTANTS.COLOUR_SPACE_INDEX];\n const pixelFormats = PVR_PIXEL_FORMATS[pvrFormat] || [];\n const internalFormat = pixelFormats.length > 1 && colourSpace ? pixelFormats[1] : pixelFormats[0];\n\n const sizeFunction = PVR_SIZE_FUNCTIONS[pvrFormat];\n\n const mipMapLevels = header[PVR_CONSTANTS.MIPMAPCOUNT_INDEX];\n\n const width = header[PVR_CONSTANTS.WIDTH_INDEX];\n const height = header[PVR_CONSTANTS.HEIGHT_INDEX];\n\n const dataOffset = PVR_CONSTANTS.HEADER_SIZE + header[PVR_CONSTANTS.METADATA_SIZE_INDEX];\n\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// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_pvrtc/\nfunction pvrtc2bppSize(width: number, height: number): number {\n width = Math.max(width, 16);\n height = Math.max(height, 8);\n\n return (width * height) / 4;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_pvrtc/\nfunction pvrtc4bppSize(width: number, height: number): number {\n width = Math.max(width, 8);\n height = Math.max(height, 8);\n\n return (width * height) / 2;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_s3tc/\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_etc/\n// Size for:\n// COMPRESSED_RGB_S3TC_DXT1_EXT\n// COMPRESSED_R11_EAC\n// COMPRESSED_SIGNED_R11_EAC\n// COMPRESSED_RGB8_ETC2\n// COMPRESSED_SRGB8_ETC2\n// COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2\n// COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2\nfunction dxtEtcSmallSize(width: number, height: number): number {\n return Math.floor((width + 3) / 4) * Math.floor((height + 3) / 4) * 8;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_s3tc/\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_etc/\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\n// Size for:\n// COMPRESSED_RGBA_S3TC_DXT3_EXT\n// COMPRESSED_RGBA_S3TC_DXT5_EXT\n// COMPRESSED_RG11_EAC\n// COMPRESSED_SIGNED_RG11_EAC\n// COMPRESSED_RGBA8_ETC2_EAC\n// COMPRESSED_SRGB8_ALPHA8_ETC2_EAC\n// COMPRESSED_RGBA_ASTC_4x4_KHR\nfunction dxtEtcAstcBigSize(width: number, height: number): number {\n return Math.floor((width + 3) / 4) * Math.floor((height + 3) / 4) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc5x4Size(width: number, height: number): number {\n return Math.floor((width + 4) / 5) * Math.floor((height + 3) / 4) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc5x5Size(width: number, height: number): number {\n return Math.floor((width + 4) / 5) * Math.floor((height + 4) / 5) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc6x5Size(width: number, height: number): number {\n return Math.floor((width + 5) / 6) * Math.floor((height + 4) / 5) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc6x6Size(width: number, height: number): number {\n return Math.floor((width + 5) / 6) * Math.floor((height + 5) / 6) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc8x5Size(width: number, height: number): number {\n return Math.floor((width + 7) / 8) * Math.floor((height + 4) / 5) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc8x6Size(width: number, height: number): number {\n return Math.floor((width + 7) / 8) * Math.floor((height + 5) / 6) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc8x8Size(width: number, height: number): number {\n return Math.floor((width + 7) / 8) * Math.floor((height + 7) / 8) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc10x5Size(width: number, height: number): number {\n return Math.floor((width + 9) / 10) * Math.floor((height + 4) / 5) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc10x6Size(width: number, height: number): number {\n return Math.floor((width + 9) / 10) * Math.floor((height + 5) / 6) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc10x8Size(width: number, height: number): number {\n return Math.floor((width + 9) / 10) * Math.floor((height + 7) / 8) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc10x10Size(width: number, height: number): number {\n return Math.floor((width + 9) / 10) * Math.floor((height + 9) / 10) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc12x10Size(width: number, height: number): number {\n return Math.floor((width + 11) / 12) * Math.floor((height + 9) / 10) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc12x12Size(width: number, height: number): number {\n return Math.floor((width + 11) / 12) * Math.floor((height + 11) / 12) * 16;\n}\n"],"file":"parse-pvr.js"}