@galacean/effects-core 2.7.4 → 2.8.0-alpha.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 (40) hide show
  1. package/dist/asset-manager.d.ts +5 -5
  2. package/dist/components/index.d.ts +1 -0
  3. package/dist/components/position-constraint.d.ts +92 -0
  4. package/dist/composition.d.ts +6 -7
  5. package/dist/constants.d.ts +4 -0
  6. package/dist/downloader.d.ts +7 -0
  7. package/dist/engine.d.ts +67 -6
  8. package/dist/events/types.d.ts +31 -6
  9. package/dist/index.d.ts +1 -0
  10. package/dist/index.js +2329 -1723
  11. package/dist/index.js.map +1 -1
  12. package/dist/index.mjs +2323 -1720
  13. package/dist/index.mjs.map +1 -1
  14. package/dist/plugins/interact/click-handler.d.ts +14 -2
  15. package/dist/plugins/interact/event-system.d.ts +16 -3
  16. package/dist/plugins/particle/particle-system.d.ts +1 -2
  17. package/dist/plugins/plugin.d.ts +0 -49
  18. package/dist/plugins/sprite/sprite-mesh.d.ts +0 -4
  19. package/dist/plugins/text/base-layout.d.ts +13 -0
  20. package/dist/plugins/text/index.d.ts +2 -0
  21. package/dist/plugins/text/text-component-base.d.ts +65 -0
  22. package/dist/plugins/text/text-item.d.ts +30 -102
  23. package/dist/plugins/text/text-layout.d.ts +9 -19
  24. package/dist/plugins/text/text-style.d.ts +2 -1
  25. package/dist/render/draw-object-pass.d.ts +9 -0
  26. package/dist/render/framebuffer.d.ts +0 -4
  27. package/dist/render/gpu-capability.d.ts +17 -5
  28. package/dist/render/index.d.ts +1 -0
  29. package/dist/render/post-process-pass.d.ts +14 -5
  30. package/dist/render/render-frame.d.ts +8 -31
  31. package/dist/render/render-pass.d.ts +4 -90
  32. package/dist/render/renderer.d.ts +5 -18
  33. package/dist/scene-loader.d.ts +7 -0
  34. package/dist/texture/index.d.ts +1 -1
  35. package/dist/texture/texture-loader.d.ts +60 -0
  36. package/dist/transform.d.ts +8 -1
  37. package/dist/utils/index.d.ts +1 -0
  38. package/dist/vfx-item.d.ts +10 -3
  39. package/package.json +2 -2
  40. package/dist/texture/ktx-texture.d.ts +0 -21
@@ -1,21 +1,20 @@
1
- import type { vec4 } from '@galacean/effects-specification';
2
1
  import type { Matrix4 } from '@galacean/effects-math/es/core/matrix4';
3
2
  import { Vector2 } from '@galacean/effects-math/es/core/vector2';
3
+ import type { Vector3 } from '@galacean/effects-math/es/core/vector3';
4
4
  import { Vector4 } from '@galacean/effects-math/es/core/vector4';
5
+ import type { vec4 } from '@galacean/effects-specification';
5
6
  import type { Camera } from '../camera';
7
+ import type { PostProcessVolume, RendererComponent } from '../components';
6
8
  import type { UniformValue } from '../material';
7
9
  import { PassTextureCache } from '../paas-texture-cache';
8
- import type { SemanticFunc } from './semantic-map';
9
- import { SemanticMap } from './semantic-map';
10
- import { Texture } from '../texture';
10
+ import type { Texture } from '../texture';
11
11
  import type { Disposable } from '../utils';
12
12
  import { DestroyOptions } from '../utils';
13
- import { Mesh } from './mesh';
14
- import type { RenderPassClearAction, RenderPassColorAttachmentOptions, RenderPassDepthStencilAttachment, RenderPassDestroyOptions, RenderPassStoreAction } from './render-pass';
15
- import { RenderPass } from './render-pass';
13
+ import type { Mesh } from './mesh';
14
+ import type { RenderPass, RenderPassClearAction, RenderPassColorAttachmentOptions, RenderPassDepthStencilAttachment, RenderPassDestroyOptions, RenderPassStoreAction } from './render-pass';
16
15
  import type { Renderer } from './renderer';
