UNPKG

@lightningjs/renderer

Version:
42 lines (41 loc) 2.04 kB
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; }