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:
Diffstat (limited to 'source/blender/draw/modes/shaders/edit_mesh_overlay_common_lib.glsl')
-rw-r--r--source/blender/draw/modes/shaders/edit_mesh_overlay_common_lib.glsl51
1 files changed, 51 insertions, 0 deletions
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
new file mode 100644
index 00000000000..dabbb4a321a
--- /dev/null
+++ b/source/blender/draw/modes/shaders/edit_mesh_overlay_common_lib.glsl
@@ -0,0 +1,51 @@
+#define EDGE_EXISTS (1 << 0)
+#define EDGE_ACTIVE (1 << 1)
+#define EDGE_SELECTED (1 << 2)
+#define EDGE_SEAM (1 << 3)
+#define EDGE_SHARP (1 << 4)
+#define EDGE_VERTEX_ACTIVE (1 << (0 + 8))
+#define EDGE_VERTEX_SELECTED (1 << (1 + 8))
+
+#define VERTEX_ACTIVE (1 << 0)
+#define VERTEX_SELECTED (1 << 1)
+
+
+vec4 EDIT_MESH_edge_color_outer(int edge_flag, bool face_active, float crease, float bweight)
+{
+ vec4 color = vec4(0.0);
+ color = ((edge_flag & EDGE_SHARP) != 0) ? colorEdgeSharp : color;
+ color = (crease > 0.0) ? vec4(colorEdgeCrease.rgb, crease) : color;
+ color = (bweight > 0.0) ? vec4(colorEdgeBWeight.rgb, bweight) : color;
+ color = ((edge_flag & EDGE_SEAM) != 0) ? colorEdgeSeam : color;
+
+ if (face_active)
+ {
+ color = colorEditMeshActive;
+ }
+ return color;
+}
+
+vec4 EDIT_MESH_edge_color_inner(int edge_flag, bool face_active)
+{
+#ifdef EDGE_SELECTION
+ vec4 color = colorWireEdit;
+ color = ((edge_flag & EDGE_SELECTED) != 0) ? colorEdgeSelect : color;
+ color = ((edge_flag & EDGE_ACTIVE) != 0) ? colorEditMeshActive : color;
+
+#else
+ vec4 color = colorWireEdit;
+ color = ((edge_flag & EDGE_SELECTED) != 0) ? colorEdgeSelect : color;
+#endif
+ return color;
+}
+
+vec4 EDIT_MESH_vertex_color(int vertex_flag)
+{
+ if ((vertex_flag & (VERTEX_ACTIVE | VERTEX_SELECTED)) != 0)
+ {
+ return colorEdgeSelect;
+ }
+ else {
+ return colorWireEdit;
+ }
+}