diff --git a/rtiow/src/scenes/bench.rs b/rtiow/src/scenes/bench.rs index 5eaccf2..c7774a2 100644 --- a/rtiow/src/scenes/bench.rs +++ b/rtiow/src/scenes/bench.rs @@ -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::(0., 1.); let b = rng.gen_range::(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; - 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)); }