import type { RectangleLike } from '../../../math'; import type { RenderTargetLike, TextureLike } from '../../shared'; import type { GlSystemEvents } from '../system'; import type { GlRenderingContext } from '../types'; import type { WebGLRenderer } from '../WebGLRenderer'; import { Projection2D } from '../../../math'; import { GlSystem } from '../system'; import { GlRenderTarget } from './GlRenderTarget'; export interface GlRenderTargetSystemEvents extends GlSystemEvents { updateRenderTarget: [renderTarget: RenderTargetLike | null]; } export interface GlRenderTargetSystem { on: (event: K, listener: (...args: GlRenderTargetSystemEvents[K]) => void) => this; once: (event: K, listener: (...args: GlRenderTargetSystemEvents[K]) => void) => this; off: (event: K, listener: (...args: GlRenderTargetSystemEvents[K]) => void) => this; emit: (event: K, ...args: GlRenderTargetSystemEvents[K]) => this; } export declare class GlRenderTargetSystem extends GlSystem { install(renderer: WebGLRenderer): void; readonly renderTargets: Map; readonly glRenderTargets: Map; current: RenderTargetLike | null; protected _msaaSamples: number[]; protected _hasMRT: boolean; protected _writeDepthTexture: boolean; projection: Projection2D; /** 4x MSAA, clamped to what the device actually supports (some GPUs cap at 2). */ protected get _sampleCount(): number; protected _updateContext(gl: GlRenderingContext): void; bind(renderTarget: RenderTargetLike | null, frame?: RectangleLike): void; unbind(): void; getGlRenderTarget(renderTarget: RenderTargetLike): GlRenderTarget; protected _createGlRenderTarget(renderTarget: RenderTargetLike): GlRenderTarget; protected _update(renderTarget: RenderTargetLike, glRenderTarget: GlRenderTarget): void; ensureDepthStencil(): void; destroyGpuRenderTarget(gpuRenderTarget: GlRenderTarget): void; resizeGpuRenderTarget(renderTarget: RenderTargetLike): void; protected _initStencil(glRenderTarget: GlRenderTarget): void; protected _resizeStencil(glRenderTarget: GlRenderTarget): void; protected _resizeColorTextures(renderTarget: RenderTargetLike, glRenderTarget: GlRenderTarget): void; finishRenderPass(renderTarget: RenderTargetLike): void; copyToTexture(framebuffer: RenderTargetLike, texture: TextureLike): void; reset(): void; }