From b7ba58c8f2951e10ac804fda3c27a07a68bfca76 Mon Sep 17 00:00:00 2001 From: Qlonever <42286723+Qlonever@users.noreply.github.com> Date: Tue, 11 Apr 2023 21:03:28 -0400 Subject: [PATCH] Offsets reflection/refraction clip plane based on camera height and FOV --- apps/openmw/mwrender/water.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) 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();