[Bf-blender-cvs] [a915da221fa] blender2.8: Edit Mesh: Fixes display of custom normals

Clément Foucault noreply at git.blender.org
Fri Nov 16 00:45:26 CET 2018


Commit: a915da221fa838dbdb846120c9ef8c0b381c3dfe
Author: Clément Foucault
Date:   Fri Nov 16 00:45:13 2018 +0100
Branches: blender2.8
https://developer.blender.org/rBa915da221fa838dbdb846120c9ef8c0b381c3dfe

Edit Mesh: Fixes display of custom normals

Should fix T57620

===================================================================

M	source/blender/draw/intern/draw_cache_impl_mesh.c

===================================================================

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);
 		}
 	}



More information about the Bf-blender-cvs mailing list