Skip to content

Commit

Permalink
games-engines/openmw: Fix build w/ >=dev-games/openscenegraph-3.6.5
Browse files Browse the repository at this point in the history
Bug: https://bugs.gentoo.org/709878
Package-Manager: Portage-2.3.93, Repoman-2.3.20
Signed-off-by: Andreas Sturmlechner <[email protected]>
  • Loading branch information
a17r committed Mar 14, 2020
1 parent 33f9c87 commit 5b8613a
Show file tree
Hide file tree
Showing 3 changed files with 74 additions and 0 deletions.
51 changes: 51 additions & 0 deletions games-engines/openmw/files/openmw-0.45.0-osg-3.6.5-1.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
From 807f550386a1eac6f7306589a4e4a01e783e65df Mon Sep 17 00:00:00 2001
From: Alexander Olofsson <[email protected]>
Date: Thu, 13 Feb 2020 19:15:33 +0100
Subject: [PATCH] Fix building mwrender/sky with OSG 3.6.5

OSG commit aff574b completely replaces the method of doing user-defined
query geometry, removing support for modifying the default geometry.
---
apps/openmw/mwrender/sky.cpp | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/apps/openmw/mwrender/sky.cpp b/apps/openmw/mwrender/sky.cpp
index 3996f472c2..e13f5a7b65 100644
--- a/apps/openmw/mwrender/sky.cpp
+++ b/apps/openmw/mwrender/sky.cpp
@@ -558,16 +558,22 @@ class Sun : public CelestialBody
osg::ref_ptr<osg::OcclusionQueryNode> oqn = new osg::OcclusionQueryNode;
oqn->setQueriesEnabled(true);

+#if OSG_VERSION_GREATER_OR_EQUAL(3, 6, 5)
+ // With OSG 3.6.5, the method of providing user defined query geometry has been completely replaced
+ osg::ref_ptr<osg::QueryGeometry> queryGeom = new osg::QueryGeometry(oqn->getName());
+#else
+ auto* queryGeom = oqn->getQueryGeometry();
+#endif
+
// Make it fast! A DYNAMIC query geometry means we can't break frame until the flare is rendered (which is rendered after all the other geometry,
// so that would be pretty bad). STATIC should be safe, since our node's local bounds are static, thus computeBounds() which modifies the queryGeometry
// is only called once.
// Note the debug geometry setDebugDisplay(true) is always DYNAMIC and that can't be changed, not a big deal.
- oqn->getQueryGeometry()->setDataVariance(osg::Object::STATIC);
+ queryGeom->setDataVariance(osg::Object::STATIC);

// Set up the query geometry to match the actual sun's rendering shape. osg::OcclusionQueryNode wasn't originally intended to allow this,
// normally it would automatically adjust the query geometry to match the sub graph's bounding box. The below hack is needed to
// circumvent this.
- osg::Geometry* queryGeom = oqn->getQueryGeometry();
queryGeom->setVertexArray(mGeom->getVertexArray());
queryGeom->setTexCoordArray(0, mGeom->getTexCoordArray(0), osg::Array::BIND_PER_VERTEX);
queryGeom->removePrimitiveSet(0, oqn->getQueryGeometry()->getNumPrimitiveSets());
@@ -578,6 +584,10 @@ class Sun : public CelestialBody
// Still need a proper bounding sphere.
oqn->setInitialBound(queryGeom->getBound());

+#if OSG_VERSION_GREATER_OR_EQUAL(3, 6, 5)
+ oqn->setQueryGeometry(queryGeom.release());
+#endif
+
osg::StateSet* queryStateSet = new osg::StateSet;
if (queryVisible)
{
21 changes: 21 additions & 0 deletions games-engines/openmw/files/openmw-0.45.0-osg-3.6.5-2.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
From 7db58a893a1448b7229de5464696b3cc6eb7663c Mon Sep 17 00:00:00 2001
From: Alexander Olofsson <[email protected]>
Date: Thu, 13 Feb 2020 19:32:17 +0100
Subject: [PATCH] Ensure osg/Version is included

---
apps/openmw/mwrender/sky.cpp | 1 +
1 file changed, 1 insertion(+)

diff --git a/apps/openmw/mwrender/sky.cpp b/apps/openmw/mwrender/sky.cpp
index e13f5a7b65..7cf2af88d0 100644
--- a/apps/openmw/mwrender/sky.cpp
+++ b/apps/openmw/mwrender/sky.cpp
@@ -16,6 +16,7 @@
#include <osg/BlendFunc>
#include <osg/AlphaFunc>
#include <osg/PolygonOffset>
+#include <osg/Version>
#include <osg/observer_ptr>

#include <osgParticle/BoxPlacer>
2 changes: 2 additions & 0 deletions games-engines/openmw/openmw-0.45.0.ebuild
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ BDEPEND="
)
"

PATCHES=( "${FILESDIR}"/${P}-osg-3.6.5-{1,2}.patch ) # bug #709878

S="${WORKDIR}/${PN}-${P}"

src_prepare() {
Expand Down

0 comments on commit 5b8613a

Please sign in to comment.