Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/util/util_math_float3.h
| Show First 20 Lines • Show All 405 Lines • ▼ Show 20 Lines | ccl_device_inline float3 project(const float3 v, const float3 v_proj) | ||||
| return (len_squared != 0.0f) ? (dot(v, v_proj) / len_squared) * v_proj : zero_float3(); | return (len_squared != 0.0f) ? (dot(v, v_proj) / len_squared) * v_proj : zero_float3(); | ||||
| } | } | ||||
| ccl_device_inline float3 saturate3(float3 a) | ccl_device_inline float3 saturate3(float3 a) | ||||
| { | { | ||||
| return make_float3(saturate(a.x), saturate(a.y), saturate(a.z)); | return make_float3(saturate(a.x), saturate(a.y), saturate(a.z)); | ||||
| } | } | ||||
| ccl_device_inline float3 normalize_len(const float3 a, float *t) | ccl_device_inline float3 normalize_len(const float3 a, ccl_private float *t) | ||||
| { | { | ||||
| *t = len(a); | *t = len(a); | ||||
| float x = 1.0f / *t; | float x = 1.0f / *t; | ||||
| return a * x; | return a * x; | ||||
| } | } | ||||
| ccl_device_inline float3 safe_normalize(const float3 a) | ccl_device_inline float3 safe_normalize(const float3 a) | ||||
| { | { | ||||
| float t = len(a); | float t = len(a); | ||||
| return (t != 0.0f) ? a * (1.0f / t) : a; | return (t != 0.0f) ? a * (1.0f / t) : a; | ||||
| } | } | ||||
| ccl_device_inline float3 safe_normalize_len(const float3 a, float *t) | ccl_device_inline float3 safe_normalize_len(const float3 a, ccl_private float *t) | ||||
| { | { | ||||
| *t = len(a); | *t = len(a); | ||||
| return (*t != 0.0f) ? a / (*t) : a; | return (*t != 0.0f) ? a / (*t) : a; | ||||
| } | } | ||||
| ccl_device_inline float3 safe_divide_float3_float3(const float3 a, const float3 b) | ccl_device_inline float3 safe_divide_float3_float3(const float3 a, const float3 b) | ||||
| { | { | ||||
| return make_float3((b.x != 0.0f) ? a.x / b.x : 0.0f, | return make_float3((b.x != 0.0f) ? a.x / b.x : 0.0f, | ||||
| ▲ Show 20 Lines • Show All 95 Lines • Show Last 20 Lines | |||||