From e09822153e135e8fc89f6fdb3338bb9e8e5b6132 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Thu, 18 Feb 2010 15:52:49 +0000
Subject: EXT-5389 Unreadable resident names with glow.

An alternative fix just for render-pipeline.
This is here instead of the trunk because it's cosmetically less good, and codewise a little weirder, and slightly (unmeasurably?) less performant.

But its advantage over the trunk fix is, it's still Z-buffered when FBOs are turned on.  Which we really care about on render-pipeline.
---
 indra/newview/lldrawpoolsimple.cpp | 6 +++++-
 indra/newview/llhudtext.cpp        | 2 +-
 indra/newview/pipeline.cpp         | 9 +++++----
 3 files changed, 11 insertions(+), 6 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/lldrawpoolsimple.cpp b/indra/newview/lldrawpoolsimple.cpp
index ca7a1b47c2..0a94e1f45a 100644
--- a/indra/newview/lldrawpoolsimple.cpp
+++ b/indra/newview/lldrawpoolsimple.cpp
@@ -71,7 +71,11 @@ void LLDrawPoolGlow::render(S32 pass)
 	LLGLDepthTest depth(GL_TRUE, GL_FALSE);
 	gGL.setColorMask(false, true);
 	renderTexture(LLRenderPass::PASS_GLOW, getVertexDataMask());
-	
+
+	// Render name tags invisibly, zero-ing glow (alpha) where they exist (EXT-5389)
+	gGL.blendFunc(LLRender::BF_ZERO, LLRender::BF_ZERO); // LLHUDText::renderText(true) might clobber this, but right now it doesn't.
+	LLHUDObject::renderAllForSelect(); // we slightly abuse renderForSelect() because it happens to do the right thing for our needs
+
 	gGL.setColorMask(true, false);
 	gGL.setSceneBlendType(LLRender::BT_ALPHA);
 	
diff --git a/indra/newview/llhudtext.cpp b/indra/newview/llhudtext.cpp
index 9ed5d13831..b49e14bc7d 100644
--- a/indra/newview/llhudtext.cpp
+++ b/indra/newview/llhudtext.cpp
@@ -374,7 +374,7 @@ void LLHUDText::renderText(BOOL for_select)
 			{
 				gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
 				S32 name = mSourceObject->mGLName;
-				LLColor4U coloru((U8)(name >> 16), (U8)(name >> 8), (U8)name);
+				LLColor4U coloru((U8)(name >> 16), (U8)(name >> 8), (U8)name, 0);
 				gGL.color4ubv(coloru.mV);
 				gl_segmented_rect_3d_tex(border_scale_vec, scaled_border_width, scaled_border_height, width_vec, height_vec);
 				LLUI::popMatrix();
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 559ae83182..3a37ce8fbb 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -2794,9 +2794,6 @@ void render_hud_elements()
 		LLWorld::getInstance()->renderPropertyLines();
 		LLViewerParcelMgr::getInstance()->render();
 		LLViewerParcelMgr::getInstance()->renderParcelCollision();
-	
-		// Render name tags.
-		LLHUDObject::renderAll();
 	}
 	else if (gForceRenderLandFence)
 	{
@@ -3200,8 +3197,10 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
 	if (!LLPipeline::sReflectionRender && !LLPipeline::sRenderDeferred && gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI))
 	{
 		// Render debugging beacons.
-		gObjectList.renderObjectBeacons();
+		gObjectList.renderObjectBeacons();	
 		gObjectList.resetObjectBeacons();
+		// Render name tags
+		LLHUDObject::renderAll();
 	}
 
 	LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderGeomEnd");
@@ -6923,6 +6922,8 @@ void LLPipeline::renderDeferredLighting()
 			// Render debugging beacons.
 			gObjectList.renderObjectBeacons();
 			gObjectList.resetObjectBeacons();
+			// Render name tags
+			LLHUDObject::renderAll();
 		}
 	}
 
-- 
cgit v1.2.3