[Bf-blender-cvs] [2948d533c10] greasepencil-object: GPencil: Fix On/OFF buttons for VFX

Antonio Vazquez noreply at git.blender.org
Fri Feb 14 20:40:53 CET 2020


Commit: 2948d533c10f8779f563169482af3c4138fd6b93
Author: Antonio Vazquez
Date:   Fri Feb 14 20:40:45 2020 +0100
Branches: greasepencil-object
https://developer.blender.org/rB2948d533c10f8779f563169482af3c4138fd6b93

GPencil: Fix On/OFF buttons for VFX

As the VFX was using if the mode was render, and this mode was shared with the shading type, the Viewport ON/OFF button was not working as expected.

Now, the VFX use a is_viewport control and the is_render is not used.

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

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

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

diff --git a/source/blender/draw/engines/gpencil/gpencil_engine.c b/source/blender/draw/engines/gpencil/gpencil_engine.c
index ba2c33ebe3f..8352037ef16 100644
--- a/source/blender/draw/engines/gpencil/gpencil_engine.c
+++ b/source/blender/draw/engines/gpencil/gpencil_engine.c
@@ -105,6 +105,7 @@ void GPENCIL_engine_init(void *ved)
   stl->pd->scene_depth_tx = stl->pd->draw_depth_only ? txl->dummy_texture : dtxl->depth;
   stl->pd->scene_fb = dfbl->default_fb;
   stl->pd->is_render = txl->render_depth_tx || (v3d && v3d->shading.type == OB_RENDER);
+  stl->pd->is_viewport = (v3d != NULL);
   stl->pd->global_light_pool = gpencil_light_pool_add(stl->pd);
   stl->pd->shadeless_light_pool = gpencil_light_pool_add(stl->pd);
   /* Small HACK: we don't want the global pool to be reused,
diff --git a/source/blender/draw/engines/gpencil/gpencil_engine.h b/source/blender/draw/engines/gpencil/gpencil_engine.h
index e2009138def..dafe24f810a 100644
--- a/source/blender/draw/engines/gpencil/gpencil_engine.h
+++ b/source/blender/draw/engines/gpencil/gpencil_engine.h
@@ -293,6 +293,8 @@ typedef struct GPENCIL_PrivateData {
   int cfra;
   /* If we are rendering for final render (F12). */
   bool is_render;
+  /* If we are in viewport display (used for VFX). */
+  bool is_viewport;
   /* True in selection and auto_depth drawing */
   bool draw_depth_only;
   /* Is shading set to wireframe. */
diff --git a/source/blender/draw/engines/gpencil/gpencil_shader_fx.c b/source/blender/draw/engines/gpencil/gpencil_shader_fx.c
index 8db51dd9e45..420e24080a3 100644
--- a/source/blender/draw/engines/gpencil/gpencil_shader_fx.c
+++ b/source/blender/draw/engines/gpencil/gpencil_shader_fx.c
@@ -36,7 +36,7 @@
 #include "gpencil_engine.h"
 
 /* verify if this fx is active */
-static bool effect_is_active(bGPdata *gpd, ShaderFxData *fx, bool is_render)
+static bool effect_is_active(bGPdata *gpd, ShaderFxData *fx, bool is_viewport)
 {
   if (fx == NULL) {
     return false;
@@ -47,12 +47,12 @@ static bool effect_is_active(bGPdata *gpd, ShaderFxData *fx, bool is_render)
   }
 
   bool is_edit = GPENCIL_ANY_EDIT_MODE(gpd);
-  if (((fx->mode & eShaderFxMode_Editmode) == 0) && (is_edit) && (!is_render)) {
+  if (((fx->mode & eShaderFxMode_Editmode) == 0) && (is_edit) && (is_viewport)) {
     return false;
   }
 
-  if (((fx->mode & eShaderFxMode_Realtime) && (is_render == false)) ||
-      ((fx->mode & eShaderFxMode_Render) && (is_render == true))) {
+  if (((fx->mode & eShaderFxMode_Realtime) && (is_viewport == true)) ||
+      ((fx->mode & eShaderFxMode_Render) && (is_viewport == false))) {
     return true;
   }
 
@@ -572,7 +572,7 @@ void gpencil_vfx_cache_populate(GPENCIL_Data *vedata, Object *ob, GPENCIL_tObjec
   };
 
   LISTBASE_FOREACH (ShaderFxData *, fx, &ob->shader_fx) {
-    if (effect_is_active(gpd, fx, pd->is_render)) {
+    if (effect_is_active(gpd, fx, pd->is_viewport)) {
       switch (fx->type) {
         case eShaderFxType_Blur:
           gpencil_vfx_blur((BlurShaderFxData *)fx, ob, &iter);



More information about the Bf-blender-cvs mailing list