[Bf-blender-cvs] [0bd3484d7d3] greasepencil-refactor: GPencil: Implement grease pencil object fade

Antonio Vazquez noreply at git.blender.org
Tue Jan 21 16:05:25 CET 2020


Commit: 0bd3484d7d39574ed8a709ab0b24cbc778b3f7c8
Author: Antonio Vazquez
Date:   Tue Jan 21 15:38:43 2020 +0100
Branches: greasepencil-refactor
https://developer.blender.org/rB0bd3484d7d39574ed8a709ab0b24cbc778b3f7c8

GPencil: Implement grease pencil object fade

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

M	source/blender/draw/engines/gpencil/gpencil_cache_utils.c
M	source/blender/draw/engines/gpencil/gpencil_engine.c
M	source/blender/draw/engines/gpencil/gpencil_engine.h

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

diff --git a/source/blender/draw/engines/gpencil/gpencil_cache_utils.c b/source/blender/draw/engines/gpencil/gpencil_cache_utils.c
index 55a8c3bce71..68ddba024a9 100644
--- a/source/blender/draw/engines/gpencil/gpencil_cache_utils.c
+++ b/source/blender/draw/engines/gpencil/gpencil_cache_utils.c
@@ -106,9 +106,19 @@ GPENCIL_tObject *gpencil_object_cache_add(GPENCIL_PrivateData *pd, Object *ob)
 
 GPENCIL_tLayer *gpencil_layer_cache_add(GPENCIL_PrivateData *pd, Object *ob, bGPDlayer *gpl)
 {
-  const bool is_fade = ((pd->fade_layer_opacity > -1.0f) && (pd->obact) && (pd->obact == ob) &&
+  const bool is_obact = ((pd->obact) && (pd->obact == ob));
+  const bool is_fade = ((pd->fade_layer_opacity > -1.0f) && (is_obact) &&
                         ((gpl->flag & GP_LAYER_ACTIVE) == 0));
-  float fade_layer_opacity = (!is_fade) ? gpl->opacity : pd->fade_layer_opacity;
+
+  /* Defines layer opacity. For active object depends of layer opacity factor, and
+   * for no active object, depends if the fade grease pencil objects option is enabled. */
+  float fade_layer_opacity = gpl->opacity;
+  if ((is_obact) && (is_fade)) {
+    fade_layer_opacity = pd->fade_layer_opacity;
+  }
+  else if ((!is_obact) && (pd->fade_object_opacity > -1.0f)) {
+    fade_layer_opacity = pd->fade_object_opacity;
+  }
 
   bGPdata *gpd = (bGPdata *)ob->data;
   GPENCIL_tLayer *tgp_layer = BLI_memblock_alloc(pd->gp_layer_pool);
diff --git a/source/blender/draw/engines/gpencil/gpencil_engine.c b/source/blender/draw/engines/gpencil/gpencil_engine.c
index d1af5d461fe..bc47a18ba42 100644
--- a/source/blender/draw/engines/gpencil/gpencil_engine.c
+++ b/source/blender/draw/engines/gpencil/gpencil_engine.c
@@ -189,9 +189,15 @@ void GPENCIL_cache_init(void *ved)
     pd->simplify_fx = GPENCIL_SIMPLIFY_FX(scene, playing);
 
     /* Fade Layer. */
-    const bool is_fade = ((!hide_overlay) &&
-                          (draw_ctx->v3d->gp_flag & V3D_GP_FADE_NOACTIVE_LAYERS));
-    pd->fade_layer_opacity = (is_fade) ? draw_ctx->v3d->overlay.gpencil_fade_layer : -1.0f;
+    const bool is_fade_layer = ((!hide_overlay) && (!pd->is_render) &&
+                                (draw_ctx->v3d->gp_flag & V3D_GP_FADE_NOACTIVE_LAYERS));
+    pd->fade_layer_opacity = (is_fade_layer) ? draw_ctx->v3d->overlay.gpencil_fade_layer : -1.0f;
+    /* Fade GPencil Objects. */
+    const bool is_fade_object = ((!hide_overlay) && (!pd->is_render) &&
+                                 (draw_ctx->v3d->gp_flag & V3D_GP_FADE_OBJECTS) &&
+                                 (draw_ctx->v3d->gp_flag & V3D_GP_FADE_NOACTIVE_GPENCIL));
+    pd->fade_object_opacity = (is_fade_object) ? draw_ctx->v3d->overlay.gpencil_paper_opacity :
+                                                 -1.0f;
   }
   else {
     pd->do_onion = true;
diff --git a/source/blender/draw/engines/gpencil/gpencil_engine.h b/source/blender/draw/engines/gpencil/gpencil_engine.h
index 9fd3061f4b9..52f857dbad7 100644
--- a/source/blender/draw/engines/gpencil/gpencil_engine.h
+++ b/source/blender/draw/engines/gpencil/gpencil_engine.h
@@ -329,6 +329,8 @@ typedef struct GPENCIL_PrivateData {
   bool use_signed_fb;
   /* Layer opacity for fading. */
   float fade_layer_opacity;
+  /* Opacity for fading objects. */
+  float fade_object_opacity;
 } GPENCIL_PrivateData;
 
 /* geometry batch cache functions */



More information about the Bf-blender-cvs mailing list