@galacean/effects-core 2.8.0-alpha.1 → 2.8.0-alpha.3

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.
@@ -1,12 +1,8 @@
1
- import type * as spec from '@galacean/effects-specification';
2
1
  import type { Composition } from './composition';
3
- import type { Plugin, PluginConstructor } from './plugins';
4
- import type { RenderFrame, Renderer } from './render';
2
+ import type { AbstractPlugin, PluginConstructor } from './plugins';
5
3
  import type { Scene, SceneLoadOptions } from './scene';
6
- import type { Constructor } from './utils';
7
- import type { VFXItem } from './vfx-item';
4
+ import type { Engine } from './engine';
8
5
  export declare const pluginLoaderMap: Record<string, PluginConstructor>;
9
- export declare const defaultPlugins: string[];
10
6
  /**
11
7
  * 注册 plugin
12
8
  * @param name
@@ -14,20 +10,16 @@ export declare const defaultPlugins: string[];
14
10
  * @param itemClass class of item
15
11
  * @param isDefault load
16
12
  */
17
- export declare function registerPlugin(name: string, pluginClass: PluginConstructor, itemClass: Constructor<VFXItem>): void;
13
+ export declare function registerPlugin(name: string, pluginClass: PluginConstructor): void;
14
+ /**
15
+ * 注销 plugin
16
+ */
18
17
  export declare function unregisterPlugin(name: string): void;
19
18
  export declare class PluginSystem {
20
- readonly plugins: Plugin[];
21
- constructor(pluginNames: string[]);
22
- initializeComposition(composition: Composition, scene: Scene): void;
23
- destroyComposition(comp: Composition): void;
24
- resetComposition(comp: Composition, renderFrame: RenderFrame): void;
25
- processRawJSON(json: spec.JSONScene, options: SceneLoadOptions): Promise<void[]>;
26
- processAssets(json: spec.JSONScene, options?: SceneLoadOptions): Promise<{
27
- assets: spec.AssetBase[];
28
- loadedAssets: unknown[];
29
- }[]>;
30
- precompile(compositions: spec.CompositionData[], renderer: Renderer): void;
31
- loadResources(scene: Scene, options: SceneLoadOptions): Promise<unknown[]>;
32
- private callStatic;
19
+ static getPlugins(): AbstractPlugin[];
20
+ static initializeComposition(composition: Composition, scene: Scene): void;
21
+ static destroyComposition(comp: Composition): void;
22
+ static processAssets(scene: Scene, options?: SceneLoadOptions): Promise<void[]>;
23
+ static loadResources(scene: Scene, options: SceneLoadOptions, engine: Engine): void;
33
24
  }
25
+ export declare function getPluginUsageInfo(name: string): string;
@@ -1,92 +1,36 @@
1
- import type * as spec from '@galacean/effects-specification';
2
1
  import type { Scene, SceneLoadOptions } from '../scene';
3
- import type { RenderFrame, Renderer } from '../render';
4
2
  import type { Composition } from '../composition';
5
- export interface Plugin {
6
- /**
7
- * plugin 的数组内排序,按照升序排列
8
- * @default 100
9
- */
10
- order: number;
11
- name: string;
12
- /**
13
- * 在加载到 JSON 后,就可以进行提前编译
14
- * @param json
15
- * @param player
16
- */
17
- precompile: (compositions: spec.CompositionData[], renderer: Renderer) => void;
18
- /**
19
- * 合成创建时调用,用于触发元素在合成创建时的回调
20
- * @param composition
21
- * @param scene
22
- */
23
- onCompositionConstructed: (composition: Composition, scene: Scene) => void;
24
- /**
25
- * 合成重播时的回调
26
- * @param composition
27
- * @param frame
28
- */
29
- onCompositionReset: (composition: Composition, frame: RenderFrame) => void;
30
- /**
31
- * 合成销毁时的会调,需要销毁 composition 中对应的资源
32
- * @param composition
33
- */
34
- onCompositionDestroyed: (composition: Composition) => void;
35
- /**
36
- * 合成更新时的回调,每帧都会进行调用,在每个元素调用 onUpdate 之前被触发
37
- * @param composition
38
- * @param dt 更新的毫秒
39
- */
40
- onCompositionUpdate: (composition: Composition, dt: number) => void;
41
- }
3
+ import type { Engine } from '../engine';
42
4
  export interface PluginConstructor {
43
- new (): Plugin;
5
+ new (): AbstractPlugin;
44
6
  [key: string]: any;
45
7
  }
