diff --git a/indra/newview/lldrawpoolwlsky.cpp b/indra/newview/lldrawpoolwlsky.cpp index 58609e9e6cefa0d24692ae2f92821b5af373714b..7ae1223513f3d7f5dc1857eb8465127dc0bfbb7d 100644 --- a/indra/newview/lldrawpoolwlsky.cpp +++ b/indra/newview/lldrawpoolwlsky.cpp @@ -52,8 +52,7 @@ static LLGLSLShader* cloud_shader = NULL; static LLGLSLShader* sky_shader = NULL; static LLGLSLShader* sun_shader = NULL; static LLGLSLShader* moon_shader = NULL; - -static float sStarTime; +static LLGLSLShader* star_shader = NULL; LLDrawPoolWLSky::LLDrawPoolWLSky(void) : LLDrawPool(POOL_WL_SKY) @@ -90,6 +89,11 @@ void LLDrawPoolWLSky::beginRenderPass( S32 pass ) LLPipeline::sUnderWaterRender ? &gObjectFullbrightNoColorWaterProgram : &gWLMoonProgram; + + star_shader = + LLPipeline::sUnderWaterRender ? + &gObjectFullbrightNoColorWaterProgram : + &gCustomAlphaProgram; } void LLDrawPoolWLSky::endRenderPass( S32 pass ) @@ -98,6 +102,7 @@ void LLDrawPoolWLSky::endRenderPass( S32 pass ) cloud_shader = nullptr; sun_shader = nullptr; moon_shader = nullptr; + star_shader = nullptr; } void LLDrawPoolWLSky::beginDeferredPass(S32 pass) @@ -114,6 +119,11 @@ void LLDrawPoolWLSky::beginDeferredPass(S32 pass) LLPipeline::sUnderWaterRender ? &gObjectFullbrightNoColorWaterProgram : &gDeferredWLMoonProgram; + + star_shader = + LLPipeline::sUnderWaterRender ? + &gObjectFullbrightNoColorWaterProgram : + &gDeferredStarProgram; } void LLDrawPoolWLSky::endDeferredPass(S32 pass) @@ -122,6 +132,7 @@ void LLDrawPoolWLSky::endDeferredPass(S32 pass) cloud_shader = nullptr; sun_shader = nullptr; moon_shader = nullptr; + star_shader = nullptr; } void LLDrawPoolWLSky::renderDome(const LLVector3& camPosLocal, F32 camHeightLocal, LLGLSLShader * shader) const @@ -260,8 +271,8 @@ void LLDrawPoolWLSky::renderStars(const LLSettingsSky::ptr_t& psky, const LLVect gGL.translatef(camPosLocal.mV[0], camPosLocal.mV[1], camPosLocal.mV[2]); if (LLGLSLShader::sNoFixedFunction) { - gCustomAlphaProgram.bind(); - gCustomAlphaProgram.uniform1f(sCustomAlpha, star_alpha.mV[3]); + star_shader->bind(); + star_shader->uniform1f(sCustomAlpha, star_alpha.mV[3]); } else { @@ -278,7 +289,7 @@ void LLDrawPoolWLSky::renderStars(const LLSettingsSky::ptr_t& psky, const LLVect if (LLGLSLShader::sNoFixedFunction) { - gCustomAlphaProgram.unbind(); + star_shader->unbind(); } else { @@ -304,8 +315,6 @@ void LLDrawPoolWLSky::renderStarsDeferred(const LLSettingsSky::ptr_t& psky, cons return; } - - LLViewerTexture* tex_a = gSky.mVOSkyp->getBloomTex(); LLViewerTexture* tex_b = gSky.mVOSkyp->getBloomTexNext(); @@ -333,19 +342,17 @@ void LLDrawPoolWLSky::renderStarsDeferred(const LLSettingsSky::ptr_t& psky, cons gGL.pushMatrix(); gGL.translatef(camPosLocal.mV[0], camPosLocal.mV[1], camPosLocal.mV[2]); - gDeferredStarProgram.bind(); + star_shader->bind(); - gDeferredStarProgram.uniform1f(LLShaderMgr::BLEND_FACTOR, blend_factor); + star_shader->uniform1f(LLShaderMgr::BLEND_FACTOR, blend_factor); if (LLPipeline::sReflectionRender) { star_alpha = 1.0f; } - gDeferredStarProgram.uniform1f(sCustomAlpha, star_alpha); - - sStarTime = (F32)LLFrameTimer::getElapsedSeconds() * 0.5f; + star_shader->uniform1f(sCustomAlpha, star_alpha); - gDeferredStarProgram.uniform1f(LLShaderMgr::WATER_TIME, sStarTime); + star_shader->uniform1f(LLShaderMgr::WATER_TIME, (F32)LLFrameTimer::getElapsedSeconds() * 0.5f); gSky.mVOWLSkyp->drawStars(); @@ -354,7 +361,7 @@ void LLDrawPoolWLSky::renderStarsDeferred(const LLSettingsSky::ptr_t& psky, cons gGL.popMatrix(); - gDeferredStarProgram.unbind(); + star_shader->unbind(); } void LLDrawPoolWLSky::renderSkyClouds(const LLSettingsSky::ptr_t& psky, const LLVector3& camPosLocal, F32 camHeightLocal, LLGLSLShader* cloudshader) const