import 'reflect-metadata';
import { IShaderModuleService } from '../../shader/IShaderModuleService';
import { IRendererService } from '../IRendererService';
import { ILayer } from '../../layer/ILayerService';
import { IPostProcessingPass, PassType } from '../IMultiPassRenderer';
import { ITexture2D } from '../ITexture2D';
import { IUniform } from '../IUniform';
/**
 * 后处理 Pass 基类，通过 PostProcessor 驱动。
 *
 * 约定使用 u_Texture 传递渲染纹理。
 */
export default class BasePostProcessingPass<InitializationOptions = {}> implements IPostProcessingPass<InitializationOptions> {
    protected shaderModuleService: IShaderModuleService;
    protected rendererService: IRendererService;
    protected config: Partial<InitializationOptions> | undefined;
    protected quad: string;
    /**
     * 启用开关
     */
    private enabled;
    /**
     * 是否渲染到屏幕
     */
    private renderToScreen;
    /**
     * 渲染命令
     */
    private model;
    /**
     * 效果名，便于在图层中引用
     */
    private name;
    private optionsToUpdate;
    getName(): string;
    setName(name: string): void;
    getType(): PassType;
    init(layer: ILayer, config?: Partial<InitializationOptions>): void;
    render(layer: ILayer, tex?: ITexture2D): void;
    isEnabled(): boolean;
    setEnabled(enabled: boolean): void;
    setRenderToScreen(renderToScreen: boolean): void;
    updateOptions(config: Partial<InitializationOptions>): void;
    protected setupShaders(): {
        vs: string;
        fs: string;
        uniforms?: {
            [key: string]: IUniform;
        };
    };
    protected convertOptionsToUniforms(options: Partial<InitializationOptions>): {
        [uniformName: string]: IUniform;
    } | void;
}
