Expand description
viewport-lib — a 3D viewport library for wgpu applications.
Built on wgpu and glam, with no required UI toolkit. The crate provides
the renderer, camera, picking, and interaction pieces; host applications keep
control of their own windowing and event loop.
§Quick start
- Create a
ViewportRendererfrom awgpu::Deviceand target format. - Upload meshes or volumes through
ViewportGpuResources. - Build a
FrameDataeach frame. - Call
ViewportRenderer::prepareand thenViewportRenderer::paint_to.
Re-exports§
pub use geometry::bvh;pub use interaction::annotation;pub use interaction::gizmo;pub use interaction::input;pub use interaction::picking;pub use interaction::selection;pub use interaction::snap;pub use scene::aabb;pub use scene::material;pub use scene::traits;pub use widgets::axes_indicator;pub use error::ViewportError;pub use error::ViewportResult;pub use camera::camera::Camera;pub use camera::camera::Projection;pub use camera::animator::CameraAnimator;pub use camera::animator::CameraDamping;pub use camera::animator::Easing;pub use camera::frustum::CullStats;pub use camera::frustum::Frustum;pub use camera::view_preset::ViewPreset;pub use scene::aabb::Aabb;pub use scene::material::Material;pub use scene::scene::Group;pub use scene::scene::GroupId;pub use scene::scene::Layer;pub use scene::scene::LayerId;pub use scene::scene::Scene;pub use scene::scene::SceneNode;pub use scene::traits::RenderMode;pub use scene::traits::ViewportObject;pub use geometry::bvh::PickAccelerator;pub use geometry::isoline::IsolineItem;pub use geometry::isoline::extract_isolines;pub use geometry::marching_cubes::VolumeData;pub use geometry::marching_cubes::extract_isosurface;pub use interaction::annotation::AnnotationLabel;pub use interaction::annotation::world_to_screen;pub use interaction::annotation::world_to_screen_from_frame;pub use interaction::gizmo::Gizmo;pub use interaction::gizmo::GizmoAxis;pub use interaction::gizmo::GizmoMode;pub use interaction::gizmo::GizmoSpace;pub use interaction::gizmo::PivotMode;pub use interaction::gizmo::gizmo_center_for_pivot;pub use interaction::input::Action;pub use interaction::input::ActionState;pub use interaction::input::Binding;pub use interaction::input::FrameInput;pub use interaction::input::InputMode;pub use interaction::input::InputSystem;pub use interaction::input::KeyCode;pub use interaction::input::Modifiers;pub use interaction::input::MouseButton;pub use interaction::picking::GpuPickHit;pub use interaction::picking::PickHit;pub use interaction::picking::ProbeBinding;pub use interaction::picking::RectPickResult;pub use interaction::picking::pick_rect;pub use interaction::picking::pick_scene_accelerated_with_probe;pub use interaction::picking::pick_scene_nodes_with_probe;pub use interaction::picking::pick_scene_with_probe;pub use interaction::selection::NodeId;pub use interaction::selection::Selection;pub use interaction::snap::ConstraintOverlay;pub use interaction::snap::SnapConfig;pub use widgets::axes_indicator::AxisView;pub use renderer::ClipPlane;pub use renderer::ClipVolume;pub use renderer::ComputeFilterItem;pub use renderer::ComputeFilterKind;pub use renderer::FilterMode;pub use renderer::FrameData;pub use renderer::GlyphItem;pub use renderer::GlyphType;pub use renderer::LightKind;pub use renderer::LightSource;pub use renderer::LightingSettings;pub use renderer::OverlayQuad;pub use renderer::PointCloudItem;pub use renderer::PointRenderMode;pub use renderer::PolylineItem;pub use renderer::PostProcessSettings;pub use renderer::SceneRenderItem;pub use renderer::ShadowFilter;pub use renderer::StreamtubeItem;pub use renderer::ToneMapping;pub use renderer::ViewportRenderer;pub use renderer::VolumeItem;pub use renderer::ScalarBar;pub use renderer::ScalarBarAnchor;pub use renderer::ScalarBarOrientation;pub use renderer::stats::FrameStats;pub use renderer::shader_hashes::ShaderValidation;pub use resources::AttributeData;pub use resources::AttributeKind;pub use resources::AttributeRef;pub use resources::BuiltinColormap;pub use resources::CameraUniform;pub use resources::ClipVolumeUniform;pub use resources::ColormapId;pub use resources::ComputeFilterResult;pub use resources::LightUniform;pub use resources::LightsUniform;pub use resources::MeshData;pub use resources::SingleLightUniform;pub use resources::ViewportGpuResources;pub use resources::VolumeId;pub use resources::lerp_attributes;pub use resources::colormap_data::export_paraview_xml_colormap;pub use resources::colormap_data::lerp_colormap_lut;pub use resources::colormap_data::parse_paraview_xml_colormap;pub use resources::mesh_store::MeshId;
Modules§
- camera
- Arcball camera, frustum, view presets, and animator.
- error
- Error types for the viewport library. Error types for the viewport library.
- geometry
- BVH picking, marching cubes, isolines, and cap geometry.
- interaction
- Gizmo, snap, selection, annotation, picking, and input.
- renderer
- Main viewport renderer wrapping all GPU resources.
ViewportRenderer— the main entry point for the viewport library. - resources
- GPU resource container (pipelines, buffers, bind groups).
- scene
- Scene graph, material, traits, and AABB.
- widgets
- Axes orientation indicator.