Fixed: alpha mode shaders not being bound appropriately.
parent
170ecf5e8a
commit
c2785a740e
|
|
@ -68,20 +68,23 @@ void LLDrawPoolMaterials::renderDeferred(S32 pass)
|
|||
switch (params.mDiffuseAlphaMode)
|
||||
{
|
||||
case 0:
|
||||
LL_INFOS("Asdf") << "Renderererererrerererrrr!!!~!!!~!~" << LL_ENDL;
|
||||
mShader = &gDeferredMaterialShinyNormal;
|
||||
mShader->bind();
|
||||
break;
|
||||
case 1: // Alpha blending not supported in the opaque draw pool.
|
||||
return;
|
||||
case 2:
|
||||
mShader = &gDeferredMaterialShinyNormalAlphaTest;
|
||||
mShader->bind();
|
||||
mShader->setMinimumAlpha(params.mAlphaMaskCutoff);
|
||||
break;
|
||||
case 3:
|
||||
mShader = &gDeferredMaterialShinyNormalEmissive;
|
||||
mShader->bind();
|
||||
break;
|
||||
};
|
||||
|
||||
mShader->bind();
|
||||
|
||||
|
||||
mShader->uniform4f(LLShaderMgr::SPECULAR_COLOR, params.mSpecColor.mV[0], params.mSpecColor.mV[1], params.mSpecColor.mV[2], params.mSpecColor.mV[3]);
|
||||
mShader->uniform1f(LLShaderMgr::ENVIRONMENT_INTENSITY, params.mEnvIntensity);
|
||||
|
|
|
|||
|
|
@ -1598,7 +1598,20 @@ U32 LLPipeline::getPoolTypeFromTE(const LLTextureEntry* te, LLViewerTexture* ima
|
|||
{
|
||||
alpha = alpha || (imagep->getComponents() == 4 && imagep->getType() != LLViewerTexture::MEDIA_TEXTURE) || (imagep->getComponents() == 2);
|
||||
}
|
||||
|
||||
|
||||
if (alpha && te->getMaterialParams())
|
||||
{
|
||||
switch (te->getMaterialParams()->getDiffuseAlphaMode())
|
||||
{
|
||||
case 1:
|
||||
alpha = true; // Material's alpha mode is set to blend. Toss it into the alpha draw pool.
|
||||
break;
|
||||
default:
|
||||
alpha = false; // Material's alpha mode is set to none, mask, or emissive. Toss it into the opaque material draw pool.
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (alpha)
|
||||
{
|
||||
return LLDrawPool::POOL_ALPHA;
|
||||
|
|
|
|||
Loading…
Reference in New Issue