NORSPEC-126 Make objects with normal maps applied obey legacy shiny settings
parent
8e027971a2
commit
a9ede98915
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue