Make it easy for bench scene to compare hitlist vs accelerated rendering.
This commit is contained in:
parent
02639e4d3f
commit
a5b5ccb291
@ -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));
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user