[Bf-blender-cvs] [8547d17] master: Fix T38615: cycles rendering beckmann/GGX refraction wrong with IOR equal to 1.

Brecht Van Lommel noreply at git.blender.org
Wed Feb 12 22:51:26 CET 2014


Commit: 8547d17739d1fc6eb2bd648af8dadae809865614
Author: Brecht Van Lommel
Date:   Wed Feb 12 22:50:31 2014 +0100
https://developer.blender.org/rB8547d17739d1fc6eb2bd648af8dadae809865614

Fix T38615: cycles rendering beckmann/GGX refraction wrong with IOR equal to 1.

===================================================================

M	intern/cycles/kernel/closure/bsdf_microfacet.h

===================================================================

diff --git a/intern/cycles/kernel/closure/bsdf_microfacet.h b/intern/cycles/kernel/closure/bsdf_microfacet.h
index 737cffb..dfa8886 100644
--- a/intern/cycles/kernel/closure/bsdf_microfacet.h
+++ b/intern/cycles/kernel/closure/bsdf_microfacet.h
@@ -219,7 +219,7 @@ ccl_device int bsdf_microfacet_ggx_sample(const ShaderClosure *sc, float3 Ng, fl
 				*domega_in_dy = dTdy;
 #endif
 
-				if (m_ag <= 1e-4f) {
+				if (m_ag <= 1e-4f || fabsf(m_eta - 1.0f) < 1e-4f) {
 					// some high number for MIS
 					*pdf = 1e6f;
 					*eval = make_float3(1e6f, 1e6f, 1e6f);
@@ -450,7 +450,7 @@ ccl_device int bsdf_microfacet_beckmann_sample(const ShaderClosure *sc, float3 N
 				*domega_in_dx = dTdx;
 				*domega_in_dy = dTdy;
 #endif
-				if (m_ab <= 1e-4f) {
+				if (m_ab <= 1e-4f || fabsf(m_eta - 1.0f) < 1e-4f) {
 					// some high number for MIS
 					*pdf = 1e6f;
 					*eval = make_float3(1e6f, 1e6f, 1e6f);




More information about the Bf-blender-cvs mailing list