forked from bartvdbraak/blender
OSL Fix for fireflies in velvet bsdf, ported over from SVM fix in r41738.
This commit is contained in:
parent
7f1cfbfff5
commit
acb2c7e0d1
@ -90,8 +90,11 @@ public:
|
|||||||
float cosNH = m_N.dot(H);
|
float cosNH = m_N.dot(H);
|
||||||
float cosHO = fabsf(omega_out.dot(H));
|
float cosHO = fabsf(omega_out.dot(H));
|
||||||
|
|
||||||
|
if(!(fabsf(cosNH) < 1.0f-1e-5f && cosHO > 1e-5f))
|
||||||
|
return Color3(0, 0, 0);
|
||||||
|
|
||||||
float cosNHdivHO = cosNH / cosHO;
|
float cosNHdivHO = cosNH / cosHO;
|
||||||
cosNHdivHO = max(cosNHdivHO, 0.00001f);
|
cosNHdivHO = max(cosNHdivHO, 1e-5f);
|
||||||
|
|
||||||
float fac1 = 2 * fabsf(cosNHdivHO * cosNO);
|
float fac1 = 2 * fabsf(cosNHdivHO * cosNO);
|
||||||
float fac2 = 2 * fabsf(cosNHdivHO * cosNI);
|
float fac2 = 2 * fabsf(cosNHdivHO * cosNI);
|
||||||
@ -134,8 +137,9 @@ public:
|
|||||||
float cosNH = m_N.dot(H);
|
float cosNH = m_N.dot(H);
|
||||||
float cosHO = fabsf(omega_out.dot(H));
|
float cosHO = fabsf(omega_out.dot(H));
|
||||||
|
|
||||||
|
if(fabsf(cosNO) > 1e-5f && fabsf(cosNH) < 1.0f-1e-5f && cosHO > 1e-5f) {
|
||||||
float cosNHdivHO = cosNH / cosHO;
|
float cosNHdivHO = cosNH / cosHO;
|
||||||
cosNHdivHO = max(cosNHdivHO, 0.00001f);
|
cosNHdivHO = max(cosNHdivHO, 1e-5f);
|
||||||
|
|
||||||
float fac1 = 2 * fabsf(cosNHdivHO * cosNO);
|
float fac1 = 2 * fabsf(cosNHdivHO * cosNO);
|
||||||
float fac2 = 2 * fabsf(cosNHdivHO * cosNI);
|
float fac2 = 2 * fabsf(cosNHdivHO * cosNI);
|
||||||
@ -159,6 +163,9 @@ public:
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
pdf = 0;
|
pdf = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
pdf = 0;
|
||||||
return Labels::REFLECT;
|
return Labels::REFLECT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user