Skip to main content

gpu_volume_render/
lib.rs

1//! GPU-accelerated volume rendering with WGPU
2//!
3//! This crate provides GPU-accelerated and CPU-fallback implementations for:
4//! - **DVR** (Direct Volume Rendering) with ray casting
5//! - **MIP** (Maximum Intensity Projection) rendering
6//! - **MPR** (Multi-Planar Reconstruction) slice extraction
7//! - **Marching Cubes** isosurface extraction
8//!
9//! # Feature Flags
10//!
11//! - `gpu` (default): Enable GPU compute via wgpu
12//!
13//! # Architecture
14//!
15//! The crate uses an adaptive backend selection system that automatically chooses
16//! between GPU and CPU execution based on hardware capabilities, volume size,
17//! and runtime performance sampling.
18
19pub mod config;
20pub mod backend;
21pub mod mpr_ops;
22pub mod colormap;
23pub mod window_level;
24pub mod cpu_executor;
25pub mod marching_cubes;
26pub mod mesh;
27
28#[cfg(feature = "gpu")]
29pub mod gpu_executor;
30#[cfg(feature = "gpu")]
31pub mod volume_render;
32#[cfg(feature = "gpu")]
33pub mod gpu_marching_cubes;
34
35// Re-exports
36pub use backend::{
37    BackendSelectionReason, BackendSelector, BackendStatistics,
38    ComputeBackend, GpuCapabilityInfo,
39};
40pub use colormap::Colormap;
41pub use cpu_executor::CpuMprExecutor;
42pub use marching_cubes::{MarchingCubes, Mesh, Triangle, Vertex};
43pub use mesh::{
44    export_to_ply, fill_holes, remove_islands, smooth_mesh,
45    HoleFillingConfig, HoleFillingMethod, HoleFillingResult,
46    IslandRemovalConfig, IslandRemovalResult, ManifoldValidation,
47    MeshProcessingSettings, PlyExportOptions, PlyFormat,
48    SmoothingAlgorithm, SmoothingConfig, SmoothingResult,
49};
50pub use mpr_ops::{
51    ExtractParams, MprError, MprExecutor, MprOperation,
52    MprResult, MprTiming, WindowLevelParams,
53};
54pub use window_level::{ct_preset, WindowLevelProcessor};
55
56#[cfg(feature = "gpu")]
57pub use gpu_executor::{
58    GpuMemoryStrategy, GpuMprExecutor, GpuVolume,
59    MAX_GPU_BUFFER_SIZE, SAFE_GPU_BUFFER_SIZE,
60};
61#[cfg(feature = "gpu")]
62pub use gpu_marching_cubes::GpuMarchingCubes;
63#[cfg(feature = "gpu")]
64pub use volume_render::{
65    Camera, ClipBoxConfig, ClipPlaneConfig, DvrOptions,
66    MaskConfig, RenderMode, RenderResult, SlicePlaneConfig,
67    SculptUniforms, TransferFunction, TransferFunctionEntry,
68    TransferFunctionPreset, VolumeRenderer,
69};