Index: ps/trunk/binaries/data/mods/public/shaders/glsl/water_high.fs =================================================================== --- ps/trunk/binaries/data/mods/public/shaders/glsl/water_high.fs +++ ps/trunk/binaries/data/mods/public/shaders/glsl/water_high.fs @@ -66,6 +66,8 @@ #endif #if USE_REAL_DEPTH uniform sampler2D depthTex; + uniform float zNear; + uniform float zFar; #endif #if USE_SHADOWS_ON_WATER && USE_SHADOW @@ -199,10 +201,6 @@ float depth; #if USE_REAL_DEPTH - // Don't change these two. They should match the values in the config (TODO: dec uniforms). - float zNear = 2.0; - float zFar = 4096.0; - // Compute real depth at the target point. float water_b = gl_FragCoord.z; float water_n = 2.0 * water_b - 1.0; Index: ps/trunk/source/renderer/TerrainRenderer.cpp =================================================================== --- ps/trunk/source/renderer/TerrainRenderer.cpp +++ ps/trunk/source/renderer/TerrainRenderer.cpp @@ -741,7 +741,6 @@ m->fancyWaterShader->Bind(); const CCamera& camera = g_Renderer.GetViewCamera(); - CVector3D camPos = camera.m_Orientation.GetTranslation(); m->fancyWaterShader->BindTexture(str_normalMap, WaterMgr->m_NormalMap[curTex]); m->fancyWaterShader->BindTexture(str_normalMap2, WaterMgr->m_NormalMap[nexTex]); @@ -789,7 +788,14 @@ m->fancyWaterShader->Uniform(str_windAngle, WaterMgr->m_WindAngle); m->fancyWaterShader->Uniform(str_repeatScale, 1.0f / repeatPeriod); m->fancyWaterShader->Uniform(str_losMatrix, losTexture.GetTextureMatrix()); - m->fancyWaterShader->Uniform(str_cameraPos, camPos); + + m->fancyWaterShader->Uniform(str_cameraPos, camera.m_Orientation.GetTranslation()); + if (WaterMgr->m_WaterRealDepth) + { + m->fancyWaterShader->Uniform(str_zNear, camera.GetNearPlane()); + m->fancyWaterShader->Uniform(str_zFar, camera.GetFarPlane()); + } + m->fancyWaterShader->Uniform(str_fogColor, lightEnv.m_FogColor); m->fancyWaterShader->Uniform(str_fogParams, lightEnv.m_FogFactor, lightEnv.m_FogMax, 0.f, 0.f); m->fancyWaterShader->Uniform(str_time, (float)time);