From 074c2acb74d2c5a29aad1f3cde17b97cd7ee21ea Mon Sep 17 00:00:00 2001 From: Ansariel Date: Thu, 25 Aug 2022 10:09:42 +0200 Subject: [PATCH] FIRE-31986: Undo some alpha rendering optimizations which in the end seem to cause more issues and strange/different behavior compared to the LL viewer --- indra/newview/llface.cpp | 5 ----- indra/newview/llvovolume.cpp | 15 ++------------- 2 files changed, 2 insertions(+), 18 deletions(-) diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index dfbb5ba8c8..2e26f284d4 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -1232,11 +1232,6 @@ bool LLFace::canRenderAsMask() { return false; } - - // shortcircuit fully alpha faces - if (getViewerObject()->isHUDAttachment()) { return false; } - if (te->getAlpha() == 0.0f && (te->getGlow() == 0.f)) { return true; } - // LLMaterial* mat = te->getMaterialParams(); if (mat && mat->getDiffuseAlphaMode() == LLMaterial::DIFFUSE_ALPHA_MODE_BLEND) diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index b25568d42b..50a44d13d3 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -5664,7 +5664,7 @@ void LLVolumeGeometryManager::registerFace(LLSpatialGroup* group, LLFace* facep, } } - // if (type == LLRenderPass::PASS_ALPHA) // allow tracking through pipeline + if (type == LLRenderPass::PASS_ALPHA) { //for alpha sorting facep->setDrawInfo(draw_info); } @@ -6617,14 +6617,6 @@ U32 LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, LLFace LLFace* facep = *face_iter; LLViewerTexture* tex = facep->getTexture(); const LLTextureEntry* te = facep->getTextureEntry(); - // Don't batch fully transparent faces - if (te && ( te->getAlpha() == 0.f ) && ( te->getGlow() == 0.0 ) && !LLDrawPoolAlpha::sShowDebugAlpha) - { - facep->setSize(0,0); - ++face_iter; - continue; - } - // LLMaterialPtr mat = te->getMaterialParams(); LLMaterialID matId = te->getMaterialID(); @@ -7029,10 +7021,7 @@ U32 LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, LLFace else if (is_alpha) { // can we safely treat this as an alpha mask? - // Nothing actually sets facecolor use the TE alpha instead. - // if (facep->getFaceColor().mV[3] <= 0.f) - if ((te->getAlpha() <= 0.f || facep->getFaceColor().mV[3] <= 0.f) && te->getGlow() == 0.0 && !LLDrawPoolAlpha::sShowDebugAlpha) - // + if (facep->getFaceColor().mV[3] <= 0.f) { //100% transparent, don't render unless we're highlighting transparent LL_PROFILE_ZONE_NAMED_CATEGORY_VOLUME("facep->alpha -> invisible"); registerFace(group, facep, LLRenderPass::PASS_ALPHA_INVISIBLE);