Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntonio Vazquez <blendergit@gmail.com>2019-09-05 20:10:04 +0300
committerAntonio Vazquez <blendergit@gmail.com>2019-09-05 20:10:15 +0300
commitc90b81172b30b15e4f2f9e6a9a454f1d177176ac (patch)
tree015be36bb610743622a7c6b333cbf06569fb6b69 /source/blender/draw
parentcaaaac1365ae2dd5956697e222122c76e3afc5e6 (diff)
Fix T69513: Grease Pencil Fade Layers Overlay only works in Material and Texture Shading
The overlay factor was not used in other modes.
Diffstat (limited to 'source/blender/draw')
-rw-r--r--source/blender/draw/engines/gpencil/gpencil_draw_utils.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/source/blender/draw/engines/gpencil/gpencil_draw_utils.c b/source/blender/draw/engines/gpencil/gpencil_draw_utils.c
index bef72b9a054..01c3c10eb9e 100644
--- a/source/blender/draw/engines/gpencil/gpencil_draw_utils.c
+++ b/source/blender/draw/engines/gpencil/gpencil_draw_utils.c
@@ -254,6 +254,10 @@ static void set_wireframe_color(Object *ob,
{
const DRWContextState *draw_ctx = DRW_context_state_get();
World *world = draw_ctx->scene->world;
+ const bool is_fade = (v3d) && (v3d->gp_flag & V3D_GP_FADE_NOACTIVE_LAYERS) &&
+ (draw_ctx->obact) && (draw_ctx->obact == ob) &&
+ ((gpl->flag & GP_LAYER_ACTIVE) == 0);
+ const float opacity = is_fade ? v3d->overlay.gpencil_fade_layer : 1.0f;
float color[4];
if (((gp_style->stroke_rgba[3] < GPENCIL_ALPHA_OPACITY_THRESH) ||
@@ -264,7 +268,7 @@ static void set_wireframe_color(Object *ob,
else {
copy_v4_v4(color, gp_style->stroke_rgba);
}
- float alpha = color[3];
+ float alpha = color[3] * opacity;
/* wire color */
if ((v3d) && (id > -1)) {
@@ -301,13 +305,13 @@ static void set_wireframe_color(Object *ob,
else {
copy_v3_v3(color, v3d->shading.single_color);
}
- color[3] = alpha;
+ color[3] = is_fade ? alpha : 1.0f;
linearrgb_to_srgb_v4(stl->shgroups[id].wire_color, color);
break;
}
case V3D_SHADING_OBJECT_COLOR: {
copy_v4_v4(color, ob->color);
- color[3] = alpha;
+ color[3] = is_fade ? alpha : 1.0f;
linearrgb_to_srgb_v4(stl->shgroups[id].wire_color, color);
break;
}
@@ -324,7 +328,7 @@ static void set_wireframe_color(Object *ob,
hsv_to_rgb_v(hsv, &wire_col[0]);
copy_v3_v3(stl->shgroups[id].wire_color, wire_col);
- stl->shgroups[id].wire_color[3] = alpha;
+ stl->shgroups[id].wire_color[3] = is_fade ? alpha : 1.0f;
break;
}
default: {
@@ -337,9 +341,9 @@ static void set_wireframe_color(Object *ob,
copy_v4_v4(stl->shgroups[id].wire_color, color);
}
- /* if solid, the alpha must be set to 1.0 */
+ /* if solid, the alpha must be set to alpha */
if (stl->shgroups[id].shading_type[0] == OB_SOLID) {
- stl->shgroups[id].wire_color[3] = 1.0f;
+ stl->shgroups[id].wire_color[3] = is_fade ? alpha : 1.0f;
}
}