Edit Mode: Change face mode edges display
[blender.git] / source / blender / draw / modes / shaders / edit_mesh_overlay_common_lib.glsl
1
2 uniform bool doEdges = true;
3 uniform bool selectFaces = true;
4 uniform bool selectEdges = true;
5
6 vec4 EDIT_MESH_edge_color_outer(int edge_flag, int face_flag, float crease, float bweight)
7 {
8   vec4 color = vec4(0.0);
9   color = ((edge_flag & EDGE_FREESTYLE) != 0) ? colorEdgeFreestyle : color;
10   color = ((edge_flag & EDGE_SHARP) != 0) ? colorEdgeSharp : color;
11   color = (crease > 0.0) ? vec4(colorEdgeCrease.rgb, crease) : color;
12   color = (bweight > 0.0) ? vec4(colorEdgeBWeight.rgb, bweight) : color;
13   color = ((edge_flag & EDGE_SEAM) != 0) ? colorEdgeSeam : color;
14   return color;
15 }
16
17 vec4 EDIT_MESH_edge_color_inner(int edge_flag)
18 {
19   vec4 color = colorWireEdit;
20   vec4 color_select = (selectEdges) ? colorEdgeSelect : colorFaceSelect;
21   color = (doEdges && ((edge_flag & EDGE_SELECTED) != 0)) ? color_select : color;
22   color = (doEdges && ((edge_flag & EDGE_ACTIVE) != 0)) ? colorEditMeshActive : color;
23
24   float non_edge_select_alpha = (selectFaces && (edge_flag & EDGE_SELECTED) != 0) ? 0.75 : 0.4;
25   color.a = (selectEdges) ? 1.0 : non_edge_select_alpha;
26   return color;
27 }
28
29 vec4 EDIT_MESH_edge_vertex_color(int vertex_flag)
30 {
31   vec4 color = colorWireEdit;
32   vec4 color_select = (selectEdges) ? colorEdgeSelect : colorFaceSelect;
33   color = (doEdges && (vertex_flag & (VERT_ACTIVE | VERT_SELECTED)) != 0) ? color_select : color;
34   color.a = (selectEdges) ? 1.0 : 0.4;
35   return color;
36 }
37
38 vec4 EDIT_MESH_vertex_color(int vertex_flag)
39 {
40   if ((vertex_flag & VERT_ACTIVE) != 0) {
41     return vec4(colorEditMeshActive.xyz, 1.0);
42   }
43   else if ((vertex_flag & VERT_SELECTED) != 0) {
44     return colorVertexSelect;
45   }
46   else {
47     return colorVertex;
48   }
49 }
50
51 vec4 EDIT_MESH_face_color(int face_flag)
52 {
53   vec4 color = colorFace;
54   vec4 color_active = mix(colorFaceSelect, colorEditMeshActive, 0.5);
55   color = ((face_flag & FACE_FREESTYLE) != 0) ? colorFaceFreestyle : color;
56   color = ((face_flag & FACE_SELECTED) != 0) ? colorFaceSelect : color;
57   color = ((face_flag & FACE_ACTIVE) != 0) ? color_active : color;
58   color.a *= ((face_flag & (FACE_FREESTYLE | FACE_SELECTED | FACE_ACTIVE)) == 0 || selectFaces) ?
59                  1.0 :
60                  0.5;
61   return color;
62 }
63
64 vec4 EDIT_MESH_facedot_color(float facedot_flag)
65 {
66   if (facedot_flag < 0.0f) {
67     return colorEditMeshActive;
68   }
69   else if (facedot_flag > 0.0f) {
70     return colorFaceDot;
71   }
72   else {
73     return colorVertex;
74   }
75 }