import { IView } from '../..'; import { ISystem } from '../../ISystem'; import { FrameGraphHandle, TextureDescriptor } from './FrameGraphHandle'; import { FrameGraphPass } from './FrameGraphPass'; import { PassNode } from './PassNode'; import { ResourceEntry } from './ResourceEntry'; import { ResourceNode } from './ResourceNode'; /** * ported from FrameGraph implemented by SakuraRender * @see https://zhuanlan.zhihu.com/p/98572442 * @see https://github.com/SaeruHikari/Sakura/blob/RenderGraph/SakuraCore/Source/Framework/GraphicTypes/FrameGraph/SakuraFrameGraph.cpp */ export declare class FrameGraphSystem implements ISystem { passNodes: PassNode[]; resourceNodes: ResourceNode[]; frameGraphPasses: Array>; private readonly engine; execute(views: IView[]): Promise; tearDown(): void; addPass(name: string, setup: (fg: FrameGraphSystem, passNode: PassNode, pass: FrameGraphPass) => void, execute: (fg: FrameGraphSystem, pass: FrameGraphPass, views: IView[]) => Promise, tearDown?: () => void): FrameGraphPass; getPass(name: string): FrameGraphPass | undefined; compile(): void; executePassNodes(views: IView[]): Promise; reset(): void; getResourceNode(r: FrameGraphHandle): ResourceNode; createResourceNode(resourceEntry: ResourceEntry): FrameGraphHandle; createTexture(passNode: PassNode, name: string, descriptor: TextureDescriptor): FrameGraphHandle; createRenderTarget(passNode: PassNode, name: string, descriptor: TextureDescriptor): FrameGraphHandle; present(input: FrameGraphHandle): void; }