diff options
Diffstat (limited to 'intern/cycles/util')
-rw-r--r-- | intern/cycles/util/color.h | 6 | ||||
-rw-r--r-- | intern/cycles/util/math.h | 11 | ||||
-rw-r--r-- | intern/cycles/util/math_float3.h | 62 | ||||
-rw-r--r-- | intern/cycles/util/math_float4.h | 8 | ||||
-rw-r--r-- | intern/cycles/util/time.cpp | 2 | ||||
-rw-r--r-- | intern/cycles/util/transform.cpp | 6 | ||||
-rw-r--r-- | intern/cycles/util/transform.h | 6 |
7 files changed, 54 insertions, 47 deletions
diff --git a/intern/cycles/util/color.h b/intern/cycles/util/color.h index 795c3754976..537f8ab6771 100644 --- a/intern/cycles/util/color.h +++ b/intern/cycles/util/color.h @@ -318,14 +318,14 @@ ccl_device float3 color_highlight_compress(float3 color, ccl_private float3 *var { color += one_float3(); if (variance) { - *variance *= sqr3(one_float3() / color); + *variance *= sqr(one_float3() / color); } - return log3(color); + return log(color); } ccl_device float3 color_highlight_uncompress(float3 color) { - return exp3(color) - one_float3(); + return exp(color) - one_float3(); } CCL_NAMESPACE_END diff --git a/intern/cycles/util/math.h b/intern/cycles/util/math.h index 555a5304764..d1773970bab 100644 --- a/intern/cycles/util/math.h +++ b/intern/cycles/util/math.h @@ -297,8 +297,15 @@ ccl_device_inline float4 __int4_as_float4(int4 i) #endif /* !defined(__KERNEL_METAL__) */ #if defined(__KERNEL_METAL__) -# define isnan_safe(v) isnan(v) -# define isfinite_safe(v) isfinite(v) +ccl_device_forceinline bool isnan_safe(float f) +{ + return isnan(f); +} + +ccl_device_forceinline bool isfinite_safe(float f) +{ + return isfinite(f); +} #else template<typename T> ccl_device_inline uint pointer_pack_to_uint_0(T *ptr) { diff --git a/intern/cycles/util/math_float3.h b/intern/cycles/util/math_float3.h index 365c322dd7e..c02b4cdbf0d 100644 --- a/intern/cycles/util/math_float3.h +++ b/intern/cycles/util/math_float3.h @@ -53,26 +53,25 @@ ccl_device_inline float3 ceil(const float3 &a); ccl_device_inline float3 reflect(const float3 incident, const float3 normal); #endif /* !defined(__KERNEL_METAL__) */ -ccl_device_inline float min3(float3 a); -ccl_device_inline float max3(float3 a); +ccl_device_inline float reduce_min(float3 a); +ccl_device_inline float reduce_max(float3 a); ccl_device_inline float len(const float3 a); ccl_device_inline float len_squared(const float3 a); ccl_device_inline float3 project(const float3 v, const float3 v_proj); -ccl_device_inline float3 saturate3(float3 a); ccl_device_inline float3 safe_normalize(const float3 a); ccl_device_inline float3 normalize_len(const float3 a, ccl_private float *t); ccl_device_inline float3 safe_normalize_len(const float3 a, ccl_private float *t); -ccl_device_inline float3 safe_divide_float3_float3(const float3 a, const float3 b); -ccl_device_inline float3 safe_divide_float3_float(const float3 a, const float b); +ccl_device_inline float3 safe_divide(const float3 a, const float3 b); +ccl_device_inline float3 safe_divide(const float3 a, const float b); ccl_device_inline float3 interp(float3 a, float3 b, float t); -ccl_device_inline float3 sqr3(float3 a); +ccl_device_inline float3 sqr(float3 a); ccl_device_inline bool is_zero(const float3 a); ccl_device_inline float reduce_add(const float3 a); ccl_device_inline float average(const float3 a); -ccl_device_inline bool isequal_float3(const float3 a, const float3 b); +ccl_device_inline bool isequal(const float3 a, const float3 b); /******************************************************************************* * Definition. @@ -377,14 +376,30 @@ ccl_device_inline float3 rcp(const float3 &a) return make_float3(1.0f / a.x, 1.0f / a.y, 1.0f / a.z); # endif } + +ccl_device_inline float3 saturate(float3 a) +{ + return make_float3(saturatef(a.x), saturatef(a.y), saturatef(a.z)); +} + +ccl_device_inline float3 exp(float3 v) +{ + return make_float3(expf(v.x), expf(v.y), expf(v.z)); +} + +ccl_device_inline float3 log(float3 v) +{ + return make_float3(logf(v.x), logf(v.y), logf(v.z)); +} + #endif /* !__KERNEL_METAL__ */ -ccl_device_inline float min3(float3 a) +ccl_device_inline float reduce_min(float3 a) { return min(min(a.x, a.y), a.z); } -ccl_device_inline float max3(float3 a) +ccl_device_inline float reduce_max(float3 a) { return max(max(a.x, a.y), a.z); } @@ -433,11 +448,6 @@ 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(); } -ccl_device_inline float3 saturate3(float3 a) -{ - return make_float3(saturatef(a.x), saturatef(a.y), saturatef(a.z)); -} - ccl_device_inline float3 normalize_len(const float3 a, ccl_private float *t) { *t = len(a); @@ -457,14 +467,14 @@ ccl_device_inline float3 safe_normalize_len(const float3 a, ccl_private float *t 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(const float3 a, const float3 b) { return make_float3((b.x != 0.0f) ? a.x / b.x : 0.0f, (b.y != 0.0f) ? a.y / b.y : 0.0f, (b.z != 0.0f) ? a.z / b.z : 0.0f); } -ccl_device_inline float3 safe_divide_float3_float(const float3 a, const float b) +ccl_device_inline float3 safe_divide(const float3 a, const float b) { return (b != 0.0f) ? a / b : zero_float3(); } @@ -474,7 +484,7 @@ ccl_device_inline float3 interp(float3 a, float3 b, float t) return a + t * (b - a); } -ccl_device_inline float3 sqr3(float3 a) +ccl_device_inline float3 sqr(float3 a) { return a * a; } @@ -504,7 +514,7 @@ ccl_device_inline float average(const float3 a) return reduce_add(a) * (1.0f / 3.0f); } -ccl_device_inline bool isequal_float3(const float3 a, const float3 b) +ccl_device_inline bool isequal(const float3 a, const float3 b) { #if defined(__KERNEL_METAL__) return all(a == b); @@ -513,21 +523,11 @@ ccl_device_inline bool isequal_float3(const float3 a, const float3 b) #endif } -ccl_device_inline float3 pow3(float3 v, float e) +ccl_device_inline float3 pow(float3 v, float e) { return make_float3(powf(v.x, e), powf(v.y, e), powf(v.z, e)); } -ccl_device_inline float3 exp3(float3 v) -{ - return make_float3(expf(v.x), expf(v.y), expf(v.z)); -} - -ccl_device_inline float3 log3(float3 v) -{ - return make_float3(logf(v.x), logf(v.y), logf(v.z)); -} - ccl_device_inline int3 quick_floor_to_int3(const float3 a) { #ifdef __KERNEL_SSE__ @@ -540,12 +540,12 @@ ccl_device_inline int3 quick_floor_to_int3(const float3 a) #endif } -ccl_device_inline bool isfinite3_safe(float3 v) +ccl_device_inline bool isfinite_safe(float3 v) { return isfinite_safe(v.x) && isfinite_safe(v.y) && isfinite_safe(v.z); } -ccl_device_inline float3 ensure_finite3(float3 v) +ccl_device_inline float3 ensure_finite(float3 v) { if (!isfinite_safe(v.x)) v.x = 0.0f; diff --git a/intern/cycles/util/math_float4.h b/intern/cycles/util/math_float4.h index ae9dfe75a9c..073c65c2d6a 100644 --- a/intern/cycles/util/math_float4.h +++ b/intern/cycles/util/math_float4.h @@ -55,7 +55,7 @@ ccl_device_inline float4 floor(const float4 &a); ccl_device_inline float4 mix(const float4 &a, const float4 &b, float t); #endif /* !__KERNEL_METAL__*/ -ccl_device_inline float4 safe_divide_float4_float(const float4 a, const float b); +ccl_device_inline float4 safe_divide(const float4 a, const float b); #ifdef __KERNEL_SSE__ template<size_t index_0, size_t index_1, size_t index_2, size_t index_3> @@ -500,17 +500,17 @@ ccl_device_inline float4 load_float4(ccl_private const float *v) #endif /* !__KERNEL_GPU__ */ -ccl_device_inline float4 safe_divide_float4_float(const float4 a, const float b) +ccl_device_inline float4 safe_divide(const float4 a, const float b) { return (b != 0.0f) ? a / b : zero_float4(); } -ccl_device_inline bool isfinite4_safe(float4 v) +ccl_device_inline bool isfinite_safe(float4 v) { return isfinite_safe(v.x) && isfinite_safe(v.y) && isfinite_safe(v.z) && isfinite_safe(v.w); } -ccl_device_inline float4 ensure_finite4(float4 v) +ccl_device_inline float4 ensure_finite(float4 v) { if (!isfinite_safe(v.x)) v.x = 0.0f; diff --git a/intern/cycles/util/time.cpp b/intern/cycles/util/time.cpp index d27a0415106..0295a071f39 100644 --- a/intern/cycles/util/time.cpp +++ b/intern/cycles/util/time.cpp @@ -102,7 +102,7 @@ double time_human_readable_to_seconds(const string &time_string) } else if (fraction_tokens.size() == 2) { result = atof(fraction_tokens[1].c_str()); - result *= pow(0.1, fraction_tokens[1].length()); + result *= ::pow(0.1, fraction_tokens[1].length()); } else { /* This is not a valid string, the result can not be reliable. */ diff --git a/intern/cycles/util/transform.cpp b/intern/cycles/util/transform.cpp index fa50e1db063..0bf5de57a20 100644 --- a/intern/cycles/util/transform.cpp +++ b/intern/cycles/util/transform.cpp @@ -229,17 +229,17 @@ static void transform_decompose(DecomposedTransform *decomp, const Transform *tf /* extract scale and shear first */ float3 scale, shear; scale.x = len(colx); - colx = safe_divide_float3_float(colx, scale.x); + colx = safe_divide(colx, scale.x); shear.z = dot(colx, coly); coly -= shear.z * colx; scale.y = len(coly); - coly = safe_divide_float3_float(coly, scale.y); + coly = safe_divide(coly, scale.y); shear.y = dot(colx, colz); colz -= shear.y * colx; shear.x = dot(coly, colz); colz -= shear.x * coly; scale.z = len(colz); - colz = safe_divide_float3_float(colz, scale.z); + colz = safe_divide(colz, scale.z); transform_set_column(&M, 0, colx); transform_set_column(&M, 1, coly); diff --git a/intern/cycles/util/transform.h b/intern/cycles/util/transform.h index 477272f0ba6..a460581d1f3 100644 --- a/intern/cycles/util/transform.h +++ b/intern/cycles/util/transform.h @@ -493,13 +493,13 @@ ccl_device void transform_motion_array_interpolate(ccl_private Transform *tfm, ccl_device_inline bool transform_isfinite_safe(ccl_private Transform *tfm) { - return isfinite4_safe(tfm->x) && isfinite4_safe(tfm->y) && isfinite4_safe(tfm->z); + return isfinite_safe(tfm->x) && isfinite_safe(tfm->y) && isfinite_safe(tfm->z); } ccl_device_inline bool transform_decomposed_isfinite_safe(ccl_private DecomposedTransform *decomp) { - return isfinite4_safe(decomp->x) && isfinite4_safe(decomp->y) && isfinite4_safe(decomp->z) && - isfinite4_safe(decomp->w); + return isfinite_safe(decomp->x) && isfinite_safe(decomp->y) && isfinite_safe(decomp->z) && + isfinite_safe(decomp->w); } #ifndef __KERNEL_GPU__ |