summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGraham Madarasz (Graham) <graham@lindenlab.com>2013-06-24 12:00:56 -0700
committerGraham Madarasz (Graham) <graham@lindenlab.com>2013-06-24 12:00:56 -0700
commitdf0da562af801b4370b18b223c9a2d33a29ce759 (patch)
tree1d32613db826b493fe6fc25c3717ef1834aa144f
parentaf860d09532f929510da0d4da7e965a0df4e6944 (diff)
MAINT-2800 revert changes to objectSkinV to make it match 3.6.0 code and not slow down on ATI on Mac
-rwxr-xr-xindra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl29
1 files changed, 12 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..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;
}
+