aboutsummaryrefslogtreecommitdiff
path: root/src/material/mod.rs
blob: 6732598f4b128a7aa5cbc798eaa589688d0b2d1d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use crate::core::{Ray, Spectrum};
use crate::world::Intersection;
use crate::sample::Sampler;

mod lambertian;
mod diffuse_light;
mod sky_light;
mod dielectric;
pub mod reflectant;

pub use lambertian::Lambertian;
pub use diffuse_light::DiffuseLight;
pub use sky_light::SkyLight;
pub use dielectric::Dielectric;
pub use reflectant::Reflectant;

pub trait Material: Sync + Send {
    fn scatter(&self, _: &Ray, _: &Intersection, _: &mut dyn Sampler) -> Option<(Spectrum, Ray)> {
        None
    }

    fn emitted(&self, _: &Ray) -> Option<Spectrum> {
        None
    }
}