Date
1 - 2 of 2
Missing sqrtf in beckman's sample function (issue196043)
aco...@...
Reviewers: osl-dev_googlegroups.com,
Description:
There was a problem with the sample function in beckman closure. A
missing sqrt for sampling the tangent of theta. It was preventing
reflections from getting the right blur. This patch fixes the problem.
Please review this at http://codereview.appspot.com/196043/show
Affected files:
src/liboslexec/bsdf_microfacet.cpp
Index: src/liboslexec/bsdf_microfacet.cpp
===================================================================
--- src/liboslexec/bsdf_microfacet.cpp (revision 551)
+++ src/liboslexec/bsdf_microfacet.cpp (working copy)
@@ -374,7 +374,7 @@ public:
// we take advantage of cos(atan(x)) == 1/sqrt(1+x^2)
// and sin(atan(x)) == x/sqrt(1+x^2)
float alpha2 = m_ab * m_ab;
- float tanThetaM = -alpha2 * logf(1 - randu);
+ float tanThetaM = sqrtf(-alpha2 * logf(1 - randu));
float cosThetaM = 1 / sqrtf(1 + tanThetaM * tanThetaM);
float sinThetaM = cosThetaM * tanThetaM;
float phiM = 2 * float(M_PI) * randv;
Description:
There was a problem with the sample function in beckman closure. A
missing sqrt for sampling the tangent of theta. It was preventing
reflections from getting the right blur. This patch fixes the problem.
Please review this at http://codereview.appspot.com/196043/show
Affected files:
src/liboslexec/bsdf_microfacet.cpp
Index: src/liboslexec/bsdf_microfacet.cpp
===================================================================
--- src/liboslexec/bsdf_microfacet.cpp (revision 551)
+++ src/liboslexec/bsdf_microfacet.cpp (working copy)
@@ -374,7 +374,7 @@ public:
// we take advantage of cos(atan(x)) == 1/sqrt(1+x^2)
// and sin(atan(x)) == x/sqrt(1+x^2)
float alpha2 = m_ab * m_ab;
- float tanThetaM = -alpha2 * logf(1 - randu);
+ float tanThetaM = sqrtf(-alpha2 * logf(1 - randu));
float cosThetaM = 1 / sqrtf(1 + tanThetaM * tanThetaM);
float sinThetaM = cosThetaM * tanThetaM;
float phiM = 2 * float(M_PI) * randv;