Expand description
Rein 3D Rendering Library
A three-d style 3D rendering library built on wgpu.
§Architecture
The library is organized into layers:
- context - Core wgpu wrapper (Device, Queue)
- core - Mid-level abstractions (buffers, textures, pipelines)
- renderer - High-level rendering (cameras, materials, objects, lights)
- window - Window management with winit (optional, feature = “window”)
- gui - Text rendering (optional, feature = “gui”)
- urdf - URDF robot model support
§Example
use rein::{Window, WindowSettings, FrameOutput};
use rein::renderer::{Camera, OrbitControl};
use rein::urdf::RobotModel;
use rein::core::ClearState;
use glam::Vec3;
fn main() -> anyhow::Result<()> {
let window = Window::new(WindowSettings::default().title("Robot Viewer"))?;
// State will be initialized in the render loop
struct State {
camera: Camera,
control: OrbitControl,
robot: Option<RobotModel>,
}
// ...
Ok(())
}Re-exports§
pub use context::WgpuContext;pub use core::BlendState;pub use core::ClearState;pub use core::CullState;pub use core::DepthState;pub use core::DepthTexture;pub use core::IndexBuffer;pub use core::InstanceBuffer;pub use core::InstanceData;pub use core::PipelineBuilder;pub use core::RawUniformBuffer;pub use core::RenderTarget;pub use core::Texture2D;pub use core::Texture2DArray;pub use core::TextureCubeMap;pub use core::UniformBuffer;pub use core::VertexBuffer;pub use core::VertexP;pub use core::VertexPC;pub use core::VertexPN;pub use core::VertexPNUC;pub use renderer::Aabb;pub use renderer::AmbientLight;pub use renderer::Attenuation;pub use renderer::Axes;pub use renderer::BoundingBoxMesh;pub use renderer::Camera;pub use renderer::ColorMaterial;pub use renderer::DepthMaterial;pub use renderer::DirectionalLight;pub use renderer::DirectionalShadow;pub use renderer::FirstPersonControl;pub use renderer::FlyControl;pub use renderer::Frustum;pub use renderer::FrustumCuller;pub use renderer::Geometry;pub use renderer::Gm;pub use renderer::GridMaterial;pub use renderer::InstancedMesh;pub use renderer::Intersection;pub use renderer::Light;pub use renderer::LineMaterial;pub use renderer::LineStrip;pub use renderer::Lines;pub use renderer::Material;pub use renderer::Mesh;pub use renderer::ModelUniform;pub use renderer::NormalMaterial;pub use renderer::Object;pub use renderer::OrbitControl;pub use renderer::PbrMaterial;pub use renderer::PhongMaterial;pub use renderer::Plane;pub use renderer::PointLight;pub use renderer::Projection;pub use renderer::ShadowConfig;pub use renderer::ShadowMap;pub use renderer::ShadowUniform;pub use renderer::SpotLight;pub use renderer::UnlitMaterial;pub use renderer::Viewer;pub use urdf::RobotModel;pub use urdf::UrdfLoader;pub use effect::CopyEffect;pub use effect::Effect;pub use effect::EffectChain;pub use effect::FogEffect;pub use effect::FogMode;pub use effect::FullscreenQuad;pub use effect::FxaaEffect;pub use window::Event;pub use window::FrameInput;pub use window::FrameOutput;pub use window::Key;pub use window::Modifiers;pub use window::MouseButton;pub use window::Viewport;pub use window::Window;pub use window::WindowSettings;pub use window::screen_target;pub use glam;