import type { UniformValue, UniformSemantic, MaterialRenderStates, SemanticFunc, RenderPassDelegate, RenderPass, Renderer, MaterialDataBlockOptions } from '@predy-js/render-interface'; import type { Composition } from '../player/Composition'; import type { PredyPlayerRenderFrame, RenderPassSplitOptions } from './PredyPlayerRenderFrame'; import type { FilterSpriteVFXItem } from '../plugin/sprite/FilterSpriteVFXItem'; import type { ValueGetter } from '../math/ValueGetter'; import type { ValueType } from '@predy-js/specification'; export type FilterDefineFunc = (comp: Composition, filter: any) => FilterDefine; export type FilterShaderFunc = (renderer: Renderer, filter: any) => FilterShaderDefine[]; export declare function registerFilter(name: string, func: FilterDefineFunc, shaderFunc: FilterShaderFunc): void; export declare function registerFilters(filters: Record): void; export declare function createFilterShaders(filter: any, renderer: Renderer): FilterShaderDefine[]; export declare function createFilter(filter: any, composition: Composition): FilterDefine; export interface ParticleFilterDefine { vertex?: string; fragment?: string; uniforms?: Record>; uniformValues?: Record; } export interface FilterShaderDefine { vertex?: string; fragment?: string; shaderCacheId?: string; ignoreBlend?: boolean; isParticle?: boolean; uniforms?: Array<[type: ValueType, value: any]>; } export interface FilterDefine { particle?: ParticleFilterDefine; mesh: { vertex?: string; fragment?: string; shaderCacheId?: string; dataBlocks?: MaterialDataBlockOptions[]; materialStates?: MaterialRenderStates; variables?: Record UniformValue>>; }; passSplitOptions?: RenderPassSplitOptions; globalSemantics?: Record; renderPassDelegate?: RenderPassDelegate; onItemUpdate?: (dt: number, item: FilterSpriteVFXItem) => void; onItemRemoved?: (item: FilterSpriteVFXItem) => void; onRenderPassCreated?: (rp: RenderPass, renderFrame: PredyPlayerRenderFrame) => void; }