46
8
  /**
47
9
  * 抽象插件类
48
10
  * 注册合成不同生命周期的回调函数
49
11
  */
50
- export declare abstract class AbstractPlugin implements Plugin {
12
+ export declare abstract class AbstractPlugin {
51
13
  order: number;
52
14
  name: string;
53
- /***
54
- * loadScene 函数调用的时候会触发此函数,
55
- * 此阶段可以对资源 JSON 进行处理,替换调 JSON 中的数据,或者直接终止加载流程
56
- * 一旦被 reject,加载过程将失败
57
- * @param json 动画资源
58
- * @param options 加载参数
59
- */
60
- static processRawJSON: (json: spec.JSONScene, options: SceneLoadOptions) => Promise<void>;
15
+ initialize(): void;
61
16
  /**
62
17
  * loadScene 函数调用的时候会触发此函数,
63
18
  * 此阶段可以加载插件所需类型资源,并返回原始资源和加载后的资源。
64
- * @param json
19
+ * @param scene
65
20
  * @param options
66
21
  * @returns
67
22
  */
68
- static processAssets: (json: spec.JSONScene, options?: SceneLoadOptions) => Promise<{
69
- assets: spec.AssetBase[];
70
- loadedAssets: unknown[];
71
- }>;
23
+ processAssets(scene: Scene, options?: SceneLoadOptions): Promise<void>;
72
24
  /**
73
25
  * loadScene 函数调用的时候会触发此函数,
74
26
  * 此阶段时,json 中的图片和二进制已经被加载完成,可以对加载好的资源做进一步处理,
75
27
  * 如果 promise 被 reject, loadScene 函数同样会被 reject,表示场景加载失败。
76
28
  * 请记住,整个 load 阶段都不要创建 GL 相关的对象,只创建 JS 对象
77
- * 此阶段晚于 processRawJSON
29
+ * 此阶段晚于 processAssets
78
30
  * @param {Scene} scene
79
31
  * @param {SceneLoadOptions} options
80
32
  */
81
- static prepareResource: (scene: Scene, options: SceneLoadOptions) => Promise<void>;
82
- /**
83
- * 在加载到 JSON 后,就可以进行提前编译
84
- * @param json
85
- * @param player
86
- */
87
- precompile(compositions: spec.CompositionData[], renderer: Renderer): void;
33
+ prepareResource(scene: Scene, options: SceneLoadOptions, engine: Engine): void;
88
34
  onCompositionConstructed(composition: Composition, scene: Scene): void;
89
- onCompositionReset(composition: Composition, frame: RenderFrame): void;
90
35
  onCompositionDestroyed(composition: Composition): void;
91
- onCompositionUpdate(composition: Composition, dt: number): void;
92
36
  }
@@ -1,6 +1,4 @@
1
- import type { SharedShaderWithSource } from './shader';
2
1
  export declare const EFFECTS_COPY_MESH_NAME = "effects-internal-copy";
3
2
  export declare const COPY_MESH_SHADER_ID = "effects-internal-copy-mesh";
4
3
  export declare const COPY_VERTEX_SHADER = "\nprecision highp float;\nattribute vec2 aPos;\nvarying vec2 vTex;\nvoid main(){\n gl_Position = vec4(aPos,0.,1.0);\n vTex = (aPos + vec2(1.0))/2.;\n}";
5
4
  export declare const COPY_FRAGMENT_SHADER = "precision mediump float;\nvarying vec2 vTex;\n\n#ifdef DEPTH_TEXTURE\nuniform sampler2D uDepth;\n#extension GL_EXT_frag_depth : enable\n#endif\nvoid main(){\n #ifdef DEPTH_TEXTURE\n gl_FragDepthEXT = texture2D(uDepth,vTex).r;\n #endif\n}\n";
6
- export declare function createCopyShader(level: number, writeDepth?: boolean): SharedShaderWithSource;
@@ -1,9 +1,10 @@
1
- import type { RenderPassDestroyOptions, RenderPassOptions } from './render-pass';
2
1
  import { RenderPass } from './render-pass';
3
2
  import type { Renderer } from './renderer';
4
3
  export declare class DrawObjectPass extends RenderPass {
5
- constructor(renderer: Renderer, options: RenderPassOptions);
4
+ private useRenderTarget;
5
+ constructor(renderer: Renderer);
6
+ setup(useRenderTarget: boolean): void;
7
+ configure(renderer: Renderer): void;
6
8
  execute(renderer: Renderer): void;
7
- onResize(): void;
8
- dispose(options?: RenderPassDestroyOptions): void;
9
+ onCameraCleanup(renderer: Renderer): void;
9
10
  }
@@ -2,6 +2,7 @@ export * from './create-copy-shader';
2
2
  export * from './render-frame';
3
3
  export * from './renderbuffer';
4
4
  export * from './render-pass';
5
+ export * from './render-target-pool';
5
6
  export * from './shader';
6
7
  export * from './gpu-capability';
7
8
  export * from './mesh';
@@ -1,39 +1,20 @@
1
- import type { RenderPassDestroyOptions, RenderPassOptions } from './render-pass';
1
+ import type { RenderPassDestroyOptions } from './render-pass';
2
2
  import { RenderTargetHandle, RenderPass } from './render-pass';
3
3
  import type { Renderer } from './renderer';
4
- export declare class BloomThresholdPass extends RenderPass {
4
+ export declare class BloomPass extends RenderPass {
5
5
  sceneTextureHandle: RenderTargetHandle;
6
+ private readonly iterationCount;
7
+ private thresholdMaterial;
8
+ private downSampleHMaterial;
9
+ private downSampleVMaterial;
10
+ private upSampleMaterial;
11
+ private tempRTs;
12
+ private thresholdRT;
6
13
  private mainTexture;
7
- private screenMesh;
8
- constructor(renderer: Renderer, option: RenderPassOptions);
9
- configure(renderer: Renderer): void;
10
- execute(renderer: Renderer): void;
11
- private onResize;
12
- dispose(options?: RenderPassDestroyOptions): void;
13
- }
14
- export declare class HQGaussianDownSamplePass extends RenderPass {
15
- gaussianResult: RenderTargetHandle;
16
- private mainTexture;
17
- private screenMesh;
18
- private readonly type;
19
- private readonly level;
20
- constructor(renderer: Renderer, type: 'V' | 'H', level: number, options: RenderPassOptions);
21
- initialize(renderer: Renderer): RenderPass;
22
- configure(renderer: Renderer): void;
23
- execute(renderer: Renderer): void;
24
- private onResize;
25
- dispose(options?: RenderPassDestroyOptions | undefined): void;
26
- }
27
- export declare class HQGaussianUpSamplePass extends RenderPass {
28
- gaussianDownSampleResult: RenderTargetHandle;
29
- private mainTexture;
30
- private screenMesh;
31
- private readonly level;
32
- constructor(renderer: Renderer, level: number, options: RenderPassOptions);
33
- initialize(renderer: Renderer): RenderPass;
14
+ constructor(renderer: Renderer, iterationCount?: number);
34
15
  configure(renderer: Renderer): void;
35
16
  execute(renderer: Renderer): void;
36
- private onResize;
17
+ onCameraCleanup(renderer: Renderer): void;
37
18
  dispose(options?: RenderPassDestroyOptions): void;
38
19
  }
39
20
  export declare class ToneMappingPass extends RenderPass {
@@ -5,16 +5,11 @@ import { Vector4 } from '@galacean/effects-math/es/core/vector4';
5
5
  import type { vec4 } from '@galacean/effects-specification';
6
6
  import type { Camera } from '../camera';
7
7
  import type { PostProcessVolume, RendererComponent } from '../components';
8
- import type { UniformValue } from '../material';
9
- import { PassTextureCache } from '../paas-texture-cache';
10
8
  import type { Texture } from '../texture';
11
9
  import type { Disposable } from '../utils';
12
10
  import { DestroyOptions } from '../utils';
13
- import type { Mesh } from './mesh';
14
- import type { RenderPass, RenderPassClearAction, RenderPassColorAttachmentOptions, RenderPassDepthStencilAttachment, RenderPassDestroyOptions, RenderPassStoreAction } from './render-pass';
11
+ import type { RenderPass, RenderPassDestroyOptions } from './render-pass';
15
12
  import type { Renderer } from './renderer';
16
- import type { SemanticFunc } from './semantic-map';
17
- import { SemanticMap } from './semantic-map';
18
13
  /**
19
14
  * 渲染数据,保存了当前渲染使用到的数据。
20
15
  */
@@ -32,72 +27,6 @@ export interface RenderingData {
32
27
  */
33
28
  currentPass: RenderPass;
34
29
  }
35
- /**
36
- * RenderPass 信息,记录了 RenderFrame 中 RenderPass 的信息
37
- */
38
- export interface RenderPassInfo {
39
- /**
40
- * 内部包含 Mesh 中最小优先级
41
- */
42
- listStart: number;
43
- /**
44
- * 内部包含 Mesh 中最大优先级
45
- */
46
- listEnd: number;
47
- /**
48
- * 是否绑定 Framebuffer 对象
49
- */
50
- intermedia: boolean;
51
- /**
52
- * RenderPass 对象
53
- */
54
- renderPass: RenderPass;
55
- /**
56
- * 前面的 RenderPass 对象数组
57
- */
58
- prePasses?: {
59
- pass: RenderPass;
60
- destroyOptions?: RenderPassDestroyOptions | boolean;
61
- }[];
62
- /**
63
- * 前一个 RenderPass 对象
64
- */
65
- preRenderPass?: RenderPass;
66
- }
67
- /**
68
- * RenderFrame 内部保存的多 Pass 相关资源
69
- */
70
- export interface RenderFrameResource {
71
- /**
72
- * 纹理对象,用于 Framebuffer 的颜色 Attachment
73
- */
74
- color_a: Texture;
75
- /**
76
- * 纹理对象,用于 Framebuffer 的颜色 Attachment
77
- */
78
- color_b: Texture;
79
- /**
80
- * 拷贝 RenderPass 对象,将前 RenderPass 的渲染结果拷贝到硬件帧缓存中
81
- */
82
- finalCopyRP: RenderPass;
83
- /**
84
- * 资源 RenderPass 对象,为临时生成的 RenderPass 提供 Attachment 资源
85
- */
86
- resRP: RenderPass;
87
- /**
88
- * 深度和蒙版,为临时生成的 RenderPass 提供 Attachment 资源
89
- */
90
- depthStencil?: RenderPassDepthStencilAttachment;
91
- }
92
- /**
93
- * RenderPass 切分时的参数
94
- */
95
- export interface RenderPassSplitOptions {
96
- attachments?: RenderPassColorAttachmentOptions[];
97
- storeAction?: RenderPassStoreAction;
98
- prePasses?: RenderPass[];
99
- }
100
- export declare const RENDER_PASS_NAME_PREFIX = "_effects_default_";
101
30
  /**
102
31
  * 抽象 RenderFrame 选项
103
32
  */
@@ -107,23 +36,6 @@ export interface RenderFrameOptions {
107
36
  * 编辑器整体变换,Player 开发不需要关注
108
37
  */
109
38
  editorTransform?: vec4;
110
- /**
111
- * 是否每次渲染时清除 RenderFrame 颜色缓存
112
- */
113
- keepColorBuffer?: boolean;
114
- /**
115
- * 渲染视口大小
116
- */
117
- viewport?: vec4;
118
- /**
119
- * RenderFrame 范围内共用的 Shader Uniform 变量,
120
- * 以及多 Pass 渲染时 ColorAttachment 关联到后面的 Shader Uniform 上
121
- */
122
- semantics?: Record<string, UniformValue | SemanticFunc>;
123
- /**
124
- * 每个 RenderPass 使用前进行的 Clear 操作
125
- */
126
- clearAction?: RenderPassClearAction;
127
39
  /**
128
40
  * 后处理渲染配置
129
41
  */
@@ -150,45 +62,32 @@ export declare class RenderFrame implements Disposable {
150
62
  * 当前使用的全部 RenderPass
151
63
  */
152
64
  _renderPasses: RenderPass[];
153
- /**
154
- * RenderPass 清除帧缓存操作
155
- */
156
- clearAction: RenderPassClearAction;
157
- /**
158
- * 滤镜中 RenderPass 用到的纹理缓存器
159
- */
160
- passTextureCache: PassTextureCache;
161
65
  /**
162
66
  * 渲染时的相机
163
67
  */
164
68
  camera: Camera;
165
- /**
166
- * Composition中用到的所有纹理缓存
167
- */
168
- cachedTextures: Texture[];
169
69
  /**
170
70
  * 存放后处理的属性设置
171
71
  */
172
72
  globalVolume?: PostProcessVolume;
173
73
  renderer: Renderer;
174
- keepColorBuffer?: boolean;
175
74
  editorTransform: Vector4;
176
- renderQueue: RendererComponent[];
177
75
  /**
178
76
  * 名称
179
77
  */
180
78
  readonly name: string;
181
- /**
182
- * 公用 Uniform 变量表
183
- */
184
- readonly semantics: SemanticMap;
185
79
  readonly globalUniforms: GlobalUniforms;
186
- protected destroyed: boolean;
187
- protected renderPassInfoMap: WeakMap<RenderPass, RenderPassInfo>;
80
+ private disposed;
188
81
  private drawObjectPass;
82
+ private postProcessingEnabled;
83
+ private enableHDR;
189
84
  constructor(options: RenderFrameOptions);
190
85
  get renderPasses(): RenderPass[];
191
- get isDestroyed(): boolean;
86
+ get isDisposed(): boolean;
87
+ /**
88
+ * 设置 RenderPasses 参数,此函数每帧调用一次
89
+ */
90
+ setup(): void;
192
91
  /**
193
92
  * 根据 Mesh 优先级添加到 RenderPass
194
93
  * @param mesh - 要添加的 Mesh 对象
@@ -205,13 +104,6 @@ export declare class RenderFrame implements Disposable {
205
104
  * @param options - 可以有选择销毁一些对象
206
105
  */
207
106
  dispose(options?: RenderFrameDestroyOptions): void;
208
- /**
209
- * 查找 Mesh 所在的 RenderPass 索引,没找到是-1
210
- * @param mesh - 需要查找的 Mesh
211
- */
212
- findMeshRenderPassIndex(mesh: Mesh): number;
213
- protected addToRenderPass(renderPass: RenderPass, mesh: Mesh): void;
214
- protected resetClearActions(): void;
215
107
  /**
216
108
  * 设置 RenderPass 数组,直接修改内部的 RenderPass 数组
217
109
  * @param passes - RenderPass 数组
@@ -229,7 +121,6 @@ export declare class RenderFrame implements Disposable {
229
121
  removeRenderPass(pass: RenderPass): void;
230
122
  }
231
123
  export declare function getTextureSize(tex?: Texture): Vector2;
232
- export declare function findPreviousRenderPass(renderPasses: RenderPass[], renderPass: RenderPass): RenderPass | undefined;
233
124
  export declare class GlobalUniforms {
234
125
  floats: Record<string, number>;
235
126
  ints: Record<string, number>;
@@ -1,14 +1,13 @@
1
1
  import type * as spec from '@galacean/effects-specification';
2
2
  import type { vec4 } from '@galacean/effects-specification';
3
- import type { Camera } from '../camera';
4
3
  import type { RendererComponent } from '../components';
5
4
  import type { Engine } from '../engine';
6
5
  import type { MeshDestroyOptions, Renderer } from '../render';
7
- import { Framebuffer } from '../render';
6
+ import type { Framebuffer } from '../render';
8
7
  import type { TextureConfigOptions, TextureLoadAction } from '../texture';
9
8
  import { Texture } from '../texture';
10
9
  import type { Disposable, Sortable } from '../utils';
11
- import { DestroyOptions, OrderType } from '../utils';
10
+ import { DestroyOptions } from '../utils';
12
11
  import type { Renderbuffer } from './renderbuffer';
13
12
  export declare const RenderPassPriorityPrepare = 0;
14
13
  export declare const RenderPassPriorityNormal = 1000;
@@ -97,11 +96,6 @@ export declare class RenderTargetHandle implements Disposable {
97
96
  get width(): number;
98
97
  get height(): number;
99
98
  }
100
- export interface RenderPassDepthStencilAttachment {
101
- readonly storageType: RenderPassAttachmentStorageType;
102
- readonly storage?: Renderbuffer;
103
- readonly texture?: Texture;
104
- }
105
99
  export interface RenderPassDepthStencilAttachmentOptions {
106
100
  storageType: RenderPassAttachmentStorageType;
107
101
  storage?: Renderbuffer;
@@ -133,10 +127,6 @@ export type RenderPassDestroyOptions = {
133
127
  colorAttachment?: RenderPassDestroyAttachmentType;
134
128
  depthStencilAttachment?: RenderPassDestroyAttachmentType;
135
129
  };
136
- export interface RenderPassOptions {
137
- attachments?: RenderPassColorAttachmentOptions[];
138
- depthStencilAttachment?: RenderPassDepthStencilAttachmentOptions;
139
- }
140
130
  /**
141
131
  * RenderPass 抽象类
142
132
  */
@@ -145,11 +135,6 @@ export declare class RenderPass implements Disposable, Sortable {
145
135
  * 优先级
146
136
  */
147
137
  priority: number;
148
- /**
149
- * ColorAttachment 数组
150
- */
151
- attachments: RenderTargetHandle[];
152
- framebuffer: Framebuffer | null;
153
138
  /**
154
139
  * 名称
155
140
  */
@@ -158,36 +143,14 @@ export declare class RenderPass implements Disposable, Sortable {
158
143
  * 包含的 Mesh 列表
159
144
  */
160
145
  readonly meshes: RendererComponent[];
161
- /**
162
- * Mesh 渲染顺序,按照优先级升序或降序
163
- */
164
- readonly meshOrder: OrderType;
165
- /**
166
- * 相机
167
- */
168
- readonly camera?: Camera;
169
- /**
170
- * 深度和蒙版 Attachment 类型,注意区分纹理和 Renderbuffer
171
- */
172
- readonly depthStencilType: RenderPassAttachmentStorageType;
173
- /**
174
- * 渲染后清除缓冲区操作,iOS 上有性能提升, 默认关闭
175
- */
176
- readonly storeAction: RenderPassStoreAction;
177
146
  protected disposed: boolean;
178
- protected options: RenderPassOptions;
147
+ protected framebuffer: Framebuffer | null;
179
148
  protected renderer: Renderer;
180
- private initialized;
181
- private depthTexture?;
182
- private stencilTexture?;
183
- constructor(renderer: Renderer, options: RenderPassOptions);
184
- get isDestroyed(): boolean;
149
+ constructor(renderer: Renderer);
150
+ get isDisposed(): boolean;
185
151
  get viewport(): spec.vec4;
186
- get stencilAttachment(): RenderPassDepthStencilAttachment | undefined;
187
- get depthAttachment(): RenderPassDepthStencilAttachment | undefined;
188
152
  addMesh(mesh: RendererComponent): void;
189
153
  removeMesh(mesh: RendererComponent): void;
190
- setMeshes(meshes: RendererComponent[]): RendererComponent[];
191
154
  /**
192
155
  * 配置当前pass的RT,在每帧渲染前调用
193
156
  */
@@ -197,25 +160,13 @@ export declare class RenderPass implements Disposable, Sortable {
197
160
  */
198
161
  execute(renderer: Renderer): void;
199
162
  /**
200
- * 每帧所有的pass渲染完后调用,通常用于清空临时的RT资源
163
+ * 每帧所有的pass渲染完后调用,用于清空临时的RT资源
201
164
  */
202
- frameCleanup(renderer: Renderer): void;
203
- private _resetAttachments;
165
+ onCameraCleanup(renderer: Renderer): void;
204
166
  /**
205
167
  * 获取当前视口大小,格式:[x偏移,y偏移,宽度,高度]
206
168
  */
207
169
  getViewport(): vec4;
208
- /**
209
- * 获取深度 Attachment,可能没有
210
- */
211
- getDepthAttachment(): RenderPassDepthStencilAttachment | undefined;
212
- /**
213
- * 获取蒙版 Attachment,可能没有
214
- */
215
- getStencilAttachment(): RenderPassDepthStencilAttachment | undefined;
216
- private getDepthTexture;
217
- private getStencilTexture;
218
- initialize(renderer: Renderer): RenderPass;
219
170
  /**
220
171
  * 销毁 RenderPass
221
172
  * @param options - 有选择销毁内部对象
@@ -0,0 +1,22 @@
1
+ import type { Engine } from '../engine';
2
+ import { FilterMode, Framebuffer, RenderTextureFormat } from './framebuffer';
3
+ export declare class RenderTargetPool {
4
+ engine: Engine;
5
+ private temporaryRTs;
6
+ private currentFrame;
7
+ private readonly maxUnusedFrames;
8
+ constructor(engine: Engine);
9
+ /**
10
+ * 清理 RenderTarget 池
11
+ * @param force - 是否强制清理所有未占用的 RT
12
+ * @param framesOffset - 自定义未使用帧数阈值,-1 表示使用默认值
13
+ */
14
+ flush(force?: boolean, framesOffset?: number): void;
15
+ get(name: string, width: number, height: number, depthBuffer?: number, filter?: FilterMode, format?: RenderTextureFormat): Framebuffer;
16
+ /**
17
+ * 释放 RenderTarget,使其可以被复用
18
+ * @param rt - 要释放的 Framebuffer
19
+ */
20
+ release(rt: Framebuffer): void;
21
+ dispose(): void;
22
+ }
@@ -6,16 +6,19 @@ import type { LostHandler, RestoreHandler } from '../utils';
6
6
  import type { FilterMode, Framebuffer, RenderTextureFormat } from './framebuffer';
7
7
  import type { Geometry } from './geometry';
8
8
  import type { RenderFrame, RenderingData } from './render-frame';
9
- import type { RenderPassClearAction, RenderPassStoreAction } from './render-pass';
9
+ import type { RenderPassClearAction } from './render-pass';
10
10
  import type { ShaderLibrary } from './shader';
11
+ import { RenderTargetPool } from './render-target-pool';
12
+ import type { Texture } from '../texture';
11
13
  export declare class Renderer implements LostHandler, RestoreHandler {
12
- static create: (engine: Engine) => Renderer;
13
14
  engine: Engine;
15
+ static create: (engine: Engine) => Renderer;
14
16
  /**
15
17
  * 存放渲染需要用到的数据
16
18
  */
17
19
  renderingData: RenderingData;
18
- protected currentFramebuffer: Framebuffer;
20
+ renderTargetPool: RenderTargetPool;
21
+ protected currentFramebuffer: Framebuffer | null;
19
22
  constructor(engine: Engine);
20
23
  setGlobalFloat(name: string, value: number): void;
21
24
  setGlobalInt(name: string, value: number): void;
@@ -26,7 +29,7 @@ export declare class Renderer implements LostHandler, RestoreHandler {
26
29
  setFramebuffer(framebuffer: Framebuffer | null): void;
27
30
  setViewport(x: number, y: number, width: number, height: number): void;
28
31
  resize(canvasWidth: number, canvasHeight: number): void;
29
- clear(action: RenderPassClearAction | RenderPassStoreAction): void;
32
+ clear(action: RenderPassClearAction): void;
30
33
  getWidth(): number;
31
34
  getHeight(): number;
32
35
  /**
@@ -47,6 +50,14 @@ export declare class Renderer implements LostHandler, RestoreHandler {
47
50
  renderRenderFrame(renderFrame: RenderFrame): void;
48
51
  renderMeshes(meshes: RendererComponent[]): void;
49
52
  drawGeometry(geometry: Geometry, matrix: Matrix4, material: Material, subMeshIndex?: number): void;
50
- getTemporaryRT(name: string, width: number, height: number, depthBuffer: number, filter: FilterMode, format: RenderTextureFormat): Framebuffer | null;
53
+ getTemporaryRT(name: string, width: number, height: number, depthBuffer: number, filter: FilterMode, format: RenderTextureFormat): Framebuffer;
54
+ releaseTemporaryRT(rt: Framebuffer): void;
55
+ /**
56
+ * 将源纹理复制到目标 Framebuffer,可使用自定义材质进行处理
57
+ * @param source - 源纹理
58
+ * @param destination - 目标 Framebuffer,如果为 null 则渲染到屏幕
59
+ * @param material - 可选的自定义材质,不传则使用默认复制材质
60
+ */
61
+ blit(source: Texture, destination: Framebuffer | null, material?: Material): void;
51
62
  dispose(): void;
52
63
  }
package/dist/scene.d.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  import type * as spec from '@galacean/effects-specification';
2
2
  import type { Texture } from './texture';
3
- import type { PluginSystem } from './plugin-system';
4
3
  import type { PickEnum } from './utils';
5
4
  export type ImageLike = spec.HTMLImageLike | ArrayBuffer | Texture;
6
5
  export type SceneRenderLevel = PickEnum<spec.RenderLevel, spec.RenderLevel.A | spec.RenderLevel.B | spec.RenderLevel.S>;
@@ -10,9 +9,8 @@ export type SceneRenderLevel = PickEnum<spec.RenderLevel, spec.RenderLevel.A | s
10
9
  export interface Scene {
11
10
  readonly jsonScene: spec.JSONScene;
12
11
  readonly bins: ArrayBuffer[];
13
- readonly pluginSystem: PluginSystem;
14
- readonly renderLevel?: SceneRenderLevel;
15
12
  readonly storage: Record<string, any>;
13
+ renderLevel?: SceneRenderLevel;
16
14
  textureOptions: Record<string, any>[];
17
15
  textures: Texture[];
18
16
  images: ImageLike[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@galacean/effects-core",
3
- "version": "2.8.0-alpha.1",
3
+ "version": "2.8.0-alpha.3",
4
4
  "description": "Galacean Effects runtime core for the web",
5
5
  "module": "./dist/index.mjs",
6
6
  "main": "./dist/index.js",