@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
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.parseCrunch = parseCrunch;
|
|
8
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
+
var _crunchModuleLoader = require("./crunch-module-loader");
|
|
12
|
+
var _glExtensions = require("../gl-extensions");
|
|
13
|
+
var _loaderUtils = require("@loaders.gl/loader-utils");
|
|
14
|
+
var _parseDds = require("./parse-dds");
|
|
15
|
+
var _extractMipmapImages = require("../utils/extract-mipmap-images");
|
|
16
|
+
var _DXT_FORMAT_MAP;
|
|
17
|
+
var CRN_FORMAT = {
|
|
18
|
+
cCRNFmtInvalid: -1,
|
|
19
|
+
cCRNFmtDXT1: 0,
|
|
20
|
+
cCRNFmtDXT3: 1,
|
|
21
|
+
cCRNFmtDXT5: 2
|
|
22
|
+
};
|
|
23
|
+
var DXT_FORMAT_MAP = (_DXT_FORMAT_MAP = {}, (0, _defineProperty2.default)(_DXT_FORMAT_MAP, CRN_FORMAT.cCRNFmtDXT1, {
|
|
24
|
+
pixelFormat: _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT,
|
|
25
|
+
sizeFunction: _parseDds.getDxt1LevelSize
|
|
26
|
+
}), (0, _defineProperty2.default)(_DXT_FORMAT_MAP, CRN_FORMAT.cCRNFmtDXT3, {
|
|
27
|
+
pixelFormat: _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT,
|
|
28
|
+
sizeFunction: _parseDds.getDxtXLevelSize
|
|
29
|
+
}), (0, _defineProperty2.default)(_DXT_FORMAT_MAP, CRN_FORMAT.cCRNFmtDXT5, {
|
|
30
|
+
pixelFormat: _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT,
|
|
31
|
+
sizeFunction: _parseDds.getDxtXLevelSize
|
|
32
|
+
}), _DXT_FORMAT_MAP);
|
|
33
|
+
var cachedDstSize = 0;
|
|
34
|
+
var dst;
|
|
35
|
+
function parseCrunch(_x, _x2) {
|
|
36
|
+
return _parseCrunch.apply(this, arguments);
|
|
37
|
+
}
|
|
38
|
+
function _parseCrunch() {
|
|
39
|
+
_parseCrunch = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(data, options) {
|
|
40
|
+
var crunchModule, srcSize, bytes, src, format, mipMapLevels, width, height, sizeFunction, dstSize, i, image;
|
|
41
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
42
|
+
while (1) switch (_context.prev = _context.next) {
|
|
43
|
+
case 0:
|
|
44
|
+
_context.next = 2;
|
|
45
|
+
return (0, _crunchModuleLoader.loadCrunchModule)(options);
|
|
46
|
+
case 2:
|
|
47
|
+
crunchModule = _context.sent;
|
|
48
|
+
srcSize = data.byteLength;
|
|
49
|
+
bytes = new Uint8Array(data);
|
|
50
|
+
src = crunchModule._malloc(srcSize);
|
|
51
|
+
arrayBufferCopy(bytes, crunchModule.HEAPU8, src, srcSize);
|
|
52
|
+
format = crunchModule._crn_get_dxt_format(src, srcSize);
|
|
53
|
+
(0, _loaderUtils.assert)(Boolean(DXT_FORMAT_MAP[format]), 'Unsupported format');
|
|
54
|
+
mipMapLevels = crunchModule._crn_get_levels(src, srcSize);
|
|
55
|
+
width = crunchModule._crn_get_width(src, srcSize);
|
|
56
|
+
height = crunchModule._crn_get_height(src, srcSize);
|
|
57
|
+
sizeFunction = DXT_FORMAT_MAP[format].sizeFunction;
|
|
58
|
+
dstSize = 0;
|
|
59
|
+
for (i = 0; i < mipMapLevels; ++i) {
|
|
60
|
+
dstSize += sizeFunction(width >> i, height >> i);
|
|
61
|
+
}
|
|
62
|
+
if (cachedDstSize < dstSize) {
|
|
63
|
+
if (dst) {
|
|
64
|
+
crunchModule._free(dst);
|
|
65
|
+
}
|
|
66
|
+
dst = crunchModule._malloc(dstSize);
|
|
67
|
+
cachedDstSize = dstSize;
|
|
68
|
+
}
|
|
69
|
+
crunchModule._crn_decompress(src, srcSize, dst, dstSize, 0, mipMapLevels);
|
|
70
|
+
crunchModule._free(src);
|
|
71
|
+
image = new Uint8Array(crunchModule.HEAPU8.buffer, dst, dstSize).slice();
|
|
72
|
+
return _context.abrupt("return", (0, _extractMipmapImages.extractMipmapImages)(image, {
|
|
73
|
+
mipMapLevels: mipMapLevels,
|
|
74
|
+
width: width,
|
|
75
|
+
height: height,
|
|
76
|
+
sizeFunction: sizeFunction,
|
|
77
|
+
internalFormat: DXT_FORMAT_MAP[format].pixelFormat
|
|
78
|
+
}));
|
|
79
|
+
case 20:
|
|
80
|
+
case "end":
|
|
81
|
+
return _context.stop();
|
|
82
|
+
}
|
|
83
|
+
}, _callee);
|
|
84
|
+
}));
|
|
85
|
+
return _parseCrunch.apply(this, arguments);
|
|
86
|
+
}
|
|
87
|
+
function arrayBufferCopy(srcData, dstData, dstByteOffset, numBytes) {
|
|
88
|
+
var i;
|
|
89
|
+
var dst32Offset = dstByteOffset / 4;
|
|
90
|
+
var tail = numBytes % 4;
|
|
91
|
+
var src32 = new Uint32Array(srcData.buffer, 0, (numBytes - tail) / 4);
|
|
92
|
+
var dst32 = new Uint32Array(dstData.buffer);
|
|
93
|
+
for (i = 0; i < src32.length; i++) {
|
|
94
|
+
dst32[dst32Offset + i] = src32[i];
|
|
95
|
+
}
|
|
96
|
+
for (i = numBytes - tail; i < numBytes; i++) {
|
|
97
|
+
dstData[dstByteOffset + i] = srcData[i];
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=parse-crunch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-crunch.js","names":["_crunchModuleLoader","require","_glExtensions","_loaderUtils","_parseDds","_extractMipmapImages","_DXT_FORMAT_MAP","CRN_FORMAT","cCRNFmtInvalid","cCRNFmtDXT1","cCRNFmtDXT3","cCRNFmtDXT5","DXT_FORMAT_MAP","_defineProperty2","default","pixelFormat","GL_EXTENSIONS_CONSTANTS","COMPRESSED_RGB_S3TC_DXT1_EXT","sizeFunction","getDxt1LevelSize","COMPRESSED_RGBA_S3TC_DXT3_EXT","getDxtXLevelSize","COMPRESSED_RGBA_S3TC_DXT5_EXT","cachedDstSize","dst","parseCrunch","_x","_x2","_parseCrunch","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee","data","options","crunchModule","srcSize","bytes","src","format","mipMapLevels","width","height","dstSize","i","image","wrap","_callee$","_context","prev","next","loadCrunchModule","sent","byteLength","Uint8Array","_malloc","arrayBufferCopy","HEAPU8","_crn_get_dxt_format","assert","Boolean","_crn_get_levels","_crn_get_width","_crn_get_height","_free","_crn_decompress","buffer","slice","abrupt","extractMipmapImages","internalFormat","stop","srcData","dstData","dstByteOffset","numBytes","dst32Offset","tail","src32","Uint32Array","dst32","length"],"sources":["../../../../src/lib/parsers/parse-crunch.ts"],"sourcesContent":["import type {TextureLevel} from '@loaders.gl/schema';\nimport {loadCrunchModule} from './crunch-module-loader';\nimport {GL_EXTENSIONS_CONSTANTS} from '../gl-extensions';\nimport {assert} from '@loaders.gl/loader-utils';\nimport {getDxt1LevelSize, getDxtXLevelSize} from './parse-dds';\nimport {extractMipmapImages} from '../utils/extract-mipmap-images';\n\n// Taken from crnlib.h\nconst CRN_FORMAT = {\n cCRNFmtInvalid: -1,\n\n cCRNFmtDXT1: 0,\n // cCRNFmtDXT3 is not currently supported when writing to CRN - only DDS.\n cCRNFmtDXT3: 1,\n cCRNFmtDXT5: 2\n\n // Crunch supports more formats than this.\n};\n\n/** Mapping of Crunch formats to DXT formats. */\nconst DXT_FORMAT_MAP = {\n [CRN_FORMAT.cCRNFmtDXT1]: {\n pixelFormat: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT,\n sizeFunction: getDxt1LevelSize\n },\n [CRN_FORMAT.cCRNFmtDXT3]: {\n pixelFormat: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT,\n sizeFunction: getDxtXLevelSize\n },\n [CRN_FORMAT.cCRNFmtDXT5]: {\n pixelFormat: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT,\n sizeFunction: getDxtXLevelSize\n }\n};\n\nlet cachedDstSize = 0;\nlet dst: number;\n\n/**\n * Parse texture data as \"CRN\" format.\n * Function is \"async\" as emscriptified decoder module is loaded asyncronously\n * @param data - binary data of compressed texture\n * @returns Promise of Array of the texture levels\n */\nexport async function parseCrunch(data, options: any): Promise<TextureLevel[]> {\n const crunchModule = await loadCrunchModule(options);\n\n // Copy the contents of the arrayBuffer into emscriptens heap.\n const srcSize = data.byteLength;\n const bytes = new Uint8Array(data);\n const src = crunchModule._malloc(srcSize);\n arrayBufferCopy(bytes, crunchModule.HEAPU8, src, srcSize);\n\n // Determine what type of compressed data the file contains.\n const format = crunchModule._crn_get_dxt_format(src, srcSize);\n assert(Boolean(DXT_FORMAT_MAP[format]), 'Unsupported format');\n\n // Gather basic metrics about the DXT data.\n const mipMapLevels = crunchModule._crn_get_levels(src, srcSize);\n const width = crunchModule._crn_get_width(src, srcSize);\n const height = crunchModule._crn_get_height(src, srcSize);\n // const bytesPerBlock = crunchModule._crn_get_bytes_per_block(src, srcSize);\n\n // Determine the size of the decoded DXT data.\n const sizeFunction = DXT_FORMAT_MAP[format].sizeFunction;\n let dstSize = 0;\n for (let i = 0; i < mipMapLevels; ++i) {\n dstSize += sizeFunction(width >> i, height >> i);\n }\n\n // Allocate enough space on the emscripten heap to hold the decoded DXT data\n // or reuse the existing allocation if a previous call to this function has\n // already acquired a large enough buffer.\n if (cachedDstSize < dstSize) {\n if (dst) {\n crunchModule._free(dst);\n }\n dst = crunchModule._malloc(dstSize);\n cachedDstSize = dstSize;\n }\n\n // Decompress the DXT data from the Crunch file into the allocated space.\n crunchModule._crn_decompress(src, srcSize, dst, dstSize, 0, mipMapLevels);\n\n // Release the crunch file data from the emscripten heap.\n crunchModule._free(src);\n\n const image = new Uint8Array(crunchModule.HEAPU8.buffer, dst, dstSize).slice();\n return extractMipmapImages(image, {\n mipMapLevels,\n width,\n height,\n sizeFunction,\n internalFormat: DXT_FORMAT_MAP[format].pixelFormat\n });\n}\n\n/**\n * Copy an array of bytes into or out of the emscripten heap\n * @param {Uint8Array} srcData - Source data array\n * @param {Uint8Array} dstData - Destination data array\n * @param {number} dstByteOffset - Destination data offset\n * @param {number} numBytes - number of bytes to copy\n * @returns {void}\n */\nfunction arrayBufferCopy(srcData, dstData, dstByteOffset, numBytes) {\n let i;\n const dst32Offset = dstByteOffset / 4;\n const tail = numBytes % 4;\n const src32 = new Uint32Array(srcData.buffer, 0, (numBytes - tail) / 4);\n const dst32 = new Uint32Array(dstData.buffer);\n for (i = 0; i < src32.length; i++) {\n dst32[dst32Offset + i] = src32[i];\n }\n for (i = numBytes - tail; i < numBytes; i++) {\n dstData[dstByteOffset + i] = srcData[i];\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getDxt1LevelSize = getDxt1LevelSize;
|
|
7
|
+
exports.getDxtXLevelSize = getDxtXLevelSize;
|
|
8
|
+
exports.isDDS = isDDS;
|
|
9
|
+
exports.parseDDS = parseDDS;
|
|
10
|
+
var _loaderUtils = require("@loaders.gl/loader-utils");
|
|
11
|
+
var _glExtensions = require("../gl-extensions");
|
|
12
|
+
var _extractMipmapImages = require("../utils/extract-mipmap-images");
|
|
13
|
+
var DDS_CONSTANTS = {
|
|
14
|
+
MAGIC_NUMBER: 0x20534444,
|
|
15
|
+
HEADER_LENGTH: 31,
|
|
16
|
+
MAGIC_NUMBER_INDEX: 0,
|
|
17
|
+
HEADER_SIZE_INDEX: 1,
|
|
18
|
+
HEADER_FLAGS_INDEX: 2,
|
|
19
|
+
HEADER_HEIGHT_INDEX: 3,
|
|
20
|
+
HEADER_WIDTH_INDEX: 4,
|
|
21
|
+
MIPMAPCOUNT_INDEX: 7,
|
|
22
|
+
HEADER_PF_FLAGS_INDEX: 20,
|
|
23
|
+
HEADER_PF_FOURCC_INDEX: 21,
|
|
24
|
+
DDSD_MIPMAPCOUNT: 0x20000,
|
|
25
|
+
DDPF_FOURCC: 0x4
|
|
26
|
+
};
|
|
27
|
+
var DDS_PIXEL_FORMATS = {
|
|
28
|
+
DXT1: _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT,
|
|
29
|
+
DXT3: _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT,
|
|
30
|
+
DXT5: _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT,
|
|
31
|
+
'ATC ': _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ATC_WEBGL,
|
|
32
|
+
ATCA: _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL,
|
|
33
|
+
ATCI: _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL
|
|
34
|
+
};
|
|
35
|
+
var getATCLevelSize = getDxt1LevelSize;
|
|
36
|
+
var getATCALevelSize = getDxtXLevelSize;
|
|
37
|
+
var getATCILevelSize = getDxtXLevelSize;
|
|
38
|
+
var DDS_SIZE_FUNCTIONS = {
|
|
39
|
+
DXT1: getDxt1LevelSize,
|
|
40
|
+
DXT3: getDxtXLevelSize,
|
|
41
|
+
DXT5: getDxtXLevelSize,
|
|
42
|
+
'ATC ': getATCLevelSize,
|
|
43
|
+
ATCA: getATCALevelSize,
|
|
44
|
+
ATCI: getATCILevelSize
|
|
45
|
+
};
|
|
46
|
+
function isDDS(data) {
|
|
47
|
+
var header = new Uint32Array(data, 0, DDS_CONSTANTS.HEADER_LENGTH);
|
|
48
|
+
var magic = header[DDS_CONSTANTS.MAGIC_NUMBER_INDEX];
|
|
49
|
+
return magic === DDS_CONSTANTS.MAGIC_NUMBER;
|
|
50
|
+
}
|
|
51
|
+
function parseDDS(data) {
|
|
52
|
+
var header = new Int32Array(data, 0, DDS_CONSTANTS.HEADER_LENGTH);
|
|
53
|
+
var pixelFormatNumber = header[DDS_CONSTANTS.HEADER_PF_FOURCC_INDEX];
|
|
54
|
+
(0, _loaderUtils.assert)(Boolean(header[DDS_CONSTANTS.HEADER_PF_FLAGS_INDEX] & DDS_CONSTANTS.DDPF_FOURCC), 'DDS: Unsupported format, must contain a FourCC code');
|
|
55
|
+
var fourCC = int32ToFourCC(pixelFormatNumber);
|
|
56
|
+
var internalFormat = DDS_PIXEL_FORMATS[fourCC];
|
|
57
|
+
var sizeFunction = DDS_SIZE_FUNCTIONS[fourCC];
|
|
58
|
+
(0, _loaderUtils.assert)(internalFormat && sizeFunction, "DDS: Unknown pixel format ".concat(pixelFormatNumber));
|
|
59
|
+
var mipMapLevels = 1;
|
|
60
|
+
if (header[DDS_CONSTANTS.HEADER_FLAGS_INDEX] & DDS_CONSTANTS.DDSD_MIPMAPCOUNT) {
|
|
61
|
+
mipMapLevels = Math.max(1, header[DDS_CONSTANTS.MIPMAPCOUNT_INDEX]);
|
|
62
|
+
}
|
|
63
|
+
var width = header[DDS_CONSTANTS.HEADER_WIDTH_INDEX];
|
|
64
|
+
var height = header[DDS_CONSTANTS.HEADER_HEIGHT_INDEX];
|
|
65
|
+
var dataOffset = header[DDS_CONSTANTS.HEADER_SIZE_INDEX] + 4;
|
|
66
|
+
var image = new Uint8Array(data, dataOffset);
|
|
67
|
+
return (0, _extractMipmapImages.extractMipmapImages)(image, {
|
|
68
|
+
mipMapLevels: mipMapLevels,
|
|
69
|
+
width: width,
|
|
70
|
+
height: height,
|
|
71
|
+
sizeFunction: sizeFunction,
|
|
72
|
+
internalFormat: internalFormat
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
function getDxt1LevelSize(width, height) {
|
|
76
|
+
return (width + 3 >> 2) * (height + 3 >> 2) * 8;
|
|
77
|
+
}
|
|
78
|
+
function getDxtXLevelSize(width, height) {
|
|
79
|
+
return (width + 3 >> 2) * (height + 3 >> 2) * 16;
|
|
80
|
+
}
|
|
81
|
+
function int32ToFourCC(value) {
|
|
82
|
+
return String.fromCharCode(value & 0xff, value >> 8 & 0xff, value >> 16 & 0xff, value >> 24 & 0xff);
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=parse-dds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-dds.js","names":["_loaderUtils","require","_glExtensions","_extractMipmapImages","DDS_CONSTANTS","MAGIC_NUMBER","HEADER_LENGTH","MAGIC_NUMBER_INDEX","HEADER_SIZE_INDEX","HEADER_FLAGS_INDEX","HEADER_HEIGHT_INDEX","HEADER_WIDTH_INDEX","MIPMAPCOUNT_INDEX","HEADER_PF_FLAGS_INDEX","HEADER_PF_FOURCC_INDEX","DDSD_MIPMAPCOUNT","DDPF_FOURCC","DDS_PIXEL_FORMATS","DXT1","GL_EXTENSIONS_CONSTANTS","COMPRESSED_RGB_S3TC_DXT1_EXT","DXT3","COMPRESSED_RGBA_S3TC_DXT3_EXT","DXT5","COMPRESSED_RGBA_S3TC_DXT5_EXT","COMPRESSED_RGB_ATC_WEBGL","ATCA","COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL","ATCI","COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL","getATCLevelSize","getDxt1LevelSize","getATCALevelSize","getDxtXLevelSize","getATCILevelSize","DDS_SIZE_FUNCTIONS","isDDS","data","header","Uint32Array","magic","parseDDS","Int32Array","pixelFormatNumber","assert","Boolean","fourCC","int32ToFourCC","internalFormat","sizeFunction","concat","mipMapLevels","Math","max","width","height","dataOffset","image","Uint8Array","extractMipmapImages","value","String","fromCharCode"],"sources":["../../../../src/lib/parsers/parse-dds.ts"],"sourcesContent":["import type {TextureLevel} from '@loaders.gl/schema';\nimport {assert} from '@loaders.gl/loader-utils';\nimport {GL_EXTENSIONS_CONSTANTS} from '../gl-extensions';\nimport {extractMipmapImages} from '../utils/extract-mipmap-images';\n\nconst DDS_CONSTANTS = {\n MAGIC_NUMBER: 0x20534444,\n HEADER_LENGTH: 31,\n MAGIC_NUMBER_INDEX: 0,\n HEADER_SIZE_INDEX: 1,\n HEADER_FLAGS_INDEX: 2,\n HEADER_HEIGHT_INDEX: 3,\n HEADER_WIDTH_INDEX: 4,\n MIPMAPCOUNT_INDEX: 7,\n HEADER_PF_FLAGS_INDEX: 20,\n HEADER_PF_FOURCC_INDEX: 21,\n DDSD_MIPMAPCOUNT: 0x20000,\n DDPF_FOURCC: 0x4\n};\n\nconst DDS_PIXEL_FORMATS: Record<string, number> = {\n DXT1: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT,\n DXT3: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT,\n DXT5: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT,\n 'ATC ': GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ATC_WEBGL,\n ATCA: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL,\n ATCI: GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL\n};\n\nconst getATCLevelSize = getDxt1LevelSize;\nconst getATCALevelSize = getDxtXLevelSize;\nconst getATCILevelSize = getDxtXLevelSize;\n\nconst DDS_SIZE_FUNCTIONS: Record<string, (width: number, height: number) => number> = {\n DXT1: getDxt1LevelSize,\n DXT3: getDxtXLevelSize,\n DXT5: getDxtXLevelSize,\n 'ATC ': getATCLevelSize,\n ATCA: getATCALevelSize,\n ATCI: getATCILevelSize\n};\n\n/**\n * Check if data is in \"DDS\" format by its magic number\n * @param data - binary data of compressed texture\n * @returns true - data in \"DDS\" format, else - false\n */\nexport function isDDS(data: ArrayBuffer): boolean {\n const header = new Uint32Array(data, 0, DDS_CONSTANTS.HEADER_LENGTH);\n const magic = header[DDS_CONSTANTS.MAGIC_NUMBER_INDEX];\n return magic === DDS_CONSTANTS.MAGIC_NUMBER;\n}\n\n/**\n * Parse texture data as \"DDS\" format\n * @param data - binary data of compressed texture\n * @returns Array of the texture levels\n */\nexport function parseDDS(data: ArrayBuffer): TextureLevel[] {\n const header = new Int32Array(data, 0, DDS_CONSTANTS.HEADER_LENGTH);\n const pixelFormatNumber = header[DDS_CONSTANTS.HEADER_PF_FOURCC_INDEX];\n assert(\n Boolean(header[DDS_CONSTANTS.HEADER_PF_FLAGS_INDEX] & DDS_CONSTANTS.DDPF_FOURCC),\n 'DDS: Unsupported format, must contain a FourCC code'\n );\n const fourCC = int32ToFourCC(pixelFormatNumber);\n const internalFormat = DDS_PIXEL_FORMATS[fourCC];\n const sizeFunction = DDS_SIZE_FUNCTIONS[fourCC];\n assert(internalFormat && sizeFunction, `DDS: Unknown pixel format ${pixelFormatNumber}`);\n\n let mipMapLevels = 1;\n if (header[DDS_CONSTANTS.HEADER_FLAGS_INDEX] & DDS_CONSTANTS.DDSD_MIPMAPCOUNT) {\n mipMapLevels = Math.max(1, header[DDS_CONSTANTS.MIPMAPCOUNT_INDEX]);\n }\n const width = header[DDS_CONSTANTS.HEADER_WIDTH_INDEX];\n const height = header[DDS_CONSTANTS.HEADER_HEIGHT_INDEX];\n const dataOffset = header[DDS_CONSTANTS.HEADER_SIZE_INDEX] + 4;\n const image = new Uint8Array(data, dataOffset);\n\n return extractMipmapImages(image, {\n mipMapLevels,\n width,\n height,\n sizeFunction,\n internalFormat\n });\n}\n\n/**\n * DXT1 applicable function to calculate level size\n * @param width - level width\n * @param height - level height\n * @returns level size in bytes\n */\nexport function getDxt1LevelSize(width: number, height: number): number {\n return ((width + 3) >> 2) * ((height + 3) >> 2) * 8;\n}\n\n/**\n * DXT3 & DXT5 applicable function to calculate level size\n * @param width - level width\n * @param height - level height\n * @returns level size in bytes\n */\nexport function getDxtXLevelSize(width: number, height: number): number {\n return ((width + 3) >> 2) * ((height + 3) >> 2) * 16;\n}\n\n/**\n * Convert every byte of Int32 value to char\n * @param value - Int32 number\n * @returns string of 4 characters\n */\nfunction int32ToFourCC(value: number): string {\n return String.fromCharCode(\n value & 0xff,\n (value >> 8) & 0xff,\n (value >> 16) & 0xff,\n (value >> 24) & 0xff\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.isKTX = isKTX;
|
|
7
|
+
exports.parseKTX = parseKTX;
|
|
8
|
+
var _ktxParse = require("ktx-parse");
|
|
9
|
+
var _extractMipmapImages = require("../utils/extract-mipmap-images");
|
|
10
|
+
var _ktxFormatHelper = require("../utils/ktx-format-helper");
|
|
11
|
+
var KTX2_ID = [0xab, 0x4b, 0x54, 0x58, 0x20, 0x32, 0x30, 0xbb, 0x0d, 0x0a, 0x1a, 0x0a];
|
|
12
|
+
function isKTX(data) {
|
|
13
|
+
var id = new Uint8Array(data);
|
|
14
|
+
var notKTX = id.byteLength < KTX2_ID.length || id[0] !== KTX2_ID[0] || id[1] !== KTX2_ID[1] || id[2] !== KTX2_ID[2] || id[3] !== KTX2_ID[3] || id[4] !== KTX2_ID[4] || id[5] !== KTX2_ID[5] || id[6] !== KTX2_ID[6] || id[7] !== KTX2_ID[7] || id[8] !== KTX2_ID[8] || id[9] !== KTX2_ID[9] || id[10] !== KTX2_ID[10] || id[11] !== KTX2_ID[11];
|
|
15
|
+
return !notKTX;
|
|
16
|
+
}
|
|
17
|
+
function parseKTX(arrayBuffer) {
|
|
18
|
+
var uint8Array = new Uint8Array(arrayBuffer);
|
|
19
|
+
var ktx = (0, _ktxParse.read)(uint8Array);
|
|
20
|
+
var mipMapLevels = Math.max(1, ktx.levels.length);
|
|
21
|
+
var width = ktx.pixelWidth;
|
|
22
|
+
var height = ktx.pixelHeight;
|
|
23
|
+
var internalFormat = (0, _ktxFormatHelper.mapVkFormatToWebGL)(ktx.vkFormat);
|
|
24
|
+
return (0, _extractMipmapImages.extractMipmapImages)(ktx.levels, {
|
|
25
|
+
mipMapLevels: mipMapLevels,
|
|
26
|
+
width: width,
|
|
27
|
+
height: height,
|
|
28
|
+
sizeFunction: function sizeFunction(level) {
|
|
29
|
+
return level.uncompressedByteLength;
|
|
30
|
+
},
|
|
31
|
+
internalFormat: internalFormat
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=parse-ktx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-ktx.js","names":["_ktxParse","require","_extractMipmapImages","_ktxFormatHelper","KTX2_ID","isKTX","data","id","Uint8Array","notKTX","byteLength","length","parseKTX","arrayBuffer","uint8Array","ktx","read","mipMapLevels","Math","max","levels","width","pixelWidth","height","pixelHeight","internalFormat","mapVkFormatToWebGL","vkFormat","extractMipmapImages","sizeFunction","level","uncompressedByteLength"],"sources":["../../../../src/lib/parsers/parse-ktx.ts"],"sourcesContent":["import type {TextureLevel} from '@loaders.gl/schema';\nimport {read} from 'ktx-parse';\nimport {extractMipmapImages} from '../utils/extract-mipmap-images';\nimport {mapVkFormatToWebGL} from '../utils/ktx-format-helper';\n\nconst KTX2_ID = [\n // '´', 'K', 'T', 'X', '2', '0', 'ª', '\\r', '\\n', '\\x1A', '\\n'\n 0xab, 0x4b, 0x54, 0x58, 0x20, 0x32, 0x30, 0xbb, 0x0d, 0x0a, 0x1a, 0x0a\n];\n\n// eslint-disable-next-line complexity\nexport function isKTX(data: ArrayBuffer) {\n // const id = new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n const id = new Uint8Array(data);\n const notKTX =\n id.byteLength < KTX2_ID.length ||\n id[0] !== KTX2_ID[0] || // '´'\n id[1] !== KTX2_ID[1] || // 'K'\n id[2] !== KTX2_ID[2] || // 'T'\n id[3] !== KTX2_ID[3] || // 'X'\n id[4] !== KTX2_ID[4] || // ' '\n id[5] !== KTX2_ID[5] || // '2'\n id[6] !== KTX2_ID[6] || // '0'\n id[7] !== KTX2_ID[7] || // 'ª'\n id[8] !== KTX2_ID[8] || // '\\r'\n id[9] !== KTX2_ID[9] || // '\\n'\n id[10] !== KTX2_ID[10] || // '\\x1A'\n id[11] !== KTX2_ID[11]; // '\\n'\n\n return !notKTX;\n}\n\nexport function parseKTX(arrayBuffer: ArrayBuffer): TextureLevel[] {\n const uint8Array = new Uint8Array(arrayBuffer);\n const ktx = read(uint8Array);\n const mipMapLevels = Math.max(1, ktx.levels.length);\n const width = ktx.pixelWidth;\n const height = ktx.pixelHeight;\n const internalFormat = mapVkFormatToWebGL(ktx.vkFormat);\n\n return extractMipmapImages(ktx.levels, {\n mipMapLevels,\n width,\n height,\n sizeFunction: (level: any): number => level.uncompressedByteLength,\n internalFormat\n });\n}\n"],"mappings":";;;;;;;AACA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,oBAAA,GAAAD,OAAA;AACA,IAAAE,gBAAA,GAAAF,OAAA;AAEA,IAAMG,OAAO,GAAG,CAEd,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CACvE;AAGM,SAASC,KAAKA,CAACC,IAAiB,EAAE;EAEvC,IAAMC,EAAE,GAAG,IAAIC,UAAU,CAACF,IAAI,CAAC;EAC/B,IAAMG,MAAM,GACVF,EAAE,CAACG,UAAU,GAAGN,OAAO,CAACO,MAAM,IAC9BJ,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC,IACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC,IACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC,IACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC,IACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC,IACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC,IACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC,IACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC,IACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC,IACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC,IACpBG,EAAE,CAAC,EAAE,CAAC,KAAKH,OAAO,CAAC,EAAE,CAAC,IACtBG,EAAE,CAAC,EAAE,CAAC,KAAKH,OAAO,CAAC,EAAE,CAAC;EAExB,OAAO,CAACK,MAAM;AAChB;AAEO,SAASG,QAAQA,CAACC,WAAwB,EAAkB;EACjE,IAAMC,UAAU,GAAG,IAAIN,UAAU,CAACK,WAAW,CAAC;EAC9C,IAAME,GAAG,GAAG,IAAAC,cAAI,EAACF,UAAU,CAAC;EAC5B,IAAMG,YAAY,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEJ,GAAG,CAACK,MAAM,CAACT,MAAM,CAAC;EACnD,IAAMU,KAAK,GAAGN,GAAG,CAACO,UAAU;EAC5B,IAAMC,MAAM,GAAGR,GAAG,CAACS,WAAW;EAC9B,IAAMC,cAAc,GAAG,IAAAC,mCAAkB,EAACX,GAAG,CAACY,QAAQ,CAAC;EAEvD,OAAO,IAAAC,wCAAmB,EAACb,GAAG,CAACK,MAAM,EAAE;IACrCH,YAAY,EAAZA,YAAY;IACZI,KAAK,EAALA,KAAK;IACLE,MAAM,EAANA,MAAM;IACNM,YAAY,EAAE,SAAAA,aAACC,KAAU;MAAA,OAAaA,KAAK,CAACC,sBAAsB;IAAA;IAClEN,cAAc,EAAdA;EACF,CAAC,CAAC;AACJ"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.parseNPY = parseNPY;
|
|
7
|
+
var a = new Uint32Array([0x12345678]);
|
|
8
|
+
var b = new Uint8Array(a.buffer, a.byteOffset, a.byteLength);
|
|
9
|
+
var isLittleEndian = !(b[0] === 0x12);
|
|
10
|
+
var LITTLE_ENDIAN_OS = isLittleEndian;
|
|
11
|
+
var DTYPES = {
|
|
12
|
+
u1: Uint8Array,
|
|
13
|
+
i1: Int8Array,
|
|
14
|
+
u2: Uint16Array,
|
|
15
|
+
i2: Int16Array,
|
|
16
|
+
u4: Uint32Array,
|
|
17
|
+
i4: Int32Array,
|
|
18
|
+
f4: Float32Array,
|
|
19
|
+
f8: Float64Array
|
|
20
|
+
};
|
|
21
|
+
function parseNPY(arrayBuffer, options) {
|
|
22
|
+
var _header$shape;
|
|
23
|
+
var view = new DataView(arrayBuffer);
|
|
24
|
+
var _parseHeader = parseHeader(view),
|
|
25
|
+
header = _parseHeader.header,
|
|
26
|
+
headerEndOffset = _parseHeader.headerEndOffset;
|
|
27
|
+
var numpyType = header.descr;
|
|
28
|
+
var ArrayType = DTYPES[numpyType.slice(1, 3)];
|
|
29
|
+
if (!ArrayType) {
|
|
30
|
+
throw new Error("Unimplemented type ".concat(numpyType));
|
|
31
|
+
}
|
|
32
|
+
var nArrayElements = (_header$shape = header.shape) === null || _header$shape === void 0 ? void 0 : _header$shape.reduce(function (a, b) {
|
|
33
|
+
return a * b;
|
|
34
|
+
});
|
|
35
|
+
var arrayByteLength = nArrayElements * ArrayType.BYTES_PER_ELEMENT;
|
|
36
|
+
if (arrayBuffer.byteLength < headerEndOffset + arrayByteLength) {
|
|
37
|
+
throw new Error('Buffer overflow');
|
|
38
|
+
}
|
|
39
|
+
var data = new ArrayType(arrayBuffer.slice(headerEndOffset, headerEndOffset + arrayByteLength));
|
|
40
|
+
if (numpyType[0] === '>' && LITTLE_ENDIAN_OS || numpyType[0] === '<' && !LITTLE_ENDIAN_OS) {
|
|
41
|
+
throw new Error('Incorrect endianness');
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
data: data,
|
|
45
|
+
header: header
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function parseHeader(view) {
|
|
49
|
+
var majorVersion = view.getUint8(6);
|
|
50
|
+
var offset = 8;
|
|
51
|
+
var headerLength;
|
|
52
|
+
if (majorVersion >= 2) {
|
|
53
|
+
headerLength = view.getUint32(offset, true);
|
|
54
|
+
offset += 4;
|
|
55
|
+
} else {
|
|
56
|
+
headerLength = view.getUint16(offset, true);
|
|
57
|
+
offset += 2;
|
|
58
|
+
}
|
|
59
|
+
var encoding = majorVersion <= 2 ? 'latin1' : 'utf-8';
|
|
60
|
+
var decoder = new TextDecoder(encoding);
|
|
61
|
+
var headerArray = new Uint8Array(view.buffer, offset, headerLength);
|
|
62
|
+
var headerText = decoder.decode(headerArray);
|
|
63
|
+
offset += headerLength;
|
|
64
|
+
var header = JSON.parse(headerText.replace(/'/g, '"').replace('False', 'false').replace('(', '[').replace(/,*\),*/g, ']'));
|
|
65
|
+
return {
|
|
66
|
+
header: header,
|
|
67
|
+
headerEndOffset: offset
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=parse-npy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-npy.js","names":["a","Uint32Array","b","Uint8Array","buffer","byteOffset","byteLength","isLittleEndian","LITTLE_ENDIAN_OS","DTYPES","u1","i1","Int8Array","u2","Uint16Array","i2","Int16Array","u4","i4","Int32Array","f4","Float32Array","f8","Float64Array","parseNPY","arrayBuffer","options","_header$shape","view","DataView","_parseHeader","parseHeader","header","headerEndOffset","numpyType","descr","ArrayType","slice","Error","concat","nArrayElements","shape","reduce","arrayByteLength","BYTES_PER_ELEMENT","data","majorVersion","getUint8","offset","headerLength","getUint32","getUint16","encoding","decoder","TextDecoder","headerArray","headerText","decode","JSON","parse","replace"],"sources":["../../../../src/lib/parsers/parse-npy.ts"],"sourcesContent":["// import type {TextureLevel} from '@loaders.gl/schema';\nimport {TypedArray} from '@math.gl/types';\n// import {TypedArrayConstructor} from \"@math.gl/types\";\n\n// TODO move to math.gl\ntype TypedArrayConstructor =\n | typeof Int8Array\n | typeof Uint8Array\n | typeof Int16Array\n | typeof Uint16Array\n | typeof Int32Array\n | typeof Uint32Array\n | typeof Int32Array\n | typeof Uint32Array\n | typeof Float32Array\n | typeof Float64Array;\n\nconst a = new Uint32Array([0x12345678]);\nconst b = new Uint8Array(a.buffer, a.byteOffset, a.byteLength);\nconst isLittleEndian = !(b[0] === 0x12);\n\nconst LITTLE_ENDIAN_OS = isLittleEndian;\n\n/** One numpy \"tile\" */\nexport type NPYTile = {\n /** tile header */\n header: NumpyHeader;\n /** data in tile */\n data: TypedArray;\n};\n\ntype NumpyHeader = {\n descr: string;\n shape: number[];\n};\n\n/**\n * The basic string format consists of 3 characters:\n * 1. a character describing the byteorder of the data (<: little-endian, >: big-endian, |: not-relevant)\n * 2. a character code giving the basic type of the array\n * 3. an integer providing the number of bytes the type uses.\n * https://numpy.org/doc/stable/reference/arrays.interface.html\n *\n * Here I only include the second and third characters, and check endianness separately\n */\nconst DTYPES: Record<string, TypedArrayConstructor> = {\n u1: Uint8Array,\n i1: Int8Array,\n u2: Uint16Array,\n i2: Int16Array,\n u4: Uint32Array,\n i4: Int32Array,\n f4: Float32Array,\n f8: Float64Array\n};\n\nexport function parseNPY(arrayBuffer: ArrayBuffer, options?: {}): NPYTile {\n const view = new DataView(arrayBuffer);\n const {header, headerEndOffset} = parseHeader(view);\n\n const numpyType = header.descr;\n const ArrayType = DTYPES[numpyType.slice(1, 3)];\n if (!ArrayType) {\n throw new Error(`Unimplemented type ${numpyType}`);\n }\n\n const nArrayElements = header.shape?.reduce((a: number, b: number): number => a * b);\n const arrayByteLength = nArrayElements * ArrayType.BYTES_PER_ELEMENT;\n\n if (arrayBuffer.byteLength < headerEndOffset + arrayByteLength) {\n throw new Error('Buffer overflow');\n }\n const data = new ArrayType(arrayBuffer.slice(headerEndOffset, headerEndOffset + arrayByteLength));\n\n // Swap endianness if needed\n if ((numpyType[0] === '>' && LITTLE_ENDIAN_OS) || (numpyType[0] === '<' && !LITTLE_ENDIAN_OS)) {\n throw new Error('Incorrect endianness');\n }\n\n return {\n data,\n header\n };\n}\n\n/**\n * Parse NPY header\n *\n * @param view\n * @return\n */\nfunction parseHeader(view: DataView): {header: NumpyHeader; headerEndOffset: number} {\n const majorVersion = view.getUint8(6);\n // const minorVersion = view.getUint8(7);\n\n let offset = 8;\n let headerLength: number;\n if (majorVersion >= 2) {\n headerLength = view.getUint32(offset, true);\n offset += 4;\n } else {\n headerLength = view.getUint16(offset, true);\n offset += 2;\n }\n\n const encoding = majorVersion <= 2 ? 'latin1' : 'utf-8';\n const decoder = new TextDecoder(encoding);\n const headerArray = new Uint8Array(view.buffer, offset, headerLength);\n const headerText = decoder.decode(headerArray);\n offset += headerLength;\n\n const header = JSON.parse(\n headerText\n .replace(/'/g, '\"')\n .replace('False', 'false')\n .replace('(', '[')\n .replace(/,*\\),*/g, ']')\n );\n\n return {header, headerEndOffset: offset};\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.isPVR = isPVR;
|
|
7
|
+
exports.parsePVR = parsePVR;
|
|
8
|
+
var _glExtensions = require("../gl-extensions");
|
|
9
|
+
var _extractMipmapImages = require("../utils/extract-mipmap-images");
|
|
10
|
+
var PVR_CONSTANTS = {
|
|
11
|
+
MAGIC_NUMBER: 0x03525650,
|
|
12
|
+
MAGIC_NUMBER_EXTRA: 0x50565203,
|
|
13
|
+
HEADER_LENGTH: 13,
|
|
14
|
+
HEADER_SIZE: 52,
|
|
15
|
+
MAGIC_NUMBER_INDEX: 0,
|
|
16
|
+
PIXEL_FORMAT_INDEX: 2,
|
|
17
|
+
COLOUR_SPACE_INDEX: 4,
|
|
18
|
+
HEIGHT_INDEX: 6,
|
|
19
|
+
WIDTH_INDEX: 7,
|
|
20
|
+
MIPMAPCOUNT_INDEX: 11,
|
|
21
|
+
METADATA_SIZE_INDEX: 12
|
|
22
|
+
};
|
|
23
|
+
var PVR_PIXEL_FORMATS = {
|
|
24
|
+
0: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_2BPPV1_IMG],
|
|
25
|
+
1: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG],
|
|
26
|
+
2: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_4BPPV1_IMG],
|
|
27
|
+
3: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG],
|
|
28
|
+
6: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ETC1_WEBGL],
|
|
29
|
+
7: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT],
|
|
30
|
+
9: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT],
|
|
31
|
+
11: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT],
|
|
32
|
+
22: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_ETC2],
|
|
33
|
+
23: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA8_ETC2_EAC],
|
|
34
|
+
24: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2],
|
|
35
|
+
25: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_R11_EAC],
|
|
36
|
+
26: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RG11_EAC],
|
|
37
|
+
27: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR, _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR],
|
|
38
|
+
28: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X4_KHR, _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR],
|
|
39
|
+
29: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X5_KHR, _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR],
|
|
40
|
+
30: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X5_KHR, _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR],
|
|
41
|
+
31: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X6_KHR, _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR],
|
|
42
|
+
32: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X5_KHR, _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR],
|
|
43
|
+
33: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X6_KHR, _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR],
|
|
44
|
+
34: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X8_KHR, _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR],
|
|
45
|
+
35: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X5_KHR, _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR],
|
|
46
|
+
36: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X6_KHR, _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR],
|
|
47
|
+
37: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X8_KHR, _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR],
|
|
48
|
+
38: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X10_KHR, _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR],
|
|
49
|
+
39: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X10_KHR, _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR],
|
|
50
|
+
40: [_glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X12_KHR, _glExtensions.GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR]
|
|
51
|
+
};
|
|
52
|
+
var PVR_SIZE_FUNCTIONS = {
|
|
53
|
+
0: pvrtc2bppSize,
|
|
54
|
+
1: pvrtc2bppSize,
|
|
55
|
+
2: pvrtc4bppSize,
|
|
56
|
+
3: pvrtc4bppSize,
|
|
57
|
+
6: dxtEtcSmallSize,
|
|
58
|
+
7: dxtEtcSmallSize,
|
|
59
|
+
9: dxtEtcAstcBigSize,
|
|
60
|
+
11: dxtEtcAstcBigSize,
|
|
61
|
+
22: dxtEtcSmallSize,
|
|
62
|
+
23: dxtEtcAstcBigSize,
|
|
63
|
+
24: dxtEtcSmallSize,
|
|
64
|
+
25: dxtEtcSmallSize,
|
|
65
|
+
26: dxtEtcAstcBigSize,
|
|
66
|
+
27: dxtEtcAstcBigSize,
|
|
67
|
+
28: atc5x4Size,
|
|
68
|
+
29: atc5x5Size,
|
|
69
|
+
30: atc6x5Size,
|
|
70
|
+
31: atc6x6Size,
|
|
71
|
+
32: atc8x5Size,
|
|
72
|
+
33: atc8x6Size,
|
|
73
|
+
34: atc8x8Size,
|
|
74
|
+
35: atc10x5Size,
|
|
75
|
+
36: atc10x6Size,
|
|
76
|
+
37: atc10x8Size,
|
|
77
|
+
38: atc10x10Size,
|
|
78
|
+
39: atc12x10Size,
|
|
79
|
+
40: atc12x12Size
|
|
80
|
+
};
|
|
81
|
+
function isPVR(data) {
|
|
82
|
+
var header = new Uint32Array(data, 0, PVR_CONSTANTS.HEADER_LENGTH);
|
|
83
|
+
var version = header[PVR_CONSTANTS.MAGIC_NUMBER_INDEX];
|
|
84
|
+
return version === PVR_CONSTANTS.MAGIC_NUMBER || version === PVR_CONSTANTS.MAGIC_NUMBER_EXTRA;
|
|
85
|
+
}
|
|
86
|
+
function parsePVR(data) {
|
|
87
|
+
var header = new Uint32Array(data, 0, PVR_CONSTANTS.HEADER_LENGTH);
|
|
88
|
+
var pvrFormat = header[PVR_CONSTANTS.PIXEL_FORMAT_INDEX];
|
|
89
|
+
var colourSpace = header[PVR_CONSTANTS.COLOUR_SPACE_INDEX];
|
|
90
|
+
var pixelFormats = PVR_PIXEL_FORMATS[pvrFormat] || [];
|
|
91
|
+
var internalFormat = pixelFormats.length > 1 && colourSpace ? pixelFormats[1] : pixelFormats[0];
|
|
92
|
+
var sizeFunction = PVR_SIZE_FUNCTIONS[pvrFormat];
|
|
93
|
+
var mipMapLevels = header[PVR_CONSTANTS.MIPMAPCOUNT_INDEX];
|
|
94
|
+
var width = header[PVR_CONSTANTS.WIDTH_INDEX];
|
|
95
|
+
var height = header[PVR_CONSTANTS.HEIGHT_INDEX];
|
|
96
|
+
var dataOffset = PVR_CONSTANTS.HEADER_SIZE + header[PVR_CONSTANTS.METADATA_SIZE_INDEX];
|
|
97
|
+
var image = new Uint8Array(data, dataOffset);
|
|
98
|
+
return (0, _extractMipmapImages.extractMipmapImages)(image, {
|
|
99
|
+
mipMapLevels: mipMapLevels,
|
|
100
|
+
width: width,
|
|
101
|
+
height: height,
|
|
102
|
+
sizeFunction: sizeFunction,
|
|
103
|
+
internalFormat: internalFormat
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
function pvrtc2bppSize(width, height) {
|
|
107
|
+
width = Math.max(width, 16);
|
|
108
|
+
height = Math.max(height, 8);
|
|
109
|
+
return width * height / 4;
|
|
110
|
+
}
|
|
111
|
+
function pvrtc4bppSize(width, height) {
|
|
112
|
+
width = Math.max(width, 8);
|
|
113
|
+
height = Math.max(height, 8);
|
|
114
|
+
return width * height / 2;
|
|
115
|
+
}
|
|
116
|
+
function dxtEtcSmallSize(width, height) {
|
|
117
|
+
return Math.floor((width + 3) / 4) * Math.floor((height + 3) / 4) * 8;
|
|
118
|
+
}
|
|
119
|
+
function dxtEtcAstcBigSize(width, height) {
|
|
120
|
+
return Math.floor((width + 3) / 4) * Math.floor((height + 3) / 4) * 16;
|
|
121
|
+
}
|
|
122
|
+
function atc5x4Size(width, height) {
|
|
123
|
+
return Math.floor((width + 4) / 5) * Math.floor((height + 3) / 4) * 16;
|
|
124
|
+
}
|
|
125
|
+
function atc5x5Size(width, height) {
|
|
126
|
+
return Math.floor((width + 4) / 5) * Math.floor((height + 4) / 5) * 16;
|
|
127
|
+
}
|
|
128
|
+
function atc6x5Size(width, height) {
|
|
129
|
+
return Math.floor((width + 5) / 6) * Math.floor((height + 4) / 5) * 16;
|
|
130
|
+
}
|
|
131
|
+
function atc6x6Size(width, height) {
|
|
132
|
+
return Math.floor((width + 5) / 6) * Math.floor((height + 5) / 6) * 16;
|
|
133
|
+
}
|
|
134
|
+
function atc8x5Size(width, height) {
|
|
135
|
+
return Math.floor((width + 7) / 8) * Math.floor((height + 4) / 5) * 16;
|
|
136
|
+
}
|
|
137
|
+
function atc8x6Size(width, height) {
|
|
138
|
+
return Math.floor((width + 7) / 8) * Math.floor((height + 5) / 6) * 16;
|
|
139
|
+
}
|
|
140
|
+
function atc8x8Size(width, height) {
|
|
141
|
+
return Math.floor((width + 7) / 8) * Math.floor((height + 7) / 8) * 16;
|
|
142
|
+
}
|
|
143
|
+
function atc10x5Size(width, height) {
|
|
144
|
+
return Math.floor((width + 9) / 10) * Math.floor((height + 4) / 5) * 16;
|
|
145
|
+
}
|
|
146
|
+
function atc10x6Size(width, height) {
|
|
147
|
+
return Math.floor((width + 9) / 10) * Math.floor((height + 5) / 6) * 16;
|
|
148
|
+
}
|
|
149
|
+
function atc10x8Size(width, height) {
|
|
150
|
+
return Math.floor((width + 9) / 10) * Math.floor((height + 7) / 8) * 16;
|
|
151
|
+
}
|
|
152
|
+
function atc10x10Size(width, height) {
|
|
153
|
+
return Math.floor((width + 9) / 10) * Math.floor((height + 9) / 10) * 16;
|
|
154
|
+
}
|
|
155
|
+
function atc12x10Size(width, height) {
|
|
156
|
+
return Math.floor((width + 11) / 12) * Math.floor((height + 9) / 10) * 16;
|
|
157
|
+
}
|
|
158
|
+
function atc12x12Size(width, height) {
|
|
159
|
+
return Math.floor((width + 11) / 12) * Math.floor((height + 11) / 12) * 16;
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=parse-pvr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-pvr.js","names":["_glExtensions","require","_extractMipmapImages","PVR_CONSTANTS","MAGIC_NUMBER","MAGIC_NUMBER_EXTRA","HEADER_LENGTH","HEADER_SIZE","MAGIC_NUMBER_INDEX","PIXEL_FORMAT_INDEX","COLOUR_SPACE_INDEX","HEIGHT_INDEX","WIDTH_INDEX","MIPMAPCOUNT_INDEX","METADATA_SIZE_INDEX","PVR_PIXEL_FORMATS","GL_EXTENSIONS_CONSTANTS","COMPRESSED_RGB_PVRTC_2BPPV1_IMG","COMPRESSED_RGBA_PVRTC_2BPPV1_IMG","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGB_ETC1_WEBGL","COMPRESSED_RGB_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","COMPRESSED_RGB8_ETC2","COMPRESSED_RGBA8_ETC2_EAC","COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2","COMPRESSED_R11_EAC","COMPRESSED_RG11_EAC","COMPRESSED_RGBA_ASTC_4X4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR","COMPRESSED_RGBA_ASTC_5X4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR","COMPRESSED_RGBA_ASTC_5X5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR","COMPRESSED_RGBA_ASTC_6X5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR","COMPRESSED_RGBA_ASTC_6X6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR","COMPRESSED_RGBA_ASTC_8X5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR","COMPRESSED_RGBA_ASTC_8X6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR","COMPRESSED_RGBA_ASTC_8X8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR","COMPRESSED_RGBA_ASTC_10X5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR","COMPRESSED_RGBA_ASTC_10X6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR","COMPRESSED_RGBA_ASTC_10X8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR","COMPRESSED_RGBA_ASTC_10X10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR","COMPRESSED_RGBA_ASTC_12X10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR","COMPRESSED_RGBA_ASTC_12X12_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR","PVR_SIZE_FUNCTIONS","pvrtc2bppSize","pvrtc4bppSize","dxtEtcSmallSize","dxtEtcAstcBigSize","atc5x4Size","atc5x5Size","atc6x5Size","atc6x6Size","atc8x5Size","atc8x6Size","atc8x8Size","atc10x5Size","atc10x6Size","atc10x8Size","atc10x10Size","atc12x10Size","atc12x12Size","isPVR","data","header","Uint32Array","version","parsePVR","pvrFormat","colourSpace","pixelFormats","internalFormat","length","sizeFunction","mipMapLevels","width","height","dataOffset","image","Uint8Array","extractMipmapImages","Math","max","floor"],"sources":["../../../../src/lib/parsers/parse-pvr.ts"],"sourcesContent":["/* eslint-disable camelcase */\n// Forked from PicoGL: https://github.com/tsherif/picogl.js/blob/master/examples/utils/utils.js\n// Copyright (c) 2017 Tarek Sherif, The MIT License (MIT)\n\nimport type {TextureLevel} from '@loaders.gl/schema';\nimport {GL_EXTENSIONS_CONSTANTS} from '../gl-extensions';\nimport {extractMipmapImages} from '../utils/extract-mipmap-images';\n\nconst PVR_CONSTANTS: Record<string, number> = {\n MAGIC_NUMBER: 0x03525650,\n MAGIC_NUMBER_EXTRA: 0x50565203,\n HEADER_LENGTH: 13,\n HEADER_SIZE: 52,\n MAGIC_NUMBER_INDEX: 0,\n PIXEL_FORMAT_INDEX: 2,\n COLOUR_SPACE_INDEX: 4,\n HEIGHT_INDEX: 6,\n WIDTH_INDEX: 7,\n MIPMAPCOUNT_INDEX: 11,\n METADATA_SIZE_INDEX: 12\n};\n\nconst PVR_PIXEL_FORMATS: Record<number, number[]> = {\n 0: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_2BPPV1_IMG],\n 1: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG],\n 2: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_4BPPV1_IMG],\n 3: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG],\n 6: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ETC1_WEBGL],\n 7: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT],\n 9: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT],\n 11: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT],\n 22: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_ETC2],\n 23: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA8_ETC2_EAC],\n 24: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2],\n 25: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_R11_EAC],\n 26: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RG11_EAC],\n 27: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR\n ],\n 28: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X4_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR\n ],\n 29: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X5_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR\n ],\n 30: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X5_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR\n ],\n 31: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X6_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR\n ],\n 32: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X5_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR\n ],\n 33: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X6_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR\n ],\n 34: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X8_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR\n ],\n 35: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X5_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR\n ],\n 36: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X6_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR\n ],\n 37: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X8_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR\n ],\n 38: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X10_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR\n ],\n 39: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X10_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR\n ],\n 40: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X12_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR\n ]\n};\n\nconst PVR_SIZE_FUNCTIONS: Record<number, (width: number, height: number) => number> = {\n 0: pvrtc2bppSize,\n 1: pvrtc2bppSize,\n 2: pvrtc4bppSize,\n 3: pvrtc4bppSize,\n 6: dxtEtcSmallSize,\n 7: dxtEtcSmallSize,\n 9: dxtEtcAstcBigSize,\n 11: dxtEtcAstcBigSize,\n 22: dxtEtcSmallSize,\n 23: dxtEtcAstcBigSize,\n 24: dxtEtcSmallSize,\n 25: dxtEtcSmallSize,\n 26: dxtEtcAstcBigSize,\n 27: dxtEtcAstcBigSize,\n 28: atc5x4Size,\n 29: atc5x5Size,\n 30: atc6x5Size,\n 31: atc6x6Size,\n 32: atc8x5Size,\n 33: atc8x6Size,\n 34: atc8x8Size,\n 35: atc10x5Size,\n 36: atc10x6Size,\n 37: atc10x8Size,\n 38: atc10x10Size,\n 39: atc12x10Size,\n 40: atc12x12Size\n};\n\n/**\n * Check if data is in \"PVR\" format by its magic number\n * @param data - binary data of compressed texture\n * @returns true - data in \"PVR\" format, else - false\n */\nexport function isPVR(data: ArrayBuffer): boolean {\n const header = new Uint32Array(data, 0, PVR_CONSTANTS.HEADER_LENGTH);\n const version = header[PVR_CONSTANTS.MAGIC_NUMBER_INDEX];\n\n return version === PVR_CONSTANTS.MAGIC_NUMBER || version === PVR_CONSTANTS.MAGIC_NUMBER_EXTRA;\n}\n\n/**\n * Parse texture data as \"PVR\" format\n * @param data - binary data of compressed texture\n * @returns Array of the texture levels\n * @see http://cdn.imgtec.com/sdk-documentation/PVR+File+Format.Specification.pdf\n */\nexport function parsePVR(data: ArrayBuffer): TextureLevel[] {\n const header = new Uint32Array(data, 0, PVR_CONSTANTS.HEADER_LENGTH);\n\n const pvrFormat = header[PVR_CONSTANTS.PIXEL_FORMAT_INDEX];\n const colourSpace = header[PVR_CONSTANTS.COLOUR_SPACE_INDEX];\n const pixelFormats = PVR_PIXEL_FORMATS[pvrFormat] || [];\n const internalFormat = pixelFormats.length > 1 && colourSpace ? pixelFormats[1] : pixelFormats[0];\n\n const sizeFunction = PVR_SIZE_FUNCTIONS[pvrFormat];\n\n const mipMapLevels = header[PVR_CONSTANTS.MIPMAPCOUNT_INDEX];\n\n const width = header[PVR_CONSTANTS.WIDTH_INDEX];\n const height = header[PVR_CONSTANTS.HEIGHT_INDEX];\n\n const dataOffset = PVR_CONSTANTS.HEADER_SIZE + header[PVR_CONSTANTS.METADATA_SIZE_INDEX];\n\n const image = new Uint8Array(data, dataOffset);\n\n return extractMipmapImages(image, {\n mipMapLevels,\n width,\n height,\n sizeFunction,\n internalFormat\n });\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_pvrtc/\nfunction pvrtc2bppSize(width: number, height: number): number {\n width = Math.max(width, 16);\n height = Math.max(height, 8);\n\n return (width * height) / 4;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_pvrtc/\nfunction pvrtc4bppSize(width: number, height: number): number {\n width = Math.max(width, 8);\n height = Math.max(height, 8);\n\n return (width * height) / 2;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_s3tc/\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_etc/\n// Size for:\n// COMPRESSED_RGB_S3TC_DXT1_EXT\n// COMPRESSED_R11_EAC\n// COMPRESSED_SIGNED_R11_EAC\n// COMPRESSED_RGB8_ETC2\n// COMPRESSED_SRGB8_ETC2\n// COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2\n// COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2\nfunction dxtEtcSmallSize(width: number, height: number): number {\n return Math.floor((width + 3) / 4) * Math.floor((height + 3) / 4) * 8;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_s3tc/\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_etc/\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\n// Size for:\n// COMPRESSED_RGBA_S3TC_DXT3_EXT\n// COMPRESSED_RGBA_S3TC_DXT5_EXT\n// COMPRESSED_RG11_EAC\n// COMPRESSED_SIGNED_RG11_EAC\n// COMPRESSED_RGBA8_ETC2_EAC\n// COMPRESSED_SRGB8_ALPHA8_ETC2_EAC\n// COMPRESSED_RGBA_ASTC_4x4_KHR\nfunction dxtEtcAstcBigSize(width: number, height: number): number {\n return Math.floor((width + 3) / 4) * Math.floor((height + 3) / 4) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc5x4Size(width: number, height: number): number {\n return Math.floor((width + 4) / 5) * Math.floor((height + 3) / 4) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc5x5Size(width: number, height: number): number {\n return Math.floor((width + 4) / 5) * Math.floor((height + 4) / 5) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc6x5Size(width: number, height: number): number {\n return Math.floor((width + 5) / 6) * Math.floor((height + 4) / 5) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc6x6Size(width: number, height: number): number {\n return Math.floor((width + 5) / 6) * Math.floor((height + 5) / 6) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc8x5Size(width: number, height: number): number {\n return Math.floor((width + 7) / 8) * Math.floor((height + 4) / 5) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc8x6Size(width: number, height: number): number {\n return Math.floor((width + 7) / 8) * Math.floor((height + 5) / 6) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc8x8Size(width: number, height: number): number {\n return Math.floor((width + 7) / 8) * Math.floor((height + 7) / 8) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc10x5Size(width: number, height: number): number {\n return Math.floor((width + 9) / 10) * Math.floor((height + 4) / 5) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc10x6Size(width: number, height: number): number {\n return Math.floor((width + 9) / 10) * Math.floor((height + 5) / 6) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc10x8Size(width: number, height: number): number {\n return Math.floor((width + 9) / 10) * Math.floor((height + 7) / 8) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc10x10Size(width: number, height: number): number {\n return Math.floor((width + 9) / 10) * Math.floor((height + 9) / 10) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc12x10Size(width: number, height: number): number {\n return Math.floor((width + 11) / 12) * Math.floor((height + 9) / 10) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc12x12Size(width: number, height: number): number {\n return Math.floor((width + 11) / 12) * Math.floor((height + 11) / 12) * 16;\n}\n"],"mappings":"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"}
|