OSL:
authorThomas Dinges <blender@dingto.org>
Tue, 4 Sep 2012 11:41:48 +0000 (11:41 +0000)
committerThomas Dinges <blender@dingto.org>
Tue, 4 Sep 2012 11:41:48 +0000 (11:41 +0000)
* Gradient texture renders now.

intern/cycles/kernel/osl/nodes/node_gradient_texture.osl

index e6fa014324cb8cb0774a01a5f41b8d0a2fcef90d..a8dd65ae23bfc618d74adcee3b249768bf7f5e12 100644 (file)
 
 /* Gradient */
 
-float gradient(point p, string progression, string axis)
+float gradient(point p, string type)
 {
        float x, y;
-
-       if(axis == "Vertical") {
-               x= p[1];
-               y= p[0];
-       }
-       else {
-               x= p[0];
-               y= p[1];
-       }
+       
+       x = p[0];
+       y = p[1];
 
        float result = 0.0;
 
-       if(progression == "Linear") {
+       if(type == "Linear") {
                result = (1.0 + x)/2.0;
        }
-       else if(progression == "Quadratic") {
+       else if(type == "Quadratic") {
                float r = max((1.0 + x)/2.0, 0.0);
                result = r*r;
        }
-       else if(progression == "Easing") {
+       else if(type == "Easing") {
                float r = min(max((1.0 + x)/2.0, 0.0), 1.0);
                float t = r*r;
                
                result = (3.0*t - 2.0*t*r);
        }
-       else if(progression == "Diagonal") {
+       else if(type == "Diagonal") {
                result = (2.0 + x + y)/4.0;
        }
-       else if(progression == "Radial") {
+       else if(type == "Radial") {
                result = atan2(y, x)/(2*M_PI) + 0.5;
        }
        else {
                float r = max(1.0 - sqrt(x*x + y*y + p[2]*p[2]), 0.0);
 
-               if(progression == "Quadratic Sphere")
+               if(type == "Quadratic Sphere")
                        result = r*r;
-               else if(progression == "Spherical")
+               else if(type == "Spherical")
                        result = r;
        }
 
@@ -68,11 +62,12 @@ float gradient(point p, string progression, string axis)
 }
 
 shader node_gradient_texture(
-       string Progression = "Linear",
-       string Axis = "Horizontal",
+       string Type = "Linear",
        point Vector = P,
-       output float Fac = 0.0)
+       output float Fac = 0.0,
+       output color Color = color(0.0, 0.0, 0.0))
 {
-       Fac = gradient(Vector, Progression, Axis);
+       Fac = gradient(Vector, Type);
+       Color = color(Fac, Fac, Fac);
 }