@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.
- package/dist/basis-loader.d.ts +11 -0
- package/dist/basis-loader.d.ts.map +1 -0
- package/dist/basis-loader.js +36 -24
- package/dist/basis-nodejs-worker.js +66490 -0
- package/dist/basis-worker.js +165 -76
- package/dist/bundle.d.ts +2 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/bundle.js +2 -2
- package/dist/compressed-texture-loader.d.ts +49 -0
- package/dist/compressed-texture-loader.d.ts.map +1 -0
- package/dist/compressed-texture-loader.js +59 -36
- package/dist/compressed-texture-worker.js +269 -138
- package/dist/compressed-texture-writer.d.ts +17 -0
- package/dist/compressed-texture-writer.d.ts.map +1 -0
- package/dist/compressed-texture-writer.js +33 -21
- package/dist/crunch-loader.d.ts +21 -0
- package/dist/crunch-loader.d.ts.map +1 -0
- package/dist/crunch-loader.js +23 -16
- package/dist/crunch-worker.js +106 -41
- package/dist/dist.min.js +2195 -0
- package/dist/es5/basis-loader.js +38 -0
- package/dist/es5/basis-loader.js.map +1 -0
- package/dist/es5/bundle.js +6 -0
- package/dist/es5/bundle.js.map +1 -0
- package/dist/es5/compressed-texture-loader.js +76 -0
- package/dist/es5/compressed-texture-loader.js.map +1 -0
- package/dist/es5/compressed-texture-writer.js +28 -0
- package/dist/es5/compressed-texture-writer.js.map +1 -0
- package/dist/es5/crunch-loader.js +26 -0
- package/dist/es5/crunch-loader.js.map +1 -0
- package/dist/es5/index.js +132 -0
- package/dist/es5/index.js.map +1 -0
- package/dist/es5/ktx2-basis-writer-nodejs.js +14 -0
- package/dist/es5/ktx2-basis-writer-nodejs.js.map +1 -0
- package/dist/es5/ktx2-basis-writer.js +26 -0
- package/dist/es5/ktx2-basis-writer.js.map +1 -0
- package/dist/es5/lib/encoders/encode-ktx.js +12 -0
- package/dist/es5/lib/encoders/encode-ktx.js.map +1 -0
- package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js +74 -0
- package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js.map +1 -0
- package/dist/es5/lib/encoders/encode-texture.js +38 -0
- package/dist/es5/lib/encoders/encode-texture.js.map +1 -0
- package/dist/es5/lib/gl-extensions.js +68 -0
- package/dist/es5/lib/gl-extensions.js.map +1 -0
- package/dist/es5/lib/parsers/basis-module-loader.js +194 -0
- package/dist/es5/lib/parsers/basis-module-loader.js.map +1 -0
- package/dist/es5/lib/parsers/crunch-module-loader.js +67 -0
- package/dist/es5/lib/parsers/crunch-module-loader.js.map +1 -0
- package/dist/es5/lib/parsers/parse-basis.js +270 -0
- package/dist/es5/lib/parsers/parse-basis.js.map +1 -0
- package/dist/es5/lib/parsers/parse-compressed-texture.js +22 -0
- package/dist/es5/lib/parsers/parse-compressed-texture.js.map +1 -0
- package/dist/es5/lib/parsers/parse-crunch.js +100 -0
- package/dist/es5/lib/parsers/parse-crunch.js.map +1 -0
- package/dist/es5/lib/parsers/parse-dds.js +84 -0
- package/dist/es5/lib/parsers/parse-dds.js.map +1 -0
- package/dist/es5/lib/parsers/parse-ktx.js +34 -0
- package/dist/es5/lib/parsers/parse-ktx.js.map +1 -0
- package/dist/es5/lib/parsers/parse-npy.js +70 -0
- package/dist/es5/lib/parsers/parse-npy.js.map +1 -0
- package/dist/es5/lib/parsers/parse-pvr.js +161 -0
- package/dist/es5/lib/parsers/parse-pvr.js.map +1 -0
- package/dist/es5/lib/texture-api/async-deep-map.js +156 -0
- package/dist/es5/lib/texture-api/async-deep-map.js.map +1 -0
- package/dist/es5/lib/texture-api/deep-load.js +63 -0
- package/dist/es5/lib/texture-api/deep-load.js.map +1 -0
- package/dist/es5/lib/texture-api/generate-url.js +20 -0
- package/dist/es5/lib/texture-api/generate-url.js.map +1 -0
- package/dist/es5/lib/texture-api/load-image-array.js +75 -0
- package/dist/es5/lib/texture-api/load-image-array.js.map +1 -0
- package/dist/es5/lib/texture-api/load-image-cube.js +136 -0
- package/dist/es5/lib/texture-api/load-image-cube.js.map +1 -0
- package/dist/es5/lib/texture-api/load-image.js +129 -0
- package/dist/es5/lib/texture-api/load-image.js.map +1 -0
- package/dist/es5/lib/texture-api/texture-api-types.js +2 -0
- package/dist/es5/lib/texture-api/texture-api-types.js.map +1 -0
- package/dist/es5/lib/utils/extract-mipmap-images.js +41 -0
- package/dist/es5/lib/utils/extract-mipmap-images.js.map +1 -0
- package/dist/es5/lib/utils/ktx-format-helper.js +79 -0
- package/dist/es5/lib/utils/ktx-format-helper.js.map +1 -0
- package/dist/es5/lib/utils/texture-formats.js +54 -0
- package/dist/es5/lib/utils/texture-formats.js.map +1 -0
- package/dist/es5/lib/utils/version.js +9 -0
- package/dist/es5/lib/utils/version.js.map +1 -0
- package/dist/es5/libs/README.md +9 -0
- package/dist/es5/libs/basis_encoder.js +21 -0
- package/dist/es5/libs/basis_encoder.wasm +0 -0
- package/dist/es5/libs/basis_transcoder.js +22 -0
- package/dist/es5/libs/basis_transcoder.wasm +0 -0
- package/dist/es5/libs/crunch.js +136 -0
- package/dist/es5/npy-loader.js +51 -0
- package/dist/es5/npy-loader.js.map +1 -0
- package/dist/es5/types.js +2 -0
- package/dist/es5/types.js.map +1 -0
- package/dist/es5/workers/basis-nodejs-worker.js +7 -0
- package/dist/es5/workers/basis-nodejs-worker.js.map +1 -0
- package/dist/es5/workers/basis-worker.js +6 -0
- package/dist/es5/workers/basis-worker.js.map +1 -0
- package/dist/es5/workers/compressed-texture-worker.js +6 -0
- package/dist/es5/workers/compressed-texture-worker.js.map +1 -0
- package/dist/es5/workers/crunch-worker.js +19 -0
- package/dist/es5/workers/crunch-worker.js.map +1 -0
- package/dist/es5/workers/ktx2-basis-writer-nodejs-worker.js +53 -0
- package/dist/es5/workers/ktx2-basis-writer-nodejs-worker.js.map +1 -0
- package/dist/es5/workers/ktx2-basis-writer-worker.js +53 -0
- package/dist/es5/workers/ktx2-basis-writer-worker.js.map +1 -0
- package/dist/es5/workers/npy-worker.js +6 -0
- package/dist/es5/workers/npy-worker.js.map +1 -0
- package/dist/esm/basis-loader.js +27 -0
- package/dist/esm/basis-loader.js.map +1 -0
- package/dist/esm/bundle.js +4 -0
- package/dist/esm/bundle.js.map +1 -0
- package/dist/esm/compressed-texture-loader.js +41 -0
- package/dist/esm/compressed-texture-loader.js.map +1 -0
- package/dist/esm/compressed-texture-writer.js +21 -0
- package/dist/esm/compressed-texture-writer.js.map +1 -0
- package/dist/esm/crunch-loader.js +18 -0
- package/dist/esm/crunch-loader.js.map +1 -0
- package/dist/esm/index.js +30 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/ktx2-basis-writer-nodejs.js +3 -0
- package/dist/esm/ktx2-basis-writer-nodejs.js.map +1 -0
- package/dist/{ktx2-basis-universal-texture-writer.js → esm/ktx2-basis-writer.js} +4 -4
- package/dist/esm/ktx2-basis-writer.js.map +1 -0
- package/dist/esm/lib/encoders/encode-ktx.js +6 -0
- package/dist/esm/lib/encoders/encode-ktx.js.map +1 -0
- package/dist/esm/lib/encoders/encode-ktx2-basis-texture.js +35 -0
- package/dist/esm/lib/encoders/encode-ktx2-basis-texture.js.map +1 -0
- package/dist/esm/lib/encoders/encode-texture.js +12 -0
- package/dist/esm/lib/encoders/encode-texture.js.map +1 -0
- package/dist/{lib/gl-constants.js → esm/lib/gl-extensions.js} +2 -2
- package/dist/esm/lib/gl-extensions.js.map +1 -0
- package/dist/esm/lib/parsers/basis-module-loader.js +77 -0
- package/dist/esm/lib/parsers/basis-module-loader.js.map +1 -0
- package/dist/esm/lib/parsers/crunch-module-loader.js +19 -0
- package/dist/esm/lib/parsers/crunch-module-loader.js.map +1 -0
- package/dist/esm/lib/parsers/parse-basis.js +231 -0
- package/dist/esm/lib/parsers/parse-basis.js.map +1 -0
- package/dist/esm/lib/parsers/parse-compressed-texture.js +16 -0
- package/dist/esm/lib/parsers/parse-compressed-texture.js.map +1 -0
- package/dist/esm/lib/parsers/parse-crunch.js +75 -0
- package/dist/esm/lib/parsers/parse-crunch.js.map +1 -0
- package/dist/esm/lib/parsers/parse-dds.js +75 -0
- package/dist/esm/lib/parsers/parse-dds.js.map +1 -0
- package/dist/esm/lib/parsers/parse-ktx.js +25 -0
- package/dist/esm/lib/parsers/parse-ktx.js.map +1 -0
- package/dist/esm/lib/parsers/parse-npy.js +63 -0
- package/dist/esm/lib/parsers/parse-npy.js.map +1 -0
- package/dist/esm/lib/parsers/parse-pvr.js +154 -0
- package/dist/esm/lib/parsers/parse-pvr.js.map +1 -0
- package/dist/esm/lib/texture-api/async-deep-map.js +34 -0
- package/dist/esm/lib/texture-api/async-deep-map.js.map +1 -0
- package/dist/esm/lib/texture-api/deep-load.js +10 -0
- package/dist/esm/lib/texture-api/deep-load.js.map +1 -0
- package/dist/esm/lib/texture-api/generate-url.js +13 -0
- package/dist/esm/lib/texture-api/generate-url.js.map +1 -0
- package/dist/esm/lib/texture-api/load-image-array.js +20 -0
- package/dist/esm/lib/texture-api/load-image-array.js.map +1 -0
- package/dist/esm/lib/texture-api/load-image-cube.js +63 -0
- package/dist/esm/lib/texture-api/load-image-cube.js.map +1 -0
- package/dist/esm/lib/texture-api/load-image.js +46 -0
- package/dist/esm/lib/texture-api/load-image.js.map +1 -0
- package/dist/esm/lib/texture-api/texture-api-types.js +2 -0
- package/dist/esm/lib/texture-api/texture-api-types.js.map +1 -0
- package/dist/esm/lib/utils/extract-mipmap-images.js +35 -0
- package/dist/esm/lib/utils/extract-mipmap-images.js.map +1 -0
- package/dist/esm/lib/utils/ktx-format-helper.js +73 -0
- package/dist/esm/lib/utils/ktx-format-helper.js.map +1 -0
- package/dist/esm/lib/utils/texture-formats.js +36 -0
- package/dist/esm/lib/utils/texture-formats.js.map +1 -0
- package/dist/esm/lib/utils/version.js +2 -0
- package/dist/esm/lib/utils/version.js.map +1 -0
- package/dist/esm/libs/README.md +9 -0
- package/dist/esm/libs/basis_encoder.js +21 -0
- package/dist/esm/libs/basis_encoder.wasm +0 -0
- package/dist/esm/libs/basis_transcoder.js +22 -0
- package/dist/esm/libs/basis_transcoder.wasm +0 -0
- package/dist/esm/libs/crunch.js +136 -0
- package/dist/esm/npy-loader.js +22 -0
- package/dist/esm/npy-loader.js.map +1 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/workers/basis-nodejs-worker.js +5 -0
- package/dist/esm/workers/basis-nodejs-worker.js.map +1 -0
- package/dist/esm/workers/basis-worker.js +4 -0
- package/dist/esm/workers/basis-worker.js.map +1 -0
- package/dist/esm/workers/compressed-texture-worker.js +4 -0
- package/dist/esm/workers/compressed-texture-worker.js.map +1 -0
- package/dist/esm/workers/crunch-worker.js +9 -0
- package/dist/esm/workers/crunch-worker.js.map +1 -0
- package/dist/esm/workers/ktx2-basis-writer-nodejs-worker.js +31 -0
- package/dist/esm/workers/ktx2-basis-writer-nodejs-worker.js.map +1 -0
- package/dist/esm/workers/ktx2-basis-writer-worker.js +31 -0
- package/dist/esm/workers/ktx2-basis-writer-worker.js.map +1 -0
- package/dist/esm/workers/npy-worker.js +4 -0
- package/dist/esm/workers/npy-worker.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +53 -14
- package/dist/ktx2-basis-writer-nodejs-worker.js +65949 -0
- package/dist/ktx2-basis-writer-nodejs.d.ts +3 -0
- package/dist/ktx2-basis-writer-nodejs.d.ts.map +1 -0
- package/dist/ktx2-basis-writer-nodejs.js +7 -0
- package/dist/ktx2-basis-writer-worker.js +343 -0
- package/dist/ktx2-basis-writer.d.ts +16 -0
- package/dist/ktx2-basis-writer.d.ts.map +1 -0
- package/dist/ktx2-basis-writer.js +26 -0
- package/dist/lib/encoders/encode-ktx.d.ts +2 -0
- package/dist/lib/encoders/encode-ktx.d.ts.map +1 -0
- package/dist/lib/encoders/encode-ktx.js +9 -5
- package/dist/lib/encoders/encode-ktx2-basis-texture.d.ts +10 -0
- package/dist/lib/encoders/encode-ktx2-basis-texture.d.ts.map +1 -0
- package/dist/lib/encoders/encode-ktx2-basis-texture.js +40 -34
- package/dist/lib/encoders/encode-texture.d.ts +3 -0
- package/dist/lib/encoders/encode-texture.d.ts.map +1 -0
- package/dist/lib/encoders/encode-texture.js +26 -14
- package/dist/lib/gl-extensions.d.ts +61 -0
- package/dist/lib/gl-extensions.d.ts.map +1 -0
- package/dist/lib/gl-extensions.js +72 -0
- package/dist/lib/parsers/basis-module-loader.d.ts +13 -0
- package/dist/lib/parsers/basis-module-loader.d.ts.map +1 -0
- package/dist/lib/parsers/basis-module-loader.js +100 -76
- package/dist/lib/parsers/crunch-module-loader.d.ts +7 -0
- package/dist/lib/parsers/crunch-module-loader.d.ts.map +1 -0
- package/dist/lib/parsers/crunch-module-loader.js +30 -18
- package/dist/lib/parsers/parse-basis.d.ts +18 -0
- package/dist/lib/parsers/parse-basis.d.ts.map +1 -0
- package/dist/lib/parsers/parse-basis.js +225 -240
- package/dist/lib/parsers/parse-compressed-texture.d.ts +8 -0
- package/dist/lib/parsers/parse-compressed-texture.d.ts.map +1 -0
- package/dist/lib/parsers/parse-compressed-texture.js +25 -18
- package/dist/lib/parsers/parse-crunch.d.ts +9 -0
- package/dist/lib/parsers/parse-crunch.d.ts.map +1 -0
- package/dist/lib/parsers/parse-crunch.js +97 -82
- package/dist/lib/parsers/parse-dds.d.ts +28 -0
- package/dist/lib/parsers/parse-dds.d.ts.map +1 -0
- package/dist/lib/parsers/parse-dds.js +93 -63
- package/dist/lib/parsers/parse-ktx.d.ts +4 -0
- package/dist/lib/parsers/parse-ktx.d.ts.map +1 -0
- package/dist/lib/parsers/parse-ktx.js +44 -23
- package/dist/lib/parsers/parse-npy.d.ts +15 -0
- package/dist/lib/parsers/parse-npy.d.ts.map +1 -0
- package/dist/lib/parsers/parse-npy.js +76 -71
- package/dist/lib/parsers/parse-pvr.d.ts +15 -0
- package/dist/lib/parsers/parse-pvr.d.ts.map +1 -0
- package/dist/lib/parsers/parse-pvr.js +212 -133
- package/dist/lib/texture-api/async-deep-map.d.ts +5 -0
- package/dist/lib/texture-api/async-deep-map.d.ts.map +1 -0
- package/dist/lib/texture-api/async-deep-map.js +35 -33
- package/dist/lib/texture-api/deep-load.d.ts +5 -0
- package/dist/lib/texture-api/deep-load.d.ts.map +1 -0
- package/dist/lib/texture-api/deep-load.js +14 -8
- package/dist/lib/texture-api/generate-url.d.ts +3 -0
- package/dist/lib/texture-api/generate-url.d.ts.map +1 -0
- package/dist/lib/texture-api/generate-url.js +16 -13
- package/dist/lib/texture-api/load-image-array.d.ts +4 -0
- package/dist/lib/texture-api/load-image-array.d.ts.map +1 -0
- package/dist/lib/texture-api/load-image-array.js +19 -18
- package/dist/lib/texture-api/load-image-cube.d.ts +12 -0
- package/dist/lib/texture-api/load-image-cube.d.ts.map +1 -0
- package/dist/lib/texture-api/load-image-cube.js +39 -55
- package/dist/lib/texture-api/load-image.d.ts +8 -0
- package/dist/lib/texture-api/load-image.d.ts.map +1 -0
- package/dist/lib/texture-api/load-image.js +38 -43
- package/dist/lib/texture-api/texture-api-types.d.ts +10 -0
- package/dist/lib/texture-api/texture-api-types.d.ts.map +1 -0
- package/dist/lib/texture-api/texture-api-types.js +3 -2
- package/dist/lib/utils/extract-mipmap-images.d.ts +20 -0
- package/dist/lib/utils/extract-mipmap-images.d.ts.map +1 -0
- package/dist/lib/utils/extract-mipmap-images.js +45 -36
- package/dist/lib/utils/ktx-format-helper.d.ts +9 -0
- package/dist/lib/utils/ktx-format-helper.d.ts.map +1 -0
- package/dist/lib/utils/ktx-format-helper.js +122 -70
- package/dist/lib/utils/texture-formats.d.ts +8 -0
- package/dist/lib/utils/texture-formats.d.ts.map +1 -0
- package/dist/lib/utils/texture-formats.js +42 -30
- package/dist/lib/utils/version.d.ts +2 -0
- package/dist/lib/utils/version.d.ts.map +1 -0
- package/dist/lib/utils/version.js +8 -2
- package/dist/libs/README.md +2 -2
- package/dist/libs/basis_encoder.js +19 -20
- package/dist/libs/basis_encoder.wasm +0 -0
- package/dist/libs/basis_transcoder.js +13 -12
- package/dist/libs/basis_transcoder.wasm +0 -0
- package/dist/libs/crunch.js +1 -0
- package/dist/npy-loader.d.ts +14 -0
- package/dist/npy-loader.d.ts.map +1 -0
- package/dist/npy-loader.js +28 -20
- package/dist/npy-worker.js +60 -31
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +1 -2
- package/dist/workers/basis-nodejs-worker.d.ts +2 -0
- package/dist/workers/basis-nodejs-worker.d.ts.map +1 -0
- package/dist/workers/basis-nodejs-worker.js +6 -0
- package/dist/workers/basis-worker.d.ts +2 -0
- package/dist/workers/basis-worker.d.ts.map +1 -0
- package/dist/workers/basis-worker.js +5 -4
- package/dist/workers/compressed-texture-worker.d.ts +2 -0
- package/dist/workers/compressed-texture-worker.d.ts.map +1 -0
- package/dist/workers/compressed-texture-worker.js +5 -4
- package/dist/workers/crunch-worker.d.ts +21 -0
- package/dist/workers/crunch-worker.d.ts.map +1 -0
- package/dist/workers/crunch-worker.js +13 -7
- package/dist/workers/ktx2-basis-writer-nodejs-worker.d.ts +2 -0
- package/dist/workers/ktx2-basis-writer-nodejs-worker.d.ts.map +1 -0
- package/dist/workers/ktx2-basis-writer-nodejs-worker.js +26 -0
- package/dist/workers/ktx2-basis-writer-worker.d.ts +2 -0
- package/dist/workers/ktx2-basis-writer-worker.d.ts.map +1 -0
- package/dist/workers/ktx2-basis-writer-worker.js +26 -0
- package/dist/workers/npy-worker.d.ts +2 -0
- package/dist/workers/npy-worker.d.ts.map +1 -0
- package/dist/workers/npy-worker.js +5 -4
- package/package.json +21 -14
- package/src/basis-loader.ts +8 -8
- package/src/compressed-texture-loader.ts +1 -1
- package/src/compressed-texture-writer.ts +21 -3
- package/src/index.ts +21 -3
- package/src/ktx2-basis-writer-nodejs.ts +4 -0
- package/src/{ktx2-basis-universal-texture-writer.ts → ktx2-basis-writer.ts} +14 -3
- package/src/lib/encoders/encode-ktx2-basis-texture.ts +2 -2
- package/src/lib/encoders/encode-texture.ts +7 -6
- package/src/lib/{gl-constants.ts → gl-extensions.ts} +1 -1
- package/src/lib/parsers/crunch-module-loader.ts +1 -1
- package/src/lib/parsers/{parse-basis.js → parse-basis.ts} +101 -45
- package/src/lib/parsers/parse-compressed-texture.ts +1 -1
- package/src/lib/parsers/parse-crunch.ts +16 -15
- package/src/lib/parsers/parse-dds.ts +8 -8
- package/src/lib/parsers/parse-ktx.ts +2 -1
- package/src/lib/parsers/parse-npy.ts +53 -30
- package/src/lib/parsers/parse-pvr.ts +72 -29
- package/src/lib/utils/extract-mipmap-images.ts +9 -1
- package/src/lib/utils/ktx-format-helper.ts +67 -67
- package/src/lib/utils/texture-formats.ts +1 -1
- package/src/libs/README.md +2 -2
- package/src/libs/basis_encoder.js +19 -20
- package/src/libs/basis_encoder.wasm +0 -0
- package/src/libs/basis_transcoder.js +13 -12
- package/src/libs/basis_transcoder.wasm +0 -0
- package/src/libs/crunch.js +1 -0
- package/src/npy-loader.ts +7 -7
- package/src/types.ts +0 -30
- package/src/workers/basis-nodejs-worker.ts +5 -0
- package/src/workers/ktx2-basis-writer-nodejs-worker.ts +25 -0
- package/src/workers/ktx2-basis-writer-worker.ts +25 -0
- package/dist/basis-loader.js.map +0 -1
- package/dist/bundle.js.map +0 -1
- package/dist/compressed-texture-loader.js.map +0 -1
- package/dist/compressed-texture-writer.js.map +0 -1
- package/dist/crunch-loader.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/ktx2-basis-universal-texture-writer.js.map +0 -1
- package/dist/lib/encoders/encode-ktx.js.map +0 -1
- package/dist/lib/encoders/encode-ktx2-basis-texture.js.map +0 -1
- package/dist/lib/encoders/encode-texture.js.map +0 -1
- package/dist/lib/gl-constants.js.map +0 -1
- package/dist/lib/parsers/basis-module-loader.js.map +0 -1
- package/dist/lib/parsers/crunch-module-loader.js.map +0 -1
- package/dist/lib/parsers/parse-basis.js.map +0 -1
- package/dist/lib/parsers/parse-compressed-texture.js.map +0 -1
- package/dist/lib/parsers/parse-crunch.js.map +0 -1
- package/dist/lib/parsers/parse-dds.js.map +0 -1
- package/dist/lib/parsers/parse-ktx.js.map +0 -1
- package/dist/lib/parsers/parse-npy.js.map +0 -1
- package/dist/lib/parsers/parse-pvr.js.map +0 -1
- package/dist/lib/texture-api/async-deep-map.js.map +0 -1
- package/dist/lib/texture-api/deep-load.js.map +0 -1
- package/dist/lib/texture-api/generate-url.js.map +0 -1
- package/dist/lib/texture-api/load-image-array.js.map +0 -1
- package/dist/lib/texture-api/load-image-cube.js.map +0 -1
- package/dist/lib/texture-api/load-image.js.map +0 -1
- package/dist/lib/texture-api/texture-api-types.js.map +0 -1
- package/dist/lib/utils/extract-mipmap-images.js.map +0 -1
- package/dist/lib/utils/ktx-format-helper.js.map +0 -1
- package/dist/lib/utils/texture-formats.js.map +0 -1
- package/dist/lib/utils/version.js.map +0 -1
- package/dist/npy-loader.js.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/workers/basis-worker.js.map +0 -1
- package/dist/workers/compressed-texture-worker.js.map +0 -1
- package/dist/workers/crunch-worker.js.map +0 -1
- package/dist/workers/npy-worker.js.map +0 -1
- package/src/lib/parsers/parse-ktx.js +0 -45
- 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(
|
|
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
|
}
|
|
@@ -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.
|
|
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 {
|
|
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
|
-
|
|
7
|
-
etc1
|
|
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: {
|
|
10
|
-
|
|
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': {
|
|
16
|
-
|
|
17
|
-
|
|
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
|
|
29
|
-
* @param
|
|
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
|
|
61
|
-
* @param
|
|
62
|
-
* @param
|
|
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
|
-
|
|
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
|
|
97
|
-
* @param
|
|
98
|
-
* @param
|
|
99
|
-
* @param
|
|
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
|
-
|
|
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
|
|
136
|
-
* @param
|
|
137
|
-
* @param
|
|
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
|
-
|
|
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
|
|
165
|
-
* @param
|
|
166
|
-
* @param
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
215
|
-
* @param
|
|
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,6 +1,6 @@
|
|
|
1
|
-
import type {TextureLevel} from '
|
|
1
|
+
import type {TextureLevel} from '@loaders.gl/schema';
|
|
2
2
|
import {loadCrunchModule} from './crunch-module-loader';
|
|
3
|
-
import {
|
|
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
|
-
|
|
21
|
-
const DXT_FORMAT_MAP = {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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 '
|
|
1
|
+
import type {TextureLevel} from '@loaders.gl/schema';
|
|
2
2
|
import {assert} from '@loaders.gl/loader-utils';
|
|
3
|
-
import {
|
|
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:
|
|
23
|
-
DXT3:
|
|
24
|
-
DXT5:
|
|
25
|
-
'ATC ':
|
|
26
|
-
ATCA:
|
|
27
|
-
ATCI:
|
|
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
|
-
|
|
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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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?:
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
99
|
+
headerLength = view.getUint32(offset, true);
|
|
77
100
|
offset += 4;
|
|
78
101
|
} else {
|
|
79
|
-
headerLength = view.getUint16(
|
|
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
|
-
|
|
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: [
|
|
24
|
-
1: [
|
|
25
|
-
2: [
|
|
26
|
-
3: [
|
|
27
|
-
6: [
|
|
28
|
-
7: [
|
|
29
|
-
9: [
|
|
30
|
-
11: [
|
|
31
|
-
22: [
|
|
32
|
-
23: [
|
|
33
|
-
24: [
|
|
34
|
-
25: [
|
|
35
|
-
26: [
|
|
36
|
-
27: [
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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 {
|
|
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
|