babylonjs-ktx2decoder 5.0.0-beta.8-snapshot

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