[Bf-blender-cvs] [a5e3c4f] temp-derivedmesh-looptri: Port UV display to new design. As plus, we can remove the extra buffer completely
Antony Riakiotakis
noreply at git.blender.org
Wed Jul 15 20:18:37 CEST 2015
Commit: a5e3c4f04ce0b36ed78c88a221ccca5a3d2bcd50
Author: Antony Riakiotakis
Date: Wed Jul 15 20:17:55 2015 +0200
Branches: temp-derivedmesh-looptri
https://developer.blender.org/rBa5e3c4f04ce0b36ed78c88a221ccca5a3d2bcd50
Port UV display to new design. As plus, we can remove the extra buffer completely
===================================================================
M source/blender/blenkernel/intern/cdderivedmesh.c
M source/blender/gpu/GPU_buffers.h
M source/blender/gpu/intern/gpu_buffers.c
===================================================================
diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c
index bf1a9cf..e5bdb2b 100644
--- a/source/blender/blenkernel/intern/cdderivedmesh.c
+++ b/source/blender/blenkernel/intern/cdderivedmesh.c
@@ -371,14 +371,14 @@ static void cdDM_drawUVEdges(DerivedMesh *dm)
if (lt) {
const MPoly *mpoly = cddm->mpoly;
+ const int totpoly = dm->getNumPolys(dm);
int prevstart = 0;
bool prevdraw = true;
int curpos = 0;
GPU_uvedge_setup(dm);
- for (i = 0; i < dm->looptris.num; i++, lt++) {
- const MPoly *mp = &mpoly[lt->poly];
- const bool draw = (mp->flag & ME_HIDE) == 0;
+ for (i = 0; i < totpoly; i++, mpoly++) {
+ const bool draw = (mpoly->flag & ME_HIDE) == 0;
if (prevdraw != draw) {
if (prevdraw && (curpos != prevstart)) {
@@ -387,7 +387,7 @@ static void cdDM_drawUVEdges(DerivedMesh *dm)
prevstart = curpos;
}
- curpos += 6;
+ curpos += mpoly->totloop;
prevdraw = draw;
}
if (prevdraw && (curpos != prevstart)) {
@@ -1505,37 +1505,6 @@ static void cdDM_buffer_copy_edge(
dm->drawObject->tot_edge_drawn = tot;
}
-static void cdDM_buffer_copy_uvedge(
- DerivedMesh *dm, float *varray)
-{
- int i, tottri;
- int start;
- const MLoopTri *lt;
- const MLoopUV *mloopuv;
-
- if ((mloopuv = DM_get_loop_data_layer(dm, CD_MLOOPUV)) == NULL) {
- return;
- }
-
- lt = dm->looptris.array;
- tottri = dm->looptris.num;
- start = 0;
-
- for (i = 0; i < tottri; i++, lt++) {
- const unsigned int *ltri = lt->tri;
-
- copy_v2_v2(&varray[start + 0], mloopuv[ltri[0]].uv);
- copy_v2_v2(&varray[start + 2], mloopuv[ltri[1]].uv);
-
- copy_v2_v2(&varray[start + 4], mloopuv[ltri[1]].uv);
- copy_v2_v2(&varray[start + 6], mloopuv[ltri[2]].uv);
-
- copy_v2_v2(&varray[start + 8], mloopuv[ltri[2]].uv);
- copy_v2_v2(&varray[start + 10], mloopuv[ltri[0]].uv);
- start += 12;
- }
-}
-
static void cdDM_copy_gpu_data(
DerivedMesh *dm, int type, void *varray_p,
const int *mat_orig_to_new, const void *user_data)
@@ -1560,9 +1529,6 @@ static void cdDM_copy_gpu_data(
case GPU_BUFFER_EDGE:
cdDM_buffer_copy_edge(dm, (unsigned int *)varray_p);
break;
- case GPU_BUFFER_UVEDGE:
- cdDM_buffer_copy_uvedge(dm, (float *)varray_p);
- break;
case GPU_BUFFER_TRIANGLES:
cdDM_buffer_copy_triangles(dm, (unsigned int *)varray_p, mat_orig_to_new);
break;
diff --git a/source/blender/gpu/GPU_buffers.h b/source/blender/gpu/GPU_buffers.h
index 3a8b71c..0c76b1f 100644
--- a/source/blender/gpu/GPU_buffers.h
+++ b/source/blender/gpu/GPU_buffers.h
@@ -160,7 +160,6 @@ typedef enum {
GPU_BUFFER_UV,
GPU_BUFFER_UV_TEXPAINT,
GPU_BUFFER_EDGE,
- GPU_BUFFER_UVEDGE,
GPU_BUFFER_TRIANGLES
} GPUBufferType;
diff --git a/source/blender/gpu/intern/gpu_buffers.c b/source/blender/gpu/intern/gpu_buffers.c
index 370a11f..ac304be 100644
--- a/source/blender/gpu/intern/gpu_buffers.c
+++ b/source/blender/gpu/intern/gpu_buffers.c
@@ -575,8 +575,6 @@ static GPUBuffer **gpu_drawobject_buffer_from_type(GPUDrawObject *gdo, GPUBuffer
return &gdo->uv_tex;
case GPU_BUFFER_EDGE:
return &gdo->edges;
- case GPU_BUFFER_UVEDGE:
- return &gdo->uvedges;
case GPU_BUFFER_TRIANGLES:
return &gdo->triangles;
default:
@@ -600,13 +598,6 @@ static int gpu_buffer_size_from_type(DerivedMesh *dm, GPUBufferType type)
return sizeof(float) * gpu_buffer_type_settings[type].num_components * dm->drawObject->tot_triangle_point;
case GPU_BUFFER_EDGE:
return sizeof(int) * gpu_buffer_type_settings[type].num_components * dm->drawObject->totedge;
- case GPU_BUFFER_UVEDGE:
- /* each face gets 3 points, 3 edges per triangle, and
- * each edge has its own, non-shared coords, so each
- * tri corner needs minimum of 4 floats, quads used
- * less so here we can over allocate and assume all
- * tris. */
- return sizeof(int) * gpu_buffer_type_settings[type].num_components * dm->drawObject->tot_triangle_point;
case GPU_BUFFER_TRIANGLES:
return sizeof(int) * gpu_buffer_type_settings[type].num_components * dm->drawObject->tot_triangle_point;
default:
@@ -807,7 +798,7 @@ void GPU_edge_setup(DerivedMesh *dm)
void GPU_uvedge_setup(DerivedMesh *dm)
{
- if (!gpu_buffer_setup_common(dm, GPU_BUFFER_UVEDGE))
+ if (!gpu_buffer_setup_common(dm, GPU_BUFFER_UV))
return;
glEnableClientState(GL_VERTEX_ARRAY);
More information about the Bf-blender-cvs
mailing list