/** * Copyright (c) 2020-2025 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author David Sehnal * @author Alexander Rose * * Adapted from three.js, The MIT License, Copyright © 2010-2020 three.js authors */ import { Ray3D } from '../../mol-math/geometry/primitives/ray3d.js'; import { Mat4 } from '../../mol-math/linear-algebra.js'; import { ParamDefinition as PD } from '../../mol-util/param-definition.js'; import { Camera, ICamera } from '../camera.js'; import { Viewport } from './util.js'; export declare const StereoCameraParams: { eyeSeparation: PD.Numeric; focus: PD.Numeric; }; export declare const DefaultStereoCameraProps: PD.Values<{ eyeSeparation: PD.Numeric; focus: PD.Numeric; }>; export type StereoCameraProps = PD.Values; export { StereoCamera }; declare class StereoCamera { private parent; readonly left: EyeCamera; readonly right: EyeCamera; get viewport(): Viewport; get viewOffset(): Camera.ViewOffset; private props; constructor(parent: Camera, props?: Partial); setProps(props: Partial): void; update(xr?: { pose: XRViewerPose; layer: XRWebGLLayer; }): void; } declare namespace StereoCamera { function is(camera: Camera | StereoCamera): camera is StereoCamera; } declare class EyeCamera implements ICamera { viewport: Viewport; view: Mat4; projection: Mat4; projectionView: Mat4; inverseProjectionView: Mat4; headRotation: Mat4; viewEye: Mat4; isAsymmetricProjection: boolean; state: Readonly; viewOffset: Readonly; far: number; near: number; fogFar: number; fogNear: number; forceFull: boolean; scale: number; minTargetDistance: number; disabled: boolean; getRay(out: Ray3D, x: number, y: number): Ray3D; }