use generic reflector for final computation
This commit is contained in:
parent
713fd25c9c
commit
91473f08ae
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user