1#![warn(missing_docs)]
2pub mod error;
74
75pub mod camera;
77pub mod geometry;
79pub mod interaction;
81pub mod plugin_api;
84pub mod quantities;
86pub mod renderer;
88pub mod resources;
90pub mod runtime;
92pub mod scene;
94pub mod widgets;
96
97pub use geometry::bvh;
102pub use geometry::primitives;
103pub use interaction::clip_plane;
104pub use interaction::gizmo;
105pub use interaction::input;
106pub use interaction::manipulation;
107pub use interaction::picking;
108pub use interaction::selection;
109pub use interaction::snap;
110pub use scene::aabb;
111pub use scene::material;
112pub use scene::scatter_volume;
113pub use scene::scatter_volume::{
114 ColourSource, DensityRemap, Emission, EmissionCurve, NoiseDriver, RefractionParams,
115 ScatterShape, ScatterVolume,
116};
117pub use scene::traits;
118pub use widgets::axes_indicator;
119
120pub use error::{ViewportError, ViewportResult};
125
126pub use camera::animator::{CameraAnimator, CameraDamping, Easing};
127pub use camera::camera::{Camera, CameraTarget, Projection};
128pub use camera::frustum::{CullStats, Frustum};
129pub use camera::track::{CameraTrack, interpolate_camera};
130pub use camera::turntable::TurntableController;
131pub use camera::view_preset::ViewPreset;
132
133pub use scene::aabb::Aabb;
134pub use scene::material::{
135 BackfacePattern, BackfacePolicy, ItemSettings, Material, ParamVis, ParamVisMode, PatternConfig,
136 ShadingModel,
137};
138pub use scene::scene::{
139 DecalHandle, Group, GroupId, Layer, LayerId, LiveDecal, Scene, SceneNode, SceneStats,
140};
141pub use scene::traits::{RenderMode, ViewportObject};
142
143pub use geometry::bvh::PickAccelerator;
144pub use geometry::implicit::{
145 ImplicitRenderOptions, march_implicit_surface, march_implicit_surface_colour,
146};
147pub use geometry::isoline::{IsolineItem, extract_isolines};
148pub use geometry::marching_cubes::{VolumeData, extract_isosurface};
149
150pub use interaction::gizmo::{
151 Gizmo, GizmoAxis, GizmoMode, GizmoSpace, PivotMode, gizmo_center_for_pivot,
152};
153pub use interaction::input::{
154 Action, ActionState, Binding, FrameInput, InputMode, InputSystem, KeyCode, Modifiers,
155 MouseButton, NavigationMode,
156};
157pub use interaction::input::{
159 ActionFrame, BindingPreset, ButtonState, ModifiersMatch, NavigationActions,
160 OrbitCameraController, ResolvedActionState, ScrollUnits, ViewportBinding, ViewportContext,
161 ViewportEvent, ViewportGesture, ViewportInput, viewport_all_bindings,
162};
163pub use interaction::manipulation::solvers::{
164 angular_rotation_from_cursor, constrained_scale, constrained_translation,
165};
166pub use interaction::manipulation::{
167 GizmoInfo, ManipResult, ManipulationContext, ManipulationController, ManipulationKind,
168 ManipulationState, TransformDelta,
169};
170
171pub use interaction::widgets::{
172 BoxWidget, CylinderWidget, DiskWidget, LineProbeWidget, PlaneWidget, PolylineWidget,
173 SphereWidget, SplineWidget, WidgetContext, WidgetResult,
174};
175
176pub use interaction::clip_plane::{
177 ClipAxis, ClipPlaneContext, ClipPlaneController, ClipPlaneDelta, ClipPlaneHit, ClipPlaneResult,
178 ClipPlaneSessionKind, hit_test_normal_handle, hit_test_plane_quad, plane_from_axis_preset,
179 project_drag_onto_normal, ray_plane_intersection, snap_plane_distance,
180};
181pub use interaction::pick_mask::PickMask;
182pub use interaction::picking::{
183 GpuPickHit, PickHit, ProbeBinding, RectPickResult, nearest_vertex_on_hit,
184 pick_gaussian_splat_cpu, pick_gaussian_splat_rect, pick_point_cloud_cpu, pick_rect,
185 pick_scene_accelerated_with_probe_cpu, pick_scene_nodes_with_probe_cpu,
186 pick_scene_with_probe_cpu, pick_transparent_volume_mesh_cpu, pick_transparent_volume_mesh_rect,
187 pick_volume_cpu, pick_volume_rect, voxel_world_aabb,
188};
189pub use interaction::selection::{NodeId, Selection};
190pub use interaction::snap::{ConstraintOverlay, SnapConfig};
191pub use interaction::sub_object;
192pub use interaction::sub_object::{
193 CellSelectionInfo, PolylineSelectionInfo, SubObjectRef, SubSelection, SubSelectionRef,
194 VolumeSelectionInfo,
195};
196
197pub use widgets::axes_indicator::AxisView;
198
199pub use renderer::ShadowDebugStats;
200pub use renderer::shader_hashes::ShaderValidation;
201pub use renderer::stats::{FrameStats, PerformancePolicy, QualityPreset, RuntimeMode};
202pub use renderer::{
203 AtlasViewerCorner, BorderMode, CameraFrame, ClipObject, ClipShape, ComputeFilterItem,
204 ComputeFilterKind, CylindricalFacing, DebugOutputMode, DebugQuantity, DebugVis, DecalAnimation,
205 DecalBlendMode, DecalItem, DecalProjection, EffectsFrame, EnvironmentMap, FilterMode,
206 FrameData, GaussianSplatData, GaussianSplatId, GaussianSplatItem, GlyphItem, GlyphSetRefItem,
207 GlyphType,
208 GroundPlane, GroundPlaneMode, ImageAnchor, ImageSliceItem, InteractionFrame, LabelAnchor,
209 LabelItem, LicOverlay, LightKind, LightSource, LightingSettings, LineCap, LoadingBarAnchor,
210 LoadingBarItem, MeshInstanceItem, OverlayAnimation, OverlayFill, OverlayFrame, OverlayImageItem, OverlayRectItem,
211 OverlayShape, OverlayShapeItem, OverlayTextureId, OwnedPath, PassPath, PassView, PickId,
212 PickRectResult, PointCloudItem, PointCloudRefItem, PointRenderMode, PolylineItem,
213 PolylineRefItem, PostProcessSettings,
214 RenderCamera, RibbonItem, RibbonRefItem, RulerItem, ScalarBarAnchor, ScalarBarItem,
215 ScalarBarOrientation,
216 ScatterQuality, ScatterSettings, ScatterVolumeItem, SceneEffects, SceneFrame, SceneRenderItem,
217 ScreenImageItem, ShDegree, ShadowFilter, SliceAxis, SpriteBlend, SpriteInstanceSetRefItem,
218 SpriteItem, SpriteSetRefItem, SpriteSizeMode,
219 StreamtubeItem, StreamtubeRefItem, SurfaceLICConfig, SurfaceSubmission, TensorGlyphItem,
220 TensorGlyphSetRefItem, ToneMapping, TransparentVolumeMeshItem, TriangleDirection, TubeItem,
221 TubeRefItem,
222 ViewportEffects, ViewportFrame,
223 ViewportId, ViewportRenderer, VolumeItem, VolumeMeshItem, VolumeSurfaceSliceItem,
224 aabb_wireframe_polyline, sphere_wireframe_polyline,
225};
226
227pub use quantities::{
228 edge_one_form_to_glyphs, face_intrinsic_to_glyphs, polyline_edge_vectors_to_glyphs,
229 polyline_node_vectors_to_glyphs, vertex_intrinsic_to_glyphs,
230 volume_mesh_cell_vectors_to_glyphs, volume_mesh_vertex_vectors_to_glyphs,
231};
232
233pub use resources::colourmap_data::{
234 export_paraview_xml_colourmap, lerp_colourmap_lut, parse_paraview_xml_colourmap,
235};
236pub use resources::mesh_store::MeshId;
237pub use resources::{
238 GlyphSetId, PointCloudId, PolylineId, RibbonId, SpriteInstanceSetId, SpriteSetId, StreamtubeId,
239 TensorGlyphSetId, TubeId,
240};
241pub use resources::sparse_volume::SparseVolumeGridData;
242pub use resources::volume_mesh::{CELL_SENTINEL, VolumeMeshData, extract_clipped_volume_faces};
243pub use resources::{
244 AttributeData, AttributeKind, AttributeRef, BuiltinColourmap, BuiltinMatcap, CLIP_VOLUME_MAX,
245 CameraUniform, ClipVolumeEntry, ClipVolumesUniform, ColourmapId, ComputeFilterResult,
246 FontError, FontHandle, GpuImplicitItem, GpuImplicitOptions, GpuMarchingCubesJob,
247 ImplicitBlendMode, ImplicitPrimitive, JobId, LightUniform, LightsUniform, MatcapId, MeshData,
248 ProgressHandle, ProjectedTetId, SingleLightUniform, SkinWeights, TextureMemoryStats,
249 UploadStatus, ViewportGpuResources, VolumeGpuId, VolumeId, lerp_attributes,
250};
251
252pub use runtime::{
253 AnimationClip, AnimationPlugin, AnimationTrack, CameraFollow, Channel, ClipPlayerPlugin,
254 Constraint, ConstraintPlugin, ContactEvent, DebugDraw, DebugLayer, DebugPrim, FixedStepIter,
255 FixedTimestep, Interpolation, Joint, JointMatrices, Keyframe, ManipulationSystem,
256 NodeTransformOp, PhysicsBody, PhysicsLitePlugin, Pose, RuntimeFrameContext, RuntimeOutput,
257 RuntimePhase, RuntimePlugin, RuntimeStepContext, Sampler, SceneRuntimeMode, SelectionOp,
258 SelectionSystem, SimulationStepContext, Skeleton, SkeletonPlugin, SkinnedActor,
259 SkinnedActorPart, SkinnedActorPlugin, SkinnedMeshUpdate, SkinnedPoseUpdate, SkinningPath,
260 Track, TrackValue, TrackValues, TransformSnapshot, TransformSnapshotTable, TransformWriteback,
261 ViewportRuntime, apply_skin,
262};