diff options
Diffstat (limited to 'intern/cycles/kernel/shaders/node_tangent.osl')
-rw-r--r-- | intern/cycles/kernel/shaders/node_tangent.osl | 46 |
1 files changed, 22 insertions, 24 deletions
diff --git a/intern/cycles/kernel/shaders/node_tangent.osl b/intern/cycles/kernel/shaders/node_tangent.osl index c527070a2c8..44eb9973f3d 100644 --- a/intern/cycles/kernel/shaders/node_tangent.osl +++ b/intern/cycles/kernel/shaders/node_tangent.osl @@ -16,33 +16,31 @@ #include "stdosl.h" -shader node_tangent( - normal NormalIn = N, - string attr_name = "geom:tangent", - string direction_type = "radial", - string axis = "z", - output normal Tangent = normalize(dPdu)) +shader node_tangent(normal NormalIn = N, + string attr_name = "geom:tangent", + string direction_type = "radial", + string axis = "z", + output normal Tangent = normalize(dPdu)) { - vector T; + vector T; - if (direction_type == "uv_map") { - getattribute(attr_name, T); - } - else if (direction_type == "radial") { - point generated; + if (direction_type == "uv_map") { + getattribute(attr_name, T); + } + else if (direction_type == "radial") { + point generated; - if (!getattribute("geom:generated", generated)) - generated = P; + if (!getattribute("geom:generated", generated)) + generated = P; - if (axis == "x") - T = vector(0.0, -(generated[2] - 0.5), (generated[1] - 0.5)); - else if (axis == "y") - T = vector(-(generated[2] - 0.5), 0.0, (generated[0] - 0.5)); - else - T = vector(-(generated[1] - 0.5), (generated[0] - 0.5), 0.0); - } + if (axis == "x") + T = vector(0.0, -(generated[2] - 0.5), (generated[1] - 0.5)); + else if (axis == "y") + T = vector(-(generated[2] - 0.5), 0.0, (generated[0] - 0.5)); + else + T = vector(-(generated[1] - 0.5), (generated[0] - 0.5), 0.0); + } - T = transform("object", "world", T); - Tangent = cross(NormalIn, normalize(cross(T, NormalIn))); + T = transform("object", "world", T); + Tangent = cross(NormalIn, normalize(cross(T, NormalIn))); } - |