From f92fbc2acd1c8508c8941b173345e6c3c0c6c3a7 Mon Sep 17 00:00:00 2001 From: Bret Curtis Date: Sat, 12 Jun 2021 00:10:55 +0200 Subject: [PATCH 1/2] workaround shadow issue on macOS, https://gitlab.com/OpenMW/openmw/-/issues/6057 --- components/sceneutil/mwshadowtechnique.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/sceneutil/mwshadowtechnique.cpp b/components/sceneutil/mwshadowtechnique.cpp index e9eb9b2b2f..88d44d2f69 100644 --- a/components/sceneutil/mwshadowtechnique.cpp +++ b/components/sceneutil/mwshadowtechnique.cpp @@ -566,8 +566,9 @@ MWShadowTechnique::ShadowData::ShadowData(MWShadowTechnique::ViewDependentData* _camera = new osg::Camera; _camera->setName("ShadowCamera"); _camera->setReferenceFrame(osg::Camera::ABSOLUTE_RF_INHERIT_VIEWPOINT); +#ifndef __APPLE__ // workaround shadow issue on macOS, https://gitlab.com/OpenMW/openmw/-/issues/6057 _camera->setImplicitBufferAttachmentMask(0, 0); - +#endif //_camera->setClearColor(osg::Vec4(1.0f,1.0f,1.0f,1.0f)); _camera->setClearColor(osg::Vec4(0.0f,0.0f,0.0f,0.0f)); From 7fa67ff675e944e80dde261a62e6b8fccf8ba79e Mon Sep 17 00:00:00 2001 From: CedricMocquillon Date: Sat, 12 Jun 2021 15:33:53 +0200 Subject: [PATCH 2/2] Use same distance for all lod instances of a chunk --- apps/openmw/mwrender/objectpaging.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwrender/objectpaging.cpp b/apps/openmw/mwrender/objectpaging.cpp index b6bae8cbb5..8e29f0af4f 100644 --- a/apps/openmw/mwrender/objectpaging.cpp +++ b/apps/openmw/mwrender/objectpaging.cpp @@ -477,6 +477,8 @@ namespace MWRender constexpr auto copyMask = ~Mask_UpdateVisitor; AnalyzeVisitor analyzeVisitor(copyMask); + osg::Vec3f center3 = { center.x(), center.y(), 0.f }; + analyzeVisitor.mCurrentDistance = (viewPoint - center3).length2(); float minSize = mMinSize; if (mMinSizeMergeFactor) minSize *= mMinSizeMergeFactor; @@ -546,7 +548,6 @@ namespace MWRender continue; } - analyzeVisitor.mCurrentDistance = dSqr; auto emplaced = nodes.emplace(cnode, InstanceList()); if (emplaced.second) {