From b2de9e8f45e54d217dfb9cb8a3c26a0048f4eb99 Mon Sep 17 00:00:00 2001 From: scrawl Date: Tue, 21 Feb 2012 22:11:41 +0100 Subject: [PATCH] allow setting the clouds opacity --- apps/openmw/mwrender/sky.cpp | 9 ++++++++- apps/openmw/mwrender/sky.hpp | 3 +++ apps/openmw/mwworld/world.cpp | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwrender/sky.cpp b/apps/openmw/mwrender/sky.cpp index d16044fbb2..f1d310088f 100644 --- a/apps/openmw/mwrender/sky.cpp +++ b/apps/openmw/mwrender/sky.cpp @@ -368,17 +368,19 @@ SkyManager::SkyManager (SceneNode* pMwRoot, Camera* pCamera) " in float4 color : TEXCOORD1, \n" " uniform sampler2D texture : TEXUNIT0, \n" " uniform float time, \n" + " uniform float opacity, \n" " uniform float4 emissive \n" ") \n" "{ \n" " uv += float2(1,1) * time * "<setSource(outStream2.str()); mCloudFragmentShader->load(); mCloudFragmentShader->getDefaultParameters()->setNamedAutoConstant("emissive", GpuProgramParameters::ACT_SURFACE_EMISSIVE_COLOUR); mCloudMaterial->getTechnique(0)->getPass(0)->setFragmentProgram(mCloudFragmentShader->getName()); + setCloudsOpacity(0.75); ModVertexAlpha(clouds_ent, 1); @@ -438,3 +440,8 @@ void SkyManager::setMoonColour (bool red) mSecunda->setColour( red ? ColourValue(1.0, 0.0, 0.0) : ColourValue(1.0, 1.0, 1.0)); } + +void SkyManager::setCloudsOpacity(float opacity) +{ + mCloudMaterial->getTechnique(0)->getPass(0)->getFragmentProgramParameters()->setNamedConstant("opacity", Real(opacity)); +} diff --git a/apps/openmw/mwrender/sky.hpp b/apps/openmw/mwrender/sky.hpp index de4d252a89..f4f44570dc 100644 --- a/apps/openmw/mwrender/sky.hpp +++ b/apps/openmw/mwrender/sky.hpp @@ -120,6 +120,9 @@ namespace MWRender void setMoonColour (bool red); ///< change Secunda colour to red + void setCloudsOpacity(float opacity); + ///< change opacity of the clouds + private: CelestialBody* mSun; Moon* mMasser; diff --git a/apps/openmw/mwworld/world.cpp b/apps/openmw/mwworld/world.cpp index 9725b03242..b4f16898ee 100644 --- a/apps/openmw/mwworld/world.cpp +++ b/apps/openmw/mwworld/world.cpp @@ -157,7 +157,7 @@ namespace MWWorld mRendering = new MWRender::RenderingManager(renderer, resDir, mPhysEngine, environment); - mWeatherManager = new MWWorld::WeatherManager(); + mWeatherManager = new MWWorld::WeatherManager(mRendering); boost::filesystem::path masterPath (fileCollections.getCollection (".esm").getPath (master));