diff options
Diffstat (limited to 'src/material/metal.rs')
-rw-r--r-- | src/material/metal.rs | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/material/metal.rs b/src/material/metal.rs index 2865a2f..638e5e4 100644 --- a/src/material/metal.rs +++ b/src/material/metal.rs @@ -1,7 +1,7 @@ use super::Material; -use crate::{hittable::HitRecord, vec3::Vec3}; -use crate::vec3::Color; use crate::ray::Ray; +use crate::vec3::Color; +use crate::{hittable::HitRecord, vec3::Vec3}; pub struct Metal { pub albedo: Color, @@ -9,9 +9,19 @@ pub struct Metal { } impl Material for Metal { - fn scatter(&self, ray_in: &Ray, hit_record: &HitRecord, attenuation: &mut Color, scattered: &mut Ray) -> bool { + fn scatter( + &self, + ray_in: &Ray, + hit_record: &HitRecord, + attenuation: &mut Color, + scattered: &mut Ray, + ) -> bool { let reflected = ray_in.direction.unit_vector().reflect(&hit_record.normal); - *scattered = Ray { origin: hit_record.p.clone(), direction: reflected + self.fuzz * Vec3::random_in_unit_sphere(), time: ray_in.time }; + *scattered = Ray { + origin: hit_record.p.clone(), + direction: reflected + self.fuzz * Vec3::random_in_unit_sphere(), + time: ray_in.time, + }; *attenuation = self.albedo.clone(); scattered.direction.dot(&hit_record.normal) > 0.0 } |