[Bf-blender-cvs] [fb587e68be3] temp-gpencil-bezier-stroke-type: GPencil: Experimental hide edit points

Antonio Vazquez noreply at git.blender.org
Mon Apr 26 17:10:27 CEST 2021


Commit: fb587e68be3be67a0acdeaeb602c265c6bdb5aeb
Author: Antonio Vazquez
Date:   Mon Apr 26 16:42:39 2021 +0200
Branches: temp-gpencil-bezier-stroke-type
https://developer.blender.org/rBfb587e68be3be67a0acdeaeb602c265c6bdb5aeb

GPencil: Experimental hide edit points

WIP (not compilable)

===================================================================

M	source/blender/draw/engines/overlay/shaders/edit_gpencil_vert.glsl
M	source/blender/draw/intern/draw_cache_impl_gpencil.c

===================================================================

diff --git a/source/blender/draw/engines/overlay/shaders/edit_gpencil_vert.glsl b/source/blender/draw/engines/overlay/shaders/edit_gpencil_vert.glsl
index a6161d36a07..1c6c220410a 100644
--- a/source/blender/draw/engines/overlay/shaders/edit_gpencil_vert.glsl
+++ b/source/blender/draw/engines/overlay/shaders/edit_gpencil_vert.glsl
@@ -21,12 +21,13 @@ void discard_vert()
   gl_Position = vec4(0.0, 0.0, -3e36, 0.0);
 }
 
-#define GP_EDIT_POINT_SELECTED 1u  /* 1 << 0 */
+#define GP_EDIT_POINT_SELECTED 1u /* 1 << 0 */
 #define GP_EDIT_STROKE_SELECTED 2u /* 1 << 1 */
-#define GP_EDIT_MULTIFRAME 4u      /* 1 << 2 */
-#define GP_EDIT_STROKE_START 8u    /* 1 << 3 */
-#define GP_EDIT_STROKE_END 16u     /* 1 << 4 */
-#define GP_EDIT_POINT_DIMMED 32u   /* 1 << 5 */
+#define GP_EDIT_MULTIFRAME 4u /* 1 << 2 */
+#define GP_EDIT_STROKE_START 8u /* 1 << 3 */
+#define GP_EDIT_STROKE_END 16u /* 1 << 4 */
+#define GP_EDIT_POINT_DIMMED 32u /* 1 << 5 */
+#define GP_EDIT_POINT_HIDDEN 64u /* 1 << 6 */
 
 #ifdef USE_POINTS
 #  define colorUnselect colorGpencilVertex
@@ -62,6 +63,7 @@ void main()
   bool is_stroke_sel = (vflag & GP_EDIT_STROKE_SELECTED) != 0u;
   bool is_point_sel = (vflag & GP_EDIT_POINT_SELECTED) != 0u;
   bool is_point_dimmed = (vflag & GP_EDIT_POINT_DIMMED) != 0u;
+  bool is_point_hidden = (vflag & GP_EDIT_POINT_HIDDEN) != 0u;
 
   if (doWeightColor) {
     finalColor.rgb = weight_to_rgb(weight);
@@ -78,6 +80,9 @@ void main()
   if (is_point_dimmed) {
     finalColor.rgb = clamp(colorUnselect.rgb + vec3(0.3), 0.0, 1.0);
   }
+  if (is_point_hidden) {
+    finalColor.a = 0.0;
+  }
 
   if (doStrokeEndpoints && !doWeightColor) {
     bool is_stroke_start = (vflag & GP_EDIT_STROKE_START) != 0u;
diff --git a/source/blender/draw/intern/draw_cache_impl_gpencil.c b/source/blender/draw/intern/draw_cache_impl_gpencil.c
index e18aaa4deb1..36573c64ffb 100644
--- a/source/blender/draw/intern/draw_cache_impl_gpencil.c
+++ b/source/blender/draw/intern/draw_cache_impl_gpencil.c
@@ -685,6 +685,7 @@ void DRW_cache_gpencil_sbuffer_clear(Object *ob)
 #define GP_EDIT_STROKE_START (1 << 3)
 #define GP_EDIT_STROKE_END (1 << 4)
 #define GP_EDIT_POINT_DIMMED (1 << 5)
+#define GP_EDIT_POINT_HIDDEN (1 << 6)
 
 typedef struct gpEditIterData {
   gpEditVert *verts;
@@ -706,6 +707,9 @@ static uint32_t gpencil_point_edit_flag(
   if (!is_bezier) {
     SET_FLAG_FROM_TEST(sflag, pt->runtime.pt_orig == NULL, GP_EDIT_POINT_DIMMED);
   }
+  else {
+    SET_FLAG_FROM_TEST(sflag, ((pt->flag & GP_SPOINT_IS_BEZT_CONTROL) == 0), GP_EDIT_POINT_HIDDEN);
+  }
   return sflag;
 }



More information about the Bf-blender-cvs mailing list