import type { Renderer, RenderFrameDestroyOptions, RenderPassColorAttachmentOptions, RenderPassDepthStencilAttachment, RenderPassDestroyOptions, RenderPassOptions, RenderPassStoreAction, SharedShaderWithSource, vec4 } from '@predy-js/render-interface'; import { Mesh, RenderFrame, RenderPass, Texture } from '@predy-js/render-interface'; import { PassTextureCache } from './PassTextureCache'; export declare const COPY_MESH_SHADER_ID = "mars-internal-copy-mesh"; export declare function createCopyShader(webgl2?: boolean, writeDepth?: boolean): SharedShaderWithSource; export interface RenderPassSplitOptions { attachments?: MarsRenderPassColorAttachmentOptions[]; storeAction?: RenderPassStoreAction; prePasses?: { pass: RenderPassOptions; setMeshes?: (meshes: Mesh[]) => Mesh[]; destroyOptions?: RenderPassDestroyOptions | boolean; }[]; } export interface MarsRenderPassColorAttachmentOptions extends RenderPassColorAttachmentOptions { persistent?: boolean; } interface RenderPassInfo { listStart: number; listEnd: number; intermedia: boolean; renderPass: RenderPass; prePasses?: { pass: RenderPass; destroyOptions?: RenderPassDestroyOptions | boolean; }[]; preRenderPass?: RenderPass; } interface PredyPlayerRenderFrameRes { depthStencil: RenderPassDepthStencilAttachment; color_a: Texture; color_b: Texture; finalCopyRP: RenderPass; resRP: RenderPass; } export declare class PredyPlayerRenderFrame extends RenderFrame { readonly emptyTexture: Texture; readonly renderer: Renderer; readonly passTextureCache: PassTextureCache; readonly _renderPassInfoMap: WeakMap; readonly _defRenderPasses: RenderPass[]; readonly _resource: PredyPlayerRenderFrameRes; readonly transparentTexture: Texture; private _editorTransform; private readonly env; keepColorBuffer: boolean; constructor(opt: { renderer: Renderer; editorTransform?: vec4; env?: string; keepColorBuffer?: boolean; }); set editorTransform(v: vec4); get editorTransform(): vec4; private _createResource; private getRPAttachments; /** * 根据Mesh的priority拆分renderPass * @param mesh * @param options */ splitDefaultRenderPassByMesh(mesh: Mesh, options: RenderPassSplitOptions): RenderPass; resetClearActions(): void; findMeshRenderPassIndex(mesh: Mesh): number; createCopyMesh(semantics?: { tex?: string; size?: string; blend?: boolean; depthTexture?: Texture; }): Mesh; private _addToRenderPass; /** * 把Mesh添加到合适的renderPass中 * @param mesh */ addMeshToDefaultRenderPass(mesh: Mesh): void; destroy(options?: RenderFrameDestroyOptions): void; /** * 把Mesh从renderPass中移除,如果renderPass中没有mesh,此renderPass会被删除 * @param mesh */ removeMeshFromDefaultRenderPass(mesh: Mesh): void; private resetRenderPassDefaultAttachment; findPreviousDefaultRenderPass(renderPass: RenderPass): RenderPass | undefined; findPreviousRenderPass(renderPass: RenderPass): RenderPass | undefined; private updateRenderInfo; } export {};