diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2013-05-11 13:31:58 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2013-05-11 13:31:58 +0400 |
commit | 561cf26c2f92a11c8f2fa2da79bcaebf2647fc76 (patch) | |
tree | 31b680b7aa9e21d230128dc9db9836aa5df27574 /intern/cycles/blender/blender_mesh.cpp | |
parent | 18fda6d84c139d1e105dc58796f37effc31f35d5 (diff) |
Fix #35306: cycles normal mapping not working with flat shading.
Diffstat (limited to 'intern/cycles/blender/blender_mesh.cpp')
-rw-r--r-- | intern/cycles/blender/blender_mesh.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/intern/cycles/blender/blender_mesh.cpp b/intern/cycles/blender/blender_mesh.cpp index 7f02bc68e6b..d628fa04f92 100644 --- a/intern/cycles/blender/blender_mesh.cpp +++ b/intern/cycles/blender/blender_mesh.cpp @@ -106,9 +106,16 @@ static void mikk_get_normal(const SMikkTSpaceContext *context, float N[3], const { MikkUserData *userdata = (MikkUserData*)context->m_pUserData; BL::MeshTessFace f = userdata->mesh.tessfaces[face_num]; - int4 vi = get_int4(f.vertices_raw()); - BL::MeshVertex v = userdata->mesh.vertices[vi[vert_num]]; - float3 vN = get_float3(v.normal()); + float3 vN; + + if(f.use_smooth()) { + int4 vi = get_int4(f.vertices_raw()); + BL::MeshVertex v = userdata->mesh.vertices[vi[vert_num]]; + vN = get_float3(v.normal()); + } + else { + vN = get_float3(f.normal()); + } N[0] = vN.x; N[1] = vN.y; |