Fix T94262: Grease Pencil Blur Effect DoF mode wrong

This was visible outside of camera view and was not respecting the
"Depth of Field" checkbox on the Camera properties.

Now return early if DoF should not be visible.

Maniphest Tasks: T94262

Differential Revision: https://developer.blender.org/D13631
This commit is contained in:
Philipp Oeser 2021-12-20 12:17:12 +01:00
parent 399f84d479
commit 59221476b0
Notes: blender-bot 2023-02-14 06:42:54 +01:00
Referenced by issue #88449: Blender LTS: Maintenance Task 2.93
Referenced by issue #88449, Blender LTS: Maintenance Task 2.93
Referenced by issue #94262, Grease Pencil Blur Effect "Use Depth of Field" visible in cameras NOT using DoF
Referenced by issue #77348, Blender LTS: Maintenance Task 2.83
1 changed files with 6 additions and 1 deletions

View File

@ -99,6 +99,11 @@ static void gpencil_vfx_blur(BlurShaderFxData *fx, Object *ob, gpIterVfxData *it
return;
}
if ((fx->flag & FX_BLUR_DOF_MODE) && iter->pd->camera == NULL) {
/* No blur outside camera view (or when DOF is disabled on the camera). */
return;
}
DRWShadingGroup *grp;
const float s = sin(fx->rotation);
const float c = cos(fx->rotation);
@ -108,7 +113,7 @@ static void gpencil_vfx_blur(BlurShaderFxData *fx, Object *ob, gpIterVfxData *it
DRW_view_persmat_get(NULL, persmat, false);
const float w = fabsf(mul_project_m4_v3_zfac(persmat, ob->obmat[3]));
if ((fx->flag & FX_BLUR_DOF_MODE) && iter->pd->camera != NULL) {
if ((fx->flag & FX_BLUR_DOF_MODE)) {
/* Compute circle of confusion size. */
float coc = (iter->pd->dof_params[0] / -w) - iter->pd->dof_params[1];
copy_v2_fl(blur_size, fabsf(coc));