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>2018-11-16 02:45:13 +0300
committerClément Foucault <foucault.clem@gmail.com>2018-11-16 02:45:22 +0300
commita915da221fa838dbdb846120c9ef8c0b381c3dfe (patch)
treec5e4116fecd4781fe674f2825e861e5b29f04ec7 /source/blender/draw/intern
parent988c4259e54db84d01c24d21d6be95a90239478e (diff)
Edit Mesh: Fixes display of custom normals
Should fix T57620
Diffstat (limited to 'source/blender/draw/intern')
-rw-r--r--source/blender/draw/intern/draw_cache_impl_mesh.c14
1 files changed, 8 insertions, 6 deletions
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);
}
}