import type { ILayer } from '../../layer/ILayerService'; import type { IFramebuffer } from '../IFramebuffer'; import type { IPostProcessingPass, IPostProcessor } from '../IMultiPassRenderer'; import type { IRendererService } from '../IRendererService'; import type { ITexture2D } from '../ITexture2D'; /** * ported from Three.js EffectComposer * 后处理负责 pingpong read/write framebuffer,最后一个 pass 默认输出到屏幕 */ export default class PostProcessor implements IPostProcessor { protected readonly rendererService: IRendererService; constructor(rendererService: IRendererService); private passes; private readFBO; private writeFBO; getReadFBO(): IFramebuffer; getWriteFBO(): IFramebuffer; /** * 从当前的 framebuffer 中获取贴图 * @returns */ getCurrentFBOTex(): ITexture2D; /** * 从 readFBO 中获取贴图 * @returns */ getReadFBOTex(): Promise; renderBloomPass(layer: ILayer, pass: IPostProcessingPass): Promise; render(layer: ILayer): Promise; resize(width: number, height: number): void; add(pass: IPostProcessingPass, layer: ILayer, config?: Partial): void; insert(pass: IPostProcessingPass, index: number, layer: ILayer, config?: Partial): void; getPostProcessingPassByName(name: string): IPostProcessingPass | undefined; private init; private isLastEnabledPass; private swap; }