commit 8f00487e49d32218b354d9f885868b72bab223c2
parent dd12aef4d278b36f1c0e3fb48103b9a09718d9fe
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Mon, 23 Jul 2018 12:02:36 +0200
Fix the pdf evaluation of the microfacet reflection
Diffstat:
2 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/src/ssf_beckmann_distribution.c b/src/ssf_beckmann_distribution.c
@@ -92,6 +92,7 @@ beckmann_distribution_sample
dir[1] = sin(phi) * sin_theta;
dir[2] = cos_theta;
d33_muld3(wh, d33_basis(basis, N), dir);
+ ASSERT(d3_dot(wh, N) > 0);
*pdf = exp(-sin2_theta/(cos2_theta*m2)) / (PI*m2*cos_theta*cos2_theta);
}
diff --git a/src/ssf_microfacet_reflection.c b/src/ssf_microfacet_reflection.c
@@ -108,6 +108,7 @@ microfacet_reflection_pdf
ASSERT(d3_dot(wo, N) > 0 && d3_dot(wi, N) > 0);
ASSERT(bsdf->distrib);
d3_normalize(wh, d3_add(wh, wi, wo));
+ if(d3_dot(wh, N) < 0) d3_minus(wh, wh);
pdf_wh = ssf_microfacet_distribution_pdf(bsdf->distrib, N, wh);
return pdf_wh / (4.0*fabs(d3_dot(wo, N)));
}