diff options
author | Charlie Jolly <charlie> | 2021-03-16 22:11:54 +0300 |
---|---|---|
committer | Charlie Jolly <mistajolly@gmail.com> | 2021-03-17 14:54:16 +0300 |
commit | 266cd7bb82ce4bfed20a3d61a84f25e2bacfca2b (patch) | |
tree | 963a983f902f5368669c1d93312b53262592e4dc /source/blender/gpu/shaders | |
parent | 20bf736ff81c6fb79558796b74d50d4e7a9c8ef6 (diff) |
Nodes: Add support to mute node wires
This patch adds the ability to mute individual wires in the node editor.
This is invoked like the cut links operator but with a new shortcut.
Mute = Ctrl + Alt
Cut = Ctrl
Dragging over wires will toggle the mute state for that wire.
The muted wires are drawn in red with a bar across the center.
Red is used in the nodes context to indicate invalid links, muted links and internal links.
When a wire is muted it exposes the original node buttons which are normally hidden when a wire is connected.
Downstream and upstream links connected using reroute nodes are also muted.
Outside scope of patch:
- Add support for pynodes e.g. Animation Nodes
- Requires minor change to check for muted links using the `is_muted` link property or the `is_linked` socket property.
Maniphest Tasks: T52659
Differential Revision: https://developer.blender.org/D2807
Diffstat (limited to 'source/blender/gpu/shaders')
-rw-r--r-- | source/blender/gpu/shaders/gpu_shader_2D_nodelink_vert.glsl | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/source/blender/gpu/shaders/gpu_shader_2D_nodelink_vert.glsl b/source/blender/gpu/shaders/gpu_shader_2D_nodelink_vert.glsl index 4567429f645..9ce2a1be015 100644 --- a/source/blender/gpu/shaders/gpu_shader_2D_nodelink_vert.glsl +++ b/source/blender/gpu/shaders/gpu_shader_2D_nodelink_vert.glsl @@ -2,7 +2,7 @@ * 2D Quadratic Bezier thick line drawing */ -#define MID_VERTEX 57 +#define MID_VERTEX 65 /* u is position along the curve, defining the tangent space. * v is "signed" distance (compressed to [0..1] range) from the pos in expand direction */ @@ -17,6 +17,7 @@ in vec2 P1; in vec2 P2; in vec2 P3; in ivec4 colid_doarrow; +in ivec2 domuted; uniform vec4 colors[6]; @@ -24,6 +25,7 @@ uniform vec4 colors[6]; # define colEnd colors[colid_doarrow[1]] # define colShadow colors[colid_doarrow[2]] # define doArrow (colid_doarrow[3] != 0) +# define doMuted (domuted[0] != 0) #else /* Single curve drawcall, use uniform. */ @@ -36,6 +38,7 @@ uniform vec2 bezierPts[4]; uniform vec4 colors[3]; uniform bool doArrow; +uniform bool doMuted; # define colShadow colors[0] # define colStart colors[1] @@ -90,13 +93,18 @@ void main(void) /* Second pass */ finalColor = mix(colStart, colEnd, uv.x); expand_dist *= 0.5; + if (doMuted) { + finalColor[3] = 0.65; + } } /* Expand into a line */ gl_Position.xy += exp_axis * expandSize * expand_dist; - /* if arrow */ - if (expand.y != 1.0 && !doArrow) { + /* If the link is not muted or is not a reroute arrow the points are squashed to the center of + * the line. Magic numbers are defined in drawnode.c */ + if ((expand.x == 1.0 && !doMuted) || + (expand.y != 1.0 && (pos.x < 0.70 || pos.x > 0.71) && !doArrow)) { gl_Position.xy *= 0.0; } } |