Make it easy for bench scene to compare hitlist vs accelerated rendering.

This commit is contained in:
Bill Thiede 2018-09-22 12:07:35 -07:00
parent 02639e4d3f
commit a5b5ccb291

View File

@ -1,6 +1,7 @@
use rand;
use rand::Rng;
use bvh::BVH;
use camera::Camera;
use hitable::Hit;
use hitable_list::HitableList;
@ -38,19 +39,28 @@ pub fn new(opt: &Opt) -> Scene {
let g = rng.gen_range::<f32>(0., 1.);
let b = rng.gen_range::<f32>(0., 1.);
let x_pos = (x - len / 2) as f32 + rng.gen_range(-0.1, 0.1);
let z_pos = (z - len / 2) as f32 + rng.gen_range(-0.1, 0.1);
grid.push(Box::new(Sphere::new(
Vec3::new((x - len / 2) as f32, 0., (z - len / 2) as f32),
Vec3::new(x_pos, 0., z_pos),
0.5,
Box::new(Lambertian::new(Vec3::new(r, g, b))),
)));
}
}
let use_kdtree = true;
let world: Box<Hit>;
if use_kdtree {
let kdtree = KDTree::new(grid, time_min, time_max);
//trace!(target: "k-d tree", "World {}", kdtree);
world = Box::new(kdtree);
if opt.use_accel {
let use_kd = true;
if use_kd {
let kdtree = KDTree::new(grid, time_min, time_max);
trace!("k-d tree world {}", kdtree);
world = Box::new(kdtree);
} else {
let bvh = BVH::new(grid, time_min, time_max);
trace!("BVH world {}", bvh);
world = Box::new(bvh);
}
} else {
world = Box::new(HitableList::new(grid));
}