import CompositeNode, { CompositeNodeOutput } from './CompositeNode'; import FullscreenQuadPass from '../FullscreenQuadPass'; import Renderer from '../Renderer'; import FrameBuffer from '../FrameBuffer'; import Texture from '../Texture'; import { FragmentShaderLoose, PickFragmentTextureUniforms } from '../Shader'; import { StringKeyOf } from '../core/type'; /** * Filter node * * * @example * const node = new clay.CompositeFilterNode({ * name: 'fxaa', * shader: FXAACompositeFragment, * inputs: { * texture: { node: 'scene', * pin: 'color' * } * }, * // Multiple outputs is preserved for MRT support in WebGL2.0 * outputs: { * color: { * attachment: clay.FrameBuffer.COLOR_ATTACHMENT0 * parameters: { * format: clay.Texture.RGBA, * width: 512, * height: 512 * }, * // Node will keep the RTT rendered in last frame * keepLastFrame: true, * // Force the node output the RTT rendered in last frame * outputLastFrame: true * } * } * }); * */ declare class FilterCompositeNode> extends CompositeNode, O> { pass: FullscreenQuadPass; constructor(shader: T, name?: string, outputs?: Record); prepare(renderer: Renderer): void; render(renderer: Renderer, inputTextures: Record, outputTextures?: Record, frameBuffer?: FrameBuffer): void; get material(): import("../Material").default, {}, { pos: { type: "vec3"; semantic: "POSITION" | undefined; }; }, { v_Texcoord: { type: "vec2"; }; }, never>, T>>; validateInput(inputName: keyof S & string): boolean; } export default FilterCompositeNode;