--- /dev/null
+diff -U 3 -dHrN freeorion-0.4.4-orig/PagedGeometry/include/BatchedGeometry.h freeorion-0.4.4/PagedGeometry/include/BatchedGeometry.h
+--- freeorion-0.4.4-orig/PagedGeometry/include/BatchedGeometry.h 2015-01-12 13:16:19.480177578 +0100
++++ freeorion-0.4.4/PagedGeometry/include/BatchedGeometry.h 2015-01-12 13:44:40.700200986 +0100
+@@ -88,7 +88,11 @@
+ void setMaterialName(const Ogre::String &mat, const Ogre::String &rg =\r
+ Ogre::ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME)\r
+ {\r
+- m_ptrMaterial = Ogre::MaterialManager::getSingleton().getByName(mat, rg);\r
++#if (OGRE_VERSION < ((1 << 16) | (9 << 8) | 0))\r
++ m_ptrMaterial = Ogre::MaterialManager::getSingleton().getByName(mat, rg);\r
++#else\r
++ m_ptrMaterial = Ogre::MaterialManager::getSingleton().getByName(mat, rg).staticCast<Ogre::Material>();\r
++#endif\r
+ }\r
+ \r
+ /// Get material name. Be careful, resource group name missing\r
+diff -U 3 -dHrN freeorion-0.4.4-orig/PagedGeometry/source/BatchedGeometry.cpp freeorion-0.4.4/PagedGeometry/source/BatchedGeometry.cpp
+--- freeorion-0.4.4-orig/PagedGeometry/source/BatchedGeometry.cpp 2015-01-12 13:16:19.470177578 +0100
++++ freeorion-0.4.4/PagedGeometry/source/BatchedGeometry.cpp 2015-01-12 13:29:10.890188192 +0100
+@@ -479,7 +479,11 @@
+ // that the user may be using somewhere else).\r
+ {\r
+ Ogre::String newName = parentMaterial->getName() + "_Batched";\r
+- m_ptrMaterial = MaterialManager::getSingleton().getByName(newName, parentMaterial->getGroup());\r
++ #if (OGRE_VERSION < ((1 << 16) | (9 << 8) | 0))\r
++ m_ptrMaterial = MaterialManager::getSingleton().getByName(newName, parentMaterial->getGroup());\r
++ #else\r
++ m_ptrMaterial = MaterialManager::getSingleton().getByName(newName, parentMaterial->getGroup()).staticCast<Material>();\r
++ #endif\r
+ if (m_ptrMaterial.isNull())\r
+ m_ptrMaterial = parentMaterial->clone(newName);\r
+ }\r
+diff -U 3 -dHrN freeorion-0.4.4-orig/PagedGeometry/source/BatchPage.cpp freeorion-0.4.4/PagedGeometry/source/BatchPage.cpp
+--- freeorion-0.4.4-orig/PagedGeometry/source/BatchPage.cpp 2015-01-12 13:16:19.470177578 +0100
++++ freeorion-0.4.4/PagedGeometry/source/BatchPage.cpp 2015-01-12 13:27:56.810187173 +0100
+@@ -472,7 +472,11 @@
+ }\r
+ \r
+ //Search for the desired material\r
+- MaterialPtr generatedMaterial = MaterialManager::getSingleton().getByName(materialSignature.str());\r
++ #if (OGRE_VERSION < ((1 << 16) | (9 << 8) | 0))\r
++ MaterialPtr generatedMaterial = MaterialManager::getSingleton().getByName(materialSignature.str());\r
++ #else\r
++ MaterialPtr generatedMaterial = MaterialManager::getSingleton().getByName(materialSignature.str()).staticCast<Ogre::Material>();\r
++ #endif\r
+ if (generatedMaterial.isNull())\r
+ {\r
+ //Clone the material\r
+diff -U 3 -dHrN freeorion-0.4.4-orig/PagedGeometry/source/GrassLoader.cpp freeorion-0.4.4/PagedGeometry/source/GrassLoader.cpp
+--- freeorion-0.4.4-orig/PagedGeometry/source/GrassLoader.cpp 2015-01-12 13:16:19.470177578 +0100
++++ freeorion-0.4.4/PagedGeometry/source/GrassLoader.cpp 2015-01-12 13:31:39.330190235 +0100
+@@ -765,7 +765,11 @@
+ void GrassLayer::setMaterialName(const String &matName)\r
+ {\r
+ if (material.isNull() || matName != material->getName()){\r
+- material = MaterialManager::getSingleton().getByName(matName);\r
++ #if (OGRE_VERSION < ((1 << 16) | (9 << 8) | 0))\r
++ material = MaterialManager::getSingleton().getByName(matName);\r
++ #else\r
++ material = MaterialManager::getSingleton().getByName(matName).staticCast<Material>();\r
++ #endif\r
+ if (material.isNull())\r
+ OGRE_EXCEPT(Exception::ERR_INVALIDPARAMS, "The specified grass material does not exist", "GrassLayer::setMaterialName()");\r
+ shaderNeedsUpdate = true;\r
+@@ -1128,7 +1132,11 @@
+ const String matName = material->getName() + "_" + vsName;\r
+ \r
+ //Check if the desired material already exists (if not, create it)\r
+- MaterialPtr tmpMat = MaterialManager::getSingleton().getByName(matName);\r
++ #if (OGRE_VERSION < ((1 << 16) | (9 << 8) | 0))\r
++ MaterialPtr tmpMat = MaterialManager::getSingleton().getByName(matName);\r
++ #else\r
++ MaterialPtr tmpMat = MaterialManager::getSingleton().getByName(matName).staticCast<Material>();\r
++ #endif\r
+ if (tmpMat.isNull())\r
+ {\r
+ //Clone the original material\r
+@@ -1140,7 +1148,11 @@
+ \r
+ //Check if the desired shader already exists (if not, compile it)\r
+ String shaderLanguage;\r
+- HighLevelGpuProgramPtr vertexShader = HighLevelGpuProgramManager::getSingleton().getByName(vsName);\r
++ #if (OGRE_VERSION < ((1 << 16) | (9 << 8) | 0))\r
++ HighLevelGpuProgramPtr vertexShader = HighLevelGpuProgramManager::getSingleton().getByName(vsName);\r
++ #else\r
++ HighLevelGpuProgramPtr vertexShader = HighLevelGpuProgramManager::getSingleton().getByName(vsName).staticCast<HighLevelGpuProgram>();\r
++ #endif\r
+ if (vertexShader.isNull())\r
+ {\r
+ if (Root::getSingleton().getRenderSystem()->getName() == "Direct3D9 Rendering Subsystem")\r
+diff -U 3 -dHrN freeorion-0.4.4-orig/PagedGeometry/source/ImpostorPage.cpp freeorion-0.4.4/PagedGeometry/source/ImpostorPage.cpp
+--- freeorion-0.4.4-orig/PagedGeometry/source/ImpostorPage.cpp 2015-01-12 13:16:19.470177578 +0100
++++ freeorion-0.4.4/PagedGeometry/source/ImpostorPage.cpp 2015-01-12 13:32:29.390190924 +0100
+@@ -402,7 +402,11 @@
+ //Set up materials\r
+ for (int o = 0; o < IMPOSTOR_YAW_ANGLES; ++o){\r
+ for (int i = 0; i < IMPOSTOR_PITCH_ANGLES; ++i){\r
+- material[i][o] = MaterialManager::getSingleton().create(getUniqueID("ImpostorMaterial"), "Impostors");\r
++ #if (OGRE_VERSION < ((1 << 16) | (9 << 8) | 0))\r
++ material[i][o] = MaterialManager::getSingleton().create(getUniqueID("ImpostorMaterial"), "Impostors");\r
++ #else\r
++ material[i][o] = MaterialManager::getSingleton().create(getUniqueID("ImpostorMaterial"), "Impostors").staticCast<Material>();\r
++ #endif\r
+ \r
+ Material *m = material[i][o].getPointer();\r
+ Pass *p = m->getTechnique(0)->getPass(0);\r
+diff -U 3 -dHrN freeorion-0.4.4-orig/PagedGeometry/source/StaticBillboardSet.cpp freeorion-0.4.4/PagedGeometry/source/StaticBillboardSet.cpp
+--- freeorion-0.4.4-orig/PagedGeometry/source/StaticBillboardSet.cpp 2015-01-12 13:16:19.470177578 +0100
++++ freeorion-0.4.4/PagedGeometry/source/StaticBillboardSet.cpp 2015-01-12 13:34:51.270192876 +0100
+@@ -149,7 +149,11 @@
+ "}";\r
+ }\r
+ \r
+- HighLevelGpuProgramPtr vertexShader = HighLevelGpuProgramManager::getSingleton().getByName("Sprite_vp");\r
++ #if (OGRE_VERSION < ((1 << 16) | (9 << 8) | 0))\r
++ HighLevelGpuProgramPtr vertexShader = HighLevelGpuProgramManager::getSingleton().getByName("Sprite_vp");\r
++ #else\r
++ HighLevelGpuProgramPtr vertexShader = HighLevelGpuProgramManager::getSingleton().getByName("Sprite_vp").staticCast<HighLevelGpuProgram>();\r
++ #endif\r
+ assert(vertexShader.isNull() && "Sprite_vp already exist");\r
+ \r
+ vertexShader = HighLevelGpuProgramManager::getSingleton().createProgram(\r
+@@ -257,7 +261,11 @@
+ "}";\r
+ }\r
+ \r
+- HighLevelGpuProgramPtr vertexShader2 = HighLevelGpuProgramManager::getSingleton().getByName("SpriteFade_vp");\r
++ #if (OGRE_VERSION < ((1 << 16) | (9 << 8) | 0))\r
++ HighLevelGpuProgramPtr vertexShader2 = HighLevelGpuProgramManager::getSingleton().getByName("Sprite_vp");\r
++ #else\r
++ HighLevelGpuProgramPtr vertexShader2 = HighLevelGpuProgramManager::getSingleton().getByName("Sprite_vp").staticCast<HighLevelGpuProgram>();\r
++ #endif\r
+ assert(vertexShader2.isNull() && "SpriteFade_vp already exist");\r
+ vertexShader2 = HighLevelGpuProgramManager::getSingleton().createProgram("SpriteFade_vp",\r
+ ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, shaderLanguage, GPT_VERTEX_PROGRAM);\r
+@@ -574,7 +582,11 @@
+ else if (!mPtrMaterial.isNull())\r
+ SBMaterialRef::removeMaterialRef(mPtrMaterial);\r
+ \r
+- mPtrMaterial = MaterialManager::getSingleton().getByName(materialName, resourceGroup);\r
++ #if (OGRE_VERSION < ((1 << 16) | (9 << 8) | 0))\r
++ mPtrMaterial = MaterialManager::getSingleton().getByName(materialName, resourceGroup);\r
++ #else\r
++ mPtrMaterial = MaterialManager::getSingleton().getByName(materialName, resourceGroup).staticCast<Material>();\r
++ #endif\r
+ \r
+ if (mFadeEnabled)\r
+ {\r
+@@ -590,7 +602,11 @@
+ }\r
+ else // old GPU compatibility\r
+ {\r
+- mPtrMaterial = MaterialManager::getSingleton().getByName(materialName, resourceGroup);\r
++ #if (OGRE_VERSION < ((1 << 16) | (9 << 8) | 0))\r
++ mPtrMaterial = MaterialManager::getSingleton().getByName(materialName, resourceGroup);\r
++ #else\r
++ mPtrMaterial = MaterialManager::getSingleton().getByName(materialName, resourceGroup).staticCast<Material>();\r
++ #endif\r
+ mpFallbackBillboardSet->setMaterialName(mPtrMaterial->getName(), mPtrMaterial->getGroup());\r
+ // SVA. Since Ogre 1.7.3 Ogre::BillboardSet have setMaterial(const MaterialPtr&) method\r
+ }\r
+diff -U 3 -dHrN freeorion-0.4.4-orig/PagedGeometry/source/WindBatchPage.cpp freeorion-0.4.4/PagedGeometry/source/WindBatchPage.cpp
+--- freeorion-0.4.4-orig/PagedGeometry/source/WindBatchPage.cpp 2015-01-12 13:16:19.470177578 +0100
++++ freeorion-0.4.4/PagedGeometry/source/WindBatchPage.cpp 2015-01-12 13:35:22.100193300 +0100
+@@ -467,7 +467,11 @@
+ }\r
+ \r
+ //Search for the desired material\r
+- MaterialPtr generatedMaterial = MaterialManager::getSingleton().getByName(materialSignature.str());\r
++ #if (OGRE_VERSION < ((1 << 16) | (9 << 8) | 0))\r
++ MaterialPtr generatedMaterial = MaterialManager::getSingleton().getByName(materialSignature.str());\r
++ #else\r
++ MaterialPtr generatedMaterial = MaterialManager::getSingleton().getByName(materialSignature.str()).staticCast<Material>();\r
++ #endif\r
+ if (generatedMaterial.isNull())\r
+ {\r
+ //Clone the material\r
+diff -U 3 -dHrN freeorion-0.4.4-orig/UI/CombatSetupWnd.cpp freeorion-0.4.4/UI/CombatSetupWnd.cpp
+--- freeorion-0.4.4-orig/UI/CombatSetupWnd.cpp 2015-01-12 13:16:18.650177567 +0100
++++ freeorion-0.4.4/UI/CombatSetupWnd.cpp 2015-01-12 13:17:12.200178304 +0100
+@@ -126,7 +126,11 @@
+ // HACK! This currently assumes all rings are starlane exclusion
+ // zones, so we only create one mesh for all RING's and reuse it;
+ // this may need to be generalized later.
+- Ogre::MeshPtr ring_mesh = Ogre::MeshManager::getSingleton().getByName(RING_MESH_NAME);
++ #if (OGRE_VERSION < ((1 << 16) | (9 << 8) | 0))
++ Ogre::MeshPtr ring_mesh = Ogre::MeshManager::getSingleton().getByName(RING_MESH_NAME);
++ #else
++ Ogre::MeshPtr ring_mesh = Ogre::MeshManager::getSingleton().getByName(RING_MESH_NAME).staticCast<Ogre::Mesh>();
++ #endif
+ if (ring_mesh.isNull()) {
+ Ogre::ManualObject manual_object("");
+ manual_object.estimateVertexCount(unit_circle_vertices.size() * 2 + 2);
+@@ -152,7 +156,11 @@
+ }
+
+ case CombatSetupRegion::ELLIPSE: {
+- Ogre::MeshPtr unit_circle_mesh = Ogre::MeshManager::getSingleton().getByName(UNIT_CIRCLE_MESH_NAME);
++ #if (OGRE_VERSION < ((1 << 16) | (9 << 8) | 0))
++ Ogre::MeshPtr unit_circle_mesh = Ogre::MeshManager::getSingleton().getByName(UNIT_CIRCLE_MESH_NAME);
++ #else
++ Ogre::MeshPtr unit_circle_mesh = Ogre::MeshManager::getSingleton().getByName(UNIT_CIRCLE_MESH_NAME).staticCast<Ogre::Mesh>();
++ #endif
+ if (unit_circle_mesh.isNull()) {
+ Ogre::ManualObject manual_object("");
+ manual_object.estimateVertexCount(unit_circle_vertices.size() + 2);
+@@ -478,8 +486,13 @@
+ std::string base_material_name = ShipMaterialName(*ship->Design(), ship->Owner());
+ std::string material_name = UNPLACEABLE_MATERIAL_PREFIX + base_material_name;
+ if (!Ogre::MaterialManager::getSingleton().resourceExists(material_name)) {
+- Ogre::MaterialPtr unmodified_material =
+- Ogre::MaterialManager::getSingleton().getByName(base_material_name);
++ #if (OGRE_VERSION < ((1 << 16) | (9 << 8) | 0))
++ Ogre::MaterialPtr unmodified_material =
++ Ogre::MaterialManager::getSingleton().getByName(base_material_name);
++ #else
++ Ogre::MaterialPtr unmodified_material =
++ Ogre::MaterialManager::getSingleton().getByName(base_material_name).staticCast<Ogre::Material>();
++ #endif
+ Ogre::MaterialPtr material = unmodified_material->clone(material_name);
+ Ogre::Pass* pass = material->getTechnique(0)->getPass(1);
+ assert(pass->hasFragmentProgram());
+diff -U 3 -dHrN freeorion-0.4.4-orig/UI/CombatWnd.cpp freeorion-0.4.4/UI/CombatWnd.cpp
+--- freeorion-0.4.4-orig/UI/CombatWnd.cpp 2015-01-12 13:16:18.650177567 +0100
++++ freeorion-0.4.4/UI/CombatWnd.cpp 2015-01-12 13:43:29.950200012 +0100
+@@ -329,8 +329,13 @@
+ Ogre::Entity* entity =
+ scene_manager->createEntity("asteroid mesh " + base_name,
+ base_name + ".mesh");
+- Ogre::MaterialPtr material =
+- Ogre::MaterialManager::getSingleton().getByName("asteroid");
++ #if (OGRE_VERSION < ((1 << 16) | (9 << 8) | 0))
++ Ogre::MaterialPtr material =
++ Ogre::MaterialManager::getSingleton().getByName("asteroid");
++ #else
++ Ogre::MaterialPtr material =
++ Ogre::MaterialManager::getSingleton().getByName("asteroid").staticCast<Ogre::Material>();
++ #endif
+ std::string new_material_name = "asteroid material " + base_name;
+ material = material->clone(new_material_name);
+ material->getTechnique(0)->getPass(0)->getTextureUnitState(0)->
+@@ -905,16 +910,26 @@
+
+ // pick and assign star textures
+ {
+- Ogre::MaterialPtr back_material =
+- Ogre::MaterialManager::getSingleton().getByName("backgrounds/star_back");
++ #if (OGRE_VERSION < ((1 << 16) | (9 << 8) | 0))
++ Ogre::MaterialPtr back_material =
++ Ogre::MaterialManager::getSingleton().getByName("backgrounds/star_back");
++ #else
++ Ogre::MaterialPtr back_material =
++ Ogre::MaterialManager::getSingleton().getByName("backgrounds/star_back").staticCast<Ogre::Material>();
++ #endif
+ Ogre::Technique* technique = back_material->getTechnique(0);
+ technique->getPass(0)->getTextureUnitState(0)->setTextureName(base_name + "back.png");
+ technique->getPass(1)->getTextureUnitState(0)->setTextureName(base_name + "rainbow.png");
+ technique->getPass(2)->getTextureUnitState(0)->setTextureName(base_name + "rays.png");
+ technique->getPass(3)->getTextureUnitState(0)->setTextureName(base_name + "horizontal_flare.png");
+ technique->getPass(4)->getTextureUnitState(0)->setTextureName(base_name + "horizontal_flare.png");
+- Ogre::MaterialPtr core_material =
+- Ogre::MaterialManager::getSingleton().getByName("backgrounds/star_core");
++ #if (OGRE_VERSION < ((1 << 16) | (9 << 8) | 0))
++ Ogre::MaterialPtr core_material =
++ Ogre::MaterialManager::getSingleton().getByName("backgrounds/star_core");
++ #else
++ Ogre::MaterialPtr core_material =
++ Ogre::MaterialManager::getSingleton().getByName("backgrounds/star_core").staticCast<Ogre::Material>();
++ #endif
+ technique = core_material->getTechnique(0);
+ technique->getPass(0)->getTextureUnitState(0)->setTextureName(base_name + "core.png");
+
+@@ -1005,8 +1020,13 @@
+ entity->setQueryFlags(UNSELECTABLE_OBJECT_MASK);
+ std::string new_material_name =
+ material_name + "_" + boost::lexical_cast<std::string>(orbit);
+- Ogre::MaterialPtr material =
+- Ogre::MaterialManager::getSingleton().getByName(material_name);
++ #if (OGRE_VERSION < ((1 << 16) | (9 << 8) | 0))
++ Ogre::MaterialPtr material =
++ Ogre::MaterialManager::getSingleton().getByName(material_name);
++ #else
++ Ogre::MaterialPtr material =
++ Ogre::MaterialManager::getSingleton().getByName(material_name).staticCast<Ogre::Material>();
++ #endif
+ material = material->clone(new_material_name);
+ m_planet_assets[orbit].second.push_back(material);
+ material->getTechnique(0)->getPass(0)->getTextureUnitState(0)->
+@@ -1019,11 +1039,19 @@
+ entity->setVisibilityFlags(REGULAR_OBJECTS_MASK);
+ std::string new_material_name =
+ material_name + "_" + boost::lexical_cast<std::string>(orbit);
+- Ogre::MaterialPtr material =
+- Ogre::MaterialManager::getSingleton().getByName(
+- material_name == "planet" ?
+- PlanetMaterialName(base_name) :
+- material_name);
++ #if (OGRE_VERSION < ((1 << 16) | (9 << 8) | 0))
++ Ogre::MaterialPtr material =
++ Ogre::MaterialManager::getSingleton().getByName(
++ material_name == "planet" ?
++ PlanetMaterialName(base_name) :
++ material_name);
++ #else
++ Ogre::MaterialPtr material =
++ Ogre::MaterialManager::getSingleton().getByName(
++ material_name == "planet" ?
++ PlanetMaterialName(base_name) :
++ material_name).staticCast<Ogre::Material>();
++ #endif
+ material = material->clone(new_material_name);
+ m_planet_assets[orbit].second.push_back(material);
+ assert(entity->getNumSubEntities() == 1u);
+@@ -1046,9 +1074,15 @@
+ entity->setRenderQueueGroup(ALPHA_OBJECTS_QUEUE);
+ entity->setVisibilityFlags(REGULAR_OBJECTS_MASK);
+ entity->setQueryFlags(UNSELECTABLE_OBJECT_MASK);
+- Ogre::MaterialPtr material =
+- Ogre::MaterialManager::getSingleton().getByName(
+- AtmosphereMaterialName(base_name));
++ #if (OGRE_VERSION < ((1 << 16) | (9 << 8) | 0))
++ Ogre::MaterialPtr material =
++ Ogre::MaterialManager::getSingleton().getByName(
++ AtmosphereMaterialName(base_name));
++ #else
++ Ogre::MaterialPtr material =
++ Ogre::MaterialManager::getSingleton().getByName(
++ AtmosphereMaterialName(base_name)).staticCast<Ogre::Material>();
++ #endif
+ entity->setMaterialName(material->getName());
+ m_planet_assets[orbit].second.push_back(material);
+ node->attachObject(entity);
+@@ -1568,7 +1602,11 @@
+
+ const bool ENABLE_GLOW = GetOptionsDB().Get<bool>("combat.enable-glow");
+ Ogre::CompositorManager::getSingleton().setCompositorEnabled(m_viewport, "effects/glow", ENABLE_GLOW);
+- Ogre::MaterialPtr material = Ogre::MaterialManager::getSingleton().getByName("backgrounds/star_back");
++ #if (OGRE_VERSION < ((1 << 16) | (9 << 8) | 0))
++ Ogre::MaterialPtr material = Ogre::MaterialManager::getSingleton().getByName("backgrounds/star_back");
++ #else
++ Ogre::MaterialPtr material = Ogre::MaterialManager::getSingleton().getByName("backgrounds/star_back").staticCast<Ogre::Material>();
++ #endif
+ material->getTechnique(0)->getPass(3)->setDepthCheckEnabled(!ENABLE_GLOW);
+ material->getTechnique(0)->getPass(4)->setDepthCheckEnabled(!ENABLE_GLOW);
+
+@@ -1618,8 +1656,13 @@
+
+ const int SAMPLES_PER_SIDE = 2;
+ const int TOTAL_SAMPLES = 5;
+- Ogre::MaterialPtr core_material =
+- Ogre::MaterialManager::getSingleton().getByName("backgrounds/star_core");
++ #if (OGRE_VERSION < ((1 << 16) | (9 << 8) | 0))
++ Ogre::MaterialPtr core_material =
++ Ogre::MaterialManager::getSingleton().getByName("backgrounds/star_core");
++ #else
++ Ogre::MaterialPtr core_material =
++ Ogre::MaterialManager::getSingleton().getByName("backgrounds/star_core").staticCast<Ogre::Material>();
++ #endif
+ const Ogre::Real STAR_CORE_SCALE_FACTOR =
+ core_material->getTechnique(0)->getPass(0)->getTextureUnitState(0)->getTextureUScale();
+ const Ogre::Real SAMPLE_INCREMENT =
+@@ -1743,8 +1786,13 @@
+ m_star_back_billboard->setColour(
+ Ogre::ColourValue(1.0, 1.0, 1.0, m_star_brightness_factor));
+
+- Ogre::MaterialPtr back_material =
+- Ogre::MaterialManager::getSingleton().getByName("backgrounds/star_back");
++ #if (OGRE_VERSION < ((1 << 16) | (9 << 8) | 0))
++ Ogre::MaterialPtr back_material =
++ Ogre::MaterialManager::getSingleton().getByName("backgrounds/star_back");
++ #else
++ Ogre::MaterialPtr back_material =
++ Ogre::MaterialManager::getSingleton().getByName("backgrounds/star_back").staticCast<Ogre::Material>();
++ #endif
+ back_material->getTechnique(0)->getPass(3)->getTextureUnitState(0)->setTextureUScroll(
+ m_initial_left_horizontal_flare_scroll + m_left_horizontal_flare_scroll_offset);
+ back_material->getTechnique(0)->getPass(4)->getTextureUnitState(0)->setTextureUScroll(
+@@ -1834,8 +1882,13 @@
+ assert(ship->Design());
+ const ShipDesign& ship_design = *ship->Design();
+
+- Ogre::MaterialPtr ship_material =
+- Ogre::MaterialManager::getSingleton().getByName("ship");
++ #if (OGRE_VERSION < ((1 << 16) | (9 << 8) | 0))
++ Ogre::MaterialPtr ship_material =
++ Ogre::MaterialManager::getSingleton().getByName("ship");
++ #else
++ Ogre::MaterialPtr ship_material =
++ Ogre::MaterialManager::getSingleton().getByName("ship").staticCast<Ogre::Material>();
++ #endif
+ std::string modified_material_name = ShipMaterialName(ship_design, ship->Owner());
+ Ogre::MaterialPtr& modified_material = m_ship_materials[modified_material_name];
+ if (!modified_material.get()) {
+diff -U 3 -dHrN freeorion-0.4.4-orig/UI/EntityRenderer.cpp freeorion-0.4.4/UI/EntityRenderer.cpp
+--- freeorion-0.4.4-orig/UI/EntityRenderer.cpp 2015-01-12 13:16:18.670177567 +0100
++++ freeorion-0.4.4/UI/EntityRenderer.cpp 2015-01-12 13:17:12.200178304 +0100
+@@ -123,9 +123,15 @@
+ renderTextures();
+
+ //Set up material
+- material =
+- Ogre::MaterialManager::getSingleton().create(
+- getUniqueID("RenderedEntityMaterial"), "EntityRenderer");
++ #if (OGRE_VERSION < ((1 << 16) | (9 << 8) | 0))
++ material =
++ Ogre::MaterialManager::getSingleton().create(
++ getUniqueID("RenderedEntityMaterial"), "EntityRenderer");
++ #else
++ material =
++ Ogre::MaterialManager::getSingleton().create(
++ getUniqueID("RenderedEntityMaterial"), "EntityRenderer").staticCast<Ogre::Material>();
++ #endif
+
+ Ogre::Material* m = material.getPointer();
+ Ogre::Pass* p = m->getTechnique(0)->getPass(0);