From 3e7f49875fab5f42941120f4bec55ec3e22a3bfa Mon Sep 17 00:00:00 2001
From: vortex <vortex@d7cf8633-e32d-0410-b094-e92efae38249>
Date: Sat, 19 Mar 2011 22:13:11 +0000
Subject: [PATCH] add "r_fog_clear" cvar which allows to disable framebuffer
 clearing to fog color (helps to fix bad borders on water reflections if fog
 is used), still, some old maps may want r_fog_clear = 1

git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@10942 d7cf8633-e32d-0410-b094-e92efae38249
---
 cl_screen.c | 4 +++-
 gl_rmain.c  | 2 ++
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/cl_screen.c b/cl_screen.c
index a555c6b4..1f6538e9 100644
--- a/cl_screen.c
+++ b/cl_screen.c
@@ -86,6 +86,7 @@ cvar_t vid_touchscreen_overlayalpha = {0, "vid_touchscreen_overlayalpha", "0.25"
 
 extern cvar_t v_glslgamma;
 extern cvar_t sbar_info_pos;
+extern cvar_t r_fog_clear;
 #define WANT_SCREENSHOT_HWGAMMA (scr_screenshot_hwgamma.integer && vid_usinghwgamma)
 
 int jpeg_supported = false;
@@ -1614,7 +1615,8 @@ void R_ClearScreen(qboolean fogcolor)
 	if (fogcolor)
 	{
 		R_UpdateFogColor();
-		VectorCopy(r_refdef.fogcolor, clearcolor);
+		if (r_fog_clear.integer)
+			VectorCopy(r_refdef.fogcolor, clearcolor);
 	}
 	// clear depth is 1.0
 	// LordHavoc: we use a stencil centered around 128 instead of 0,
diff --git a/gl_rmain.c b/gl_rmain.c
index 80c87db9..5ea6bb04 100644
--- a/gl_rmain.c
+++ b/gl_rmain.c
@@ -115,6 +115,7 @@ cvar_t r_polygonoffset_submodel_offset = {0, "r_polygonoffset_submodel_offset",
 cvar_t r_polygonoffset_decals_factor = {0, "r_polygonoffset_decals_factor", "0", "biases depth values of decals to prevent z-fighting artifacts"};
 cvar_t r_polygonoffset_decals_offset = {0, "r_polygonoffset_decals_offset", "-14", "biases depth values of decals to prevent z-fighting artifacts"};
 cvar_t r_fog_exp2 = {0, "r_fog_exp2", "0", "uses GL_EXP2 fog (as in Nehahra) rather than realistic GL_EXP fog"};
+cvar_t r_fog_clear = {0, "r_fog_clear", "1", "clears renderbuffer with fog color before render starts"};
 cvar_t r_drawfog = {CVAR_SAVE, "r_drawfog", "1", "allows one to disable fog rendering"};
 cvar_t r_transparentdepthmasking = {CVAR_SAVE, "r_transparentdepthmasking", "0", "enables depth writes on transparent meshes whose materially is normally opaque, this prevents seeing the inside of a transparent mesh"};
 
@@ -4078,6 +4079,7 @@ void GL_Main_Init(void)
 	Cvar_RegisterVariable(&r_polygonoffset_decals_factor);
 	Cvar_RegisterVariable(&r_polygonoffset_decals_offset);
 	Cvar_RegisterVariable(&r_fog_exp2);
+	Cvar_RegisterVariable(&r_fog_clear);
 	Cvar_RegisterVariable(&r_drawfog);
 	Cvar_RegisterVariable(&r_transparentdepthmasking);
 	Cvar_RegisterVariable(&r_texture_dds_load);
-- 
2.39.5