Cycles / OSL:
authorThomas Dinges <blender@dingto.org>
Sun, 10 Mar 2013 00:42:47 +0000 (00:42 +0000)
committerThomas Dinges <blender@dingto.org>
Sun, 10 Mar 2013 00:42:47 +0000 (00:42 +0000)
* More small improvements: return immediately, and use "else if".

intern/cycles/kernel/shaders/node_math.osl
intern/cycles/kernel/shaders/node_texture.h
intern/cycles/kernel/shaders/node_vector_math.osl
intern/cycles/kernel/shaders/node_wave_texture.osl

index 24dce89..2ec1a5f 100644 (file)
@@ -49,37 +49,37 @@ shader node_math(
 
        if (type == "Add")
                Value = Value1 + Value2;
-       if (type == "Subtract")
+       else if (type == "Subtract")
                Value = Value1 - Value2;
-       if (type == "Multiply")
+       else if (type == "Multiply")
                Value = Value1 * Value2;
-       if (type == "Divide")
+       else if (type == "Divide")
                Value = safe_divide(Value1, Value2);
-       if (type == "Sine")
+       else if (type == "Sine")
                Value = sin(Value1);
-       if (type == "Cosine")
+       else if (type == "Cosine")
                Value = cos(Value1);
-       if (type == "Tangent")
+       else if (type == "Tangent")
                Value = tan(Value1);
-       if (type == "Arcsine")
+       else if (type == "Arcsine")
                Value = asin(Value1);
-       if (type == "Arccosine")
+       else if (type == "Arccosine")
                Value = acos(Value1);
-       if (type == "Arctangent")
+       else if (type == "Arctangent")
                Value = atan(Value1);
-       if (type == "Power")
+       else if (type == "Power")
                Value = pow(Value1, Value2);
-       if (type == "Logarithm")
+       else if (type == "Logarithm")
                Value = safe_log(Value1, Value2);
-       if (type == "Minimum")
+       else if (type == "Minimum")
                Value = min(Value1, Value2);
-       if (type == "Maximum")
+       else if (type == "Maximum")
                Value = max(Value1, Value2);
-       if (type == "Round")
+       else if (type == "Round")
                Value = floor(Value1 + 0.5);
-       if (type == "Less Than")
+       else if (type == "Less Than")
                Value = Value1 < Value2;
-       if (type == "Greater Than")
+       else if (type == "Greater Than")
                Value = Value1 > Value2;
 
        if (Clamp)
index 6773548..f2aedb0 100644 (file)
 
 float voronoi_distance(string distance_metric, vector d, float e)
 {
-       float result = 0.0;
-
        if (distance_metric == "Distance Squared")
-               result = dot(d, d);
+               return dot(d, d);
        if (distance_metric == "Actual Distance")
-               result = length(d);
+               return length(d);
        if (distance_metric == "Manhattan")
-               result = fabs(d[0]) + fabs(d[1]) + fabs(d[2]);
+               return fabs(d[0]) + fabs(d[1]) + fabs(d[2]);
        if (distance_metric == "Chebychev")
-               result = max(fabs(d[0]), max(fabs(d[1]), fabs(d[2])));
+               return max(fabs(d[0]), max(fabs(d[1]), fabs(d[2])));
        if (distance_metric == "Minkovsky 1/2")
-               result = sqrt(fabs(d[0])) + sqrt(fabs(d[1])) + sqrt(fabs(d[1]));
+               return sqrt(fabs(d[0])) + sqrt(fabs(d[1])) + sqrt(fabs(d[1]));
        if (distance_metric == "Minkovsky 4")
-               result = sqrt(sqrt(dot(d * d, d * d)));
+               return sqrt(sqrt(dot(d * d, d * d)));
        if (distance_metric == "Minkovsky")
-               result = pow(pow(fabs(d[0]), e) + pow(fabs(d[1]), e) + pow(fabs(d[2]), e), 1.0 / e);
+               return pow(pow(fabs(d[0]), e) + pow(fabs(d[1]), e) + pow(fabs(d[2]), e), 1.0 / e);
        
-       return result;
+       return 0.0;
 }
 
 /* Voronoi / Worley like */
@@ -207,24 +205,24 @@ float noise_wave(string wave, float a)
        float result = 0.0;
 
        if (wave == "Sine") {
-               result = 0.5 + 0.5 * sin(a);
+               return 0.5 + 0.5 * sin(a);
        }
-       else if (wave == "Saw") {
+       if (wave == "Saw") {
                float b = 2 * M_PI;
                int n = (int)(a / b);
                a -= n * b;
                if (a < 0) a += b;
 
-               result = a / b;
+               return a / b;
        }
-       else if (wave == "Tri") {
+       if (wave == "Tri") {
                float b = 2 * M_PI;
                float rmax = 1.0;
 
-               result = rmax - 2.0 * fabs(floor((a * (1.0 / b)) + 0.5) - (a * (1.0 / b)));
+               return rmax - 2.0 * fabs(floor((a * (1.0 / b)) + 0.5) - (a * (1.0 / b)));
        }
 
-       return result;
+       return 0.0;
 }
 
 /* Turbulence */
index f22a6e8..4c94fc6 100644 (file)
@@ -29,23 +29,23 @@ shader node_vector_math(
                Vector = Vector1 + Vector2;
                Value = (abs(Vector[0]) + abs(Vector[1]) + abs(Vector[2])) / 3.0;
        }
-       if (type == "Subtract") {
+       else if (type == "Subtract") {
                Vector = Vector1 - Vector2;
                Value = (abs(Vector[0]) + abs(Vector[1]) + abs(Vector[2])) / 3.0;
        }
-       if (type == "Average") {
+       else if (type == "Average") {
                Value = length(Vector1 + Vector2);
                Vector = normalize(Vector1 + Vector2);
        }
-       if (type == "Dot Product") {
+       else if (type == "Dot Product") {
                Value = dot(Vector1, Vector2);
        }
-       if (type == "Cross Product") {
+       else if (type == "Cross Product") {
                vector c = cross(Vector1, Vector2);
                Value = length(c);
                Vector = normalize(c);
        }
-       if (type == "Normalize") {
+       else if (type == "Normalize") {
                Value = length(Vector1);
                Vector = normalize(Vector1);
        }
index 11c4689..12b837b 100644 (file)
@@ -27,7 +27,6 @@ float wave(point p, float scale, string type, float detail, float distortion, fl
        float y = p[1] * scale;
        float z = p[2] * scale;
 
-       float result = 0.0;
        float n = 0.0;
 
        if (type == "Bands") {
@@ -40,9 +39,7 @@ float wave(point p, float scale, string type, float detail, float distortion, fl
        if (distortion != 0.0) {
                n = n + (distortion * noise_turbulence(p * dscale, "Perlin", detail, 0));
        }
-       result = noise_wave("Sine", n);
-       
-       return result;
+       return noise_wave("Sine", n);
 }
 
 shader node_wave_texture(
@@ -63,6 +60,6 @@ shader node_wave_texture(
                p = transform(mapping, p);
 
        Fac = wave(p, Scale, Type, Detail, Distortion, DetailScale);
-       Color = color(Fac, Fac, Fac);
+       Color = Fac;
 }