@lightningjs/renderer
Version:
Lightning 3 Renderer
42 lines (41 loc) • 2.04 kB
TypeScript
import type { CoreNode } from '../CoreNode.js';
import type { Stage } from '../Stage.js';
import type { CoreShaderProgram } from './CoreShaderProgram.js';
import type { Texture, TextureCoords } from '../textures/Texture.js';
import { CoreContextTexture } from './CoreContextTexture.js';
import type { CoreShaderType, CoreShaderNode } from './CoreShaderNode.js';
export interface BufferInfo {
totalUsed: number;
totalAvailable: number;
}
export declare abstract class CoreRenderer {
mode: 'webgl' | 'canvas' | undefined;
defaultTextureCoords: TextureCoords | undefined;
readonly stage: Stage;
rttNodes: CoreNode[];
constructor(stage: Stage);
abstract reset(): void;
abstract render(surface?: 'screen' | CoreContextTexture): void;
abstract addQuad(node: CoreNode): void;
abstract createCtxTexture(textureSource: Texture): CoreContextTexture;
abstract createShaderProgram(shaderConfig: Readonly<CoreShaderType>, props?: Record<string, unknown>): CoreShaderProgram | null;
abstract createShaderNode(shaderKey: string, shaderType: Readonly<CoreShaderType>, props?: Record<string, unknown>, program?: CoreShaderProgram): CoreShaderNode;
abstract supportsShaderType(shaderType: Readonly<CoreShaderType>): boolean;
abstract getDefaultShaderNode(): CoreShaderNode | null;
abstract get renderToTextureActive(): boolean;
abstract get activeRttNode(): CoreNode | null;
abstract renderRTTNodes(): void;
abstract removeRTTNode(node: CoreNode): void;
abstract renderToTexture(node: CoreNode): void;
abstract getBufferInfo(): BufferInfo | null;
abstract getQuadCount(): number | null;
abstract updateViewport(): void;
abstract updateClearColor(color: number): void;
abstract destroy(): void;
getTextureCoords?(node: CoreNode): TextureCoords | undefined;
/**
* Delete a GPU buffer previously allocated by this renderer.
* No-op for renderers that do not use WebGL buffers (e.g. Canvas).
*/
deleteBuffer(_buffer: WebGLBuffer): void;
}