Removed a timer from a hot loop, and fixed node-test stat.
Gives I small performance boost, and now ray/node tests are actually reported correctly. Yay!
This commit is contained in:
parent
5a53d7f6f6
commit
68fba19fc6
|
@ -104,8 +104,6 @@ impl<'a> BVH4<'a> {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut timer = Timer::new();
|
|
||||||
let mut trav_time: f64 = 0.0;
|
|
||||||
let mut node_tests: u64 = 0;
|
let mut node_tests: u64 = 0;
|
||||||
|
|
||||||
let traversal_table =
|
let traversal_table =
|
||||||
|
@ -116,13 +114,13 @@ impl<'a> BVH4<'a> {
|
||||||
let mut stack_ptr = 1;
|
let mut stack_ptr = 1;
|
||||||
|
|
||||||
while stack_ptr > 0 {
|
while stack_ptr > 0 {
|
||||||
node_tests += ray_stack.ray_count_in_next_task() as u64;
|
|
||||||
match node_stack[stack_ptr] {
|
match node_stack[stack_ptr] {
|
||||||
&BVH4Node::Internal {
|
&BVH4Node::Internal {
|
||||||
bounds,
|
bounds,
|
||||||
children,
|
children,
|
||||||
traversal_code,
|
traversal_code,
|
||||||
} => {
|
} => {
|
||||||
|
node_tests += ray_stack.ray_count_in_next_task() as u64;
|
||||||
let mut all_hits = Bool4::new_false();
|
let mut all_hits = Bool4::new_false();
|
||||||
|
|
||||||
// Ray testing
|
// Ray testing
|
||||||
|
@ -163,23 +161,14 @@ impl<'a> BVH4<'a> {
|
||||||
}
|
}
|
||||||
|
|
||||||
&BVH4Node::Leaf { object_range } => {
|
&BVH4Node::Leaf { object_range } => {
|
||||||
trav_time += timer.tick() as f64;
|
|
||||||
|
|
||||||
// Do the ray tests.
|
// Do the ray tests.
|
||||||
obj_ray_test(object_range.0..object_range.1, rays, ray_stack);
|
obj_ray_test(object_range.0..object_range.1, rays, ray_stack);
|
||||||
|
|
||||||
timer.tick();
|
|
||||||
|
|
||||||
stack_ptr -= 1;
|
stack_ptr -= 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
trav_time += timer.tick() as f64;
|
|
||||||
ACCEL_TRAV_TIME.with(|att| {
|
|
||||||
let v = att.get();
|
|
||||||
att.set(v + trav_time);
|
|
||||||
});
|
|
||||||
ACCEL_NODE_RAY_TESTS.with(|anv| {
|
ACCEL_NODE_RAY_TESTS.with(|anv| {
|
||||||
let v = anv.get();
|
let v = anv.get();
|
||||||
anv.set(v + node_tests);
|
anv.set(v + node_tests);
|
||||||
|
|
|
@ -297,10 +297,6 @@ fn main() {
|
||||||
"\t\t\tRays/sec: {}",
|
"\t\t\tRays/sec: {}",
|
||||||
(rstats.ray_count as f64 / (ntime * rstats.trace_time) as f64) as u64
|
(rstats.ray_count as f64 / (ntime * rstats.trace_time) as f64) as u64
|
||||||
);
|
);
|
||||||
println!(
|
|
||||||
"\t\t\tTraversal: {:.3}s",
|
|
||||||
ntime * rstats.accel_traversal_time
|
|
||||||
);
|
|
||||||
println!("\t\t\tRay/node tests: {}", rstats.accel_node_visits);
|
println!("\t\t\tRay/node tests: {}", rstats.accel_node_visits);
|
||||||
println!(
|
println!(
|
||||||
"\t\tInitial ray generation: {:.3}s",
|
"\t\tInitial ray generation: {:.3}s",
|
||||||
|
|
Loading…
Reference in New Issue
Block a user