diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2019-02-05 16:58:47 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2019-02-05 17:02:15 +0300 |
commit | a13fb30917bd8039d6f78caf0c39aa421651ef32 (patch) | |
tree | c1d02bb134fc2975402f2b7e0701af03d2b84270 /source/blender/draw | |
parent | 5df56668d3480d6684f8af427ed5905010649641 (diff) |
Edit Mode: Fix loose edges edit mode normal display broken
Diffstat (limited to 'source/blender/draw')
-rw-r--r-- | source/blender/draw/intern/draw_cache_impl_mesh.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/source/blender/draw/intern/draw_cache_impl_mesh.c b/source/blender/draw/intern/draw_cache_impl_mesh.c index 016631e84d0..4a5f134929c 100644 --- a/source/blender/draw/intern/draw_cache_impl_mesh.c +++ b/source/blender/draw/intern/draw_cache_impl_mesh.c @@ -2475,6 +2475,9 @@ static void mesh_create_edit_vertex_loops( mesh_render_data_vert_flag(rdata, eve, &eattr); memcpy(GPU_vertbuf_raw_step(&raw_data), &eattr, sizeof(EdgeDrawAttr)); } + if (vbo_lnor) { + memset(GPU_vertbuf_raw_step(&raw_lnor), 0, sizeof(GPUPackedNormal)); + } /* Select Idx */ if (vbo_verts) { int vidx = BM_elem_index_get(eve); @@ -2494,6 +2497,9 @@ static void mesh_create_edit_vertex_loops( *vnor = GPU_normal_convert_i10_v3(eve->no); copy_v3_v3(GPU_vertbuf_raw_step(&raw_pos), eve->co); } + if (vbo_lnor) { + memset(GPU_vertbuf_raw_step(&raw_lnor), 0, sizeof(GPUPackedNormal)); + } if (vbo_data) { EdgeDrawAttr eattr = { 0 }; mesh_render_data_vert_flag(rdata, eve, &eattr); @@ -2596,6 +2602,9 @@ static void mesh_create_edit_vertex_loops( *(GPUPackedNormal *)GPU_vertbuf_raw_step(&raw_nor) = vnor; copy_v3_v3(GPU_vertbuf_raw_step(&raw_pos), mvert[v].co); } + if (vbo_lnor) { + memset(GPU_vertbuf_raw_step(&raw_lnor), 0, sizeof(GPUPackedNormal)); + } if (vbo_data) { EdgeDrawAttr eattr = { 0 }; int vidx = v_origindex[v]; @@ -2629,6 +2638,9 @@ static void mesh_create_edit_vertex_loops( *(GPUPackedNormal *)GPU_vertbuf_raw_step(&raw_nor) = vnor; copy_v3_v3(GPU_vertbuf_raw_step(&raw_pos), mvert[v].co); } + if (vbo_lnor) { + memset(GPU_vertbuf_raw_step(&raw_lnor), 0, sizeof(GPUPackedNormal)); + } if (vbo_data) { EdgeDrawAttr eattr = { 0 }; int vidx = v_origindex[v]; @@ -4769,7 +4781,6 @@ void DRW_mesh_batch_cache_create_requested( DRW_vbo_request(cache->batch.edit_edges, &cache->edit.loop_data); } if (DRW_batch_requested(cache->batch.edit_lnor, GPU_PRIM_POINTS)) { - /* TODO use a range of loops line, before drawing the loose edges. */ DRW_ibo_request(cache->batch.edit_lnor, &cache->ibo.edit_loops_lines); DRW_vbo_request(cache->batch.edit_lnor, &cache->edit.loop_pos_nor); DRW_vbo_request(cache->batch.edit_lnor, &cache->edit.loop_lnor); |