1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-02-05 13:45:35 +00:00

more accurate fog, TODO: apply this to the terrain

This commit is contained in:
scrawl 2012-04-07 16:55:32 +02:00
parent dbf7547003
commit 96c37d3e7c
2 changed files with 7 additions and 2 deletions

View file

@ -334,8 +334,11 @@ WeatherManager::WeatherManager(MWRender::RenderingManager* rendering, MWWorld::E
void WeatherManager::setWeather(const String& weather, bool instant) void WeatherManager::setWeather(const String& weather, bool instant)
{ {
if (weather == mCurrentWeather && mNextWeather == "") if (weather == mCurrentWeather && mNextWeather == "")
{
mFirstUpdate = false;
return; return;
}
if (instant || mFirstUpdate) if (instant || mFirstUpdate)
{ {

View file

@ -328,6 +328,7 @@ void NIFLoader::createMaterial(const String &name,
" out float4 oNormal : TEXCOORD2, \n" " out float4 oNormal : TEXCOORD2, \n"
" out float oDepth : TEXCOORD3, \n" " out float oDepth : TEXCOORD3, \n"
" out float4 oVertexColour : TEXCOORD4, \n" " out float4 oVertexColour : TEXCOORD4, \n"
" uniform float4 cameraPosObjSpace, \n"
" uniform float4x4 worldViewProj \n" " uniform float4x4 worldViewProj \n"
") \n" ") \n"
"{ \n" "{ \n"
@ -335,12 +336,13 @@ void NIFLoader::createMaterial(const String &name,
" oUV = uv; \n" " oUV = uv; \n"
" oNormal = normal; \n" " oNormal = normal; \n"
" oPosition = mul( worldViewProj, position ); \n" " oPosition = mul( worldViewProj, position ); \n"
" oDepth = oPosition.z; \n" " oDepth = length(position.xyz - cameraPosObjSpace.xyz); \n"
" oPositionObjSpace = position; \n" " oPositionObjSpace = position; \n"
"}"; "}";
vertex->setSource(outStream.str()); vertex->setSource(outStream.str());
vertex->load(); vertex->load();
vertex->getDefaultParameters()->setNamedAutoConstant("worldViewProj", GpuProgramParameters::ACT_WORLDVIEWPROJ_MATRIX); vertex->getDefaultParameters()->setNamedAutoConstant("worldViewProj", GpuProgramParameters::ACT_WORLDVIEWPROJ_MATRIX);
vertex->getDefaultParameters()->setNamedAutoConstant("cameraPosObjSpace", GpuProgramParameters::ACT_CAMERA_POSITION_OBJECT_SPACE);
} }
else else
vertex = mgr.getByName("main_vp"); vertex = mgr.getByName("main_vp");