...
 
Commits (2)
    https://gitcode.net/imjiangjun/pbrt-v4/-/commit/83d428279567081ad0ce1471c090e73f158aab20 Avoid NaNs when the BSDFSample's pdf is 0. 2023-01-04T01:11:34-08:00 jim price shadeops@gmail.com Addresses #313 https://gitcode.net/imjiangjun/pbrt-v4/-/commit/b8b5ee059e90cb0feae00e551b668d97688bb7bd Merge pull request #316 from shadeops/NaNs_in_rho 2023-01-04T10:21:44-08:00 Matt Pharr matt@pharr.org Avoid NaNs when the BSDFSample's pdf is 0.
......@@ -1136,7 +1136,7 @@ SampledSpectrum BxDF::rho(Vector3f wo, pstd::span<const Float> uc,
for (size_t i = 0; i < uc.size(); ++i) {
// Compute estimate of $\rho_\roman{hd}$
pstd::optional<BSDFSample> bs = Sample_f(wo, uc[i], u2[i]);
if (bs)
if (bs && bs->pdf > 0)
r += bs->f * AbsCosTheta(bs->wi) / bs->pdf;
}
return r / uc.size();
......@@ -1154,7 +1154,7 @@ SampledSpectrum BxDF::rho(pstd::span<const Point2f> u1, pstd::span<const Float>
continue;
Float pdfo = UniformHemispherePDF();
pstd::optional<BSDFSample> bs = Sample_f(wo, uc[i], u2[i]);
if (bs)
if (bs && bs->pdf > 0)
r += bs->f * AbsCosTheta(bs->wi) * AbsCosTheta(wo) / (pdfo * bs->pdf);
}
return r / (Pi * uc.size());
......