diff options
Diffstat (limited to 'indra/newview/lldrawpoolwater.cpp')
-rw-r--r-- | indra/newview/lldrawpoolwater.cpp | 68 |
1 files changed, 27 insertions, 41 deletions
diff --git a/indra/newview/lldrawpoolwater.cpp b/indra/newview/lldrawpoolwater.cpp index 567172e647..bcc0023089 100644 --- a/indra/newview/lldrawpoolwater.cpp +++ b/indra/newview/lldrawpoolwater.cpp @@ -488,49 +488,35 @@ void LLDrawPoolWater::shade() LLVector3 light_dir; LLColor3 light_color; - LLSettingsSky::ptr_t psky = LLEnvironment::instance().getCurrentSky(); LLSettingsWater::ptr_t pwater = LLEnvironment::instance().getCurrentWater(); - light_dir = psky->getLightDirection(); - if (LLEnvironment::instance().getIsDayTime()) + light_dir = voskyp->getLightDirection(); + light_dir.normalize(); + + bool sun_up = LLEnvironment::instance().getIsSunUp(); + bool moon_up = LLEnvironment::instance().getIsSunUp(); + + 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 + voskyp->getSunAmbientColor(); + light_diffuse += voskyp->getSunDiffuseColor(); } - 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); + light_color += voskyp->getMoonDiffuseColor(); + light_diffuse += voskyp->getMoonDiffuseColor() * 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 +595,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 +606,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 +692,7 @@ void LLDrawPoolWater::shade() } else { - LLGLSquashToFarClip far_clip(glh_get_current_projection()); + LLGLSquashToFarClip far_clip(get_current_projection()); face->renderIndexed(); } } |