From a9fba594dda5b60bf9ac43020394ed3be874ba1e Mon Sep 17 00:00:00 2001 From: Graham Linden Date: Mon, 9 Jul 2018 18:27:01 +0100 Subject: Restore setting the inv proj matrix for advanced atmo render path. Set nSight debug setting to 0 to fix ALM snapshots. Add popMatrix call to balance push around heavenly body rendering in ALM and fix mat stack overflow. --- indra/newview/app_settings/settings.xml | 2 +- indra/newview/lldrawpoolwlsky.cpp | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index c058d33e52..16afdbe9bc 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -8664,7 +8664,7 @@ Type Boolean Value - 1 + 0 RenderLocalLights diff --git a/indra/newview/lldrawpoolwlsky.cpp b/indra/newview/lldrawpoolwlsky.cpp index 9f8511a937..90d017dd0b 100644 --- a/indra/newview/lldrawpoolwlsky.cpp +++ b/indra/newview/lldrawpoolwlsky.cpp @@ -116,9 +116,6 @@ void LLDrawPoolWLSky::endDeferredPass(S32 pass) void LLDrawPoolWLSky::renderFsSky(const LLVector3& camPosLocal, F32 camHeightLocal, LLGLSLShader * shader) const { - // Draw WL Sky w/ normal cam pos (where you are) for adv atmo sky - //gGL.syncMatrices(); - sky_shader->uniform3f(sCamPosLocal, camPosLocal.mV[0], camPosLocal.mV[1], camPosLocal.mV[2]); gSky.mVOWLSkyp->drawFsSky(); } @@ -176,6 +173,13 @@ void LLDrawPoolWLSky::renderSkyHazeDeferred(const LLVector3& camPosLocal, F32 ca sky_shader->uniform3fv(LLShaderMgr::DEFERRED_SUN_DIR, 1, sun_dir.mV); sky_shader->uniform3fv(LLShaderMgr::DEFERRED_MOON_DIR, 1, moon_dir.mV); + llassert(sky_shader->getUniformLocation(LLShaderMgr::INVERSE_PROJECTION_MATRIX)); + + glh::matrix4f proj_mat = get_current_projection(); + glh::matrix4f inv_proj = proj_mat.inverse(); + + sky_shader->uniformMatrix4fv(LLShaderMgr::INVERSE_PROJECTION_MATRIX, 1, FALSE, inv_proj.m); + // clouds are rendered along with sky in adv atmo if (gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_CLOUDS) && gSky.mVOSkyp->getCloudNoiseTex()) { @@ -183,6 +187,8 @@ void LLDrawPoolWLSky::renderSkyHazeDeferred(const LLVector3& camPosLocal, F32 ca sky_shader->bindTexture(LLShaderMgr::CLOUD_NOISE_MAP_NEXT, gSky.mVOSkyp->getCloudNoiseTexNext()); } + sky_shader->uniform3f(sCamPosLocal, camPosLocal.mV[0], camPosLocal.mV[1], camPosLocal.mV[2]); + renderFsSky(camPosLocal, camHeightLocal, sky_shader); sky_shader->unbind(); @@ -459,6 +465,8 @@ void LLDrawPoolWLSky::renderDeferred(S32 pass) gGL.translatef(origin.mV[0], origin.mV[1], origin.mV[2]); renderHeavenlyBodies(); + + gGL.popMatrix(); } } gGL.setColorMask(true, true); -- cgit v1.2.3