[Bf-blender-cvs] [6c12039] soc-2013-paint: Change derived mesh material calculation slightly to make it more straightforward (access materials by mface->mat_nr)
Antony Riakiotakis
noreply at git.blender.org
Tue Apr 22 12:39:58 CEST 2014
Commit: 6c12039c1c971963a10d932d2f9d43748545f92b
Author: Antony Riakiotakis
Date: Sun Apr 20 20:12:25 2014 +0300
https://developer.blender.org/rB6c12039c1c971963a10d932d2f9d43748545f92b
Change derived mesh material calculation slightly to make it more
straightforward (access materials by mface->mat_nr)
===================================================================
M source/blender/blenkernel/intern/DerivedMesh.c
M source/blender/blenkernel/intern/cdderivedmesh.c
M source/blender/blenkernel/intern/subsurf_ccg.c
M source/blender/gpu/intern/gpu_buffers.c
===================================================================
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c
index b0c2e2f..967eac1 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -506,8 +506,8 @@ void DM_update_materials(DerivedMesh *dm, Object *ob)
dm->mat = MEM_callocN(totmat * sizeof(*dm->mat), "DerivedMesh.mat");
- for (i = 1; i < totmat; i++) {
- dm->mat[i] = give_current_material(ob, i);
+ for (i = 0; i < totmat - 1; i++) {
+ dm->mat[i] = give_current_material(ob, i + 1);
}
}
diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c
index 4d6763c..69483a3 100644
--- a/source/blender/blenkernel/intern/cdderivedmesh.c
+++ b/source/blender/blenkernel/intern/cdderivedmesh.c
@@ -710,7 +710,7 @@ static void cdDM_drawFacesTex_common(DerivedMesh *dm,
if (uvflag & DM_DRAW_USE_TEXPAINT_UV) {
if (mf->mat_nr != mat_nr_cache) {
if (dm->totmat > 1) {
- int mat_i = mf->mat_nr + 1;
+ int mat_i = mf->mat_nr;
if (dm->mat[mat_i] && dm->mat[mat_i]->texpaintslot && dm->mat[mat_i]->texpaintslot->uvname[0])
tf_base = CustomData_get_layer_named(&dm->faceData, CD_MTFACE, dm->mat[mat_i]->texpaintslot->uvname);
else
diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c
index a4ee12c..31a7314 100644
--- a/source/blender/blenkernel/intern/subsurf_ccg.c
+++ b/source/blender/blenkernel/intern/subsurf_ccg.c
@@ -2305,9 +2305,8 @@ static void ccgDM_drawFacesTex_common(DerivedMesh *dm,
if (flag & DM_DRAW_USE_TEXPAINT_UV) {
if (mat_nr != mat_nr_cache) {
if (dm->totmat > 1) {
- int mat_i = mat_nr + 1;
- if (dm->mat[mat_i] && dm->mat[mat_i]->texpaintslot && dm->mat[mat_i]->texpaintslot->uvname[0])
- tf_base = CustomData_get_layer_named(&dm->faceData, CD_MTFACE, dm->mat[mat_i]->texpaintslot->uvname);
+ if (dm->mat[mat_nr] && dm->mat[mat_nr]->texpaintslot && dm->mat[mat_nr]->texpaintslot->uvname[0])
+ tf_base = CustomData_get_layer_named(&dm->faceData, CD_MTFACE, dm->mat[mat_nr]->texpaintslot->uvname);
else
tf_base = CustomData_get_layer(&dm->faceData, CD_MTFACE);
}
diff --git a/source/blender/gpu/intern/gpu_buffers.c b/source/blender/gpu/intern/gpu_buffers.c
index 9ca1954..e5ca532 100644
--- a/source/blender/gpu/intern/gpu_buffers.c
+++ b/source/blender/gpu/intern/gpu_buffers.c
@@ -852,18 +852,11 @@ static void GPU_buffer_copy_uv_texpaint(DerivedMesh *dm, float *varray, int *ind
f = dm->getTessFaceArray(dm);
mtface_base = MEM_mallocN(totmaterial * sizeof(*mtface_base), "texslots");
- if (totmaterial > 1) {
- for (i = 0; i < totmaterial - 1; i++) {
- int mat_i = i + 1;
- if (dm->mat[mat_i] && dm->mat[mat_i]->texpaintslot && dm->mat[mat_i]->texpaintslot->uvname[0])
- mtface_base[i] = CustomData_get_layer_named(&dm->faceData, CD_MTFACE, dm->mat[mat_i]->texpaintslot->uvname);
- else
- mtface_base[i] = CustomData_get_layer(&dm->faceData, CD_MTFACE);
- }
- }
- else {
- /* Only default material, use active */
- mtface_base[0] = CustomData_get_layer(&dm->faceData, CD_MTFACE);
+ for (i = 0; i < totmaterial; i++) {
+ if (dm->mat[i] && dm->mat[i]->texpaintslot && dm->mat[i]->texpaintslot->uvname[0])
+ mtface_base[i] = CustomData_get_layer_named(&dm->faceData, CD_MTFACE, dm->mat[i]->texpaintslot->uvname);
+ else
+ mtface_base[i] = CustomData_get_layer(&dm->faceData, CD_MTFACE);
}
totface = dm->getNumTessFaces(dm);
More information about the Bf-blender-cvs
mailing list