use generic reflector for final computation

This commit is contained in:
numzero 2025-11-20 13:10:21 +03:00
parent 713fd25c9c
commit 91473f08ae

View File

@ -9,7 +9,7 @@ use crate::{
camera::OrbitalCamera,
ray::Ray,
render::lines::{LookParams, Mesh, Pipeline, Vertex},
trace::{Hit, Scene, Source, Sphere},
trace::{Hit, Lambertian, Reflector, Scene, Source, Sphere},
};
mod camera;
@ -255,9 +255,13 @@ impl Core {
if d2 > 9. * sigma2 {
continue;
}
assert!(hit.normal.is_normalized());
assert!(hit.incident.dir.is_normalized());
let reflector = Lambertian;
let in_lm = 1.0;
let out_cd = in_lm * hit.normal.dot(-hit.incident.dir) / PI;
let out_cd = in_lm
* hit.normal.dot(-hit.incident.dir)
* reflector.brdf(hit.normal, hit.incident.dir, -ray.dir);
let weight = accum_normalizator * (-0.5 * d2 / sigma2).exp();
total_cd += weight * out_cd;
}