diff options
author | Graham Linden <graham@lindenlab.com> | 2019-06-19 08:31:43 -0700 |
---|---|---|
committer | Graham Linden <graham@lindenlab.com> | 2019-06-19 08:31:43 -0700 |
commit | 7f24395889832c9ce51bae69054c7d081d77f65a (patch) | |
tree | 36fb8f5f313321b73af851253d1fa7d62310b6f6 /indra | |
parent | 0728a31a8ff3d2f9272c2d8c47420cf46ce5ad82 (diff) |
SL-11318
Make alpha pass start with no shader bound.
Make diffuse mode alpha-blended fullbrights get into alpha pass properly.
Diffstat (limited to 'indra')
-rw-r--r-- | indra/newview/lldrawpoolalpha.cpp | 3 | ||||
-rw-r--r-- | indra/newview/llvovolume.cpp | 16 |
2 files changed, 14 insertions, 5 deletions
diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp index d671a5968f..da0467315f 100644 --- a/indra/newview/lldrawpoolalpha.cpp +++ b/indra/newview/lldrawpoolalpha.cpp @@ -226,6 +226,9 @@ void LLDrawPoolAlpha::beginRenderPass(S32 pass) } } gPipeline.enableLightsDynamic(); + + LLGLSLShader::bindNoShader(); + current_shader = NULL; } void LLDrawPoolAlpha::endRenderPass( S32 pass ) diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index edd5f5e2cb..3866045b1d 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -6493,14 +6493,20 @@ U32 LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, LLFace } else { - if (mat->getEnvironmentIntensity() > 0 || - te->getShiny() > 0) + if (mat->getEnvironmentIntensity() > 0 || te->getShiny() > 0) { material_pass = true; } - else if (!invisible) + else { - registerFace(group, facep, LLRenderPass::PASS_FULLBRIGHT); + if (opaque) + { + registerFace(group, facep, LLRenderPass::PASS_FULLBRIGHT); + } + else + { + registerFace(group, facep, LLRenderPass::PASS_ALPHA); + } } } } @@ -6565,7 +6571,7 @@ U32 LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, LLFace { registerFace(group, facep, fullbright ? LLRenderPass::PASS_FULLBRIGHT_ALPHA_MASK : LLRenderPass::PASS_ALPHA_MASK); } - else if (is_alpha || (te->getColor().mV[3] < 0.999f)) + else if (is_alpha || transparent) { registerFace(group, facep, LLRenderPass::PASS_ALPHA); } |