summaryrefslogtreecommitdiff
path: root/racer-tracer/src/material.rs
blob: 1092ebc5af7945d9c022bc4b142488cd2aa35bd0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
pub mod dialectric;
pub mod lambertian;
pub mod metal;

use std::sync::Arc;

use crate::geometry::HitRecord;
use crate::ray::Ray;
use crate::vec3::Color;

pub type SharedMaterial = Arc<Box<dyn Material>>;

pub trait Material: Send + Sync {
    fn scatter(&self, ray: &Ray, hit_record: &HitRecord) -> Option<(Ray, Color)>;
}