import { Camera } from '../../../cameras/Camera'; import { Scene } from '../../../core/Scene'; import { WebGLRenderer } from '../../WebGLRenderer'; import { ShaderPass } from '../passes/ShaderPass'; declare abstract class ShaderProgram { private _renderer; private _program; private _passes; protected _scene: Scene | null; protected _camera: Camera | null; protected _started: boolean; protected _initialized: boolean; protected abstract _initialize: () => void; protected abstract _resize: () => void; protected abstract _render: () => void; protected abstract _dispose: () => void; initialize: () => void; resize: () => void; render: (scene: Scene, camera: Camera) => void; dispose: () => void; constructor(renderer: WebGLRenderer, passes: ShaderPass[]); get renderer(): WebGLRenderer; get scene(): Scene | null; get camera(): Camera | null; get program(): WebGLProgram; get passes(): ShaderPass[]; get started(): boolean; protected abstract _getVertexSource(): string; protected abstract _getFragmentSource(): string; } export { ShaderProgram };