diff --git a/src/shading/mod.rs b/src/shading/mod.rs index 3c7bcef..7f6f00d 100644 --- a/src/shading/mod.rs +++ b/src/shading/mod.rs @@ -10,7 +10,12 @@ use surface::SurfaceIntersectionData; pub trait SurfaceShader: Debug + Sync { /// Takes the result of a surface intersection and returns the surface /// closure to be evaluated at that intersection point. - fn shade(&self, data: &SurfaceIntersectionData, wavelength: f32) -> SurfaceClosureUnion; + fn shade( + &self, + data: &SurfaceIntersectionData, + time: f32, + wavelength: f32, + ) -> SurfaceClosureUnion; } /// Clearly we must eat this brownie before the world ends, lest it @@ -37,8 +42,13 @@ pub enum SimpleSurfaceShader { } impl SurfaceShader for SimpleSurfaceShader { - fn shade(&self, data: &SurfaceIntersectionData, wavelength: f32) -> SurfaceClosureUnion { - let _ = data; // Silence "unused" compiler warning + fn shade( + &self, + data: &SurfaceIntersectionData, + time: f32, + wavelength: f32, + ) -> SurfaceClosureUnion { + let _ = (data, time); // Silence "unused" compiler warning match *self { SimpleSurfaceShader::Emit { color } => { diff --git a/src/surface/triangle_mesh.rs b/src/surface/triangle_mesh.rs index d718178..4926232 100644 --- a/src/surface/triangle_mesh.rs +++ b/src/surface/triangle_mesh.rs @@ -249,7 +249,11 @@ impl<'a> Surface for TriangleMesh<'a> { // Fill in intersection data isects[r.id as usize] = SurfaceIntersection::Hit { intersection_data: intersection_data, - closure: shader.shade(&intersection_data, wr.wavelength), + closure: shader.shade( + &intersection_data, + wr.time, + wr.wavelength, + ), }; r.max_t = t; }