17
- import type { PostProcessVolume, RendererComponent } from '../components';
18
- import type { Vector3 } from '@galacean/effects-math/es/core/vector3';
16
+ import type { SemanticFunc } from './semantic-map';
17
+ import { SemanticMap } from './semantic-map';
19
18
  /**
20
19
  * 渲染数据,保存了当前渲染使用到的数据。
21
20
  */
@@ -172,7 +171,6 @@ export declare class RenderFrame implements Disposable {
172
171
  */
173
172
  globalVolume?: PostProcessVolume;
174
173
  renderer: Renderer;
175
- resource: RenderFrameResource;
176
174
  keepColorBuffer?: boolean;
177
175
  editorTransform: Vector4;
178
176
  renderQueue: RendererComponent[];
@@ -207,19 +205,12 @@ export declare class RenderFrame implements Disposable {
207
205
  * @param options - 可以有选择销毁一些对象
208
206
  */
209
207
  dispose(options?: RenderFrameDestroyOptions): void;
210
- /**
211
- * 重置 RenderPass ColorAttachment,解决 Framebuffer 即读又写的问题
212
- * @param renderPasses - RenderPass 对象数组
213
- * @param startIndex - 开始重置的索引
214
- */
215
- resetRenderPassDefaultAttachment(renderPasses: RenderPass[], startIndex: number): void;
216
208
  /**
217
209
  * 查找 Mesh 所在的 RenderPass 索引,没找到是-1
218
210
  * @param mesh - 需要查找的 Mesh
219
211
  */
220
212
  findMeshRenderPassIndex(mesh: Mesh): number;
221
213
  protected addToRenderPass(renderPass: RenderPass, mesh: Mesh): void;
222
- protected getRPAttachments(attachments: RenderPassColorAttachmentOptions[], preRP?: RenderPass): RenderPassColorAttachmentOptions[];
223
214
  protected resetClearActions(): void;
224
215
  /**
225
216
  * 设置 RenderPass 数组,直接修改内部的 RenderPass 数组
@@ -231,20 +222,6 @@ export declare class RenderFrame implements Disposable {
231
222
  * @param pass - 需要添加的 RenderPass
232
223
  */
233
224
  addRenderPass(pass: RenderPass): void;
234
- /**
235
- * 创建 RenderPass 切分时需要的 GPU 资源
236
- */
237
- createResource(): void;
238
- /**
239
- * 创建拷贝 RenderPass 用到的 Mesh 对象
240
- * @param semantics - RenderPass 渲染时 Framebuffer 的颜色和深度纹理、大小和是否混合
241
- */
242
- createCopyMesh(semantics?: {
243
- tex?: string;
244
- size?: string;
245
- blend?: boolean;
246
- depthTexture?: Texture;
247
- }): Mesh;
248
225
  /**
249
226
  * 移除 RenderPass
250
227
  * @param pass - 需要移除的 RenderPass
@@ -5,14 +5,11 @@ import type { RendererComponent } from '../components';
5
5
  import type { Engine } from '../engine';
6
6
  import type { MeshDestroyOptions, Renderer } from '../render';
7
7
  import { Framebuffer } from '../render';
8
- import type { SemanticGetter } from './semantic-map';
9
- import { SemanticMap } from './semantic-map';
10
8
  import type { TextureConfigOptions, TextureLoadAction } from '../texture';
11
9
  import { Texture } from '../texture';
12
10
  import type { Disposable, Sortable } from '../utils';
13
11
  import { DestroyOptions, OrderType } from '../utils';
14
12
  import type { Renderbuffer } from './renderbuffer';
15
- import type { RenderingData } from './render-frame';
16
13
  export declare const RenderPassPriorityPrepare = 0;
17
14
  export declare const RenderPassPriorityNormal = 1000;
18
15
  export declare const RenderPassPriorityPostprocess = 3000;
@@ -133,65 +130,12 @@ export declare enum RenderPassDestroyAttachmentType {
133
130
  }
134
131
  export type RenderPassDestroyOptions = {
135
132
  meshes?: MeshDestroyOptions | DestroyOptions.keep;
136
- semantics?: DestroyOptions;
137
133
  colorAttachment?: RenderPassDestroyAttachmentType;
138
134
  depthStencilAttachment?: RenderPassDestroyAttachmentType;
139
135
  };
140
- /**
141
- * RenderPass 渲染过程回调
142
- */
143
- export interface RenderPassDelegate {
144
- /**
145
- * 开始前回调
146
- * @param renderPass - 当前 RenderPass
147
- * @param state - 当前渲染状态
148
- */
149
- willBeginRenderPass?: (renderPass: RenderPass, state: RenderingData) => void;
150
- /**
151
- * 结束后回调
152
- * @param renderPass - 当前 RenderPass
153
- * @param state - 当前渲染状态
154
- */
155
- didEndRenderPass?: (renderPass: RenderPass, state: RenderingData) => void;
156
- /**
157
- * Mesh 渲染前回调
158
- * @param mesh - 当前 Mesh
159
- * @param state - 当前渲染状态
160
- */
161
- willRenderMesh?: (mesh: RendererComponent, state: RenderingData) => void;
162
- /**
163
- * Mesh 渲染后回调
164
- * @param mesh - 当前 Mesh
165
- * @param state - 当前渲染状态
166
- */
167
- didRenderMesh?: (mesh: RendererComponent, state: RenderingData) => void;
168
- }
169
- /**
170
- * RenderPass Attachment 选项
171
- */
172
- export interface RenderPassAttachmentOptions {
136
+ export interface RenderPassOptions {
173
137
  attachments?: RenderPassColorAttachmentOptions[];
174
138
  depthStencilAttachment?: RenderPassDepthStencilAttachmentOptions;
175
- /**
176
- * RenderPass 视口大小,如果没有指定,会用 viewportScale 计算
177
- */
178
- viewport?: [x: number, y: number, width: number, height: number];
179
- /**
180
- * 视口缩放系数
181
- * 1. viewport 提供时,忽略此参数,RenderPass 视口大小由 viewport 决定;
182
- * 2. 默认为1,RenderPass 视口大小由画布大小* viewportScale 决定,画布尺寸变化时,RenderPass 视口也会变化;
183
- */
184
- viewportScale?: number;
185
- }
186
- export interface RenderPassOptions extends RenderPassAttachmentOptions {
187
- name?: string;
188
- meshes?: RendererComponent[];
189
- priority?: number;
190
- meshOrder?: OrderType;
191
- clearAction?: RenderPassClearAction;
192
- storeAction?: RenderPassStoreAction;
193
- semantics?: Record<string, SemanticGetter>;
194
- delegate?: RenderPassDelegate;
195
139
  }
196
140
  /**
197
141
  * RenderPass 抽象类
@@ -201,10 +145,6 @@ export declare class RenderPass implements Disposable, Sortable {
201
145
  * 优先级
202
146
  */
203
147
  priority: number;
204
- /**
205
- * 渲染时的回调函数
206
- */
207
- delegate: RenderPassDelegate;
208
148
  /**
209
149
  * ColorAttachment 数组
210
150
  */
@@ -213,7 +153,7 @@ export declare class RenderPass implements Disposable, Sortable {
213
153
  /**
214
154
  * 名称
215
155
  */
216
- readonly name: string;
156
+ name: string;
217
157
  /**
218
158
  * 包含的 Mesh 列表
219
159
  */
@@ -230,27 +170,16 @@ export declare class RenderPass implements Disposable, Sortable {
230
170
  * 深度和蒙版 Attachment 类型,注意区分纹理和 Renderbuffer
231
171
  */
232
172
  readonly depthStencilType: RenderPassAttachmentStorageType;
233
- /**
234
- * 渲染前清除缓冲区操作
235
- */
236
- readonly clearAction: RenderPassClearAction;
237
173
  /**
238
174
  * 渲染后清除缓冲区操作,iOS 上有性能提升, 默认关闭
239
175
  */
240
176
  readonly storeAction: RenderPassStoreAction;
241
- /**
242
- * RenderPass 公用的 Shader Uniform 变量
243
- */
244
- readonly semantics: SemanticMap;
245
- protected destroyed: boolean;
246
- protected options: RenderPassAttachmentOptions;
177
+ protected disposed: boolean;
178
+ protected options: RenderPassOptions;
247
179
  protected renderer: Renderer;
248
180
  private initialized;
249
- private viewportScale;
250
181
  private depthTexture?;
251
182
  private stencilTexture?;
252
- private isCustomViewport;
253
- private customViewport?;
254
183
  constructor(renderer: Renderer, options: RenderPassOptions);
255
184
  get isDestroyed(): boolean;
256
185
  get viewport(): spec.vec4;
@@ -259,10 +188,6 @@ export declare class RenderPass implements Disposable, Sortable {
259
188
  addMesh(mesh: RendererComponent): void;
260
189
  removeMesh(mesh: RendererComponent): void;
261
190
  setMeshes(meshes: RendererComponent[]): RendererComponent[];
262
- /**
263
- * 获取当前 Attachment 数组,注意 RenderPass 可能没有创建完成
264
- */
265
- getInitAttachments(): RenderPassColorAttachmentOptions[] | RenderTargetHandle[] | undefined;
266
191
  /**
267
192
  * 配置当前pass的RT,在每帧渲染前调用
268
193
  */
@@ -275,17 +200,6 @@ export declare class RenderPass implements Disposable, Sortable {
275
200
  * 每帧所有的pass渲染完后调用,通常用于清空临时的RT资源
276
201
  */
277
202
  frameCleanup(renderer: Renderer): void;
278
- /**
279
- * 重置 ColorAttachment 数组,会直接替换掉
280
- * @param colors - 纹理数组,作为新的 ColorAttachment
281
- */
282
- resetColorAttachments(colors: Texture[]): void;
283
- /**
284
- * 重置所有 Attachment,会替换掉所有 Attachment
285
- * @param options - Attachment 和视口数据
286
- */
287
- resetAttachments(options: RenderPassAttachmentOptions): void;
288
- private setViewportOptions;
289
203
  private _resetAttachments;
290
204
  /**
291
205
  * 获取当前视口大小,格式:[x偏移,y偏移,宽度,高度]
@@ -8,40 +8,27 @@ import type { Geometry } from './geometry';
8
8
  import type { RenderFrame, RenderingData } from './render-frame';
9
9
  import type { RenderPassClearAction, RenderPassStoreAction } from './render-pass';
10
10
  import type { ShaderLibrary } from './shader';
11
- import type { GLType } from '../gl';
12
11
  export declare class Renderer implements LostHandler, RestoreHandler {
13
- static create: (canvas: HTMLCanvasElement | OffscreenCanvas, framework: GLType, renderOptions?: WebGLContextAttributes) => Renderer;
12
+ static create: (engine: Engine) => Renderer;
14
13
  engine: Engine;
15
- env: string;
16
14
  /**
17
15
  * 存放渲染需要用到的数据
18
16
  */
19
17
  renderingData: RenderingData;
20
- constructor();
18
+ protected currentFramebuffer: Framebuffer;
19
+ constructor(engine: Engine);
21
20
  setGlobalFloat(name: string, value: number): void;
22
21
  setGlobalInt(name: string, value: number): void;
23
22
  setGlobalVector4(name: string, value: Vector4): void;
24
23
  setGlobalVector3(name: string, value: Vector3): void;
25
24
  setGlobalMatrix(name: string, value: Matrix4): void;
26
- getFramebuffer(): Framebuffer | null;
25
+ getFramebuffer(): Framebuffer;
27
26
  setFramebuffer(framebuffer: Framebuffer | null): void;
28
27
  setViewport(x: number, y: number, width: number, height: number): void;
29
28
  resize(canvasWidth: number, canvasHeight: number): void;
30
29
  clear(action: RenderPassClearAction | RenderPassStoreAction): void;
31
30
  getWidth(): number;
32
31
  getHeight(): number;
33
- /**
34
- * 添加 webglcontextlost 事件回调
35
- * @override
36
- * @param lostHandler
37
- */
38
- addLostHandler(lostHandler: LostHandler): void;
39
- /**
40
- * 添加 webglContextrestored 事件的回调
41
- * @override
42
- * @param restoreHandler
43
- */
44
- addRestoreHandler(restoreHandler: RestoreHandler): void;
45
32
  /**
46
33
  * @override
47
34
  * @param e
@@ -61,5 +48,5 @@ export declare class Renderer implements LostHandler, RestoreHandler {
61
48
  renderMeshes(meshes: RendererComponent[]): void;
62
49
  drawGeometry(geometry: Geometry, matrix: Matrix4, material: Material, subMeshIndex?: number): void;
63
50
  getTemporaryRT(name: string, width: number, height: number, depthBuffer: number, filter: FilterMode, format: RenderTextureFormat): Framebuffer | null;
64
- dispose(haltGL?: boolean): void;
51
+ dispose(): void;
65
52
  }
@@ -0,0 +1,7 @@
1
+ import { Composition } from './composition';
2
+ import type { Engine } from './engine';
3
+ import type { Scene, SceneLoadOptions } from './scene';
4
+ export declare class SceneLoader {
5
+ static load(scene: Scene.LoadType, engine: Engine, options?: SceneLoadOptions): Promise<Composition>;
6
+ private static createComposition;
7
+ }
@@ -1,5 +1,5 @@
1
1
  export * from './utils';
2
2
  export * from './texture';
3
- export * from './ktx-texture';
4
3
  export * from './texture-factory';
5
4
  export * from './types';
5
+ export * from './texture-loader';
@@ -0,0 +1,60 @@
1
+ import type { Texture2DSourceOptions } from './types';
2
+ import type { GPUCapability } from '../render/gpu-capability';
3
+ export interface TextureLoader {
4
+ /**
5
+ * 从 ArrayBuffer 加载纹理
6
+ */
7
+ loadFromBuffer(arrBuffer: ArrayBuffer, gpuCapability?: GPUCapability): Promise<Texture2DSourceOptions>;
8
+ /**
9
+ * 从 URL 加载纹理
10
+ */
11
+ loadFromURL(url: string, gpuCapability?: GPUCapability): Promise<Texture2DSourceOptions>;
12
+ /**
13
+ * 释放资源
14
+ */
15
+ dispose(): void;
16
+ }
17
+ /**
18
+ * 纹理加载器工厂类型
19
+ */
20
+ export type TextureLoaderFactory = () => TextureLoader;
21
+ /**
22
+ * 纹理加载器注册表
23
+ */
24
+ declare class TextureLoaderRegistry {
25
+ private loaders;
26
+ private instances;
27
+ /**
28
+ * 注册纹理加载器
29
+ * @param type - 加载器类型(如 'ktx2', 'hdr')
30
+ * @param factory - 加载器工厂函数
31
+ */
32
+ register(type: string, factory: TextureLoaderFactory): void;
33
+ /**
34
+ * 注销纹理加载器
35
+ * @param type - 加载器类型
36
+ */
37
+ unregister(type: string): void;
38
+ /**
39
+ * 获取纹理加载器实例(单例)
40
+ * @param type - 加载器类型
41
+ */
42
+ getLoader(type: string): TextureLoader | null;
43
+ /**
44
+ * 检查是否已注册某类型加载器
45
+ */
46
+ has(type: string): boolean;
47
+ /**
48
+ * 获取所有已注册的加载器类型
49
+ */
50
+ getRegisteredTypes(): string[];
51
+ /**
52
+ * 清理所有加载器
53
+ */
54
+ dispose(): void;
55
+ }
56
+ /**
57
+ * 全局纹理加载器注册表实例
58
+ */
59
+ export declare const textureLoaderRegistry: TextureLoaderRegistry;
60
+ export {};
@@ -13,7 +13,7 @@ export interface TransformProps {
13
13
  valid?: boolean;
14
14
  }
15
15
  /**
16
- *
16
+ * 变换组件,用于描述元素的位置、旋转、缩放等信息
17
17
  */
18
18
  export declare class Transform implements Disposable {
19
19
  /**
@@ -204,6 +204,13 @@ export declare class Transform implements Disposable {
204
204
  * @returns
205
205
  */
206
206
  getWorldPosition(): Vector3;
207
+ /**
208
+ * 设置世界坐标位置
209
+ * @param x - 世界坐标 x
210
+ * @param y - 世界坐标 y
211
+ * @param z - 世界坐标 z
212
+ */
213
+ setWorldPosition(x: number, y: number, z: number): void;
207
214
  /**
208
215
  * 获取联合变换后的最终旋转量
209
216
  * @returns
@@ -79,6 +79,7 @@ export declare function isObject(obj: unknown): obj is Record<string | symbol, u
79
79
  */
80
80
  export declare function isPlainObject(obj: unknown): obj is Record<string | symbol, unknown>;
81
81
  export declare function isCanvas(canvas: HTMLCanvasElement): boolean;
82
+ export declare function isPowerOfTwo(value: number): boolean;
82
83
  /**
83
84
  * 生成一个位于 min 和 max 之间的随机数
84
85
  * @param min
@@ -238,17 +238,24 @@ export declare class VFXItem extends EffectsObject implements Disposable {
238
238
  */
239
239
  setPositionByPixel(x: number, y: number): void;
240
240
  /**
241
- * 设置元素在 3D 坐标轴的位置
241
+ * 设置本地坐标位置
242
242
  */
243
243
  setPosition(x: number, y: number, z: number): void;
244
244
  /**
245
- * 设置元素在 3D 坐标轴的角度
245
+ * 设置本地坐标欧拉旋转
246
246
  */
247
247
  setRotation(x: number, y: number, z: number): void;
248
248
  /**
249
- * 设置元素在 3D 坐标轴的缩放
249
+ * 设置本地坐标缩放
250
250
  */
251
251
  setScale(x: number, y: number, z: number): void;
252
+ /**
253
+ * 设置世界坐标位置
254
+ * @param x - 世界坐标 x
255
+ * @param y - 世界坐标 y
256
+ * @param z - 世界坐标 z
257
+ */
258
+ setWorldPosition(x: number, y: number, z: number): void;
252
259
  /**
253
260
  * 获取元素包围盒
254
261
  * @override
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@galacean/effects-core",
3
- "version": "2.7.4",
3
+ "version": "2.8.0-alpha.1",
4
4
  "description": "Galacean Effects runtime core for the web",
5
5
  "module": "./dist/index.mjs",
6
6
  "main": "./dist/index.js",
@@ -42,7 +42,7 @@
42
42
  "registry": "https://registry.npmjs.org"
43
43
  },
44
44
  "dependencies": {
45
- "@galacean/effects-specification": "2.6.0",
45
+ "@galacean/effects-specification": "2.7.0-alpha.0",
46
46
  "@galacean/effects-math": "1.1.0",
47
47
  "flatbuffers": "24.3.25",
48
48
  "uuid": "9.0.1",
@@ -1,21 +0,0 @@
1
- import type { Texture2DSourceOptionsCompressed, TextureDataType } from './types';
2
- export declare class KTXTexture {
3
- private readonly arrayBuffer;
4
- private readonly baseOffset;
5
- glType: number;
6
- glTypeSize: number;
7
- glFormat: number;
8
- glInternalFormat: number;
9
- glBaseInternalFormat: number;
10
- pixelWidth: number;
11
- pixelHeight: number;
12
- loadType: number;
13
- pixelDepth: number;
14
- numberOfArrayElements: number;
15
- numberOfFaces: number;
16
- numberOfMipmapLevels: number;
17
- bytesOfKeyValueData: number;
18
- constructor(arrayBuffer: ArrayBuffer, facesExpected: number, baseOffset?: number);
19
- mipmaps(loadMipmaps: boolean): TextureDataType[];
20
- }
21
- export declare function getKTXTextureOptions(data: ArrayBuffer): Texture2DSourceOptionsCompressed;