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:
authorSergey Sharybin <sergey.vfx@gmail.com>2017-02-22 12:53:28 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2017-02-22 12:54:36 +0300
commit36c4fc1ea9d987ec88b27c04927ac44e12a49778 (patch)
treefc91b50d4e4e13c08980f7ac9f34463abaad4291 /source/blender/blenkernel/intern/mesh.c
parent2c30fd83f1513b4e9f146024501b15bd31ee4804 (diff)
Cycles: Fix shading with autosmooth and custom normals
New logic of split_faces was leaving mesh in a proper state from Blender's point of view, but Cycles wanted loop normals to be "flushed" to vertex normals. Now we do such a flush from Cycles side again, so we don't leave bad meshes behind. Thanks Bastien for assistance here!
Diffstat (limited to 'source/blender/blenkernel/intern/mesh.c')
-rw-r--r--source/blender/blenkernel/intern/mesh.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c
index 7a27c43e28f..918032b2df8 100644
--- a/source/blender/blenkernel/intern/mesh.c
+++ b/source/blender/blenkernel/intern/mesh.c
@@ -2338,7 +2338,7 @@ static void split_faces_split_new_edges(
* NOTE: Will leave CD_NORMAL loop data layer which is
* used by render engines to set shading up.
*/
-void BKE_mesh_split_faces(Mesh *mesh)
+void BKE_mesh_split_faces(Mesh *mesh, bool free_loop_normals)
{
const int num_polys = mesh->totpoly;
@@ -2392,7 +2392,9 @@ void BKE_mesh_split_faces(Mesh *mesh)
/* Note: after this point mesh is expected to be valid again. */
/* CD_NORMAL is expected to be temporary only. */
- CustomData_free_layers(&mesh->ldata, CD_NORMAL, mesh->totloop);
+ if (free_loop_normals) {
+ CustomData_free_layers(&mesh->ldata, CD_NORMAL, mesh->totloop);
+ }
if (lnors_spacearr) {
/* Also frees new_verts/edges temp data, since we used its memarena to allocate them. */