Backed out changeset 577f38970ed9 - Fix coming up...

Ansariel 2014-02-07 07:59:41 +01:00
parent 28b1297e50
commit 962f90dbbb
4 changed files with 18 additions and 10 deletions

View File

@ -2242,7 +2242,16 @@ void LLRender::texCoord2fv(const GLfloat* tc)
void LLRender::color4ub(const GLubyte& r, const GLubyte& g, const GLubyte& b, const GLubyte& a)
{
mColorsp[mCount] = LLColor4U(r,g,b,a);
if (LLGLSLShader::sNoFixedFunction &&
(!LLGLSLShader::sCurBoundShaderPtr ||
LLGLSLShader::sCurBoundShaderPtr->mAttributeMask & LLVertexBuffer::MAP_COLOR))
{
mColorsp[mCount] = LLColor4U(r,g,b,a);
}
else
{ //not using shaders or shader reads color from a uniform
diffuseColor4ub(r,g,b,a);
}
}
void LLRender::color4ubv(const GLubyte* c)
{

View File

@ -31,12 +31,13 @@ out vec4 frag_color;
uniform sampler2D tex0;
VARYING vec4 vertex_color;
uniform vec4 color;
VARYING vec2 vary_texcoord0;
void main()
{
float alpha = texture2D(tex0, vary_texcoord0.xy).a * vertex_color.a;
float alpha = texture2D(tex0, vary_texcoord0.xy).a * color.a;
frag_color = vec4(vertex_color.rgb, alpha);
frag_color = vec4(color.rgb, alpha);
}

View File

@ -26,16 +26,13 @@
uniform mat4 modelview_projection_matrix;
ATTRIBUTE vec3 position;
ATTRIBUTE vec4 diffuse_color;
ATTRIBUTE vec2 texcoord0;
VARYING vec4 vertex_color;
VARYING vec2 vary_texcoord0;
void main()
{
gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
vertex_color = diffuse_color;
vary_texcoord0 = texcoord0;
}

View File

@ -6333,8 +6333,8 @@ void LLSelectNode::renderOneSilhouette(const LLColor4 &color)
LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
if (shader)
{ //switch to "solid color" program for SH-2690 -- works around driver bug causing bad triangles when rendering silhouettes
gSolidColorProgram.bind();
{ //use UI program for selection highlights (texture color modulated by vertex color)
gUIProgram.bind();
}
gGL.matrixMode(LLRender::MM_MODELVIEW);
@ -6389,10 +6389,11 @@ void LLSelectNode::renderOneSilhouette(const LLColor4 &color)
gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);
gGL.begin(LLRender::LINES);
{
gGL.color4f(color.mV[VRED], color.mV[VGREEN], color.mV[VBLUE], 0.4f);
for(S32 i = 0; i < mSilhouetteVertices.size(); i += 2)
{
u_coord += u_divisor * LLSelectMgr::sHighlightUScale;
gGL.color4f(color.mV[VRED], color.mV[VGREEN], color.mV[VBLUE], 0.4f);
gGL.texCoord2f( u_coord, v_coord );
gGL.vertex3fv( mSilhouetteVertices[i].mV);
u_coord += u_divisor * LLSelectMgr::sHighlightUScale;