ft (wip): 10: dielectrics

This commit is contained in:
djaidjai committed 2026-04-16 15:38:01 +02:00
1 parent b756cc394a
commit 1920376e34
6 files changed
+71 -7

No files matched your search

+30
View File
@@ -0,0 +1,30 @@
use crate::{
objects::{hit::Hit, materials::traits::Material},
ray::Ray,
vec3::Colour,
};
pub struct Dielectric {
refraction_index: f32,
}
impl Dielectric {
pub fn new(refraction_index: f32) -> Self {
Self {
refraction_index: refraction_index,
}
}
}
impl Material for Dielectric {
fn scatter(&self, hit: &Hit, ray: &Ray) -> Option<(Ray, Colour)> {
let ri = if hit.front_face() {
1. / self.refraction_index
} else {
self.refraction_index
};
let unit = ray.dir().get_unit();
let refr = unit.refract(hit.n(), ri);
Some((Ray::new(*hit.p(), refr), Colour::new(1., 1., 1.)))
}
}
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.