@loaders.gl/textures 4.0.0-alpha.4 → 4.0.0-alpha.6

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 (384) hide show
  1. package/dist/basis-loader.d.ts +11 -0
  2. package/dist/basis-loader.d.ts.map +1 -0
  3. package/dist/basis-loader.js +36 -24
  4. package/dist/basis-nodejs-worker.js +66490 -0
  5. package/dist/basis-worker.js +165 -76
  6. package/dist/bundle.d.ts +2 -0
  7. package/dist/bundle.d.ts.map +1 -0
  8. package/dist/bundle.js +2 -2
  9. package/dist/compressed-texture-loader.d.ts +49 -0
  10. package/dist/compressed-texture-loader.d.ts.map +1 -0
  11. package/dist/compressed-texture-loader.js +59 -36
  12. package/dist/compressed-texture-worker.js +269 -138
  13. package/dist/compressed-texture-writer.d.ts +17 -0
  14. package/dist/compressed-texture-writer.d.ts.map +1 -0
  15. package/dist/compressed-texture-writer.js +33 -21
  16. package/dist/crunch-loader.d.ts +21 -0
  17. package/dist/crunch-loader.d.ts.map +1 -0
  18. package/dist/crunch-loader.js +23 -16
  19. package/dist/crunch-worker.js +106 -41
  20. package/dist/dist.min.js +2195 -0
  21. package/dist/es5/basis-loader.js +38 -0
  22. package/dist/es5/basis-loader.js.map +1 -0
  23. package/dist/es5/bundle.js +6 -0
  24. package/dist/es5/bundle.js.map +1 -0
  25. package/dist/es5/compressed-texture-loader.js +76 -0
  26. package/dist/es5/compressed-texture-loader.js.map +1 -0
  27. package/dist/es5/compressed-texture-writer.js +28 -0
  28. package/dist/es5/compressed-texture-writer.js.map +1 -0
  29. package/dist/es5/crunch-loader.js +26 -0
  30. package/dist/es5/crunch-loader.js.map +1 -0
  31. package/dist/es5/index.js +132 -0
  32. package/dist/es5/index.js.map +1 -0
  33. package/dist/es5/ktx2-basis-writer-nodejs.js +14 -0
  34. package/dist/es5/ktx2-basis-writer-nodejs.js.map +1 -0
  35. package/dist/es5/ktx2-basis-writer.js +26 -0
  36. package/dist/es5/ktx2-basis-writer.js.map +1 -0
  37. package/dist/es5/lib/encoders/encode-ktx.js +12 -0
  38. package/dist/es5/lib/encoders/encode-ktx.js.map +1 -0
  39. package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js +74 -0
  40. package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js.map +1 -0
  41. package/dist/es5/lib/encoders/encode-texture.js +38 -0
  42. package/dist/es5/lib/encoders/encode-texture.js.map +1 -0
  43. package/dist/es5/lib/gl-extensions.js +68 -0
  44. package/dist/es5/lib/gl-extensions.js.map +1 -0
  45. package/dist/es5/lib/parsers/basis-module-loader.js +194 -0
  46. package/dist/es5/lib/parsers/basis-module-loader.js.map +1 -0
  47. package/dist/es5/lib/parsers/crunch-module-loader.js +67 -0
  48. package/dist/es5/lib/parsers/crunch-module-loader.js.map +1 -0
  49. package/dist/es5/lib/parsers/parse-basis.js +270 -0
  50. package/dist/es5/lib/parsers/parse-basis.js.map +1 -0
  51. package/dist/es5/lib/parsers/parse-compressed-texture.js +22 -0
  52. package/dist/es5/lib/parsers/parse-compressed-texture.js.map +1 -0
  53. package/dist/es5/lib/parsers/parse-crunch.js +100 -0
  54. package/dist/es5/lib/parsers/parse-crunch.js.map +1 -0
  55. package/dist/es5/lib/parsers/parse-dds.js +84 -0
  56. package/dist/es5/lib/parsers/parse-dds.js.map +1 -0
  57. package/dist/es5/lib/parsers/parse-ktx.js +34 -0
  58. package/dist/es5/lib/parsers/parse-ktx.js.map +1 -0
  59. package/dist/es5/lib/parsers/parse-npy.js +70 -0
  60. package/dist/es5/lib/parsers/parse-npy.js.map +1 -0
  61. package/dist/es5/lib/parsers/parse-pvr.js +161 -0
  62. package/dist/es5/lib/parsers/parse-pvr.js.map +1 -0
  63. package/dist/es5/lib/texture-api/async-deep-map.js +156 -0
  64. package/dist/es5/lib/texture-api/async-deep-map.js.map +1 -0
  65. package/dist/es5/lib/texture-api/deep-load.js +63 -0
  66. package/dist/es5/lib/texture-api/deep-load.js.map +1 -0
  67. package/dist/es5/lib/texture-api/generate-url.js +20 -0
  68. package/dist/es5/lib/texture-api/generate-url.js.map +1 -0
  69. package/dist/es5/lib/texture-api/load-image-array.js +75 -0
  70. package/dist/es5/lib/texture-api/load-image-array.js.map +1 -0
  71. package/dist/es5/lib/texture-api/load-image-cube.js +136 -0
  72. package/dist/es5/lib/texture-api/load-image-cube.js.map +1 -0
  73. package/dist/es5/lib/texture-api/load-image.js +129 -0
  74. package/dist/es5/lib/texture-api/load-image.js.map +1 -0
  75. package/dist/es5/lib/texture-api/texture-api-types.js +2 -0
  76. package/dist/es5/lib/texture-api/texture-api-types.js.map +1 -0
  77. package/dist/es5/lib/utils/extract-mipmap-images.js +41 -0
  78. package/dist/es5/lib/utils/extract-mipmap-images.js.map +1 -0
  79. package/dist/es5/lib/utils/ktx-format-helper.js +79 -0
  80. package/dist/es5/lib/utils/ktx-format-helper.js.map +1 -0
  81. package/dist/es5/lib/utils/texture-formats.js +54 -0
  82. package/dist/es5/lib/utils/texture-formats.js.map +1 -0
  83. package/dist/es5/lib/utils/version.js +9 -0
  84. package/dist/es5/lib/utils/version.js.map +1 -0
  85. package/dist/es5/libs/README.md +9 -0
  86. package/dist/es5/libs/basis_encoder.js +21 -0
  87. package/dist/es5/libs/basis_encoder.wasm +0 -0
  88. package/dist/es5/libs/basis_transcoder.js +22 -0
  89. package/dist/es5/libs/basis_transcoder.wasm +0 -0
  90. package/dist/es5/libs/crunch.js +136 -0
  91. package/dist/es5/npy-loader.js +51 -0
  92. package/dist/es5/npy-loader.js.map +1 -0
  93. package/dist/es5/types.js +2 -0
  94. package/dist/es5/types.js.map +1 -0
  95. package/dist/es5/workers/basis-nodejs-worker.js +7 -0
  96. package/dist/es5/workers/basis-nodejs-worker.js.map +1 -0
  97. package/dist/es5/workers/basis-worker.js +6 -0
  98. package/dist/es5/workers/basis-worker.js.map +1 -0
  99. package/dist/es5/workers/compressed-texture-worker.js +6 -0
  100. package/dist/es5/workers/compressed-texture-worker.js.map +1 -0
  101. package/dist/es5/workers/crunch-worker.js +19 -0
  102. package/dist/es5/workers/crunch-worker.js.map +1 -0
  103. package/dist/es5/workers/ktx2-basis-writer-nodejs-worker.js +53 -0
  104. package/dist/es5/workers/ktx2-basis-writer-nodejs-worker.js.map +1 -0
  105. package/dist/es5/workers/ktx2-basis-writer-worker.js +53 -0
  106. package/dist/es5/workers/ktx2-basis-writer-worker.js.map +1 -0
  107. package/dist/es5/workers/npy-worker.js +6 -0
  108. package/dist/es5/workers/npy-worker.js.map +1 -0
  109. package/dist/esm/basis-loader.js +27 -0
  110. package/dist/esm/basis-loader.js.map +1 -0
  111. package/dist/esm/bundle.js +4 -0
  112. package/dist/esm/bundle.js.map +1 -0
  113. package/dist/esm/compressed-texture-loader.js +41 -0
  114. package/dist/esm/compressed-texture-loader.js.map +1 -0
  115. package/dist/esm/compressed-texture-writer.js +21 -0
  116. package/dist/esm/compressed-texture-writer.js.map +1 -0
  117. package/dist/esm/crunch-loader.js +18 -0
  118. package/dist/esm/crunch-loader.js.map +1 -0
  119. package/dist/esm/index.js +30 -0
  120. package/dist/esm/index.js.map +1 -0
  121. package/dist/esm/ktx2-basis-writer-nodejs.js +3 -0
  122. package/dist/esm/ktx2-basis-writer-nodejs.js.map +1 -0
  123. package/dist/{ktx2-basis-universal-texture-writer.js → esm/ktx2-basis-writer.js} +4 -4
  124. package/dist/esm/ktx2-basis-writer.js.map +1 -0
  125. package/dist/esm/lib/encoders/encode-ktx.js +6 -0
  126. package/dist/esm/lib/encoders/encode-ktx.js.map +1 -0
  127. package/dist/esm/lib/encoders/encode-ktx2-basis-texture.js +35 -0
  128. package/dist/esm/lib/encoders/encode-ktx2-basis-texture.js.map +1 -0
  129. package/dist/esm/lib/encoders/encode-texture.js +12 -0
  130. package/dist/esm/lib/encoders/encode-texture.js.map +1 -0
  131. package/dist/{lib/gl-constants.js → esm/lib/gl-extensions.js} +2 -2
  132. package/dist/esm/lib/gl-extensions.js.map +1 -0
  133. package/dist/esm/lib/parsers/basis-module-loader.js +77 -0
  134. package/dist/esm/lib/parsers/basis-module-loader.js.map +1 -0
  135. package/dist/esm/lib/parsers/crunch-module-loader.js +19 -0
  136. package/dist/esm/lib/parsers/crunch-module-loader.js.map +1 -0
  137. package/dist/esm/lib/parsers/parse-basis.js +231 -0
  138. package/dist/esm/lib/parsers/parse-basis.js.map +1 -0
  139. package/dist/esm/lib/parsers/parse-compressed-texture.js +16 -0
  140. package/dist/esm/lib/parsers/parse-compressed-texture.js.map +1 -0
  141. package/dist/esm/lib/parsers/parse-crunch.js +75 -0
  142. package/dist/esm/lib/parsers/parse-crunch.js.map +1 -0
  143. package/dist/esm/lib/parsers/parse-dds.js +75 -0
  144. package/dist/esm/lib/parsers/parse-dds.js.map +1 -0
  145. package/dist/esm/lib/parsers/parse-ktx.js +25 -0
  146. package/dist/esm/lib/parsers/parse-ktx.js.map +1 -0
  147. package/dist/esm/lib/parsers/parse-npy.js +63 -0
  148. package/dist/esm/lib/parsers/parse-npy.js.map +1 -0
  149. package/dist/esm/lib/parsers/parse-pvr.js +154 -0
  150. package/dist/esm/lib/parsers/parse-pvr.js.map +1 -0
  151. package/dist/esm/lib/texture-api/async-deep-map.js +34 -0
  152. package/dist/esm/lib/texture-api/async-deep-map.js.map +1 -0
  153. package/dist/esm/lib/texture-api/deep-load.js +10 -0
  154. package/dist/esm/lib/texture-api/deep-load.js.map +1 -0
  155. package/dist/esm/lib/texture-api/generate-url.js +13 -0
  156. package/dist/esm/lib/texture-api/generate-url.js.map +1 -0
  157. package/dist/esm/lib/texture-api/load-image-array.js +20 -0
  158. package/dist/esm/lib/texture-api/load-image-array.js.map +1 -0
  159. package/dist/esm/lib/texture-api/load-image-cube.js +63 -0
  160. package/dist/esm/lib/texture-api/load-image-cube.js.map +1 -0
  161. package/dist/esm/lib/texture-api/load-image.js +46 -0
  162. package/dist/esm/lib/texture-api/load-image.js.map +1 -0
  163. package/dist/esm/lib/texture-api/texture-api-types.js +2 -0
  164. package/dist/esm/lib/texture-api/texture-api-types.js.map +1 -0
  165. package/dist/esm/lib/utils/extract-mipmap-images.js +35 -0
  166. package/dist/esm/lib/utils/extract-mipmap-images.js.map +1 -0
  167. package/dist/esm/lib/utils/ktx-format-helper.js +73 -0
  168. package/dist/esm/lib/utils/ktx-format-helper.js.map +1 -0
  169. package/dist/esm/lib/utils/texture-formats.js +36 -0
  170. package/dist/esm/lib/utils/texture-formats.js.map +1 -0
  171. package/dist/esm/lib/utils/version.js +2 -0
  172. package/dist/esm/lib/utils/version.js.map +1 -0
  173. package/dist/esm/libs/README.md +9 -0
  174. package/dist/esm/libs/basis_encoder.js +21 -0
  175. package/dist/esm/libs/basis_encoder.wasm +0 -0
  176. package/dist/esm/libs/basis_transcoder.js +22 -0
  177. package/dist/esm/libs/basis_transcoder.wasm +0 -0
  178. package/dist/esm/libs/crunch.js +136 -0
  179. package/dist/esm/npy-loader.js +22 -0
  180. package/dist/esm/npy-loader.js.map +1 -0
  181. package/dist/esm/types.js +2 -0
  182. package/dist/esm/types.js.map +1 -0
  183. package/dist/esm/workers/basis-nodejs-worker.js +5 -0
  184. package/dist/esm/workers/basis-nodejs-worker.js.map +1 -0
  185. package/dist/esm/workers/basis-worker.js +4 -0
  186. package/dist/esm/workers/basis-worker.js.map +1 -0
  187. package/dist/esm/workers/compressed-texture-worker.js +4 -0
  188. package/dist/esm/workers/compressed-texture-worker.js.map +1 -0
  189. package/dist/esm/workers/crunch-worker.js +9 -0
  190. package/dist/esm/workers/crunch-worker.js.map +1 -0
  191. package/dist/esm/workers/ktx2-basis-writer-nodejs-worker.js +31 -0
  192. package/dist/esm/workers/ktx2-basis-writer-nodejs-worker.js.map +1 -0
  193. package/dist/esm/workers/ktx2-basis-writer-worker.js +31 -0
  194. package/dist/esm/workers/ktx2-basis-writer-worker.js.map +1 -0
  195. package/dist/esm/workers/npy-worker.js +4 -0
  196. package/dist/esm/workers/npy-worker.js.map +1 -0
  197. package/dist/index.d.ts +30 -0
  198. package/dist/index.d.ts.map +1 -0
  199. package/dist/index.js +53 -14
  200. package/dist/ktx2-basis-writer-nodejs-worker.js +65949 -0
  201. package/dist/ktx2-basis-writer-nodejs.d.ts +3 -0
  202. package/dist/ktx2-basis-writer-nodejs.d.ts.map +1 -0
  203. package/dist/ktx2-basis-writer-nodejs.js +7 -0
  204. package/dist/ktx2-basis-writer-worker.js +343 -0
  205. package/dist/ktx2-basis-writer.d.ts +16 -0
  206. package/dist/ktx2-basis-writer.d.ts.map +1 -0
  207. package/dist/ktx2-basis-writer.js +26 -0
  208. package/dist/lib/encoders/encode-ktx.d.ts +2 -0
  209. package/dist/lib/encoders/encode-ktx.d.ts.map +1 -0
  210. package/dist/lib/encoders/encode-ktx.js +9 -5
  211. package/dist/lib/encoders/encode-ktx2-basis-texture.d.ts +10 -0
  212. package/dist/lib/encoders/encode-ktx2-basis-texture.d.ts.map +1 -0
  213. package/dist/lib/encoders/encode-ktx2-basis-texture.js +40 -34
  214. package/dist/lib/encoders/encode-texture.d.ts +3 -0
  215. package/dist/lib/encoders/encode-texture.d.ts.map +1 -0
  216. package/dist/lib/encoders/encode-texture.js +26 -14
  217. package/dist/lib/gl-extensions.d.ts +61 -0
  218. package/dist/lib/gl-extensions.d.ts.map +1 -0
  219. package/dist/lib/gl-extensions.js +72 -0
  220. package/dist/lib/parsers/basis-module-loader.d.ts +13 -0
  221. package/dist/lib/parsers/basis-module-loader.d.ts.map +1 -0
  222. package/dist/lib/parsers/basis-module-loader.js +100 -76
  223. package/dist/lib/parsers/crunch-module-loader.d.ts +7 -0
  224. package/dist/lib/parsers/crunch-module-loader.d.ts.map +1 -0
  225. package/dist/lib/parsers/crunch-module-loader.js +30 -18
  226. package/dist/lib/parsers/parse-basis.d.ts +18 -0
  227. package/dist/lib/parsers/parse-basis.d.ts.map +1 -0
  228. package/dist/lib/parsers/parse-basis.js +225 -240
  229. package/dist/lib/parsers/parse-compressed-texture.d.ts +8 -0
  230. package/dist/lib/parsers/parse-compressed-texture.d.ts.map +1 -0
  231. package/dist/lib/parsers/parse-compressed-texture.js +25 -18
  232. package/dist/lib/parsers/parse-crunch.d.ts +9 -0
  233. package/dist/lib/parsers/parse-crunch.d.ts.map +1 -0
  234. package/dist/lib/parsers/parse-crunch.js +97 -82
  235. package/dist/lib/parsers/parse-dds.d.ts +28 -0
  236. package/dist/lib/parsers/parse-dds.d.ts.map +1 -0
  237. package/dist/lib/parsers/parse-dds.js +93 -63
  238. package/dist/lib/parsers/parse-ktx.d.ts +4 -0
  239. package/dist/lib/parsers/parse-ktx.d.ts.map +1 -0
  240. package/dist/lib/parsers/parse-ktx.js +44 -23
  241. package/dist/lib/parsers/parse-npy.d.ts +15 -0
  242. package/dist/lib/parsers/parse-npy.d.ts.map +1 -0
  243. package/dist/lib/parsers/parse-npy.js +76 -71
  244. package/dist/lib/parsers/parse-pvr.d.ts +15 -0
  245. package/dist/lib/parsers/parse-pvr.d.ts.map +1 -0
  246. package/dist/lib/parsers/parse-pvr.js +212 -133
  247. package/dist/lib/texture-api/async-deep-map.d.ts +5 -0
  248. package/dist/lib/texture-api/async-deep-map.d.ts.map +1 -0
  249. package/dist/lib/texture-api/async-deep-map.js +35 -33
  250. package/dist/lib/texture-api/deep-load.d.ts +5 -0
  251. package/dist/lib/texture-api/deep-load.d.ts.map +1 -0
  252. package/dist/lib/texture-api/deep-load.js +14 -8
  253. package/dist/lib/texture-api/generate-url.d.ts +3 -0
  254. package/dist/lib/texture-api/generate-url.d.ts.map +1 -0
  255. package/dist/lib/texture-api/generate-url.js +16 -13
  256. package/dist/lib/texture-api/load-image-array.d.ts +4 -0
  257. package/dist/lib/texture-api/load-image-array.d.ts.map +1 -0
  258. package/dist/lib/texture-api/load-image-array.js +19 -18
  259. package/dist/lib/texture-api/load-image-cube.d.ts +12 -0
  260. package/dist/lib/texture-api/load-image-cube.d.ts.map +1 -0
  261. package/dist/lib/texture-api/load-image-cube.js +39 -55
  262. package/dist/lib/texture-api/load-image.d.ts +8 -0
  263. package/dist/lib/texture-api/load-image.d.ts.map +1 -0
  264. package/dist/lib/texture-api/load-image.js +38 -43
  265. package/dist/lib/texture-api/texture-api-types.d.ts +10 -0
  266. package/dist/lib/texture-api/texture-api-types.d.ts.map +1 -0
  267. package/dist/lib/texture-api/texture-api-types.js +3 -2
  268. package/dist/lib/utils/extract-mipmap-images.d.ts +20 -0
  269. package/dist/lib/utils/extract-mipmap-images.d.ts.map +1 -0
  270. package/dist/lib/utils/extract-mipmap-images.js +45 -36
  271. package/dist/lib/utils/ktx-format-helper.d.ts +9 -0
  272. package/dist/lib/utils/ktx-format-helper.d.ts.map +1 -0
  273. package/dist/lib/utils/ktx-format-helper.js +122 -70
  274. package/dist/lib/utils/texture-formats.d.ts +8 -0
  275. package/dist/lib/utils/texture-formats.d.ts.map +1 -0
  276. package/dist/lib/utils/texture-formats.js +42 -30
  277. package/dist/lib/utils/version.d.ts +2 -0
  278. package/dist/lib/utils/version.d.ts.map +1 -0
  279. package/dist/lib/utils/version.js +8 -2
  280. package/dist/libs/README.md +2 -2
  281. package/dist/libs/basis_encoder.js +19 -20
  282. package/dist/libs/basis_encoder.wasm +0 -0
  283. package/dist/libs/basis_transcoder.js +13 -12
  284. package/dist/libs/basis_transcoder.wasm +0 -0
  285. package/dist/libs/crunch.js +1 -0
  286. package/dist/npy-loader.d.ts +14 -0
  287. package/dist/npy-loader.d.ts.map +1 -0
  288. package/dist/npy-loader.js +28 -20
  289. package/dist/npy-worker.js +60 -31
  290. package/dist/types.d.ts +1 -0
  291. package/dist/types.d.ts.map +1 -0
  292. package/dist/types.js +1 -2
  293. package/dist/workers/basis-nodejs-worker.d.ts +2 -0
  294. package/dist/workers/basis-nodejs-worker.d.ts.map +1 -0
  295. package/dist/workers/basis-nodejs-worker.js +6 -0
  296. package/dist/workers/basis-worker.d.ts +2 -0
  297. package/dist/workers/basis-worker.d.ts.map +1 -0
  298. package/dist/workers/basis-worker.js +5 -4
  299. package/dist/workers/compressed-texture-worker.d.ts +2 -0
  300. package/dist/workers/compressed-texture-worker.d.ts.map +1 -0
  301. package/dist/workers/compressed-texture-worker.js +5 -4
  302. package/dist/workers/crunch-worker.d.ts +21 -0
  303. package/dist/workers/crunch-worker.d.ts.map +1 -0
  304. package/dist/workers/crunch-worker.js +13 -7
  305. package/dist/workers/ktx2-basis-writer-nodejs-worker.d.ts +2 -0
  306. package/dist/workers/ktx2-basis-writer-nodejs-worker.d.ts.map +1 -0
  307. package/dist/workers/ktx2-basis-writer-nodejs-worker.js +26 -0
  308. package/dist/workers/ktx2-basis-writer-worker.d.ts +2 -0
  309. package/dist/workers/ktx2-basis-writer-worker.d.ts.map +1 -0
  310. package/dist/workers/ktx2-basis-writer-worker.js +26 -0
  311. package/dist/workers/npy-worker.d.ts +2 -0
  312. package/dist/workers/npy-worker.d.ts.map +1 -0
  313. package/dist/workers/npy-worker.js +5 -4
  314. package/package.json +21 -14
  315. package/src/basis-loader.ts +8 -8
  316. package/src/compressed-texture-loader.ts +1 -1
  317. package/src/compressed-texture-writer.ts +21 -3
  318. package/src/index.ts +21 -3
  319. package/src/ktx2-basis-writer-nodejs.ts +4 -0
  320. package/src/{ktx2-basis-universal-texture-writer.ts → ktx2-basis-writer.ts} +14 -3
  321. package/src/lib/encoders/encode-ktx2-basis-texture.ts +2 -2
  322. package/src/lib/encoders/encode-texture.ts +7 -6
  323. package/src/lib/{gl-constants.ts → gl-extensions.ts} +1 -1
  324. package/src/lib/parsers/crunch-module-loader.ts +1 -1
  325. package/src/lib/parsers/{parse-basis.js → parse-basis.ts} +101 -45
  326. package/src/lib/parsers/parse-compressed-texture.ts +1 -1
  327. package/src/lib/parsers/parse-crunch.ts +16 -15
  328. package/src/lib/parsers/parse-dds.ts +8 -8
  329. package/src/lib/parsers/parse-ktx.ts +2 -1
  330. package/src/lib/parsers/parse-npy.ts +53 -30
  331. package/src/lib/parsers/parse-pvr.ts +72 -29
  332. package/src/lib/utils/extract-mipmap-images.ts +9 -1
  333. package/src/lib/utils/ktx-format-helper.ts +67 -67
  334. package/src/lib/utils/texture-formats.ts +1 -1
  335. package/src/libs/README.md +2 -2
  336. package/src/libs/basis_encoder.js +19 -20
  337. package/src/libs/basis_encoder.wasm +0 -0
  338. package/src/libs/basis_transcoder.js +13 -12
  339. package/src/libs/basis_transcoder.wasm +0 -0
  340. package/src/libs/crunch.js +1 -0
  341. package/src/npy-loader.ts +7 -7
  342. package/src/types.ts +0 -30
  343. package/src/workers/basis-nodejs-worker.ts +5 -0
  344. package/src/workers/ktx2-basis-writer-nodejs-worker.ts +25 -0
  345. package/src/workers/ktx2-basis-writer-worker.ts +25 -0
  346. package/dist/basis-loader.js.map +0 -1
  347. package/dist/bundle.js.map +0 -1
  348. package/dist/compressed-texture-loader.js.map +0 -1
  349. package/dist/compressed-texture-writer.js.map +0 -1
  350. package/dist/crunch-loader.js.map +0 -1
  351. package/dist/index.js.map +0 -1
  352. package/dist/ktx2-basis-universal-texture-writer.js.map +0 -1
  353. package/dist/lib/encoders/encode-ktx.js.map +0 -1
  354. package/dist/lib/encoders/encode-ktx2-basis-texture.js.map +0 -1
  355. package/dist/lib/encoders/encode-texture.js.map +0 -1
  356. package/dist/lib/gl-constants.js.map +0 -1
  357. package/dist/lib/parsers/basis-module-loader.js.map +0 -1
  358. package/dist/lib/parsers/crunch-module-loader.js.map +0 -1
  359. package/dist/lib/parsers/parse-basis.js.map +0 -1
  360. package/dist/lib/parsers/parse-compressed-texture.js.map +0 -1
  361. package/dist/lib/parsers/parse-crunch.js.map +0 -1
  362. package/dist/lib/parsers/parse-dds.js.map +0 -1
  363. package/dist/lib/parsers/parse-ktx.js.map +0 -1
  364. package/dist/lib/parsers/parse-npy.js.map +0 -1
  365. package/dist/lib/parsers/parse-pvr.js.map +0 -1
  366. package/dist/lib/texture-api/async-deep-map.js.map +0 -1
  367. package/dist/lib/texture-api/deep-load.js.map +0 -1
  368. package/dist/lib/texture-api/generate-url.js.map +0 -1
  369. package/dist/lib/texture-api/load-image-array.js.map +0 -1
  370. package/dist/lib/texture-api/load-image-cube.js.map +0 -1
  371. package/dist/lib/texture-api/load-image.js.map +0 -1
  372. package/dist/lib/texture-api/texture-api-types.js.map +0 -1
  373. package/dist/lib/utils/extract-mipmap-images.js.map +0 -1
  374. package/dist/lib/utils/ktx-format-helper.js.map +0 -1
  375. package/dist/lib/utils/texture-formats.js.map +0 -1
  376. package/dist/lib/utils/version.js.map +0 -1
  377. package/dist/npy-loader.js.map +0 -1
  378. package/dist/types.js.map +0 -1
  379. package/dist/workers/basis-worker.js.map +0 -1
  380. package/dist/workers/compressed-texture-worker.js.map +0 -1
  381. package/dist/workers/crunch-worker.js.map +0 -1
  382. package/dist/workers/npy-worker.js.map +0 -1
  383. package/src/lib/parsers/parse-ktx.js +0 -45
  384. package/src/lib/parsers/parse-npy.js +0 -96
