@loaders.gl/textures 4.4.0-alpha.18 → 4.4.0-alpha.19
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/README.md +153 -1
- package/dist/basis-worker-node.js +44 -28
- package/dist/basis-worker.js +43 -27
- package/dist/compressed-texture-worker.js +110 -77
- package/dist/crunch-worker.js +24 -10
- package/dist/dist.dev.js +1323 -239
- package/dist/dist.min.js +1 -1
- package/dist/index.cjs +1024 -151
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/ktx2-basis-writer-worker-node.js +2 -2
- package/dist/ktx2-basis-writer-worker.js +2 -2
- package/dist/lib/composite-image/image-texture-cube.d.ts +47 -0
- package/dist/lib/composite-image/image-texture-cube.d.ts.map +1 -0
- package/dist/lib/composite-image/image-texture-cube.js +42 -0
- package/dist/lib/composite-image/image-texture-cube.js.map +1 -0
- package/dist/lib/composite-image/parse-composite-image.d.ts +43 -0
- package/dist/lib/composite-image/parse-composite-image.d.ts.map +1 -0
- package/dist/lib/composite-image/parse-composite-image.js +437 -0
- package/dist/lib/composite-image/parse-composite-image.js.map +1 -0
- package/dist/lib/gl-extensions.d.ts +2 -0
- package/dist/lib/gl-extensions.d.ts.map +1 -1
- package/dist/lib/gl-extensions.js +2 -0
- package/dist/lib/gl-extensions.js.map +1 -1
- package/dist/lib/gl-types.d.ts +4 -0
- package/dist/lib/gl-types.d.ts.map +1 -0
- package/dist/lib/gl-types.js +5 -0
- package/dist/lib/gl-types.js.map +1 -0
- package/dist/lib/parsers/parse-basis.d.ts +9 -1
- package/dist/lib/parsers/parse-basis.d.ts.map +1 -1
- package/dist/lib/parsers/parse-basis.js +48 -25
- package/dist/lib/parsers/parse-basis.js.map +1 -1
- package/dist/lib/parsers/parse-crunch.d.ts.map +1 -1
- package/dist/lib/parsers/parse-crunch.js +4 -5
- package/dist/lib/parsers/parse-crunch.js.map +1 -1
- package/dist/lib/parsers/parse-dds.d.ts.map +1 -1
- package/dist/lib/parsers/parse-dds.js +10 -11
- package/dist/lib/parsers/parse-dds.js.map +1 -1
- package/dist/lib/parsers/parse-hdr.d.ts +21 -0
- package/dist/lib/parsers/parse-hdr.d.ts.map +1 -0
- package/dist/lib/parsers/parse-hdr.js +305 -0
- package/dist/lib/parsers/parse-hdr.js.map +1 -0
- package/dist/lib/parsers/parse-ktx.d.ts.map +1 -1
- package/dist/lib/parsers/parse-ktx.js +5 -5
- package/dist/lib/parsers/parse-ktx.js.map +1 -1
- package/dist/lib/parsers/parse-pvr.d.ts.map +1 -1
- package/dist/lib/parsers/parse-pvr.js +31 -32
- package/dist/lib/parsers/parse-pvr.js.map +1 -1
- package/dist/lib/texture-api/generate-url.d.ts.map +1 -1
- package/dist/lib/texture-api/generate-url.js +2 -10
- package/dist/lib/texture-api/generate-url.js.map +1 -1
- package/dist/lib/texture-api/load-image-array.d.ts +6 -3
- package/dist/lib/texture-api/load-image-array.d.ts.map +1 -1
- package/dist/lib/texture-api/load-image-array.js +5 -3
- package/dist/lib/texture-api/load-image-array.js.map +1 -1
- package/dist/lib/texture-api/load-image-cube.d.ts +7 -11
- package/dist/lib/texture-api/load-image-cube.d.ts.map +1 -1
- package/dist/lib/texture-api/load-image-cube.js +8 -20
- package/dist/lib/texture-api/load-image-cube.js.map +1 -1
- package/dist/lib/texture-api/load-image.d.ts +6 -3
- package/dist/lib/texture-api/load-image.d.ts.map +1 -1
- package/dist/lib/texture-api/load-image.js +8 -4
- package/dist/lib/texture-api/load-image.js.map +1 -1
- package/dist/lib/texture-api/texture-api-types.d.ts +13 -0
- package/dist/lib/texture-api/texture-api-types.d.ts.map +1 -1
- package/dist/lib/utils/detect-supported-texture-formats.js +4 -4
- package/dist/lib/utils/extract-mipmap-images.d.ts +5 -1
- package/dist/lib/utils/extract-mipmap-images.d.ts.map +1 -1
- package/dist/lib/utils/extract-mipmap-images.js +4 -3
- package/dist/lib/utils/extract-mipmap-images.js.map +1 -1
- package/dist/lib/utils/ktx-format-helper.d.ts +8 -1
- package/dist/lib/utils/ktx-format-helper.d.ts.map +1 -1
- package/dist/lib/utils/ktx-format-helper.js +9 -0
- package/dist/lib/utils/ktx-format-helper.js.map +1 -1
- package/dist/lib/utils/texture-format-map.d.ts +8 -1
- package/dist/lib/utils/texture-format-map.d.ts.map +1 -1
- package/dist/lib/utils/texture-format-map.js +19 -3
- package/dist/lib/utils/texture-format-map.js.map +1 -1
- package/dist/lib/utils/version.js +1 -1
- package/dist/npy-worker.js +1 -1
- package/dist/radiance-hdr-loader.d.ts +25 -0
- package/dist/radiance-hdr-loader.d.ts.map +1 -0
- package/dist/radiance-hdr-loader.js +23 -0
- package/dist/radiance-hdr-loader.js.map +1 -0
- package/dist/texture-array-loader.d.ts +25 -0
- package/dist/texture-array-loader.d.ts.map +1 -0
- package/dist/texture-array-loader.js +24 -0
- package/dist/texture-array-loader.js.map +1 -0
- package/dist/texture-cube-array-loader.d.ts +25 -0
- package/dist/texture-cube-array-loader.d.ts.map +1 -0
- package/dist/texture-cube-array-loader.js +24 -0
- package/dist/texture-cube-array-loader.js.map +1 -0
- package/dist/texture-cube-loader.d.ts +25 -0
- package/dist/texture-cube-loader.d.ts.map +1 -0
- package/dist/texture-cube-loader.js +24 -0
- package/dist/texture-cube-loader.js.map +1 -0
- package/dist/texture-loader.d.ts +25 -0
- package/dist/texture-loader.d.ts.map +1 -0
- package/dist/texture-loader.js +24 -0
- package/dist/texture-loader.js.map +1 -0
- package/package.json +6 -6
- package/src/index.ts +19 -0
- package/src/lib/composite-image/image-texture-cube.ts +49 -0
- package/src/lib/composite-image/parse-composite-image.ts +699 -0
- package/src/lib/gl-extensions.ts +2 -0
- package/src/lib/gl-types.ts +136 -0
- package/src/lib/parsers/parse-basis.ts +54 -26
- package/src/lib/parsers/parse-crunch.ts +6 -11
- package/src/lib/parsers/parse-dds.ts +11 -19
- package/src/lib/parsers/parse-hdr.ts +426 -0
- package/src/lib/parsers/parse-ktx.ts +6 -6
- package/src/lib/parsers/parse-pvr.ts +33 -75
- package/src/lib/texture-api/generate-url.ts +2 -12
- package/src/lib/texture-api/load-image-array.ts +15 -6
- package/src/lib/texture-api/load-image-cube.ts +20 -34
- package/src/lib/texture-api/load-image.ts +19 -8
- package/src/lib/texture-api/texture-api-types.ts +15 -0
- package/src/lib/utils/detect-supported-texture-formats.ts +4 -4
- package/src/lib/utils/extract-mipmap-images.ts +12 -4
- package/src/lib/utils/ktx-format-helper.ts +12 -1
- package/src/lib/utils/texture-format-map.ts +30 -3
- package/src/radiance-hdr-loader.ts +36 -0
- package/src/texture-array-loader.ts +46 -0
- package/src/texture-cube-array-loader.ts +49 -0
- package/src/texture-cube-loader.ts +46 -0
- package/src/texture-loader.ts +49 -0
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[loaders.gl](https://loaders.gl/docs) is a collection of framework-independent 3D and geospatial parsers and encoders.
|
|
4
4
|
|
|
5
|
-
This module contains loaders for compressed textures and [basis universal textures](https://github.com/BinomialLLC/basis_universal).
|
|
5
|
+
This module contains loaders for compressed textures, Radiance HDR textures, and [basis universal textures](https://github.com/BinomialLLC/basis_universal).
|
|
6
6
|
|
|
7
7
|
## Texture Levels
|
|
8
8
|
|
|
@@ -12,11 +12,14 @@ This module contains loaders for compressed textures and [basis universal textur
|
|
|
12
12
|
|
|
13
13
|
`CrunchLoader` returns `TextureLevel[]` for Crunch mip chains.
|
|
14
14
|
|
|
15
|
+
`RadianceHDRLoader` returns a `Texture` with `shape: 'texture'`, `type: '2d'`, and one decoded `rgba32float` level for Radiance `.hdr` images.
|
|
16
|
+
|
|
15
17
|
Each returned `TextureLevel` now exposes:
|
|
16
18
|
|
|
17
19
|
- `shape`: always `'texture-level'`. <img src="https://img.shields.io/badge/From-v4.4-blue.svg?style=flat-square" alt="From-v4.4" />
|
|
18
20
|
- `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
21
|
- `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" />
|
|
22
|
+
- `data`: a typed array containing the mip level payload. Compressed textures expose byte data, while `RadianceHDRLoader` exposes `Float32Array`.
|
|
20
23
|
|
|
21
24
|
```ts
|
|
22
25
|
import {load} from '@loaders.gl/core';
|
|
@@ -48,4 +51,153 @@ console.log(images[0][0].format);
|
|
|
48
51
|
console.log(images[0][0].textureFormat);
|
|
49
52
|
```
|
|
50
53
|
|
|
54
|
+
## Composite Image Texture Loaders
|
|
55
|
+
|
|
56
|
+
The `textures` module also exports JSON manifest loaders for image-based composite textures:
|
|
57
|
+
|
|
58
|
+
- `TextureLoader` for a single image or mip chain
|
|
59
|
+
- `TextureArrayLoader` for texture arrays
|
|
60
|
+
- `TextureCubeLoader` for cubemaps
|
|
61
|
+
- `TextureCubeArrayLoader` for cube arrays
|
|
62
|
+
|
|
63
|
+
Each manifest includes a `shape` discriminator and resolves relative member URLs against the manifest URL.
|
|
64
|
+
Member assets are parsed with `ImageLoader` by default, and additional loaders passed to top-level `load()` are also available for manifest members.
|
|
65
|
+
These loaders return schema `Texture` objects rather than raw image trees.
|
|
66
|
+
|
|
67
|
+
```ts
|
|
68
|
+
import {load} from '@loaders.gl/core';
|
|
69
|
+
import {BasisLoader, CompressedTextureLoader, TextureCubeLoader} from '@loaders.gl/textures';
|
|
70
|
+
|
|
71
|
+
const imageCube = await load('environment.image-texture-cube.json', [
|
|
72
|
+
TextureCubeLoader,
|
|
73
|
+
CompressedTextureLoader,
|
|
74
|
+
BasisLoader
|
|
75
|
+
]);
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Manifest Shapes
|
|
79
|
+
|
|
80
|
+
Single image:
|
|
81
|
+
|
|
82
|
+
```json
|
|
83
|
+
{
|
|
84
|
+
"shape": "image-texture",
|
|
85
|
+
"image": "texture.png"
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Single image with mipmaps:
|
|
90
|
+
|
|
91
|
+
```json
|
|
92
|
+
{
|
|
93
|
+
"shape": "image-texture",
|
|
94
|
+
"mipmaps": ["texture-0.png", "texture-1.png", "texture-2.png"]
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Texture array:
|
|
99
|
+
|
|
100
|
+
```json
|
|
101
|
+
{
|
|
102
|
+
"shape": "image-texture-array",
|
|
103
|
+
"layers": ["layer-0.png", "layer-1.png"]
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Texture array with mipmaps:
|
|
108
|
+
|
|
109
|
+
```json
|
|
110
|
+
{
|
|
111
|
+
"shape": "image-texture-array",
|
|
112
|
+
"layers": [
|
|
113
|
+
["layer-0-0.png", "layer-0-1.png"],
|
|
114
|
+
["layer-1-0.png", "layer-1-1.png"]
|
|
115
|
+
]
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Cubemap:
|
|
120
|
+
|
|
121
|
+
```json
|
|
122
|
+
{
|
|
123
|
+
"shape": "image-texture-cube",
|
|
124
|
+
"faces": {
|
|
125
|
+
"+X": "right.png",
|
|
126
|
+
"-X": "left.png",
|
|
127
|
+
"+Y": "top.png",
|
|
128
|
+
"-Y": "bottom.png",
|
|
129
|
+
"+Z": "front.png",
|
|
130
|
+
"-Z": "back.png"
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Cubemap with mipmaps:
|
|
136
|
+
|
|
137
|
+
```json
|
|
138
|
+
{
|
|
139
|
+
"shape": "image-texture-cube",
|
|
140
|
+
"faces": {
|
|
141
|
+
"+X": ["right-0.png", "right-1.png"],
|
|
142
|
+
"-X": ["left-0.png", "left-1.png"],
|
|
143
|
+
"+Y": ["top-0.png", "top-1.png"],
|
|
144
|
+
"-Y": ["bottom-0.png", "bottom-1.png"],
|
|
145
|
+
"+Z": ["front-0.png", "front-1.png"],
|
|
146
|
+
"-Z": ["back-0.png", "back-1.png"]
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Cube array:
|
|
152
|
+
|
|
153
|
+
```json
|
|
154
|
+
{
|
|
155
|
+
"shape": "image-texture-cube-array",
|
|
156
|
+
"layers": [
|
|
157
|
+
{
|
|
158
|
+
"faces": {
|
|
159
|
+
"+X": "sky-right.png",
|
|
160
|
+
"-X": "sky-left.png",
|
|
161
|
+
"+Y": "sky-top.png",
|
|
162
|
+
"-Y": "sky-bottom.png",
|
|
163
|
+
"+Z": "sky-front.png",
|
|
164
|
+
"-Z": "sky-back.png"
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
"faces": {
|
|
169
|
+
"+X": "irr-right.png",
|
|
170
|
+
"-X": "irr-left.png",
|
|
171
|
+
"+Y": "irr-top.png",
|
|
172
|
+
"-Y": "irr-bottom.png",
|
|
173
|
+
"+Z": "irr-front.png",
|
|
174
|
+
"-Z": "irr-back.png"
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
]
|
|
178
|
+
}
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
Template-driven mipmaps:
|
|
182
|
+
|
|
183
|
+
```json
|
|
184
|
+
{
|
|
185
|
+
"shape": "image-texture",
|
|
186
|
+
"mipLevels": "auto",
|
|
187
|
+
"template": "texture-{lod}.png"
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
Template placeholders are validated strictly. Supported placeholders are:
|
|
192
|
+
|
|
193
|
+
- `{lod}` for mip level
|
|
194
|
+
- `{index}` for array or cube-array layer index
|
|
195
|
+
- `{face}`, `{direction}`, `{axis}`, `{sign}` for cubemap faces
|
|
196
|
+
|
|
197
|
+
Use `\\{` and `\\}` to include literal braces in filenames.
|
|
198
|
+
|
|
199
|
+
Cube manifests use luma.gl-style face names: `'+X'`, `'-X'`, `'+Y'`, `'-Y'`, `'+Z'`, `'-Z'`. Directional aliases such as `right`, `left`, `top`, `bottom`, `front`, and `back` are still accepted for compatibility, but new manifests should use the luma.gl names.
|
|
200
|
+
|
|
201
|
+
If you parse an in-memory manifest instead of loading from a URL, provide `options.core.baseUrl` so relative member URLs can still be resolved.
|
|
202
|
+
|
|
51
203
|
For documentation please visit the [website](https://loaders.gl).
|
|
@@ -50494,7 +50494,7 @@ function getVersion() {
|
|
|
50494
50494
|
globalThis._loadersgl_.version = NPM_TAG;
|
|
50495
50495
|
warningIssued = true;
|
|
50496
50496
|
} else {
|
|
50497
|
-
globalThis._loadersgl_.version = "4.4.0-alpha.
|
|
50497
|
+
globalThis._loadersgl_.version = "4.4.0-alpha.19";
|
|
50498
50498
|
}
|
|
50499
50499
|
}
|
|
50500
50500
|
return globalThis._loadersgl_.version;
|
|
@@ -54239,7 +54239,7 @@ if (nodeVersion2 < 18) {
|
|
|
54239
54239
|
}
|
|
54240
54240
|
|
|
54241
54241
|
// src/lib/utils/version.ts
|
|
54242
|
-
var VERSION2 = true ? "4.4.0-alpha.
|
|
54242
|
+
var VERSION2 = true ? "4.4.0-alpha.19" : "latest";
|
|
54243
54243
|
|
|
54244
54244
|
// src/lib/parsers/basis-module-loader.ts
|
|
54245
54245
|
var BASIS_EXTERNAL_LIBRARIES = {
|
|
@@ -54358,7 +54358,7 @@ var WEBGL_TEXTURE_FORMATS = {
|
|
|
54358
54358
|
"bc7-rgba-unorm",
|
|
54359
54359
|
"bc7-rgba-unorm-srgb"
|
|
54360
54360
|
],
|
|
54361
|
-
WEBGL_compressed_texture_etc1: ["etc1-
|
|
54361
|
+
WEBGL_compressed_texture_etc1: ["etc1-rgb-unorm-webgl"],
|
|
54362
54362
|
WEBGL_compressed_texture_etc: [
|
|
54363
54363
|
"etc2-rgb8unorm",
|
|
54364
54364
|
"etc2-rgb8unorm-srgb",
|
|
@@ -54374,7 +54374,7 @@ var WEBGL_TEXTURE_FORMATS = {
|
|
|
54374
54374
|
WEBGL_compressed_texture_pvrtc: [
|
|
54375
54375
|
"pvrtc-rgb4unorm-webgl",
|
|
54376
54376
|
"pvrtc-rgba4unorm-webgl",
|
|
54377
|
-
"pvrtc-
|
|
54377
|
+
"pvrtc-rgb2unorm-webgl",
|
|
54378
54378
|
"pvrtc-rgba2unorm-webgl"
|
|
54379
54379
|
],
|
|
54380
54380
|
WEBGL_compressed_texture_atc: [
|
|
@@ -54474,12 +54474,13 @@ function isKTX(data) {
|
|
|
54474
54474
|
}
|
|
54475
54475
|
|
|
54476
54476
|
// src/lib/parsers/parse-basis.ts
|
|
54477
|
+
var basisTranscodingLock = Promise.resolve();
|
|
54477
54478
|
var BASIS_FORMAT_TO_OUTPUT_OPTIONS = {
|
|
54478
54479
|
etc1: {
|
|
54479
54480
|
basisFormat: 0,
|
|
54480
54481
|
compressed: true,
|
|
54481
54482
|
format: GL_COMPRESSED_RGB_ETC1_WEBGL,
|
|
54482
|
-
textureFormat: "etc1-
|
|
54483
|
+
textureFormat: "etc1-rgb-unorm-webgl"
|
|
54483
54484
|
},
|
|
54484
54485
|
etc2: {
|
|
54485
54486
|
basisFormat: 1,
|
|
@@ -54581,32 +54582,47 @@ var BASIS_FORMAT_TO_OUTPUT_OPTIONS = {
|
|
|
54581
54582
|
var BASIS_FORMATS = Object.freeze(
|
|
54582
54583
|
Object.keys(BASIS_FORMAT_TO_OUTPUT_OPTIONS)
|
|
54583
54584
|
);
|
|
54585
|
+
async function withBasisTranscodingLock(transcode) {
|
|
54586
|
+
const previousLock = basisTranscodingLock;
|
|
54587
|
+
let releaseLock;
|
|
54588
|
+
basisTranscodingLock = new Promise((resolve) => {
|
|
54589
|
+
releaseLock = resolve;
|
|
54590
|
+
});
|
|
54591
|
+
await previousLock;
|
|
54592
|
+
try {
|
|
54593
|
+
return await transcode();
|
|
54594
|
+
} finally {
|
|
54595
|
+
releaseLock();
|
|
54596
|
+
}
|
|
54597
|
+
}
|
|
54584
54598
|
async function parseBasis(data, options = {}) {
|
|
54585
|
-
var _a;
|
|
54586
54599
|
const loadLibraryOptions = extractLoadLibraryOptions(options);
|
|
54587
|
-
|
|
54588
|
-
|
|
54589
|
-
|
|
54590
|
-
|
|
54591
|
-
|
|
54592
|
-
|
|
54593
|
-
return parseBasisFile(BasisFile, data, options);
|
|
54594
|
-
}
|
|
54595
|
-
switch (options.basis.module) {
|
|
54596
|
-
case "encoder":
|
|
54597
|
-
const fileConstructors = await loadBasisEncoderModule(loadLibraryOptions);
|
|
54598
|
-
switch (options.basis.containerFormat) {
|
|
54599
|
-
case "ktx2":
|
|
54600
|
-
return parseKTX2File(fileConstructors.KTX2File, data, options);
|
|
54601
|
-
case "basis":
|
|
54602
|
-
default:
|
|
54603
|
-
return parseBasisFile(fileConstructors.BasisFile, data, options);
|
|
54600
|
+
return await withBasisTranscodingLock(async () => {
|
|
54601
|
+
var _a;
|
|
54602
|
+
if (!((_a = options.basis) == null ? void 0 : _a.containerFormat) || options.basis.containerFormat === "auto") {
|
|
54603
|
+
if (isKTX(data)) {
|
|
54604
|
+
const fileConstructors = await loadBasisEncoderModule(loadLibraryOptions);
|
|
54605
|
+
return parseKTX2File(fileConstructors.KTX2File, data, options);
|
|
54604
54606
|
}
|
|
54605
|
-
case "transcoder":
|
|
54606
|
-
default:
|
|
54607
54607
|
const { BasisFile } = await loadBasisTranscoderModule(loadLibraryOptions);
|
|
54608
54608
|
return parseBasisFile(BasisFile, data, options);
|
|
54609
|
-
|
|
54609
|
+
}
|
|
54610
|
+
switch (options.basis.module) {
|
|
54611
|
+
case "encoder":
|
|
54612
|
+
const fileConstructors = await loadBasisEncoderModule(loadLibraryOptions);
|
|
54613
|
+
switch (options.basis.containerFormat) {
|
|
54614
|
+
case "ktx2":
|
|
54615
|
+
return parseKTX2File(fileConstructors.KTX2File, data, options);
|
|
54616
|
+
case "basis":
|
|
54617
|
+
default:
|
|
54618
|
+
return parseBasisFile(fileConstructors.BasisFile, data, options);
|
|
54619
|
+
}
|
|
54620
|
+
case "transcoder":
|
|
54621
|
+
default:
|
|
54622
|
+
const { BasisFile } = await loadBasisTranscoderModule(loadLibraryOptions);
|
|
54623
|
+
return parseBasisFile(BasisFile, data, options);
|
|
54624
|
+
}
|
|
54625
|
+
});
|
|
54610
54626
|
}
|
|
54611
54627
|
function parseBasisFile(BasisFile, data, options) {
|
|
54612
54628
|
const basisFile = new BasisFile(new Uint8Array(data));
|
|
@@ -54752,7 +54768,7 @@ function selectSupportedBasisFormat(supportedTextureFormats = detectSupportedTex
|
|
|
54752
54768
|
} else if (hasSupportedTextureFormat(textureFormats2, [
|
|
54753
54769
|
"pvrtc-rgb4unorm-webgl",
|
|
54754
54770
|
"pvrtc-rgba4unorm-webgl",
|
|
54755
|
-
"pvrtc-
|
|
54771
|
+
"pvrtc-rgb2unorm-webgl",
|
|
54756
54772
|
"pvrtc-rgba2unorm-webgl"
|
|
54757
54773
|
])) {
|
|
54758
54774
|
return {
|
|
@@ -54772,7 +54788,7 @@ function selectSupportedBasisFormat(supportedTextureFormats = detectSupportedTex
|
|
|
54772
54788
|
"eac-rg11snorm"
|
|
54773
54789
|
])) {
|
|
54774
54790
|
return "etc2";
|
|
54775
|
-
} else if (textureFormats2.has("etc1-
|
|
54791
|
+
} else if (textureFormats2.has("etc1-rgb-unorm-webgl")) {
|
|
54776
54792
|
return "etc1";
|
|
54777
54793
|
} else if (hasSupportedTextureFormat(textureFormats2, [
|
|
54778
54794
|
"atc-rgb-unorm-webgl",
|
package/dist/basis-worker.js
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
globalThis._loadersgl_.version = NPM_TAG;
|
|
23
23
|
warningIssued = true;
|
|
24
24
|
} else {
|
|
25
|
-
globalThis._loadersgl_.version = "4.4.0-alpha.
|
|
25
|
+
globalThis._loadersgl_.version = "4.4.0-alpha.19";
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
return globalThis._loadersgl_.version;
|
|
@@ -382,7 +382,7 @@
|
|
|
382
382
|
}
|
|
383
383
|
|
|
384
384
|
// src/lib/utils/version.ts
|
|
385
|
-
var VERSION2 = true ? "4.4.0-alpha.
|
|
385
|
+
var VERSION2 = true ? "4.4.0-alpha.19" : "latest";
|
|
386
386
|
|
|
387
387
|
// src/lib/parsers/basis-module-loader.ts
|
|
388
388
|
var BASIS_EXTERNAL_LIBRARIES = {
|
|
@@ -501,7 +501,7 @@
|
|
|
501
501
|
"bc7-rgba-unorm",
|
|
502
502
|
"bc7-rgba-unorm-srgb"
|
|
503
503
|
],
|
|
504
|
-
WEBGL_compressed_texture_etc1: ["etc1-
|
|
504
|
+
WEBGL_compressed_texture_etc1: ["etc1-rgb-unorm-webgl"],
|
|
505
505
|
WEBGL_compressed_texture_etc: [
|
|
506
506
|
"etc2-rgb8unorm",
|
|
507
507
|
"etc2-rgb8unorm-srgb",
|
|
@@ -517,7 +517,7 @@
|
|
|
517
517
|
WEBGL_compressed_texture_pvrtc: [
|
|
518
518
|
"pvrtc-rgb4unorm-webgl",
|
|
519
519
|
"pvrtc-rgba4unorm-webgl",
|
|
520
|
-
"pvrtc-
|
|
520
|
+
"pvrtc-rgb2unorm-webgl",
|
|
521
521
|
"pvrtc-rgba2unorm-webgl"
|
|
522
522
|
],
|
|
523
523
|
WEBGL_compressed_texture_atc: [
|
|
@@ -617,12 +617,13 @@
|
|
|
617
617
|
}
|
|
618
618
|
|
|
619
619
|
// src/lib/parsers/parse-basis.ts
|
|
620
|
+
var basisTranscodingLock = Promise.resolve();
|
|
620
621
|
var BASIS_FORMAT_TO_OUTPUT_OPTIONS = {
|
|
621
622
|
etc1: {
|
|
622
623
|
basisFormat: 0,
|
|
623
624
|
compressed: true,
|
|
624
625
|
format: GL_COMPRESSED_RGB_ETC1_WEBGL,
|
|
625
|
-
textureFormat: "etc1-
|
|
626
|
+
textureFormat: "etc1-rgb-unorm-webgl"
|
|
626
627
|
},
|
|
627
628
|
etc2: {
|
|
628
629
|
basisFormat: 1,
|
|
@@ -724,31 +725,46 @@
|
|
|
724
725
|
var BASIS_FORMATS = Object.freeze(
|
|
725
726
|
Object.keys(BASIS_FORMAT_TO_OUTPUT_OPTIONS)
|
|
726
727
|
);
|
|
728
|
+
async function withBasisTranscodingLock(transcode) {
|
|
729
|
+
const previousLock = basisTranscodingLock;
|
|
730
|
+
let releaseLock;
|
|
731
|
+
basisTranscodingLock = new Promise((resolve) => {
|
|
732
|
+
releaseLock = resolve;
|
|
733
|
+
});
|
|
734
|
+
await previousLock;
|
|
735
|
+
try {
|
|
736
|
+
return await transcode();
|
|
737
|
+
} finally {
|
|
738
|
+
releaseLock();
|
|
739
|
+
}
|
|
740
|
+
}
|
|
727
741
|
async function parseBasis(data, options = {}) {
|
|
728
742
|
const loadLibraryOptions = extractLoadLibraryOptions(options);
|
|
729
|
-
|
|
730
|
-
if (
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
const { BasisFile } = await loadBasisTranscoderModule(loadLibraryOptions);
|
|
735
|
-
return parseBasisFile(BasisFile, data, options);
|
|
736
|
-
}
|
|
737
|
-
switch (options.basis.module) {
|
|
738
|
-
case "encoder":
|
|
739
|
-
const fileConstructors = await loadBasisEncoderModule(loadLibraryOptions);
|
|
740
|
-
switch (options.basis.containerFormat) {
|
|
741
|
-
case "ktx2":
|
|
742
|
-
return parseKTX2File(fileConstructors.KTX2File, data, options);
|
|
743
|
-
case "basis":
|
|
744
|
-
default:
|
|
745
|
-
return parseBasisFile(fileConstructors.BasisFile, data, options);
|
|
743
|
+
return await withBasisTranscodingLock(async () => {
|
|
744
|
+
if (!options.basis?.containerFormat || options.basis.containerFormat === "auto") {
|
|
745
|
+
if (isKTX(data)) {
|
|
746
|
+
const fileConstructors = await loadBasisEncoderModule(loadLibraryOptions);
|
|
747
|
+
return parseKTX2File(fileConstructors.KTX2File, data, options);
|
|
746
748
|
}
|
|
747
|
-
case "transcoder":
|
|
748
|
-
default:
|
|
749
749
|
const { BasisFile } = await loadBasisTranscoderModule(loadLibraryOptions);
|
|
750
750
|
return parseBasisFile(BasisFile, data, options);
|
|
751
|
-
|
|
751
|
+
}
|
|
752
|
+
switch (options.basis.module) {
|
|
753
|
+
case "encoder":
|
|
754
|
+
const fileConstructors = await loadBasisEncoderModule(loadLibraryOptions);
|
|
755
|
+
switch (options.basis.containerFormat) {
|
|
756
|
+
case "ktx2":
|
|
757
|
+
return parseKTX2File(fileConstructors.KTX2File, data, options);
|
|
758
|
+
case "basis":
|
|
759
|
+
default:
|
|
760
|
+
return parseBasisFile(fileConstructors.BasisFile, data, options);
|
|
761
|
+
}
|
|
762
|
+
case "transcoder":
|
|
763
|
+
default:
|
|
764
|
+
const { BasisFile } = await loadBasisTranscoderModule(loadLibraryOptions);
|
|
765
|
+
return parseBasisFile(BasisFile, data, options);
|
|
766
|
+
}
|
|
767
|
+
});
|
|
752
768
|
}
|
|
753
769
|
function parseBasisFile(BasisFile, data, options) {
|
|
754
770
|
const basisFile = new BasisFile(new Uint8Array(data));
|
|
@@ -893,7 +909,7 @@
|
|
|
893
909
|
} else if (hasSupportedTextureFormat(textureFormats2, [
|
|
894
910
|
"pvrtc-rgb4unorm-webgl",
|
|
895
911
|
"pvrtc-rgba4unorm-webgl",
|
|
896
|
-
"pvrtc-
|
|
912
|
+
"pvrtc-rgb2unorm-webgl",
|
|
897
913
|
"pvrtc-rgba2unorm-webgl"
|
|
898
914
|
])) {
|
|
899
915
|
return {
|
|
@@ -913,7 +929,7 @@
|
|
|
913
929
|
"eac-rg11snorm"
|
|
914
930
|
])) {
|
|
915
931
|
return "etc2";
|
|
916
|
-
} else if (textureFormats2.has("etc1-
|
|
932
|
+
} else if (textureFormats2.has("etc1-rgb-unorm-webgl")) {
|
|
917
933
|
return "etc1";
|
|
918
934
|
} else if (hasSupportedTextureFormat(textureFormats2, [
|
|
919
935
|
"atc-rgb-unorm-webgl",
|