use nalgebra::Vector3; use super::colour::ColourRgbF; use crate::Real; use std::fmt::Debug; type Bsdf = Box, Vector3, ColourRgbF) -> ColourRgbF>; pub mod lambertian_material; pub use lambertian_material::LambertianMaterial; pub mod phong_material; pub use phong_material::PhongMaterial; pub mod reflective_material; pub use reflective_material::ReflectiveMaterial; pub trait Material: Debug + Sync + Send { fn bsdf(&self) -> Bsdf; fn sample(&self, _w_o: &Vector3) -> Vec> { vec![] } }