From: Matteo Bruni Subject: [PATCH 2/8] wined3d: Avoid potential division by 0 when computing fog scale. Message-Id: <1434487544-8697-2-git-send-email-mbruni@codeweavers.com> Date: Tue, 16 Jun 2015 22:45:38 +0200 FPU exceptions are usually masked in D3D and fog start and end don't normally match but apparently there are some real cases where the planets align. --- dlls/wined3d/glsl_shader.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index 37a8f87..109184d 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -1250,7 +1250,7 @@ static void shader_glsl_load_fog_uniform(const struct wined3d_context *context, tmpvalue.d = state->render_states[WINED3D_RS_FOGDENSITY]; GL_EXTCALL(glUniform1f(prog->ps.fog_density_location, tmpvalue.f)); get_fog_start_end(context, state, &start, &end); - scale = 1.0f / (end - start); + scale = end == start ? INFINITY : 1.0f / (end - start); GL_EXTCALL(glUniform1f(prog->ps.fog_end_location, end)); GL_EXTCALL(glUniform1f(prog->ps.fog_scale_location, scale)); checkGLcall("fog emulation uniforms"); -- 2.3.6