modern-canvas
Version:
A JavaScript WebGL rendering engine. only the ESM.
58 lines (57 loc) • 1.83 kB
TypeScript
import type { RenderTargetLike } from '../shared';
import type { GlRenderer } from './GlRenderer';
import type { GlRenderingContext } from './types';
import { StencilMode } from './const';
import { GlSystem } from './system';
export interface StencilState {
stencilWriteMask?: number;
stencilReadMask?: number;
stencilFront?: {
compare: 'always' | 'equal' | 'not-equal';
passOp: 'increment-clamp' | 'decrement-clamp' | 'keep' | 'replace';
};
stencilBack?: {
compare: 'always' | 'equal' | 'not-equal';
passOp: 'increment-clamp' | 'decrement-clamp' | 'keep' | 'replace';
};
}
/** @internal */
export declare const stencilModeMap: StencilState[];
export declare class GlStencilSystem extends GlSystem {
install(renderer: GlRenderer): void;
protected readonly _cache: {
enabled: boolean;
stencilMode: StencilMode;
refCount: number;
};
current: Record<number, {
stencilMode: StencilMode;
refCount: number;
}>;
protected _passOpMap: {
'keep': number;
'zero': number;
'replace': number;
'invert': number;
'increment-clamp': number;
'decrement-clamp': number;
'increment-wrap': number;
'decrement-wrap': number;
};
protected _compareMap: {
'always': number;
'never': number;
'equal': number;
'not-equal': number;
'less': number;
'less-equal': number;
'greater': number;
'greater-equal': number;
};
protected _updateContext(gl: GlRenderingContext): void;
protected _setup(): void;
reset(): void;
protected _updateRenderTarget: (renderTarget: RenderTargetLike | null) => void;
bind(stencilMode: StencilMode, refCount: number): void;
destroy(): void;
}