[Bf-blender-cvs] [c59ed14619e] soc-2018-hair-shader: Remove two possible sources of NaNs
L. E. Segovia
noreply at git.blender.org
Sun Jun 17 00:21:03 CEST 2018
Commit: c59ed14619e7b2e3bad075ec6e04edf0c7fc70ec
Author: L. E. Segovia
Date: Sat Jun 16 20:42:04 2018 +0000
Branches: soc-2018-hair-shader
https://developer.blender.org/rBc59ed14619e7b2e3bad075ec6e04edf0c7fc70ec
Remove two possible sources of NaNs
===================================================================
M intern/cycles/kernel/closure/bsdf_hair_principled.h
===================================================================
diff --git a/intern/cycles/kernel/closure/bsdf_hair_principled.h b/intern/cycles/kernel/closure/bsdf_hair_principled.h
index 4de7335bbda..972fe08f975 100644
--- a/intern/cycles/kernel/closure/bsdf_hair_principled.h
+++ b/intern/cycles/kernel/closure/bsdf_hair_principled.h
@@ -72,7 +72,8 @@ ccl_device_inline float logistic(float x, float s)
ccl_device_inline float logistic_cdf(float x, float s)
{
float arg = -x/s;
- if(arg > 100.0f) return 0.0f;
+ // exp overflows if arg >= 89.0f
+ if(arg > 88.0f) return 0.0f;
return 1.0f / (1.0f + expf(arg));
}
@@ -114,7 +115,7 @@ ccl_device_inline float trimmed_logistic(float x, float s)
* Therefore, logistic_cdf(x, s)-logistic_cdf(-x, s) = 1 - 2*logistic_cdf(-x, s) */
float scaling_fac = 1.0f - 2.0f*logistic_cdf(-M_PI_F, s);
float val = logistic(x, s);
- return val / scaling_fac;
+ return safe_divide(val, scaling_fac);
}
ccl_device_inline float sample_trimmed_logistic(float u, float s)
More information about the Bf-blender-cvs
mailing list