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:
authorClément Foucault <foucault.clem@gmail.com>2018-12-17 23:24:43 +0300
committerClément Foucault <foucault.clem@gmail.com>2018-12-18 04:19:52 +0300
commit6a1315d6e72689907207a1202b6372402ace59af (patch)
tree8938905d8d8d8e43cbb6ff0f7341873183d46e58 /source/blender/draw/modes/shaders/paint_wire_vert.glsl
parent4fceaf3848b6ff926a8f0ffdb8f5a7b1537da57b (diff)
Weight Paint Overlay: Refactor wire drawing
This reduce the number of batch/data needed. Stores a select/visiblee flag inside the vert/loop normals.
Diffstat (limited to 'source/blender/draw/modes/shaders/paint_wire_vert.glsl')
-rw-r--r--source/blender/draw/modes/shaders/paint_wire_vert.glsl23
1 files changed, 20 insertions, 3 deletions
diff --git a/source/blender/draw/modes/shaders/paint_wire_vert.glsl b/source/blender/draw/modes/shaders/paint_wire_vert.glsl
index 253c21745e2..a92591b957d 100644
--- a/source/blender/draw/modes/shaders/paint_wire_vert.glsl
+++ b/source/blender/draw/modes/shaders/paint_wire_vert.glsl
@@ -2,13 +2,30 @@
uniform mat4 ModelViewProjectionMatrix;
in vec3 pos;
-in int data;
+in vec4 nor; /* flag stored in w */
-flat out int finalFlag;
+flat out vec4 finalColor;
void main()
{
+ bool is_select = (nor.w > 0.0);
+ bool is_hidden = (nor.w < 0.0);
gl_Position = ModelViewProjectionMatrix * vec4(pos, 1.0);
+ /* Add offset in Z to avoid zfighting and render selected wires on top. */
+ /* TODO scale this bias using znear and zfar range. */
+ gl_Position.zw -= exp2(-20) * (is_select ? 2.0 : 1.0);
- finalFlag = data;
+ if (is_hidden) {
+ gl_Position = vec4(-2.0, -2.0, -2.0, 1.0);
+ }
+
+#ifdef VERTEX_MODE
+ vec4 colSel = colorEdgeSelect;
+ colSel.rgb = clamp(colSel.rgb - 0.2, 0.0, 1.0);
+#else
+ const vec4 colSel = vec4(1.0, 1.0, 1.0, 1.0);
+#endif
+
+ finalColor = (is_select) ? colSel : colorWire;
+ finalColor.a = nor.w;
}