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
path: root/source
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2018-10-11 05:45:50 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-10-11 08:43:38 +0300
commitd74b89aed0310bcead9e17a8100f69b9b1872313 (patch)
treeee71ba071f9d9f829550c150c583bae3d6befcc8 /source
parentb7363941f7ddfd5154a0a61f17c6186d049793be (diff)
DRW: add ability to skip drawing vertices
Diffstat (limited to 'source')
-rw-r--r--source/blender/draw/intern/draw_cache_impl.h7
-rw-r--r--source/blender/draw/intern/draw_cache_impl_mesh.c2
-rw-r--r--source/blender/draw/modes/shaders/edit_mesh_overlay_common_lib.glsl2
-rw-r--r--source/blender/draw/modes/shaders/edit_mesh_overlay_frag.glsl17
-rw-r--r--source/blender/draw/modes/shaders/edit_mesh_overlay_geom_edge.glsl4
-rw-r--r--source/blender/draw/modes/shaders/edit_mesh_overlay_geom_tri.glsl6
6 files changed, 23 insertions, 15 deletions
diff --git a/source/blender/draw/intern/draw_cache_impl.h b/source/blender/draw/intern/draw_cache_impl.h
index 1aaedd39c85..27272769ec6 100644
--- a/source/blender/draw/intern/draw_cache_impl.h
+++ b/source/blender/draw/intern/draw_cache_impl.h
@@ -178,9 +178,10 @@ void DRW_mesh_cache_uvedit(
enum {
VFLAG_VERTEX_ACTIVE = 1 << 0,
VFLAG_VERTEX_SELECTED = 1 << 1,
- VFLAG_FACE_ACTIVE = 1 << 2,
- VFLAG_FACE_SELECTED = 1 << 3,
- VFLAG_FACE_FREESTYLE = 1 << 4,
+ VFLAG_VERTEX_EXISTS = 1 << 2,
+ VFLAG_FACE_ACTIVE = 1 << 3,
+ VFLAG_FACE_SELECTED = 1 << 4,
+ VFLAG_FACE_FREESTYLE = 1 << 5,
/* Beware to not go over 1 << 7 (it's a byte flag)
* (see gpu_shader_edit_mesh_overlay_geom.glsl) */
};
diff --git a/source/blender/draw/intern/draw_cache_impl_mesh.c b/source/blender/draw/intern/draw_cache_impl_mesh.c
index 8d901e9a05f..05b1a2499d3 100644
--- a/source/blender/draw/intern/draw_cache_impl_mesh.c
+++ b/source/blender/draw/intern/draw_cache_impl_mesh.c
@@ -1438,7 +1438,7 @@ static void mesh_render_data_edge_flag(
static uchar mesh_render_data_vertex_flag(MeshRenderData *rdata, const BMVert *eve)
{
- uchar vflag = 0;
+ uchar vflag = VFLAG_VERTEX_EXISTS;
/* Current vertex */
if (eve == rdata->eve_act)
diff --git a/source/blender/draw/modes/shaders/edit_mesh_overlay_common_lib.glsl b/source/blender/draw/modes/shaders/edit_mesh_overlay_common_lib.glsl
index 87ee0d7f00f..bdf3ef267e9 100644
--- a/source/blender/draw/modes/shaders/edit_mesh_overlay_common_lib.glsl
+++ b/source/blender/draw/modes/shaders/edit_mesh_overlay_common_lib.glsl
@@ -6,9 +6,11 @@
#define EDGE_FREESTYLE (1 << 5)
#define EDGE_VERTEX_ACTIVE (1 << (0 + 8))
#define EDGE_VERTEX_SELECTED (1 << (1 + 8))
+#define EDGE_VERTEX_EXISTS (1 << (2 + 8))
#define VERTEX_ACTIVE (1 << 0)
#define VERTEX_SELECTED (1 << 1)
+#define VERTEX_EXISTS (1 << 2)
uniform bool doEdges = true;
diff --git a/source/blender/draw/modes/shaders/edit_mesh_overlay_frag.glsl b/source/blender/draw/modes/shaders/edit_mesh_overlay_frag.glsl
index 7f985cd2c43..92eb00d4dcc 100644
--- a/source/blender/draw/modes/shaders/edit_mesh_overlay_frag.glsl
+++ b/source/blender/draw/modes/shaders/edit_mesh_overlay_frag.glsl
@@ -28,7 +28,7 @@ flat in vec2 ssPos[3];
out vec4 FragColor;
/* Vertex flag is shifted and combined with the edge flag */
-#define FACE_ACTIVE (1 << (2 + 8))
+#define FACE_ACTIVE (1 << (3 + 8))
#define LARGE_EDGE_SIZE 3.0
@@ -106,13 +106,18 @@ void main()
/* Points */
#ifdef VERTEX_SELECTION
for (int v = 0; v < 3; ++v) {
- float size = p[v] - sizeVertex;
+ if ((flag[v] & EDGE_VERTEX_EXISTS) == 0) {
+ /* Leave as-is, no vertex. */
+ }
+ else {
+ float size = p[v] - sizeVertex;
- vec4 point_color = colorVertex;
- point_color = ((flag[v] & EDGE_VERTEX_SELECTED) != 0) ? colorVertexSelect : point_color;
- point_color = ((flag[v] & EDGE_VERTEX_ACTIVE) != 0) ? vec4(colorEditMeshActive.xyz, 1.0) : point_color;
+ vec4 point_color = colorVertex;
+ point_color = ((flag[v] & EDGE_VERTEX_SELECTED) != 0) ? colorVertexSelect : point_color;
+ point_color = ((flag[v] & EDGE_VERTEX_ACTIVE) != 0) ? vec4(colorEditMeshActive.xyz, 1.0) : point_color;
- colorDist(point_color, size);
+ colorDist(point_color, size);
+ }
}
#endif
diff --git a/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_edge.glsl b/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_edge.glsl
index 88cb6c07a94..68fcc33acff 100644
--- a/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_edge.glsl
+++ b/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_edge.glsl
@@ -34,8 +34,8 @@ out float facing;
/* See fragment shader */
flat out vec2 ssPos[3];
-#define FACE_ACTIVE (1 << 2)
-#define FACE_SELECTED (1 << 3)
+#define FACE_ACTIVE (1 << 3)
+#define FACE_SELECTED (1 << 4)
/* project to screen space */
vec2 proj(vec4 pos)
diff --git a/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_tri.glsl b/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_tri.glsl
index 7d6c64afabc..d020bcc6951 100644
--- a/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_tri.glsl
+++ b/source/blender/draw/modes/shaders/edit_mesh_overlay_geom_tri.glsl
@@ -54,9 +54,9 @@ out float facing;
/* See fragment shader */
flat out vec2 ssPos[3];
-#define FACE_ACTIVE (1 << 2)
-#define FACE_SELECTED (1 << 3)
-#define FACE_FREESTYLE (1 << 4)
+#define FACE_ACTIVE (1 << 3)
+#define FACE_SELECTED (1 << 4)
+#define FACE_FREESTYLE (1 << 5)
/* project to screen space */
vec2 proj(vec4 pos)