@loaders.gl/textures 4.4.0-alpha.16 → 4.4.0-alpha.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/README.md +44 -0
  2. package/dist/basis-loader.d.ts +15 -10
  3. package/dist/basis-loader.d.ts.map +1 -1
  4. package/dist/basis-loader.js +0 -1
  5. package/dist/basis-loader.js.map +1 -1
  6. package/dist/basis-worker-node.js +333 -193
  7. package/dist/basis-worker.js +267 -128
  8. package/dist/compressed-texture-loader.d.ts +0 -4
  9. package/dist/compressed-texture-loader.d.ts.map +1 -1
  10. package/dist/compressed-texture-loader.js +0 -1
  11. package/dist/compressed-texture-loader.js.map +1 -1
  12. package/dist/compressed-texture-worker.js +1050 -331
  13. package/dist/crunch-loader.d.ts +1 -5
  14. package/dist/crunch-loader.d.ts.map +1 -1
  15. package/dist/crunch-loader.js +1 -3
  16. package/dist/crunch-loader.js.map +1 -1
  17. package/dist/crunch-worker.js +153 -86
  18. package/dist/dist.dev.js +1281 -388
  19. package/dist/dist.min.js +1 -2
  20. package/dist/index.cjs +671 -330
  21. package/dist/index.cjs.map +4 -4
  22. package/dist/index.d.ts +2 -4
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +1 -3
  25. package/dist/index.js.map +1 -1
  26. package/dist/ktx2-basis-writer-worker-node.js +14 -3
  27. package/dist/ktx2-basis-writer-worker.js +13 -3
  28. package/dist/lib/encoders/encode-ktx2-basis-texture.d.ts.map +1 -1
  29. package/dist/lib/encoders/encode-ktx2-basis-texture.js +2 -1
  30. package/dist/lib/encoders/encode-ktx2-basis-texture.js.map +1 -1
  31. package/dist/lib/gl-extensions.d.ts +164 -58
  32. package/dist/lib/gl-extensions.d.ts.map +1 -1
  33. package/dist/lib/gl-extensions.js +175 -66
  34. package/dist/lib/gl-extensions.js.map +1 -1
  35. package/dist/lib/parsers/crunch-module-loader.d.ts +2 -2
  36. package/dist/lib/parsers/crunch-module-loader.d.ts.map +1 -1
  37. package/dist/lib/parsers/crunch-module-loader.js.map +1 -1
  38. package/dist/lib/parsers/parse-basis.d.ts +16 -2
  39. package/dist/lib/parsers/parse-basis.d.ts.map +1 -1
  40. package/dist/lib/parsers/parse-basis.js +222 -47
  41. package/dist/lib/parsers/parse-basis.js.map +1 -1
  42. package/dist/lib/parsers/parse-crunch.d.ts.map +1 -1
  43. package/dist/lib/parsers/parse-crunch.js +6 -5
  44. package/dist/lib/parsers/parse-crunch.js.map +1 -1
  45. package/dist/lib/parsers/parse-dds.d.ts.map +1 -1
  46. package/dist/lib/parsers/parse-dds.js +7 -7
  47. package/dist/lib/parsers/parse-dds.js.map +1 -1
  48. package/dist/lib/parsers/parse-ktx.d.ts.map +1 -1
  49. package/dist/lib/parsers/parse-ktx.js +7 -0
  50. package/dist/lib/parsers/parse-ktx.js.map +1 -1
  51. package/dist/lib/parsers/parse-pvr.d.ts.map +1 -1
  52. package/dist/lib/parsers/parse-pvr.js +28 -70
  53. package/dist/lib/parsers/parse-pvr.js.map +1 -1
  54. package/dist/lib/utils/detect-supported-texture-formats.d.ts +14 -0
  55. package/dist/lib/utils/detect-supported-texture-formats.d.ts.map +1 -0
  56. package/dist/lib/utils/detect-supported-texture-formats.js +197 -0
  57. package/dist/lib/utils/detect-supported-texture-formats.js.map +1 -0
  58. package/dist/lib/utils/extract-mipmap-images.d.ts +2 -2
  59. package/dist/lib/utils/extract-mipmap-images.d.ts.map +1 -1
  60. package/dist/lib/utils/extract-mipmap-images.js +12 -2
  61. package/dist/lib/utils/extract-mipmap-images.js.map +1 -1
  62. package/dist/lib/utils/ktx-format-helper.d.ts +2 -1
  63. package/dist/lib/utils/ktx-format-helper.d.ts.map +1 -1
  64. package/dist/lib/utils/ktx-format-helper.js +67 -109
  65. package/dist/lib/utils/ktx-format-helper.js.map +1 -1
  66. package/dist/lib/utils/texture-format-map.d.ts +3 -0
  67. package/dist/lib/utils/texture-format-map.d.ts.map +1 -0
  68. package/dist/lib/utils/texture-format-map.js +71 -0
  69. package/dist/lib/utils/texture-format-map.js.map +1 -0
  70. package/dist/lib/utils/version.js +1 -1
  71. package/dist/npy-worker.js +1 -1
  72. package/dist/workers/crunch-worker.d.ts +1 -3
  73. package/dist/workers/crunch-worker.d.ts.map +1 -1
  74. package/package.json +6 -6
  75. package/src/basis-loader.ts +19 -9
  76. package/src/compressed-texture-loader.ts +0 -3
  77. package/src/crunch-loader.ts +1 -5
  78. package/src/index.ts +2 -4
  79. package/src/lib/encoders/encode-ktx2-basis-texture.ts +2 -1
  80. package/src/lib/gl-extensions.ts +186 -81
  81. package/src/lib/parsers/crunch-module-loader.ts +4 -4
  82. package/src/lib/parsers/parse-basis.ts +281 -45
  83. package/src/lib/parsers/parse-crunch.ts +15 -7
  84. package/src/lib/parsers/parse-dds.ts +16 -9
  85. package/src/lib/parsers/parse-ktx.ts +12 -2
  86. package/src/lib/parsers/parse-pvr.ts +72 -72
  87. package/src/lib/utils/detect-supported-texture-formats.ts +210 -0
  88. package/src/lib/utils/extract-mipmap-images.ts +15 -4
  89. package/src/lib/utils/ktx-format-helper.ts +124 -111
  90. package/src/lib/utils/texture-format-map.ts +135 -0
  91. package/dist/lib/utils/texture-formats.d.ts +0 -8
  92. package/dist/lib/utils/texture-formats.d.ts.map +0 -1
  93. package/dist/lib/utils/texture-formats.js +0 -51
  94. package/dist/lib/utils/texture-formats.js.map +0 -1
  95. package/src/lib/utils/texture-formats.ts +0 -59
