import { Camera } from "../Camera";
import { CameraClearFlags } from "../enums/CameraClearFlags";
import { TextureCubeFace } from "../texture";
import { RenderContext } from "./RenderContext";
import { RenderElement } from "./RenderElement";
/**
 * Basic render pipeline.
 */
export declare class BasicRenderPipeline {
    private _camera;
    private _lastCanvasSize;
    private _internalColorTarget;
    private _cascadedShadowCasterPass;
    private _depthOnlyPass;
    private _saoPass;
    private _opaqueTexturePass;
    private _finalPass;
    private _copyBackgroundTexture;
    private _canUseBlitFrameBuffer;
    private _shouldCopyBackgroundColor;
    /**
     * Create a basic render pipeline.
     * @param camera - Camera
     */
    constructor(camera: Camera);
    /**
     * Destroy internal resources.
     */
    destroy(): void;
    /**
     * Perform scene rendering.
     * @param context - Render context
     * @param cubeFace - Render surface of cube texture
     * @param mipLevel - Set mip level the data want to write
     * @param ignoreClear - Ignore clear flag
     */
    render(context: RenderContext, cubeFace?: TextureCubeFace, mipLevel?: number, ignoreClear?: CameraClearFlags): void;
    private _drawRenderPass;
    /**
     * Push render data to render queue.
     * @param context - Render context
     * @param renderElement - Render element
     */
    pushRenderElement(context: RenderContext, renderElement: RenderElement): void;
    private _pushRenderElementByType;
    private _drawBackgroundTexture;
    private _prepareWorldRender;
    private _prepareUIRender;
}
export declare enum RenderQueueFlags {
    None = 0,
    Opaque = 1,
    AlphaTest = 2,
    Transparent = 4,
    All = 7
}
