diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index 5c57764c80..9bbee009f6 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -111,9 +111,11 @@ namespace MWRender } // move the plane back along its normal a little bit to prevent bleeding at the water shore - const float clipFudge = -5; - modelViewMatrix->preMultTranslate(mCullPlane->getNormal() * clipFudge); - + unsigned int fov = Settings::Manager::getInt("field of view", "Camera"); + const float clipFudge = 2.5; // minimum offset of clip plane + const float clipFudgeScale = 1.0; // additional offset of clip plane when standing at shore level with default FOV + float clipOffset = abs(abs((*mCullPlane)[3]) - eyePoint.z()) * (clipFudgeScale * fov / (-7500.0)) - clipFudge; + modelViewMatrix->preMultTranslate(mCullPlane->getNormal() * clipOffset); cv->pushModelViewMatrix(modelViewMatrix, osg::Transform::RELATIVE_RF); traverse(node, cv); cv->popModelViewMatrix();