import { Camera, OrthographicCamera, PerspectiveCamera, Vector3 } from "three"; export interface Bounds { bmin: Vector3; bmax: Vector3; } export type Int8 = "int8"; export type Int16 = "int16"; export type Int32 = "int32"; export type Int64 = "int64"; export type Uint8 = "uint8"; export type Uint16 = "uint16"; export type Uint32 = "uint32"; export type Uint64 = "uint64"; export type Float32 = "float32"; export type Float64 = "float64"; export type NumberType = Int8 | Int16 | Int32 | Uint8 | Uint16 | Uint32 | Float32 | Float64; export type TypedArray = D extends Int8 ? Int8Array : D extends Int16 ? Int16Array : D extends Int32 ? Int32Array : D extends Int64 ? BigInt64Array : D extends Uint8 ? Uint8Array : D extends Uint16 ? Uint16Array : D extends Uint32 ? Uint32Array : D extends Uint64 ? BigUint64Array : D extends Float32 ? Float32Array : D extends Float64 ? Float64Array : never; export declare const ARRAY_CONSTRUCTORS: { int8: Int8ArrayConstructor; int16: Int16ArrayConstructor; int32: Int32ArrayConstructor; int64: BigInt64ArrayConstructor; uint8: Uint8ArrayConstructor; uint16: Uint16ArrayConstructor; uint32: Uint32ArrayConstructor; uint64: BigUint64ArrayConstructor; float32: Float32ArrayConstructor; float64: Float64ArrayConstructor; }; export interface FuseChannel { chIndex: number; lut: Uint8Array; rgbColor: [number, number, number] | number; } /** If `FuseChannel.rgbColor` is this value, it is disabled from fusion. */ export declare const FUSE_DISABLED_RGB_COLOR = 0; /** * Provide options to control the visual appearance of a Volume * @typedef {Object} VolumeChannelDisplayOptions * @property {boolean} enabled array of boolean per channel * @property {Array.} color array of rgb per channel * @property {Array.} specularColor array of rgb per channel * @property {Array.} emissiveColor array of rgb per channel * @property {number} glossiness array of float per channel * @property {boolean} isosurfaceEnabled array of boolean per channel * @property {number} isovalue array of number per channel * @property {number} isosurfaceOpacity array of number per channel * @example let options = { }; */ export interface VolumeChannelDisplayOptions { enabled?: boolean; color?: [number, number, number]; specularColor?: [number, number, number]; emissiveColor?: [number, number, number]; glossiness?: number; isosurfaceEnabled?: boolean; isovalue?: number; isosurfaceOpacity?: number; } export declare enum RenderMode { RAYMARCH = 0, PATHTRACE = 1, SLICE = 2 } /** * Provide options to control the visual appearance of a Volume * @typedef {Object} VolumeDisplayOptions * @property {Array.} channels array of channel display options * @property {number} density * @property {Array.} translation xyz * @property {Array.} rotation xyz angles in radians * @property {number} maskChannelIndex * @property {number} maskAlpha * @property {Array.} clipBounds [xmin, xmax, ymin, ymax, zmin, zmax] all range from 0 to 1 as a percentage of the volume on that axis * @property {Array.} scale xyz voxel size scaling * @property {boolean} maxProjection true or false (ray marching) * @property {number} renderMode 0 for raymarch, 1 for pathtrace * @property {number} shadingMethod 0 for phase, 1 for brdf, 2 for hybrid (path tracer) * @property {Array.} gamma [min, max, scale] * @property {number} primaryRayStepSize in voxels * @property {number} secondaryRayStepSize in voxels * @property {boolean} showBoundingBox true or false * @property {Array.} boundingBoxColor r,g,b for bounding box lines * @example let options = { }; */ export interface VolumeDisplayOptions { channels?: VolumeChannelDisplayOptions[]; density?: number; translation?: [number, number, number]; rotation?: [number, number, number]; maskChannelIndex?: number; maskAlpha?: number; clipBounds?: [number, number, number, number, number, number]; maxProjection?: boolean; renderMode?: RenderMode; shadingMethod?: number; gamma?: [number, number, number]; primaryRayStepSize?: number; secondaryRayStepSize?: number; showBoundingBox?: boolean; boundingBoxColor?: [number, number, number]; } export declare const isOrthographicCamera: (def: Camera) => def is OrthographicCamera; export declare const isPerspectiveCamera: (def: Camera) => def is PerspectiveCamera; export declare const enum ViewportCorner { TOP_LEFT = "top_left", TOP_RIGHT = "top_right", BOTTOM_LEFT = "bottom_left", BOTTOM_RIGHT = "bottom_right" } export declare const isTop: (corner: ViewportCorner) => boolean; export declare const isRight: (corner: ViewportCorner) => boolean; export declare const DATARANGE_UINT8: [number, number];