@lightningjs/renderer
Version:
Lightning 3 Renderer
83 lines (82 loc) • 4.74 kB
TypeScript
import type { ExtractProps } from './CoreTextureManager.js';
import type { CoreRenderer } from './renderers/CoreRenderer.js';
import type { CoreShader } from './renderers/CoreShader.js';
import { DefaultShader } from './renderers/webgl/shaders/DefaultShader.js';
import { DefaultShaderBatched } from './renderers/webgl/shaders/DefaultShaderBatched.js';
import { DynamicShader, type DynamicShaderProps } from './renderers/webgl/shaders/DynamicShader.js';
import { RoundedRectangle } from './renderers/webgl/shaders/RoundedRectangle.js';
import { SdfShader } from './renderers/webgl/shaders/SdfShader.js';
import { RadiusEffect } from './renderers/webgl/shaders/effects/RadiusEffect.js';
import { BorderEffect } from './renderers/webgl/shaders/effects/BorderEffect.js';
import { LinearGradientEffect, type LinearGradientEffectProps } from './renderers/webgl/shaders/effects/LinearGradientEffect.js';
import { GrayscaleEffect, type GrayscaleEffectProps } from './renderers/webgl/shaders/effects/GrayscaleEffect.js';
import { BorderRightEffect } from './renderers/webgl/shaders/effects/BorderRightEffect.js';
import { BorderTopEffect } from './renderers/webgl/shaders/effects/BorderTopEffect.js';
import { BorderBottomEffect } from './renderers/webgl/shaders/effects/BorderBottomEffect.js';
import { BorderLeftEffect } from './renderers/webgl/shaders/effects/BorderLeftEffect.js';
import { GlitchEffect, type GlitchEffectProps } from './renderers/webgl/shaders/effects/GlitchEffect.js';
import { FadeOutEffect, type FadeOutEffectProps } from './renderers/webgl/shaders/effects/FadeOutEffect.js';
import { RadialGradientEffect, type RadialGradientEffectProps } from './renderers/webgl/shaders/effects/RadialGradientEffect.js';
import { RadialProgressEffect, type RadialProgressEffectProps } from './renderers/webgl/shaders/effects/RadialProgressEffect.js';
import { HolePunchEffect, type HolePunchEffectProps } from './renderers/webgl/shaders/effects/HolePunchEffect.js';
import { UnsupportedShader } from './renderers/canvas/shaders/UnsupportedShader.js';
import { ShaderController } from '../main-api/ShaderController.js';
import { DynamicShaderController, type DynamicEffects } from '../main-api/DynamicShaderController.js';
export type { FadeOutEffectProps };
export type { LinearGradientEffectProps };
export type { RadialGradientEffectProps };
export type { GrayscaleEffectProps };
export type { GlitchEffectProps };
export type { RadialProgressEffectProps };
export type { HolePunchEffectProps };
export interface ShaderMap {
DefaultShader: typeof DefaultShader;
DefaultShaderBatched: typeof DefaultShaderBatched;
RoundedRectangle: typeof RoundedRectangle;
DynamicShader: typeof DynamicShader;
SdfShader: typeof SdfShader;
UnsupportedShader: typeof UnsupportedShader;
}
export interface EffectMap {
radius: typeof RadiusEffect;
border: typeof BorderEffect;
borderBottom: typeof BorderBottomEffect;
borderLeft: typeof BorderLeftEffect;
borderRight: typeof BorderRightEffect;
borderTop: typeof BorderTopEffect;
fadeOut: typeof FadeOutEffect;
linearGradient: typeof LinearGradientEffect;
radialGradient: typeof RadialGradientEffect;
grayscale: typeof GrayscaleEffect;
glitch: typeof GlitchEffect;
radialProgress: typeof RadialProgressEffect;
holePunch: typeof HolePunchEffect;
}
export type EffectProps = FadeOutEffectProps | LinearGradientEffectProps | RadialGradientEffectProps | GrayscaleEffectProps | GlitchEffectProps | RadialProgressEffectProps | HolePunchEffectProps;
export declare class CoreShaderManager {
protected shCache: Map<string, InstanceType<ShaderMap[keyof ShaderMap]>>;
protected shConstructors: Partial<ShaderMap>;
protected attachedShader: CoreShader | null;
protected effectConstructors: Partial<EffectMap>;
renderer: CoreRenderer;
constructor();
registerShaderType<Type extends keyof ShaderMap>(shType: Type, shClass: ShaderMap[Type]): void;
registerEffectType<Type extends keyof EffectMap>(effectType: Type, effectClass: EffectMap[Type]): void;
getRegisteredEffects(): Partial<EffectMap>;
getRegisteredShaders(): Partial<ShaderMap>;
/**
* Loads a shader (if not already loaded) and returns a controller for it.
*
* @param shType
* @param props
* @returns
*/
loadShader<Type extends keyof ShaderMap>(shType: Type, props?: ExtractProps<ShaderMap[Type]>): ShaderController<Type>;
loadDynamicShader<T extends DynamicEffects<[...{
name?: string;
type: keyof EffectMap;
}[]]>>(props: DynamicShaderProps): DynamicShaderController<T>;
private _createShaderCtr;
private _createDynShaderCtr;
useShader(shader: CoreShader): void;
}