@galacean/engine-loader 1.0.0-beta.18 → 1.0.0-beta.20

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@galacean/engine-loader",
3
- "version": "1.0.0-beta.18",
3
+ "version": "1.0.0-beta.20",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org"
@@ -15,10 +15,10 @@
15
15
  "types/**/*"
16
16
  ],
17
17
  "dependencies": {
18
- "@galacean/engine-draco": "1.0.0-beta.18",
19
- "@galacean/engine-core": "1.0.0-beta.18",
20
- "@galacean/engine-rhi-webgl": "1.0.0-beta.18",
21
- "@galacean/engine-math": "1.0.0-beta.18"
18
+ "@galacean/engine-core": "1.0.0-beta.20",
19
+ "@galacean/engine-math": "1.0.0-beta.20",
20
+ "@galacean/engine-rhi-webgl": "1.0.0-beta.20",
21
+ "@galacean/engine-draco": "1.0.0-beta.20"
22
22
  },
23
23
  "scripts": {
24
24
  "b:types": "tsc"
@@ -0,0 +1,7 @@
1
+ import { IGLTF } from "../GLTFSchema";
2
+ import { GLTFParser } from "./GLTFParser";
3
+ import { GLTFParserContext } from "./GLTFParserContext";
4
+ export declare class GLTFJSONParser extends GLTFParser {
5
+ parse(context: GLTFParserContext): Promise<IGLTF>;
6
+ private _isGLB;
7
+ }
@@ -0,0 +1,72 @@
1
+ export declare enum SupercompressionScheme {
2
+ None = 0,
3
+ BasisLZ = 1,
4
+ Zstd = 2,
5
+ ZLib = 3
6
+ }
7
+ /** @internal */
8
+ export declare class KTX2Container {
9
+ vkFormat: number;
10
+ typeSize: number;
11
+ pixelWidth: number;
12
+ pixelHeight: number;
13
+ pixelDepth: number;
14
+ layerCount: number;
15
+ faceCount: number;
16
+ supercompressionScheme: SupercompressionScheme;
17
+ levels: KTX2Level[];
18
+ dataFormatDescriptor: KTX2DataFormatDescriptorBasicFormat;
19
+ keyValue: {
20
+ [key: string]: string | Uint8Array;
21
+ };
22
+ globalData: KTX2GlobalDataBasisLZ | null;
23
+ constructor(buffer: Uint8Array);
24
+ get isSRGB(): boolean;
25
+ get isUASTC(): boolean;
26
+ private parse;
27
+ }
28
+ interface KTX2Level {
29
+ levelData: Uint8Array;
30
+ uncompressedByteLength: number;
31
+ }
32
+ interface KTX2DataFormatDescriptorBasicFormat {
33
+ vendorId: number;
34
+ descriptorType: number;
35
+ versionNumber: number;
36
+ /** @deprecated Inferred. */
37
+ descriptorBlockSize: number;
38
+ colorModel: number;
39
+ colorPrimaries: number;
40
+ transferFunction: number;
41
+ flags: number;
42
+ texelBlockDimension: [number, number, number, number];
43
+ bytesPlane: [number, number, number, number, number, number, number, number];
44
+ samples: KTX2BasicFormatSample[];
45
+ }
46
+ interface KTX2BasicFormatSample {
47
+ bitOffset: number;
48
+ bitLength: number;
49
+ /** @deprecated Renamed to 'channelType'. */
50
+ channelID?: number;
51
+ channelType: number;
52
+ samplePosition: number[];
53
+ sampleLower: number;
54
+ sampleUpper: number;
55
+ }
56
+ interface KTX2GlobalDataBasisLZ {
57
+ endpointCount: number;
58
+ selectorCount: number;
59
+ imageDescs: KTX2GlobalDataBasisLZImageDesc[];
60
+ endpointsData: Uint8Array;
61
+ selectorsData: Uint8Array;
62
+ tablesData: Uint8Array;
63
+ extendedData: Uint8Array;
64
+ }
65
+ interface KTX2GlobalDataBasisLZImageDesc {
66
+ imageFlags: number;
67
+ rgbSliceByteOffset: number;
68
+ rgbSliceByteLength: number;
69
+ alphaSliceByteOffset: number;
70
+ alphaSliceByteLength: number;
71
+ }
72
+ export {};
@@ -0,0 +1,53 @@
1
+ import { AssetPromise, Engine, EngineConfiguration, LoadItem, Loader, ResourceManager, Texture2D, TextureCube } from "@galacean/engine-core";
2
+ import { KTX2TargetFormat } from "./KTX2TargetFormat";
3
+ import { TranscodeResult } from "./transcoder/AbstractTranscoder";
4
+ export declare class KTX2Loader extends Loader<Texture2D | TextureCube> {
5
+ private static _isBinomialInit;
6
+ private static _binomialLLCTranscoder;
7
+ private static _khronosTranscoder;
8
+ private static _supportedMap;
9
+ /**
10
+ * Destroy ktx2 transcoder worker.
11
+ */
12
+ static destroy(): void;
13
+ /** @internal */
14
+ static _parseBuffer(buffer: Uint8Array, engine: Engine, params?: KTX2Params): Promise<{
15
+ engine: Engine;
16
+ result: TranscodeResult;
17
+ targetFormat: KTX2TargetFormat;
18
+ params: Uint8Array;
19
+ }>;
20
+ /** @internal */
21
+ static _createTextureByBuffer(engine: Engine, transcodeResult: TranscodeResult, targetFormat: KTX2TargetFormat, params?: Uint8Array): Texture2D | TextureCube;
22
+ private static _decideTargetFormat;
23
+ private static _detectSupportedFormat;
24
+ private static _getBinomialLLCTranscoder;
25
+ private static _getKhronosTranscoder;
26
+ private static _getEngineTextureFormat;
27
+ initialize(engine: Engine, configuration: EngineConfiguration): Promise<void>;
28
+ /**
29
+ * @internal
30
+ */
31
+ load(item: LoadItem & {
32
+ params?: KTX2Params;
33
+ }, resourceManager: ResourceManager): AssetPromise<Texture2D | TextureCube>;
34
+ private _isKhronosSupported;
35
+ }
36
+ /**
37
+ * KTX2 loader params interface.
38
+ */
39
+ export interface KTX2Params {
40
+ /** Priority transcoding format queue, default is ASTC/ETC/DXT/PVRTC/RGBA8. */
41
+ priorityFormats: KTX2TargetFormat[];
42
+ }
43
+ declare module "@galacean/engine-core" {
44
+ interface EngineConfiguration {
45
+ /** KTX2 loader options. */
46
+ ktx2Loader?: {
47
+ /** Worker count for transcoder, default is 4. */
48
+ workerCount?: number;
49
+ /** Pre-initialization according to the priority transcoding format queue, default is ASTC/ETC/DXT/PVRTC/RGBA8. */
50
+ priorityFormats?: KTX2TargetFormat[] | KTX2TargetFormat[][];
51
+ };
52
+ }
53
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * KTX2 transcode target format.
3
+ */
4
+ export declare enum KTX2TargetFormat {
5
+ /** RGB(A) compressed format, 128 bits per 4x4 pixel block. */
6
+ ASTC = 0,
7
+ /** RGB(A) compressed format, 128 bits per 4x4 pixel block. */
8
+ BC7 = 1,
9
+ /** RGB(A) compressed format, 4 bits per pixel if no alpha channel, 8 bits per pixel if has alpha channel. */
10
+ BC1_BC3 = 2,
11
+ /** RGB(A) compressed format, 4 bits per pixel. */
12
+ PVRTC = 3,
13
+ /** RGB(A) compressed format, 4 bits per pixel if no alpha channel, 8 bits per pixel if has alpha channel. */
14
+ ETC = 4,
15
+ /** R format, 8 bits per pixel. */
16
+ R8 = 5,
17
+ /** RG format, 16 bits per pixel. */
18
+ R8G8 = 6,
19
+ /** RGBA format, 32 bits per pixel. */
20
+ R8G8B8A8 = 7
21
+ }
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @internal
3
+ * WorkerPool, T is is post message type, U is return type.
4
+ */
5
+ export declare class WorkerPool<T = any, U = any> {
6
+ readonly limitedCount: number;
7
+ private readonly _workerCreator;
8
+ private _taskQueue;
9
+ private _workerStatus;
10
+ private _workerItems;
11
+ /**
12
+ * Constructor of WorkerPool.
13
+ * @param limitedCount - worker limit count
14
+ * @param _workerCreator - creator of worker
15
+ */
16
+ constructor(limitedCount: number, _workerCreator: () => Worker | Promise<Worker>);
17
+ prepareWorker(): Promise<Worker[]>;
18
+ /**
19
+ * Post message to worker.
20
+ * @param message - Message which posted to worker
21
+ * @returns Return a promise of message
22
+ */
23
+ postMessage(message: T): Promise<U>;
24
+ /**
25
+ * Destroy the worker pool.
26
+ */
27
+ destroy(): void;
28
+ private _initWorker;
29
+ private _getIdleWorkerId;
30
+ private _onMessage;
31
+ private _nextTask;
32
+ }
@@ -0,0 +1,55 @@
1
+ import { WorkerPool } from "../WorkerPool";
2
+ export declare abstract class AbstractTranscoder {
3
+ readonly workerLimitCount: number;
4
+ protected _transcodeWorkerPool: WorkerPool;
5
+ protected _initPromise: Promise<any>;
6
+ constructor(workerLimitCount: number);
7
+ init(): Promise<any>;
8
+ destroy(): void;
9
+ protected abstract _initTranscodeWorkerPool(): Promise<any>;
10
+ protected _createTranscodePool(workerURL: string, wasmBuffer: ArrayBuffer): Promise<Worker[]>;
11
+ }
12
+ type MessageType = "init" | "transcode";
13
+ export interface BaseMessage {
14
+ type: MessageType;
15
+ }
16
+ export interface InitMessage extends BaseMessage {
17
+ type: "init";
18
+ transcoderWasm: ArrayBuffer;
19
+ }
20
+ export interface BinomialTranscodeMessage extends BaseMessage {
21
+ type: "transcode";
22
+ format: number;
23
+ buffer: ArrayBuffer;
24
+ }
25
+ export type IBinomialMessage = InitMessage | BinomialTranscodeMessage;
26
+ export type TranscodeResult = {
27
+ width: number;
28
+ height: number;
29
+ hasAlpha: boolean;
30
+ format: number;
31
+ faces: Array<{
32
+ data: Uint8Array;
33
+ width: number;
34
+ height: number;
35
+ }>[];
36
+ faceCount: number;
37
+ };
38
+ export type TranscodeResponse = {
39
+ id: number;
40
+ type: "transcoded";
41
+ } & TranscodeResult;
42
+ export interface EncodedData {
43
+ buffer: Uint8Array;
44
+ levelWidth: number;
45
+ levelHeight: number;
46
+ uncompressedByteLength: number;
47
+ }
48
+ export interface KhronosTranscoderMessage extends BaseMessage {
49
+ type: "transcode";
50
+ format: number;
51
+ needZstd: boolean;
52
+ data: EncodedData[][];
53
+ }
54
+ export type IKhronosMessageMessage = InitMessage | KhronosTranscoderMessage;
55
+ export {};
@@ -0,0 +1,8 @@
1
+ import { KTX2TargetFormat } from "../KTX2TargetFormat";
2
+ import { AbstractTranscoder, TranscodeResult } from "./AbstractTranscoder";
3
+ /** @internal */
4
+ export declare class BinomialLLCTranscoder extends AbstractTranscoder {
5
+ constructor(workerLimitCount: number);
6
+ _initTranscodeWorkerPool(): Promise<Worker[]>;
7
+ transcode(buffer: ArrayBuffer, format: KTX2TargetFormat): Promise<TranscodeResult>;
8
+ }
@@ -0,0 +1,2 @@
1
+ /** @internal */
2
+ export declare function TranscodeWorkerCode(): void;
@@ -0,0 +1,13 @@
1
+ import { KTX2Container } from "../KTX2Container";
2
+ import { KTX2TargetFormat } from "../KTX2TargetFormat";
3
+ import { AbstractTranscoder, TranscodeResult } from "./AbstractTranscoder";
4
+ /** @internal */
5
+ export declare class KhronosTranscoder extends AbstractTranscoder {
6
+ readonly type: KTX2TargetFormat;
7
+ static transcoderMap: {
8
+ 0: string;
9
+ };
10
+ constructor(workerLimitCount: number, type: KTX2TargetFormat);
11
+ _initTranscodeWorkerPool(): Promise<Worker[]>;
12
+ transcode(ktx2Container: KTX2Container): Promise<TranscodeResult>;
13
+ }
@@ -0,0 +1 @@
1
+ export declare function TranscodeWorkerCode(): void;