aboutsummaryrefslogtreecommitdiff
path: root/src/material/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/material/mod.rs')
-rw-r--r--src/material/mod.rs21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/material/mod.rs b/src/material/mod.rs
new file mode 100644
index 0000000..bf1eb24
--- /dev/null
+++ b/src/material/mod.rs
@@ -0,0 +1,21 @@
+mod lambertian;
+pub use lambertian::Lambertian;
+mod metal;
+pub use metal::Metal;
+mod dielectric;
+pub use dielectric::Dielectric;
+mod diffuse_light;
+pub use diffuse_light::DiffuseLight;
+mod isotropic;
+pub use isotropic::Isotropic;
+
+use crate::{hittable::HitRecord, vec3::Point3};
+use crate::vec3::Color;
+use crate::ray::Ray;
+
+pub trait Material: Send + Sync {
+ fn emitted(&self, _: f64, _: f64, _: &Point3) -> Color {
+ Color { x: 0.0, y: 0.0, z: 0.0 }
+ }
+ fn scatter(&self, ray_in: &Ray, hit_record: &HitRecord, attenuation: &mut Color, scattered: &mut Ray) -> bool;
+}