import { IEventDispatcher } from '@awayjs/core';
import { ShaderRegisterCache, ShaderRegisterData } from '@awayjs/stage';
import { _Render_RenderableBase } from './_Render_RenderableBase';
import { IShaderBase } from './IShaderBase';
export interface ISimplePass extends IEventDispatcher {
    shader: IShaderBase;
    _includeDependencies(shader: IShaderBase): void;
    _initConstantData(): void;
    /**
     * Sets the material state for the pass that is independent of the rendered object. This needs to be called before
     * calling pass. Before activating a pass, the previously used pass needs to be deactivated.
     * @param stage The Stage object which is currently used for rendering.
     * @param camera The camera from which the scene is viewed.
     * @private
     */
    _activate(): void;
    _setRenderState(renderState: _Render_RenderableBase): void;
    /**
     * Clears the surface state for the pass. This needs to be called before activating another pass.
     * @param stage The Stage used for rendering
     *
     * @private
     */
    _deactivate(): void;
    invalidate(): void;
    dispose(): void;
}
/**
 *
 * @class away.pool.Passes
 */
export interface IPass extends ISimplePass {
    _getVertexCode(registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
    _getFragmentCode(registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
    _getPostAnimationFragmentCode(registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
    _getNormalVertexCode(registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
    _getNormalFragmentCode(registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
}
//# sourceMappingURL=IPass.d.ts.map