UNPKG

@lightningjs/renderer

Version:
83 lines (82 loc) 4.74 kB
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; }