Skip to main content

Crate rein

Crate rein 

Source
Expand description

Rein 3D Rendering Library

A three-d style 3D rendering library built on wgpu.

§Architecture

The library is organized into layers:

  1. context - Core wgpu wrapper (Device, Queue)
  2. core - Mid-level abstractions (buffers, textures, pipelines)
  3. renderer - High-level rendering (cameras, materials, objects, lights)
  4. window - Window management with winit (optional, feature = “window”)
  5. gui - Text rendering (optional, feature = “gui”)
  6. 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;

Modules§

context
WgpuContext - Device and Queue wrapper
core
Core rendering abstractions
effect
Post-processing effects
renderer
High-level rendering abstractions
urdf
URDF support
window
Window management module