#[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 }