summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgraham linden <graham@lindenlab.com>2013-04-23 18:40:12 -0700
committergraham linden <graham@lindenlab.com>2013-04-23 18:40:12 -0700
commitb2cd1144713e4e1bbf77edf6547f633be55ab8ea (patch)
tree2bd9caa3b26fd988c618d6ff286d5876b00f791e
parent82b87e3acb1441ae56fcd08f53f8a83aee45a62f (diff)
parent95672cabb98fb311010cf3ff5571b3422b4dec71 (diff)
Merged lindenlab/viewer-development-materials into default
-rw-r--r--indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl26
-rw-r--r--indra/newview/pipeline.cpp6
2 files changed, 15 insertions, 17 deletions
diff --git a/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl b/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl
index ff30560adc..2745d5fd95 100644
--- a/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl
+++ b/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl
@@ -30,24 +30,18 @@ uniform mat4 matrixPalette[64];
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/pipeline.cpp b/indra/newview/pipeline.cpp
index a5e19e4c06..9010abce01 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -917,6 +917,11 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples)
{
screenFormat = GL_RGBA12;
}
+
+ if (gGLManager.mGLVersion < 4.f && gGLManager.mIsNVIDIA)
+ {
+ screenFormat = GL_RGBA16F_ARB;
+ }
if (!mScreen.allocate(resX, resY, screenFormat, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples)) return false;
if (samples > 0)
@@ -10040,7 +10045,6 @@ void LLPipeline::generateSunShadow(LLCamera& camera)
{
static LLCullResult result[4];
- //LLGLEnable enable(GL_DEPTH_CLAMP_NV);
renderShadow(view[j], proj[j], shadow_cam, result[j], TRUE, TRUE, target_width);
}