From 4cd6f647ee62494bd31c1a4d42cf5814ab9b59ba Mon Sep 17 00:00:00 2001 From: Den Urakolouy Date: Mon, 3 Nov 2025 15:34:20 +0300 Subject: [PATCH 1/3] Reduce clear color bleeding for water --- sp/src/game/client/viewrender.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/sp/src/game/client/viewrender.cpp b/sp/src/game/client/viewrender.cpp index 6bcff8da90e..5fca37c5508 100644 --- a/sp/src/game/client/viewrender.cpp +++ b/sp/src/game/client/viewrender.cpp @@ -6595,6 +6595,10 @@ void CAboveWaterView::CRefractionView::Setup() m_DrawFlags = DF_RENDER_REFRACTION | DF_CLIP_Z | DF_RENDER_UNDERWATER | DF_FUDGE_UP | DF_DRAW_ENTITITES ; + +#ifdef MAPBASE + m_DrawFlags |= DF_RENDER_ABOVEWATER; +#endif } @@ -6611,11 +6615,19 @@ void CAboveWaterView::CRefractionView::Draw() int nSaveViewID = CurrentViewID(); SetupCurrentView( origin, angles, VIEW_REFRACTION ); +#ifdef MAPBASE + DrawSetup( GetOuter()->m_waterHeight + 2.f, m_DrawFlags, GetOuter()->m_waterZAdjust ); +#else DrawSetup( GetOuter()->m_waterHeight, m_DrawFlags, GetOuter()->m_waterZAdjust ); +#endif SetFogVolumeState( GetOuter()->m_fogInfo, true ); SetClearColorToFogColor(); +#ifdef MAPBASE + DrawExecute( GetOuter()->m_waterHeight + 2.f, VIEW_REFRACTION, GetOuter()->m_waterZAdjust ); +#else DrawExecute( GetOuter()->m_waterHeight, VIEW_REFRACTION, GetOuter()->m_waterZAdjust ); +#endif #ifdef PORTAL // deal with stencil From 096d65919a863db9befb20c3250c1ee77f38b371 Mon Sep 17 00:00:00 2001 From: Den Urakolouy Date: Mon, 3 Nov 2025 15:49:39 +0300 Subject: [PATCH 2/3] Add "r_water_use_fix_for_bleeding" --- sp/src/game/client/viewrender.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sp/src/game/client/viewrender.cpp b/sp/src/game/client/viewrender.cpp index 5fca37c5508..91b7b69207b 100644 --- a/sp/src/game/client/viewrender.cpp +++ b/sp/src/game/client/viewrender.cpp @@ -164,6 +164,10 @@ static ConVar r_ForceWaterLeaf( "r_ForceWaterLeaf", "1", 0, "Enable for optimiza static ConVar mat_drawwater( "mat_drawwater", "1", FCVAR_CHEAT ); static ConVar mat_clipz( "mat_clipz", "1" ); +#ifdef MAPBASE +static ConVar r_water_use_fix_for_bleeding("r_water_use_fix_for_bleeding", "1", FCVAR_ARCHIVE, "Enable hack that adjusts the clipping plane so it fixes bleeding (2x expensive)"); +#endif + //----------------------------------------------------------------------------- // Other convars @@ -6597,7 +6601,9 @@ void CAboveWaterView::CRefractionView::Setup() DF_DRAW_ENTITITES ; #ifdef MAPBASE - m_DrawFlags |= DF_RENDER_ABOVEWATER; + // Single check if enough, no need to repeat that in Draw just for +2.f + if (r_water_use_fix_for_bleeding.GetBool()) + m_DrawFlags |= DF_RENDER_ABOVEWATER; #endif } From dc0609eb4a718181fa7d8fb0f13df60e3136e8ba Mon Sep 17 00:00:00 2001 From: Den Urakolouy Date: Mon, 3 Nov 2025 16:00:06 +0300 Subject: [PATCH 3/3] I can't prove that --- sp/src/game/client/viewrender.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sp/src/game/client/viewrender.cpp b/sp/src/game/client/viewrender.cpp index 91b7b69207b..801849e1d71 100644 --- a/sp/src/game/client/viewrender.cpp +++ b/sp/src/game/client/viewrender.cpp @@ -165,7 +165,7 @@ static ConVar mat_drawwater( "mat_drawwater", "1", FCVAR_CHEAT ); static ConVar mat_clipz( "mat_clipz", "1" ); #ifdef MAPBASE -static ConVar r_water_use_fix_for_bleeding("r_water_use_fix_for_bleeding", "1", FCVAR_ARCHIVE, "Enable hack that adjusts the clipping plane so it fixes bleeding (2x expensive)"); +static ConVar r_water_use_fix_for_bleeding("r_water_use_fix_for_bleeding", "1", FCVAR_ARCHIVE, "Enable hack that adjusts the clipping plane so it fixes bleeding"); #endif