From a13fb30917bd8039d6f78caf0c39aa421651ef32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Tue, 5 Feb 2019 14:58:47 +0100 Subject: Edit Mode: Fix loose edges edit mode normal display broken --- source/blender/draw/intern/draw_cache_impl_mesh.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'source/blender/draw/intern') 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); -- cgit v1.2.3