@@ -1,11 +1,14 @@
1
1
  import {ChildProcessProxy} from '@loaders.gl/worker-utils';
2
-
3
- const MODULE_ROOT = `${__dirname}/../../..`;
2
+ import {CompressedTextureWriterOptions} from '../../compressed-texture-writer';
4
3
 
5
4
  /*
6
5
  * @see https://github.com/TimvanScherpenzeel/texture-compressor
7
6
  */
8
- export async function encodeImageURLToCompressedTextureURL(inputUrl, outputUrl) {
7
+ export async function encodeImageURLToCompressedTextureURL(
8
+ inputUrl: string,
9
+ outputUrl: string,
10
+ options?: CompressedTextureWriterOptions
11
+ ): Promise<string> {
9
12
  // prettier-ignore
10
13
  const args = [
11
14
  // Note: our actual executable is `npx`, so `texture-compressor` is an argument
@@ -20,9 +23,7 @@ export async function encodeImageURLToCompressedTextureURL(inputUrl, outputUrl)
20
23
  await childProcess.start({
21
24
  command: 'npx',
22
25
  arguments: args,
23
- spawn: {
24
- cwd: MODULE_ROOT
25
- }
26
+ spawn: options
26
27
  });
27
28
  return outputUrl;
28
29
  }
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable camelcase */
2
- export const GL = {
2
+ export const GL_EXTENSIONS_CONSTANTS = {
3
3
  // WEBGL_compressed_texture_s3tc
4
4
 
5
5
  COMPRESSED_RGB_S3TC_DXT1_EXT: 0x83f0,
@@ -31,7 +31,7 @@ async function loadCrunch(options) {
31
31
 
32
32
  // Depends on how import happened...
33
33
  // @ts-ignore TS2339: Property does not exist on type
34
- loadCrunchDecoder = loadCrunchDecoder || globalThis.loadCrunchDecoder;
34
+ loadCrunchDecoder = loadCrunchDecoder || globalThis.LoadCrunchDecoder;
35
35
  crunchModule = loadCrunchDecoder();
36
36
  return crunchModule;
37
37
  }
@@ -1,20 +1,71 @@
1
+ /* eslint-disable indent */
2
+ import type {TextureLevel} from '@loaders.gl/schema';
1
3
  import {loadBasisEncoderModule, loadBasisTrascoderModule} from './basis-module-loader';
2
- import {GL} from '../gl-constants';
3
- import {getSupportedGPUTextureFormats} from '../..';
4
+ import {GL_EXTENSIONS_CONSTANTS} from '../gl-extensions';
5
+ import {getSupportedGPUTextureFormats} from '../utils/texture-formats';
4
6
  import {isKTX} from './parse-ktx';
5
7
 
6
- const OutputFormat = {
7
- etc1: {basisFormat: 0, compressed: true, format: GL.COMPRESSED_RGB_ETC1_WEBGL},
8
+ export type BasisFormat =
9
+ | 'etc1'
10
+ | 'etc2'
11
+ | 'bc1'
12
+ | 'bc3'
13
+ | 'bc4'
14
+ | 'bc5'
15
+ | 'bc7-m6-opaque-only'
16
+ | 'bc7-m5'
17
+ | 'pvrtc1-4-rgb'
18
+ | 'pvrtc1-4-rgba'
19
+ | 'astc-4x4'
20
+ | 'atc-rgb'
21
+ | 'atc-rgba-interpolated-alpha'
22
+ | 'rgba32'
23
+ | 'rgb565'
24
+ | 'bgr565'
25
+ | 'rgba4444';
26
+
27
+ type BasisOutputOptions = {
28
+ basisFormat: number;
29
+ compressed: boolean;
30
+ format?: number;
31
+ };
32
+
33
+ const OutputFormat: Record<string, BasisOutputOptions> = {
34
+ etc1: {
35
+ basisFormat: 0,
36
+ compressed: true,
37
+ format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ETC1_WEBGL
38
+ },
8
39
  etc2: {basisFormat: 1, compressed: true},
9
- bc1: {basisFormat: 2, compressed: true, format: GL.COMPRESSED_RGB_S3TC_DXT1_EXT},
10
- bc3: {basisFormat: 3, compressed: true, format: GL.COMPRESSED_RGBA_S3TC_DXT5_EXT},
40
+ bc1: {
41
+ basisFormat: 2,
42
+ compressed: true,
43
+ format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT
44
+ },
45
+ bc3: {
46
+ basisFormat: 3,
47
+ compressed: true,
48
+ format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT
49
+ },
11
50
  bc4: {basisFormat: 4, compressed: true},
12
51
  bc5: {basisFormat: 5, compressed: true},
13
52
  'bc7-m6-opaque-only': {basisFormat: 6, compressed: true},
14
53
  'bc7-m5': {basisFormat: 7, compressed: true},
15
- 'pvrtc1-4-rgb': {basisFormat: 8, compressed: true, format: GL.COMPRESSED_RGB_PVRTC_4BPPV1_IMG},
16
- 'pvrtc1-4-rgba': {basisFormat: 9, compressed: true, format: GL.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG},
17
- 'astc-4x4': {basisFormat: 10, compressed: true, format: GL.COMPRESSED_RGBA_ASTC_4X4_KHR},
54
+ 'pvrtc1-4-rgb': {
55
+ basisFormat: 8,
56
+ compressed: true,
57
+ format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_4BPPV1_IMG
58
+ },
59
+ 'pvrtc1-4-rgba': {
60
+ basisFormat: 9,
61
+ compressed: true,
62
+ format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG
63
+ },
64
+ 'astc-4x4': {
65
+ basisFormat: 10,
66
+ compressed: true,
67
+ format: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR
68
+ },
18
69
  'atc-rgb': {basisFormat: 11, compressed: true},
19
70
  'atc-rgba-interpolated-alpha': {basisFormat: 12, compressed: true},
20
71
  rgba32: {basisFormat: 13, compressed: false},
@@ -25,11 +76,11 @@ const OutputFormat = {
25
76
 
26
77
  /**
27
78
  * parse data with a Binomial Basis_Universal module
28
- * @param {ArrayBuffer} data
29
- * @param {*} options
79
+ * @param data
80
+ * @param options
30
81
  * @returns compressed texture data
31
82
  */
32
- export default async function parseBasis(data, options) {
83
+ export default async function parseBasis(data: ArrayBuffer, options): Promise<TextureLevel[][]> {
33
84
  if (options.basis.containerFormat === 'auto') {
34
85
  if (isKTX(data)) {
35
86
  const fileConstructors = await loadBasisEncoderModule(options);
@@ -57,25 +108,25 @@ export default async function parseBasis(data, options) {
57
108
 
58
109
  /**
59
110
  * Parse *.basis file data
60
- * @param {*} BasisFile - initialized transcoder module
61
- * @param {*} data
62
- * @param {*} options
111
+ * @param BasisFile - initialized transcoder module
112
+ * @param data
113
+ * @param options
63
114
  * @returns compressed texture data
64
115
  */
65
- function parseBasisFile(BasisFile, data, options) {
116
+ function parseBasisFile(BasisFile, data, options): TextureLevel[][] {
66
117
  const basisFile = new BasisFile(new Uint8Array(data));
67
118
 
68
119
  try {
69
120
  if (!basisFile.startTranscoding()) {
70
- return null;
121
+ throw new Error('Failed to start basis transcoding');
71
122
  }
72
123
 
73
124
  const imageCount = basisFile.getNumImages();
74
- const images = [];
125
+ const images: TextureLevel[][] = [];
75
126
 
76
127
  for (let imageIndex = 0; imageIndex < imageCount; imageIndex++) {
77
128
  const levelsCount = basisFile.getNumLevels(imageIndex);
78
- const levels = [];
129
+ const levels: TextureLevel[] = [];
79
130
 
80
131
  for (let levelIndex = 0; levelIndex < levelsCount; levelIndex++) {
81
132
  levels.push(transcodeImage(basisFile, imageIndex, levelIndex, options));
@@ -93,13 +144,13 @@ function parseBasisFile(BasisFile, data, options) {
93
144
 
94
145
  /**
95
146
  * Parse the particular level image of a basis file
96
- * @param {*} basisFile
97
- * @param {*} imageIndex
98
- * @param {*} levelIndex
99
- * @param {*} options
147
+ * @param basisFile
148
+ * @param imageIndex
149
+ * @param levelIndex
150
+ * @param options
100
151
  * @returns compressed texture data
101
152
  */
102
- function transcodeImage(basisFile, imageIndex, levelIndex, options) {
153
+ function transcodeImage(basisFile, imageIndex, levelIndex, options): TextureLevel {
103
154
  const width = basisFile.getImageWidth(imageIndex, levelIndex);
104
155
  const height = basisFile.getImageHeight(imageIndex, levelIndex);
105
156
 
@@ -113,7 +164,7 @@ function transcodeImage(basisFile, imageIndex, levelIndex, options) {
113
164
  const decodedData = new Uint8Array(decodedSize);
114
165
 
115
166
  if (!basisFile.transcodeImage(decodedData, imageIndex, levelIndex, basisFormat, 0, 0)) {
116
- return null;
167
+ throw new Error('failed to start Basis transcoding');
117
168
  }
118
169
 
119
170
  return {
@@ -122,37 +173,37 @@ function transcodeImage(basisFile, imageIndex, levelIndex, options) {
122
173
  height,
123
174
  data: decodedData,
124
175
  compressed,
176
+ format,
125
177
 
126
178
  // Additional fields
127
179
  // Add levelSize field.
128
- hasAlpha,
129
- format
180
+ hasAlpha
130
181
  };
131
182
  }
132
183
 
133
184
  /**
134
185
  * Parse *.ktx2 file data
135
- * @param {*} KTX2File
136
- * @param {*} data
137
- * @param {*} options
186
+ * @param KTX2File
187
+ * @param data
188
+ * @param options
138
189
  * @returns compressed texture data
139
190
  */
140
- function parseKTX2File(KTX2File, data, options) {
191
+ function parseKTX2File(KTX2File, data: ArrayBuffer, options): TextureLevel[][] {
141
192
  const ktx2File = new KTX2File(new Uint8Array(data));
142
193
 
143
194
  try {
144
195
  if (!ktx2File.startTranscoding()) {
145
- return null;
196
+ throw new Error('failed to start KTX2 transcoding');
146
197
  }
147
198
  const levelsCount = ktx2File.getLevels();
148
- const levels = [];
199
+ const levels: TextureLevel[] = [];
149
200
 
150
201
  for (let levelIndex = 0; levelIndex < levelsCount; levelIndex++) {
151
202
  levels.push(transcodeKTX2Image(ktx2File, levelIndex, options));
152
203
  break; // texture app can only show one level for some reason
153
204
  }
154
205
 
155
- return levels;
206
+ return [levels];
156
207
  } finally {
157
208
  ktx2File.close();
158
209
  ktx2File.delete();
@@ -161,12 +212,12 @@ function parseKTX2File(KTX2File, data, options) {
161
212
 
162
213
  /**
163
214
  * Parse the particular level image of a ktx2 file
164
- * @param {*} ktx2File
165
- * @param {*} levelIndex
166
- * @param {*} options
215
+ * @param ktx2File
216
+ * @param levelIndex
217
+ * @param options
167
218
  * @returns
168
219
  */
169
- function transcodeKTX2Image(ktx2File, levelIndex, options) {
220
+ function transcodeKTX2Image(ktx2File, levelIndex: number, options): TextureLevel {
170
221
  const {alphaFlag, height, width} = ktx2File.getImageLevelInfo(levelIndex, 0, 0);
171
222
 
172
223
  // Check options for output format etc
@@ -192,7 +243,7 @@ function transcodeKTX2Image(ktx2File, levelIndex, options) {
192
243
  -1 /* channel1 */
193
244
  )
194
245
  ) {
195
- return null;
246
+ throw new Error('Failed to transcode KTX2 image');
196
247
  }
197
248
 
198
249
  return {
@@ -203,19 +254,19 @@ function transcodeKTX2Image(ktx2File, levelIndex, options) {
203
254
  compressed,
204
255
 
205
256
  // Additional fields
206
- // Add levelSize field.
207
- alphaFlag,
257
+ levelSize: decodedSize,
258
+ hasAlpha: alphaFlag,
208
259
  format
209
260
  };
210
261
  }
211
262
 
212
263
  /**
213
264
  * Get BasisFormat by loader format option
214
- * @param {*} options
215
- * @param {*} hasAlpha
265
+ * @param options
266
+ * @param hasAlpha
216
267
  * @returns BasisFormat data
217
268
  */
218
- function getBasisOptions(options, hasAlpha) {
269
+ function getBasisOptions(options, hasAlpha: boolean): BasisOutputOptions {
219
270
  let format = options && options.basis && options.basis.format;
220
271
  if (format === 'auto') {
221
272
  format = selectSupportedBasisFormat();
@@ -231,7 +282,12 @@ function getBasisOptions(options, hasAlpha) {
231
282
  * Select transcode format from the list of supported formats
232
283
  * @returns key for OutputFormat map
233
284
  */
234
- export function selectSupportedBasisFormat() {
285
+ export function selectSupportedBasisFormat():
286
+ | BasisFormat
287
+ | {
288
+ alpha: BasisFormat;
289
+ noAlpha: BasisFormat;
290
+ } {
235
291
  const supportedFormats = getSupportedGPUTextureFormats();
236
292
  if (supportedFormats.has('astc')) {
237
293
  return 'astc-4x4';
@@ -1,4 +1,4 @@
1
- import type {TextureLevel} from '../../types';
1
+ import type {TextureLevel} from '@loaders.gl/schema';
2
2
  import {isKTX, parseKTX} from './parse-ktx';
3
3
  import {isDDS, parseDDS} from './parse-dds';
4
4
  import {isPVR, parsePVR} from './parse-pvr';
@@ -1,6 +1,6 @@
1
- import type {TextureLevel} from '../../types';
1
+ import type {TextureLevel} from '@loaders.gl/schema';
2
2
  import {loadCrunchModule} from './crunch-module-loader';
3
- import {GL} from '../gl-constants';
3
+ import {GL_EXTENSIONS_CONSTANTS} from '../gl-extensions';
4
4
  import {assert} from '@loaders.gl/loader-utils';
5
5
  import {getDxt1LevelSize, getDxtXLevelSize} from './parse-dds';
6
6
  import {extractMipmapImages} from '../utils/extract-mipmap-images';
@@ -17,19 +17,20 @@ const CRN_FORMAT = {
17
17
  // Crunch supports more formats than this.
18
18
  };
19
19
 
20
- // Mapping of Crunch formats to DXT formats.
21
- const DXT_FORMAT_MAP = {};
22
- DXT_FORMAT_MAP[CRN_FORMAT.cCRNFmtDXT1] = {
23
- pixelFormat: GL.COMPRESSED_RGB_S3TC_DXT1_EXT,
24
- sizeFunction: getDxt1LevelSize
25
- };
26
- DXT_FORMAT_MAP[CRN_FORMAT.cCRNFmtDXT3] = {
27
- pixelFormat: GL.COMPRESSED_RGBA_S3TC_DXT3_EXT,
28
- sizeFunction: getDxtXLevelSize
29
- };
30
- DXT_FORMAT_MAP[CRN_FORMAT.cCRNFmtDXT5] = {
31
- pixelFormat: GL.COMPRESSED_RGBA_S3TC_DXT5_EXT,
32
- sizeFunction: getDxtXLevelSize
20
+ /** Mapping of Crunch formats to DXT formats. */
21
+ const DXT_FORMAT_MAP = {
22
+ [CRN_FORMAT.cCRNFmtDXT1]: {
23
+ pixelFormat: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT,
24
+ sizeFunction: getDxt1LevelSize
25
+ },
26
+ [CRN_FORMAT.cCRNFmtDXT3]: {
27
+ pixelFormat: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT,
28
+ sizeFunction: getDxtXLevelSize
29
+ },
30
+ [CRN_FORMAT.cCRNFmtDXT5]: {
31
+ pixelFormat: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT,
32
+ sizeFunction: getDxtXLevelSize
33
+ }
33
34
  };
34
35
 
35
36
  let cachedDstSize = 0;
@@ -1,6 +1,6 @@
1
- import type {TextureLevel} from '../../types';
1
+ import type {TextureLevel} from '@loaders.gl/schema';
2
2
  import {assert} from '@loaders.gl/loader-utils';
3
- import {GL} from '../gl-constants';
3
+ import {GL_EXTENSIONS_CONSTANTS} from '../gl-extensions';
4
4
  import {extractMipmapImages} from '../utils/extract-mipmap-images';
5
5
 
6
6
  const DDS_CONSTANTS = {
@@ -19,12 +19,12 @@ const DDS_CONSTANTS = {
19
19
  };
20
20
 
21
21
  const DDS_PIXEL_FORMATS: Record<string, number> = {
22
- DXT1: GL.COMPRESSED_RGB_S3TC_DXT1_EXT,
23
- DXT3: GL.COMPRESSED_RGBA_S3TC_DXT3_EXT,
24
- DXT5: GL.COMPRESSED_RGBA_S3TC_DXT5_EXT,
25
- 'ATC ': GL.COMPRESSED_RGB_ATC_WEBGL,
26
- ATCA: GL.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL,
27
- ATCI: GL.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL
22
+ DXT1: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT,
23
+ DXT3: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT,
24
+ DXT5: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT,
25
+ 'ATC ': GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ATC_WEBGL,
26
+ ATCA: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL,
27
+ ATCI: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL
28
28
  };
29
29
 
30
30
  const getATCLevelSize = getDxt1LevelSize;
@@ -1,3 +1,4 @@
1
+ import type {TextureLevel} from '@loaders.gl/schema';
1
2
  import {read} from 'ktx-parse';
2
3
  import {extractMipmapImages} from '../utils/extract-mipmap-images';
3
4
  import {mapVkFormatToWebGL} from '../utils/ktx-format-helper';
@@ -29,7 +30,7 @@ export function isKTX(data: ArrayBuffer) {
29
30
  return !notKTX;
30
31
  }
31
32
 
32
- export function parseKTX(arrayBuffer: ArrayBuffer) {
33
+ export function parseKTX(arrayBuffer: ArrayBuffer): TextureLevel[] {
33
34
  const uint8Array = new Uint8Array(arrayBuffer);
34
35
  const ktx = read(uint8Array);
35
36
  const mipMapLevels = Math.max(1, ktx.levels.length);
@@ -1,22 +1,49 @@
1
- type NumpyHeader = {descr: string; shape: number[]};
1
+ // import type {TextureLevel} from '@loaders.gl/schema';
2
+ import {TypedArray} from '@math.gl/types';
3
+ // import {TypedArrayConstructor} from "@math.gl/types";
2
4
 
3
- function systemIsLittleEndian() {
4
- const a = new Uint32Array([0x12345678]);
5
- const b = new Uint8Array(a.buffer, a.byteOffset, a.byteLength);
6
- return !(b[0] === 0x12);
7
- }
5
+ // TODO move to math.gl
6
+ type TypedArrayConstructor =
7
+ | typeof Int8Array
8
+ | typeof Uint8Array
9
+ | typeof Int16Array
10
+ | typeof Uint16Array
11
+ | typeof Int32Array
12
+ | typeof Uint32Array
13
+ | typeof Int32Array
14
+ | typeof Uint32Array
15
+ | typeof Float32Array
16
+ | typeof Float64Array;
17
+
18
+ const a = new Uint32Array([0x12345678]);
19
+ const b = new Uint8Array(a.buffer, a.byteOffset, a.byteLength);
20
+ const isLittleEndian = !(b[0] === 0x12);
21
+
22
+ const LITTLE_ENDIAN_OS = isLittleEndian;
23
+
24
+ /** One numpy "tile" */
25
+ export type NPYTile = {
26
+ /** tile header */
27
+ header: NumpyHeader;
28
+ /** data in tile */
29
+ data: TypedArray;
30
+ };
31
+
32
+ type NumpyHeader = {
33
+ descr: string;
34
+ shape: number[];
35
+ };
8
36
 
9
- const LITTLE_ENDIAN_OS = systemIsLittleEndian();
10
-
11
- // The basic string format consists of 3 characters:
12
- // 1. a character describing the byteorder of the data (<: little-endian, >: big-endian, |: not-relevant)
13
- // 2. a character code giving the basic type of the array
14
- // 3. an integer providing the number of bytes the type uses.
15
- // https://numpy.org/doc/stable/reference/arrays.interface.html
16
- //
17
- // Here I only include the second and third characters, and check endianness
18
- // separately
19
- const DTYPES: Record<string, any> = {
37
+ /**
38
+ * The basic string format consists of 3 characters:
39
+ * 1. a character describing the byteorder of the data (<: little-endian, >: big-endian, |: not-relevant)
40
+ * 2. a character code giving the basic type of the array
41
+ * 3. an integer providing the number of bytes the type uses.
42
+ * https://numpy.org/doc/stable/reference/arrays.interface.html
43
+ *
44
+ * Here I only include the second and third characters, and check endianness separately
45
+ */
46
+ const DTYPES: Record<string, TypedArrayConstructor> = {
20
47
  u1: Uint8Array,
21
48
  i1: Int8Array,
22
49
  u2: Uint16Array,
@@ -27,31 +54,27 @@ const DTYPES: Record<string, any> = {
27
54
  f8: Float64Array
28
55
  };
29
56
 
30
- export function parseNPY(arrayBuffer: ArrayBuffer, options?: unknown) {
31
- if (!arrayBuffer) {
32
- return null;
33
- }
34
-
57
+ export function parseNPY(arrayBuffer: ArrayBuffer, options?: {}): NPYTile {
35
58
  const view = new DataView(arrayBuffer);
36
59
  const {header, headerEndOffset} = parseHeader(view);
37
60
 
38
61
  const numpyType = header.descr;
39
62
  const ArrayType = DTYPES[numpyType.slice(1, 3)];
40
63
  if (!ArrayType) {
41
- // eslint-disable-next-line no-console, no-undef
42
- console.warn(`Decoding of npy dtype not implemented: ${numpyType}`);
43
- return null;
64
+ throw new Error(`Unimplemented type ${numpyType}`);
44
65
  }
45
66
 
46
67
  const nArrayElements = header.shape?.reduce((a: number, b: number): number => a * b);
47
68
  const arrayByteLength = nArrayElements * ArrayType.BYTES_PER_ELEMENT;
48
69
 
70
+ if (arrayBuffer.byteLength < headerEndOffset + arrayByteLength) {
71
+ throw new Error('Buffer overflow');
72
+ }
49
73
  const data = new ArrayType(arrayBuffer.slice(headerEndOffset, headerEndOffset + arrayByteLength));
50
74
 
51
75
  // Swap endianness if needed
52
76
  if ((numpyType[0] === '>' && LITTLE_ENDIAN_OS) || (numpyType[0] === '<' && !LITTLE_ENDIAN_OS)) {
53
- // eslint-disable-next-line no-console, no-undef
54
- console.warn('Data is wrong endianness, byte swapping not yet implemented.');
77
+ throw new Error('Incorrect endianness');
55
78
  }
56
79
 
57
80
  return {
@@ -71,12 +94,12 @@ function parseHeader(view: DataView): {header: NumpyHeader; headerEndOffset: num
71
94
  // const minorVersion = view.getUint8(7);
72
95
 
73
96
  let offset = 8;
74
- let headerLength;
97
+ let headerLength: number;
75
98
  if (majorVersion >= 2) {
76
- headerLength = view.getUint32(8, true);
99
+ headerLength = view.getUint32(offset, true);
77
100
  offset += 4;
78
101
  } else {
79
- headerLength = view.getUint16(8, true);
102
+ headerLength = view.getUint16(offset, true);
80
103
  offset += 2;
81
104
  }
82
105
 
@@ -1,8 +1,9 @@
1
- import {TextureLevel} from '../../types';
2
1
  /* eslint-disable camelcase */
3
2
  // Forked from PicoGL: https://github.com/tsherif/picogl.js/blob/master/examples/utils/utils.js
4
3
  // Copyright (c) 2017 Tarek Sherif, The MIT License (MIT)
5
- import {GL} from '../gl-constants';
4
+
5
+ import type {TextureLevel} from '@loaders.gl/schema';
6
+ import {GL_EXTENSIONS_CONSTANTS} from '../gl-extensions';
6
7
  import {extractMipmapImages} from '../utils/extract-mipmap-images';
7
8
 
8
9
  const PVR_CONSTANTS: Record<string, number> = {
@@ -20,33 +21,75 @@ const PVR_CONSTANTS: Record<string, number> = {
20
21
  };
21
22
 
22
23
  const PVR_PIXEL_FORMATS: Record<number, number[]> = {
23
- 0: [GL.COMPRESSED_RGB_PVRTC_2BPPV1_IMG],
24
- 1: [GL.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG],
25
- 2: [GL.COMPRESSED_RGB_PVRTC_4BPPV1_IMG],
26
- 3: [GL.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG],
27
- 6: [GL.COMPRESSED_RGB_ETC1_WEBGL],
28
- 7: [GL.COMPRESSED_RGB_S3TC_DXT1_EXT],
29
- 9: [GL.COMPRESSED_RGBA_S3TC_DXT3_EXT],
30
- 11: [GL.COMPRESSED_RGBA_S3TC_DXT5_EXT],
31
- 22: [GL.COMPRESSED_RGB8_ETC2],
32
- 23: [GL.COMPRESSED_RGBA8_ETC2_EAC],
33
- 24: [GL.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2],
34
- 25: [GL.COMPRESSED_R11_EAC],
35
- 26: [GL.COMPRESSED_RG11_EAC],
36
- 27: [GL.COMPRESSED_RGBA_ASTC_4X4_KHR, GL.COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR],
37
- 28: [GL.COMPRESSED_RGBA_ASTC_5X4_KHR, GL.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR],
38
- 29: [GL.COMPRESSED_RGBA_ASTC_5X5_KHR, GL.COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR],
39
- 30: [GL.COMPRESSED_RGBA_ASTC_6X5_KHR, GL.COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR],
40
- 31: [GL.COMPRESSED_RGBA_ASTC_6X6_KHR, GL.COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR],
41
- 32: [GL.COMPRESSED_RGBA_ASTC_8X5_KHR, GL.COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR],
42
- 33: [GL.COMPRESSED_RGBA_ASTC_8X6_KHR, GL.COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR],
43
- 34: [GL.COMPRESSED_RGBA_ASTC_8X8_KHR, GL.COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR],
44
- 35: [GL.COMPRESSED_RGBA_ASTC_10X5_KHR, GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR],
45
- 36: [GL.COMPRESSED_RGBA_ASTC_10X6_KHR, GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR],
46
- 37: [GL.COMPRESSED_RGBA_ASTC_10X8_KHR, GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR],
47
- 38: [GL.COMPRESSED_RGBA_ASTC_10X10_KHR, GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR],
48
- 39: [GL.COMPRESSED_RGBA_ASTC_12X10_KHR, GL.COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR],
49
- 40: [GL.COMPRESSED_RGBA_ASTC_12X12_KHR, GL.COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR]
24
+ 0: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_2BPPV1_IMG],
25
+ 1: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG],
26
+ 2: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_4BPPV1_IMG],
27
+ 3: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG],
28
+ 6: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ETC1_WEBGL],
29
+ 7: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT],
30
+ 9: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT],
31
+ 11: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT],
32
+ 22: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_ETC2],
33
+ 23: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA8_ETC2_EAC],
34
+ 24: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2],
35
+ 25: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_R11_EAC],
36
+ 26: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RG11_EAC],
37
+ 27: [
38
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR,
39
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR
40
+ ],
41
+ 28: [
42
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X4_KHR,
43
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR
44
+ ],
45
+ 29: [
46
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X5_KHR,
47
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR
48
+ ],
49
+ 30: [
50
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X5_KHR,
51
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR
52
+ ],
53
+ 31: [
54
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X6_KHR,
55
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR
56
+ ],
57
+ 32: [
58
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X5_KHR,
59
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR
60
+ ],
61
+ 33: [
62
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X6_KHR,
63
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR
64
+ ],
65
+ 34: [
66
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X8_KHR,
67
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR
68
+ ],
69
+ 35: [
70
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X5_KHR,
71
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR
72
+ ],
73
+ 36: [
74
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X6_KHR,
75
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR
76
+ ],
77
+ 37: [
78
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X8_KHR,
79
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR
80
+ ],
81
+ 38: [
82
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X10_KHR,
83
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR
84
+ ],
85
+ 39: [
86
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X10_KHR,
87
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR
88
+ ],
89
+ 40: [
90
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X12_KHR,
91
+ GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR
92
+ ]
50
93
  };
51
94
 
52
95
  const PVR_SIZE_FUNCTIONS: Record<number, (width: number, height: number) => number> = {
@@ -1,4 +1,12 @@
1
- import {CompressedTextureExtractOptions, TextureLevel} from '../../types';
1
+ import type {TextureLevel} from '@loaders.gl/schema';
2
+
3
+ export type CompressedTextureExtractOptions = {
4
+ mipMapLevels: number;
5
+ width: number;
6
+ height: number;
7
+ sizeFunction: Function;
8
+ internalFormat: number;
9
+ };
2
10
 
3
11
  /**
4
12
  * Extract mipmap images from compressed texture buffer