From e1d3c277a191851dfae94b7da1f7653d7dc44528 Mon Sep 17 00:00:00 2001 From: XProger Date: Thu, 15 Nov 2018 06:45:03 +0300 Subject: [PATCH] disable underwater fog for low water detail preset --- src/gapi_gl.h | 3 ++- src/mesh.h | 4 ++-- src/shaders/shader.glsl | 6 ++---- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/gapi_gl.h b/src/gapi_gl.h index 69f0e8d..08ff171 100644 --- a/src/gapi_gl.h +++ b/src/gapi_gl.h @@ -394,7 +394,8 @@ namespace GAPI { #ifndef _OS_CLOVER // TODO: only for non Mali-400? strcat(defines, "#define OPT_TRAPEZOID\n"); - strcat(defines, "#define OPT_UNDERWATER_FOG\n"); + if (Core::settings.detail.water > Core::Settings::LOW) + strcat(defines, "#define OPT_UNDERWATER_FOG\n"); #endif char fileName[255]; diff --git a/src/mesh.h b/src/mesh.h index 2f2883c..4e01796 100644 --- a/src/mesh.h +++ b/src/mesh.h @@ -687,14 +687,14 @@ struct MeshBuilder { void roomRemoveWaterSurfaces(TR::Room &room, int &iCount, int &vCount) { + room.waterLevel = -1; + if (Core::settings.detail.water == Core::Settings::LOW) { for (int i = 0; i < room.data.fCount; i++) room.data.faces[i].water = false; return; } - room.waterLevel = -1; - for (int i = 0; i < room.data.fCount; i++) { TR::Face &f = room.data.faces[i]; if (f.water) continue; diff --git a/src/shaders/shader.glsl b/src/shaders/shader.glsl index 1bf9532..74061da 100644 --- a/src/shaders/shader.glsl +++ b/src/shaders/shader.glsl @@ -140,13 +140,11 @@ uniform vec4 uFogParams; #endif float fog; - #ifdef UNDERWATER + #if defined(UNDERWATER) && defined(OPT_UNDERWATER_FOG) float d; - #ifdef OPT_UNDERWATER_FOG if (uViewPos.y < uParam.y) // TODO: fix for mediump d = abs((coord.y - uParam.y) / normalize(uViewPos.xyz - coord.xyz).y); else - #endif d = length(uViewPos.xyz - coord.xyz); fog = d * WATER_FOG_DIST; #else @@ -481,7 +479,7 @@ uniform vec4 uFogParams; color.xyz += calcSpecular(normal, vViewVec.xyz, vLightVec, uLightColor[0], rSpecular); #endif - #ifdef UNDERWATER + #if defined(UNDERWATER) && defined(OPT_UNDERWATER_FOG) color.xyz = mix(UNDERWATER_COLOR * 0.2, color.xyz, vNormal.w); #else color.xyz = mix(uFogParams.xyz, color.xyz, vNormal.w);