Commit: 4d8de9a9b1a56a3b8336b5f831fbdd70a3e481ea
Author: Antonio Vazquez
Date:   Thu Nov 28 20:18:38 2019 +0100
Branches: greasepencil-object
https://developer.blender.org/rB4d8de9a9b1a56a3b8336b5f831fbdd70a3e481ea

GPencil: Implement Vertex Overlay and set Vertex as default

Now in Material Overlay mode the Vertex Color is not used and by default the 2D 
template uses Vertex Mode

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

M       source/blender/blenloader/intern/versioning_defaults.c
M       source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
M       source/blender/draw/engines/gpencil/gpencil_draw_utils.c
M       source/blender/draw/engines/gpencil/gpencil_engine.h
M       source/blender/makesrna/intern/rna_space.c

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

diff --git a/source/blender/blenloader/intern/versioning_defaults.c 
b/source/blender/blenloader/intern/versioning_defaults.c
index 54ce04cd667..cf12e3f69ae 100644
--- a/source/blender/blenloader/intern/versioning_defaults.c
+++ b/source/blender/blenloader/intern/versioning_defaults.c
@@ -227,6 +227,11 @@ static void blo_update_defaults_screen(bScreen *screen,
           /* Enable Sliders. */
           saction->flag |= SACTION_SLIDERS;
         }
+        else if (sa->spacetype == SPACE_VIEW3D) {
+          View3D *v3d = sa->spacedata.first;
+          /* Set Vertex Color by default. */
+          v3d->shading.color_type = V3D_SHADING_VERTEX_COLOR;
+        }
       }
     }
   }
diff --git a/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c 
b/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
index 601b4d5aa6d..0826a52cbee 100644
--- a/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
+++ b/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
@@ -160,7 +160,7 @@ void gpencil_get_point_geom(GpencilBatchCacheElem *be,
   int totvertex = gps->totpoints;
   float mix_color[4];
 
-  const float vpaint_mix = v3d ? v3d->overlay.gpencil_vertex_paint_opacity : 
1.0f;
+  const float vpaint_mix = gpencil_get_vertex_paint_factor(v3d);
   const bool attenuate = (GPENCIL_VERTEX_MODE(gpd) &&
                           
GPENCIL_ANY_VERTEX_MASK(ts->gpencil_selectmode_vertex));
 
@@ -272,7 +272,7 @@ void gpencil_get_stroke_geom(struct GpencilBatchCacheElem 
*be,
   Object *ob = draw_ctx->obact;
   bGPdata *gpd = ob ? (bGPdata *)ob->data : NULL;
 
-  const float vpaint_mix = v3d ? v3d->overlay.gpencil_vertex_paint_opacity : 
1.0f;
+  const float vpaint_mix = gpencil_get_vertex_paint_factor(v3d);
   const bool attenuate = (GPENCIL_VERTEX_MODE(gpd) &&
                           
GPENCIL_ANY_VERTEX_MASK(ts->gpencil_selectmode_vertex));
 
diff --git a/source/blender/draw/engines/gpencil/gpencil_draw_utils.c 
b/source/blender/draw/engines/gpencil/gpencil_draw_utils.c
index 0db2f47259e..f8cf0859b2a 100644
--- a/source/blender/draw/engines/gpencil/gpencil_draw_utils.c
+++ b/source/blender/draw/engines/gpencil/gpencil_draw_utils.c
@@ -971,6 +971,19 @@ static DRWShadingGroup 
*gpencil_shgroup_point_create(GPENCIL_e_data *e_data,
   return grp;
 }
 
+/* Get vertex Paint factor */
+float gpencil_get_vertex_paint_factor(View3D *v3d)
+{
+  if (v3d) {
+    float vpaint_mix = (v3d->shading.color_type == V3D_SHADING_MATERIAL_COLOR) 
?
+                           0.0f :
+                           v3d->overlay.gpencil_vertex_paint_opacity;
+    return vpaint_mix;
+  }
+
+  return 1.0f;
+}
+
 /* add fill vertex info  */
 static void gpencil_add_fill_vertexdata(GpencilBatchCache *cache,
                                         Object *ob,
@@ -987,7 +1000,7 @@ static void gpencil_add_fill_vertexdata(GpencilBatchCache 
*cache,
   View3D *v3d = draw_ctx->v3d;
   bGPdata *gpd = ob ? (bGPdata *)ob->data : NULL;
 
-  const float vpaint_mix = v3d ? v3d->overlay.gpencil_vertex_paint_opacity : 
1.0f;
+  const float vpaint_mix = gpencil_get_vertex_paint_factor(v3d);
   const bool attenuate = (GPENCIL_VERTEX_MODE(gpd) &&
                           
GPENCIL_ANY_VERTEX_MASK(ts->gpencil_selectmode_vertex));
 
diff --git a/source/blender/draw/engines/gpencil/gpencil_engine.h 
b/source/blender/draw/engines/gpencil/gpencil_engine.h
index 0be1f6abafe..e3714d6627a 100644
--- a/source/blender/draw/engines/gpencil/gpencil_engine.h
+++ b/source/blender/draw/engines/gpencil/gpencil_engine.h
@@ -32,6 +32,7 @@ struct Object;
 struct RenderEngine;
 struct RenderLayer;
 struct bGPDstroke;
+struct View3D;
 
 struct GPUBatch;
 struct GPUVertBuf;
@@ -464,6 +465,7 @@ struct tGPencilObjectCache *gpencil_object_cache_add(struct 
tGPencilObjectCache
                                                      int *gp_cache_used);
 
 bool gpencil_onion_active(struct bGPdata *gpd);
+float gpencil_get_vertex_paint_factor(struct View3D *v3d);
 
 /* shading groups cache functions */
 struct GpencilBatchGroup *gpencil_group_cache_add(struct GpencilBatchGroup 
*cache_array,
diff --git a/source/blender/makesrna/intern/rna_space.c 
b/source/blender/makesrna/intern/rna_space.c
index cb5541a8152..14573705601 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -3178,7 +3178,7 @@ static void rna_def_space_view3d_shading(BlenderRNA *brna)
   RNA_def_property_enum_funcs(prop, NULL, NULL, 
"rna_View3DShading_color_type_itemf");
   RNA_def_property_ui_text(prop, "Color", "Color Type");
   RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
-  RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
+  RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, 
"rna_GPencil_update");
 
   prop = RNA_def_property(srna, "wireframe_color_type", PROP_ENUM, PROP_NONE);
   RNA_def_property_enum_sdna(prop, NULL, "wire_color_type");

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to