diff options
Diffstat (limited to 'indra/newview/lldrawpoolwater.cpp')
-rw-r--r-- | indra/newview/lldrawpoolwater.cpp | 73 |
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(); } } |