import { Mesh } from 'three'; import type { PerspectiveCamera, Texture } from 'three'; import type { StereoMode } from '@vizor-vr/shared'; import type { IProjection } from './projection.js'; /** * Dual fisheye projection for 360 content captured with dual-fisheye cameras * (e.g. Ricoh Theta, Insta360). * * The texture contains two circular fisheye images side by side: * - Left circle: front hemisphere (z >= 0) * - Right circle: back hemisphere (z < 0) * * Uses a full inverted SphereGeometry (like equirectangular) but with a * ShaderMaterial that computes fisheye UV mapping from world-space direction * vectors rather than relying on geometry UVs. * * For stereo content, two spheres are created on separate Three.js layers * with shader uniforms selecting the appropriate texture sub-region per eye. */ /** Clamp a capture-lens angle to the supported 120-250 deg range (default 180). */ export declare function clampLensAngle(deg: number | undefined | null): number; export declare class FisheyeProjection implements IProjection { private meshes; private readonly lensFovRad; constructor(lensAngleDeg?: number); createMeshes(texture: Texture, stereoMode: StereoMode): Mesh[]; configureCamera(camera: PerspectiveCamera): void; update(_camera: PerspectiveCamera, _time: number): void; dispose(): void; private createSphere; } //# sourceMappingURL=fisheye-projection.d.ts.map