@loaders.gl/textures 3.4.0-alpha.2 → 3.4.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/basis-nodejs-worker.js +124 -45
- package/dist/basis-worker.js +3 -3
- package/dist/compressed-texture-worker.js +3 -3
- package/dist/crunch-worker.js +2 -2
- package/dist/es5/basis-loader.js +0 -2
- package/dist/es5/basis-loader.js.map +1 -1
- package/dist/es5/compressed-texture-loader.js +24 -31
- package/dist/es5/compressed-texture-loader.js.map +1 -1
- package/dist/es5/compressed-texture-writer.js +0 -1
- package/dist/es5/compressed-texture-writer.js.map +1 -1
- package/dist/es5/crunch-loader.js +0 -2
- package/dist/es5/crunch-loader.js.map +1 -1
- package/dist/es5/index.js +0 -2
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/ktx2-basis-writer-nodejs.js.map +1 -1
- package/dist/es5/ktx2-basis-writer.js +0 -1
- package/dist/es5/ktx2-basis-writer.js.map +1 -1
- package/dist/es5/lib/encoders/encode-ktx.js.map +1 -1
- package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js +36 -38
- package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js.map +1 -1
- package/dist/es5/lib/encoders/encode-texture.js +15 -18
- package/dist/es5/lib/encoders/encode-texture.js.map +1 -1
- package/dist/es5/lib/gl-extensions.js +0 -8
- package/dist/es5/lib/gl-extensions.js.map +1 -1
- package/dist/es5/lib/parsers/basis-module-loader.js +93 -104
- package/dist/es5/lib/parsers/basis-module-loader.js.map +1 -1
- package/dist/es5/lib/parsers/crunch-module-loader.js +31 -36
- package/dist/es5/lib/parsers/crunch-module-loader.js.map +1 -1
- package/dist/es5/lib/parsers/parse-basis.js +46 -59
- package/dist/es5/lib/parsers/parse-basis.js.map +1 -1
- package/dist/es5/lib/parsers/parse-compressed-texture.js.map +1 -1
- package/dist/es5/lib/parsers/parse-crunch.js +39 -49
- package/dist/es5/lib/parsers/parse-crunch.js.map +1 -1
- package/dist/es5/lib/parsers/parse-dds.js +0 -5
- package/dist/es5/lib/parsers/parse-dds.js.map +1 -1
- package/dist/es5/lib/parsers/parse-ktx.js +2 -16
- package/dist/es5/lib/parsers/parse-ktx.js.map +1 -1
- package/dist/es5/lib/parsers/parse-npy.js +0 -5
- package/dist/es5/lib/parsers/parse-npy.js.map +1 -1
- package/dist/es5/lib/parsers/parse-pvr.js +0 -20
- package/dist/es5/lib/parsers/parse-pvr.js.map +1 -1
- package/dist/es5/lib/texture-api/async-deep-map.js +93 -85
- package/dist/es5/lib/texture-api/async-deep-map.js.map +1 -1
- package/dist/es5/lib/texture-api/deep-load.js +28 -32
- package/dist/es5/lib/texture-api/deep-load.js.map +1 -1
- package/dist/es5/lib/texture-api/generate-url.js +0 -1
- package/dist/es5/lib/texture-api/generate-url.js.map +1 -1
- package/dist/es5/lib/texture-api/load-image-array.js +31 -35
- package/dist/es5/lib/texture-api/load-image-array.js.map +1 -1
- package/dist/es5/lib/texture-api/load-image-cube.js +59 -45
- package/dist/es5/lib/texture-api/load-image-cube.js.map +1 -1
- package/dist/es5/lib/texture-api/load-image.js +65 -72
- package/dist/es5/lib/texture-api/load-image.js.map +1 -1
- package/dist/es5/lib/utils/extract-mipmap-images.js.map +1 -1
- package/dist/es5/lib/utils/ktx-format-helper.js +0 -1
- package/dist/es5/lib/utils/ktx-format-helper.js.map +1 -1
- package/dist/es5/lib/utils/texture-formats.js +1 -4
- package/dist/es5/lib/utils/texture-formats.js.map +1 -1
- package/dist/es5/lib/utils/version.js +1 -1
- package/dist/es5/lib/utils/version.js.map +1 -1
- package/dist/es5/npy-loader.js +6 -11
- package/dist/es5/npy-loader.js.map +1 -1
- package/dist/es5/workers/basis-nodejs-worker.js.map +1 -1
- package/dist/es5/workers/basis-worker.js.map +1 -1
- package/dist/es5/workers/compressed-texture-worker.js.map +1 -1
- package/dist/es5/workers/crunch-worker.js.map +1 -1
- package/dist/es5/workers/ktx2-basis-writer-nodejs-worker.js +29 -31
- package/dist/es5/workers/ktx2-basis-writer-nodejs-worker.js.map +1 -1
- package/dist/es5/workers/ktx2-basis-writer-worker.js +29 -31
- package/dist/es5/workers/ktx2-basis-writer-worker.js.map +1 -1
- package/dist/es5/workers/npy-worker.js.map +1 -1
- package/dist/esm/basis-loader.js +0 -3
- package/dist/esm/basis-loader.js.map +1 -1
- package/dist/esm/bundle.js +0 -1
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/compressed-texture-loader.js +1 -6
- package/dist/esm/compressed-texture-loader.js.map +1 -1
- package/dist/esm/compressed-texture-writer.js +0 -1
- package/dist/esm/compressed-texture-writer.js.map +1 -1
- package/dist/esm/crunch-loader.js +0 -2
- package/dist/esm/crunch-loader.js.map +1 -1
- package/dist/esm/index.js +0 -5
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/ktx2-basis-writer-nodejs.js +0 -1
- package/dist/esm/ktx2-basis-writer-nodejs.js.map +1 -1
- package/dist/esm/ktx2-basis-writer.js +0 -2
- package/dist/esm/ktx2-basis-writer.js.map +1 -1
- package/dist/esm/lib/encoders/encode-ktx.js.map +1 -1
- package/dist/esm/lib/encoders/encode-ktx2-basis-texture.js +0 -1
- package/dist/esm/lib/encoders/encode-ktx2-basis-texture.js.map +1 -1
- package/dist/esm/lib/encoders/encode-texture.js +1 -2
- package/dist/esm/lib/encoders/encode-texture.js.map +1 -1
- package/dist/esm/lib/gl-extensions.js +0 -9
- package/dist/esm/lib/gl-extensions.js.map +1 -1
- package/dist/esm/lib/parsers/basis-module-loader.js +1 -11
- package/dist/esm/lib/parsers/basis-module-loader.js.map +1 -1
- package/dist/esm/lib/parsers/crunch-module-loader.js +0 -4
- package/dist/esm/lib/parsers/crunch-module-loader.js.map +1 -1
- package/dist/esm/lib/parsers/parse-basis.js +0 -13
- package/dist/esm/lib/parsers/parse-basis.js.map +1 -1
- package/dist/esm/lib/parsers/parse-compressed-texture.js +0 -1
- package/dist/esm/lib/parsers/parse-compressed-texture.js.map +1 -1
- package/dist/esm/lib/parsers/parse-crunch.js +0 -12
- package/dist/esm/lib/parsers/parse-crunch.js.map +1 -1
- package/dist/esm/lib/parsers/parse-dds.js +0 -5
- package/dist/esm/lib/parsers/parse-dds.js.map +1 -1
- package/dist/esm/lib/parsers/parse-ktx.js +2 -16
- package/dist/esm/lib/parsers/parse-ktx.js.map +1 -1
- package/dist/esm/lib/parsers/parse-npy.js +0 -6
- package/dist/esm/lib/parsers/parse-npy.js.map +1 -1
- package/dist/esm/lib/parsers/parse-pvr.js +0 -21
- package/dist/esm/lib/parsers/parse-pvr.js.map +1 -1
- package/dist/esm/lib/texture-api/async-deep-map.js +0 -5
- package/dist/esm/lib/texture-api/async-deep-map.js.map +1 -1
- package/dist/esm/lib/texture-api/deep-load.js +0 -1
- package/dist/esm/lib/texture-api/deep-load.js.map +1 -1
- package/dist/esm/lib/texture-api/generate-url.js +0 -2
- package/dist/esm/lib/texture-api/generate-url.js.map +1 -1
- package/dist/esm/lib/texture-api/load-image-array.js +0 -1
- package/dist/esm/lib/texture-api/load-image-array.js.map +1 -1
- package/dist/esm/lib/texture-api/load-image-cube.js +0 -3
- package/dist/esm/lib/texture-api/load-image-cube.js.map +1 -1
- package/dist/esm/lib/texture-api/load-image.js +0 -4
- package/dist/esm/lib/texture-api/load-image.js.map +1 -1
- package/dist/esm/lib/utils/extract-mipmap-images.js +0 -1
- package/dist/esm/lib/utils/extract-mipmap-images.js.map +1 -1
- package/dist/esm/lib/utils/ktx-format-helper.js +0 -1
- package/dist/esm/lib/utils/ktx-format-helper.js.map +1 -1
- package/dist/esm/lib/utils/texture-formats.js +0 -3
- package/dist/esm/lib/utils/texture-formats.js.map +1 -1
- package/dist/esm/lib/utils/version.js +1 -2
- package/dist/esm/lib/utils/version.js.map +1 -1
- package/dist/esm/npy-loader.js +0 -4
- package/dist/esm/npy-loader.js.map +1 -1
- package/dist/esm/workers/crunch-worker.js +0 -1
- package/dist/esm/workers/crunch-worker.js.map +1 -1
- package/dist/ktx2-basis-writer-nodejs-worker.js +124 -45
- package/dist/ktx2-basis-writer-worker.js +3 -3
- package/dist/npy-worker.js +1 -1
- package/package.json +7 -7
|
@@ -8,24 +8,10 @@ exports.parseKTX = parseKTX;
|
|
|
8
8
|
var _ktxParse = require("ktx-parse");
|
|
9
9
|
var _extractMipmapImages = require("../utils/extract-mipmap-images");
|
|
10
10
|
var _ktxFormatHelper = require("../utils/ktx-format-helper");
|
|
11
|
-
var KTX2_ID = [
|
|
12
|
-
0xab, 0x4b, 0x54, 0x58, 0x20, 0x32, 0x30, 0xbb, 0x0d, 0x0a, 0x1a, 0x0a];
|
|
13
|
-
|
|
11
|
+
var KTX2_ID = [0xab, 0x4b, 0x54, 0x58, 0x20, 0x32, 0x30, 0xbb, 0x0d, 0x0a, 0x1a, 0x0a];
|
|
14
12
|
function isKTX(data) {
|
|
15
13
|
var id = new Uint8Array(data);
|
|
16
|
-
var notKTX = id.byteLength < KTX2_ID.length || id[0] !== KTX2_ID[0] ||
|
|
17
|
-
id[1] !== KTX2_ID[1] ||
|
|
18
|
-
id[2] !== KTX2_ID[2] ||
|
|
19
|
-
id[3] !== KTX2_ID[3] ||
|
|
20
|
-
id[4] !== KTX2_ID[4] ||
|
|
21
|
-
id[5] !== KTX2_ID[5] ||
|
|
22
|
-
id[6] !== KTX2_ID[6] ||
|
|
23
|
-
id[7] !== KTX2_ID[7] ||
|
|
24
|
-
id[8] !== KTX2_ID[8] ||
|
|
25
|
-
id[9] !== KTX2_ID[9] ||
|
|
26
|
-
id[10] !== KTX2_ID[10] ||
|
|
27
|
-
id[11] !== KTX2_ID[11];
|
|
28
|
-
|
|
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];
|
|
29
15
|
return !notKTX;
|
|
30
16
|
}
|
|
31
17
|
function parseKTX(arrayBuffer) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-ktx.js","names":["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;AACA;AACA;AAEA,
|
|
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"}
|
|
@@ -4,14 +4,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.parseNPY = parseNPY;
|
|
7
|
-
|
|
8
7
|
function systemIsLittleEndian() {
|
|
9
8
|
var a = new Uint32Array([0x12345678]);
|
|
10
9
|
var b = new Uint8Array(a.buffer, a.byteOffset, a.byteLength);
|
|
11
10
|
return !(b[0] === 0x12);
|
|
12
11
|
}
|
|
13
12
|
var LITTLE_ENDIAN_OS = systemIsLittleEndian();
|
|
14
|
-
|
|
15
13
|
var DTYPES = {
|
|
16
14
|
u1: Uint8Array,
|
|
17
15
|
i1: Int8Array,
|
|
@@ -44,7 +42,6 @@ function parseNPY(arrayBuffer, options) {
|
|
|
44
42
|
throw new Error('Buffer overflow');
|
|
45
43
|
}
|
|
46
44
|
var data = new ArrayType(arrayBuffer.slice(headerEndOffset, headerEndOffset + arrayByteLength));
|
|
47
|
-
|
|
48
45
|
if (numpyType[0] === '>' && LITTLE_ENDIAN_OS || numpyType[0] === '<' && !LITTLE_ENDIAN_OS) {
|
|
49
46
|
throw new Error('Incorrect endianness');
|
|
50
47
|
}
|
|
@@ -53,10 +50,8 @@ function parseNPY(arrayBuffer, options) {
|
|
|
53
50
|
header: header
|
|
54
51
|
};
|
|
55
52
|
}
|
|
56
|
-
|
|
57
53
|
function parseHeader(view) {
|
|
58
54
|
var majorVersion = view.getUint8(6);
|
|
59
|
-
|
|
60
55
|
var offset = 8;
|
|
61
56
|
var headerLength;
|
|
62
57
|
if (majorVersion >= 2) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-npy.js","names":["systemIsLittleEndian","a","Uint32Array","b","Uint8Array","buffer","byteOffset","byteLength","LITTLE_ENDIAN_OS","DTYPES","u1","i1","Int8Array","u2","Uint16Array","i2","Int16Array","u4","i4","Int32Array","f4","Float32Array","f8","Float64Array","parseNPY","arrayBuffer","options","view","DataView","parseHeader","header","headerEndOffset","numpyType","descr","ArrayType","slice","Error","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';\n\ntype NumpyHeader = {descr: string; shape: number[]};\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\nfunction systemIsLittleEndian() {\n const a = new Uint32Array([0x12345678]);\n const b = new Uint8Array(a.buffer, a.byteOffset, a.byteLength);\n return !(b[0] === 0x12);\n}\n\nconst LITTLE_ENDIAN_OS = systemIsLittleEndian();\n\n// The basic string format consists of 3 characters:\n// 1. a character describing the byteorder of the data (<: little-endian, >: big-endian, |: not-relevant)\n// 2. a character code giving the basic type of the array\n// 3. an integer providing the number of bytes the type uses.\n// https://numpy.org/doc/stable/reference/arrays.interface.html\n//\n// Here I only include the second and third characters, and check endianness\n// separately\nconst DTYPES: Record<string, 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?: unknown) {\n if (!arrayBuffer) {\n return null;\n }\n\n const view = new DataView(arrayBuffer);\n const {header, headerEndOffset} = parseHeader(view);\n\n const numpyType = header.descr;\n const ArrayType = DTYPES[numpyType.slice(1, 3)];\n if (!ArrayType) {\n 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":"
|
|
1
|
+
{"version":3,"file":"parse-npy.js","names":["systemIsLittleEndian","a","Uint32Array","b","Uint8Array","buffer","byteOffset","byteLength","LITTLE_ENDIAN_OS","DTYPES","u1","i1","Int8Array","u2","Uint16Array","i2","Int16Array","u4","i4","Int32Array","f4","Float32Array","f8","Float64Array","parseNPY","arrayBuffer","options","_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';\n\ntype NumpyHeader = {descr: string; shape: number[]};\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\nfunction systemIsLittleEndian() {\n const a = new Uint32Array([0x12345678]);\n const b = new Uint8Array(a.buffer, a.byteOffset, a.byteLength);\n return !(b[0] === 0x12);\n}\n\nconst LITTLE_ENDIAN_OS = systemIsLittleEndian();\n\n// The basic string format consists of 3 characters:\n// 1. a character describing the byteorder of the data (<: little-endian, >: big-endian, |: not-relevant)\n// 2. a character code giving the basic type of the array\n// 3. an integer providing the number of bytes the type uses.\n// https://numpy.org/doc/stable/reference/arrays.interface.html\n//\n// Here I only include the second and third characters, and check endianness\n// separately\nconst DTYPES: Record<string, 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?: unknown) {\n if (!arrayBuffer) {\n return null;\n }\n\n const view = new DataView(arrayBuffer);\n const {header, headerEndOffset} = parseHeader(view);\n\n const numpyType = header.descr;\n const ArrayType = DTYPES[numpyType.slice(1, 3)];\n if (!ArrayType) {\n 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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"}
|
|
@@ -7,7 +7,6 @@ exports.isPVR = isPVR;
|
|
|
7
7
|
exports.parsePVR = parsePVR;
|
|
8
8
|
var _glExtensions = require("../gl-extensions");
|
|
9
9
|
var _extractMipmapImages = require("../utils/extract-mipmap-images");
|
|
10
|
-
|
|
11
10
|
var PVR_CONSTANTS = {
|
|
12
11
|
MAGIC_NUMBER: 0x03525650,
|
|
13
12
|
MAGIC_NUMBER_EXTRA: 0x50565203,
|
|
@@ -79,13 +78,11 @@ var PVR_SIZE_FUNCTIONS = {
|
|
|
79
78
|
39: atc12x10Size,
|
|
80
79
|
40: atc12x12Size
|
|
81
80
|
};
|
|
82
|
-
|
|
83
81
|
function isPVR(data) {
|
|
84
82
|
var header = new Uint32Array(data, 0, PVR_CONSTANTS.HEADER_LENGTH);
|
|
85
83
|
var version = header[PVR_CONSTANTS.MAGIC_NUMBER_INDEX];
|
|
86
84
|
return version === PVR_CONSTANTS.MAGIC_NUMBER || version === PVR_CONSTANTS.MAGIC_NUMBER_EXTRA;
|
|
87
85
|
}
|
|
88
|
-
|
|
89
86
|
function parsePVR(data) {
|
|
90
87
|
var header = new Uint32Array(data, 0, PVR_CONSTANTS.HEADER_LENGTH);
|
|
91
88
|
var pvrFormat = header[PVR_CONSTANTS.PIXEL_FORMAT_INDEX];
|
|
@@ -106,75 +103,58 @@ function parsePVR(data) {
|
|
|
106
103
|
internalFormat: internalFormat
|
|
107
104
|
});
|
|
108
105
|
}
|
|
109
|
-
|
|
110
106
|
function pvrtc2bppSize(width, height) {
|
|
111
107
|
width = Math.max(width, 16);
|
|
112
108
|
height = Math.max(height, 8);
|
|
113
109
|
return width * height / 4;
|
|
114
110
|
}
|
|
115
|
-
|
|
116
111
|
function pvrtc4bppSize(width, height) {
|
|
117
112
|
width = Math.max(width, 8);
|
|
118
113
|
height = Math.max(height, 8);
|
|
119
114
|
return width * height / 2;
|
|
120
115
|
}
|
|
121
|
-
|
|
122
116
|
function dxtEtcSmallSize(width, height) {
|
|
123
117
|
return Math.floor((width + 3) / 4) * Math.floor((height + 3) / 4) * 8;
|
|
124
118
|
}
|
|
125
|
-
|
|
126
119
|
function dxtEtcAstcBigSize(width, height) {
|
|
127
120
|
return Math.floor((width + 3) / 4) * Math.floor((height + 3) / 4) * 16;
|
|
128
121
|
}
|
|
129
|
-
|
|
130
122
|
function atc5x4Size(width, height) {
|
|
131
123
|
return Math.floor((width + 4) / 5) * Math.floor((height + 3) / 4) * 16;
|
|
132
124
|
}
|
|
133
|
-
|
|
134
125
|
function atc5x5Size(width, height) {
|
|
135
126
|
return Math.floor((width + 4) / 5) * Math.floor((height + 4) / 5) * 16;
|
|
136
127
|
}
|
|
137
|
-
|
|
138
128
|
function atc6x5Size(width, height) {
|
|
139
129
|
return Math.floor((width + 5) / 6) * Math.floor((height + 4) / 5) * 16;
|
|
140
130
|
}
|
|
141
|
-
|
|
142
131
|
function atc6x6Size(width, height) {
|
|
143
132
|
return Math.floor((width + 5) / 6) * Math.floor((height + 5) / 6) * 16;
|
|
144
133
|
}
|
|
145
|
-
|
|
146
134
|
function atc8x5Size(width, height) {
|
|
147
135
|
return Math.floor((width + 7) / 8) * Math.floor((height + 4) / 5) * 16;
|
|
148
136
|
}
|
|
149
|
-
|
|
150
137
|
function atc8x6Size(width, height) {
|
|
151
138
|
return Math.floor((width + 7) / 8) * Math.floor((height + 5) / 6) * 16;
|
|
152
139
|
}
|
|
153
|
-
|
|
154
140
|
function atc8x8Size(width, height) {
|
|
155
141
|
return Math.floor((width + 7) / 8) * Math.floor((height + 7) / 8) * 16;
|
|
156
142
|
}
|
|
157
|
-
|
|
158
143
|
function atc10x5Size(width, height) {
|
|
159
144
|
return Math.floor((width + 9) / 10) * Math.floor((height + 4) / 5) * 16;
|
|
160
145
|
}
|
|
161
|
-
|
|
162
146
|
function atc10x6Size(width, height) {
|
|
163
147
|
return Math.floor((width + 9) / 10) * Math.floor((height + 5) / 6) * 16;
|
|
164
148
|
}
|
|
165
|
-
|
|
166
149
|
function atc10x8Size(width, height) {
|
|
167
150
|
return Math.floor((width + 9) / 10) * Math.floor((height + 7) / 8) * 16;
|
|
168
151
|
}
|
|
169
|
-
|
|
170
152
|
function atc10x10Size(width, height) {
|
|
171
153
|
return Math.floor((width + 9) / 10) * Math.floor((height + 9) / 10) * 16;
|
|
172
154
|
}
|
|
173
|
-
|
|
174
155
|
function atc12x10Size(width, height) {
|
|
175
156
|
return Math.floor((width + 11) / 12) * Math.floor((height + 9) / 10) * 16;
|
|
176
157
|
}
|
|
177
|
-
|
|
178
158
|
function atc12x12Size(width, height) {
|
|
179
159
|
return Math.floor((width + 11) / 12) * Math.floor((height + 11) / 12) * 16;
|
|
180
160
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-pvr.js","names":["PVR_CONSTANTS","MAGIC_NUMBER","MAGIC_NUMBER_EXTRA","HEADER_LENGTH","HEADER_SIZE","MAGIC_NUMBER_INDEX","PIXEL_FORMAT_INDEX","COLOUR_SPACE_INDEX","HEIGHT_INDEX","WIDTH_INDEX","MIPMAPCOUNT_INDEX","METADATA_SIZE_INDEX","PVR_PIXEL_FORMATS","GL_EXTENSIONS_CONSTANTS","COMPRESSED_RGB_PVRTC_2BPPV1_IMG","COMPRESSED_RGBA_PVRTC_2BPPV1_IMG","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGB_ETC1_WEBGL","COMPRESSED_RGB_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","COMPRESSED_RGB8_ETC2","COMPRESSED_RGBA8_ETC2_EAC","COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2","COMPRESSED_R11_EAC","COMPRESSED_RG11_EAC","COMPRESSED_RGBA_ASTC_4X4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR","COMPRESSED_RGBA_ASTC_5X4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR","COMPRESSED_RGBA_ASTC_5X5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR","COMPRESSED_RGBA_ASTC_6X5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR","COMPRESSED_RGBA_ASTC_6X6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR","COMPRESSED_RGBA_ASTC_8X5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR","COMPRESSED_RGBA_ASTC_8X6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR","COMPRESSED_RGBA_ASTC_8X8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR","COMPRESSED_RGBA_ASTC_10X5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR","COMPRESSED_RGBA_ASTC_10X6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR","COMPRESSED_RGBA_ASTC_10X8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR","COMPRESSED_RGBA_ASTC_10X10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR","COMPRESSED_RGBA_ASTC_12X10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR","COMPRESSED_RGBA_ASTC_12X12_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR","PVR_SIZE_FUNCTIONS","pvrtc2bppSize","pvrtc4bppSize","dxtEtcSmallSize","dxtEtcAstcBigSize","atc5x4Size","atc5x5Size","atc6x5Size","atc6x6Size","atc8x5Size","atc8x6Size","atc8x8Size","atc10x5Size","atc10x6Size","atc10x8Size","atc10x10Size","atc12x10Size","atc12x12Size","isPVR","data","header","Uint32Array","version","parsePVR","pvrFormat","colourSpace","pixelFormats","internalFormat","length","sizeFunction","mipMapLevels","width","height","dataOffset","image","Uint8Array","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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"}
|
|
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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"}
|
|
@@ -9,11 +9,9 @@ exports.mapSubtree = mapSubtree;
|
|
|
9
9
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
10
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
11
11
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
12
|
-
|
|
13
12
|
var isObject = function isObject(value) {
|
|
14
13
|
return value && (0, _typeof2.default)(value) === 'object';
|
|
15
14
|
};
|
|
16
|
-
|
|
17
15
|
function asyncDeepMap(_x, _x2) {
|
|
18
16
|
return _asyncDeepMap.apply(this, arguments);
|
|
19
17
|
}
|
|
@@ -22,18 +20,16 @@ function _asyncDeepMap() {
|
|
|
22
20
|
var options,
|
|
23
21
|
_args = arguments;
|
|
24
22
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
25
|
-
while (1) {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
return _context.stop();
|
|
36
|
-
}
|
|
23
|
+
while (1) switch (_context.prev = _context.next) {
|
|
24
|
+
case 0:
|
|
25
|
+
options = _args.length > 2 && _args[2] !== undefined ? _args[2] : {};
|
|
26
|
+
_context.next = 3;
|
|
27
|
+
return mapSubtree(tree, func, options);
|
|
28
|
+
case 3:
|
|
29
|
+
return _context.abrupt("return", _context.sent);
|
|
30
|
+
case 4:
|
|
31
|
+
case "end":
|
|
32
|
+
return _context.stop();
|
|
37
33
|
}
|
|
38
34
|
}, _callee);
|
|
39
35
|
}));
|
|
@@ -46,36 +42,34 @@ function _mapSubtree() {
|
|
|
46
42
|
_mapSubtree = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(object, func, options) {
|
|
47
43
|
var url;
|
|
48
44
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
49
|
-
while (1) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
return _context2.stop();
|
|
78
|
-
}
|
|
45
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
46
|
+
case 0:
|
|
47
|
+
if (!Array.isArray(object)) {
|
|
48
|
+
_context2.next = 4;
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
_context2.next = 3;
|
|
52
|
+
return mapArray(object, func, options);
|
|
53
|
+
case 3:
|
|
54
|
+
return _context2.abrupt("return", _context2.sent);
|
|
55
|
+
case 4:
|
|
56
|
+
if (!isObject(object)) {
|
|
57
|
+
_context2.next = 8;
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
_context2.next = 7;
|
|
61
|
+
return mapObject(object, func, options);
|
|
62
|
+
case 7:
|
|
63
|
+
return _context2.abrupt("return", _context2.sent);
|
|
64
|
+
case 8:
|
|
65
|
+
url = object;
|
|
66
|
+
_context2.next = 11;
|
|
67
|
+
return func(url, options);
|
|
68
|
+
case 11:
|
|
69
|
+
return _context2.abrupt("return", _context2.sent);
|
|
70
|
+
case 12:
|
|
71
|
+
case "end":
|
|
72
|
+
return _context2.stop();
|
|
79
73
|
}
|
|
80
74
|
}, _callee2);
|
|
81
75
|
}));
|
|
@@ -87,30 +81,46 @@ function mapObject(_x6, _x7, _x8) {
|
|
|
87
81
|
function _mapObject() {
|
|
88
82
|
_mapObject = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(object, func, options) {
|
|
89
83
|
var promises, values, _loop, key;
|
|
90
|
-
return _regenerator.default.wrap(function _callee3$(
|
|
91
|
-
while (1) {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
84
|
+
return _regenerator.default.wrap(function _callee3$(_context4) {
|
|
85
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
86
|
+
case 0:
|
|
87
|
+
promises = [];
|
|
88
|
+
values = {};
|
|
89
|
+
_loop = _regenerator.default.mark(function _loop(key) {
|
|
90
|
+
var url, promise;
|
|
91
|
+
return _regenerator.default.wrap(function _loop$(_context3) {
|
|
92
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
93
|
+
case 0:
|
|
94
|
+
url = object[key];
|
|
95
|
+
promise = mapSubtree(url, func, options).then(function (value) {
|
|
96
|
+
values[key] = value;
|
|
97
|
+
});
|
|
98
|
+
promises.push(promise);
|
|
99
|
+
case 3:
|
|
100
|
+
case "end":
|
|
101
|
+
return _context3.stop();
|
|
102
|
+
}
|
|
103
|
+
}, _loop);
|
|
104
|
+
});
|
|
105
|
+
_context4.t0 = _regenerator.default.keys(object);
|
|
106
|
+
case 4:
|
|
107
|
+
if ((_context4.t1 = _context4.t0()).done) {
|
|
108
|
+
_context4.next = 9;
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
key = _context4.t1.value;
|
|
112
|
+
return _context4.delegateYield(_loop(key), "t2", 7);
|
|
113
|
+
case 7:
|
|
114
|
+
_context4.next = 4;
|
|
115
|
+
break;
|
|
116
|
+
case 9:
|
|
117
|
+
_context4.next = 11;
|
|
118
|
+
return Promise.all(promises);
|
|
119
|
+
case 11:
|
|
120
|
+
return _context4.abrupt("return", values);
|
|
121
|
+
case 12:
|
|
122
|
+
case "end":
|
|
123
|
+
return _context4.stop();
|
|
114
124
|
}
|
|
115
125
|
}, _callee3);
|
|
116
126
|
}));
|
|
@@ -123,23 +133,21 @@ function _mapArray() {
|
|
|
123
133
|
_mapArray = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee4(urlArray, func) {
|
|
124
134
|
var options,
|
|
125
135
|
promises,
|
|
126
|
-
|
|
127
|
-
return _regenerator.default.wrap(function _callee4$(
|
|
128
|
-
while (1) {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
return _context4.stop();
|
|
142
|
-
}
|
|
136
|
+
_args5 = arguments;
|
|
137
|
+
return _regenerator.default.wrap(function _callee4$(_context5) {
|
|
138
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
139
|
+
case 0:
|
|
140
|
+
options = _args5.length > 2 && _args5[2] !== undefined ? _args5[2] : {};
|
|
141
|
+
promises = urlArray.map(function (url) {
|
|
142
|
+
return mapSubtree(url, func, options);
|
|
143
|
+
});
|
|
144
|
+
_context5.next = 4;
|
|
145
|
+
return Promise.all(promises);
|
|
146
|
+
case 4:
|
|
147
|
+
return _context5.abrupt("return", _context5.sent);
|
|
148
|
+
case 5:
|
|
149
|
+
case "end":
|
|
150
|
+
return _context5.stop();
|
|
143
151
|
}
|
|
144
152
|
}, _callee4);
|
|
145
153
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"async-deep-map.js","names":["isObject","value","asyncDeepMap","tree","func","options","mapSubtree","object","Array","isArray","mapArray","mapObject","
|
|
1
|
+
{"version":3,"file":"async-deep-map.js","names":["isObject","value","_typeof2","default","asyncDeepMap","_x","_x2","_asyncDeepMap","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee","tree","func","options","_args","wrap","_callee$","_context","prev","next","length","undefined","mapSubtree","abrupt","sent","stop","_x3","_x4","_x5","_mapSubtree","_callee2","object","url","_callee2$","_context2","Array","isArray","mapArray","mapObject","_x6","_x7","_x8","_mapObject","_callee3","promises","values","_loop","key","_callee3$","_context4","promise","_loop$","_context3","then","push","t0","keys","t1","done","delegateYield","Promise","all","_x9","_x10","_mapArray","_callee4","urlArray","_args5","_callee4$","_context5","map"],"sources":["../../../../src/lib/texture-api/async-deep-map.ts"],"sourcesContent":["// loaders.gl, MIT license\n/*\nAsynchronously maps a deep structure of values (e.g. objects and arrays of urls).\n\nE.g. a mipmapped cubemap\n{\n [CUBE_FACE_FRONT]: [\n \"image-front-0.jpg\",\n \"image-front-1.jpg\",\n \"image-front-2.jpg\",\n ],\n [CUBE_MAP_BACK]: [\n ...\n ]\n}\n*/\nexport type Options = Record<string, any>;\nexport type Func = (url: string, options: Options) => unknown;\n\nconst isObject = (value: any): boolean => value && typeof value === 'object';\n\n// Loads a deep structure of urls (objects and arrays of urls)\n// Returns an object with six key-value pairs containing the images (or image mip arrays)\n// for each cube face\nexport async function asyncDeepMap(tree: unknown, func: Func, options: Options = {}) {\n return await mapSubtree(tree, func, options);\n}\n\nexport async function mapSubtree(object: unknown, func: Func, options: Options) {\n if (Array.isArray(object)) {\n return await mapArray(object, func, options);\n }\n\n if (isObject(object)) {\n return await mapObject(object as object, func, options);\n }\n\n // TODO - ignore non-urls, non-arraybuffers?\n const url = object as string;\n return await func(url, options);\n}\n\n// HELPERS\n\nasync function mapObject(\n object: Record<string, any>,\n func: Func,\n options: Options\n): Promise<Record<string, any>> {\n const promises: Promise<any>[] = [];\n const values: Record<string, any> = {};\n\n for (const key in object) {\n const url = object[key];\n const promise = mapSubtree(url, func, options).then((value) => {\n values[key] = value;\n });\n promises.push(promise);\n }\n\n await Promise.all(promises);\n\n return values;\n}\n\nasync function mapArray(urlArray: string[], func: Func, options = {}): Promise<any[]> {\n const promises = urlArray.map((url) => mapSubtree(url, func, options));\n return await Promise.all(promises);\n}\n"],"mappings":"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"}
|