[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