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

This commit is contained in:
Brecht Van Lommel 2018-12-21 18:51:13 +01:00
parent c93fd8438c
commit 8e331c3431

@ -874,13 +874,15 @@ ccl_device_inline float3 curve_refine(KernelGlobals *kg,
float gd = isect->v; float gd = isect->v;
/* direction from inside to surface of curve */ /* 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 */ /* adjustment for changing radius */
if(gd != 0.0f) { if(gd != 0.0f) {
sd->Ng = sd->Ng - gd * tg; sd->Ng = sd->Ng - gd * tg;
sd->Ng = normalize(sd->Ng);
} }
sd->Ng = normalize(sd->Ng);
} }
sd->N = sd->Ng; sd->N = sd->Ng;