[Bf-blender-cvs] [ea75371] master: Fix another shading issue with new split normals (deform modifier after a subsurf one).

Bastien Montagne noreply at git.blender.org
Mon Apr 21 17:59:37 CEST 2014


Commit: ea753710bf81560ebf0d7c7639e69758246a5076
Author: Bastien Montagne
Date:   Mon Apr 21 17:56:05 2014 +0200
https://developer.blender.org/rBea753710bf81560ebf0d7c7639e69758246a5076

Fix another shading issue with new split normals (deform modifier after a subsurf one).

Just always tag tessellated CDlayers as dirty when we recompute split normals!

Also simplified a bit end of mesh_calc_modifiers.

===================================================================

M	source/blender/blenkernel/intern/DerivedMesh.c

===================================================================

diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c
index c35efc8..10d6ec8 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -402,6 +402,7 @@ void DM_ensure_normals(DerivedMesh *dm)
 static void DM_calc_loop_normals(DerivedMesh *dm, float split_angle)
 {
 	dm->calcLoopNormals(dm, split_angle);
+	dm->dirty |= DM_DIRTY_TESS_CDLAYERS;
 }
 
 /* note: until all modifiers can take MPoly's as input,
@@ -1877,18 +1878,9 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos
 	if (do_loop_normals) {
 		/* Compute loop normals (note: will compute poly and vert normals as well, if needed!) */
 		DM_calc_loop_normals(finaldm, loop_normals_split_angle);
-
-		if (finaldm->getNumTessFaces(finaldm) == 0) {
-			finaldm->recalcTessellation(finaldm);
-		}
-		/* Even if tessellation is not needed, we have for sure modified loop normals layer! */
-		else {
-			/* A tessellation already exists, it should always have a CD_ORIGINDEX. */
-			BLI_assert(CustomData_has_layer(&finaldm->faceData, CD_ORIGINDEX));
-			DM_update_tessface_data(finaldm);
-		}
 	}
-	else {
+
+	{
 		/* calculating normals can re-calculate tessfaces in some cases */
 #if 0
 		int num_tessface = finaldm->getNumTessFaces(finaldm);




More information about the Bf-blender-cvs mailing list