diff options
author | Dalai Felinto <dfelinto@gmail.com> | 2019-01-04 15:25:59 +0300 |
---|---|---|
committer | Dalai Felinto <dfelinto@gmail.com> | 2019-01-04 15:26:03 +0300 |
commit | bdbe48442846e156dc412d105d2e288af2b06696 (patch) | |
tree | 6909eb460555e1fc7d098917e3ec51bfc13123e8 /source/blender/draw/engines/eevee/eevee_depth_of_field.c | |
parent | 4d8ed937f226f4cdfa6f62fde5306b14c217e9c5 (diff) |
EEVEE DoF: Fix runtime error: division by zero when blades was 0
Even though the fragment shader was already discarding all members of
dof_bokeh_sides when blades was zero, the C code was still trying to
use this for a few divisions leading to runtime asserts.
Those are harmless yet can lead some to waste time while pursuiting
other bugs (namely a near freeze when blades aspect ratio is too low).
Diffstat (limited to 'source/blender/draw/engines/eevee/eevee_depth_of_field.c')
-rw-r--r-- | source/blender/draw/engines/eevee/eevee_depth_of_field.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_depth_of_field.c b/source/blender/draw/engines/eevee/eevee_depth_of_field.c index 602654068ff..2c3ce8b65f8 100644 --- a/source/blender/draw/engines/eevee/eevee_depth_of_field.c +++ b/source/blender/draw/engines/eevee/eevee_depth_of_field.c @@ -178,9 +178,9 @@ int EEVEE_depth_of_field_init(EEVEE_ViewLayerData *UNUSED(sldata), EEVEE_Data *v /* Precompute values to save instructions in fragment shader. */ effects->dof_bokeh_sides[0] = blades; - effects->dof_bokeh_sides[1] = 2.0f * M_PI / blades; + effects->dof_bokeh_sides[1] = blades > 0.0f ? 2.0f * M_PI / blades : 0.0f; effects->dof_bokeh_sides[2] = blades / (2.0f * M_PI); - effects->dof_bokeh_sides[3] = cosf(M_PI / blades); + effects->dof_bokeh_sides[3] = blades > 0.0f ? cosf(M_PI / blades) : 0.0f; return EFFECT_DOF | EFFECT_POST_BUFFER; } |