From a915da221fa838dbdb846120c9ef8c0b381c3dfe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Fri, 16 Nov 2018 00:45:13 +0100 Subject: Edit Mesh: Fixes display of custom normals Should fix T57620 --- source/blender/draw/intern/draw_cache_impl_mesh.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (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 8cd2da1a898..4615810e31d 100644 --- a/source/blender/draw/intern/draw_cache_impl_mesh.c +++ b/source/blender/draw/intern/draw_cache_impl_mesh.c @@ -1646,12 +1646,13 @@ static void add_overlay_tri( } if (vbo_nor) { - /* TODO real loop normal */ - GPUPackedNormal lnor = GPU_normal_convert_i10_v3(bm_looptri[0]->f->no); + float (*lnors)[3] = rdata->loop_normals; for (uint i = 0; i < 3; i++) { + const float *nor = (lnors) ? lnors[BM_elem_index_get(bm_looptri[i])] : bm_looptri[0]->f->no; + GPUPackedNormal lnor = GPU_normal_convert_i10_v3(nor); + GPU_vertbuf_attr_set(vbo_nor, lnor_id, base_vert_idx + i, &lnor); GPUPackedNormal vnor = GPU_normal_convert_i10_v3(bm_looptri[i]->v->no); GPU_vertbuf_attr_set(vbo_nor, vnor_id, base_vert_idx + i, &vnor); - GPU_vertbuf_attr_set(vbo_nor, lnor_id, base_vert_idx + i, &lnor); } } @@ -1720,12 +1721,13 @@ static void add_overlay_tri_mapped( } if (vbo_nor) { - /* TODO real loop normal */ - GPUPackedNormal lnor = GPU_normal_convert_i10_v3(poly_normal); + float (*lnors)[3] = rdata->loop_normals; for (uint i = 0; i < 3; i++) { + const float *nor = (lnors) ? lnors[mlt->tri[i]] : poly_normal; + GPUPackedNormal lnor = GPU_normal_convert_i10_v3(nor); + GPU_vertbuf_attr_set(vbo_nor, lnor_id, base_vert_idx + i, &lnor); GPUPackedNormal vnor = GPU_normal_convert_i10_s3(mvert[mloop[mlt->tri[i]].v].no); GPU_vertbuf_attr_set(vbo_nor, vnor_id, base_vert_idx + i, &vnor); - GPU_vertbuf_attr_set(vbo_nor, lnor_id, base_vert_idx + i, &lnor); } } -- cgit v1.2.3