@galacean/engine-loader 1.0.0-beta.9 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/dist/main.js +534 -411
  2. package/dist/main.js.map +1 -1
  3. package/dist/miniprogram.js +534 -411
  4. package/dist/module.js +536 -413
  5. package/dist/module.js.map +1 -1
  6. package/package.json +5 -5
  7. package/types/GLTFContentRestorer.d.ts +18 -8
  8. package/types/ProjectLoader.d.ts +1 -0
  9. package/types/gltf/GLTFResource.d.ts +2 -6
  10. package/types/gltf/GLTFUtil.d.ts +3 -3
  11. package/types/gltf/GLTFUtils.d.ts +3 -2
  12. package/types/gltf/extensions/GLTFExtensionSchema.d.ts +1 -1
  13. package/types/gltf/parser/GLTFAnimationParser.d.ts +2 -2
  14. package/types/gltf/parser/GLTFMeshParser.d.ts +5 -5
  15. package/types/gltf/parser/GLTFParser.d.ts +1 -1
  16. package/types/gltf/parser/GLTFParserContext.d.ts +7 -2
  17. package/types/gltf/parser/GLTFSceneParser.d.ts +2 -2
  18. package/types/gltf/parser/GLTFSchemaParser.d.ts +7 -0
  19. package/types/gltf/parser/GLTFSkinParser.d.ts +2 -1
  20. package/types/gltf/parser/GLTFTextureParser.d.ts +3 -2
  21. package/types/ktx2/BinomialLLCTranscoder/BinomialLLCTranscoder.d.ts +13 -0
  22. package/types/ktx2/BinomialLLCTranscoder/TranscodeWorkerCode.d.ts +33 -0
  23. package/types/ktx2/KTX2Container.d.ts +72 -0
  24. package/types/ktx2/KTX2Loader.d.ts +53 -0
  25. package/types/ktx2/KTX2TargetFormat.d.ts +21 -0
  26. package/types/ktx2/KhronosTranscoder/KhronosTranscoder.d.ts +17 -0
  27. package/types/ktx2/KhronosTranscoder/TranscoderWorkerCode.d.ts +34 -0
  28. package/types/ktx2/TranscodeResult.d.ts +10 -0
  29. package/types/ktx2/WorkerPool.d.ts +32 -0
  30. package/types/ktx2/constants.d.ts +7 -0
  31. package/types/ktx2/transcoder/AbstractTranscoder.d.ts +55 -0
  32. package/types/ktx2/transcoder/BinomialLLCTranscoder.d.ts +8 -0
  33. package/types/ktx2/transcoder/BinomialLLCWorkerCode.d.ts +2 -0
  34. package/types/ktx2/transcoder/KhronosTranscoder.d.ts +13 -0
  35. package/types/ktx2/transcoder/KhronosWorkerCode.d.ts +1 -0
  36. package/types/ktx2/zstddec.d.ts +62 -0
  37. package/types/resource-deserialize/index.d.ts +3 -3
  38. package/types/resource-deserialize/resources/mesh/MeshDecoder.d.ts +1 -1
  39. package/types/resource-deserialize/resources/parser/PrefabParser.d.ts +5 -0
  40. package/types/resource-deserialize/resources/parser/ReflectionParser.d.ts +14 -0
  41. package/types/resource-deserialize/resources/prefab/PrefabDesign.d.ts +4 -4
  42. package/types/resource-deserialize/resources/scene/SceneParser.d.ts +1 -1
  43. package/types/resource-deserialize/resources/scene/SceneParserContext.d.ts +1 -1
  44. package/types/resource-deserialize/resources/schema/BasicSchema.d.ts +61 -0
  45. package/types/resource-deserialize/resources/schema/MaterialSchema.d.ts +91 -0
  46. package/types/resource-deserialize/resources/schema/ProjectSchema.d.ts +9 -0
  47. package/types/resource-deserialize/resources/schema/SceneSchema.d.ts +41 -0
  48. package/types/resource-deserialize/resources/schema/index.d.ts +3 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@galacean/engine-loader",
