import { Mesh } from 'three'; import type { PerspectiveCamera, Texture } from 'three'; import type { StereoMode } from '@vizor-vr/shared'; import type { IProjection } from './projection.js'; /** * Equi-Angular Cubemap (EAC) projection for 3x2 atlas cubemap content. * Uses the same box geometry and UV atlas layout as CubemapProjection, * but applies a ShaderMaterial with tan() angular correction in the * fragment shader to correct for the equi-angular sampling distortion. * * For stereo content, creates two boxes on different Three.js layers * with UV remapping for side-by-side or top-bottom layouts. */ export declare class EacProjection implements IProjection { private meshes; createMeshes(texture: Texture, stereoMode: StereoMode): Mesh[]; configureCamera(camera: PerspectiveCamera): void; update(_camera: PerspectiveCamera, _time: number): void; dispose(): void; private createBox; /** * Provide each face's atlas tile as a per-vertex `faceRegion` attribute * (xy = tile origin, zw = tile size), leaving geometry.uv as the default * face-local [0,1] coordinates. The fragment shader applies the equi-angular * correction in that face-local space and then maps the result into the tile * — applying the correction in atlas space (the previous approach) is wrong * because the tan() distortion is per-face. * * BoxGeometry has 6 faces, each with 4 vertices (indices face*4 .. face*4+3). * For TB stereo the atlas occupies the top or bottom half of the texture (V * compressed/offset); for SBS, the left or right half (U compressed/offset). */ private setupFaceAtlas; } //# sourceMappingURL=eac-projection.d.ts.map