Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2013-05-11 13:31:58 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2013-05-11 13:31:58 +0400
commit561cf26c2f92a11c8f2fa2da79bcaebf2647fc76 (patch)
tree31b680b7aa9e21d230128dc9db9836aa5df27574 /intern/cycles/kernel/shaders/node_normal_map.osl
parent18fda6d84c139d1e105dc58796f37effc31f35d5 (diff)
Fix #35306: cycles normal mapping not working with flat shading.
Diffstat (limited to 'intern/cycles/kernel/shaders/node_normal_map.osl')
-rw-r--r--intern/cycles/kernel/shaders/node_normal_map.osl17
1 files changed, 11 insertions, 6 deletions
diff --git a/intern/cycles/kernel/shaders/node_normal_map.osl b/intern/cycles/kernel/shaders/node_normal_map.osl
index 4428a12ac41..c3d6e7bd391 100644
--- a/intern/cycles/kernel/shaders/node_normal_map.osl
+++ b/intern/cycles/kernel/shaders/node_normal_map.osl
@@ -33,15 +33,17 @@ shader node_normal_map(
vector tangent;
vector ninterp;
float tangent_sign;
+ float is_smooth;
+
+ getattribute("geom:is_smooth", is_smooth);
+ if (!is_smooth)
+ ninterp = Ng;
// get _unnormalized_ interpolated normal and tangent
- if (!getattribute(attr_name, tangent) ||
- !getattribute(attr_sign_name, tangent_sign) ||
- !getattribute("geom:N", ninterp))
+ if (getattribute(attr_name, tangent) &&
+ getattribute(attr_sign_name, tangent_sign) &&
+ (!is_smooth || getattribute("geom:N", ninterp)))
{
- Normal = normal(0, 0, 0);
- }
- else {
// apply normal map
vector B = tangent_sign * cross(ninterp, tangent);
Normal = normalize(mcolor[0] * tangent + mcolor[1] * B + mcolor[2] * ninterp);
@@ -49,6 +51,9 @@ shader node_normal_map(
// transform to world space
Normal = normalize(transform("object", "world", Normal));
}
+ else {
+ Normal = normal(0, 0, 0);
+ }
}
else if (space == "Object")
Normal = normalize(transform("object", "world", vector(mcolor)));