UNPKG

@lightningtv/renderer

Version:
69 lines (68 loc) 2.72 kB
import type { Dimensions } from '../../common/CommonTypes.js'; import type { CoreNode } from '../CoreNode.js'; import type { TextureOptions } from '../CoreTextureManager.js'; import type { Stage } from '../Stage.js'; import type { ContextSpy } from '../lib/ContextSpy.js'; import type { RenderCoords } from '../lib/RenderCoords.js'; import type { RectWithValid } from '../lib/utils.js'; import type { CoreShaderProgram } from './CoreShaderProgram.js'; import type { Texture } from '../textures/Texture.js'; import { CoreContextTexture } from './CoreContextTexture.js'; import type { CoreShaderType, CoreShaderNode } from './CoreShaderNode.js'; export interface QuadOptions { width: number; height: number; colorTl: number; colorTr: number; colorBl: number; colorBr: number; texture: Texture | null; textureOptions: TextureOptions | null; zIndex: number; shader: CoreShaderNode | null; alpha: number; clippingRect: RectWithValid; tx: number; ty: number; ta: number; tb: number; tc: number; td: number; renderCoords?: RenderCoords; rtt: boolean; parentHasRenderTexture: boolean; framebufferDimensions: Dimensions; } export interface CoreRendererOptions { stage: Stage; canvas: HTMLCanvasElement | OffscreenCanvas; contextSpy: ContextSpy | null; forceWebGL2: boolean; } export interface BufferInfo { totalUsed: number; totalAvailable: number; } export declare abstract class CoreRenderer { options: CoreRendererOptions; mode: 'webgl' | 'canvas' | undefined; readonly stage: Stage; rttNodes: CoreNode[]; constructor(options: CoreRendererOptions); abstract reset(): void; abstract render(surface?: 'screen' | CoreContextTexture): void; abstract addQuad(quad: QuadOptions): 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 updateClearColor(color: number): void; }