sort out units
This commit is contained in:
parent
2e6589e01b
commit
cbe0839cd6
17
src/lib.rs
17
src/lib.rs
|
|
@ -244,26 +244,27 @@ impl Core {
|
||||||
}
|
}
|
||||||
let mut camera_ray_display: Vec<Vertex> = Vec::with_capacity(camera_rays.len());
|
let mut camera_ray_display: Vec<Vertex> = Vec::with_capacity(camera_rays.len());
|
||||||
let sigma2 = args.accum_sigma.powi(2);
|
let sigma2 = args.accum_sigma.powi(2);
|
||||||
let weight = (2. * PI * sigma2).sqrt().recip() * args.accum_scale;
|
let accum_normalizator = (2. * PI * sigma2).sqrt().recip();
|
||||||
for ray in camera_rays {
|
for ray in camera_rays {
|
||||||
let Some(hit) = scene.trace_ray(ray) else {
|
let Some(hit) = scene.trace_ray(ray) else {
|
||||||
continue;
|
continue;
|
||||||
};
|
};
|
||||||
let mut value = 0.0f32;
|
let mut total_cd = 0.0f32;
|
||||||
for light_hit in &hits {
|
for light_hit in &hits {
|
||||||
let d2 = hit.incident.base.distance_squared(light_hit.incident.base);
|
let d2 = hit.incident.base.distance_squared(light_hit.incident.base);
|
||||||
if d2 > 9. * sigma2 {
|
if d2 > 9. * sigma2 {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
assert!(hit.incident.dir.is_normalized());
|
assert!(hit.incident.dir.is_normalized());
|
||||||
let radiance = hit.normal.dot(-hit.incident.dir);
|
let in_lm = 1.0;
|
||||||
let w = (-0.5 * d2 / sigma2).exp();
|
let out_cd = in_lm * hit.normal.dot(-hit.incident.dir) / PI;
|
||||||
value += w * radiance;
|
let weight = accum_normalizator * (-0.5 * d2 / sigma2).exp();
|
||||||
|
total_cd += weight * out_cd;
|
||||||
}
|
}
|
||||||
value *= weight;
|
let brightness = 3. * (1. - (1. + total_cd * args.accum_scale).recip());
|
||||||
value = 3. * (1. - (1. + value).recip());
|
|
||||||
let r = args.accum_sigma;
|
let r = args.accum_sigma;
|
||||||
let color = vec3(value, value - 1., value - 2.).clamp(Vec3::splat(0.), Vec3::splat(1.));
|
let color = vec3(brightness, brightness - 1., brightness - 2.)
|
||||||
|
.clamp(Vec3::splat(0.), Vec3::splat(1.));
|
||||||
let vertex = |off: Vec3| Vertex {
|
let vertex = |off: Vec3| Vertex {
|
||||||
pos: hit.incident.base + r * off,
|
pos: hit.incident.base + r * off,
|
||||||
color,
|
color,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user