@galacean/effects-core 2.10.0-alpha.0 → 2.10.0-alpha.2

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 (47) hide show
  1. package/dist/components/base-render-component.d.ts +4 -0
  2. package/dist/components/frame-component.d.ts +10 -0
  3. package/dist/components/mesh-component.d.ts +1 -1
  4. package/dist/composition.d.ts +9 -8
  5. package/dist/engine.d.ts +43 -8
  6. package/dist/fallback/migration.d.ts +13 -0
  7. package/dist/index.js +3045 -1139
  8. package/dist/index.js.map +1 -1
  9. package/dist/index.mjs +3032 -1140
  10. package/dist/index.mjs.map +1 -1
  11. package/dist/material/types.d.ts +4 -0
  12. package/dist/material/utils.d.ts +4 -0
  13. package/dist/math/value-getters/index.d.ts +1 -0
  14. package/dist/math/value-getters/reference-curve.d.ts +19 -0
  15. package/dist/math/value-getters/value-getter-map.d.ts +5 -0
  16. package/dist/plugin-system.d.ts +6 -4
  17. package/dist/plugins/index.d.ts +1 -0
  18. package/dist/plugins/particle/particle-mesh.d.ts +4 -3
  19. package/dist/plugins/particle/particle-system.d.ts +7 -0
  20. package/dist/plugins/particle/trail-mesh.d.ts +4 -2
  21. package/dist/plugins/plugin.d.ts +14 -0
  22. package/dist/plugins/shape/shape-component.d.ts +1 -0
  23. package/dist/plugins/sprite/sprite-item.d.ts +32 -5
  24. package/dist/plugins/sprite/sprite.d.ts +42 -0
  25. package/dist/plugins/text/index.d.ts +1 -0
  26. package/dist/plugins/text/line-break.d.ts +29 -0
  27. package/dist/plugins/timeline/playable-assets/index.d.ts +1 -0
  28. package/dist/plugins/timeline/playable-assets/sprite-property-playable-asset.d.ts +23 -0
  29. package/dist/plugins/timeline/playables/index.d.ts +1 -0
  30. package/dist/plugins/timeline/playables/sprite-property-mixer-playable.d.ts +11 -0
  31. package/dist/plugins/timeline/playables/transform-mixer-playable.d.ts +6 -0
  32. package/dist/plugins/timeline/playables/transform-playable.d.ts +17 -2
  33. package/dist/plugins/timeline/tracks/index.d.ts +1 -0
  34. package/dist/plugins/timeline/tracks/sprite-property-track.d.ts +11 -0
  35. package/dist/plugins/timeline/transform-clip-mixer.d.ts +33 -0
  36. package/dist/render/buffer.d.ts +33 -0
  37. package/dist/render/data-buffer.d.ts +39 -0
  38. package/dist/render/geometry.d.ts +72 -94
  39. package/dist/render/gpu-capability.d.ts +2 -0
  40. package/dist/render/graphics.d.ts +3 -2
  41. package/dist/render/index.d.ts +3 -0
  42. package/dist/render/shader.d.ts +2 -1
  43. package/dist/render/text-cache.d.ts +22 -14
  44. package/dist/render/vertex-buffer.d.ts +72 -0
  45. package/dist/scene.d.ts +7 -4
  46. package/dist/utils/index.d.ts +1 -1
  47. package/package.json +2 -2
@@ -12,6 +12,10 @@ import { RendererComponent } from './renderer-component';
12
12
  */
13
13
  export interface ItemRenderer extends Required<Omit<spec.RendererOptions, 'texture' | 'shape' | 'anchor' | 'particleOrigin' | 'mask'>> {
14
14
  texture: Texture;
15
+ /**
16
+ * @deprecated 2.10 起此字段无实际意义,仅为兼容老版本读取保留;
17
+ * 请使用 `MaskProcessor.getMaskReferences()` 获取当前蒙版引用列表
18
+ */
15
19
  mask: number;
16
20
  }
