From 7bf67f786621e88e69415c5750a3b900d7b1e544 Mon Sep 17 00:00:00 2001
From: Graham Madarasz <graham@lindenlab.com>
Date: Fri, 12 Apr 2013 08:14:46 -0700
Subject: [PATCH] NORSPEC-111 probable fix for IntelHD advanced lighting
 crasher

---
 .../shaders/class1/avatar/objectSkinV.glsl    | 28 +++++++++++--------
 1 file changed, 17 insertions(+), 11 deletions(-)

diff --git a/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl b/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl
index 43ed41a2050..ff30560adcf 100644
--- a/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl
+++ b/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl
@@ -26,22 +26,28 @@
 
 ATTRIBUTE vec4 weight4;  
 
-uniform mat4 matrixPalette[32];
+uniform mat4 matrixPalette[64];
 
 mat4 getObjectSkinnedTransform()
 {
-	int i; 
 	
-	vec4 w = fract(weight4);
-	vec4 index = floor(weight4);
-	
-	float scale = 1.0/(w.x+w.y+w.z+w.w);
-	w *= scale;
+	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;
 	
-	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;
+	mat4 mat = matrixPalette[i0]*w0;
+	mat += matrixPalette[i1]*w1;
+	mat += matrixPalette[i2]*w2;
+	mat += matrixPalette[i3]*w3;
 		
 	return mat;
 }
-- 
GitLab