[Bf-blender-cvs] [8e331c34312] blender2.7: Fix T59565: NaN/crash with zero radius tip of hair curves.

Brecht Van Lommel noreply at git.blender.org
Fri Dec 21 19:10:05 CET 2018


Commit: 8e331c34312e2a9945da84d9601fce8aba53f2ee
Author: Brecht Van Lommel
Date:   Fri Dec 21 18:51:13 2018 +0100
Branches: blender2.7
https://developer.blender.org/rB8e331c34312e2a9945da84d9601fce8aba53f2ee

Fix T59565: NaN/crash with zero radius tip of hair curves.

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

M	intern/cycles/kernel/geom/geom_curve_intersect.h

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

diff --git a/intern/cycles/kernel/geom/geom_curve_intersect.h b/intern/cycles/kernel/geom/geom_curve_intersect.h
index b6b58b52a29..5cf8713e3a8 100644
--- a/intern/cycles/kernel/geom/geom_curve_intersect.h
+++ b/intern/cycles/kernel/geom/geom_curve_intersect.h
@@ -874,13 +874,15 @@ ccl_device_inline float3 curve_refine(KernelGlobals *kg,
 			float gd = isect->v;
 
 			/* direction from inside to surface of curve */
-			sd->Ng = (dif - tg * sd->u * l) / (P_curve[0].w + sd->u * l * gd);
+			float denom = fmaxf(P_curve[0].w + sd->u * l * gd, 1e-8f);
+			sd->Ng = (dif - tg * sd->u * l) / denom;
 
 			/* adjustment for changing radius */
 			if(gd != 0.0f) {
 				sd->Ng = sd->Ng - gd * tg;
-				sd->Ng = normalize(sd->Ng);
 			}
+
+			sd->Ng = normalize(sd->Ng);
 		}
 
 		sd->N = sd->Ng;



More information about the Bf-blender-cvs mailing list