code cleanup: remove unused and unsupported functions from libmv-capi
[blender.git] / intern / cycles / kernel / svm / svm_math.h
index 401bd22b45a030e9b44cb86e35ae5bead160ae7f..c7cd5200cd06b4de38710cc3bb8dc2b39e0abede 100644 (file)
 
 CCL_NAMESPACE_BEGIN
 
-__device float safe_asinf(float a)
-{
-       if(a <= -1.0f)
-               return -M_PI_2;
-       else if(a >= 1.0f)
-               return M_PI_2_F;
-
-       return asinf(a);
-}
-
-__device float safe_acosf(float a)
-{
-       if(a <= -1.0f)
-               return M_PI_F;
-       else if(a >= 1.0f)
-               return 0.0f;
-
-       return acosf(a);
-}
-
-__device float safe_powf(float a, float b)
-{
-       if(b == 0.0f)
-               return 1.0f;
-       if(a == 0.0f)
-               return 0.0f;
-       if(a < 0.0f && b != (int)b)
-               return 0.0f;
-       
-       return powf(a, b);
-}
-
-__device float safe_logf(float a, float b)
-{
-       if(a < 0.0f || b < 0.0f)
-               return 0.0f;
-
-       return logf(a)/logf(b);
-}
-
-__device float safe_divide(float a, float b)
-{
-       float result;
-
-       if(b == 0.0f)
-               result = 0.0f;
-       else
-               result = a/b;
-       
-       return result;
-}
-
 __device float svm_math(NodeMath type, float Fac1, float Fac2)
 {
        float Fac;
@@ -108,21 +56,28 @@ __device float svm_math(NodeMath type, float Fac1, float Fac2)
                Fac = Fac1 < Fac2;
        else if(type == NODE_MATH_GREATER_THAN)
                Fac = Fac1 > Fac2;
+       else if(type == NODE_MATH_CLAMP)
+               Fac = clamp(Fac1, 0.0f, 1.0f);
        else
                Fac = 0.0f;
        
        return Fac;
 }
 
+__device float average_fac(float3 v)
+{
+       return (fabsf(v.x) + fabsf(v.y) + fabsf(v.z))/3.0f;
+}
+
 __device void svm_vector_math(float *Fac, float3 *Vector, NodeVectorMath type, float3 Vector1, float3 Vector2)
 {
        if(type == NODE_VECTOR_MATH_ADD) {
                *Vector = Vector1 + Vector2;
-               *Fac = (fabsf(Vector->x) + fabsf(Vector->y) + fabsf(Vector->z))/3.0f;
+               *Fac = average_fac(*Vector);
        }
        else if(type == NODE_VECTOR_MATH_SUBTRACT) {
                *Vector = Vector1 - Vector2;
-               *Fac = (fabsf(Vector->x) + fabsf(Vector->y) + fabsf(Vector->z))/3.0f;
+               *Fac = average_fac(*Vector);
        }
        else if(type == NODE_VECTOR_MATH_AVERAGE) {
                *Fac = len(Vector1 + Vector2);