From 0fc962454d0bb4a573c56b49b4f3e358617d4515 Mon Sep 17 00:00:00 2001 From: Shyotl Date: Tue, 7 Aug 2018 01:53:06 -0500 Subject: [PATCH] Fix shadows on basic alpha faces. --- indra/newview/lldrawpoolalpha.cpp | 2 +- indra/newview/pipeline.cpp | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp index 04d1e7904..f61f317d4 100644 --- a/indra/newview/lldrawpoolalpha.cpp +++ b/indra/newview/lldrawpoolalpha.cpp @@ -457,7 +457,7 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask, S32 pass) { if(current_shader) gPipeline.unbindDeferredShader(*current_shader); - target_shader->bind(); + gPipeline.bindDeferredShader(*target_shader); } } current_shader = target_shader; diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 8dddfbebe..a5ef13ecf 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -7408,6 +7408,11 @@ static LLTrace::BlockTimerStatHandle FTM_BIND_DEFERRED("Bind Deferred"); void LLPipeline::bindDeferredShader(LLGLSLShader& shader, LLRenderTarget* diffuse_source, LLRenderTarget* light_source) { + if (shader.mShaderClass != LLViewerShaderMgr::SHADER_DEFERRED && shader.mShaderClass != LLViewerShaderMgr::SHADER_INTERFACE) + { + shader.bind(); + return; + } LL_RECORD_BLOCK_TIME(FTM_BIND_DEFERRED); static const LLCachedControl RenderDeferredSunWash("RenderDeferredSunWash",.5f); @@ -8886,6 +8891,12 @@ void LLPipeline::setupSpotLight(LLGLSLShader& shader, LLDrawable* drawablep) void LLPipeline::unbindDeferredShader(LLGLSLShader &shader, LLRenderTarget* diffuse_source, LLRenderTarget* light_source) { + if (shader.mShaderClass != LLViewerShaderMgr::SHADER_DEFERRED && shader.mShaderClass != LLViewerShaderMgr::SHADER_INTERFACE) + { + shader.unbind(); + return; + } + diffuse_source = diffuse_source ? diffuse_source : &mDeferredScreen; light_source = light_source ? light_source : &mDeferredLight;