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>2018-09-05 16:56:50 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2018-09-05 16:56:50 +0300
commit94ec80d21cc437c56dde8b8ff04a852810656eb7 (patch)
tree3c96802d6d92c47419f827f61f88b61b46dd8ec6
parent44d4a61ed03ac6fc51485ea5621f45098817bcee (diff)
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.
-rw-r--r--source/blender/blenkernel/BKE_ccg.h1
-rw-r--r--source/blender/blenkernel/intern/CCGSubSurf.c1
-rw-r--r--source/blender/blenkernel/intern/multires.c4
3 files changed, 2 insertions, 4 deletions
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);
}
}