[Bf-blender-cvs] [fabd55a5e9e] blender2.8: DWM: hide hidden verts in weight-paint mode

Campbell Barton noreply at git.blender.org
Wed May 17 10:07:59 CEST 2017


Commit: fabd55a5e9e9afc9975d44a1dc7c22531c2089eb
Author: Campbell Barton
Date:   Wed May 17 18:09:40 2017 +1000
Branches: blender2.8
https://developer.blender.org/rBfabd55a5e9e9afc9975d44a1dc7c22531c2089eb

DWM: hide hidden verts in weight-paint mode

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

M	source/blender/draw/intern/draw_cache_impl_mesh.c
M	source/blender/draw/modes/shaders/paint_vert_frag.glsl
M	source/blender/draw/modes/shaders/paint_wire_vert.glsl

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

diff --git a/source/blender/draw/intern/draw_cache_impl_mesh.c b/source/blender/draw/intern/draw_cache_impl_mesh.c
index 7059fd46ef5..5ff39878f72 100644
--- a/source/blender/draw/intern/draw_cache_impl_mesh.c
+++ b/source/blender/draw/intern/draw_cache_impl_mesh.c
@@ -2726,7 +2726,11 @@ static VertexBuffer *mesh_batch_cache_get_tri_pos_with_unselect_only(
 	return cache->tri_pos_with_unselect_only;
 }
 
-static VertexBuffer *mesh_batch_cache_get_vert_pos_with_sel(MeshRenderData *rdata, MeshBatchCache *cache)
+/**
+ * Non-edit mode vertices (only used for weight-paint mode).
+ */
+static VertexBuffer *mesh_batch_cache_get_vert_pos_with_overlay_data(
+        MeshRenderData *rdata, MeshBatchCache *cache)
 {
 	BLI_assert(rdata->types & (MR_DATATYPE_VERT));
 	BLI_assert(rdata->edit_bmesh == NULL);
@@ -2738,7 +2742,7 @@ static VertexBuffer *mesh_batch_cache_get_vert_pos_with_sel(MeshRenderData *rdat
 		static struct { uint pos, sel; } attr_id;
 		if (format.attrib_ct == 0) {
 			attr_id.pos = VertexFormat_add_attrib(&format, "pos", COMP_F32, 3, KEEP_FLOAT);
-			attr_id.sel = VertexFormat_add_attrib(&format, "select", COMP_I8, 1, KEEP_INT);
+			attr_id.sel = VertexFormat_add_attrib(&format, "data", COMP_I8, 1, KEEP_INT);
 		}
 
 		const int vert_len = mesh_render_data_verts_len_get(rdata);
@@ -2751,8 +2755,8 @@ static VertexBuffer *mesh_batch_cache_get_vert_pos_with_sel(MeshRenderData *rdat
 
 		for (int i = 0; i < vert_len; i++) {
 			const MVert *mv = &rdata->mvert[i];
-			const char vert_sel = (mv->flag & SELECT) != 0;
-			VertexBuffer_set_attrib(vbo, attr_id.sel, cidx++, &vert_sel);
+			const char data = mv->flag & (SELECT | ME_HIDE);
+			VertexBuffer_set_attrib(vbo, attr_id.sel, cidx++, &data);
 			VertexBuffer_set_attrib(vbo, attr_id.pos, vidx++, mv->co);
 		}
 		vbo_len_used = vidx;
@@ -3242,7 +3246,7 @@ Batch *DRW_mesh_batch_cache_get_weight_overlay_verts(Mesh *me)
 		MeshRenderData *rdata = mesh_render_data_create(me, MR_DATATYPE_VERT);
 
 		cache->overlay_weight_verts = Batch_create(
-		        PRIM_POINTS, mesh_batch_cache_get_vert_pos_with_sel(rdata, cache), NULL);
+		        PRIM_POINTS, mesh_batch_cache_get_vert_pos_with_overlay_data(rdata, cache), NULL);
 
 		mesh_render_data_free(rdata);
 	}
diff --git a/source/blender/draw/modes/shaders/paint_vert_frag.glsl b/source/blender/draw/modes/shaders/paint_vert_frag.glsl
index c6eb334711f..c22e1c04b96 100644
--- a/source/blender/draw/modes/shaders/paint_vert_frag.glsl
+++ b/source/blender/draw/modes/shaders/paint_vert_frag.glsl
@@ -1,9 +1,16 @@
 
-flat in int finalSelect;
+flat in int finalFlag;
 out vec4 fragColor;
 
+#define VERTEX_SELECTED (1 << 0)
+#define VERTEX_HIDE     (1 << 4)
+
 void main()
 {
+	if (bool(finalFlag & VERTEX_HIDE)) {
+		discard;
+	}
+
 	vec2 centered = gl_PointCoord - vec2(0.5);
 	float dist_squared = dot(centered, centered);
 	const float rad_squared = 0.25;
@@ -11,8 +18,9 @@ void main()
 	const vec4 colUnsel = vec4(0.5, 0.5, 0.5, 1.0);
 
 	// round point with jaggy edges
-	if (dist_squared > rad_squared)
+	if (dist_squared > rad_squared) {
 		discard;
+	}
 
-	fragColor = bool(finalSelect) ? colSel : colUnsel;
+	fragColor = bool(finalFlag & VERTEX_SELECTED) ? colSel : colUnsel;
 }
diff --git a/source/blender/draw/modes/shaders/paint_wire_vert.glsl b/source/blender/draw/modes/shaders/paint_wire_vert.glsl
index 1f404d33c88..253c21745e2 100644
--- a/source/blender/draw/modes/shaders/paint_wire_vert.glsl
+++ b/source/blender/draw/modes/shaders/paint_wire_vert.glsl
@@ -2,12 +2,13 @@
 uniform mat4 ModelViewProjectionMatrix;
 
 in vec3 pos;
-in int select;
+in int data;
 
-flat out int finalSelect;
+flat out int finalFlag;
 
 void main()
 {
 	gl_Position = ModelViewProjectionMatrix * vec4(pos, 1.0);
-	finalSelect = select;
+
+	finalFlag = data;
 }




More information about the Bf-blender-cvs mailing list