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>2019-02-07 22:40:54 +0300
committerClément Foucault <foucault.clem@gmail.com>2019-02-07 22:40:54 +0300
commitd2afa51ddc68c8a923c9535ba7678ebe468e2220 (patch)
tree0984999c5dadcc5a539f0dfd319188e8c9400974 /source/blender/draw/modes
parenta04dd15193e6cef261d604b2fb05746e71c6a7e3 (diff)
Edit Mode: Draw Vertices after edges
This avoid edges covering a part of vertices. This comes at a (very minor) perf cost as vertices can cover some edges pixels and early discard them with the depth test. But this only happens in artificialy dense mesh and is not a real problem for common cases.
Diffstat (limited to 'source/blender/draw/modes')
-rw-r--r--source/blender/draw/modes/edit_mesh_mode.c26
1 files changed, 13 insertions, 13 deletions
diff --git a/source/blender/draw/modes/edit_mesh_mode.c b/source/blender/draw/modes/edit_mesh_mode.c
index 2a3ac7bbe95..8cb7d93caee 100644
--- a/source/blender/draw/modes/edit_mesh_mode.c
+++ b/source/blender/draw/modes/edit_mesh_mode.c
@@ -321,19 +321,6 @@ 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_copy(grp, "ofs", depth_ofs * 1.5f);
- 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_shgrp = DRW_shgroup_create(edge_sh, pass);
DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
@@ -350,6 +337,19 @@ 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_copy(grp, "ofs", depth_ofs * 1.5f);
+ 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;
}