package/README.md CHANGED
@@ -4,4 +4,48 @@
4
4
 
5
5
  This module contains loaders for compressed textures and [basis universal textures](https://github.com/BinomialLLC/basis_universal).
6
6
 
7
+ ## Texture Levels
8
+
9
+ `BasisLoader` returns `TextureLevel[][]` and preserves every image stored in a `.basis` or `.ktx2` file.
10
+
11
+ `CompressedTextureLoader` returns `TextureLevel[]` for KTX, DDS and PVR container formats.
12
+
13
+ `CrunchLoader` returns `TextureLevel[]` for Crunch mip chains.
14
+
15
+ Each returned `TextureLevel` now exposes:
16
+
17
+ - `shape`: always `'texture-level'`. <img src="https://img.shields.io/badge/From-v4.4-blue.svg?style=flat-square" alt="From-v4.4" />
18
+ - `format`: the corresponding WebGL internal format number. <img src="https://img.shields.io/badge/From-v4.4-blue.svg?style=flat-square" alt="From-v4.4" />
19
+ - `textureFormat`: the corresponding luma.gl / WebGPU-style texture format string. <img src="https://img.shields.io/badge/From-v4.4-blue.svg?style=flat-square" alt="From-v4.4" />
20
+
21
+ ```ts
22
+ import {load} from '@loaders.gl/core';
23
+ import {BasisLoader} from '@loaders.gl/textures';
24
+
25
+ const images = await load('texture.ktx2', BasisLoader);
26
+
27
+ console.log(images[0][0].shape);
28
+ console.log(images[0][0].format);
29
+ console.log(images[0][0].textureFormat);
30
+ ```
31
+
32
+ Use `format` when you need the WebGL enum for legacy APIs. Use `textureFormat` when creating textures through WebGPU-style or luma.gl APIs.
33
+
34
+ When `basis.format` is set to `'auto'`, you can override the default capability detection by passing a list of supported texture formats:
35
+
36
+ ```ts
37
+ import {load} from '@loaders.gl/core';
38
+ import {BasisLoader} from '@loaders.gl/textures';
39
+
40
+ const images = await load('texture.basis', BasisLoader, {
41
+ basis: {
42
+ format: 'auto',
43
+ supportedTextureFormats: ['bc3-rgba-unorm']
44
+ }
45
+ });
46
+
47
+ console.log(images[0][0].format);
48
+ console.log(images[0][0].textureFormat);
49
+ ```
50
+
7
51
  For documentation please visit the [website](https://loaders.gl).
@@ -1,20 +1,26 @@
1
1
  import type { LoaderOptions } from '@loaders.gl/loader-utils';
2
- import type { TextureLevel } from '@loaders.gl/schema';
2
+ import type { TextureFormat, TextureLevel } from '@loaders.gl/schema';
3
3
  import { parseBasis } from "./lib/parsers/parse-basis.js";
4
+ import type { BasisFormat } from "./lib/parsers/parse-basis.js";
5
+ type BasisFormatOption = BasisFormat | Uppercase<BasisFormat>;
6
+ type BasisTargetFormat = 'auto' | BasisFormatOption | {
7
+ alpha: BasisFormatOption;
8
+ noAlpha: BasisFormatOption;
9
+ };
4
10
  /** Options for the BasisLoader */
5
11
  export type BasisLoaderOptions = LoaderOptions & {
6
12
  /** Options for the BasisLoader */
7
13
  basis?: {
8
- /** Format for texture data. auto selects based on platform caps (but gl context doesn't exist on a worker thread) */
9
- format: 'auto' | 'rgb565' | 'etc1s' | 'etc2' | 'astc' | 'dxt1' | 'dxt3' | 'dxt5';
10
- /** @deprecated specify path of basis library */
11
- libraryPath?: string;
14
+ /** Supported texture formats - app would typically query a WebGPU device or WebGL context to obtain the list of supported formats.*/
15
+ supportedTextureFormats?: TextureFormat[];
16
+ /** Override the URL to the worker bundle (by default loads from unpkg.com) */
17
+ workerUrl?: string;
12
18
  /** What container format is used? */
13
- containerFormat: 'auto' | 'ktx2' | 'basis';
19
+ containerFormat?: 'auto' | 'ktx2' | 'basis';
20
+ /** Format for texture data. auto selects based on platform caps (but gl context doesn't exist on a worker thread) */
21
+ format?: BasisTargetFormat;
14
22
  /** What module to use for transcoding? */
15
23
  module?: 'transcoder' | 'encoder';
16
- /** Override the URL to the worker bundle (by default loads from unpkg.com) */
17
- workerUrl?: string;
18
24
  };
19
25
  };
20
26
  /**
@@ -35,7 +41,6 @@ export declare const BasisWorkerLoader: {
35
41
  readonly options: {
36
42
  readonly basis: {
37
43
  readonly format: "auto";
38
- readonly libraryPath: "libs/";
39
44
  readonly containerFormat: "auto";
40
45
  readonly module: "transcoder";
41
46
  };
@@ -60,10 +65,10 @@ export declare const BasisLoader: {
60
65
  readonly options: {
61
66
  readonly basis: {
62
67
  readonly format: "auto";
63
- readonly libraryPath: "libs/";
64
68
  readonly containerFormat: "auto";
65
69
  readonly module: "transcoder";
66
70
  };
67
71
  };
68
72
  };
73
+ export {};
69
74
  //# sourceMappingURL=basis-loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"basis-loader.d.ts","sourceRoot":"","sources":["../src/basis-loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAS,aAAa,EAAmB,MAAM,0BAA0B,CAAC;AACtF,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAC,UAAU,EAAC,qCAAkC;AAErD,kCAAkC;AAClC,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG;IAC/C,kCAAkC;IAClC,KAAK,CAAC,EAAE;QACN,qHAAqH;QACrH,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;QACjF,gDAAgD;QAChD,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,qCAAqC;QACrC,eAAe,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;QAC3C,0CAA0C;QAC1C,MAAM,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;QAClC,8EAA8E;QAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB;uBACC,YAAY,EAAE,EAAE;wBAC1B,KAAK;;;;;;;;;;;;;;;;;;CAmB8C,CAAC;AAEzE;;GAEG;AACH,eAAO,MAAM,WAAW;;uBAzBO,YAAY,EAAE,EAAE;wBAC1B,KAAK;;;;;;;;;;;;;;;;;;CA2BmD,CAAC"}
1
+ {"version":3,"file":"basis-loader.d.ts","sourceRoot":"","sources":["../src/basis-loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAS,aAAa,EAAmB,MAAM,0BAA0B,CAAC;AACtF,OAAO,KAAK,EAAC,aAAa,EAAE,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAEpE,OAAO,EAAC,UAAU,EAAC,qCAAkC;AACrD,OAAO,KAAK,EAAC,WAAW,EAAC,qCAAkC;AAE3D,KAAK,iBAAiB,GAAG,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;AAC9D,KAAK,iBAAiB,GAClB,MAAM,GACN,iBAAiB,GACjB;IACE,KAAK,EAAE,iBAAiB,CAAC;IACzB,OAAO,EAAE,iBAAiB,CAAC;CAC5B,CAAC;AAEN,kCAAkC;AAClC,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG;IAC/C,kCAAkC;IAClC,KAAK,CAAC,EAAE;QACN,qIAAqI;QACrI,uBAAuB,CAAC,EAAE,aAAa,EAAE,CAAC;QAC1C,8EAA8E;QAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;QAEnB,qCAAqC;QACrC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;QAC5C,qHAAqH;QACrH,MAAM,CAAC,EAAE,iBAAiB,CAAC;QAC3B,0CAA0C;QAC1C,MAAM,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;KACnC,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB;uBACC,YAAY,EAAE,EAAE;wBAC1B,KAAK;;;;;;;;;;;;;;;;;CAkB8C,CAAC;AAEzE;;GAEG;AACH,eAAO,MAAM,WAAW;;uBAxBO,YAAY,EAAE,EAAE;wBAC1B,KAAK;;;;;;;;;;;;;;;;;CA0BmD,CAAC"}
@@ -21,7 +21,6 @@ export const BasisWorkerLoader = {
21
21
  options: {
22
22
  basis: {
23
23
  format: 'auto',
24
- libraryPath: 'libs/',
25
24
  containerFormat: 'auto',
26
25
  module: 'transcoder'
27
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"basis-loader.js","sourceRoot":"","sources":["../src/basis-loader.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAIpC,OAAO,EAAC,OAAO,EAAC,+BAA4B;AAC5C,OAAO,EAAC,UAAU,EAAC,qCAAkC;AAmBrD;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,QAAQ,EAAE,IAAmC;IAC7C,SAAS,EAAE,IAAa;IAExB,IAAI,EAAE,OAAO;IACb,EAAE,EAAE,OAAO;IACX,MAAM,EAAE,UAAU;IAClB,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE,IAAI;IACZ,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;IAC7B,SAAS,EAAE,CAAC,0BAA0B,EAAE,YAAY,CAAC;IACrD,KAAK,EAAE,CAAC,IAAI,CAAC;IACb,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE;QACP,KAAK,EAAE;YACL,MAAM,EAAE,MAAM;YACd,WAAW,EAAE,OAAO;YACpB,eAAe,EAAE,MAAM;YACvB,MAAM,EAAE,YAAY;SACrB;KACF;CACqE,CAAC;AAEzE;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,GAAG,iBAAiB;IACpB,KAAK,EAAE,UAAU;CAC0D,CAAC"}
1
+ {"version":3,"file":"basis-loader.js","sourceRoot":"","sources":["../src/basis-loader.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAIpC,OAAO,EAAC,OAAO,EAAC,+BAA4B;AAC5C,OAAO,EAAC,UAAU,EAAC,qCAAkC;AA8BrD;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,QAAQ,EAAE,IAAmC;IAC7C,SAAS,EAAE,IAAa;IAExB,IAAI,EAAE,OAAO;IACb,EAAE,EAAE,OAAO;IACX,MAAM,EAAE,UAAU;IAClB,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE,IAAI;IACZ,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;IAC7B,SAAS,EAAE,CAAC,0BAA0B,EAAE,YAAY,CAAC;IACrD,KAAK,EAAE,CAAC,IAAI,CAAC;IACb,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE;QACP,KAAK,EAAE;YACL,MAAM,EAAE,MAAM;YACd,eAAe,EAAE,MAAM;YACvB,MAAM,EAAE,YAAY;SACrB;KACF;CACqE,CAAC;AAEzE;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,GAAG,iBAAiB;IACpB,KAAK,EAAE,UAAU;CAC0D,CAAC"}