summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorGraham Madarasz <graham@lindenlab.com>2013-05-06 08:56:32 -0700
committerGraham Madarasz <graham@lindenlab.com>2013-05-06 08:56:32 -0700
commitd42a0e4e80d2b2cd51e43f7d340a6043b55635ec (patch)
tree2bf89133bba13f219cb44a8e9bba54d7d4175398 /indra/newview
parente0f2a242a7f67f7fa6181fbd65b6cea3a20facc4 (diff)
NORSPEC-126 Make objects with normal maps applied obey legacy shiny settings
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/llface.cpp3
-rw-r--r--indra/newview/llvovolume.cpp51
2 files changed, 31 insertions, 23 deletions
diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp
index dad62dd045..77dd1fe607 100644
--- a/indra/newview/llface.cpp
+++ b/indra/newview/llface.cpp
@@ -1327,7 +1327,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
0.75f
};
- if ((!LLPipeline::sRenderDeferred || !mat) &&
+ if ((!LLPipeline::sRenderDeferred || !mat || mat->getSpecularID().isNull()) &&
getPoolType() != LLDrawPool::POOL_ALPHA &&
(LLPipeline::sRenderDeferred || (LLPipeline::sRenderBump && tep->getShiny())))
{
@@ -1335,6 +1335,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
color.mV[3] = U8 (alpha[tep->getShiny()] * 255);
}
}
+
}
// INDICES
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 9b940300f5..6cfdc1e9c6 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -4152,38 +4152,45 @@ void LLVolumeGeometryManager::registerFace(LLSpatialGroup* group, LLFace* facep,
draw_vec.push_back(draw_info);
draw_info->mTextureMatrix = tex_mat;
draw_info->mModelMatrix = model_mat;
+
+ U8 shiny = facep->getTextureEntry()->getShiny();
+ float alpha[4] =
+ {
+ 0.00f,
+ 0.25f,
+ 0.5f,
+ 0.75f
+ };
+ float spec = alpha[shiny & TEM_SHINY_MASK];
+ LLVector4 specColor(spec, spec, spec, spec);
+ draw_info->mSpecColor = specColor;
+ draw_info->mEnvIntensity = spec;
+ draw_info->mSpecularMap = NULL;
+
if (mat && LLPipeline::sRenderBump && LLPipeline::sRenderDeferred)
{
// We have a material. Update our draw info accordingly.
draw_info->mMaterial = mat;
- LLVector4 specColor;
- specColor.mV[0] = mat->getSpecularLightColor().mV[0] * (1.f / 255.f);
- specColor.mV[1] = mat->getSpecularLightColor().mV[1] * (1.f / 255.f);
- specColor.mV[2] = mat->getSpecularLightColor().mV[2] * (1.f / 255.f);
- specColor.mV[3] = mat->getSpecularLightExponent() * (1.f / 255.f);
- draw_info->mSpecColor = specColor;
- draw_info->mEnvIntensity = mat->getEnvironmentIntensity() * (1.f / 255.f);
+
+ if (!mat->getSpecularID().isNull())
+ {
+ LLVector4 specColor;
+ specColor.mV[0] = mat->getSpecularLightColor().mV[0] * (1.f / 255.f);
+ specColor.mV[1] = mat->getSpecularLightColor().mV[1] * (1.f / 255.f);
+ specColor.mV[2] = mat->getSpecularLightColor().mV[2] * (1.f / 255.f);
+ specColor.mV[3] = mat->getSpecularLightExponent() * (1.f / 255.f);
+ draw_info->mSpecColor = specColor;
+ draw_info->mEnvIntensity = mat->getEnvironmentIntensity() * (1.f / 255.f);
+ draw_info->mSpecularMap = facep->getViewerObject()->getTESpecularMap(facep->getTEOffset());
+ }
+
draw_info->mAlphaMaskCutoff = mat->getAlphaMaskCutoff() * (1.f / 255.f);
draw_info->mDiffuseAlphaMode = mat->getDiffuseAlphaMode();
draw_info->mNormalMap = facep->getViewerObject()->getTENormalMap(facep->getTEOffset());
- draw_info->mSpecularMap = facep->getViewerObject()->getTESpecularMap(facep->getTEOffset());
+
}
else
{
- U8 shiny = facep->getTextureEntry()->getShiny();
- float alpha[4] =
- {
- 0.00f,
- 0.25f,
- 0.5f,
- 0.75f
- };
- llassert(shiny <= 3);
- float spec = alpha[shiny];
- LLVector4 specColor(spec, spec, spec, spec);
- draw_info->mSpecColor = specColor;
- draw_info->mEnvIntensity = spec;
-
if (type == LLRenderPass::PASS_GRASS)
{
draw_info->mAlphaMaskCutoff = 0.5f;