summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
Diffstat (limited to 'indra')
-rwxr-xr-xindra/llrender/llglslshader.cpp17
-rwxr-xr-xindra/llrender/llglslshader.h2
-rw-r--r--indra/newview/VIEWER_VERSION.txt2
-rwxr-xr-xindra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl29
-rwxr-xr-xindra/newview/app_settings/shaders/class1/deferred/alphaF.glsl1
5 files changed, 32 insertions, 19 deletions
diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp
index 2803f256df..52b00f7c15 100755
--- a/indra/llrender/llglslshader.cpp
+++ b/indra/llrender/llglslshader.cpp
@@ -622,6 +622,7 @@ void LLGLSLShader::mapUniform(GLint index, const vector<LLStaticHashedString> *
LLStaticHashedString hashedName(name);
mUniformNameMap[location] = name;
mUniformMap[hashedName] = location;
+
LL_DEBUGS("ShaderLoading") << "Uniform " << name << " is at location " << location << LL_ENDL;
//find the index of this uniform
@@ -1218,6 +1219,22 @@ void LLGLSLShader::uniform2i(const string& uniform, GLint i, GLint j)
}
}
+void LLGLSLShader::uniform2i(const string& uniform, GLint i, GLint j)
+{
+ GLint location = getUniformLocation(uniform);
+
+ if (location >= 0)
+ {
+ std::map<GLint, LLVector4>::iterator iter = mValue.find(location);
+ LLVector4 vec(i,j,0.f,0.f);
+ if (iter == mValue.end() || shouldChange(iter->second,vec))
+ {
+ glUniform2iARB(location, i, j);
+ mValue[location] = vec;
+ }
+ }
+}
+
void LLGLSLShader::uniform1f(const LLStaticHashedString& uniform, GLfloat v)
{
diff --git a/indra/llrender/llglslshader.h b/indra/llrender/llglslshader.h
index 376487daa9..7b2f5f04c2 100755
--- a/indra/llrender/llglslshader.h
+++ b/indra/llrender/llglslshader.h
@@ -111,7 +111,7 @@ public:
void uniform2fv(U32 index, U32 count, const GLfloat* v);
void uniform3fv(U32 index, U32 count, const GLfloat* v);
void uniform4fv(U32 index, U32 count, const GLfloat* v);
- void uniform2i(const std::string& uniform, GLint i, GLint j);
+ void uniform2i(const LLStaticHashedString& uniform, GLint i, GLint j);
void uniformMatrix2fv(U32 index, U32 count, GLboolean transpose, const GLfloat *v);
void uniformMatrix3fv(U32 index, U32 count, GLboolean transpose, const GLfloat *v);
void uniformMatrix4fv(U32 index, U32 count, GLboolean transpose, const GLfloat *v);
diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt
index 9575d51bad..b72762837e 100644
--- a/indra/newview/VIEWER_VERSION.txt
+++ b/indra/newview/VIEWER_VERSION.txt
@@ -1 +1 @@
-3.6.1
+3.6.2
diff --git a/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl b/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl
index ff30560adc..efd0d03965 100755
--- a/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl
+++ b/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl
@@ -26,28 +26,23 @@
ATTRIBUTE vec4 weight4;
-uniform mat4 matrixPalette[64];
+uniform mat4 matrixPalette[32];
mat4 getObjectSkinnedTransform()
{
+ int i;
- float w0 = fract(weight4.x);
- float w1 = fract(weight4.y);
- float w2 = fract(weight4.z);
- float w3 = fract(weight4.w);
-
- int i0 = int(floor(weight4.x));
- int i1 = int(floor(weight4.y));
- int i2 = int(floor(weight4.z));
- int i3 = int(floor(weight4.w));
-
- //float scale = 1.0/(w.x+w.y+w.z+w.w);
- //w *= scale;
+ vec4 w = fract(weight4);
+ vec4 index = floor(weight4);
+
+ float scale = 1.0/(w.x+w.y+w.z+w.w);
+ w *= scale;
- mat4 mat = matrixPalette[i0]*w0;
- mat += matrixPalette[i1]*w1;
- mat += matrixPalette[i2]*w2;
- mat += matrixPalette[i3]*w3;
+ mat4 mat = matrixPalette[int(index.x)]*w.x;
+ mat += matrixPalette[int(index.y)]*w.y;
+ mat += matrixPalette[int(index.z)]*w.z;
+ mat += matrixPalette[int(index.w)]*w.w;
return mat;
}
+
diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
index af3f362208..b666b7b0d9 100755
--- a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
@@ -230,6 +230,7 @@ void main()
}
#endif
+ vec4 gamma_diff = diff;
vec3 normal = vary_norm;
vec3 l = light_position[0].xyz;