From 5df56668d3480d6684f8af427ed5905010649641 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Tue, 5 Feb 2019 14:47:05 +0100 Subject: Edit Mode: Fix Xray edit mode broken due to recent refactor --- source/blender/draw/modes/edit_mesh_mode.c | 35 +++++++++++++++--------------- 1 file changed, 17 insertions(+), 18 deletions(-) (limited to 'source/blender/draw/modes') diff --git a/source/blender/draw/modes/edit_mesh_mode.c b/source/blender/draw/modes/edit_mesh_mode.c index bd4a1e85ca8..b8e05a8eb2c 100644 --- a/source/blender/draw/modes/edit_mesh_mode.c +++ b/source/blender/draw/modes/edit_mesh_mode.c @@ -328,6 +328,20 @@ static DRWPass *edit_mesh_create_overlay_pass( grp = *r_face_cage_shgrp = DRW_shgroup_create_sub(*r_face_shgrp); DRW_shgroup_state_enable(grp, DRW_STATE_OFFSET_NEGATIVE); + /* Verts */ + if (select_vert) { + grp = *r_vert_shgrp = DRW_shgroup_create(vert_sh, pass); + DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo); + DRW_shgroup_uniform_vec2(grp, "viewportSize", DRW_viewport_size_get(), 1); + DRW_shgroup_uniform_float(grp, "edgeScale", edge_width_scale, 1); + DRW_shgroup_uniform_float_copy(grp, "ofs", depth_ofs); + DRW_shgroup_state_enable(grp, DRW_STATE_OFFSET_NEGATIVE | DRW_STATE_WRITE_DEPTH); + DRW_shgroup_state_disable(grp, DRW_STATE_BLEND); + if (rv3d->rflag & RV3D_CLIPPING) { + DRW_shgroup_world_clip_planes_from_rv3d(grp, rv3d); + } + } + /* Edges */ grp = *r_edge_deco_shgrp = DRW_shgroup_create(edge_deco_sh, pass); DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo); @@ -361,19 +375,6 @@ static DRWPass *edit_mesh_create_overlay_pass( DRW_shgroup_world_clip_planes_from_rv3d(grp, rv3d); } - /* Verts */ - if (select_vert) { - grp = *r_vert_shgrp = DRW_shgroup_create(vert_sh, pass); - DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo); - DRW_shgroup_uniform_vec2(grp, "viewportSize", DRW_viewport_size_get(), 1); - DRW_shgroup_uniform_float(grp, "edgeScale", edge_width_scale, 1); - DRW_shgroup_uniform_float_copy(grp, "ofs", depth_ofs); - DRW_shgroup_state_enable(grp, DRW_STATE_OFFSET_NEGATIVE | DRW_STATE_WRITE_DEPTH); - DRW_shgroup_state_disable(grp, DRW_STATE_BLEND); - if (rv3d->rflag & RV3D_CLIPPING) { - DRW_shgroup_world_clip_planes_from_rv3d(grp, rv3d); - } - } return pass; } @@ -588,15 +589,13 @@ static void edit_mesh_add_ob_to_pass( DRWShadingGroup *edge_shgrp = g_data->edge_shgrp; DRWShadingGroup *edge_deco_shgrp = g_data->edge_deco_shgrp; + face_shgrp = (facefill_shgrp != NULL) ? facefill_shgrp : face_shgrp; + geom_tris = DRW_mesh_batch_cache_get_edit_triangles(ob->data); geom_edges = DRW_mesh_batch_cache_get_edit_edges(ob->data); - DRW_shgroup_call_add(face_shgrp, geom_tris, ob->obmat); DRW_shgroup_call_add(edge_shgrp, geom_edges, ob->obmat); DRW_shgroup_call_add(edge_deco_shgrp, geom_edges, ob->obmat); - - if (facefill_shgrp) { - DRW_shgroup_call_add(facefill_shgrp, geom_tris, ob->obmat); - } + DRW_shgroup_call_add(face_shgrp, geom_tris, ob->obmat); if ((tsettings->selectmode & SCE_SELECT_VERTEX) != 0) { geom_verts = DRW_mesh_batch_cache_get_edit_vertices(ob->data); -- cgit v1.2.3