From 95092b1571f29317be861b384023a933dc5c1a59 Mon Sep 17 00:00:00 2001 From: hal8174 Date: Mon, 8 Sep 2025 23:38:06 +0200 Subject: [PATCH] Fix nans for MIS renderer --- ray-tracing-renderer/src/mis.rs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/ray-tracing-renderer/src/mis.rs b/ray-tracing-renderer/src/mis.rs index 0336412..9f021be 100644 --- a/ray-tracing-renderer/src/mis.rs +++ b/ray-tracing-renderer/src/mis.rs @@ -24,7 +24,7 @@ where let mut r = camera.forward(x, y, rng); let mut count = 0; - let mut last_bsdf_pdf = 0.0; + let mut last_bsdf_pdf = 1.0; while let Some(i) = scene.intersect(r, 0.001, Float::INFINITY) { let frame = i.tangent_frame(); @@ -40,9 +40,16 @@ where let dist = i.t() / r.dir().length(); let path_pdf = last_bsdf_pdf; - let nee_pdf = i.light_pdf() * dist * dist / w_in.y(); + let nee_pdf = if i.light_pdf() != 0.0 { + i.light_pdf() * dist * dist / w_in.y() + } else { + 0.0 + }; - let b = path_pdf / (path_pdf + nee_pdf); + let b = path_pdf / (path_pdf + nee_pdf + 0.000001); + if b.is_nan() { + dbg!(b, path_pdf, nee_pdf); + } sum += b * alpha * light.emit(w_in, rng); } }