[Bf-blender-cvs] [8bfa7e1c725] greasepencil-object: GPencil: Fix error with evaluated colors after changing evaluation to depsgraph

Antonioya noreply at git.blender.org
Thu Jul 18 18:08:10 CEST 2019


Commit: 8bfa7e1c725221a6d0c77a4649678d91f4dda059
Author: Antonioya
Date:   Thu Jul 18 18:03:14 2019 +0200
Branches: greasepencil-object
https://developer.blender.org/rB8bfa7e1c725221a6d0c77a4649678d91f4dda059

GPencil: Fix error with evaluated colors after changing evaluation to depsgraph

The temporary colors were not copied when the derived frame was created.

The color must be copied in evaluation, not in draw manager because this replace any modifier change.

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

M	source/blender/blenkernel/intern/gpencil_modifier.c
M	source/blender/draw/engines/gpencil/gpencil_draw_utils.c

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

diff --git a/source/blender/blenkernel/intern/gpencil_modifier.c b/source/blender/blenkernel/intern/gpencil_modifier.c
index 31a6c19824f..ddb51936121 100644
--- a/source/blender/blenkernel/intern/gpencil_modifier.c
+++ b/source/blender/blenkernel/intern/gpencil_modifier.c
@@ -43,6 +43,7 @@
 #include "BKE_library_query.h"
 #include "BKE_gpencil.h"
 #include "BKE_lattice.h"
+#include "BKE_material.h"
 #include "BKE_gpencil_modifier.h"
 #include "BKE_object.h"
 
@@ -786,7 +787,7 @@ void BKE_gpencil_subdivide(bGPDstroke *gps, int level, int flag)
 }
 
 /* Copy frame but do not assign new memory */
-static void gpencil_copy_frame(bGPDframe *gpf, bGPDframe *derived_gpf)
+static void gpencil_copy_frame(Object *ob, bGPDframe *gpf, bGPDframe *derived_gpf)
 {
   derived_gpf->prev = gpf->prev;
   derived_gpf->next = gpf->next;
@@ -802,6 +803,11 @@ static void gpencil_copy_frame(bGPDframe *gpf, bGPDframe *derived_gpf)
     /* make copy of source stroke */
     bGPDstroke *gps_dst = BKE_gpencil_stroke_duplicate(gps_src);
 
+    /* copy color to temp fields to apply temporal changes in the stroke */
+    MaterialGPencilStyle *gp_style = BKE_material_gpencil_settings_get(ob, gps_src->mat_nr + 1);
+    copy_v4_v4(gps_dst->runtime.tmp_stroke_rgba, gp_style->stroke_rgba);
+    copy_v4_v4(gps_dst->runtime.tmp_fill_rgba, gp_style->fill_rgba);
+
     /* Save original pointers for using in edit and select operators. */
     gps_dst->runtime.gps_orig = gps_src;
     for (int i = 0; i < gps_src->totpoints; i++) {
@@ -828,7 +834,7 @@ static void gpencil_ensure_derived_frame(
     BKE_gpencil_free_frame_runtime_data(*derived_gpf);
   }
   /* copy data (do not assign new memory)*/
-  gpencil_copy_frame(gpf, *derived_gpf);
+  gpencil_copy_frame(ob, gpf, *derived_gpf);
 }
 
 /* Calculate gpencil modifiers */
diff --git a/source/blender/draw/engines/gpencil/gpencil_draw_utils.c b/source/blender/draw/engines/gpencil/gpencil_draw_utils.c
index 103ade8e85a..85ad1689c23 100644
--- a/source/blender/draw/engines/gpencil/gpencil_draw_utils.c
+++ b/source/blender/draw/engines/gpencil/gpencil_draw_utils.c
@@ -1057,10 +1057,6 @@ static void gpencil_draw_strokes(GpencilBatchCache *cache,
     }
 
     if ((gpl->actframe->framenum == gpf->framenum) || (!is_multiedit) || (overlay_multiedit)) {
-      /* copy color to temp fields to apply temporal changes in the stroke */
-      copy_v4_v4(gps->runtime.tmp_stroke_rgba, gp_style->stroke_rgba);
-      copy_v4_v4(gps->runtime.tmp_fill_rgba, gp_style->fill_rgba);
-
       /* hide any blend layer */
       if ((!stl->storage->simplify_blend) || (gpl->blend_mode == eGplBlendMode_Regular)) {
         /* fill */



More information about the Bf-blender-cvs mailing list