@loaders.gl/textures 3.1.0-alpha.4 → 3.1.0-beta.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-loader.d.ts +50 -0
- package/dist/basis-loader.d.ts.map +1 -0
- package/dist/basis-loader.js +40 -0
- package/dist/basis-worker.js +675 -2
- package/dist/bundle.d.ts +2 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/bundle.js +2107 -0
- package/dist/compressed-texture-loader.d.ts +63 -0
- package/dist/compressed-texture-loader.d.ts.map +1 -0
- package/dist/compressed-texture-loader.js +64 -0
- package/dist/compressed-texture-worker.js +1179 -2
- package/dist/compressed-texture-writer.d.ts +25 -0
- package/dist/compressed-texture-writer.d.ts.map +1 -0
- package/dist/compressed-texture-writer.js +28 -0
- package/dist/crunch-loader.d.ts +21 -0
- package/dist/crunch-loader.d.ts.map +1 -0
- package/dist/crunch-loader.js +25 -0
- package/dist/crunch-worker.js +486 -2
- package/dist/es5/basis-loader.js +5 -13
- package/dist/es5/basis-loader.js.map +1 -1
- package/dist/es5/bundle.js +1 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/compressed-texture-loader.js +20 -59
- package/dist/es5/compressed-texture-loader.js.map +1 -1
- package/dist/es5/compressed-texture-writer.js +2 -2
- package/dist/es5/compressed-texture-writer.js.map +1 -1
- package/dist/es5/crunch-loader.js +2 -2
- package/dist/es5/crunch-loader.js.map +1 -1
- package/dist/es5/index.js +26 -18
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/ktx2-basis-universal-texture-writer.js +29 -0
- package/dist/es5/ktx2-basis-universal-texture-writer.js.map +1 -0
- package/dist/es5/lib/encoders/encode-ktx.js +1 -1
- package/dist/es5/lib/encoders/encode-ktx.js.map +1 -1
- package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js +43 -0
- package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js.map +1 -0
- package/dist/es5/lib/encoders/encode-texture.js +13 -41
- package/dist/es5/lib/encoders/encode-texture.js.map +1 -1
- package/dist/es5/lib/{gl-constants.js → gl-extensions.js} +4 -4
- package/dist/es5/lib/gl-extensions.js.map +1 -0
- package/dist/es5/lib/parsers/basis-module-loader.js +51 -190
- package/dist/es5/lib/parsers/basis-module-loader.js.map +1 -1
- package/dist/es5/lib/parsers/crunch-module-loader.js +15 -71
- package/dist/es5/lib/parsers/crunch-module-loader.js.map +1 -1
- package/dist/es5/lib/parsers/parse-basis.js +86 -138
- package/dist/es5/lib/parsers/parse-basis.js.map +1 -1
- package/dist/es5/lib/parsers/parse-crunch.js +59 -80
- package/dist/es5/lib/parsers/parse-crunch.js.map +1 -1
- package/dist/es5/lib/parsers/parse-dds.js +39 -39
- package/dist/es5/lib/parsers/parse-dds.js.map +1 -1
- package/dist/es5/lib/parsers/parse-ktx.js +14 -16
- package/dist/es5/lib/parsers/parse-ktx.js.map +1 -1
- package/dist/es5/lib/parsers/parse-npy.js +27 -28
- package/dist/es5/lib/parsers/parse-npy.js.map +1 -1
- package/dist/es5/lib/parsers/parse-pvr.js +49 -49
- package/dist/es5/lib/parsers/parse-pvr.js.map +1 -1
- package/dist/es5/lib/texture-api/async-deep-map.js +27 -156
- package/dist/es5/lib/texture-api/async-deep-map.js.map +1 -1
- package/dist/es5/lib/texture-api/deep-load.js +6 -67
- package/dist/es5/lib/texture-api/deep-load.js.map +1 -1
- package/dist/es5/lib/texture-api/generate-url.js +4 -16
- package/dist/es5/lib/texture-api/generate-url.js.map +1 -1
- package/dist/es5/lib/texture-api/load-image-array.js +12 -76
- package/dist/es5/lib/texture-api/load-image-array.js.map +1 -1
- package/dist/es5/lib/texture-api/load-image-cube.js +27 -96
- package/dist/es5/lib/texture-api/load-image-cube.js.map +1 -1
- package/dist/es5/lib/texture-api/load-image.js +37 -146
- package/dist/es5/lib/texture-api/load-image.js.map +1 -1
- 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 +9 -9
- package/dist/es5/lib/utils/extract-mipmap-images.js.map +1 -1
- package/dist/es5/lib/utils/ktx-format-helper.js +68 -68
- package/dist/es5/lib/utils/ktx-format-helper.js.map +1 -1
- package/dist/es5/lib/utils/texture-formats.js +9 -27
- 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/libs/README.md +2 -2
- package/dist/es5/libs/basis_encoder.js +1 -1
- package/dist/es5/libs/basis_transcoder.js +1 -1
- package/dist/es5/libs/crunch.js +1 -0
- package/dist/es5/npy-loader.js +7 -42
- package/dist/es5/npy-loader.js.map +1 -1
- package/dist/es5/workers/crunch-worker.js +2 -11
- package/dist/es5/workers/crunch-worker.js.map +1 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/ktx2-basis-universal-texture-writer.js +18 -0
- package/dist/esm/ktx2-basis-universal-texture-writer.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 +1 -1
- package/dist/esm/lib/encoders/encode-texture.js.map +1 -1
- package/dist/esm/lib/{gl-constants.js → gl-extensions.js} +2 -2
- package/dist/esm/lib/gl-extensions.js.map +1 -0
- package/dist/esm/lib/parsers/basis-module-loader.js +8 -3
- package/dist/esm/lib/parsers/basis-module-loader.js.map +1 -1
- package/dist/esm/lib/parsers/crunch-module-loader.js.map +1 -1
- package/dist/esm/lib/parsers/parse-basis.js +8 -8
- package/dist/esm/lib/parsers/parse-basis.js.map +1 -1
- package/dist/esm/lib/parsers/parse-crunch.js +4 -4
- package/dist/esm/lib/parsers/parse-crunch.js.map +1 -1
- package/dist/esm/lib/parsers/parse-dds.js +24 -24
- package/dist/esm/lib/parsers/parse-dds.js.map +1 -1
- package/dist/esm/lib/parsers/parse-ktx.js +2 -2
- package/dist/esm/lib/parsers/parse-ktx.js.map +1 -1
- package/dist/esm/lib/parsers/parse-npy.js +4 -2
- package/dist/esm/lib/parsers/parse-npy.js.map +1 -1
- package/dist/esm/lib/parsers/parse-pvr.js +28 -28
- package/dist/esm/lib/parsers/parse-pvr.js.map +1 -1
- package/dist/esm/lib/texture-api/async-deep-map.js.map +1 -1
- package/dist/esm/lib/texture-api/deep-load.js.map +1 -1
- package/dist/esm/lib/texture-api/generate-url.js +6 -14
- package/dist/esm/lib/texture-api/generate-url.js.map +1 -1
- package/dist/esm/lib/texture-api/load-image-array.js.map +1 -1
- package/dist/esm/lib/texture-api/load-image-cube.js.map +1 -1
- package/dist/esm/lib/texture-api/load-image.js +2 -5
- package/dist/esm/lib/texture-api/load-image.js.map +1 -1
- 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.map +1 -1
- package/dist/esm/lib/utils/ktx-format-helper.js +67 -67
- package/dist/esm/lib/utils/ktx-format-helper.js.map +1 -1
- package/dist/esm/lib/utils/texture-formats.js +1 -1
- package/dist/esm/lib/utils/texture-formats.js.map +1 -1
- package/dist/esm/lib/utils/version.js +1 -1
- package/dist/esm/lib/utils/version.js.map +1 -1
- package/dist/esm/libs/README.md +2 -2
- package/dist/esm/libs/basis_encoder.js +1 -1
- package/dist/esm/libs/basis_transcoder.js +1 -1
- package/dist/esm/libs/crunch.js +1 -0
- package/dist/esm/npy-loader.js.map +1 -1
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/ktx2-basis-universal-texture-writer.d.ts +22 -0
- package/dist/ktx2-basis-universal-texture-writer.d.ts.map +1 -0
- package/dist/ktx2-basis-universal-texture-writer.js +25 -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 +10 -0
- 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 +41 -0
- package/dist/lib/encoders/encode-texture.d.ts +2 -0
- package/dist/lib/encoders/encode-texture.d.ts.map +1 -0
- package/dist/lib/encoders/encode-texture.js +30 -0
- 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 +114 -0
- 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 +35 -0
- package/dist/lib/parsers/parse-basis.d.ts +30 -0
- package/dist/lib/parsers/parse-basis.d.ts.map +1 -0
- package/dist/lib/parsers/parse-basis.js +245 -0
- 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 +26 -0
- 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 +105 -0
- 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 +108 -0
- package/dist/lib/parsers/parse-ktx.d.ts +3 -0
- package/dist/lib/parsers/parse-ktx.d.ts.map +1 -0
- package/dist/lib/parsers/parse-ktx.js +46 -0
- package/dist/lib/parsers/parse-npy.d.ts +10 -0
- package/dist/lib/parsers/parse-npy.d.ts.map +1 -0
- package/dist/lib/parsers/parse-npy.js +85 -0
- 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 +250 -0
- 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 +41 -0
- 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 +16 -0
- 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 +17 -0
- 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 +21 -0
- 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 +47 -0
- 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 +43 -0
- 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 -0
- package/dist/lib/utils/extract-mipmap-images.d.ts +13 -0
- package/dist/lib/utils/extract-mipmap-images.d.ts.map +1 -0
- package/dist/lib/utils/extract-mipmap-images.js +50 -0
- 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 +125 -0
- 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 +51 -0
- 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 -0
- package/dist/libs/README.md +2 -2
- package/dist/libs/basis_encoder.js +1 -1
- package/dist/libs/basis_transcoder.js +1 -1
- package/dist/libs/crunch.js +1 -0
- package/dist/npy-loader.d.ts +45 -0
- package/dist/npy-loader.d.ts.map +1 -0
- package/dist/npy-loader.js +34 -0
- package/dist/npy-worker.js +240 -2
- package/dist/types.d.ts +21 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -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 -0
- 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 -0
- 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 +14 -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 -0
- package/package.json +11 -11
- package/src/index.ts +2 -1
- package/src/ktx2-basis-universal-texture-writer.ts +27 -0
- package/src/lib/encoders/encode-ktx2-basis-texture.ts +44 -0
- package/src/lib/{gl-constants.ts → gl-extensions.ts} +1 -1
- package/src/lib/parsers/basis-module-loader.ts +12 -4
- package/src/lib/parsers/crunch-module-loader.ts +1 -0
- package/src/lib/parsers/parse-basis.js +32 -8
- package/src/lib/parsers/parse-crunch.ts +4 -4
- package/src/lib/parsers/parse-dds.ts +29 -26
- package/src/lib/parsers/parse-ktx.js +3 -6
- package/src/lib/parsers/parse-ktx.ts +47 -0
- package/src/lib/parsers/parse-npy.js +3 -17
- package/src/lib/parsers/parse-npy.ts +98 -0
- package/src/lib/parsers/parse-pvr.ts +90 -48
- package/src/lib/texture-api/async-deep-map.ts +15 -8
- package/src/lib/texture-api/deep-load.ts +7 -3
- package/src/lib/texture-api/generate-url.ts +10 -8
- package/src/lib/texture-api/load-image-array.ts +8 -2
- package/src/lib/texture-api/load-image-cube.ts +18 -4
- package/src/lib/texture-api/load-image.ts +15 -5
- package/src/lib/texture-api/texture-api-types.ts +12 -0
- package/src/lib/utils/extract-mipmap-images.ts +16 -3
- package/src/lib/utils/ktx-format-helper.ts +71 -71
- package/src/libs/README.md +2 -2
- package/src/libs/basis_encoder.js +1 -1
- package/src/libs/basis_transcoder.js +1 -1
- package/src/libs/crunch.js +1 -0
- package/src/npy-loader.ts +2 -2
- package/dist/basis-worker.js.map +0 -1
- package/dist/compressed-texture-worker.js.map +0 -1
- package/dist/crunch-worker.js.map +0 -1
- package/dist/dist.min.js +0 -2
- package/dist/dist.min.js.map +0 -1
- package/dist/es5/lib/gl-constants.js.map +0 -1
- package/dist/esm/lib/gl-constants.js.map +0 -1
- package/dist/npy-worker.js.map +0 -1
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { Loader, LoaderWithParser, LoaderOptions } from '@loaders.gl/loader-utils';
|
|
2
|
+
import { parseNPY } from './lib/parsers/parse-npy';
|
|
3
|
+
/**
|
|
4
|
+
* Worker loader for numpy "tiles"
|
|
5
|
+
*/
|
|
6
|
+
export declare const NPYWorkerLoader: {
|
|
7
|
+
name: string;
|
|
8
|
+
id: string;
|
|
9
|
+
module: string;
|
|
10
|
+
version: any;
|
|
11
|
+
worker: boolean;
|
|
12
|
+
extensions: string[];
|
|
13
|
+
mimeTypes: never[];
|
|
14
|
+
tests: ArrayBufferLike[];
|
|
15
|
+
options: {
|
|
16
|
+
npy: {};
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Loader for numpy "tiles"
|
|
21
|
+
*/
|
|
22
|
+
export declare const NPYLoader: {
|
|
23
|
+
parseSync: typeof parseNPY;
|
|
24
|
+
parse: (arrayBuffer: ArrayBuffer, options?: LoaderOptions | undefined) => Promise<{
|
|
25
|
+
data: any;
|
|
26
|
+
header: {
|
|
27
|
+
descr: string;
|
|
28
|
+
shape: number[];
|
|
29
|
+
};
|
|
30
|
+
} | null>;
|
|
31
|
+
name: string;
|
|
32
|
+
id: string;
|
|
33
|
+
module: string;
|
|
34
|
+
version: any;
|
|
35
|
+
worker: boolean;
|
|
36
|
+
extensions: string[];
|
|
37
|
+
mimeTypes: never[];
|
|
38
|
+
tests: ArrayBufferLike[];
|
|
39
|
+
options: {
|
|
40
|
+
npy: {};
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
export declare const _TypecheckNPYWorkerLoader: Loader;
|
|
44
|
+
export declare const _TypecheckNPYLoader: LoaderWithParser;
|
|
45
|
+
//# sourceMappingURL=npy-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"npy-loader.d.ts","sourceRoot":"","sources":["../src/npy-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAEtF,OAAO,EAAC,QAAQ,EAAC,MAAM,yBAAyB,CAAC;AAKjD;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;CAY3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS;;yBAGO,WAAW;;;;;;;;;;;;;;;;;;CACvC,CAAC;AAGF,eAAO,MAAM,yBAAyB,EAAE,MAAwB,CAAC;AACjE,eAAO,MAAM,mBAAmB,EAAE,gBAA4B,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports._TypecheckNPYLoader = exports._TypecheckNPYWorkerLoader = exports.NPYLoader = exports.NPYWorkerLoader = void 0;
|
|
4
|
+
const version_1 = require("./lib/utils/version");
|
|
5
|
+
const parse_npy_1 = require("./lib/parsers/parse-npy");
|
|
6
|
+
// \x93NUMPY
|
|
7
|
+
const NPY_MAGIC_NUMBER = new Uint8Array([147, 78, 85, 77, 80, 89]);
|
|
8
|
+
/**
|
|
9
|
+
* Worker loader for numpy "tiles"
|
|
10
|
+
*/
|
|
11
|
+
exports.NPYWorkerLoader = {
|
|
12
|
+
name: 'NPY',
|
|
13
|
+
id: 'npy',
|
|
14
|
+
module: 'textures',
|
|
15
|
+
version: version_1.VERSION,
|
|
16
|
+
worker: true,
|
|
17
|
+
extensions: ['npy'],
|
|
18
|
+
mimeTypes: [],
|
|
19
|
+
tests: [NPY_MAGIC_NUMBER.buffer],
|
|
20
|
+
options: {
|
|
21
|
+
npy: {}
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Loader for numpy "tiles"
|
|
26
|
+
*/
|
|
27
|
+
exports.NPYLoader = {
|
|
28
|
+
...exports.NPYWorkerLoader,
|
|
29
|
+
parseSync: parse_npy_1.parseNPY,
|
|
30
|
+
parse: async (arrayBuffer, options) => (0, parse_npy_1.parseNPY)(arrayBuffer, options)
|
|
31
|
+
};
|
|
32
|
+
// TYPE TESTS - TODO find a better way than exporting junk
|
|
33
|
+
exports._TypecheckNPYWorkerLoader = exports.NPYWorkerLoader;
|
|
34
|
+
exports._TypecheckNPYLoader = exports.NPYLoader;
|
package/dist/npy-worker.js
CHANGED
|
@@ -1,2 +1,240 @@
|
|
|
1
|
-
!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=7)}([function(e,t,r){e.exports=r(6)},function(e,t){function r(e,t,r,n,o,a,i){try{var c=e[a](i),u=c.value}catch(e){return void r(e)}c.done?t(u):Promise.resolve(u).then(n,o)}e.exports=function(e){return function(){var t=this,n=arguments;return new Promise((function(o,a){var i=e.apply(t,n);function c(e){r(i,o,a,c,u,"next",e)}function u(e){r(i,o,a,c,u,"throw",e)}c(void 0)}))}},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){function r(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}e.exports=function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){function r(t){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?(e.exports=r=function(e){return typeof e},e.exports.default=e.exports,e.exports.__esModule=!0):(e.exports=r=function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.default=e.exports,e.exports.__esModule=!0),r(t)}e.exports=r,e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,r){var n=function(e){"use strict";var t=Object.prototype,r=t.hasOwnProperty,n="function"==typeof Symbol?Symbol:{},o=n.iterator||"@@iterator",a=n.asyncIterator||"@@asyncIterator",i=n.toStringTag||"@@toStringTag";function c(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,r){return e[t]=r}}function u(e,t,r,n){var o=t&&t.prototype instanceof l?t:l,a=Object.create(o.prototype),i=new j(n||[]);return a._invoke=function(e,t,r){var n="suspendedStart";return function(o,a){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw a;return L()}for(r.method=o,r.arg=a;;){var i=r.delegate;if(i){var c=w(i,r);if(c){if(c===f)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var u=s(e,t,r);if("normal"===u.type){if(n=r.done?"completed":"suspendedYield",u.arg===f)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(n="completed",r.method="throw",r.arg=u.arg)}}}(e,r,i),a}function s(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=u;var f={};function l(){}function p(){}function y(){}var d={};d[o]=function(){return this};var h=Object.getPrototypeOf,v=h&&h(h(E([])));v&&v!==t&&r.call(v,o)&&(d=v);var g=y.prototype=l.prototype=Object.create(d);function m(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function b(e,t){var n;this._invoke=function(o,a){function i(){return new t((function(n,i){!function n(o,a,i,c){var u=s(e[o],e,a);if("throw"!==u.type){var f=u.arg,l=f.value;return l&&"object"==typeof l&&r.call(l,"__await")?t.resolve(l.__await).then((function(e){n("next",e,i,c)}),(function(e){n("throw",e,i,c)})):t.resolve(l).then((function(e){f.value=e,i(f)}),(function(e){return n("throw",e,i,c)}))}c(u.arg)}(o,a,n,i)}))}return n=n?n.then(i,i):i()}}function w(e,t){var r=e.iterator[t.method];if(void 0===r){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,w(e,t),"throw"===t.method))return f;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return f}var n=s(r,e.iterator,t.arg);if("throw"===n.type)return t.method="throw",t.arg=n.arg,t.delegate=null,f;var o=n.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function x(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function O(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function j(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(x,this),this.reset(!0)}function E(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,a=function t(){for(;++n<e.length;)if(r.call(e,n))return t.value=e[n],t.done=!1,t;return t.value=void 0,t.done=!0,t};return a.next=a}}return{next:L}}function L(){return{value:void 0,done:!0}}return p.prototype=g.constructor=y,y.constructor=p,p.displayName=c(y,i,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===p||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,y):(e.__proto__=y,c(e,i,"GeneratorFunction")),e.prototype=Object.create(g),e},e.awrap=function(e){return{__await:e}},m(b.prototype),b.prototype[a]=function(){return this},e.AsyncIterator=b,e.async=function(t,r,n,o,a){void 0===a&&(a=Promise);var i=new b(u(t,r,n,o),a);return e.isGeneratorFunction(r)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},m(g),c(g,i,"Generator"),g[o]=function(){return this},g.toString=function(){return"[object Generator]"},e.keys=function(e){var t=[];for(var r in e)t.push(r);return t.reverse(),function r(){for(;t.length;){var n=t.pop();if(n in e)return r.value=n,r.done=!1,r}return r.done=!0,r}},e.values=E,j.prototype={constructor:j,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(O),!e)for(var t in this)"t"===t.charAt(0)&&r.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function n(r,n){return i.type="throw",i.arg=e,t.next=r,n&&(t.method="next",t.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var a=this.tryEntries[o],i=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var c=r.call(a,"catchLoc"),u=r.call(a,"finallyLoc");if(c&&u){if(this.prev<a.catchLoc)return n(a.catchLoc,!0);if(this.prev<a.finallyLoc)return n(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return n(a.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return n(a.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var a=o;break}}a&&("break"===e||"continue"===e)&&a.tryLoc<=t&&t<=a.finallyLoc&&(a=null);var i=a?a.completion:{};return i.type=e,i.arg=t,a?(this.method="next",this.next=a.finallyLoc,f):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),f},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),O(r),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;O(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:E(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},e}(e.exports);try{regeneratorRuntime=n}catch(e){Function("r","regeneratorRuntime = r")(n)}},function(e,t,r){"use strict";r.r(t);var n=r(1),o=r.n(n),a=r(2),i=r.n(a),c=r(0),u=r.n(c);var s,f=(s=new Uint32Array([305419896]),!(18===new Uint8Array(s.buffer,s.byteOffset,s.byteLength)[0])),l={u1:Uint8Array,i1:Int8Array,u2:Uint16Array,i2:Int16Array,u4:Uint32Array,i4:Int32Array,f4:Float32Array,f8:Float64Array};function p(e,t){if(!e)return null;var r=function(e){var t,r=e.getUint8(6),n=8;r>=2?(t=e.getUint32(8,!0),n+=4):(t=e.getUint16(8,!0),n+=2);var o=new TextDecoder(r<=2?"latin1":"utf-8"),a=new Uint8Array(e.buffer,n,t),i=o.decode(a);return n+=t,{header:JSON.parse(i.replace(/'/g,'"').replace("False","false").replace("(","[").replace(/,*\),*/g,"]")),headerEndOffset:n}}(new DataView(e)),n=r.header,o=r.headerEndOffset,a=n.descr,i=l[a.slice(1,3)];if(!i)return console.warn("Decoding of npy dtype not implemented: ".concat(a)),null;var c=n.shape.reduce((function(e,t){return e*t}))*i.BYTES_PER_ELEMENT,u=new i(e.slice(o,o+c));return(">"===a[0]&&f||"<"===a[0]&&!f)&&console.warn("Data is wrong endianness, byte swapping not yet implemented."),{data:u,header:n}}function y(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function d(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?y(Object(r),!0).forEach((function(t){i()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):y(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var h,v={name:"NPY",id:"npy",module:"textures",version:"3.1.0-alpha.4",worker:!0,extensions:["npy"],mimeTypes:[],tests:[new Uint8Array([147,78,85,77,80,89]).buffer],options:{npy:{}}},g=d(d({},v),{},{parseSync:p,parse:(h=o()(u.a.mark((function e(t,r){return u.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",p(t));case 1:case"end":return e.stop()}}),e)}))),function(e,t){return h.apply(this,arguments)})}),m=r(3),b=r.n(m),w=r(4),x=r.n(w),O=r(5),j=r.n(O);function E(e){return!!e&&(e instanceof ArrayBuffer||("undefined"!=typeof MessagePort&&e instanceof MessagePort||("undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap||"undefined"!=typeof OffscreenCanvas&&e instanceof OffscreenCanvas)))}var L=new Map,_=function(){function e(){b()(this,e)}return x()(e,null,[{key:"onmessage",set:function(e){self.onmessage=function(t){if(P(t)){var r=t.data,n=r.type,o=r.payload;e(n,o)}}}},{key:"addEventListener",value:function(e){var t=L.get(e);t||(t=function(t){if(P(t)){var r=t.data,n=r.type,o=r.payload;e(n,o)}}),self.addEventListener("message",t)}},{key:"removeEventListener",value:function(e){var t=L.get(e);L.delete(e),self.removeEventListener("message",t)}},{key:"postMessage",value:function(e,t){if(self){var r={source:"loaders.gl",type:e,payload:t},n=function e(t){var r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2?arguments[2]:void 0,o=n||new Set;if(t){if(E(t))o.add(t);else if(E(t.buffer))o.add(t.buffer);else if(ArrayBuffer.isView(t));else if(r&&"object"===j()(t))for(var a in t)e(t[a],r,o)}else;return void 0===n?Array.from(o):[]}(t);self.postMessage(r,n)}}}]),e}();function P(e){var t=e.type,r=e.data;return"message"===t&&r&&"string"==typeof r.source&&r.source.startsWith("loaders.gl")}function S(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function k(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?S(Object(r),!0).forEach((function(t){i()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):S(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var M,A=0;function T(e,t){return new Promise((function(r,n){var o=A++;_.addEventListener((function e(t,a){if(a.id===o)switch(t){case"done":_.removeEventListener(e),r(a.result);break;case"error":_.removeEventListener(e),n(a.error)}}));var a={id:o,input:e,options:t};_.postMessage("process",a)}))}function D(e){return N.apply(this,arguments)}function N(){return(N=o()(u.a.mark((function e(t){var r,n,o,a,i,c,s;return u.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t.loader,n=t.arrayBuffer,o=t.options,a=t.context,!r.parseSync&&!r.parse){e.next=6;break}i=n,c=r.parseSync||r.parse,e.next=13;break;case 6:if(!r.parseTextSync){e.next=12;break}s=new TextDecoder,i=s.decode(n),c=r.parseTextSync,e.next=13;break;case 12:throw new Error("Could not load data with ".concat(r.name," loader"));case 13:return o=k(k({},o),{},{modules:r&&r.options&&r.options.modules||{},worker:!1}),e.next=16,c(i,k({},o),a,r);case 16:return e.abrupt("return",e.sent);case 17:case"end":return e.stop()}}),e)})))).apply(this,arguments)}M=g,"undefined"!=typeof self&&(_.onmessage=function(){var e=o()(u.a.mark((function e(t,r){var n,o,a,i,c;return u.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:e.t0=t,e.next="process"===e.t0?3:16;break;case 3:return e.prev=3,n=r.input,o=r.options,a=void 0===o?{}:o,e.next=7,D({loader:M,arrayBuffer:n,options:a,context:{parse:T}});case 7:i=e.sent,_.postMessage("done",{result:i}),e.next=15;break;case 11:e.prev=11,e.t1=e.catch(3),c=e.t1 instanceof Error?e.t1.message:"",_.postMessage("error",{error:c});case 15:return e.abrupt("break",16);case 16:case"end":return e.stop()}}),e,null,[[3,11]])})));return function(t,r){return e.apply(this,arguments)}}())}]);
|
|
2
|
-
|
|
1
|
+
(() => {
|
|
2
|
+
// src/lib/utils/version.ts
|
|
3
|
+
var VERSION = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
|
|
4
|
+
|
|
5
|
+
// src/lib/parsers/parse-npy.ts
|
|
6
|
+
function systemIsLittleEndian() {
|
|
7
|
+
const a = new Uint32Array([305419896]);
|
|
8
|
+
const b = new Uint8Array(a.buffer, a.byteOffset, a.byteLength);
|
|
9
|
+
return !(b[0] === 18);
|
|
10
|
+
}
|
|
11
|
+
var LITTLE_ENDIAN_OS = systemIsLittleEndian();
|
|
12
|
+
var DTYPES = {
|
|
13
|
+
u1: Uint8Array,
|
|
14
|
+
i1: Int8Array,
|
|
15
|
+
u2: Uint16Array,
|
|
16
|
+
i2: Int16Array,
|
|
17
|
+
u4: Uint32Array,
|
|
18
|
+
i4: Int32Array,
|
|
19
|
+
f4: Float32Array,
|
|
20
|
+
f8: Float64Array
|
|
21
|
+
};
|
|
22
|
+
function parseNPY(arrayBuffer, options) {
|
|
23
|
+
if (!arrayBuffer) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
const view = new DataView(arrayBuffer);
|
|
27
|
+
const { header, headerEndOffset } = parseHeader(view);
|
|
28
|
+
const numpyType = header.descr;
|
|
29
|
+
const ArrayType = DTYPES[numpyType.slice(1, 3)];
|
|
30
|
+
if (!ArrayType) {
|
|
31
|
+
console.warn(`Decoding of npy dtype not implemented: ${numpyType}`);
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
const nArrayElements = header.shape?.reduce((a, b) => a * b);
|
|
35
|
+
const arrayByteLength = nArrayElements * ArrayType.BYTES_PER_ELEMENT;
|
|
36
|
+
const data = new ArrayType(arrayBuffer.slice(headerEndOffset, headerEndOffset + arrayByteLength));
|
|
37
|
+
if (numpyType[0] === ">" && LITTLE_ENDIAN_OS || numpyType[0] === "<" && !LITTLE_ENDIAN_OS) {
|
|
38
|
+
console.warn("Data is wrong endianness, byte swapping not yet implemented.");
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
data,
|
|
42
|
+
header
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
function parseHeader(view) {
|
|
46
|
+
const majorVersion = view.getUint8(6);
|
|
47
|
+
let offset = 8;
|
|
48
|
+
let headerLength;
|
|
49
|
+
if (majorVersion >= 2) {
|
|
50
|
+
headerLength = view.getUint32(8, true);
|
|
51
|
+
offset += 4;
|
|
52
|
+
} else {
|
|
53
|
+
headerLength = view.getUint16(8, true);
|
|
54
|
+
offset += 2;
|
|
55
|
+
}
|
|
56
|
+
const encoding = majorVersion <= 2 ? "latin1" : "utf-8";
|
|
57
|
+
const decoder = new TextDecoder(encoding);
|
|
58
|
+
const headerArray = new Uint8Array(view.buffer, offset, headerLength);
|
|
59
|
+
const headerText = decoder.decode(headerArray);
|
|
60
|
+
offset += headerLength;
|
|
61
|
+
const header = JSON.parse(headerText.replace(/'/g, '"').replace("False", "false").replace("(", "[").replace(/,*\),*/g, "]"));
|
|
62
|
+
return { header, headerEndOffset: offset };
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// src/npy-loader.ts
|
|
66
|
+
var NPY_MAGIC_NUMBER = new Uint8Array([147, 78, 85, 77, 80, 89]);
|
|
67
|
+
var NPYWorkerLoader = {
|
|
68
|
+
name: "NPY",
|
|
69
|
+
id: "npy",
|
|
70
|
+
module: "textures",
|
|
71
|
+
version: VERSION,
|
|
72
|
+
worker: true,
|
|
73
|
+
extensions: ["npy"],
|
|
74
|
+
mimeTypes: [],
|
|
75
|
+
tests: [NPY_MAGIC_NUMBER.buffer],
|
|
76
|
+
options: {
|
|
77
|
+
npy: {}
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
var NPYLoader = {
|
|
81
|
+
...NPYWorkerLoader,
|
|
82
|
+
parseSync: parseNPY,
|
|
83
|
+
parse: async (arrayBuffer, options) => parseNPY(arrayBuffer, options)
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
// ../worker-utils/src/lib/worker-utils/get-transfer-list.ts
|
|
87
|
+
function getTransferList(object, recursive = true, transfers) {
|
|
88
|
+
const transfersSet = transfers || new Set();
|
|
89
|
+
if (!object) {
|
|
90
|
+
} else if (isTransferable(object)) {
|
|
91
|
+
transfersSet.add(object);
|
|
92
|
+
} else if (isTransferable(object.buffer)) {
|
|
93
|
+
transfersSet.add(object.buffer);
|
|
94
|
+
} else if (ArrayBuffer.isView(object)) {
|
|
95
|
+
} else if (recursive && typeof object === "object") {
|
|
96
|
+
for (const key in object) {
|
|
97
|
+
getTransferList(object[key], recursive, transfersSet);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return transfers === void 0 ? Array.from(transfersSet) : [];
|
|
101
|
+
}
|
|
102
|
+
function isTransferable(object) {
|
|
103
|
+
if (!object) {
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
if (object instanceof ArrayBuffer) {
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
if (typeof MessagePort !== "undefined" && object instanceof MessagePort) {
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
if (typeof ImageBitmap !== "undefined" && object instanceof ImageBitmap) {
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
if (typeof OffscreenCanvas !== "undefined" && object instanceof OffscreenCanvas) {
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// ../worker-utils/src/lib/worker-farm/worker-body.ts
|
|
122
|
+
var onMessageWrapperMap = new Map();
|
|
123
|
+
var WorkerBody = class {
|
|
124
|
+
static set onmessage(onMessage) {
|
|
125
|
+
self.onmessage = (message) => {
|
|
126
|
+
if (!isKnownMessage(message)) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
const { type, payload } = message.data;
|
|
130
|
+
onMessage(type, payload);
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
static addEventListener(onMessage) {
|
|
134
|
+
let onMessageWrapper = onMessageWrapperMap.get(onMessage);
|
|
135
|
+
if (!onMessageWrapper) {
|
|
136
|
+
onMessageWrapper = (message) => {
|
|
137
|
+
if (!isKnownMessage(message)) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
const { type, payload } = message.data;
|
|
141
|
+
onMessage(type, payload);
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
self.addEventListener("message", onMessageWrapper);
|
|
145
|
+
}
|
|
146
|
+
static removeEventListener(onMessage) {
|
|
147
|
+
const onMessageWrapper = onMessageWrapperMap.get(onMessage);
|
|
148
|
+
onMessageWrapperMap.delete(onMessage);
|
|
149
|
+
self.removeEventListener("message", onMessageWrapper);
|
|
150
|
+
}
|
|
151
|
+
static postMessage(type, payload) {
|
|
152
|
+
if (self) {
|
|
153
|
+
const data = { source: "loaders.gl", type, payload };
|
|
154
|
+
const transferList = getTransferList(payload);
|
|
155
|
+
self.postMessage(data, transferList);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
function isKnownMessage(message) {
|
|
160
|
+
const { type, data } = message;
|
|
161
|
+
return type === "message" && data && typeof data.source === "string" && data.source.startsWith("loaders.gl");
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// ../loader-utils/src/lib/worker-loader-utils/create-loader-worker.ts
|
|
165
|
+
var requestId = 0;
|
|
166
|
+
function createLoaderWorker(loader) {
|
|
167
|
+
if (typeof self === "undefined") {
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
WorkerBody.onmessage = async (type, payload) => {
|
|
171
|
+
switch (type) {
|
|
172
|
+
case "process":
|
|
173
|
+
try {
|
|
174
|
+
const { input, options = {} } = payload;
|
|
175
|
+
const result = await parseData({
|
|
176
|
+
loader,
|
|
177
|
+
arrayBuffer: input,
|
|
178
|
+
options,
|
|
179
|
+
context: {
|
|
180
|
+
parse: parseOnMainThread
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
WorkerBody.postMessage("done", { result });
|
|
184
|
+
} catch (error) {
|
|
185
|
+
const message = error instanceof Error ? error.message : "";
|
|
186
|
+
WorkerBody.postMessage("error", { error: message });
|
|
187
|
+
}
|
|
188
|
+
break;
|
|
189
|
+
default:
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
function parseOnMainThread(arrayBuffer, options) {
|
|
194
|
+
return new Promise((resolve, reject) => {
|
|
195
|
+
const id = requestId++;
|
|
196
|
+
const onMessage = (type, payload2) => {
|
|
197
|
+
if (payload2.id !== id) {
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
switch (type) {
|
|
201
|
+
case "done":
|
|
202
|
+
WorkerBody.removeEventListener(onMessage);
|
|
203
|
+
resolve(payload2.result);
|
|
204
|
+
break;
|
|
205
|
+
case "error":
|
|
206
|
+
WorkerBody.removeEventListener(onMessage);
|
|
207
|
+
reject(payload2.error);
|
|
208
|
+
break;
|
|
209
|
+
default:
|
|
210
|
+
}
|
|
211
|
+
};
|
|
212
|
+
WorkerBody.addEventListener(onMessage);
|
|
213
|
+
const payload = { id, input: arrayBuffer, options };
|
|
214
|
+
WorkerBody.postMessage("process", payload);
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
async function parseData({ loader, arrayBuffer, options, context }) {
|
|
218
|
+
let data;
|
|
219
|
+
let parser;
|
|
220
|
+
if (loader.parseSync || loader.parse) {
|
|
221
|
+
data = arrayBuffer;
|
|
222
|
+
parser = loader.parseSync || loader.parse;
|
|
223
|
+
} else if (loader.parseTextSync) {
|
|
224
|
+
const textDecoder = new TextDecoder();
|
|
225
|
+
data = textDecoder.decode(arrayBuffer);
|
|
226
|
+
parser = loader.parseTextSync;
|
|
227
|
+
} else {
|
|
228
|
+
throw new Error(`Could not load data with ${loader.name} loader`);
|
|
229
|
+
}
|
|
230
|
+
options = {
|
|
231
|
+
...options,
|
|
232
|
+
modules: loader && loader.options && loader.options.modules || {},
|
|
233
|
+
worker: false
|
|
234
|
+
};
|
|
235
|
+
return await parser(data, { ...options }, context, loader);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
// src/workers/npy-worker.ts
|
|
239
|
+
createLoaderWorker(NPYLoader);
|
|
240
|
+
})();
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* These represent the main compressed texture formats
|
|
3
|
+
* Each format typically has a number of more specific subformats
|
|
4
|
+
*/
|
|
5
|
+
export declare type GPUTextureFormat = 'dxt' | 'dxt-srgb' | 'etc1' | 'etc2' | 'pvrtc' | 'atc' | 'astc' | 'rgtc';
|
|
6
|
+
export interface TextureLevel {
|
|
7
|
+
compressed: boolean;
|
|
8
|
+
format: number;
|
|
9
|
+
data: Uint8Array;
|
|
10
|
+
witdh: number;
|
|
11
|
+
height: number;
|
|
12
|
+
levelSize?: number;
|
|
13
|
+
}
|
|
14
|
+
export interface CompressedTextureExtractOptions {
|
|
15
|
+
mipMapLevels: number;
|
|
16
|
+
width: number;
|
|
17
|
+
height: number;
|
|
18
|
+
sizeFunction: Function;
|
|
19
|
+
internalFormat: number;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,gBAAgB,GACxB,KAAK,GACL,UAAU,GACV,MAAM,GACN,MAAM,GACN,OAAO,GACP,KAAK,GACL,MAAM,GACN,MAAM,CAAC;AAEX,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,+BAA+B;IAC9C,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,QAAQ,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"basis-worker.d.ts","sourceRoot":"","sources":["../../src/workers/basis-worker.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compressed-texture-worker.d.ts","sourceRoot":"","sources":["../../src/workers/compressed-texture-worker.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const loader_utils_1 = require("@loaders.gl/loader-utils");
|
|
4
|
+
const compressed_texture_loader_1 = require("../compressed-texture-loader");
|
|
5
|
+
(0, loader_utils_1.createLoaderWorker)(compressed_texture_loader_1.CompressedTextureLoader);
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { parseCrunch } from '../lib/parsers/parse-crunch';
|
|
2
|
+
/**
|
|
3
|
+
* Loader for the Crunch compressed texture container format
|
|
4
|
+
*/
|
|
5
|
+
export declare const CrunchLoaderWithParser: {
|
|
6
|
+
parse: typeof parseCrunch;
|
|
7
|
+
id: string;
|
|
8
|
+
name: string;
|
|
9
|
+
module: string;
|
|
10
|
+
version: any;
|
|
11
|
+
worker: boolean;
|
|
12
|
+
extensions: string[];
|
|
13
|
+
mimeTypes: string[];
|
|
14
|
+
binary: boolean;
|
|
15
|
+
options: {
|
|
16
|
+
crunch: {
|
|
17
|
+
libraryPath: string;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=crunch-worker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crunch-worker.d.ts","sourceRoot":"","sources":["../../src/workers/crunch-worker.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,WAAW,EAAC,MAAM,6BAA6B,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;CAGlC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CrunchLoaderWithParser = void 0;
|
|
4
|
+
const loader_utils_1 = require("@loaders.gl/loader-utils");
|
|
5
|
+
const crunch_loader_1 = require("../crunch-loader");
|
|
6
|
+
const parse_crunch_1 = require("../lib/parsers/parse-crunch");
|
|
7
|
+
/**
|
|
8
|
+
* Loader for the Crunch compressed texture container format
|
|
9
|
+
*/
|
|
10
|
+
exports.CrunchLoaderWithParser = {
|
|
11
|
+
...crunch_loader_1.CrunchLoader,
|
|
12
|
+
parse: parse_crunch_1.parseCrunch
|
|
13
|
+
};
|
|
14
|
+
(0, loader_utils_1.createLoaderWorker)(exports.CrunchLoaderWithParser);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"npy-worker.d.ts","sourceRoot":"","sources":["../../src/workers/npy-worker.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/textures",
|
|
3
|
-
"version": "3.1.0-
|
|
3
|
+
"version": "3.1.0-beta.3",
|
|
4
4
|
"description": "Framework-independent loaders for compressed and super compressed (basis) textures ",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"ETC",
|
|
22
22
|
"basis"
|
|
23
23
|
],
|
|
24
|
-
"types": "
|
|
24
|
+
"types": "dist/index.d.ts",
|
|
25
25
|
"main": "dist/es5/index.js",
|
|
26
26
|
"module": "dist/esm/index.js",
|
|
27
27
|
"sideEffects": false,
|
|
@@ -34,19 +34,19 @@
|
|
|
34
34
|
"scripts": {
|
|
35
35
|
"pre-build": "npm run copy-libs && npm run build-worker && npm run build-bundle",
|
|
36
36
|
"copy-libs": "cp -rf ./src/libs ./dist/libs",
|
|
37
|
-
"build-bundle": "
|
|
37
|
+
"build-bundle": "esbuild src/bundle.ts --bundle --outfile=dist/bundle.js",
|
|
38
38
|
"build-worker": "npm run build-basis-worker && npm run build-npy-worker && npm run build-compressed-texture-worker && npm run build-crunch-worker",
|
|
39
|
-
"build-basis-worker": "
|
|
40
|
-
"build-npy-worker": "
|
|
41
|
-
"build-compressed-texture-worker": "
|
|
42
|
-
"build-crunch-worker": "
|
|
39
|
+
"build-basis-worker": "esbuild src/workers/basis-worker.ts --bundle --outfile=dist/basis-worker.js",
|
|
40
|
+
"build-npy-worker": "esbuild src/workers/npy-worker.ts --bundle --outfile=dist/npy-worker.js",
|
|
41
|
+
"build-compressed-texture-worker": "esbuild src/workers/compressed-texture-worker.ts --bundle --outfile=dist/compressed-texture-worker.js",
|
|
42
|
+
"build-crunch-worker": "esbuild src/workers/crunch-worker.ts --bundle --outfile=dist/crunch-worker.js"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@loaders.gl/images": "3.1.0-
|
|
46
|
-
"@loaders.gl/loader-utils": "3.1.0-
|
|
47
|
-
"@loaders.gl/worker-utils": "3.1.0-
|
|
45
|
+
"@loaders.gl/images": "3.1.0-beta.3",
|
|
46
|
+
"@loaders.gl/loader-utils": "3.1.0-beta.3",
|
|
47
|
+
"@loaders.gl/worker-utils": "3.1.0-beta.3",
|
|
48
48
|
"ktx-parse": "^0.0.4",
|
|
49
49
|
"texture-compressor": "^1.0.2"
|
|
50
50
|
},
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "3537c382b3ea4e092b24b6f94c3edee72076039c"
|
|
52
52
|
}
|
package/src/index.ts
CHANGED
|
@@ -10,6 +10,7 @@ export {NPYLoader, NPYWorkerLoader} from './npy-loader';
|
|
|
10
10
|
|
|
11
11
|
// Writers
|
|
12
12
|
export {CompressedTextureWriter} from './compressed-texture-writer';
|
|
13
|
+
export {KTX2BasisUniversalTextureWriter} from './ktx2-basis-universal-texture-writer';
|
|
13
14
|
|
|
14
15
|
// Texture Loading API
|
|
15
16
|
export {loadImageTexture} from './lib/texture-api/load-image';
|
|
@@ -17,7 +18,7 @@ export {loadImageTextureArray} from './lib/texture-api/load-image-array';
|
|
|
17
18
|
export {loadImageTextureCube} from './lib/texture-api/load-image-cube';
|
|
18
19
|
|
|
19
20
|
// Utilities
|
|
20
|
-
export {
|
|
21
|
+
export {GL_EXTENSIONS_CONSTANTS} from './lib/gl-extensions';
|
|
21
22
|
export {selectSupportedBasisFormat} from './lib/parsers/parse-basis';
|
|
22
23
|
export {getSupportedGPUTextureFormats} from './lib/utils/texture-formats';
|
|
23
24
|
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type {Writer} from '@loaders.gl/loader-utils';
|
|
2
|
+
import {VERSION} from './lib/utils/version';
|
|
3
|
+
import {encodeKTX2BasisTexture} from './lib/encoders/encode-ktx2-basis-texture';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Basis Universal Supercompressed GPU Texture.
|
|
7
|
+
* Spec - https://github.com/Esri/i3s-spec/blob/master/docs/1.8/textureSetDefinitionFormat.cmn.md
|
|
8
|
+
*/
|
|
9
|
+
export const KTX2BasisUniversalTextureWriter = {
|
|
10
|
+
name: 'Basis Universal Supercompressed GPU Texture',
|
|
11
|
+
id: 'ktx2-basis-supercompressed-texture',
|
|
12
|
+
module: 'textures',
|
|
13
|
+
version: VERSION,
|
|
14
|
+
|
|
15
|
+
extensions: ['ktx2'],
|
|
16
|
+
options: {
|
|
17
|
+
useSRGB: false,
|
|
18
|
+
qualityLevel: 10,
|
|
19
|
+
encodeUASTC: false,
|
|
20
|
+
mipmaps: false
|
|
21
|
+
},
|
|
22
|
+
|
|
23
|
+
encode: encodeKTX2BasisTexture
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
// TYPE TESTS - TODO find a better way than exporting junk
|
|
27
|
+
export const _TypecheckKTX2TextureWriter: Writer = KTX2BasisUniversalTextureWriter;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type {ImageDataType} from '@loaders.gl/images';
|
|
2
|
+
import {loadBasisEncoderModule} from '../parsers/basis-module-loader';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Encodes image to Basis Universal Supercompressed GPU Texture.
|
|
6
|
+
* Code example is taken from here - https://github.com/BinomialLLC/basis_universal/blob/master/webgl/ktx2_encode_test/index.html#L279
|
|
7
|
+
* BasisEncoder API - https://github.com/BinomialLLC/basis_universal/blob/master/webgl/transcoder/basis_wrappers.cpp#L1712
|
|
8
|
+
* @param image
|
|
9
|
+
* @param options
|
|
10
|
+
*/
|
|
11
|
+
export async function encodeKTX2BasisTexture(
|
|
12
|
+
image: ImageDataType,
|
|
13
|
+
options: any = {}
|
|
14
|
+
): Promise<Uint8Array> {
|
|
15
|
+
// TODO remove default values after writer options will be normalized like it done in load module.
|
|
16
|
+
const {useSRGB = false, qualityLevel = 10, encodeUASTC = false, mipmaps = false} = options;
|
|
17
|
+
const {BasisEncoder} = await loadBasisEncoderModule(options);
|
|
18
|
+
const basisEncoder = new BasisEncoder();
|
|
19
|
+
|
|
20
|
+
try {
|
|
21
|
+
const basisFileData = new Uint8Array(image.width * image.height * 4);
|
|
22
|
+
basisEncoder.setCreateKTX2File(true);
|
|
23
|
+
basisEncoder.setKTX2UASTCSupercompression(true);
|
|
24
|
+
basisEncoder.setKTX2SRGBTransferFunc(true);
|
|
25
|
+
|
|
26
|
+
basisEncoder.setSliceSourceImage(0, image.data, image.width, image.height, false);
|
|
27
|
+
basisEncoder.setPerceptual(useSRGB);
|
|
28
|
+
basisEncoder.setMipSRGB(useSRGB);
|
|
29
|
+
basisEncoder.setQualityLevel(qualityLevel);
|
|
30
|
+
basisEncoder.setUASTC(encodeUASTC);
|
|
31
|
+
basisEncoder.setMipGen(mipmaps);
|
|
32
|
+
|
|
33
|
+
const numOutputBytes = basisEncoder.encode(basisFileData);
|
|
34
|
+
|
|
35
|
+
const actualKTX2FileData = new Uint8Array(basisFileData.buffer, 0, numOutputBytes);
|
|
36
|
+
return actualKTX2FileData;
|
|
37
|
+
} catch (error) {
|
|
38
|
+
// eslint-disable-next-line no-console
|
|
39
|
+
console.error('Basis Universal Supercompressed GPU Texture encoder Error: ', error);
|
|
40
|
+
throw error;
|
|
41
|
+
} finally {
|
|
42
|
+
basisEncoder.delete();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -1,5 +1,13 @@
|
|
|
1
|
+
// __VERSION__ is injected by babel-plugin-version-inline
|
|
2
|
+
// @ts-ignore TS2304: Cannot find name '__VERSION__'.
|
|
3
|
+
const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'beta';
|
|
4
|
+
|
|
5
|
+
// @ts-nocheck
|
|
1
6
|
import {loadLibrary} from '@loaders.gl/worker-utils';
|
|
2
7
|
|
|
8
|
+
const BASIS_CDN_ENCODER_WASM = `https://unpkg.com/@loaders.gl/textures@${VERSION}/dist/libs/basis_encoder.wasm`;
|
|
9
|
+
const BASIS_CDN_ENCODER_JS = `https://unpkg.com/@loaders.gl/textures@${VERSION}/dist/libs/basis_encoder.js`;
|
|
10
|
+
|
|
3
11
|
let loadBasisTranscoderPromise;
|
|
4
12
|
|
|
5
13
|
/**
|
|
@@ -87,8 +95,8 @@ async function loadBasisEncoder(options) {
|
|
|
87
95
|
let wasmBinary = null;
|
|
88
96
|
|
|
89
97
|
[BASIS_ENCODER, wasmBinary] = await Promise.all([
|
|
90
|
-
await loadLibrary(
|
|
91
|
-
await loadLibrary(
|
|
98
|
+
await loadLibrary(BASIS_CDN_ENCODER_JS, 'textures', options),
|
|
99
|
+
await loadLibrary(BASIS_CDN_ENCODER_WASM, 'textures', options)
|
|
92
100
|
]);
|
|
93
101
|
|
|
94
102
|
// Depends on how import happened...
|
|
@@ -113,9 +121,9 @@ function initializeBasisEncoderModule(BasisEncoderModule, wasmBinary) {
|
|
|
113
121
|
return new Promise((resolve) => {
|
|
114
122
|
// if you try to return BasisModule the browser crashes!
|
|
115
123
|
BasisEncoderModule(options).then((module) => {
|
|
116
|
-
const {BasisFile, KTX2File, initializeBasis} = module;
|
|
124
|
+
const {BasisFile, KTX2File, initializeBasis, BasisEncoder} = module;
|
|
117
125
|
initializeBasis();
|
|
118
|
-
resolve({BasisFile, KTX2File});
|
|
126
|
+
resolve({BasisFile, KTX2File, BasisEncoder});
|
|
119
127
|
});
|
|
120
128
|
});
|
|
121
129
|
}
|