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