Added some additional ray tracing stats.
This commit is contained in:
parent
14b16896ac
commit
5a53d7f6f6
|
@ -292,6 +292,11 @@ fn main() {
|
||||||
"\t\tTrace: {:.3}s",
|
"\t\tTrace: {:.3}s",
|
||||||
ntime * rstats.trace_time
|
ntime * rstats.trace_time
|
||||||
);
|
);
|
||||||
|
println!("\t\t\tRays traced: {}", rstats.ray_count);
|
||||||
|
println!(
|
||||||
|
"\t\t\tRays/sec: {}",
|
||||||
|
(rstats.ray_count as f64 / (ntime * rstats.trace_time) as f64) as u64
|
||||||
|
);
|
||||||
println!(
|
println!(
|
||||||
"\t\t\tTraversal: {:.3}s",
|
"\t\t\tTraversal: {:.3}s",
|
||||||
ntime * rstats.accel_traversal_time
|
ntime * rstats.accel_traversal_time
|
||||||
|
|
|
@ -42,6 +42,7 @@ pub struct RenderStats {
|
||||||
pub trace_time: f64,
|
pub trace_time: f64,
|
||||||
pub accel_traversal_time: f64,
|
pub accel_traversal_time: f64,
|
||||||
pub accel_node_visits: u64,
|
pub accel_node_visits: u64,
|
||||||
|
pub ray_count: u64,
|
||||||
pub initial_ray_generation_time: f64,
|
pub initial_ray_generation_time: f64,
|
||||||
pub ray_generation_time: f64,
|
pub ray_generation_time: f64,
|
||||||
pub sample_writing_time: f64,
|
pub sample_writing_time: f64,
|
||||||
|
@ -54,6 +55,7 @@ impl RenderStats {
|
||||||
trace_time: 0.0,
|
trace_time: 0.0,
|
||||||
accel_traversal_time: 0.0,
|
accel_traversal_time: 0.0,
|
||||||
accel_node_visits: 0,
|
accel_node_visits: 0,
|
||||||
|
ray_count: 0,
|
||||||
initial_ray_generation_time: 0.0,
|
initial_ray_generation_time: 0.0,
|
||||||
ray_generation_time: 0.0,
|
ray_generation_time: 0.0,
|
||||||
sample_writing_time: 0.0,
|
sample_writing_time: 0.0,
|
||||||
|
@ -65,6 +67,7 @@ impl RenderStats {
|
||||||
self.trace_time += other.trace_time;
|
self.trace_time += other.trace_time;
|
||||||
self.accel_traversal_time += other.accel_traversal_time;
|
self.accel_traversal_time += other.accel_traversal_time;
|
||||||
self.accel_node_visits += other.accel_node_visits;
|
self.accel_node_visits += other.accel_node_visits;
|
||||||
|
self.ray_count += other.ray_count;
|
||||||
self.initial_ray_generation_time += other.initial_ray_generation_time;
|
self.initial_ray_generation_time += other.initial_ray_generation_time;
|
||||||
self.ray_generation_time += other.ray_generation_time;
|
self.ray_generation_time += other.ray_generation_time;
|
||||||
self.sample_writing_time += other.sample_writing_time;
|
self.sample_writing_time += other.sample_writing_time;
|
||||||
|
@ -344,6 +347,7 @@ impl<'a> Renderer<'a> {
|
||||||
}
|
}
|
||||||
|
|
||||||
stats.total_time += total_timer.tick() as f64;
|
stats.total_time += total_timer.tick() as f64;
|
||||||
|
stats.ray_count = tracer.rays_traced();
|
||||||
ACCEL_TRAV_TIME.with(|att| {
|
ACCEL_TRAV_TIME.with(|att| {
|
||||||
stats.accel_traversal_time = att.get();
|
stats.accel_traversal_time = att.get();
|
||||||
att.set(0.0);
|
att.set(0.0);
|
||||||
|
|
|
@ -13,6 +13,7 @@ use crate::{
|
||||||
};
|
};
|
||||||
|
|
||||||
pub struct Tracer<'a> {
|
pub struct Tracer<'a> {
|
||||||
|
ray_trace_count: u64,
|
||||||
ray_stack: RayStack,
|
ray_stack: RayStack,
|
||||||
inner: TracerInner<'a>,
|
inner: TracerInner<'a>,
|
||||||
}
|
}
|
||||||
|
@ -20,6 +21,7 @@ pub struct Tracer<'a> {
|
||||||
impl<'a> Tracer<'a> {
|
impl<'a> Tracer<'a> {
|
||||||
pub fn from_assembly(assembly: &'a Assembly) -> Tracer<'a> {
|
pub fn from_assembly(assembly: &'a Assembly) -> Tracer<'a> {
|
||||||
Tracer {
|
Tracer {
|
||||||
|
ray_trace_count: 0,
|
||||||
ray_stack: RayStack::new(),
|
ray_stack: RayStack::new(),
|
||||||
inner: TracerInner {
|
inner: TracerInner {
|
||||||
root: assembly,
|
root: assembly,
|
||||||
|
@ -30,8 +32,13 @@ impl<'a> Tracer<'a> {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn trace<'b>(&'b mut self, rays: &mut RayBatch) -> &'b [SurfaceIntersection] {
|
pub fn trace<'b>(&'b mut self, rays: &mut RayBatch) -> &'b [SurfaceIntersection] {
|
||||||
|
self.ray_trace_count += rays.len() as u64;
|
||||||
self.inner.trace(rays, &mut self.ray_stack)
|
self.inner.trace(rays, &mut self.ray_stack)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn rays_traced(&self) -> u64 {
|
||||||
|
self.ray_trace_count
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct TracerInner<'a> {
|
struct TracerInner<'a> {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user