[Bf-blender-cvs] [bdbe4844284] master: EEVEE DoF: Fix runtime error: division by zero when blades was 0

Dalai Felinto noreply at git.blender.org
Fri Jan 4 13:28:08 CET 2019


Commit: bdbe48442846e156dc412d105d2e288af2b06696
Author: Dalai Felinto
Date:   Fri Jan 4 10:25:59 2019 -0200
Branches: master
https://developer.blender.org/rBbdbe48442846e156dc412d105d2e288af2b06696

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).

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

M	source/blender/draw/engines/eevee/eevee_depth_of_field.c

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

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;
 		}



More information about the Bf-blender-cvs mailing list