3
- "version": "1.0.0-beta.9",
3
+ "version": "1.0.1",
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-core": "1.0.0-beta.9",
19
- "@galacean/engine-draco": "1.0.0-beta.9",
20
- "@galacean/engine-math": "1.0.0-beta.9",
21
- "@galacean/engine-rhi-webgl": "1.0.0-beta.9"
18
+ "@galacean/engine-core": "1.0.1",
19
+ "@galacean/engine-draco": "1.0.1",
20
+ "@galacean/engine-rhi-webgl": "1.0.1",
21
+ "@galacean/engine-math": "1.0.1"
22
22
  },
23
23
  "scripts": {
24
24
  "b:types": "tsc"
@@ -1,8 +1,8 @@
1
- import { AssetPromise, BlendShape, Buffer, ContentRestorer, ModelMesh, Texture2D } from "@galacean/engine-core";
1
+ import { AssetPromise, BlendShape, Buffer, ContentRestorer, ModelMesh, Texture2D, TypedArray } from "@galacean/engine-core";
2
2
  import { RequestConfig } from "@galacean/engine-core/types/asset/request";
3
3
  import { Vector2 } from "@galacean/engine-math";
4
4
  import { GLTFResource } from "./gltf/GLTFResource";
5
- import { IBufferView } from "./gltf/GLTFSchema";
5
+ import type { IBufferView } from "./gltf/GLTFSchema";
6
6
  /**
7
7
  * @internal
8
8
  */
@@ -65,18 +65,28 @@ export declare class BufferDataRestoreInfo {
65
65
  */
66
66
  export declare class RestoreDataAccessor {
67
67
  bufferIndex: number;
68
- TypedArray: new (buffer: ArrayBuffer, byteOffset: number, length?: number) => ArrayBufferView;
68
+ TypedArray: new (buffer: ArrayBuffer, byteOffset: number, length?: number) => TypedArray;
69
69
  byteOffset: number;
70
70
  length: number;
71
- constructor(bufferIndex: number, TypedArray: new (buffer: ArrayBuffer, byteOffset: number, length?: number) => ArrayBufferView, byteOffset: number, length: number);
71
+ constructor(bufferIndex: number, TypedArray: new (buffer: ArrayBuffer, byteOffset: number, length?: number) => TypedArray, byteOffset: number, length: number);
72
72
  }
73
73
  /**
74
74
  * @internal
75
75
  */
76
76
  export declare class BlendShapeRestoreInfo {
77
77
  blendShape: BlendShape;
78
- position: BufferDataRestoreInfo;
79
- normal?: BufferDataRestoreInfo;
80
- tangent?: BufferDataRestoreInfo;
81
- constructor(blendShape: BlendShape, position: BufferDataRestoreInfo, normal?: BufferDataRestoreInfo, tangent?: BufferDataRestoreInfo);
78
+ position: BlendShapeDataRestoreInfo;
79
+ normal?: BlendShapeDataRestoreInfo;
80
+ tangent?: BlendShapeDataRestoreInfo;
81
+ constructor(blendShape: BlendShape, position: BlendShapeDataRestoreInfo, normal?: BlendShapeDataRestoreInfo, tangent?: BlendShapeDataRestoreInfo);
82
+ }
83
+ /**
84
+ * @internal
85
+ */
86
+ export declare class BlendShapeDataRestoreInfo {
87
+ buffer: BufferDataRestoreInfo;
88
+ stride: number;
89
+ byteOffset: number;
90
+ count: number;
91
+ constructor(buffer: BufferDataRestoreInfo, stride: number, byteOffset: number, count: number);
82
92
  }
@@ -0,0 +1 @@
1
+ export {};
@@ -1,8 +1,8 @@
1
- import { AnimationClip, Camera, Engine, EngineObject, Entity, Light, Material, ModelMesh, Skin, Texture2D } from "@galacean/engine-core";
1
+ import { AnimationClip, Camera, Engine, Entity, Light, Material, ModelMesh, ReferResource, Skin, Texture2D } from "@galacean/engine-core";
2
2
  /**
3
3
  * Product after glTF parser, usually, `defaultSceneRoot` is only needed to use.
4
4
  */
5
- export declare class GLTFResource extends EngineObject {
5
+ export declare class GLTFResource extends ReferResource {
6
6
  /** glTF file url. */
7
7
  url: string;
8
8
  /** Texture2D after TextureParser. */
@@ -28,8 +28,4 @@ export declare class GLTFResource extends EngineObject {
28
28
  /** Extensions data. */
29
29
  extensionsData: Record<string, any>;
30
30
  constructor(engine: Engine, url: string);
31
- /**
32
- * @internal
33
- */
34
- protected _onDestroy(): void;
35
31
  }
@@ -1,7 +1,7 @@
1
1
  import { IndexFormat, TypedArray, VertexElementFormat } from "@galacean/engine-core";
2
2
  import { Color, Vector2, Vector3, Vector4 } from "@galacean/engine-math";
3
- import { BufferInfo, ParserContext } from "./parser/ParserContext";
4
- import { AccessorComponentType, AccessorType, IAccessor, IBufferView, IGLTF } from "./Schema";
3
+ import { AccessorComponentType, AccessorType, IAccessor, IBufferView, IGLTF } from "./GLTFSchema";
4
+ import { BufferInfo, GLTFParserContext } from "./parser/GLTFParserContext";
5
5
  /**
6
6
  * @internal
7
7
  */
@@ -23,7 +23,7 @@ export declare class GLTFUtil {
23
23
  */
24
24
  static getComponentType(componentType: AccessorComponentType): Int8ArrayConstructor | Uint8ArrayConstructor | Int16ArrayConstructor | Uint16ArrayConstructor | Uint32ArrayConstructor | Float32ArrayConstructor;
25
25
  static getNormalizedComponentScale(componentType: AccessorComponentType): number;
26
- static getAccessorBuffer(context: ParserContext, gltf: IGLTF, accessor: IAccessor): BufferInfo;
26
+ static getAccessorBuffer(context: GLTFParserContext, gltf: IGLTF, accessor: IAccessor): BufferInfo;
27
27
  /**
28
28
  * @deprecated
29
29
  * Get accessor data.
@@ -17,9 +17,10 @@ export declare class GLTFUtils {
17
17
  /**
18
18
  * Get the TypedArray corresponding to the component type.
19
19
  */
20
- static getComponentType(componentType: AccessorComponentType): Uint8ArrayConstructor | Int8ArrayConstructor | Int16ArrayConstructor | Uint16ArrayConstructor | Uint32ArrayConstructor | Float32ArrayConstructor;
20
+ static getComponentType(componentType: AccessorComponentType): Float32ArrayConstructor | Uint32ArrayConstructor | Uint8ArrayConstructor | Uint16ArrayConstructor | Int8ArrayConstructor | Int16ArrayConstructor;
21
21
  static getNormalizedComponentScale(componentType: AccessorComponentType): number;
22
- static getAccessorBuffer(context: GLTFParserContext, bufferViews: IBufferView[], accessor: IAccessor): BufferInfo;
22
+ static getAccessorBuffer(context: GLTFParserContext, bufferViews: IBufferView[], accessor: IAccessor): Promise<BufferInfo>;
23
+ static bufferToVector3Array(data: TypedArray, byteStride: number, accessorByteOffset: number, count: number): Vector3[];
23
24
  /**
24
25
  * @deprecated
25
26
  * Get accessor data.
@@ -1,4 +1,4 @@
1
- import { IMaterialNormalTextureInfo, ITextureInfo } from "../GLTFSchema";
1
+ import type { IMaterialNormalTextureInfo, ITextureInfo } from "../GLTFSchema";
2
2
  /**
3
3
  * Interfaces from the KHR_lights_punctual extension
4
4
  */
@@ -6,7 +6,7 @@ export declare class GLTFAnimationParser extends GLTFParser {
6
6
  /**
7
7
  * @internal
8
8
  */
9
- static _parseStandardProperty(context: GLTFParserContext, animationClip: AnimationClip, animationInfo: IAnimation): void;
9
+ static _parseStandardProperty(context: GLTFParserContext, animationClip: AnimationClip, animationInfo: IAnimation): Promise<void>;
10
10
  private static _addCurve;
11
- parse(context: GLTFParserContext): AssetPromise<AnimationClip[]>;
11
+ parse(context: GLTFParserContext): AssetPromise<AnimationClip[]> | void;
12
12
  }
@@ -1,6 +1,6 @@
1
1
  import { AssetPromise, ModelMesh, TypedArray } from "@galacean/engine-core";
2
2
  import { ModelMeshRestoreInfo } from "../../GLTFContentRestorer";
3
- import { IGLTF, IMesh, IMeshPrimitive } from "../GLTFSchema";
3
+ import type { IAccessor, IGLTF, IMesh, IMeshPrimitive } from "../GLTFSchema";
4
4
  import { GLTFParser } from "./GLTFParser";
5
5
  import { BufferInfo, GLTFParserContext } from "./GLTFParserContext";
6
6
  export declare class GLTFMeshParser extends GLTFParser {
@@ -8,12 +8,12 @@ export declare class GLTFMeshParser extends GLTFParser {
8
8
  /**
9
9
  * @internal
10
10
  */
11
- static _parseMeshFromGLTFPrimitive(context: GLTFParserContext, mesh: ModelMesh, meshRestoreInfo: ModelMeshRestoreInfo, gltfMesh: IMesh, gltfPrimitive: IMeshPrimitive, gltf: IGLTF, getVertexBufferData: (semantic: string) => TypedArray, getBlendShapeData: (semantic: string, shapeIndex: number) => BufferInfo, getIndexBufferData: () => TypedArray, keepMeshData: boolean): Promise<ModelMesh>;
11
+ static _parseMeshFromGLTFPrimitive(context: GLTFParserContext, mesh: ModelMesh, meshRestoreInfo: ModelMeshRestoreInfo, gltfMesh: IMesh, gltfPrimitive: IMeshPrimitive, gltf: IGLTF, getVertexBufferData: (semantic: string) => TypedArray, getBlendShapeData: (semantic: string, shapeIndex: number) => Promise<BufferInfo>, getIndexBufferData: () => Promise<TypedArray>, keepMeshData: boolean): Promise<ModelMesh>;
12
12
  /**
13
13
  * @internal
14
14
  */
15
- static _createBlendShape(mesh: ModelMesh, meshRestoreInfo: ModelMeshRestoreInfo, glTFMesh: IMesh, glTFTargets: {
15
+ static _createBlendShape(mesh: ModelMesh, meshRestoreInfo: ModelMeshRestoreInfo, glTFMesh: IMesh, accessors: IAccessor[], glTFTargets: {
16
16
  [name: string]: number;
17
- }[], getBlendShapeData: (semantic: string, shapeIndex: number) => BufferInfo): void;
18
- parse(context: GLTFParserContext): AssetPromise<ModelMesh[][]>;
17
+ }[], getBlendShapeData: (semantic: string, shapeIndex: number) => Promise<BufferInfo>): Promise<void[]>;
18
+ parse(context: GLTFParserContext): AssetPromise<ModelMesh[][]> | void;
19
19
  }
@@ -1,6 +1,6 @@
1
1
  import { AnimationClip, AssetPromise, EngineObject, Material, Mesh } from "@galacean/engine-core";
2
2
  import { GLTFExtensionMode, GLTFExtensionParser } from "../extensions/GLTFExtensionParser";
3
- import { GLTFExtensionOwnerSchema } from "../GLTFSchema";
3
+ import type { GLTFExtensionOwnerSchema } from "../GLTFSchema";
4
4
  import { GLTFParserContext } from "./GLTFParserContext";
5
5
  /**
6
6
  * Base class of glTF parser.
@@ -1,13 +1,12 @@
1
1
  import { AnimationClip, AssetPromise, Buffer, Entity, Material, ModelMesh, Texture2D, TypedArray } from "@galacean/engine-core";
2
2
  import { BufferDataRestoreInfo, GLTFContentRestorer } from "../../GLTFContentRestorer";
3
3
  import { GLTFResource } from "../GLTFResource";
4
- import { IGLTF } from "../GLTFSchema";
4
+ import type { IGLTF } from "../GLTFSchema";
5
5
  /**
6
6
  * @internal
7
7
  */
8
8
  export declare class GLTFParserContext {
9
9
  glTF: IGLTF;
10
- buffers: ArrayBuffer[];
11
10
  glTFResource: GLTFResource;
12
11
  keepMeshData: boolean;
13
12
  hasSkinned: boolean;
@@ -21,7 +20,13 @@ export declare class GLTFParserContext {
21
20
  masterPromiseInfo: PromiseInfo<GLTFResource>;
22
21
  promiseMap: Record<string, AssetPromise<any>>;
23
22
  contentRestorer: GLTFContentRestorer;
23
+ /** @internal */
24
+ _buffers: ArrayBuffer[] | Promise<ArrayBuffer[]>;
24
25
  constructor(url: string);
26
+ /**
27
+ * Get all the buffer data.
28
+ */
29
+ getBuffers(): Promise<ArrayBuffer[]>;
25
30
  private _initPromiseInfo;
26
31
  }
27
32
  /**
@@ -1,10 +1,10 @@
1
- import { Entity } from "@galacean/engine-core";
1
+ import { AssetPromise, Entity } from "@galacean/engine-core";
2
2
  import { GLTFParser } from "./GLTFParser";
3
3
  import { GLTFParserContext } from "./GLTFParserContext";
4
4
  export declare class GLTFSceneParser extends GLTFParser {
5
5
  private static _defaultMaterial;
6
6
  private static _getDefaultMaterial;
7
- parse(context: GLTFParserContext): import("@galacean/engine-core").AssetPromise<Entity>;
7
+ parse(context: GLTFParserContext): AssetPromise<Entity> | void;
8
8
  private _createCamera;
9
9
  private _createRenderer;
10
10
  private _createAnimator;
@@ -0,0 +1,7 @@
1
+ import { IGLTF } from "../GLTFSchema";
2
+ import { GLTFParser } from "./GLTFParser";
3
+ import { GLTFParserContext } from "./GLTFParserContext";
4
+ export declare class GLTFSchemaParser extends GLTFParser {
5
+ parse(context: GLTFParserContext): Promise<IGLTF>;
6
+ private _isGLB;
7
+ }
@@ -1,6 +1,7 @@
1
+ import { AssetPromise } from "@galacean/engine-core";
1
2
  import { GLTFParserContext } from ".";
2
3
  import { GLTFParser } from "./GLTFParser";
3
4
  export declare class GLTFSkinParser extends GLTFParser {
4
- parse(context: GLTFParserContext): void;
5
+ parse(context: GLTFParserContext): AssetPromise<void>;
5
6
  private _findSkeletonRootBone;
6
7
  }
@@ -1,8 +1,9 @@
1
1
  import { AssetPromise, Texture2D } from "@galacean/engine-core";
2
- import { GLTFParser } from "./GLTFParser";
3
2
  import { GLTFParserContext } from ".";
3
+ import { GLTFParser } from "./GLTFParser";
4
4
  export declare class GLTFTextureParser extends GLTFParser {
5
5
  private static _wrapMap;
6
- parse(context: GLTFParserContext): AssetPromise<Texture2D[]>;
6
+ parse(context: GLTFParserContext): AssetPromise<Texture2D[]> | void;
7
+ private _getSamplerInfo;
7
8
  private _parseSampler;
8
9
  }
@@ -0,0 +1,13 @@
1
+ import { KTX2TargetFormat } from "../KTX2TargetFormat";
2
+ import { TranscodeResult } from "../TranscodeResult";
3
+ /** @internal */
4
+ export declare class BinomialLLCTranscoder {
5
+ readonly workerLimit: number;
6
+ static MessageId: number;
7
+ private _transcodeWorkerPool;
8
+ private _initPromise;
9
+ constructor(workerLimit: number);
10
+ init(): Promise<any>;
11
+ transcode(buffer: ArrayBuffer, format: KTX2TargetFormat): Promise<TranscodeResult>;
12
+ destroy(): void;
13
+ }
@@ -0,0 +1,33 @@
1
+ type MessageType = "init" | "transcode";
2
+ export interface IBaseMessage {
3
+ type: MessageType;
4
+ }
5
+ export interface IInitMessage extends IBaseMessage {
6
+ type: "init";
7
+ transcoderWasm: ArrayBuffer;
8
+ }
9
+ export interface ITranscodeMessage extends IBaseMessage {
10
+ type: "transcode";
11
+ format: number;
12
+ buffer: ArrayBuffer;
13
+ }
14
+ export type IMessage = IInitMessage | ITranscodeMessage;
15
+ export type TranscodeResult = {
16
+ width: number;
17
+ height: number;
18
+ hasAlpha: boolean;
19
+ format: number;
20
+ faces: Array<{
21
+ data: Uint8Array;
22
+ width: number;
23
+ height: number;
24
+ }>[];
25
+ faceCount: number;
26
+ };
27
+ export type TranscodeResponse = {
28
+ id: number;
29
+ type: "transcoded";
30
+ } & TranscodeResult;
31
+ /** @internal */
32
+ export declare function TranscodeWorkerCode(): void;
33
+ export {};
@@ -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,17 @@
1
+ import { KTX2Container } from "../KTX2Container";
2
+ import { KTX2TargetFormat } from "../KTX2TargetFormat";
3
+ import { TranscodeResult } from "./TranscoderWorkerCode";
4
+ /** @internal */
5
+ export declare class KhronosTranscoder {
6
+ readonly workerLimit: number;
7
+ readonly type: KTX2TargetFormat;
8
+ static transcoderMap: {
9
+ 0: string;
10
+ };
11
+ private _transcodeWorkerPool;
12
+ private _initPromise;
13
+ constructor(workerLimit: number, type: KTX2TargetFormat);
14
+ init(): Promise<any>;
15
+ transcode(ktx2Container: KTX2Container): Promise<TranscodeResult>;
16
+ destroy(): void;
17
+ }
@@ -0,0 +1,34 @@
1
+ export interface EncodedData {
2
+ buffer: Uint8Array;
3
+ levelWidth: number;
4
+ levelHeight: number;
5
+ uncompressedByteLength: number;
6
+ }
7
+ type MessageType = "init" | "transcode";
8
+ export interface IBaseMessage {
9
+ type: MessageType;
10
+ }
11
+ export interface IInitMessage extends IBaseMessage {
12
+ type: "init";
13
+ transcoderWasm: ArrayBuffer;
14
+ }
15
+ export interface ITranscodeMessage extends IBaseMessage {
16
+ type: "transcode";
17
+ format: number;
18
+ needZstd: boolean;
19
+ data: EncodedData[][];
20
+ }
21
+ export type IMessage = IInitMessage | ITranscodeMessage;
22
+ export type TranscodeResult = {
23
+ data: Array<{
24
+ data: Uint8Array;
25
+ width: number;
26
+ height: number;
27
+ }>;
28
+ };
29
+ export type TranscodeResponse = {
30
+ id: number;
31
+ type: "transcoded";
32
+ } & TranscodeResult;
33
+ export declare function TranscodeWorkerCode(): void;
34
+ export {};
@@ -0,0 +1,10 @@
1
+ export interface TranscodeResult {
2
+ width: number;
3
+ height: number;
4
+ hasAlpha: boolean;
5
+ mipmaps: Array<{
6
+ data: Uint8Array;
7
+ width: number;
8
+ height: number;
9
+ }>;
10
+ }
@@ -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,7 @@
1
+ export declare enum SupercompressionScheme {
2
+ None = 0,
3
+ BasisLZ = 1,
4
+ Zstd = 2,
5
+ ZLib = 3
6
+ }
7
+ export declare const KHR_DF_SAMPLE_DATATYPE_SIGNED = 64;
@@ -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;