import type { ILayer } from '../../layer/ILayerService'; import type { IShaderModuleService } from '../../shader/IShaderModuleService'; import type { IPostProcessingPass } from '../IMultiPassRenderer'; import { PassType } from '../IMultiPassRenderer'; import type { IRendererService } from '../IRendererService'; import type { ITexture2D } from '../ITexture2D'; import type { IUniform } from '../IUniform'; /** * 后处理 Pass 基类,通过 PostProcessor 驱动。 * * 约定使用 u_Texture 传递渲染纹理。 */ export default class BasePostProcessingPass implements IPostProcessingPass { protected shaderModuleService: IShaderModuleService; protected rendererService: IRendererService; protected config: Partial | 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): void; render(layer: ILayer, tex?: ITexture2D): void; isEnabled(): boolean; setEnabled(enabled: boolean): void; setRenderToScreen(renderToScreen: boolean): void; updateOptions(config: Partial): void; protected setupShaders(): { vs: string; fs: string; uniforms?: { [key: string]: IUniform; }; }; protected convertOptionsToUniforms(options: Partial): { [uniformName: string]: IUniform; } | void; }