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