import type FrameBuffer from '../../FrameBuffer'; import type Renderer from '../../Renderer'; import type Texture from '../../Texture'; import Texture2D from '../../Texture2D'; import CompositeNode from '../CompositeNode'; import { TexturePoolParameters } from '../TexturePool'; import type RenderGraph from './RenderGraph'; interface RenderGraphNodeLink { node: RenderGraphNode; pin: string; prevFrame?: boolean; } declare class RenderGraphNode { private _rendering; private _rendered; /** * Input links, will be updated by the graph * @example: * inputName: { * node: someNode, * pin: 'xxxx' * } */ protected _inputs: Record; /** * Output links, will be updated by the graph * @example: * outputName: [{ * node: someNode, * pin: 'xxxx' * }] */ protected _outputs: Record; private _prevOutputTextures; private _outputTextures; private _persistedTextures; private _needsKeepPrevFrame; private _outputRefCount; private _prevOutputRefCount; private _compositeNode; private _renderGraph; private _textureParams; private _inLoop; constructor(compositeNode: CompositeNode, renderGraph: RenderGraph); getTextureParams(outputName: string, renderer: Renderer): TexturePoolParameters; /** * Find the most large input texture to inherit. */ private _deriveTextureParams; getOutputTexture(renderer: Renderer, outputPin: string, usePrevFrame?: boolean): Texture2D | undefined; hasOutput(): boolean; isEndNode(): boolean | undefined; render(renderer: Renderer, finalFrameBuffer?: FrameBuffer): void; private _doRender; addLinkFrom(inputPinName: string, fromNode: RenderGraphNode, outputPinName: string, usePrevFrame: boolean | undefined): void; beforeUpdate(): void; beforeRender(): void; afterRender(): void; outputLinkReleased(link: RenderGraphNodeLink, texture: Texture): void; private _getOutputInfo; } export default RenderGraphNode;