17
21
  interface MaskableGraphicData extends spec.ComponentData {
@@ -18,6 +18,16 @@ export declare class FrameComponent extends RendererComponent implements Maskabl
18
18
  drawStencilMask(maskRef: number): void;
19
19
  fromData(data: FrameComponentData): void;
20
20
  private getHitTestParams;
21
+ /**
22
+ * 由相机把命中带的屏幕像素厚度换算成世界厚度。对齐 Excalidraw frame 命中阈值:
23
+ * 描边两侧各 0.85 × DEFAULT_COLLISION_THRESHOLD(≈8px),整条带 ≈13.6px,不受 size/scale/zoom 影响。
24
+ */
25
+ private getBorderWorldThickness;
26
+ /**
27
+ * 构造以 frame 边为中心、给定世界厚度的边框环带三角形(内部镂空)。
28
+ * 带中心落在 frame 边上:half 向外、half 向内;沿 frame 局部坐标轴偏移以兼容旋转。
29
+ */
30
+ private getBorderTriangles;
21
31
  private setClipRectangle;
22
32
  private setClipRectangleRecursive;
23
33
  }
@@ -2,7 +2,7 @@ import type * as spec from '@galacean/effects-specification';
2
2
  import type { Engine } from '../engine';
3
3
  import type { Maskable } from '../material';
4
4
  import type { BoundingBoxTriangle, HitTestTriangleParams, BoundingBoxInfo } from '../plugins';
5
- import type { Geometry, Renderer } from '../render';
5
+ import { type Geometry, type Renderer } from '../render';
6
6
  import { RendererComponent } from './renderer-component';
