[Bf-blender-cvs] [5cf56f6ae8b] greasepencil-refactor: GPencil: Refactor: Implement layer tint

Clément Foucault noreply at git.blender.org
Thu Dec 12 03:08:06 CET 2019


Commit: 5cf56f6ae8b9273218e1909c9044e0cb3509aaa4
Author: Clément Foucault
Date:   Thu Dec 12 03:05:48 2019 +0100
Branches: greasepencil-refactor
https://developer.blender.org/rB5cf56f6ae8b9273218e1909c9044e0cb3509aaa4

GPencil: Refactor: Implement layer tint

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

M	source/blender/draw/engines/gpencil/gpencil_engine.c
M	source/blender/draw/engines/gpencil/shaders/gpencil_vert.glsl

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

diff --git a/source/blender/draw/engines/gpencil/gpencil_engine.c b/source/blender/draw/engines/gpencil/gpencil_engine.c
index 995ea811491..93831e02360 100644
--- a/source/blender/draw/engines/gpencil/gpencil_engine.c
+++ b/source/blender/draw/engines/gpencil/gpencil_engine.c
@@ -790,6 +790,7 @@ static void gp_layer_cache_populate(bGPDlayer *gpl,
   DRW_shgroup_uniform_float_copy(iter->grp, "thicknessOffset", (float)gpl->line_change);
   DRW_shgroup_uniform_float_copy(iter->grp, "thicknessWorldScale", thickness_scale);
   DRW_shgroup_uniform_float_copy(iter->grp, "vertexColorOpacity", gpl->vertex_paint_opacity);
+  DRW_shgroup_uniform_vec4_copy(iter->grp, "layerTint", gpl->tintcolor);
 }
 
 static void gp_stroke_cache_populate(bGPDlayer *UNUSED(gpl),
diff --git a/source/blender/draw/engines/gpencil/shaders/gpencil_vert.glsl b/source/blender/draw/engines/gpencil/shaders/gpencil_vert.glsl
index b4044215fdd..d9369f2c3f7 100644
--- a/source/blender/draw/engines/gpencil/shaders/gpencil_vert.glsl
+++ b/source/blender/draw/engines/gpencil/shaders/gpencil_vert.glsl
@@ -12,6 +12,7 @@ uniform float thicknessWorldScale;
 /* Per Layer */
 uniform float thicknessOffset;
 uniform float vertexColorOpacity;
+uniform vec4 layerTint;
 
 in vec2 ma1;
 in vec2 ma2;
@@ -95,10 +96,11 @@ float stroke_thickness_modulate(float thickness)
 
 void color_output(vec4 stroke_col, vec4 vert_col, float vert_strength, float mix_tex)
 {
-  /* Mix stroke with vertex color. */
-  vec4 mixed_col;
-  mixed_col.rgb = mix(stroke_col.rgb, vert_col.rgb, vert_col.a * vertexColorOpacity);
-  mixed_col.a = clamp(stroke_col.a * vert_strength, 0.0, 1.0);
+  /* Mix stroke with other colors. */
+  vec4 mixed_col = stroke_col;
+  mixed_col.rgb = mix(mixed_col.rgb, vert_col.rgb, vert_col.a * vertexColorOpacity);
+  mixed_col.rgb = mix(mixed_col.rgb, layerTint.rgb, layerTint.a);
+  mixed_col.a *= vert_strength;
   /**
    * This is what the fragment shader looks like.
    * out = col * finalColorMul + col.a * finalColorAdd.



More information about the Bf-blender-cvs mailing list