From 3ef8f4d918406eec6bdc29e0ebd883fabfac9b2e Mon Sep 17 00:00:00 2001 From: Julian T Date: Thu, 5 Aug 2021 15:44:40 +0200 Subject: Add picture for c5505ab84820248c6dba35fc06aef9e0ced183de --- src/trace/mod.rs | 41 ----------------------------------------- 1 file changed, 41 deletions(-) delete mode 100644 src/trace/mod.rs (limited to 'src/trace/mod.rs') diff --git a/src/trace/mod.rs b/src/trace/mod.rs deleted file mode 100644 index d45fb23..0000000 --- a/src/trace/mod.rs +++ /dev/null @@ -1,41 +0,0 @@ -use crate::world::{Hittable, Scene}; -use crate::core::{Spectrum, Ray, Vector3f}; -use crate::sample::Sampler; - -mod pathtrace; -pub use pathtrace::PathTracer; - -/// Simple surface normal tracer -/// -/// This ray tracer bases color values on the hit surface normals -pub struct NormTracer<'a> { - scn: &'a Scene, -} - -/// Alias for chosen trace implementation. -/// -/// This is swiched at compile time to save alot of time. -pub type DefaultTracer<'a> = PathTracer<'a>; - -pub trait Tracer { - fn trace(&self, sampler: &mut dyn Sampler, ray: &Ray) -> Spectrum; -} - -impl NormTracer<'_> { - pub fn new(scn: &Scene) -> NormTracer { - NormTracer {scn} - } -} - -impl Tracer for NormTracer<'_> { - fn trace(&self, _: &mut dyn Sampler, ray: &Ray) -> Spectrum { - // Trace ray, we dont care about material - if let Some(i) = self.scn.intersect(ray) { - let norm = i.n * 0.5 + Vector3f::new(0.5); - - return Spectrum::new_rgb(norm.x, norm.y, norm.z); - } - - Spectrum::new_rgb(0.0, 0.0, 0.0) - } -} -- cgit v1.2.3