import type { Matrix4 } from '@galacean/effects-math/es/core/matrix4'; import { Vector2 } from '@galacean/effects-math/es/core/vector2'; import type { Vector3 } from '@galacean/effects-math/es/core/vector3'; import { Vector4 } from '@galacean/effects-math/es/core/vector4'; import type { vec4 } from '@galacean/effects-specification'; import type { Camera } from '../camera'; import type { PostProcessVolume, RendererComponent } from '../components'; import type { Texture } from '../texture'; import type { Disposable } from '../utils'; import { DestroyOptions } from '../utils'; import type { RenderPass, RenderPassDestroyOptions } from './render-pass'; import type { Renderer } from './renderer'; /** * 渲染数据,保存了当前渲染使用到的数据。 */ export interface RenderingData { /** * 当前渲染使用的 Camera */ currentCamera: Camera; /** * 当前渲染的 RenderFrame */ currentFrame: RenderFrame; /** * 当前渲染的 RenderPass */ currentPass: RenderPass; } /** * 抽象 RenderFrame 选项 */ export interface RenderFrameOptions { camera: Camera; /** * 编辑器整体变换,Player 开发不需要关注 */ editorTransform?: vec4; /** * 后处理渲染配置 */ globalVolume?: PostProcessVolume; /** * 后处理是否开启 */ postProcessingEnabled?: boolean; /** * 名称 */ name?: string; renderer: Renderer; } export type RenderFrameDestroyOptions = { passes?: RenderPassDestroyOptions | DestroyOptions.keep; semantics?: DestroyOptions; }; /** * RenderFrame 抽象类 */ export declare class RenderFrame implements Disposable { /** * 当前使用的全部 RenderPass */ _renderPasses: RenderPass[]; /** * 渲染时的相机 */ camera: Camera; /** * 存放后处理的属性设置 */ globalVolume?: PostProcessVolume; renderer: Renderer; editorTransform: Vector4; /** * 名称 */ readonly name: string; readonly globalUniforms: GlobalUniforms; private disposed; private drawObjectPass; private postProcessingEnabled; private enableHDR; constructor(options: RenderFrameOptions); get renderPasses(): RenderPass[]; get isDisposed(): boolean; /** * 设置 RenderPasses 参数,此函数每帧调用一次 */ setup(): void; /** * 根据 Mesh 优先级添加到 RenderPass * @param mesh - 要添加的 Mesh 对象 */ addMeshToDefaultRenderPass(mesh: RendererComponent): void; /** * 把 Mesh 从 RenderPass 中移除, * 如果 renderPass 中没有 mesh,此 renderPass 会被删除 * @param mesh - 要删除的 Mesh 对象 */ removeMeshFromDefaultRenderPass(mesh: RendererComponent): void; /** * 销毁 RenderFrame * @param options - 可以有选择销毁一些对象 */ dispose(options?: RenderFrameDestroyOptions): void; /** * 设置 RenderPass 数组,直接修改内部的 RenderPass 数组 * @param passes - RenderPass 数组 */ setRenderPasses(passes: RenderPass[]): void; /** * 添加 RenderPass * @param pass - 需要添加的 RenderPass */ addRenderPass(pass: RenderPass): void; /** * 移除 RenderPass * @param pass - 需要移除的 RenderPass */ removeRenderPass(pass: RenderPass): void; } export declare function getTextureSize(tex?: Texture): Vector2; export declare class GlobalUniforms { floats: Record; ints: Record; vector3s: Record; vector4s: Record; matrices: Record; samplers: string[]; uniforms: string[]; }