1#![warn(missing_docs)]
2pub mod error;
66
67pub mod camera;
69pub mod geometry;
71pub mod interaction;
73pub mod quantities;
75pub mod renderer;
77pub mod resources;
79pub mod scene;
81pub mod widgets;
83
84pub use geometry::bvh;
89pub use geometry::primitives;
90pub use interaction::clip_plane;
91pub use interaction::gizmo;
92pub use interaction::input;
93pub use interaction::manipulation;
94pub use interaction::picking;
95pub use interaction::selection;
96pub use interaction::snap;
97pub use scene::aabb;
98pub use scene::material;
99pub use scene::traits;
100pub use widgets::axes_indicator;
101
102pub use error::{ViewportError, ViewportResult};
107
108pub use camera::animator::{CameraAnimator, CameraDamping, Easing};
109pub use camera::camera::{Camera, CameraTarget, Projection};
110pub use camera::frustum::{CullStats, Frustum};
111pub use camera::track::{CameraTrack, interpolate_camera};
112pub use camera::turntable::TurntableController;
113pub use camera::view_preset::ViewPreset;
114
115pub use scene::aabb::Aabb;
116pub use scene::material::{
117 AppearanceSettings, BackfacePattern, BackfacePolicy, Material, ParamVis, ParamVisMode,
118 PatternConfig,
119};
120pub use scene::scene::{Group, GroupId, Layer, LayerId, Scene, SceneNode};
121pub use scene::traits::{RenderMode, ViewportObject};
122
123pub use geometry::bvh::PickAccelerator;
124pub use geometry::implicit::{
125 ImplicitRenderOptions, march_implicit_surface, march_implicit_surface_colour,
126};
127pub use geometry::isoline::{IsolineItem, extract_isolines};
128pub use geometry::marching_cubes::{VolumeData, extract_isosurface};
129
130pub use interaction::gizmo::{
131 Gizmo, GizmoAxis, GizmoMode, GizmoSpace, PivotMode, gizmo_center_for_pivot,
132};
133pub use interaction::input::{
134 Action, ActionState, Binding, FrameInput, InputMode, InputSystem, KeyCode, Modifiers,
135 MouseButton, NavigationMode,
136};
137pub use interaction::input::{
139 ActionFrame, BindingPreset, ButtonState, ModifiersMatch, NavigationActions,
140 OrbitCameraController, ResolvedActionState, ScrollUnits, ViewportBinding, ViewportContext,
141 ViewportEvent, ViewportGesture, ViewportInput, viewport_all_bindings,
142};
143pub use interaction::manipulation::solvers::{
144 angular_rotation_from_cursor, constrained_scale, constrained_translation,
145};
146pub use interaction::manipulation::{
147 GizmoInfo, ManipResult, ManipulationContext, ManipulationController, ManipulationKind,
148 ManipulationState, TransformDelta,
149};
150
151pub use interaction::widgets::{
152 BoxWidget, CylinderWidget, DiskWidget, LineProbeWidget, PlaneWidget, PolylineWidget,
153 SphereWidget, SplineWidget, WidgetContext, WidgetResult,
154};
155
156pub use interaction::clip_plane::{
157 ClipAxis, ClipPlaneContext, ClipPlaneController, ClipPlaneDelta, ClipPlaneHit, ClipPlaneResult,
158 ClipPlaneSessionKind, hit_test_normal_handle, hit_test_plane_quad, plane_from_axis_preset,
159 project_drag_onto_normal, ray_plane_intersection, snap_plane_distance,
160};
161pub use interaction::pick_mask::PickMask;
162pub use interaction::picking::{
163 GpuPickHit, PickHit, ProbeBinding, RectPickResult, nearest_vertex_on_hit,
164 pick_gaussian_splat_cpu, pick_gaussian_splat_rect, pick_point_cloud_cpu, pick_rect,
165 pick_scene_accelerated_with_probe_cpu, pick_scene_nodes_with_probe_cpu,
166 pick_scene_with_probe_cpu, pick_transparent_volume_mesh_cpu, pick_transparent_volume_mesh_rect,
167 pick_volume_cpu, pick_volume_rect, voxel_world_aabb,
168};
169pub use interaction::selection::{NodeId, Selection};
170pub use interaction::snap::{ConstraintOverlay, SnapConfig};
171pub use interaction::sub_object;
172pub use interaction::sub_object::{
173 CellSelectionInfo, PolylineSelectionInfo, SubObjectRef, SubSelection, SubSelectionRef,
174 VolumeSelectionInfo,
175};
176
177pub use widgets::axes_indicator::AxisView;
178
179pub use renderer::shader_hashes::ShaderValidation;
180pub use renderer::stats::{FrameStats, PerformancePolicy, QualityPreset, RuntimeMode};
181pub use renderer::{
182 CameraFrame, CameraFrustumItem, ClipObject, ClipShape, ComputeFilterItem, ComputeFilterKind,
183 EffectsFrame, EnvironmentMap, FilterMode, FrameData, GaussianSplatData, GaussianSplatId,
184 GaussianSplatItem, GlyphItem, GlyphType, GroundPlane, GroundPlaneMode, ImageAnchor,
185 ImageSliceItem, InteractionFrame, LabelAnchor, LabelItem, LightKind, LightSource,
186 LightingSettings, LoadingBarAnchor, LoadingBarItem, OverlayFrame, OverlayImageItem, PickId,
187 PickRectResult, PointCloudItem, PointRenderMode, PolylineItem, PostProcessSettings,
188 RenderCamera, RibbonItem, RulerItem, ScalarBarAnchor, ScalarBarItem, ScalarBarOrientation,
189 SceneEffects, SceneFrame, SceneRenderItem, ScreenImageItem, ShDegree, ShadowFilter, SliceAxis,
190 SpriteItem, SpriteSizeMode, StreamtubeItem, SurfaceLICConfig, SurfaceLICItem,
191 SurfaceSubmission, TensorGlyphItem, ToneMapping, TransparentVolumeMeshItem, TubeItem,
192 ViewportEffects, ViewportFrame, ViewportId, ViewportRenderer, VolumeItem, VolumeMeshItem,
193 VolumeSurfaceSliceItem, aabb_wireframe_polyline,
194};
195
196pub use quantities::{
197 edge_one_form_to_glyphs, face_intrinsic_to_glyphs, polyline_edge_vectors_to_glyphs,
198 polyline_node_vectors_to_glyphs, vertex_intrinsic_to_glyphs,
199 volume_mesh_cell_vectors_to_glyphs, volume_mesh_vertex_vectors_to_glyphs,
200};
201
202#[allow(deprecated)]
203pub use resources::ClipVolumeUniform;
204pub use resources::colourmap_data::{
205 export_paraview_xml_colourmap, lerp_colourmap_lut, parse_paraview_xml_colourmap,
206};
207pub use resources::mesh_store::MeshId;
208pub use resources::sparse_volume::SparseVolumeGridData;
209#[allow(deprecated)]
210pub use resources::volume_mesh::{
211 CELL_SENTINEL, TET_SENTINEL, VolumeMeshData, extract_clipped_volume_faces,
212};
213pub use resources::{
214 AttributeData, AttributeKind, AttributeRef, BuiltinColourmap, BuiltinMatcap, CLIP_VOLUME_MAX,
215 CameraUniform, ClipVolumeEntry, ClipVolumesUniform, ColourmapId, ComputeFilterResult, FontError,
216 FontHandle, GpuImplicitItem, GpuImplicitOptions, GpuMarchingCubesJob, ImplicitBlendMode,
217 ImplicitPrimitive, LightUniform, LightsUniform, MatcapId, MeshData, ProjectedTetId,
218 SingleLightUniform, ViewportGpuResources, VolumeGpuId, VolumeId, lerp_attributes,
219};