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:
authorClément Foucault <foucault.clem@gmail.com>2019-02-05 16:58:47 +0300
committerClément Foucault <foucault.clem@gmail.com>2019-02-05 17:02:15 +0300
commita13fb30917bd8039d6f78caf0c39aa421651ef32 (patch)
treec1d02bb134fc2975402f2b7e0701af03d2b84270 /source/blender/draw/intern
parent5df56668d3480d6684f8af427ed5905010649641 (diff)
Edit Mode: Fix loose edges edit mode normal display broken
Diffstat (limited to 'source/blender/draw/intern')
-rw-r--r--source/blender/draw/intern/draw_cache_impl_mesh.c13
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);