Index: binaries/data/mods/public/shaders/glsl/water_high.fs =================================================================== --- binaries/data/mods/public/shaders/glsl/water_high.fs +++ binaries/data/mods/public/shaders/glsl/water_high.fs @@ -134,11 +134,8 @@ // Let actual objects be reflected fully. reflMod = max(refTex.a, 0.75); -#elif USE_REFRACTION +#else vec3 reflColor = textureCube(skyCube, (vec4(eye, 0.0) * skyBoxRot).xyz).rgb; -#else // !USE_REFLECTION && !USE_REFRACTION - // Simplest case for reflection, return a gradient of blue based on Y component. - vec3 reflColor = mix(vec3(0.76, 0.84, 0.92), vec3(0.24, 0.43, 0.71), -eye.y); #endif return vec4(reflColor, reflMod); Index: source/renderer/TerrainRenderer.cpp =================================================================== --- source/renderer/TerrainRenderer.cpp +++ source/renderer/TerrainRenderer.cpp @@ -534,21 +534,18 @@ m->fancyWaterShader->Uniform(str_transform, g_Renderer.GetViewCamera().GetViewProjection()); - //TODO: bind only what's needed - if (WaterMgr->m_WaterRefraction || WaterMgr->m_WaterReflection) - { - m->fancyWaterShader->BindTexture(str_skyCube, g_Renderer.GetSkyManager()->GetSkyCube()); - // TODO: check that this rotates in the right direction. - CMatrix3D skyBoxRotation; - skyBoxRotation.SetIdentity(); - skyBoxRotation.RotateY(M_PI + lightEnv.GetRotation()); - m->fancyWaterShader->Uniform(str_skyBoxRot, skyBoxRotation); + m->fancyWaterShader->BindTexture(str_skyCube, g_Renderer.GetSkyManager()->GetSkyCube()); + // TODO: check that this rotates in the right direction. + CMatrix3D skyBoxRotation; + skyBoxRotation.SetIdentity(); + skyBoxRotation.RotateY(M_PI + lightEnv.GetRotation()); + m->fancyWaterShader->Uniform(str_skyBoxRot, skyBoxRotation); + + if (WaterMgr->m_WaterRefraction) + m->fancyWaterShader->Uniform(str_refractionMatrix, WaterMgr->m_RefractionMatrix); + if (WaterMgr->m_WaterReflection) + m->fancyWaterShader->Uniform(str_reflectionMatrix, WaterMgr->m_ReflectionMatrix); - if (WaterMgr->m_WaterRefraction) - m->fancyWaterShader->Uniform(str_refractionMatrix, WaterMgr->m_RefractionMatrix); - if (WaterMgr->m_WaterReflection) - m->fancyWaterShader->Uniform(str_reflectionMatrix, WaterMgr->m_ReflectionMatrix); - } m->fancyWaterShader->Uniform(str_ambient, lightEnv.m_AmbientColor); m->fancyWaterShader->Uniform(str_sunDir, lightEnv.GetSunDir()); m->fancyWaterShader->Uniform(str_sunColor, lightEnv.m_SunColor);