use generic reflector for final computation
This commit is contained in:
parent
713fd25c9c
commit
91473f08ae
|
|
@ -9,7 +9,7 @@ use crate::{
|
||||||
camera::OrbitalCamera,
|
camera::OrbitalCamera,
|
||||||
ray::Ray,
|
ray::Ray,
|
||||||
render::lines::{LookParams, Mesh, Pipeline, Vertex},
|
render::lines::{LookParams, Mesh, Pipeline, Vertex},
|
||||||
trace::{Hit, Scene, Source, Sphere},
|
trace::{Hit, Lambertian, Reflector, Scene, Source, Sphere},
|
||||||
};
|
};
|
||||||
|
|
||||||
mod camera;
|
mod camera;
|
||||||
|
|
@ -255,9 +255,13 @@ impl Core {
|
||||||
if d2 > 9. * sigma2 {
|
if d2 > 9. * sigma2 {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
assert!(hit.normal.is_normalized());
|
||||||
assert!(hit.incident.dir.is_normalized());
|
assert!(hit.incident.dir.is_normalized());
|
||||||
|
let reflector = Lambertian;
|
||||||
let in_lm = 1.0;
|
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();
|
let weight = accum_normalizator * (-0.5 * d2 / sigma2).exp();
|
||||||
total_cd += weight * out_cd;
|
total_cd += weight * out_cd;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user