7
7
  interface MeshComponentData extends spec.ComponentData {
8
8
  mask?: spec.MaskOptions;
@@ -88,18 +88,14 @@ export interface CompositionProps {
88
88
  baseRenderOrder?: number;
89
89
  /**
90
90
  *
91
- * @param message
92
- * @returns
93
91
  */
94
- onItemMessage?: (message: MessageItem) => void;
95
- /**
96
- *
97
- */
98
- event?: EventSystem;
92
+ speed?: number;
99
93
  /**
100
94
  *
95
+ * @param message
96
+ * @returns
101
97
  */
102
- speed?: number;
98
+ onItemMessage?: (message: MessageItem) => void;
103
99
  }
104
100
  /**
105
101
  * 合成抽象类:核心对象,通常一个场景只包含一个合成,可能会有多个合成。
@@ -396,6 +392,11 @@ export declare class Composition extends EventEmitter<CompositionEvent<Compositi
396
392
  */
397
393
  removeInteractiveItem(item: VFXItem, type: spec.InteractType): void;
398
394
  lost(e: Event): void;
395
+ /**
396
+ * 上下文恢复后的空操作。
397
+ * GPU 资源已由引擎统一重建,视频纹理会在下次渲染时自然更新,不自动重新播放。
398
+ */
399
+ restore(): void;
399
400
  /**
400
401
  * 合成对象销毁
401
402
  */
package/dist/engine.d.ts CHANGED
@@ -3,7 +3,8 @@ import type { Matrix4 } from '@galacean/effects-math/es/core/matrix4';
3
3
  import type { Database, SceneData } from './asset-loader';
4
4
  import type { EffectsObject } from './effects-object';
5
5
  import type { Material } from './material';
6
- import type { GPUCapability, Geometry, Mesh, RenderPass, RenderPassClearAction, Renderer, RenderingData, ShaderLibrary } from './render';
6
+ import type { DataArray, DataBuffer, DataBufferOptions, GPUCapability, Geometry, IndicesArray, Mesh, RenderPass, RenderPassClearAction, Renderer, RenderingData, ShaderLibrary, ShaderVariant, VertexBuffer } from './render';
7
+ import type { Framebuffer, Renderbuffer } from './render';
7
8
  import { Graphics, RenderTargetPool } from './render';
8
9
  import type { Scene, SceneRenderLevel } from './scene';
9
10
  import type { Texture } from './texture';
@@ -14,6 +15,7 @@ import { AssetService } from './asset-service';
14
15
  import { Ticker } from './ticker';
15
16
  import type { PointerEventData, Region } from './plugins';
16
17
  import { EventSystem } from './plugins';
18
+ import type { ParticleSystem } from './plugins/particle/particle-system';
17
19
  import type { GLType } from './gl';
18
20
  import { EventEmitter } from './events';
19
21
  export interface EngineOptions extends WebGLContextAttributes {
@@ -25,6 +27,14 @@ export interface EngineOptions extends WebGLContextAttributes {
25
27
  pixelRatio?: number;
26
28
  notifyTouch?: boolean;
27
29
  interactive?: boolean;
30
+ /**
31
+ * 是否不处理 WebGL 上下文丢失恢复。
32
+ * - `true`(默认):上传 GPU 后释放 CPU 端源数据以节省内存;上下文丢失后不自动恢复,
33
+ * 渲染暂停,等待宿主重建资源后手动恢复播放。
34
+ * - `false`:保留 CPU 端源数据,上下文丢失后引擎自动按资源类型就地重建 GPU 资源并恢复渲染。
35
+ * 该配置为构造期选项,运行时从 `true` 改为 `false` 无法找回已经丢弃的源数据。
36
+ */
37
+ doNotHandleContextLost?: boolean;
28
38
  }
29
39
  type EngineEvent = {
30
40
  contextlost: [eventData: {
@@ -43,6 +53,10 @@ type EngineEvent = {
43
53
  * Engine 基类,负责维护所有 GPU 资源的管理及销毁
44
54
  */
45
55
  export declare class Engine extends EventEmitter<EngineEvent> implements Disposable {
56
+ /**
57
+ * 创建 Engine 对象。
58
+ */
59
+ static create: (canvas: HTMLCanvasElement, options?: EngineOptions) => Engine;
46
60
  name: string;
47
61
  speed: number;
48
62
  displayAspect: number;
@@ -94,24 +108,32 @@ export declare class Engine extends EventEmitter<EngineEvent> implements Disposa
94
108
  * 存放渲染需要用到的数据
95
109
  */
96
110
  renderingData: RenderingData;
97
- graphics: Graphics;
111
+ /**
112
+ * 是否不处理上下文丢失恢复(构造期配置,默认 true)
113
+ */
114
+ doNotHandleContextLost: boolean;
115
+ /**
116
+ * WebGL 上下文是否处于丢失状态
117
+ */
118
+ protected contextWasLost: boolean;
98
119
  protected _disposed: boolean;
99
120
  protected textures: Texture[];
100
121
  protected materials: Material[];
101
122
  protected geometries: Geometry[];
102
123
  protected meshes: Mesh[];
103
124
  protected renderPasses: RenderPass[];
125
+ protected framebuffers: Framebuffer[];
126
+ protected renderbuffers: Renderbuffer[];
127
+ protected particleSystems: ParticleSystem[];
128
+ private _graphics;
104
129
  private assetLoader;
105
130
  private clearAction;
106
- get disposed(): boolean;
107
131
  /**
108
132
  *
109
133
  */
110
134
  constructor(canvas: HTMLCanvasElement, options?: EngineOptions);
111
- /**
112
- * 创建 Engine 对象。
113
- */
114
- static create: (canvas: HTMLCanvasElement, options?: EngineOptions) => Engine;
135
+ get graphics(): Graphics;
136
+ get disposed(): boolean;
115
137
  clearResources(): void;
116
138
  addEffectsObjectData(data: spec.EffectsObjectData): void;
117
139
  findEffectsObjectData(uuid: string): spec.EffectsObjectData;
@@ -129,7 +151,15 @@ export declare class Engine extends EventEmitter<EngineEvent> implements Disposa
129
151
  */
130
152
  resize(): void;
131
153
  setSize(width: number, height: number): void;
132
- private getTargetSize;
154
+ createVertexBuffer(data: DataArray | number, options: DataBufferOptions): DataBuffer;
155
+ createDynamicVertexBuffer(data: DataArray | number, options: DataBufferOptions): DataBuffer;
156
+ createIndexBuffer(indices: IndicesArray, options: DataBufferOptions): DataBuffer;
157
+ updateDynamicVertexBuffer(vertexBuffer: DataBuffer, data: DataArray, byteOffset?: number, byteLength?: number): void;
158
+ updateDynamicIndexBuffer(indexBuffer: DataBuffer, indices: IndicesArray, byteOffset?: number): void;
159
+ /** @hide */
160
+ releaseBuffer(buffer: DataBuffer): boolean;
161
+ /** @hide */
162
+ bindBuffers(vertexBuffers: Record<string, VertexBuffer>, indexBuffer: DataBuffer | undefined, effect: ShaderVariant): void;
133
163
  addTexture(tex: Texture): void;
134
164
  removeTexture(tex: Texture): void;
135
165
  addMaterial(mat: Material): void;
@@ -140,6 +170,10 @@ export declare class Engine extends EventEmitter<EngineEvent> implements Disposa
140
170
  removeMesh(mesh: Mesh): void;
141
171
  addRenderPass(pass: RenderPass): void;
142
172
  removeRenderPass(pass: RenderPass): void;
173
+ addFramebuffer(framebuffer: Framebuffer): void;
174
+ removeFramebuffer(framebuffer: Framebuffer): void;
175
+ addRenderbuffer(renderbuffer: Renderbuffer): void;
176
+ removeRenderbuffer(renderbuffer: Renderbuffer): void;
143
177
  addComposition(composition: Composition): void;
144
178
  removeComposition(composition: Composition): void;
145
179
  getWidth(): number;
@@ -182,5 +216,6 @@ export declare class Engine extends EventEmitter<EngineEvent> implements Disposa
182
216
  * 销毁所有缓存的资源
183
217
  */
184
218
  dispose(): void;
219
+ private getTargetSize;
185
220
  }
186
221
  export {};
@@ -26,6 +26,19 @@ export declare function version33Migration(json: JSONScene): JSONScene;
26
26
  export declare function version34Migration(json: JSONScene): JSONScene;
27
27
  export declare function version35Migration(json: JSONScene): JSONScene;
28
28
  export declare function version36Migration(json: JSONScene): JSONScene;
29
+ /**
30
+ * 3.8 数据适配:SpriteComponent 的 renderer.texture + splits 迁移为独立 Sprite 资产。
31
+ *
32
+ * - 遍历所有未引用 sprite 的 SpriteComponentData,按 splits[0](无则整图 [0,0,1,1])生成
33
+ * Sprite 资产对象放入 miscs,并把组件的 sprite 指向它。
34
+ * - 删除组件的 splits 与 renderer.texture(纹理归属 sprite,renderer 仅保留渲染状态)。
35
+ * - 卫语句 `if (sc.sprite) continue` 处理混合数据(部分组件已用 sprite)。
36
+ * - 多 split(splits.length>1,2x2 纹理打包)保留原 splits 不迁移,仍走 updateGeometryFromMultiSplit 旧路径。
37
+ *
38
+ * 由 getStandardJSON 以 `minorVersion < 8` 守卫调用,数据生命周期内只跑一次。
39
+ * version 字段设为字符串 '3.8'(JSONSceneVersion 枚举无此值,运行时不依赖枚举)。
40
+ */
41
+ export declare function version37Migration(json: spec.JSONScene): spec.JSONScene;
29
42
  export declare function processContent(composition: spec.CompositionData): void;
30
43
  export declare function processMask(renderContent: any): void;
31
44
  export declare function convertParam(content?: BaseContent): void;