glsl-pipeline
Version:
Prototype complex pipelines directly from a single shader by branching it into stages using React Three Fiber/React.
63 lines (62 loc) • 2.62 kB
TypeScript
import { WebGLRenderTarget, Camera, Scene, Mesh, Clock, Vector2, FloatType, HalfFloatType, UnsignedByteType, WebGLRenderer, ShaderMaterialParameters, Material, PerspectiveCamera, OrthographicCamera } from 'three';
import { Uniform, Buffers, DoubleBuffers, SceneBuffers, GlslPipelineRenderTargets, GlslPipelineClass, Lights } from "../types.js";
declare class GlslPipeline implements GlslPipelineClass {
id: string;
renderer: WebGLRenderer;
defines: {
[key: string]: any;
};
options: ShaderMaterialParameters;
uniforms: Uniform;
frag_src: string | null;
vert_src: string | null;
light: Lights | null;
buffers: Array<Buffers>;
doubleBuffers: Array<DoubleBuffers>;
background: Material | null;
material: Material | null;
sceneBuffer: SceneBuffers | null;
postprocessing: Material | null;
billboard_scene: Scene;
billboard_camera: Camera;
private passThruUniforms;
private passThruShader;
private dirty;
mesh: Mesh;
clock: Clock;
frame: number;
lastTime: number;
time: number;
resolution: Vector2;
floatType: typeof FloatType | typeof HalfFloatType | typeof UnsignedByteType;
constructor(renderer: WebGLRenderer, uniforms?: Uniform, options?: ShaderMaterialParameters);
getBufferSize(name: string): {
width: number;
height: number;
};
load(frag_src: string, vert_src?: string | null): void;
reload(): void;
reset(): void;
branchMaterial(name: string | Array<string>): any;
addBackground(): Material | null;
addBuffer(width: number, height: number): Buffers;
addDoubleBuffer(width: number, height: number): DoubleBuffers;
addPostprocessing(): SceneBuffers;
setLight(light: Lights): void;
setCubemap(hdrUrl: string, scene: Scene): void;
setDefine(name: string, value?: any): void;
createRenderTarget(b: GlslPipelineRenderTargets): WebGLRenderTarget<import("three").Texture>;
updateUniforms(camera?: PerspectiveCamera | OrthographicCamera | null): void;
updateBuffers(): void;
renderBackground(): void;
getBufferTexture(index: number): import("three").Texture | undefined;
getDoubleBufferTexture(index: number): import("three").Texture | undefined;
renderBuffer(index: number): void;
renderDoubleBuffer(index: number): void;
renderMain(): void;
renderScene(scene: Scene, camera: PerspectiveCamera | OrthographicCamera): void;
renderTarget(material: Material, output: WebGLRenderTarget): void;
setSize(width: number, height: number): void;
dispose(): void;
}
export { GlslPipeline };