summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorGraham Linden <graham@lindenlab.com>2019-06-19 08:31:43 -0700
committerGraham Linden <graham@lindenlab.com>2019-06-19 08:31:43 -0700
commit7f24395889832c9ce51bae69054c7d081d77f65a (patch)
tree36fb8f5f313321b73af851253d1fa7d62310b6f6 /indra
parent0728a31a8ff3d2f9272c2d8c47420cf46ce5ad82 (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.cpp3
-rw-r--r--indra/newview/llvovolume.cpp16
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);
}