diff --git a/intern/cycles/util/util_math.h b/intern/cycles/util/util_math.h index 1e8d8f37d1e..c332e1709db 100644 --- a/intern/cycles/util/util_math.h +++ b/intern/cycles/util/util_math.h @@ -1419,10 +1419,12 @@ ccl_device bool map_to_sphere(float *r_u, float *r_v, { float len = sqrtf(x * x + y * y + z * z); if(len > 0.0f) { - if(x == 0.0f && y == 0.0f) + if(UNLIKELY(x == 0.0f && y == 0.0f)) { *r_u = 0.0f; /* othwise domain error */ - else + } + else { *r_u = (1.0f - atan2f(x, y) / M_PI_F) / 2.0f; + } *r_v = 1.0f - safe_acosf(z / len) / M_PI_F; return true; } diff --git a/source/blender/blenlib/intern/math_geom.c b/source/blender/blenlib/intern/math_geom.c index 1cd1d1875fc..17a1dcbf34d 100644 --- a/source/blender/blenlib/intern/math_geom.c +++ b/source/blender/blenlib/intern/math_geom.c @@ -3206,8 +3206,12 @@ void map_to_sphere(float *r_u, float *r_v, const float x, const float y, const f len = sqrtf(x * x + y * y + z * z); if (len > 0.0f) { - if (x == 0.0f && y == 0.0f) *r_u = 0.0f; /* othwise domain error */ - else *r_u = (1.0f - atan2f(x, y) / (float)M_PI) / 2.0f; + if (UNLIKELY(x == 0.0f && y == 0.0f)) { + *r_u = 0.0f; /* othwise domain error */ + } + else { + *r_u = (1.0f - atan2f(x, y) / (float)M_PI) / 2.0f; + } *r_v = 1.0f - saacos(z / len) / (float)M_PI; }