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); _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs