From 96c37d3e7cea65d64dd7273eb9d375d3f789f33c Mon Sep 17 00:00:00 2001 From: scrawl Date: Sat, 7 Apr 2012 16:55:32 +0200 Subject: [PATCH] more accurate fog, TODO: apply this to the terrain --- apps/openmw/mwworld/weather.cpp | 5 ++++- components/nifogre/ogre_nif_loader.cpp | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwworld/weather.cpp b/apps/openmw/mwworld/weather.cpp index d92a36c83..fb0480171 100644 --- a/apps/openmw/mwworld/weather.cpp +++ b/apps/openmw/mwworld/weather.cpp @@ -334,8 +334,11 @@ WeatherManager::WeatherManager(MWRender::RenderingManager* rendering, MWWorld::E void WeatherManager::setWeather(const String& weather, bool instant) { - if (weather == mCurrentWeather && mNextWeather == "") + if (weather == mCurrentWeather && mNextWeather == "") + { + mFirstUpdate = false; return; + } if (instant || mFirstUpdate) { diff --git a/components/nifogre/ogre_nif_loader.cpp b/components/nifogre/ogre_nif_loader.cpp index d2b53291e..886c4b451 100644 --- a/components/nifogre/ogre_nif_loader.cpp +++ b/components/nifogre/ogre_nif_loader.cpp @@ -328,6 +328,7 @@ void NIFLoader::createMaterial(const String &name, " out float4 oNormal : TEXCOORD2, \n" " out float oDepth : TEXCOORD3, \n" " out float4 oVertexColour : TEXCOORD4, \n" + " uniform float4 cameraPosObjSpace, \n" " uniform float4x4 worldViewProj \n" ") \n" "{ \n" @@ -335,12 +336,13 @@ void NIFLoader::createMaterial(const String &name, " oUV = uv; \n" " oNormal = normal; \n" " oPosition = mul( worldViewProj, position ); \n" - " oDepth = oPosition.z; \n" + " oDepth = length(position.xyz - cameraPosObjSpace.xyz); \n" " oPositionObjSpace = position; \n" "}"; vertex->setSource(outStream.str()); vertex->load(); vertex->getDefaultParameters()->setNamedAutoConstant("worldViewProj", GpuProgramParameters::ACT_WORLDVIEWPROJ_MATRIX); + vertex->getDefaultParameters()->setNamedAutoConstant("cameraPosObjSpace", GpuProgramParameters::ACT_CAMERA_POSITION_OBJECT_SPACE); } else vertex = mgr.getByName("main_vp");