diff options
Diffstat (limited to 'intern/cycles/kernel/shaders/node_gradient_texture.osl')
-rw-r--r-- | intern/cycles/kernel/shaders/node_gradient_texture.osl | 89 |
1 files changed, 44 insertions, 45 deletions
diff --git a/intern/cycles/kernel/shaders/node_gradient_texture.osl b/intern/cycles/kernel/shaders/node_gradient_texture.osl index f458937a18f..52bf466673d 100644 --- a/intern/cycles/kernel/shaders/node_gradient_texture.osl +++ b/intern/cycles/kernel/shaders/node_gradient_texture.osl @@ -21,59 +21,58 @@ float gradient(point p, string type) { - float x, y, z; - - x = p[0]; - y = p[1]; - z = p[2]; + float x, y, z; - float result = 0.0; + x = p[0]; + y = p[1]; + z = p[2]; - if (type == "linear") { - result = x; - } - else if (type == "quadratic") { - float r = max(x, 0.0); - result = r * r; - } - else if (type == "easing") { - float r = min(max(x, 0.0), 1.0); - float t = r * r; - - result = (3.0 * t - 2.0 * t * r); - } - else if (type == "diagonal") { - result = (x + y) * 0.5; - } - else if (type == "radial") { - result = atan2(y, x) / M_2PI + 0.5; - } - else { - float r = max(1.0 - sqrt(x * x + y * y + z * z), 0.0); + float result = 0.0; - if (type == "quadratic_sphere") - result = r * r; - else if (type == "spherical") - result = r; - } + if (type == "linear") { + result = x; + } + else if (type == "quadratic") { + float r = max(x, 0.0); + result = r * r; + } + else if (type == "easing") { + float r = min(max(x, 0.0), 1.0); + float t = r * r; - return result; + result = (3.0 * t - 2.0 * t * r); + } + else if (type == "diagonal") { + result = (x + y) * 0.5; + } + else if (type == "radial") { + result = atan2(y, x) / M_2PI + 0.5; + } + else { + float r = max(1.0 - sqrt(x * x + y * y + z * z), 0.0); + + if (type == "quadratic_sphere") + result = r * r; + else if (type == "spherical") + result = r; + } + + return result; } shader node_gradient_texture( - int use_mapping = 0, - matrix mapping = matrix(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), - string type = "linear", - point Vector = P, - output float Fac = 0.0, - output color Color = 0.0) + int use_mapping = 0, + matrix mapping = matrix(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), + string type = "linear", + point Vector = P, + output float Fac = 0.0, + output color Color = 0.0) { - point p = Vector; + point p = Vector; - if (use_mapping) - p = transform(mapping, p); + if (use_mapping) + p = transform(mapping, p); - Fac = gradient(p, type); - Color = color(Fac, Fac, Fac); + Fac = gradient(p, type); + Color = color(Fac, Fac, Fac); } - |