diff options
author | Falk David <falkdavid@gmx.de> | 2020-11-13 23:43:00 +0300 |
---|---|---|
committer | Falk David <falkdavid@gmx.de> | 2020-11-13 23:43:00 +0300 |
commit | 0be88c7d15d2ad1af284c6283370173647ae74eb (patch) | |
tree | 5fff573c512e284547ebe0c921ecffdae2c377c4 /source/blender/draw/engines/overlay/shaders | |
parent | 9d28353b525ecfbcca1501be72e4276dfb2bbc2a (diff) |
GPencil: Merge GSoC curve edit mode
Differential Revision: https://developer.blender.org/D8660
This patch is the result of the GSoC 2020 "Editing Grease Pencil Strokes
Using Curves" project. It adds a submode to greasepencil edit mode that
allows for the transformation of greasepencil strokes using bezier
curves. More information about the project can be found
here: https://wiki.blender.org/wiki/User:Filedescriptor/GSoC_2020.
Diffstat (limited to 'source/blender/draw/engines/overlay/shaders')
-rw-r--r-- | source/blender/draw/engines/overlay/shaders/edit_curve_handle_geom.glsl | 6 | ||||
-rw-r--r-- | source/blender/draw/engines/overlay/shaders/edit_curve_point_vert.glsl | 5 |
2 files changed, 9 insertions, 2 deletions
diff --git a/source/blender/draw/engines/overlay/shaders/edit_curve_handle_geom.glsl b/source/blender/draw/engines/overlay/shaders/edit_curve_handle_geom.glsl index 9311542a79e..442f69aec7e 100644 --- a/source/blender/draw/engines/overlay/shaders/edit_curve_handle_geom.glsl +++ b/source/blender/draw/engines/overlay/shaders/edit_curve_handle_geom.glsl @@ -53,6 +53,9 @@ void main() bool edge_selected = (((vertFlag[1] | vertFlag[0]) & VERT_SELECTED) != 0); bool handle_selected = (showCurveHandles && (((vertFlag[1] | vertFlag[0]) & VERT_SELECTED_BEZT_HANDLE) != 0)); + /* It reuses freestyle flag because the flag is 8 bits and all are already used and this + * flag is not used in this context. */ + bool is_gpencil = ((vertFlag[1] & EDGE_FREESTYLE) != 0); /* If handle type is only selected and the edge is not selected, don't show. */ if ((curveHandleDisplay != CURVE_HANDLE_ALL) && (!handle_selected)) { @@ -61,6 +64,9 @@ void main() if ((!is_u_segment) && (color_id <= 4)) { return; } + if (is_gpencil) { + return; + } } vec4 inner_color; diff --git a/source/blender/draw/engines/overlay/shaders/edit_curve_point_vert.glsl b/source/blender/draw/engines/overlay/shaders/edit_curve_point_vert.glsl index a811fcca0d4..6b4edbfe578 100644 --- a/source/blender/draw/engines/overlay/shaders/edit_curve_point_vert.glsl +++ b/source/blender/draw/engines/overlay/shaders/edit_curve_point_vert.glsl @@ -17,16 +17,17 @@ void main() { GPU_INTEL_VERTEX_SHADER_WORKAROUND + /* Reuse the FREESTYLE flag to determine is GPencil. */ if ((data & VERT_SELECTED) != 0) { if ((data & VERT_ACTIVE) != 0) { finalColor = colorEditMeshActive; } else { - finalColor = colorVertexSelect; + finalColor = ((data & EDGE_FREESTYLE) == 0) ? colorVertexSelect : colorGpencilVertexSelect; } } else { - finalColor = colorVertex; + finalColor = ((data & EDGE_FREESTYLE) == 0) ? colorVertex : colorGpencilVertex; } vec3 world_pos = point_object_to_world(pos); |