UNPKG

@scribehow/shaders

Version:

WebGL shaders used across various Scribe surfaces on web.

65 lines (60 loc) 1.87 kB
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 };