import { DepthTexture, Group, OrthographicCamera, PerspectiveCamera, Texture, WebGLRenderer } from "three"; import { Volume } from "./index.js"; import Channel from "./Channel.js"; import type { VolumeRenderImpl } from "./VolumeRenderImpl.js"; import type { FuseChannel } from "./types.js"; import { VolumeRenderSettings, SettingsFlags } from "./VolumeRenderSettings.js"; export default class RayMarchedAtlasVolume implements VolumeRenderImpl { private settings; volume: Volume; private geometry; private geometryMesh; private boxHelper; private tickMarksMesh; private geometryTransformNode; private uniforms; private channelData; private emptyPositionTex; /** * Creates a new RayMarchedAtlasVolume. * @param volume The volume that this renderer should render data from. * @param settings Optional settings object. If set, updates the renderer with * the given settings. Otherwise, uses the default VolumeRenderSettings. */ constructor(volume: Volume, settings?: VolumeRenderSettings); updateVolumeDimensions(): void; viewpointMoved(): void; updateSettings(newSettings: VolumeRenderSettings, dirtyFlags?: number | SettingsFlags): void; /** * Creates the geometry mesh and material for rendering the volume. * @param uniforms object containing uniforms to pass to the shader material. * @returns the new geometry and geometry mesh. */ private createGeometry; private createTickMarks; cleanup(): void; doRender(renderer: WebGLRenderer, camera: PerspectiveCamera | OrthographicCamera, depthTexture?: DepthTexture | Texture): void; get3dObject(): Group; private setUniform; updateActiveChannels(channelcolors: FuseChannel[], channeldata: Channel[]): void; setRenderUpdateListener(_listener?: ((iteration: number) => void) | undefined): void; }