[Bf-blender-cvs] [94ec80d21cc] master: CCG: Remove number of layers from key

Sergey Sharybin noreply at git.blender.org
Wed Sep 5 16:05:20 CEST 2018


Commit: 94ec80d21cc437c56dde8b8ff04a852810656eb7
Author: Sergey Sharybin
Date:   Wed Sep 5 15:56:50 2018 +0200
Branches: master
https://developer.blender.org/rB94ec80d21cc437c56dde8b8ff04a852810656eb7

CCG: Remove number of layers from key

The issue there was that number of layers did not include normals,
while element size counts bytes used by normals. This sounds very
fragile and dangerous to work further. Also, one value can easily
be delivered from another, so it is redundancy going on here.

Possible difference now is that multires subdivision will copy
normals to a higher levels. Shouldn't be big of a problem, since
leaving old normals and updating coordinates is not correct either.

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

M	source/blender/blenkernel/BKE_ccg.h
M	source/blender/blenkernel/intern/CCGSubSurf.c
M	source/blender/blenkernel/intern/multires.c

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

diff --git a/source/blender/blenkernel/BKE_ccg.h b/source/blender/blenkernel/BKE_ccg.h
index 7d5d423282d..65d4688947e 100644
--- a/source/blender/blenkernel/BKE_ccg.h
+++ b/source/blender/blenkernel/BKE_ccg.h
@@ -72,7 +72,6 @@ typedef struct CCGKey {
 	 * true */
 	int mask_offset;
 
-	int num_layers;
 	int has_normals;
 	int has_mask;
 } CCGKey;
diff --git a/source/blender/blenkernel/intern/CCGSubSurf.c b/source/blender/blenkernel/intern/CCGSubSurf.c
index c6224da2fe0..40dea6ca663 100644
--- a/source/blender/blenkernel/intern/CCGSubSurf.c
+++ b/source/blender/blenkernel/intern/CCGSubSurf.c
@@ -1553,7 +1553,6 @@ void CCG_key(CCGKey *key, const CCGSubSurf *ss, int level)
 
 	key->elem_size = ss->meshIFC.vertDataSize;
 	key->has_normals = ss->calcVertNormals;
-	key->num_layers = ss->meshIFC.numLayers;
 
 	/* if normals are present, always the last three floats of an
 	 * element */
diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c
index 636157b08dd..279c6eb0c82 100644
--- a/source/blender/blenkernel/intern/multires.c
+++ b/source/blender/blenkernel/intern/multires.c
@@ -578,7 +578,7 @@ static void multires_copy_dm_grid(CCGElem *gridA, CCGElem *gridB, CCGKey *keyA,
 			for (x = 0; x < keyB->grid_size; x++, j++)
 				memcpy(CCG_elem_offset_co(keyA, gridA, y * skip * keyA->grid_size + x * skip),
 				       CCG_elem_offset_co(keyB, gridB, j),
-				       sizeof(float) * keyA->num_layers);
+				       keyA->elem_size);
 	}
 	else {
 		skip = (keyB->grid_size - 1) / (keyA->grid_size - 1);
@@ -587,7 +587,7 @@ static void multires_copy_dm_grid(CCGElem *gridA, CCGElem *gridB, CCGKey *keyA,
 			for (x = 0; x < keyA->grid_size; x++, j++)
 				memcpy(CCG_elem_offset_co(keyA, gridA, j),
 				       CCG_elem_offset_co(keyB, gridB, y * skip * keyB->grid_size + x * skip),
-				       sizeof(float) * keyA->num_layers);
+				       keyA->elem_size);
 	}
 }



More information about the Bf-blender-cvs mailing list