MAINT-643 Fix for incorrect lighting and colors in preview displays.
parent
9b7bfcf594
commit
ec125540c4
|
|
@ -0,0 +1,41 @@
|
|||
/**
|
||||
* @file previewF.glsl
|
||||
*
|
||||
* $LicenseInfo:firstyear=2011&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2011, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#ifdef DEFINE_GL_FRAGCOLOR
|
||||
out vec4 frag_color;
|
||||
#else
|
||||
#define frag_color gl_FragColor
|
||||
#endif
|
||||
|
||||
uniform sampler2D diffuseMap;
|
||||
|
||||
VARYING vec4 vertex_color;
|
||||
VARYING vec2 vary_texcoord0;
|
||||
|
||||
void main()
|
||||
{
|
||||
vec4 color = texture2D(diffuseMap,vary_texcoord0.xy) * vertex_color;
|
||||
frag_color = color;
|
||||
}
|
||||
|
|
@ -32,6 +32,8 @@ ATTRIBUTE vec3 position;
|
|||
ATTRIBUTE vec3 normal;
|
||||
ATTRIBUTE vec2 texcoord0;
|
||||
|
||||
uniform vec4 color;
|
||||
|
||||
VARYING vec4 vertex_color;
|
||||
VARYING vec2 vary_texcoord0;
|
||||
|
||||
|
|
@ -50,8 +52,8 @@ void main()
|
|||
|
||||
calcAtmospherics(pos.xyz);
|
||||
|
||||
vec4 color = calcLighting(pos.xyz, norm, vec4(1,1,1,1), vec4(0.));
|
||||
vertex_color = color;
|
||||
vec4 col = calcLighting(pos.xyz, norm, color, vec4(0.));
|
||||
vertex_color = col;
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -901,11 +901,13 @@ BOOL LLImagePreviewSculpted::render()
|
|||
{
|
||||
gObjectPreviewProgram.bind();
|
||||
}
|
||||
gPipeline.enableLightsPreview();
|
||||
|
||||
gGL.pushMatrix();
|
||||
const F32 SCALE = 1.25f;
|
||||
gGL.scalef(SCALE, SCALE, SCALE);
|
||||
const F32 BRIGHTNESS = 0.9f;
|
||||
gGL.color3f(BRIGHTNESS, BRIGHTNESS, BRIGHTNESS);
|
||||
gGL.diffuseColor3f(BRIGHTNESS, BRIGHTNESS, BRIGHTNESS);
|
||||
|
||||
mVertexBuffer->setBuffer(LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_NORMAL | LLVertexBuffer::MAP_TEXCOORD0);
|
||||
mVertexBuffer->draw(LLRender::TRIANGLES, num_indices, 0);
|
||||
|
|
|
|||
|
|
@ -5087,6 +5087,11 @@ BOOL LLModelPreview::render()
|
|||
refresh();
|
||||
}
|
||||
|
||||
if (use_shaders)
|
||||
{
|
||||
gObjectPreviewProgram.bind();
|
||||
}
|
||||
|
||||
gGL.loadIdentity();
|
||||
gPipeline.enableLightsPreview();
|
||||
|
||||
|
|
@ -5112,11 +5117,6 @@ BOOL LLModelPreview::render()
|
|||
|
||||
const U32 type_mask = LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_NORMAL | LLVertexBuffer::MAP_TEXCOORD0;
|
||||
|
||||
if (use_shaders)
|
||||
{
|
||||
gObjectPreviewProgram.bind();
|
||||
}
|
||||
|
||||
LLGLEnable normalize(GL_NORMALIZE);
|
||||
|
||||
if (!mBaseModel.empty() && mVertexBuffer[5].empty())
|
||||
|
|
@ -5305,7 +5305,7 @@ BOOL LLModelPreview::render()
|
|||
hull_colors.push_back(LLColor4U(rand()%128+127, rand()%128+127, rand()%128+127, 128));
|
||||
}
|
||||
|
||||
glColor4ubv(hull_colors[i].mV);
|
||||
gGL.diffuseColor4ubv(hull_colors[i].mV);
|
||||
LLVertexBuffer::drawArrays(LLRender::TRIANGLES, physics.mMesh[i].mPositions, physics.mMesh[i].mNormals);
|
||||
|
||||
if (explode > 0.f)
|
||||
|
|
|
|||
|
|
@ -2026,15 +2026,15 @@ BOOL LLViewerShaderMgr::loadShadersObject()
|
|||
{
|
||||
gObjectPreviewProgram.mName = "Simple Shader";
|
||||
gObjectPreviewProgram.mFeatures.calculatesLighting = true;
|
||||
gObjectPreviewProgram.mFeatures.calculatesAtmospherics = true;
|
||||
gObjectPreviewProgram.mFeatures.calculatesAtmospherics = false;
|
||||
gObjectPreviewProgram.mFeatures.hasGamma = true;
|
||||
gObjectPreviewProgram.mFeatures.hasAtmospherics = true;
|
||||
gObjectPreviewProgram.mFeatures.hasAtmospherics = false;
|
||||
gObjectPreviewProgram.mFeatures.hasLighting = true;
|
||||
gObjectPreviewProgram.mFeatures.mIndexedTextureChannels = 0;
|
||||
gObjectPreviewProgram.mFeatures.disableTextureIndex = true;
|
||||
gObjectPreviewProgram.mShaderFiles.clear();
|
||||
gObjectPreviewProgram.mShaderFiles.push_back(make_pair("objects/previewV.glsl", GL_VERTEX_SHADER_ARB));
|
||||
gObjectPreviewProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER_ARB));
|
||||
gObjectPreviewProgram.mShaderFiles.push_back(make_pair("objects/previewF.glsl", GL_FRAGMENT_SHADER_ARB));
|
||||
gObjectPreviewProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
|
||||
success = gObjectPreviewProgram.createShader(NULL, NULL);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue