[Bf-blender-cvs] [1593a3fda62] greasepencil-refactor: GPencil: Fix Fill color when using Vertex Color

Antonio Vazquez noreply at git.blender.org
Mon Jan 20 13:28:53 CET 2020


Commit: 1593a3fda624b793767453c4cb509ff52df3988f
Author: Antonio Vazquez
Date:   Mon Jan 20 13:26:59 2020 +0100
Branches: greasepencil-refactor
https://developer.blender.org/rB1593a3fda624b793767453c4cb509ff52df3988f

GPencil: Fix Fill color when using Vertex Color

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

M	source/blender/draw/intern/draw_cache_impl_gpencil.c
M	source/blender/editors/gpencil/gpencil_paint.c
M	source/blender/editors/gpencil/gpencil_primitive.c
M	source/blender/makesdna/DNA_gpencil_types.h

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

diff --git a/source/blender/draw/intern/draw_cache_impl_gpencil.c b/source/blender/draw/intern/draw_cache_impl_gpencil.c
index 5e0572905e4..5e6839b9448 100644
--- a/source/blender/draw/intern/draw_cache_impl_gpencil.c
+++ b/source/blender/draw/intern/draw_cache_impl_gpencil.c
@@ -498,7 +498,7 @@ bGPDstroke *DRW_cache_gpencil_sbuffer_stroke_data_get(Object *ob)
     gps->tot_triangles = max_ii(0, gpd->runtime.sbuffer_used - 2);
     gps->caps[0] = gps->caps[1] = GP_STROKE_CAP_ROUND;
     gps->runtime.stroke_start = 1; /* Add one for the adjacency index. */
-
+    copy_v4_v4(gps->vert_color_fill, gpd->runtime.vert_color_fill);
     gpd->runtime.sbuffer_gps = gps;
   }
   return gpd->runtime.sbuffer_gps;
diff --git a/source/blender/editors/gpencil/gpencil_paint.c b/source/blender/editors/gpencil/gpencil_paint.c
index 158f00c698e..929999c013e 100644
--- a/source/blender/editors/gpencil/gpencil_paint.c
+++ b/source/blender/editors/gpencil/gpencil_paint.c
@@ -737,6 +737,16 @@ static short gp_stroke_addpoint(tGPsdata *p, const float mval[2], float pressure
       return GP_STROKEADD_INVALID;
     }
 
+    /* Copy fill vertex color. */
+    if (GPENCIL_USE_VERTEX_COLOR_FILL(p->scene->toolsettings, p->brush)) {
+      copy_v3_v3(gpd->runtime.vert_color_fill, p->brush->rgb);
+      gpd->runtime.vert_color_fill[3] = p->brush->gpencil_settings->vertex_factor;
+      srgb_to_linearrgb_v4(gpd->runtime.vert_color_fill, gpd->runtime.vert_color_fill);
+    }
+    else {
+      zero_v4(gpd->runtime.vert_color_fill);
+    }
+
     /* get pointer to destination point */
     pt = ((tGPspoint *)(gpd->runtime.sbuffer) + gpd->runtime.sbuffer_used);
 
diff --git a/source/blender/editors/gpencil/gpencil_primitive.c b/source/blender/editors/gpencil/gpencil_primitive.c
index b90a52dfe9b..2105ebded2b 100644
--- a/source/blender/editors/gpencil/gpencil_primitive.c
+++ b/source/blender/editors/gpencil/gpencil_primitive.c
@@ -122,6 +122,16 @@ static void gp_session_validatebuffer(tGPDprimitive *p)
   gpd->runtime.sbuffer_sflag = 0;
   gpd->runtime.sbuffer_sflag |= GP_STROKE_3DSPACE;
 
+  /* Copy fill vertex color. */
+  if (GPENCIL_USE_VERTEX_COLOR_FILL(p->scene->toolsettings, p->brush)) {
+    copy_v3_v3(gpd->runtime.vert_color_fill, p->brush->rgb);
+    gpd->runtime.vert_color_fill[3] = p->brush->gpencil_settings->vertex_factor;
+    srgb_to_linearrgb_v4(gpd->runtime.vert_color_fill, gpd->runtime.vert_color_fill);
+  }
+  else {
+    zero_v4(gpd->runtime.vert_color_fill);
+  }
+
   if (ELEM(p->type, GP_STROKE_BOX, GP_STROKE_CIRCLE)) {
     gpd->runtime.sbuffer_sflag |= GP_STROKE_CYCLIC;
   }
diff --git a/source/blender/makesdna/DNA_gpencil_types.h b/source/blender/makesdna/DNA_gpencil_types.h
index 8d07749bcec..cedc1a57376 100644
--- a/source/blender/makesdna/DNA_gpencil_types.h
+++ b/source/blender/makesdna/DNA_gpencil_types.h
@@ -484,6 +484,9 @@ typedef struct bGPdata_Runtime {
   /** Number of total elements available in cache. */
   int sbuffer_size;
 
+  /** Vertex Color applied to Fill. */
+  float vert_color_fill[4];
+
   /** Number of control-points for stroke. */
   int tot_cp_points;
   /** Array of control-points for stroke. */



More information about the Bf-blender-cvs mailing list