[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