import { Scene, WebGLRenderer, PerspectiveCamera } from 'three'; import type { Texture } from 'three'; import type { VzFormat } from '@vizor-vr/shared'; import type { PlayerConfig } from '@vizor-vr/shared'; import type { PlayerState } from '../core/player-state.js'; import type { StereoMode } from '@vizor-vr/shared'; import type { IProjection } from './projections/projection.js'; import { CameraController } from './camera-controller.js'; import type { AudioManager } from '../audio/audio-manager.js'; /** * Main renderer facade. * Manages the Three.js scene, camera, projection, and animation loop. */ export declare class VzRenderer { private scene; private renderer; private camera; private cameraController; private projection; private videoTexture; private audioManager; private state; private config; private canvas; private isRunning; private containerEl; private intersectionObserver; private isVisible; private fpsHistory; private lastFrameTime; constructor(shadowRoot: ShadowRoot, containerEl: HTMLElement, state: PlayerState, config: PlayerConfig); /** Set up the projection and texture for a video element */ setupVideo(videoElement: HTMLVideoElement, format: VzFormat): void; /** Set up the projection and texture for an image */ setupImage(texture: Texture, format: VzFormat): void; /** * Load a compressed KTX2 texture (optional, GPU-compressed). * Falls back gracefully if KTX2Loader is not available. */ loadCompressedTexture(url: string, format: VzFormat): Promise; /** Start the animation loop */ start(): void; /** Stop the animation loop */ stop(): void; /** Handle container resize */ resize(): void; /** Get the WebGL renderer (for WebXR integration) */ getThreeRenderer(): WebGLRenderer; /** Get the camera (for WebXR integration) */ getCamera(): PerspectiveCamera; /** Get the camera controller */ getCameraController(): CameraController; /** Get the Three.js scene (for hotspot integration) */ getScene(): Scene; /** Set the audio manager for spatial audio orientation updates */ setAudioManager(manager: AudioManager): void; /** Clean up all GPU resources */ dispose(): void; /** Set a custom projection (for cinema mode) */ setCustomProjection(projection: IProjection, texture: Texture, stereoMode: StereoMode): void; /** Dispose all meshes, materials, and textures in the scene */ private disposeSceneChildren; private setProjection; private createProjection; private tick; /** * Adaptive quality: adjust pixel ratio based on recent FPS. * Drop at <30fps, increase at >55fps. Checked every 60 frames. */ private adaptPixelRatio; } //# sourceMappingURL=renderer.d.ts.map