forked from bartvdbraak/blender
Fix T59565: NaN/crash with zero radius tip of hair curves.
This commit is contained in:
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;
|
||||||
|
Loading…
Reference in New Issue
Block a user