summaryrefslogtreecommitdiff
path: root/indra/newview/lldrawpoolwater.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/lldrawpoolwater.cpp')
-rw-r--r--indra/newview/lldrawpoolwater.cpp73
1 files changed, 31 insertions, 42 deletions
diff --git a/indra/newview/lldrawpoolwater.cpp b/indra/newview/lldrawpoolwater.cpp
index 567172e647..9cd59c61ec 100644
--- a/indra/newview/lldrawpoolwater.cpp
+++ b/indra/newview/lldrawpoolwater.cpp
@@ -488,49 +488,38 @@ void LLDrawPoolWater::shade()
LLVector3 light_dir;
LLColor3 light_color;
- LLSettingsSky::ptr_t psky = LLEnvironment::instance().getCurrentSky();
- LLSettingsWater::ptr_t pwater = LLEnvironment::instance().getCurrentWater();
+ LLEnvironment& environment = LLEnvironment::instance();
+ LLSettingsWater::ptr_t pwater = environment.getCurrentWater();
+ LLSettingsSky::ptr_t psky = environment.getCurrentSky();
- light_dir = psky->getLightDirection();
- if (LLEnvironment::instance().getIsDayTime())
+ light_dir = environment.getLightDirection();
+ light_dir.normalize();
+
+ bool sun_up = environment.getIsSunUp();
+ bool moon_up = environment.getIsMoonUp();
+
+ if (sun_up)
{
- light_color = psky->getSunAmbient();
- light_diffuse = psky->getSunDiffuse();
- light_diffuse.normalize();
- light_exp = light_dir * LLVector3(light_dir.mV[0], light_dir.mV[1], 0.f);
- light_diffuse *= (light_exp + 0.25f);
+ light_color = light_color + psky->getSunAmbient();
+ light_diffuse += psky->getSunDiffuse();
}
- else
+
+ light_exp = light_dir * LLVector3(light_dir.mV[0], light_dir.mV[1], 0.f);
+
+ if (moon_up)
{
- light_color = psky->getMoonAmbient();
- light_diffuse = psky->getMoonDiffuse();
- light_diffuse.normalize();
- light_diffuse *= 0.5f;
- light_exp = light_dir * LLVector3(light_dir.mV[0], light_dir.mV[1], 0.f);
+ LLColor3 moon_diffuse_color = psky->getMoonDiffuse();
+ light_color += moon_diffuse_color;
+ light_diffuse += moon_diffuse_color * 0.5f;
+
+ if (!sun_up)
+ {
+ light_exp = light_dir * LLVector3(light_dir.mV[0], light_dir.mV[1], 0.f);
+ }
}
-// if (gSky.getSunDirection().mV[2] > LLSky::NIGHTTIME_ELEVATION_COS)
-// {
-// light_dir = gSky.getSunDirection();
-// light_dir.normVec();
-// light_color = gSky.getSunDiffuseColor();
-// if(gSky.mVOSkyp) {
-// light_diffuse = gSky.mVOSkyp->getSun().getColorCached();
-// light_diffuse.normVec();
-// }
-// light_exp = light_dir * LLVector3(light_dir.mV[0], light_dir.mV[1], 0);
-// light_diffuse *= light_exp + 0.25f;
-// }
-// else
-// {
-// light_dir = gSky.getMoonDirection();
-// light_dir.normVec();
-// light_color = gSky.getMoonDiffuseColor();
-// light_diffuse = gSky.mVOSkyp->getMoon().getColorCached();
-// light_diffuse.normVec();
-// light_diffuse *= 0.5f;
-// light_exp = light_dir * LLVector3(light_dir.mV[0], light_dir.mV[1], 0);
-// }
+ light_diffuse.normalize();
+ light_diffuse *= (light_exp + 0.25f);
light_exp *= light_exp;
light_exp *= light_exp;
@@ -609,8 +598,8 @@ void LLDrawPoolWater::shade()
if (screentex > -1)
{
- shader->uniform3fv(LLShaderMgr::WATER_FOGCOLOR, 1, pwater->getFogColor().mV);
- shader->uniform1f(LLShaderMgr::WATER_FOGDENSITY, pwater->getFogDensity());
+ shader->uniform3fv(LLShaderMgr::WATER_FOGCOLOR, 1, pwater->getWaterFogColor().mV);
+ shader->uniform1f(LLShaderMgr::WATER_FOGDENSITY, pwater->getWaterFogDensity());
gPipeline.mWaterDis.bindTexture(0, screentex);
}
@@ -620,8 +609,8 @@ void LLDrawPoolWater::shade()
if (mVertexShaderLevel == 1)
{
- LLColor4 fog_color(pwater->getFogColor(), 0.f);
- fog_color[3] = pwater->getFogDensity();
+ LLColor4 fog_color(pwater->getWaterFogColor(), 0.f);
+ fog_color[3] = pwater->getWaterFogDensity();
shader->uniform4fv(LLShaderMgr::WATER_FOGCOLOR, 1, fog_color.mV);
}
@@ -706,7 +695,7 @@ void LLDrawPoolWater::shade()
}
else
{
- LLGLSquashToFarClip far_clip(glh_get_current_projection());
+ LLGLSquashToFarClip far_clip(get_current_projection());
face->renderIndexed();
}
}