42 lines
1017 B
Rust
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
|
|
}
|