[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