[Bf-blender-cvs] [d2afa51ddc6] master: Edit Mode: Draw Vertices after edges

Clément Foucault noreply at git.blender.org
Thu Feb 7 20:41:18 CET 2019


Commit: d2afa51ddc68c8a923c9535ba7678ebe468e2220
Author: Clément Foucault
Date:   Thu Feb 7 20:40:54 2019 +0100
Branches: master
https://developer.blender.org/rBd2afa51ddc68c8a923c9535ba7678ebe468e2220

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.

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

M	source/blender/draw/modes/edit_mesh_mode.c

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

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



More information about the Bf-blender-cvs mailing list