summaryrefslogtreecommitdiff
path: root/games-engines/openmw/files
diff options
context:
space:
mode:
Diffstat (limited to 'games-engines/openmw/files')
-rw-r--r--games-engines/openmw/files/openmw-0.45.0-osg-3.6.5-1.patch51
-rw-r--r--games-engines/openmw/files/openmw-0.45.0-osg-3.6.5-2.patch21
2 files changed, 72 insertions, 0 deletions
diff --git a/games-engines/openmw/files/openmw-0.45.0-osg-3.6.5-1.patch b/games-engines/openmw/files/openmw-0.45.0-osg-3.6.5-1.patch
new file mode 100644
index 000000000000..b47fab28d122
--- /dev/null
+++ b/games-engines/openmw/files/openmw-0.45.0-osg-3.6.5-1.patch
@@ -0,0 +1,51 @@
+From 807f550386a1eac6f7306589a4e4a01e783e65df Mon Sep 17 00:00:00 2001
+From: Alexander Olofsson <ace@haxalot.com>
+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)
+ {
diff --git a/games-engines/openmw/files/openmw-0.45.0-osg-3.6.5-2.patch b/games-engines/openmw/files/openmw-0.45.0-osg-3.6.5-2.patch
new file mode 100644
index 000000000000..6b13291911ca
--- /dev/null
+++ b/games-engines/openmw/files/openmw-0.45.0-osg-3.6.5-2.patch
@@ -0,0 +1,21 @@
+From 7db58a893a1448b7229de5464696b3cc6eb7663c Mon Sep 17 00:00:00 2001
+From: Alexander Olofsson <ace@haxalot.com>
+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>