[Bf-blender-cvs] [4109094362d] greasepencil-refactor: GPencil: Fix missing stroke color while drawing when use Vertex Color
Antonio Vazquez
noreply at git.blender.org
Mon Jan 20 15:35:43 CET 2020
Commit: 4109094362d48528d95f862554c79f2fb61c9e74
Author: Antonio Vazquez
Date: Mon Jan 20 13:46:38 2020 +0100
Branches: greasepencil-refactor
https://developer.blender.org/rB4109094362d48528d95f862554c79f2fb61c9e74
GPencil: Fix missing stroke color while drawing when use 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 5e6839b9448..0d5983238dd 100644
--- a/source/blender/draw/intern/draw_cache_impl_gpencil.c
+++ b/source/blender/draw/intern/draw_cache_impl_gpencil.c
@@ -533,6 +533,8 @@ static void gpencil_sbuffer_stroke_ensure(bGPdata *gpd, bool do_stroke, bool do_
for (int i = 0; i < vert_len; i++) {
ED_gpencil_tpoint_to_point(ar, origin, &tpoints[i], &gps->points[i]);
mul_m4_v3(ob->imat, &gps->points[i].x);
+ bGPDspoint *pt = &gps->points[i];
+ copy_v4_v4(pt->vert_color, gpd->runtime.vert_color);
}
/* Create VBO. */
diff --git a/source/blender/editors/gpencil/gpencil_paint.c b/source/blender/editors/gpencil/gpencil_paint.c
index 929999c013e..cfaeba1578d 100644
--- a/source/blender/editors/gpencil/gpencil_paint.c
+++ b/source/blender/editors/gpencil/gpencil_paint.c
@@ -746,6 +746,15 @@ static short gp_stroke_addpoint(tGPsdata *p, const float mval[2], float pressure
else {
zero_v4(gpd->runtime.vert_color_fill);
}
+ /* Copy stroke vertex color. */
+ if (GPENCIL_USE_VERTEX_COLOR_STROKE(p->scene->toolsettings, p->brush)) {
+ copy_v3_v3(gpd->runtime.vert_color, p->brush->rgb);
+ gpd->runtime.vert_color[3] = p->brush->gpencil_settings->vertex_factor;
+ srgb_to_linearrgb_v4(gpd->runtime.vert_color, gpd->runtime.vert_color);
+ }
+ else {
+ zero_v4(gpd->runtime.vert_color);
+ }
/* 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 2105ebded2b..1aee83ce08f 100644
--- a/source/blender/editors/gpencil/gpencil_primitive.c
+++ b/source/blender/editors/gpencil/gpencil_primitive.c
@@ -131,6 +131,15 @@ static void gp_session_validatebuffer(tGPDprimitive *p)
else {
zero_v4(gpd->runtime.vert_color_fill);
}
+ /* Copy stroke vertex color. */
+ if (GPENCIL_USE_VERTEX_COLOR_STROKE(p->scene->toolsettings, p->brush)) {
+ copy_v3_v3(gpd->runtime.vert_color, p->brush->rgb);
+ gpd->runtime.vert_color[3] = p->brush->gpencil_settings->vertex_factor;
+ srgb_to_linearrgb_v4(gpd->runtime.vert_color, gpd->runtime.vert_color);
+ }
+ else {
+ zero_v4(gpd->runtime.vert_color);
+ }
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 cedc1a57376..6d89f01e3fa 100644
--- a/source/blender/makesdna/DNA_gpencil_types.h
+++ b/source/blender/makesdna/DNA_gpencil_types.h
@@ -484,7 +484,10 @@ typedef struct bGPdata_Runtime {
/** Number of total elements available in cache. */
int sbuffer_size;
- /** Vertex Color applied to Fill. */
+ /** Vertex Color applied to point (while drawing). */
+ float vert_color[4];
+
+ /** Vertex Color applied to Fill (while drawing). */
float vert_color_fill[4];
/** Number of control-points for stroke. */
More information about the Bf-blender-cvs
mailing list