gl-chromakey
Version:
Chroma key a video/image/canvas element in real time using the GPU
28 lines (27 loc) • 1.18 kB
TypeScript
type ShaderSetterFunction = ((value: number) => void) | ((x: number, y: number) => void) | ((x: number, y: number, z: number) => void) | ((x: number, y: number, z: number, w: number) => void) | ((mat: Float32Array) => void) | (() => void);
interface ExtendedWebGLActiveInfo extends WebGLActiveInfo {
set?: ShaderSetterFunction;
get?: () => unknown;
loc?: WebGLUniformLocation | null;
glTexture?: number;
}
export default class ShaderProgram {
private gl;
private vertexShader;
private fragmentShader;
private program;
uniforms: ExtendedWebGLActiveInfo[];
attributes: string[];
[key: string]: unknown;
location_position: number;
location_texCoord: number;
set_source: (value: number) => void;
set_alpha?: (value: number) => void;
constructor(gl: WebGLRenderingContext, vertexShaderSource: string, fragmentShaderSource: string);
compileShader(source: string, fragment: boolean): WebGLShader;
makeShaderSetter(info: ExtendedWebGLActiveInfo, loc: WebGLUniformLocation): ShaderSetterFunction;
makeShaderGetter(loc: WebGLUniformLocation): () => unknown;
useProgram(): void;
unload(): void;
}
export {};