import { WebGLRenderer, Texture, Vector2, Vector3, Color, Vector4, Quaternion, Matrix3, Matrix4, CubeTexture } from 'three'; export type ThreeUniformType = number | boolean | Vector2 | Vector3 | Float32Array | Array | Color | Vector4 | Quaternion | Matrix3 | Matrix4 | Int32Array | Texture | CubeTexture; /** * Singleton of a WebGlRenderer * @returns */ export declare function getAdhocRenderer(): WebGLRenderer; /** * An instance of SinglePassNode is used to produce a rendering. This could take uniforms such as texture or parameters * and create output of parametric sizes. * A good example of usage is to use two SinglePassNode to create a gaussian blur as the output of a SinglePassNode can be the resulting image as a texture * to be sent to a second pass. */ export default class SinglePassNode { private renderer; private camera; private scene; private renderTarget; private material; private size; /** * * @param width width of the output * @param height height of the output * @param renderer optional existing renderer to use */ constructor(width: number, height: number, renderer?: WebGLRenderer); /** * Get the output texture * @param forceDataTexture Makes a deep copy of the texture data to return a `THREE.DataTexture`. This is much slower * but allows this instance to be disposed while keeping a copy of the texture. * @returns */ getOutputTexture(forceDataTexture?: boolean): Texture | null; /** * Set the size of the output * @param width * @param height * @returns */ setSize(width: number, height: number): void; /** * Set the vertex shader for this pass * @param shader */ setVertexShader(shader: string): void; /** * Set the fragment shader for this pass * @param shader */ setFragmentShader(shader: string): void; /** * Add a uniform * @param name * @param value */ setUniform(name: string, value: ThreeUniformType): void; /** * Dynamically replace some string in a shader (`name`) by others (`value`) * @param name * @param value */ setDefine(name: string, value: string | number | boolean): void; /** * Retrieve the pixel data as a single dimension array of RGBA. * This can be slow because of memory transfer from GPU to CPU */ getPixelData(): Uint8Array; /** * Get the defined size of the output * @returns */ getSize(): Vector2; /** * Run the shader code. The result is then stored internaly in a `THREE.RenderTarget` * @returns */ process(): Texture; /** * Opens the output image in a separate window for debugging purposes. */ debugAsPNG(): void; /** * Free the render target memory */ dispose(): void; }