Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/util/math.h
| Show First 20 Lines • Show All 880 Lines • ▼ Show 20 Lines | ccl_device_inline float2 map_to_tube(const float3 co) | ||||
| else { | else { | ||||
| u = v = 0.0f; | u = v = 0.0f; | ||||
| } | } | ||||
| return make_float2(u, v); | return make_float2(u, v); | ||||
| } | } | ||||
| ccl_device_inline float2 map_to_sphere(const float3 co) | ccl_device_inline float2 map_to_sphere(const float3 co) | ||||
| { | { | ||||
| float l = len(co); | float l = dot(co, co); | ||||
| float u, v; | float u, v; | ||||
| if (l > 0.0f) { | if (l > 0.0f) { | ||||
| if (UNLIKELY(co.x == 0.0f && co.y == 0.0f)) { | if (UNLIKELY(co.x == 0.0f && co.y == 0.0f)) { | ||||
| u = 0.0f; /* Otherwise domain error. */ | u = 0.0f; /* Otherwise domain error. */ | ||||
| } | } | ||||
| else { | else { | ||||
| u = (1.0f - atan2f(co.x, co.y) / M_PI_F) / 2.0f; | u = (0.5f - atan2f(co.x, co.y) * M_1_2PI_F); | ||||
| } | } | ||||
| v = 1.0f - safe_acosf(co.z / l) / M_PI_F; | v = 1.0f - safe_acosf(co.z / sqrtf(l)) * M_1_PI_F; | ||||
| } | } | ||||
| else { | else { | ||||
| u = v = 0.0f; | u = v = 0.0f; | ||||
| } | } | ||||
| return make_float2(u, v); | return make_float2(u, v); | ||||
| } | } | ||||
| /* Compares two floats. | /* Compares two floats. | ||||
| ▲ Show 20 Lines • Show All 86 Lines • Show Last 20 Lines | |||||