modern-canvas
Version:
A JavaScript WebGL rendering engine. only the ESM.
66 lines (65 loc) • 2.75 kB
TypeScript
import type { GlRenderer, RectangleLike } from '../../core';
import type { Material } from '../resources';
import type { Rectangulable } from './interfaces';
import type { Node } from './Node';
import type { SceneTree } from './SceneTree';
import type { TimelineNodeEvents, TimelineNodeProperties } from './TimelineNode';
import { Aabb2D } from '../../core';
import { TimelineNode } from './TimelineNode';
import { Viewport } from './Viewport';
export type EffectMode = 'before' | 'parent' | 'children' | 'transition';
export interface EffectProperties extends TimelineNodeProperties {
effectMode?: EffectMode;
glsl?: string;
glslSrc?: string;
material?: Material;
}
export interface EffectContext {
redraw?: boolean;
/** parent redraw */
target?: Node;
/** transition */
from?: Viewport;
to?: Viewport;
}
export interface EffectEvents extends TimelineNodeEvents {
updateRect: [];
}
export interface Effect {
on: <K extends keyof EffectEvents & string>(event: K, listener: (...args: EffectEvents[K]) => void) => this;
once: <K extends keyof EffectEvents & string>(event: K, listener: (...args: EffectEvents[K]) => void) => this;
off: <K extends keyof EffectEvents & string>(event: K, listener: (...args: EffectEvents[K]) => void) => this;
emit: <K extends keyof EffectEvents & string>(event: K, ...args: EffectEvents[K]) => this;
}
export declare class Effect extends TimelineNode implements Rectangulable {
material?: Material;
effectMode?: EffectMode;
glsl?: string;
glslSrc?: string;
protected get _effectMode(): EffectMode;
/** Viewports */
readonly viewport1: Viewport;
readonly viewport2: Viewport;
/** Render call */
protected _renderId: number;
protected _renderViewport?: Viewport;
/** Temporary nodes for transition */
protected _previousSibling?: Node;
protected _nextSibling?: Node;
protected _rect: RectangleLike;
constructor(properties?: Partial<EffectProperties>, children?: Node[]);
protected _updateProperty(key: string, value: any, oldValue: any): void;
protected _treeEnter(tree: SceneTree): void;
protected _treeExit(oldTree: SceneTree): void;
protected _onProcessing(): void;
protected _onNodeProcessed(node: Node): void;
getRect(): Aabb2D;
protected _processParent(): void;
protected _processChildren(): void;
_onProcess(delta?: number): void;
protected _renderBefore(renderer: GlRenderer): void;
protected _renderTransition(renderer: GlRenderer): void;
protected _renderParentOrChildren(renderer: GlRenderer): void;
protected _render(renderer: GlRenderer): void;
apply(renderer: GlRenderer, viewport: Viewport, context?: EffectContext): void;
}