Skip to main content

Crate viewport_lib

Crate viewport_lib 

Source
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

  1. Create a ViewportRenderer from a wgpu::Device and target format.
  2. Upload meshes or volumes through ViewportGpuResources.
  3. Build a FrameData each frame.
  4. Call ViewportRenderer::prepare and then ViewportRenderer::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::animator::CameraAnimator;
pub use camera::animator::CameraDamping;
pub use camera::animator::Easing;
pub use camera::camera::Camera;
pub use camera::camera::Projection;
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::shader_hashes::ShaderValidation;
pub use renderer::stats::FrameStats;
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 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;
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;

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.