[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