@scribehow/shaders
Version:
WebGL shaders used across various Scribe surfaces on web.
65 lines (60 loc) • 1.87 kB
TypeScript
import { BladeController, View } from '@tweakpane/core';
import { Pane, BladeApi } from 'tweakpane';
interface BaseShaderConfig {
[key: string]: any;
}
interface BaseShader {
updateParams(params: Partial<BaseShaderConfig>): void;
reset(): void;
exportConfig(): BaseShaderConfig;
destroy(): void;
getParams(): BaseShaderConfig;
}
interface ShaderDefinition<TConfig extends BaseShaderConfig, TShader extends BaseShader> {
create(canvas: HTMLCanvasElement, config?: Partial<TConfig>): Promise<TShader>;
attachDevtools?(shader: TShader): Promise<DevtoolsInstance>;
}
interface DevtoolsInstance {
pane: Pane;
fpsGraph?: BladeApi<BladeController<View>>;
dispose(): void;
}
interface FluidLightEchoConfig {
enabled: boolean;
offset: number;
radius: number;
frequency: number;
ringSize: number;
strokeOpacity: number;
fillOpacity: number;
animateIn: boolean;
animationDuration: number;
animationDelay: number;
}
interface FluidLightLightWaveConfig {
amplitude: number;
speed: number;
frequency: number;
color1: string;
color2: string;
color3: string;
color4: string;
color5: string;
minFalloff: number;
maxFalloff: number;
}
interface FluidLightConfig extends BaseShaderConfig {
side: number;
background: string;
lightWave: FluidLightLightWaveConfig;
echo: FluidLightEchoConfig;
}
interface FluidLightShader extends BaseShader {
updateParams(params: Partial<FluidLightConfig>): void;
reset(): void;
exportConfig(): FluidLightConfig;
destroy(): void;
getParams(): FluidLightConfig;
}
declare const FluidLight: ShaderDefinition<FluidLightConfig, FluidLightShader>;
export { type DevtoolsInstance, FluidLight, type FluidLightConfig, type FluidLightEchoConfig, type FluidLightLightWaveConfig, type FluidLightShader };