raytracers/rtiow/src/bin/tracer.rs

42 lines
1017 B
Rust

#[macro_use]
extern crate log;
extern crate rand;
extern crate rtiow;
extern crate stderrlog;
extern crate structopt;
use std::time::Instant;
use structopt::StructOpt;
use rtiow::renderer::render;
use rtiow::renderer::Model;
use rtiow::renderer::Opt;
use rtiow::scenes;
fn main() -> Result<(), std::io::Error> {
stderrlog::new()
.verbosity(3)
.timestamp(stderrlog::Timestamp::Millisecond)
.init()
.unwrap();
let start = Instant::now();
let opt = Opt::from_args();
let scene = match opt.model {
Model::Book => scenes::book::new(false, &opt),
Model::BookBVH => scenes::book::new(true, &opt),
Model::Cube => scenes::cube::new(&opt),
Model::Tutorial => scenes::tutorial::new(&opt),
Model::BVH => scenes::bvh::new(&opt),
};
let res = render(scene, &opt.output);
let runtime = start.elapsed();
info!(
"Render time {}.{} seconds",
runtime.as_secs(),
runtime.subsec_millis()
);
res
}