rpt 0.2.1

Physically-based path tracing renderer written in Rust
Documentation
use std::fs::File;

use rpt::*;

fn main() -> color_eyre::Result<()> {
    color_eyre::install()?;

    let mut scene = Scene::new();

    scene.add(Object::new(
        load_stl(File::open("examples/cylinder.stl")?)?
            .translate(&glm::vec3(-15.0, -15.0, -25.0))
            .scale(&glm::vec3(1.0 / 15.0, 1.0 / 15.0, 1.0 / 25.0))
            .rotate_y(glm::quarter_pi()),
    ));
    scene.add(
        Object::new(plane(glm::vec3(0.0, 1.0, 0.0), -1.0))
            .material(Material::diffuse(hex_color(0xaaaaaa))),
    );

    scene.add(Light::Ambient(glm::vec3(0.02, 0.02, 0.02)));
    scene.add(Light::Point(
        glm::vec3(80.0, 80.0, 80.0),
        glm::vec3(0.0, 5.0, 5.0),
    ));
    scene.add(Light::Directional(
        glm::vec3(2.0, 2.0, 2.0),
        glm::vec3(1.0, -1.0, 0.0).normalize(),
    ));

    Renderer::new(&scene, Camera::default())
        .width(512)
        .height(512)
        .render()
        .save("output.png")?;

    Ok(())
}