diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2013-05-27 21:48:02 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2013-05-27 21:48:02 +0400 |
commit | 601b8c1041a6eece565e575d127a6056bc45cbbb (patch) | |
tree | 1f29d388e4bff9c06431e91ad6d4ad7032f66605 /intern/cycles/kernel/shaders/node_normal_map.osl | |
parent | 833ca58260ec024abde2d43ba39184f74e66e86b (diff) |
Fix #35505: cycles object space normal mapping did not match blender internal.
Now it uses the same (strange) YZ flipping convention.
Diffstat (limited to 'intern/cycles/kernel/shaders/node_normal_map.osl')
-rw-r--r-- | intern/cycles/kernel/shaders/node_normal_map.osl | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/intern/cycles/kernel/shaders/node_normal_map.osl b/intern/cycles/kernel/shaders/node_normal_map.osl index c3d6e7bd391..9018cca1390 100644 --- a/intern/cycles/kernel/shaders/node_normal_map.osl +++ b/intern/cycles/kernel/shaders/node_normal_map.osl @@ -55,10 +55,20 @@ shader node_normal_map( Normal = normal(0, 0, 0); } } - else if (space == "Object") + else if (space == "Object") { + /* strange blender convention */ + mcolor[1] = -mcolor[1]; + mcolor[2] = -mcolor[2]; + Normal = normalize(transform("object", "world", vector(mcolor))); - else if (space == "World") + } + else if (space == "World") { + /* strange blender convention */ + mcolor[1] = -mcolor[1]; + mcolor[2] = -mcolor[2]; + Normal = normalize(vector(mcolor)); + } if (Strength != 1.0) Normal = normalize(NormalIn + (Normal - NormalIn) * max(Strength, 0.0)); |