babylonjs-ktx2decoder 5.0.0-rc.7 → 5.0.0-rc.9

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.
@@ -1,578 +0,0 @@
1
-
2
- declare module "babylonjs-ktx2decoder/index" {
3
- export * from "babylonjs-ktx2decoder/ktx2Decoder";
4
- export * from "babylonjs-ktx2decoder/ktx2FileReader";
5
- export * from "babylonjs-ktx2decoder/transcoder";
6
- export * from "babylonjs-ktx2decoder/transcoderManager";
7
- export * from "babylonjs-ktx2decoder/wasmMemoryManager";
8
- export * from "babylonjs-ktx2decoder/zstddec";
9
- export * from "babylonjs-ktx2decoder/Misc/index";
10
- export * from "babylonjs-ktx2decoder/Transcoders/index";
11
-
12
- }
13
- declare module "babylonjs-ktx2decoder/ktx2Decoder" {
14
- /**
15
- * Resources used for the implementation:
16
- * - 3js KTX2 loader: https://github.com/mrdoob/three.js/blob/dfb5c23ce126ec845e4aa240599915fef5375797/examples/jsm/loaders/KTX2Loader.js
17
- * - Universal Texture Transcoders: https://github.com/KhronosGroup/Universal-Texture-Transcoders
18
- * - KTX2 specification: http://github.khronos.org/KTX-Specification/
19
- * - KTX2 binaries to convert files: https://github.com/KhronosGroup/KTX-Software/releases
20
- * - KTX specification: https://www.khronos.org/registry/DataFormat/specs/1.3/dataformat.1.3.html
21
- * - KTX-Software: https://github.com/KhronosGroup/KTX-Software
22
- */
23
- export interface IDecodedData {
24
- width: number;
25
- height: number;
26
- transcodedFormat: number;
27
- mipmaps: Array<IMipmap>;
28
- isInGammaSpace: boolean;
29
- hasAlpha: boolean;
30
- errors?: string;
31
- transcoderName?: string;
32
- }
33
- export interface IMipmap {
34
- data: Uint8Array | null;
35
- width: number;
36
- height: number;
37
- }
38
- export interface ICompressedFormatCapabilities {
39
- astc?: boolean;
40
- bptc?: boolean;
41
- s3tc?: boolean;
42
- pvrtc?: boolean;
43
- etc2?: boolean;
44
- etc1?: boolean;
45
- }
46
- export interface IKTX2DecoderOptions {
47
- /** use RGBA format if ASTC and BC7 are not available as transcoded format */
48
- useRGBAIfASTCBC7NotAvailableWhenUASTC?: boolean;
49
- /** force to always use RGBA for transcoded format */
50
- forceRGBA?: boolean;
51
- /**
52
- * list of transcoders to bypass when looking for a suitable transcoder. The available transcoders are:
53
- * UniversalTranscoder_UASTC_ASTC
54
- * UniversalTranscoder_UASTC_BC7
55
- * UniversalTranscoder_UASTC_RGBA_UNORM
56
- * UniversalTranscoder_UASTC_RGBA_SRGB
57
- * MSCTranscoder
58
- */
59
- bypassTranscoders?: string[];
60
- }
61
- /**
62
- * Class for decoding KTX2 files
63
- *
64
- */
65
- export class KTX2Decoder {
66
- private _transcoderMgr;
67
- private _zstdDecoder;
68
- constructor();
69
- decode(data: Uint8Array, caps: ICompressedFormatCapabilities, options?: IKTX2DecoderOptions): Promise<IDecodedData | null>;
70
- private _decodeData;
71
- }
72
-
73
- }
74
- declare module "babylonjs-ktx2decoder/ktx2FileReader" {
75
- import { sourceTextureFormat } from "babylonjs-ktx2decoder/transcoder";
76
- /** @hidden */
77
- export enum SupercompressionScheme {
78
- None = 0,
79
- BasisLZ = 1,
80
- ZStandard = 2,
81
- ZLib = 3
82
- }
83
- /** @hidden */
84
- export interface IKTX2_Header {
85
- vkFormat: number;
86
- typeSize: number;
87
- pixelWidth: number;
88
- pixelHeight: number;
89
- pixelDepth: number;
90
- layerCount: number;
91
- faceCount: number;
92
- levelCount: number;
93
- supercompressionScheme: number;
94
- dfdByteOffset: number;
95
- dfdByteLength: number;
96
- kvdByteOffset: number;
97
- kvdByteLength: number;
98
- sgdByteOffset: number;
99
- sgdByteLength: number;
100
- }
101
- /** @hidden */
102
- export interface IKTX2_Level {
103
- byteOffset: number;
104
- byteLength: number;
105
- uncompressedByteLength: number;
106
- }
107
- interface IKTX2_Sample {
108
- bitOffset: number;
109
- bitLength: number;
110
- channelType: number;
111
- channelFlags: number;
112
- samplePosition: number[];
113
- sampleLower: number;
114
- sampleUpper: number;
115
- }
116
- /** @hidden */
117
- export interface IKTX2_DFD {
118
- vendorId: number;
119
- descriptorType: number;
120
- versionNumber: number;
121
- descriptorBlockSize: number;
122
- colorModel: number;
123
- colorPrimaries: number;
124
- transferFunction: number;
125
- flags: number;
126
- texelBlockDimension: {
127
- x: number;
128
- y: number;
129
- z: number;
130
- w: number;
131
- };
132
- bytesPlane: Array<number>;
133
- numSamples: number;
134
- samples: Array<IKTX2_Sample>;
135
- }
136
- /** @hidden */
137
- export interface IKTX2_ImageDesc {
138
- imageFlags: number;
139
- rgbSliceByteOffset: number;
140
- rgbSliceByteLength: number;
141
- alphaSliceByteOffset: number;
142
- alphaSliceByteLength: number;
143
- }
144
- /** @hidden */
145
- export interface IKTX2_SupercompressionGlobalData {
146
- endpointCount?: number;
147
- selectorCount?: number;
148
- endpointsByteLength?: number;
149
- selectorsByteLength?: number;
150
- tablesByteLength?: number;
151
- extendedByteLength?: number;
152
- imageDescs?: Array<IKTX2_ImageDesc>;
153
- endpointsData?: Uint8Array;
154
- selectorsData?: Uint8Array;
155
- tablesData?: Uint8Array;
156
- extendedData?: Uint8Array;
157
- }
158
- export class KTX2FileReader {
159
- private _data;
160
- private _header;
161
- private _levels;
162
- private _dfdBlock;
163
- private _supercompressionGlobalData;
164
- /**
165
- * Will throw an exception if the file can't be parsed
166
- * @param data
167
- */
168
- constructor(data: Uint8Array);
169
- get data(): Uint8Array;
170
- get header(): IKTX2_Header;
171
- get levels(): Array<IKTX2_Level>;
172
- get dfdBlock(): IKTX2_DFD;
173
- get supercompressionGlobalData(): IKTX2_SupercompressionGlobalData;
174
- isValid(): boolean;
175
- parse(): void;
176
- private _getImageCount;
177
- get textureFormat(): sourceTextureFormat;
178
- get hasAlpha(): boolean;
179
- get needZSTDDecoder(): boolean;
180
- get isInGammaSpace(): boolean;
181
- static IsValid(data: ArrayBufferView): boolean;
182
- }
183
- export {};
184
-
185
- }
186
- declare module "babylonjs-ktx2decoder/legacy/legacy" {
187
- export * from "babylonjs-ktx2decoder/index";
188
-
189
- }
190
- declare module "babylonjs-ktx2decoder/Misc/dataReader" {
191
- /**
192
- * Utility class for reading from a data buffer
193
- */
194
- export class DataReader {
195
- /**
196
- * The current byte offset from the beginning of the data buffer.
197
- */
198
- get byteOffset(): number;
199
- private _dataView;
200
- private _dataByteOffset;
201
- /**
202
- * Constructor
203
- * @param buffer The buffer to set
204
- * @param byteOffset The starting offset in the buffer
205
- * @param byteLength The byte length of the buffer
206
- */
207
- constructor(buffer: ArrayBuffer | ArrayBufferView, byteOffset?: number, byteLength?: number);
208
- /**
209
- * Read a unsigned 8-bit integer from the currently loaded data range.
210
- * @returns The 8-bit integer read
211
- */
212
- readUint8(): number;
213
- /**
214
- * Read a signed 8-bit integer from the currently loaded data range.
215
- * @returns The 8-bit integer read
216
- */
217
- readInt8(): number;
218
- /**
219
- * Read a unsigned 16-bit integer from the currently loaded data range.
220
- * @returns The 16-bit integer read
221
- */
222
- readUint16(): number;
223
- /**
224
- * Read a signed 16-bit integer from the currently loaded data range.
225
- * @returns The 16-bit integer read
226
- */
227
- readInt16(): number;
228
- /**
229
- * Read a unsigned 32-bit integer from the currently loaded data range.
230
- * @returns The 32-bit integer read
231
- */
232
- readUint32(): number;
233
- /**
234
- * Read a signed 32-bit integer from the currently loaded data range.
235
- * @returns The 32-bit integer read
236
- */
237
- readInt32(): number;
238
- /**
239
- * Read a unsigned 32-bit integer from the currently loaded data range.
240
- * @returns The 32-bit integer read
241
- */
242
- readUint64(): number;
243
- /**
244
- * Read a byte array from the currently loaded data range.
245
- * @param byteLength The byte length to read
246
- * @returns The byte array read
247
- */
248
- readUint8Array(byteLength: number): Uint8Array;
249
- /**
250
- * Skips the given byte length the currently loaded data range.
251
- * @param byteLength The byte length to skip
252
- * @returns This instance
253
- */
254
- skipBytes(byteLength: number): this;
255
- }
256
-
257
- }
258
- declare module "babylonjs-ktx2decoder/Misc/index" {
259
- export * from "babylonjs-ktx2decoder/Misc/dataReader";
260
-
261
- }
262
- declare module "babylonjs-ktx2decoder/transcodeDecisionTree" {
263
- import { sourceTextureFormat } from "babylonjs-ktx2decoder/transcoder";
264
- export class TranscodeDecisionTree {
265
- private static _IsLeafNode;
266
- private _hasAlpha;
267
- private _isPowerOfTwo;
268
- private _caps;
269
- private _options;
270
- private _transcodeFormat;
271
- private _engineFormat;
272
- private _roundToMultiple4;
273
- get transcodeFormat(): number;
274
- get engineFormat(): number;
275
- get roundToMultiple4(): boolean;
276
- constructor(textureFormat: sourceTextureFormat, hasAlpha: boolean, isPowerOfTwo: boolean, caps: any, options?: any);
277
- private _parseNode;
278
- }
279
-
280
- }
281
- declare module "babylonjs-ktx2decoder/transcoder" {
282
- import { WASMMemoryManager } from "babylonjs-ktx2decoder/wasmMemoryManager";
283
- import { KTX2FileReader, IKTX2_ImageDesc } from "babylonjs-ktx2decoder/ktx2FileReader";
284
- /**
285
- * @hidden
286
- */
287
- export enum sourceTextureFormat {
288
- ETC1S = 0,
289
- UASTC4x4 = 1
290
- }
291
- /**
292
- * @hidden
293
- */
294
- export enum transcodeTarget {
295
- ASTC_4x4_RGBA = 0,
296
- BC7_RGBA = 1,
297
- BC3_RGBA = 2,
298
- BC1_RGB = 3,
299
- PVRTC1_4_RGBA = 4,
300
- PVRTC1_4_RGB = 5,
301
- ETC2_RGBA = 6,
302
- ETC1_RGB = 7,
303
- RGBA32 = 8
304
- }
305
- /**
306
- * @hidden
307
- */
308
- export class Transcoder {
309
- static CanTranscode(src: sourceTextureFormat, dst: transcodeTarget, isInGammaSpace: boolean): boolean;
310
- static Name: string;
311
- getName(): string;
312
- initialize(): void;
313
- needMemoryManager(): boolean;
314
- setMemoryManager(memoryMgr: WASMMemoryManager): void;
315
- transcode(src: sourceTextureFormat, dst: transcodeTarget, level: number, width: number, height: number, uncompressedByteLength: number, ktx2Reader: KTX2FileReader, imageDesc: IKTX2_ImageDesc | null, encodedData: Uint8Array): Promise<Uint8Array | null>;
316
- }
317
-
318
- }
319
- declare module "babylonjs-ktx2decoder/transcoderManager" {
320
- import { transcodeTarget, sourceTextureFormat, Transcoder } from "babylonjs-ktx2decoder/transcoder";
321
- /**
322
- * @hidden
323
- */
324
- export class TranscoderManager {
325
- static _Transcoders: Array<typeof Transcoder>;
326
- static RegisterTranscoder(transcoder: typeof Transcoder): void;
327
- private static _TranscoderInstances;
328
- private _wasmMemoryManager;
329
- findTranscoder(src: sourceTextureFormat, dst: transcodeTarget, isInGammaSpace: boolean, bypass?: string[]): Transcoder | null;
330
- private _getExistingTranscoder;
331
- }
332
-
333
- }
334
- declare module "babylonjs-ktx2decoder/Transcoders/index" {
335
- export * from "babylonjs-ktx2decoder/Transcoders/liteTranscoder";
336
- export * from "babylonjs-ktx2decoder/Transcoders/liteTranscoder_UASTC_ASTC";
337
- export * from "babylonjs-ktx2decoder/Transcoders/liteTranscoder_UASTC_BC7";
338
- export * from "babylonjs-ktx2decoder/Transcoders/liteTranscoder_UASTC_RGBA_UNORM";
339
- export * from "babylonjs-ktx2decoder/Transcoders/liteTranscoder_UASTC_RGBA_SRGB";
340
- export * from "babylonjs-ktx2decoder/Transcoders/mscTranscoder";
341
-
342
- }
343
- declare module "babylonjs-ktx2decoder/Transcoders/liteTranscoder_UASTC_ASTC" {
344
- import { sourceTextureFormat, transcodeTarget } from "babylonjs-ktx2decoder/transcoder";
345
- import { LiteTranscoder } from "babylonjs-ktx2decoder/Transcoders/liteTranscoder";
346
- /**
347
- * @hidden
348
- */
349
- export class LiteTranscoder_UASTC_ASTC extends LiteTranscoder {
350
- /**
351
- * URL to use when loading the wasm module for the transcoder
352
- */
353
- static WasmModuleURL: string;
354
- static CanTranscode(src: sourceTextureFormat, dst: transcodeTarget, isInGammaSpace: boolean): boolean;
355
- static Name: string;
356
- getName(): string;
357
- initialize(): void;
358
- }
359
-
360
- }
361
- declare module "babylonjs-ktx2decoder/Transcoders/liteTranscoder_UASTC_BC7" {
362
- import { sourceTextureFormat, transcodeTarget } from "babylonjs-ktx2decoder/transcoder";
363
- import { LiteTranscoder } from "babylonjs-ktx2decoder/Transcoders/liteTranscoder";
364
- /**
365
- * @hidden
366
- */
367
- export class LiteTranscoder_UASTC_BC7 extends LiteTranscoder {
368
- /**
369
- * URL to use when loading the wasm module for the transcoder
370
- */
371
- static WasmModuleURL: string;
372
- static CanTranscode(src: sourceTextureFormat, dst: transcodeTarget, isInGammaSpace: boolean): boolean;
373
- static Name: string;
374
- getName(): string;
375
- initialize(): void;
376
- }
377
-
378
- }
379
- declare module "babylonjs-ktx2decoder/Transcoders/liteTranscoder_UASTC_RGBA_SRGB" {
380
- import { sourceTextureFormat, transcodeTarget } from "babylonjs-ktx2decoder/transcoder";
381
- import { LiteTranscoder } from "babylonjs-ktx2decoder/Transcoders/liteTranscoder";
382
- import { KTX2FileReader, IKTX2_ImageDesc } from "babylonjs-ktx2decoder/ktx2FileReader";
383
- /**
384
- * @hidden
385
- */
386
- export class LiteTranscoder_UASTC_RGBA_SRGB extends LiteTranscoder {
387
- /**
388
- * URL to use when loading the wasm module for the transcoder (srgb)
389
- */
390
- static WasmModuleURL: string;
391
- static CanTranscode(src: sourceTextureFormat, dst: transcodeTarget, isInGammaSpace: boolean): boolean;
392
- static Name: string;
393
- getName(): string;
394
- initialize(): void;
395
- transcode(src: sourceTextureFormat, dst: transcodeTarget, level: number, width: number, height: number, uncompressedByteLength: number, ktx2Reader: KTX2FileReader, imageDesc: IKTX2_ImageDesc | null, encodedData: Uint8Array): Promise<Uint8Array | null>;
396
- }
397
-
398
- }
399
- declare module "babylonjs-ktx2decoder/Transcoders/liteTranscoder_UASTC_RGBA_UNORM" {
400
- import { sourceTextureFormat, transcodeTarget } from "babylonjs-ktx2decoder/transcoder";
401
- import { LiteTranscoder } from "babylonjs-ktx2decoder/Transcoders/liteTranscoder";
402
- import { KTX2FileReader, IKTX2_ImageDesc } from "babylonjs-ktx2decoder/ktx2FileReader";
403
- /**
404
- * @hidden
405
- */
406
- export class LiteTranscoder_UASTC_RGBA_UNORM extends LiteTranscoder {
407
- /**
408
- * URL to use when loading the wasm module for the transcoder (unorm)
409
- */
410
- static WasmModuleURL: string;
411
- static CanTranscode(src: sourceTextureFormat, dst: transcodeTarget, isInGammaSpace: boolean): boolean;
412
- static Name: string;
413
- getName(): string;
414
- initialize(): void;
415
- transcode(src: sourceTextureFormat, dst: transcodeTarget, level: number, width: number, height: number, uncompressedByteLength: number, ktx2Reader: KTX2FileReader, imageDesc: IKTX2_ImageDesc | null, encodedData: Uint8Array): Promise<Uint8Array | null>;
416
- }
417
-
418
- }
419
- declare module "babylonjs-ktx2decoder/Transcoders/liteTranscoder" {
420
- import { Transcoder, sourceTextureFormat, transcodeTarget } from "babylonjs-ktx2decoder/transcoder";
421
- import { WASMMemoryManager } from "babylonjs-ktx2decoder/wasmMemoryManager";
422
- import { KTX2FileReader, IKTX2_ImageDesc } from "babylonjs-ktx2decoder/ktx2FileReader";
423
- /**
424
- * @hidden
425
- */
426
- export class LiteTranscoder extends Transcoder {
427
- private _modulePath;
428
- private _modulePromise;
429
- private _memoryManager;
430
- protected _transcodeInPlace: boolean;
431
- protected _loadModule(): Promise<{
432
- module: any;
433
- }>;
434
- protected get memoryManager(): WASMMemoryManager;
435
- protected setModulePath(modulePath: string): void;
436
- initialize(): void;
437
- needMemoryManager(): boolean;
438
- setMemoryManager(memoryMgr: WASMMemoryManager): void;
439
- transcode(src: sourceTextureFormat, dst: transcodeTarget, level: number, width: number, height: number, uncompressedByteLength: number, ktx2Reader: KTX2FileReader, imageDesc: IKTX2_ImageDesc | null, encodedData: Uint8Array): Promise<Uint8Array | null>;
440
- protected _prepareTranscoding(width: number, height: number, uncompressedByteLength: number, encodedData: Uint8Array, forceRGBA?: boolean): [Uint8Array, Uint8Array | null, number];
441
- }
442
-
443
- }
444
- declare module "babylonjs-ktx2decoder/Transcoders/mscTranscoder" {
445
- import { Transcoder, sourceTextureFormat, transcodeTarget } from "babylonjs-ktx2decoder/transcoder";
446
- import { KTX2FileReader, IKTX2_ImageDesc } from "babylonjs-ktx2decoder/ktx2FileReader";
447
- /**
448
- * @hidden
449
- */
450
- export class MSCTranscoder extends Transcoder {
451
- /**
452
- * URL to use when loading the MSC transcoder
453
- */
454
- static JSModuleURL: string;
455
- /**
456
- * URL to use when loading the wasm module for the transcoder
457
- */
458
- static WasmModuleURL: string;
459
- static UseFromWorkerThread: boolean;
460
- static Name: string;
461
- getName(): string;
462
- private _mscBasisTranscoderPromise;
463
- private _mscBasisModule;
464
- private _getMSCBasisTranscoder;
465
- static CanTranscode(src: sourceTextureFormat, dst: transcodeTarget, isInGammaSpace: boolean): boolean;
466
- transcode(src: sourceTextureFormat, dst: transcodeTarget, level: number, width: number, height: number, uncompressedByteLength: number, ktx2Reader: KTX2FileReader, imageDesc: IKTX2_ImageDesc | null, encodedData: Uint8Array): Promise<Uint8Array | null>;
467
- }
468
-
469
- }
470
- declare module "babylonjs-ktx2decoder/wasmMemoryManager" {
471
- /**
472
- * @hidden
473
- */
474
- export class WASMMemoryManager {
475
- static LoadBinariesFromCurrentThread: boolean;
476
- static InitialMemoryPages: number;
477
- private static _RequestId;
478
- static LoadWASM(path: string): Promise<ArrayBuffer>;
479
- private _memory;
480
- private _numPages;
481
- private _memoryView;
482
- private _memoryViewByteLength;
483
- private _memoryViewOffset;
484
- constructor(initialMemoryPages?: number);
485
- get wasmMemory(): WebAssembly.Memory;
486
- getMemoryView(numPages: number, offset?: number, byteLength?: number): Uint8Array;
487
- }
488
-
489
- }
490
- declare module "babylonjs-ktx2decoder/zstddec" {
491
- /**
492
- * ZSTD (Zstandard) decoder.
493
- */
494
- export class ZSTDDecoder {
495
- static WasmModuleURL: string;
496
- init(): Promise<void>;
497
- _init(result: WebAssembly.WebAssemblyInstantiatedSource): void;
498
- decode(array: Uint8Array, uncompressedSize?: number): Uint8Array;
499
- }
500
- /**
501
- * BSD License
502
- *
503
- * For Zstandard software
504
- *
505
- * Copyright (c) 2016-present, Yann Collet, Facebook, Inc. All rights reserved.
506
- *
507
- * Redistribution and use in source and binary forms, with or without modification,
508
- * are permitted provided that the following conditions are met:
509
- *
510
- * * Redistributions of source code must retain the above copyright notice, this
511
- * list of conditions and the following disclaimer.
512
- *
513
- * * Redistributions in binary form must reproduce the above copyright notice,
514
- * this list of conditions and the following disclaimer in the documentation
515
- * and/or other materials provided with the distribution.
516
- *
517
- * * Neither the name Facebook nor the names of its contributors may be used to
518
- * endorse or promote products derived from this software without specific
519
- * prior written permission.
520
- *
521
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
522
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
523
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
524
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
525
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
526
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
527
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
528
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
529
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
530
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
531
- */
532
-
533
- }
534
-
535
- declare module "babylonjs-ktx2decoder" {
536
- export * from "babylonjs-ktx2decoder/legacy/legacy";
537
- }
538
-
539
-
540
- declare module KTX2DECODER {
541
-
542
-
543
- /**
544
  * Resources used for the implementation:
545
1
  * - 3js KTX2 loader: https://github.com/mrdoob/three.js/blob/dfb5c23ce126ec845e4aa240599915fef5375797/examples/jsm/loaders/KTX2Loader.js
546
2
  * - Universal Texture Transcoders: https://github.com/KhronosGroup/Universal-Texture-Transcoders
547
3
  * - KTX2 specification: http://github.khronos.org/KTX-Specification/
548
4
  * - KTX2 binaries to convert files: https://github.com/KhronosGroup/KTX-Software/releases
549
5
  * - KTX specification: https://www.khronos.org/registry/DataFormat/specs/1.3/dataformat.1.3.html
550
6
  * - KTX-Software: https://github.com/KhronosGroup/KTX-Software
551
7
  */
552
8
  export interface IDecodedData {
553
9
  width: number;
554
10
  height: number;
555
11
  transcodedFormat: number;
556
12
  mipmaps: Array<IMipmap>;
557
13
  isInGammaSpace: boolean;
558
14
  hasAlpha: boolean;
559
15
  errors?: string;
560
16
  transcoderName?: string;
561
17
  }
562
18
  export interface IMipmap {
563
19
  data: Uint8Array | null;
564
20
  width: number;
565
21
  height: number;
566
22
  }
567
23
  export interface ICompressedFormatCapabilities {
568
24
  astc?: boolean;
569
25
  bptc?: boolean;
570
26
  s3tc?: boolean;
571
27
  pvrtc?: boolean;
572
28
  etc2?: boolean;
573
29
  etc1?: boolean;
574
30
  }
575
31
  export interface IKTX2DecoderOptions {
576
32
  /** use RGBA format if ASTC and BC7 are not available as transcoded format */
577
33
  useRGBAIfASTCBC7NotAvailableWhenUASTC?: boolean;
578
34
  /** force to always use RGBA for transcoded format */
579
35
  forceRGBA?: boolean;
580
36
  /**
581
37
  * list of transcoders to bypass when looking for a suitable transcoder. The available transcoders are:
582
38
  * UniversalTranscoder_UASTC_ASTC
583
39
  * UniversalTranscoder_UASTC_BC7
584
40
  * UniversalTranscoder_UASTC_RGBA_UNORM
585
41
  * UniversalTranscoder_UASTC_RGBA_SRGB
586
42
  * MSCTranscoder
587
43
  */
588
44
  bypassTranscoders?: string[];
589
45
  }
590
46
  /**
591
47
  * Class for decoding KTX2 files
592
48
  *
593
49
  */
594
50
  export class KTX2Decoder {
595
51
  private _transcoderMgr;
596
52
  private _zstdDecoder;
597
53
  constructor();
598
54
  decode(data: Uint8Array, caps: ICompressedFormatCapabilities, options?: IKTX2DecoderOptions): Promise<IDecodedData | null>;
599
55
  private _decodeData;
600
56
  }
601
-
602
- /** @hidden */
603
57
  export enum SupercompressionScheme {
604
58
  None = 0,
605
59
  BasisLZ = 1,
606
60
  ZStandard = 2,
607
61
  ZLib = 3
608
62
  }
609
63
  /** @hidden */
610
64
  export interface IKTX2_Header {
611
65
  vkFormat: number;
612
66
  typeSize: number;
613
67
  pixelWidth: number;
614
68
  pixelHeight: number;
615
69
  pixelDepth: number;
616
70
  layerCount: number;
617
71
  faceCount: number;
618
72
  levelCount: number;
619
73
  supercompressionScheme: number;
620
74
  dfdByteOffset: number;
621
75
  dfdByteLength: number;
622
76
  kvdByteOffset: number;
623
77
  kvdByteLength: number;
624
78
  sgdByteOffset: number;
625
79
  sgdByteLength: number;
626
80
  }
627
81
  /** @hidden */
628
82
  export interface IKTX2_Level {
629
83
  byteOffset: number;
630
84
  byteLength: number;
631
85
  uncompressedByteLength: number;
632
86
  }
633
87
  interface IKTX2_Sample {
634
88
  bitOffset: number;
635
89
  bitLength: number;
636
90
  channelType: number;
637
91
  channelFlags: number;
638
92
  samplePosition: number[];
639
93
  sampleLower: number;
640
94
  sampleUpper: number;
641
95
  }
642
96
  /** @hidden */
643
97
  export interface IKTX2_DFD {
644
98
  vendorId: number;
645
99
  descriptorType: number;
646
100
  versionNumber: number;
647
101
  descriptorBlockSize: number;
648
102
  colorModel: number;
649
103
  colorPrimaries: number;
650
104
  transferFunction: number;
651
105
  flags: number;
652
106
  texelBlockDimension: {
653
107
  x: number;
654
108
  y: number;
655
109
  z: number;
656
110
  w: number;
657
111
  };
658
112
  bytesPlane: Array<number>;
659
113
  numSamples: number;
660
114
  samples: Array<IKTX2_Sample>;
661
115
  }
662
116
  /** @hidden */
663
117
  export interface IKTX2_ImageDesc {
664
118
  imageFlags: number;
665
119
  rgbSliceByteOffset: number;
666
120
  rgbSliceByteLength: number;
667
121
  alphaSliceByteOffset: number;
668
122
  alphaSliceByteLength: number;
669
123
  }
670
124
  /** @hidden */
671
125
  export interface IKTX2_SupercompressionGlobalData {
672
126
  endpointCount?: number;
673
127
  selectorCount?: number;
674
128
  endpointsByteLength?: number;
675
129
  selectorsByteLength?: number;
676
130
  tablesByteLength?: number;
677
131
  extendedByteLength?: number;
678
132
  imageDescs?: Array<IKTX2_ImageDesc>;
679
133
  endpointsData?: Uint8Array;
680
134
  selectorsData?: Uint8Array;
681
135
  tablesData?: Uint8Array;
682
136
  extendedData?: Uint8Array;
683
137
  }
684
138
  export class KTX2FileReader {
685
139
  private _data;
686
140
  private _header;
687
141
  private _levels;
688
142
  private _dfdBlock;
689
143
  private _supercompressionGlobalData;
690
144
  /**
691
145
  * Will throw an exception if the file can't be parsed
692
146
  * @param data
693
147
  */
694
148
  constructor(data: Uint8Array);
695
149
  get data(): Uint8Array;
696
150
  get header(): IKTX2_Header;
697
151
  get levels(): Array<IKTX2_Level>;
698
152
  get dfdBlock(): IKTX2_DFD;
699
153
  get supercompressionGlobalData(): IKTX2_SupercompressionGlobalData;
700
154
  isValid(): boolean;
701
155
  parse(): void;
702
156
  private _getImageCount;
703
157
  get textureFormat(): sourceTextureFormat;
704
158
  get hasAlpha(): boolean;
705
159
  get needZSTDDecoder(): boolean;
706
160
  get isInGammaSpace(): boolean;
707
161
  static IsValid(data: ArrayBufferView): boolean;
708
162
  }
709
-
710
- /**
711
163
  * Utility class for reading from a data buffer
712
164
  */
713
165
  export class DataReader {
714
166
  /**
715
167
  * The current byte offset from the beginning of the data buffer.
716
168
  */
717
169
  get byteOffset(): number;
718
170
  private _dataView;
719
171
  private _dataByteOffset;
720
172
  /**
721
173
  * Constructor
722
174
  * @param buffer The buffer to set
723
175
  * @param byteOffset The starting offset in the buffer
724
176
  * @param byteLength The byte length of the buffer
725
177
  */
726
178
  constructor(buffer: ArrayBuffer | ArrayBufferView, byteOffset?: number, byteLength?: number);
727
179
  /**
728
180
  * Read a unsigned 8-bit integer from the currently loaded data range.
729
181
  * @returns The 8-bit integer read
730
182
  */
731
183
  readUint8(): number;
732
184
  /**
733
185
  * Read a signed 8-bit integer from the currently loaded data range.
734
186
  * @returns The 8-bit integer read
735
187
  */
736
188
  readInt8(): number;
737
189
  /**
738
190
  * Read a unsigned 16-bit integer from the currently loaded data range.
739
191
  * @returns The 16-bit integer read
740
192
  */
741
193
  readUint16(): number;
742
194
  /**
743
195
  * Read a signed 16-bit integer from the currently loaded data range.
744
196
  * @returns The 16-bit integer read
745
197
  */
746
198
  readInt16(): number;
747
199
  /**
748
200
  * Read a unsigned 32-bit integer from the currently loaded data range.
749
201
  * @returns The 32-bit integer read
750
202
  */
751
203
  readUint32(): number;
752
204
  /**
753
205
  * Read a signed 32-bit integer from the currently loaded data range.
754
206
  * @returns The 32-bit integer read
755
207
  */
756
208
  readInt32(): number;
757
209
  /**
758
210
  * Read a unsigned 32-bit integer from the currently loaded data range.
759
211
  * @returns The 32-bit integer read
760
212
  */
761
213
  readUint64(): number;
762
214
  /**
763
215
  * Read a byte array from the currently loaded data range.
764
216
  * @param byteLength The byte length to read
765
217
  * @returns The byte array read
766
218
  */
767
219
  readUint8Array(byteLength: number): Uint8Array;
768
220
  /**
769
221
  * Skips the given byte length the currently loaded data range.
770
222
  * @param byteLength The byte length to skip
771
223
  * @returns This instance
772
224
  */
773
225
  skipBytes(byteLength: number): this;
774
226
  }
775
-
776
-
777
-
778
- export class TranscodeDecisionTree {
779
227
  private static _IsLeafNode;
780
228
  private _hasAlpha;
781
229
  private _isPowerOfTwo;
782
230
  private _caps;
783
231
  private _options;
784
232
  private _transcodeFormat;
785
233
  private _engineFormat;
786
234
  private _roundToMultiple4;
787
235
  get transcodeFormat(): number;
788
236
  get engineFormat(): number;
789
237
  get roundToMultiple4(): boolean;
790
238
  constructor(textureFormat: sourceTextureFormat, hasAlpha: boolean, isPowerOfTwo: boolean, caps: any, options?: any);
791
239
  private _parseNode;
792
240
  }
793
-
794
- /**
795
241
  * @hidden
796
242
  */
797
243
  export enum sourceTextureFormat {
798
244
  ETC1S = 0,
799
245
  UASTC4x4 = 1
800
246
  }
801
247
  /**
802
248
  * @hidden
803
249
  */
804
250
  export enum transcodeTarget {
805
251
  ASTC_4x4_RGBA = 0,
806
252
  BC7_RGBA = 1,
807
253
  BC3_RGBA = 2,
808
254
  BC1_RGB = 3,
809
255
  PVRTC1_4_RGBA = 4,
810
256
  PVRTC1_4_RGB = 5,
811
257
  ETC2_RGBA = 6,
812
258
  ETC1_RGB = 7,
813
259
  RGBA32 = 8
814
260
  }
815
261
  /**
816
262
  * @hidden
817
263
  */
818
264
  export class Transcoder {
819
265
  static CanTranscode(src: sourceTextureFormat, dst: transcodeTarget, isInGammaSpace: boolean): boolean;
820
266
  static Name: string;
821
267
  getName(): string;
822
268
  initialize(): void;
823
269
  needMemoryManager(): boolean;
824
270
  setMemoryManager(memoryMgr: WASMMemoryManager): void;
825
271
  transcode(src: sourceTextureFormat, dst: transcodeTarget, level: number, width: number, height: number, uncompressedByteLength: number, ktx2Reader: KTX2FileReader, imageDesc: IKTX2_ImageDesc | null, encodedData: Uint8Array): Promise<Uint8Array | null>;
826
272
  }
827
-
828
- /**
829
273
  * @hidden
830
274
  */
831
275
  export class TranscoderManager {
832
276
  static _Transcoders: Array<typeof Transcoder>;
833
277
  static RegisterTranscoder(transcoder: typeof Transcoder): void;
834
278
  private static _TranscoderInstances;
835
279
  private _wasmMemoryManager;
836
280
  findTranscoder(src: sourceTextureFormat, dst: transcodeTarget, isInGammaSpace: boolean, bypass?: string[]): Transcoder | null;
837
281
  private _getExistingTranscoder;
838
282
  }
839
-
840
-
841
-
842
- /**
843
283
  * @hidden
844
284
  */
845
285
  export class LiteTranscoder_UASTC_ASTC extends LiteTranscoder {
846
286
  /**
847
287
  * URL to use when loading the wasm module for the transcoder
848
288
  */
849
289
  static WasmModuleURL: string;
850
290
  static CanTranscode(src: sourceTextureFormat, dst: transcodeTarget, isInGammaSpace: boolean): boolean;
851
291
  static Name: string;
852
292
  getName(): string;
853
293
  initialize(): void;
854
294
  }
855
-
856
- /**
857
295
  * @hidden
858
296
  */
859
297
  export class LiteTranscoder_UASTC_BC7 extends LiteTranscoder {
860
298
  /**
861
299
  * URL to use when loading the wasm module for the transcoder
862
300
  */
863
301
  static WasmModuleURL: string;
864
302
  static CanTranscode(src: sourceTextureFormat, dst: transcodeTarget, isInGammaSpace: boolean): boolean;
865
303
  static Name: string;
866
304
  getName(): string;
867
305
  initialize(): void;
868
306
  }
869
-
870
- /**
871
307
  * @hidden
872
308
  */
873
309
  export class LiteTranscoder_UASTC_RGBA_SRGB extends LiteTranscoder {
874
310
  /**
875
311
  * URL to use when loading the wasm module for the transcoder (srgb)
876
312
  */
877
313
  static WasmModuleURL: string;
878
314
  static CanTranscode(src: sourceTextureFormat, dst: transcodeTarget, isInGammaSpace: boolean): boolean;
879
315
  static Name: string;
880
316
  getName(): string;
881
317
  initialize(): void;
882
318
  transcode(src: sourceTextureFormat, dst: transcodeTarget, level: number, width: number, height: number, uncompressedByteLength: number, ktx2Reader: KTX2FileReader, imageDesc: IKTX2_ImageDesc | null, encodedData: Uint8Array): Promise<Uint8Array | null>;
883
319
  }
884
-
885
- /**
886
320
  * @hidden
887
321
  */
888
322
  export class LiteTranscoder_UASTC_RGBA_UNORM extends LiteTranscoder {
889
323
  /**
890
324
  * URL to use when loading the wasm module for the transcoder (unorm)
891
325
  */
892
326
  static WasmModuleURL: string;
893
327
  static CanTranscode(src: sourceTextureFormat, dst: transcodeTarget, isInGammaSpace: boolean): boolean;
894
328
  static Name: string;
895
329
  getName(): string;
896
330
  initialize(): void;
897
331
  transcode(src: sourceTextureFormat, dst: transcodeTarget, level: number, width: number, height: number, uncompressedByteLength: number, ktx2Reader: KTX2FileReader, imageDesc: IKTX2_ImageDesc | null, encodedData: Uint8Array): Promise<Uint8Array | null>;
898
332
  }
899
-
900
- /**
901
333
  * @hidden
902
334
  */
903
335
  export class LiteTranscoder extends Transcoder {
904
336
  private _modulePath;
905
337
  private _modulePromise;
906
338
  private _memoryManager;
907
339
  protected _transcodeInPlace: boolean;
908
340
  protected _loadModule(): Promise<{
909
341
  module: any;
910
342
  }>;
911
343
  protected get memoryManager(): WASMMemoryManager;
912
344
  protected setModulePath(modulePath: string): void;
913
345
  initialize(): void;
914
346
  needMemoryManager(): boolean;
915
347
  setMemoryManager(memoryMgr: WASMMemoryManager): void;
916
348
  transcode(src: sourceTextureFormat, dst: transcodeTarget, level: number, width: number, height: number, uncompressedByteLength: number, ktx2Reader: KTX2FileReader, imageDesc: IKTX2_ImageDesc | null, encodedData: Uint8Array): Promise<Uint8Array | null>;
917
349
  protected _prepareTranscoding(width: number, height: number, uncompressedByteLength: number, encodedData: Uint8Array, forceRGBA?: boolean): [Uint8Array, Uint8Array | null, number];
918
350
  }
919
-
920
- /**
921
351
  * @hidden
922
352
  */
923
353
  export class MSCTranscoder extends Transcoder {
924
354
  /**
925
355
  * URL to use when loading the MSC transcoder
926
356
  */
927
357
  static JSModuleURL: string;
928
358
  /**
929
359
  * URL to use when loading the wasm module for the transcoder
930
360
  */
931
361
  static WasmModuleURL: string;
932
362
  static UseFromWorkerThread: boolean;
933
363
  static Name: string;
934
364
  getName(): string;
935
365
  private _mscBasisTranscoderPromise;
936
366
  private _mscBasisModule;
937
367
  private _getMSCBasisTranscoder;
938
368
  static CanTranscode(src: sourceTextureFormat, dst: transcodeTarget, isInGammaSpace: boolean): boolean;
939
369
  transcode(src: sourceTextureFormat, dst: transcodeTarget, level: number, width: number, height: number, uncompressedByteLength: number, ktx2Reader: KTX2FileReader, imageDesc: IKTX2_ImageDesc | null, encodedData: Uint8Array): Promise<Uint8Array | null>;
940
370
  }
941
-
942
- /**
943
371
  * @hidden
944
372
  */
945
373
  export class WASMMemoryManager {
946
374
  static LoadBinariesFromCurrentThread: boolean;
947
375
  static InitialMemoryPages: number;
948
376
  private static _RequestId;
949
377
  static LoadWASM(path: string): Promise<ArrayBuffer>;
950
378
  private _memory;
951
379
  private _numPages;
952
380
  private _memoryView;
953
381
  private _memoryViewByteLength;
954
382
  private _memoryViewOffset;
955
383
  constructor(initialMemoryPages?: number);
956
384
  get wasmMemory(): WebAssembly.Memory;
957
385
  getMemoryView(numPages: number, offset?: number, byteLength?: number): Uint8Array;
958
386
  }
959
-
960
- /**
961
387
  * ZSTD (Zstandard) decoder.
962
388
  */
963
389
  export class ZSTDDecoder {
964
390
  static WasmModuleURL: string;
965
391
  init(): Promise<void>;
966
392
  _init(result: WebAssembly.WebAssemblyInstantiatedSource): void;
967
393
  decode(array: Uint8Array, uncompressedSize?: number): Uint8Array;
968
394
  }
969
395
  /**
970
396
  * BSD License
971
397
  *
972
398
  * For Zstandard software
973
399
  *
974
400
  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc. All rights reserved.
975
401
  *
976
402
  * Redistribution and use in source and binary forms, with or without modification,
977
403
  * are permitted provided that the following conditions are met:
978
404
  *
979
405
  * * Redistributions of source code must retain the above copyright notice, this
980
406
  * list of conditions and the following disclaimer.
981
407
  *
982
408
  * * Redistributions in binary form must reproduce the above copyright notice,
983
409
  * this list of conditions and the following disclaimer in the documentation
984
410
  * and/or other materials provided with the distribution.
985
411
  *
986
412
  * * Neither the name Facebook nor the names of its contributors may be used to
987
413
  * endorse or promote products derived from this software without specific
988
414
  * prior written permission.
989
415
  *
990
416
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
991
417
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
992
418
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
993
419
  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
994
420
  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
995
421
  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
996
422
  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
997
423
  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
998
424
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
999
425
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1000
426
  */
1001
-
1002
-
1003
- }
1004
-
1005
-