From c4413f493e65d1c12f382a9fe4363e90c6a1b8c3 Mon Sep 17 00:00:00 2001
From: Graham Madarasz <graham@lindenlab.com>
Date: Tue, 16 Apr 2013 08:27:30 -0700
Subject: NORSPEC-123 et al...roll back NSPEC 91 fix to avoid knock-on and set
 correct default env intensity

---
 indra/llprimitive/llmaterial.h |  2 +-
 indra/newview/llpanelface.cpp  | 84 ++++++++----------------------------------
 2 files changed, 16 insertions(+), 70 deletions(-)

diff --git a/indra/llprimitive/llmaterial.h b/indra/llprimitive/llmaterial.h
index c2e49985a4..df5a45cabd 100644
--- a/indra/llprimitive/llmaterial.h
+++ b/indra/llprimitive/llmaterial.h
@@ -54,7 +54,7 @@ public:
 	
 	static const U8			DEFAULT_SPECULAR_LIGHT_EXPONENT = ((U8)(0.2f * 255));
 	static const LLColor4U	DEFAULT_SPECULAR_LIGHT_COLOR;
-	static const U8			DEFAULT_ENV_INTENSITY = ((U8)(0.05f * 255));
+	static const U8			DEFAULT_ENV_INTENSITY = 0;
 
 	LLMaterial();
 	LLMaterial(const LLSD& material_data);
diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp
index f91f1f7d3a..be88cb6ab6 100644
--- a/indra/newview/llpanelface.cpp
+++ b/indra/newview/llpanelface.cpp
@@ -291,55 +291,10 @@ void LLPanelFace::sendTexture()
 		}
 		LLSelectMgr::getInstance()->selectionSetImage(id);
 	}
-    
-    mIsAlpha = FALSE;
-    LLGLenum image_format;
-    struct f2 : public LLSelectedTEGetFunctor<LLGLenum>
-    {
-        LLGLenum get(LLViewerObject* object, S32 te_index)
-        {
-            LLGLenum image_format = GL_RGB;
-            
-            LLViewerTexture* image = object->getTEImage(te_index);
-            if (image) image_format  = image->getPrimaryFormat();
-            return image_format;
-        }
-    } func2;
-    LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue( &func2, image_format );
-    
-    mIsAlpha = FALSE;
-    switch (image_format)
-    {
-        case GL_RGBA:
-        case GL_ALPHA:
-        {
-            mIsAlpha = TRUE;
-        }
-            break;
-            
-        case GL_RGB: break;
-        default:
-        {
-            llwarns << "Unexpected tex format in LLPanelFace...resorting to no alpha" << llendl;
-        }
-            break;
-    }
-
-    LLComboBox* comboAlphaMode = getChild<LLComboBox>("combobox alphamode");
-	if (comboAlphaMode)
-	{
-		U32 alpha_mode = comboAlphaMode->getCurrentIndex();
-        if (mIsAlpha && (alpha_mode == LLMaterial::DIFFUSE_ALPHA_MODE_NONE))
-        {
-            alpha_mode = LLMaterial::DIFFUSE_ALPHA_MODE_BLEND;
-        }
-        comboAlphaMode->selectNthItem(alpha_mode);
-	}
-	
 }
 
 void LLPanelFace::sendBump()
-{
+{	
 	LLComboBox*	mComboBumpiness = getChild<LLComboBox>("combobox bumpiness");
 	if(!mComboBumpiness)return;
 	U32 bumpiness = mComboBumpiness->getCurrentIndex();
@@ -834,7 +789,7 @@ void LLPanelFace::getState()
 				}
 			} alpha_get_func;
 			
-			U8 alpha_mode = LLMaterial::DIFFUSE_ALPHA_MODE_BLEND;
+			U8 alpha_mode = 1;
 			LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue( &alpha_get_func, alpha_mode);
 			
 			{
@@ -843,13 +798,10 @@ void LLPanelFace::getState()
 
 				if (combobox_alphamode)
 				{
-                    // Should never want to reflect something other than the correct state
-                    // if it's supposed to be set to NONE, that should be enforced elsewhere
-                    //
-					//if (!mIsAlpha)
-					//{
-					//	alpha_mode = LLMaterial::DIFFUSE_ALPHA_MODE_NONE;
-					//}
+					if (!mIsAlpha)
+					{
+						alpha_mode = LLMaterial::DIFFUSE_ALPHA_MODE_NONE;
+					}
 					
 					combobox_alphamode->selectNthItem(alpha_mode);
 				}
@@ -1823,18 +1775,9 @@ void LLPanelFace::updateMaterial()
 	bool identical_texgen = LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue( &func, selected_texgen );
 	bool identical_planar_texgen = (identical_texgen && (selected_texgen == LLTextureEntry::TEX_GEN_PLANAR));
 
-    LLUUID norm_map_id = getChild<LLTextureCtrl>("bumpytexture control")->getImageAssetID();
-    LLUUID spec_map_id = getChild<LLTextureCtrl>("shinytexture control")->getImageAssetID();
-
-    bool doing_diffuse_alpha = (alpha_mode != LLMaterial::DIFFUSE_ALPHA_MODE_NONE);
-    bool doing_bumps = (bumpiness == BUMPY_TEXTURE) || !norm_map_id.isNull();
-    bool doing_shiny = (shininess == SHINY_TEXTURE) || !spec_map_id.isNull();
-    
-    doing_diffuse_alpha = doing_diffuse_alpha && mIsAlpha;
-    
-	if (doing_diffuse_alpha
-		|| doing_bumps
-		|| doing_shiny)
+	if ((mIsAlpha && (alpha_mode != LLMaterial::DIFFUSE_ALPHA_MODE_BLEND))
+		|| (bumpiness == BUMPY_TEXTURE)
+		|| (shininess == SHINY_TEXTURE))
 	{
 		// The user's specified something that needs a material.
 		bool new_material = false;
@@ -1843,10 +1786,11 @@ void LLPanelFace::updateMaterial()
 			new_material = true;
 			mMaterial = LLMaterialPtr(new LLMaterial());
 		}
-  
-		mMaterial->setDiffuseAlphaMode(alpha_mode);
+
+		mMaterial->setDiffuseAlphaMode(getChild<LLComboBox>("combobox alphamode")->getCurrentIndex());
 		mMaterial->setAlphaMaskCutoff((U8)(getChild<LLUICtrl>("maskcutoff")->getValue().asInteger()));
-      
+
+		LLUUID norm_map_id = getChild<LLTextureCtrl>("bumpytexture control")->getImageAssetID();
 		if (!norm_map_id.isNull())
 		{
 			LL_DEBUGS("Materials") << "Setting bumpy texture, bumpiness = " << bumpiness  << LL_ENDL;
@@ -1874,6 +1818,8 @@ void LLPanelFace::updateMaterial()
 			mMaterial->setNormalRepeat(1.0f,1.0f);
 			mMaterial->setNormalRotation(0.0f);
 		}
+        
+		LLUUID spec_map_id = getChild<LLTextureCtrl>("shinytexture control")->getImageAssetID();
 
 		if (!spec_map_id.isNull())
 		{
-- 
cgit v1.2.3


From a9f3e6d95c03a469ac6b88e8d0ed4034cb978d88 Mon Sep 17 00:00:00 2001
From: Graham Madarasz <graham@lindenlab.com>
Date: Tue, 16 Apr 2013 12:50:45 -0700
Subject: See if we can run with no ifdefs in alpha shaders on all platforms

---
 .../shaders/class1/deferred/alphaF.glsl            | 16 +++-------
 .../shaders/class1/deferred/alphaNonIndexedF.glsl  | 17 ++++------
 .../shaders/class2/deferred/alphaF.glsl            | 12 ++-----
 .../shaders/class2/deferred/alphaNonIndexedF.glsl  | 11 ++-----
 .../class2/deferred/alphaNonIndexedNoColorF.glsl   | 14 +++-----
 indra/newview/lldrawpoolavatar.cpp                 |  4 ---
 indra/newview/llviewershadermgr.cpp                | 37 ----------------------
 indra/newview/llviewershadermgr.h                  |  3 --
 8 files changed, 20 insertions(+), 94 deletions(-)

diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
index eff94b143a..4942abbadf 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
@@ -60,13 +60,13 @@ uniform vec3 light_diffuse[8];
 
 uniform float shadow_offset;
 
-float calcDirectionalLight(vec3 n, vec3 l)
+vec3 calcDirectionalLight(vec3 n, vec3 l)
 {
         float a = pow(max(dot(n,l),0.0), 0.7);
-        return a;
+        return vec3(a,a,a);
 }
 
-float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight)
+vec3 calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight)
 {
 	//get light vector
 	vec3 lv = lp.xyz-v;
@@ -93,7 +93,7 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa
 		da *= max(pow(dot(n, lv), 0.7), 0.0);		
 	}
 
-	return da;	
+	return vec3(da,da,da);	
 }
 
 void main() 
@@ -118,7 +118,6 @@ void main()
 	color.rgb = scaleSoftClip(color.rgb);
 	vec3 light_col = vec3(0,0,0);
 
-#if MAC_GEFORCE_HACK
    #define LIGHT_LOOP(i) \
 	light_col += light_diffuse[i].rgb * calcPointLightOrSpotLight(pos.xyz, vary_norm, light_position[i], light_direction[i], light_attenuation[i].x, light_attenuation[i].y, light_attenuation[i].z);
 
@@ -129,12 +128,7 @@ void main()
 	LIGHT_LOOP(5)
 	LIGHT_LOOP(6)
 	LIGHT_LOOP(7)
-#else
-	for (int i = 2; i < 8; i++)
-	{
-		light_col += light_diffuse[i].rgb * calcPointLightOrSpotLight(pos.xyz, vary_norm, light_position[i], light_direction[i], light_attenuation[i].x, light_attenuation[i].y, light_attenuation[i].z);
-	}
-#endif
+
 	color.rgb += diff.rgb * vary_pointlight_col * light_col;
 
 	frag_color = color;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl
index e872dadcc1..cccc7275ab 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl
@@ -56,13 +56,13 @@ uniform vec3 light_direction[8];
 uniform vec3 light_attenuation[8]; 
 uniform vec3 light_diffuse[8];
 
-float calcDirectionalLight(vec3 n, vec3 l)
+vec3 calcDirectionalLight(vec3 n, vec3 l)
 {
         float a = pow(max(dot(n,l),0.0), 0.7);
-        return a;
+        return vec3(a,a,a);
 }
 
-float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight)
+vec3 calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight)
 {
 	//get light vector
 	vec3 lv = lp.xyz-v;
@@ -89,7 +89,7 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa
 		da *= max(pow(dot(n, lv), 0.7), 0.0);		
 	}
 
-	return da;	
+	return vec3(da,da,da);	
 }
 
 vec4 getPosition(vec2 pos_screen)
@@ -126,7 +126,7 @@ void main()
 
 	color.rgb = scaleSoftClip(color.rgb);
 	vec3 light_col = vec3(0,0,0);
-#if MAC_GEFORCE_HACK
+
   #define LIGHT_LOOP(i) \
 	light_col += light_diffuse[i].rgb * calcPointLightOrSpotLight(pos.xyz, vary_norm, light_position[i], light_direction[i], light_attenuation[i].x, light_attenuation[i].y, light_attenuation[i].z);
 
@@ -137,12 +137,7 @@ void main()
 	LIGHT_LOOP(5)
 	LIGHT_LOOP(6)
 	LIGHT_LOOP(7)
-#else
-	for (int i = 2; i < 8; i++)
-	{
-		light_col += light_diffuse[i].rgb * calcPointLightOrSpotLight(pos.xyz, vary_norm, light_position[i], light_direction[i], light_attenuation[i].x, light_attenuation[i].y, light_attenuation[i].z);
-	}
-#endif
+
 	color.rgb += diff.rgb * vary_pointlight_col * light_col;
 
 	frag_color = color;
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
index 1a25ea97b7..b71b8c0dfc 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
@@ -70,7 +70,7 @@ vec3 calcDirectionalLight(vec3 n, vec3 l)
         return vec3(a,a,a);
 }
 
-float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight)
+vec3 calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight)
 {
 	//get light vector
 	vec3 lv = lp.xyz-v;
@@ -97,7 +97,7 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa
 		da *= max(pow(dot(n, lv), 0.7), 0.0);		
 	}
 
-	return da;	
+	return vec3(da,da,da);	
 }
 
 float pcfShadow(sampler2DShadow shadowMap, vec4 stc)
@@ -203,7 +203,6 @@ void main()
 	color.rgb = scaleSoftClip(color.rgb);
 	vec3 light_col = vec3(0,0,0);
 
-#if MAC_GEFORCE_HACK
   #define LIGHT_LOOP(i) \
 		light_col += light_diffuse[i].rgb * calcPointLightOrSpotLight(pos.xyz, vary_norm, light_position[i], light_direction[i], light_attenuation[i].x, light_attenuation[i].y, light_attenuation[i].z);
 		
@@ -214,12 +213,7 @@ void main()
 	LIGHT_LOOP(5)
 	LIGHT_LOOP(6)
 	LIGHT_LOOP(7)
-#else
-	for (int i = 2; i < 8; i++)
-	{
-		light_col += light_diffuse[i].rgb * calcPointLightOrSpotLight(pos.xyz, vary_norm, light_position[i], light_direction[i], light_attenuation[i].x, light_attenuation[i].y, light_attenuation[i].z);
-	}
-#endif
+
 	color.rgb += diff.rgb * vary_pointlight_col * light_col;
 
 	frag_color = color;
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl
index 39a5a9894d..9670d59399 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl
@@ -70,7 +70,7 @@ vec3 calcDirectionalLight(vec3 n, vec3 l)
         return vec3(a,a,a);
 }
 
-float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight)
+vec3 calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight)
 {
 	//get light vector
 	vec3 lv = lp.xyz-v;
@@ -97,7 +97,7 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa
 		da *= max(pow(dot(n, lv), 0.7), 0.0);		
 	}
 
-	return da;	
+	return vec3(da,da,da);	
 }
 
 vec4 getPosition(vec2 pos_screen)
@@ -217,7 +217,6 @@ void main()
 	color.rgb = scaleSoftClip(color.rgb);
 	vec3 light_col = vec3(0,0,0);
 
-#if MAC_GEFORCE_HACK
   #define LIGHT_LOOP(i) \
 		light_col += light_diffuse[i].rgb * calcPointLightOrSpotLight(pos.xyz, vary_norm, light_position[i], light_direction[i], light_attenuation[i].x, light_attenuation[i].y, light_attenuation[i].z);
 
@@ -228,12 +227,6 @@ void main()
 	LIGHT_LOOP(5)
 	LIGHT_LOOP(6)
 	LIGHT_LOOP(7)
-#else
-	for (int i = 2; i < 8; i++)
-	{
-		light_col += light_diffuse[i].rgb * calcPointLightOrSpotLight(pos.xyz, vary_norm, light_position[i], light_direction[i], light_attenuation[i].x, light_attenuation[i].y, light_attenuation[i].z);
-	}
-#endif
 
 	color.rgb += diff.rgb * vary_pointlight_col * light_col;
 
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl
index 566aefea6a..fae279fba0 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl
@@ -72,7 +72,7 @@ vec3 calcDirectionalLight(vec3 n, vec3 l)
         return vec3(a, a, a);
 }
 
-float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight)
+vec3 calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight)
 {
 	//get light vector
 	vec3 lv = lp.xyz-v;
@@ -99,7 +99,7 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa
 		da *= max(pow(dot(n, lv), 0.7), 0.0);		
 	}
 
-	return da;	
+	return vec3(da,da,da);	
 }
 
 vec4 getPosition(vec2 pos_screen)
@@ -224,8 +224,7 @@ void main()
 	color.rgb = scaleSoftClip(color.rgb);
 	vec3 light_col = vec3(0,0,0);
 
-#if MAC_GEFORCE_HACK
-  #define LIGHT_LOOP(i)
+  #define LIGHT_LOOP(i) \
 		light_col += light_diffuse[i].rgb * calcPointLightOrSpotLight(pos.xyz, vary_norm, light_position[i], light_direction[i], light_attenuation[i].x, light_attenuation[i].y, light_attenuation[i].z);
 
 	LIGHT_LOOP(1)
@@ -235,12 +234,7 @@ void main()
 	LIGHT_LOOP(5)
 	LIGHT_LOOP(6)
 	LIGHT_LOOP(7)
-#else
-	for (int i = 2; i < 8; i++)
-	{
-		light_col += light_diffuse[i].rgb * calcPointLightOrSpotLight(pos.xyz, vary_norm, light_position[i], light_direction[i], light_attenuation[i].x, light_attenuation[i].y, light_attenuation[i].z);
-	}
-#endif
+
 	color.rgb += diff.rgb * vary_pointlight_col * light_col;
 
 	frag_color = color;
diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp
index 0ceb7c6c45..aa5687f338 100644
--- a/indra/newview/lldrawpoolavatar.cpp
+++ b/indra/newview/lldrawpoolavatar.cpp
@@ -274,11 +274,7 @@ void LLDrawPoolAvatar::beginPostDeferredAlpha()
 
 void LLDrawPoolAvatar::beginDeferredRiggedAlpha()
 {
-#if LL_DARWIN
-	sVertexProgram = gGLManager.mIsMobileGF ? &gDeferredSkinnedAlphaProgramMac : &gDeferredSkinnedAlphaProgram;
-#else
 	sVertexProgram = &gDeferredSkinnedAlphaProgram;
-#endif
 	gPipeline.bindDeferredShader(*sVertexProgram);
 	sDiffuseChannel = sVertexProgram->enableTexture(LLViewerShaderMgr::DIFFUSE_MAP);
 	gPipeline.enableLightsDynamic();
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
index 94e41a8953..722e4d2ee6 100644
--- a/indra/newview/llviewershadermgr.cpp
+++ b/indra/newview/llviewershadermgr.cpp
@@ -175,9 +175,6 @@ LLGLSLShader			gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram;
 LLGLSLShader			gDeferredSkinnedDiffuseProgram;
 LLGLSLShader			gDeferredSkinnedBumpProgram;
 LLGLSLShader			gDeferredSkinnedAlphaProgram;
-#if LL_DARWIN
-LLGLSLShader			gDeferredSkinnedAlphaProgramMac;
-#endif
 LLGLSLShader			gDeferredBumpProgram;
 LLGLSLShader			gDeferredTerrainProgram;
 LLGLSLShader			gDeferredTreeProgram;
@@ -279,9 +276,6 @@ LLViewerShaderMgr::LLViewerShaderMgr() :
 	mShaderList.push_back(&gDeferredSoftenProgram);
 	mShaderList.push_back(&gDeferredAlphaProgram);
 	mShaderList.push_back(&gDeferredSkinnedAlphaProgram);
-#if LL_DARWIN
-	mShaderList.push_back(&gDeferredSkinnedAlphaProgramMac);
-#endif
 	mShaderList.push_back(&gDeferredFullbrightProgram);
 	mShaderList.push_back(&gDeferredEmissiveProgram);
 	mShaderList.push_back(&gDeferredAvatarEyesProgram);
@@ -1088,9 +1082,6 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
 		gDeferredSkinnedDiffuseProgram.unload();
 		gDeferredSkinnedBumpProgram.unload();
 		gDeferredSkinnedAlphaProgram.unload();
-#if LL_DARWIN
-		gDeferredSkinnedAlphaProgramMac.unload();
-#endif
 		gDeferredBumpProgram.unload();
 		gDeferredImpostorProgram.unload();
 		gDeferredTerrainProgram.unload();
@@ -1221,7 +1212,6 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
 		gDeferredSkinnedAlphaProgram.mShaderFiles.push_back(make_pair("deferred/alphaSkinnedV.glsl", GL_VERTEX_SHADER_ARB));
 		gDeferredSkinnedAlphaProgram.mShaderFiles.push_back(make_pair("deferred/alphaNonIndexedF.glsl", GL_FRAGMENT_SHADER_ARB));
 		gDeferredSkinnedAlphaProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
-		gDeferredSkinnedAlphaProgram.addPermutation("MAC_GEFORCE_HACK","0");
 		success = gDeferredSkinnedAlphaProgram.createShader(NULL, NULL);
 		
 		// Hack to include uniforms for lighting without linking in lighting file
@@ -1229,33 +1219,6 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
 		gDeferredSkinnedAlphaProgram.mFeatures.hasLighting = true;
 	}
 
-#if LL_DARWIN
-	if (success)
-	{
-		gDeferredSkinnedAlphaProgramMac.mName = "Deferred Skinned Alpha Shader";
-		gDeferredSkinnedAlphaProgramMac.mFeatures.atmosphericHelpers = true;
-		gDeferredSkinnedAlphaProgramMac.mFeatures.hasObjectSkinning = true;
-		gDeferredSkinnedAlphaProgramMac.mFeatures.calculatesAtmospherics = true;
-		gDeferredSkinnedAlphaProgramMac.mFeatures.hasGamma = true;
-		gDeferredSkinnedAlphaProgramMac.mFeatures.hasAtmospherics = true;
-		gDeferredSkinnedAlphaProgramMac.mFeatures.calculatesLighting = false;
-		gDeferredSkinnedAlphaProgramMac.mFeatures.hasLighting = false;
-		gDeferredSkinnedAlphaProgramMac.mFeatures.isAlphaLighting = true;
-		gDeferredSkinnedAlphaProgramMac.mFeatures.disableTextureIndex = true;
-		gDeferredSkinnedAlphaProgramMac.mShaderFiles.clear();
-		gDeferredSkinnedAlphaProgramMac.mShaderFiles.push_back(make_pair("deferred/alphaSkinnedV.glsl", GL_VERTEX_SHADER_ARB));
-		gDeferredSkinnedAlphaProgramMac.mShaderFiles.push_back(make_pair("deferred/alphaNonIndexedF.glsl", GL_FRAGMENT_SHADER_ARB));
-		gDeferredSkinnedAlphaProgramMac.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
-		gDeferredSkinnedAlphaProgramMac.addPermutation("MAC_GEFORCE_HACK","1");
-		
-		success = gDeferredSkinnedAlphaProgramMac.createShader(NULL, NULL);
-		
-		// Hack to include uniforms for lighting without linking in lighting file
-		gDeferredSkinnedAlphaProgramMac.mFeatures.calculatesLighting = true;
-		gDeferredSkinnedAlphaProgramMac.mFeatures.hasLighting = true;
-	}
-#endif
-
 	if (success)
 	{
 		gDeferredBumpProgram.mName = "Deferred Bump Shader";
diff --git a/indra/newview/llviewershadermgr.h b/indra/newview/llviewershadermgr.h
index 38310ed7cf..e9283d8bad 100644
--- a/indra/newview/llviewershadermgr.h
+++ b/indra/newview/llviewershadermgr.h
@@ -331,9 +331,6 @@ extern LLGLSLShader			gDeferredNonIndexedDiffuseProgram;
 extern LLGLSLShader			gDeferredSkinnedDiffuseProgram;
 extern LLGLSLShader			gDeferredSkinnedBumpProgram;
 extern LLGLSLShader			gDeferredSkinnedAlphaProgram;
-#if LL_DARWIN
-extern LLGLSLShader			gDeferredSkinnedAlphaProgramMac;
-#endif
 extern LLGLSLShader			gDeferredBumpProgram;
 extern LLGLSLShader			gDeferredTerrainProgram;
 extern LLGLSLShader			gDeferredTreeProgram;
-- 
cgit v1.2.3


From 70dbb7a59c69c6482c451b4c75aba85f0f0a647a Mon Sep 17 00:00:00 2001
From: Graham Madarasz <graham@lindenlab.com>
Date: Tue, 16 Apr 2013 17:24:51 -0700
Subject: NORSPEC-127 work-around crasher by forcing simple faces into simple
 pass

---
 indra/newview/llspatialpartition.h | 2 +-
 indra/newview/llvovolume.cpp       | 8 ++++++--
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/indra/newview/llspatialpartition.h b/indra/newview/llspatialpartition.h
index 426eaa1ce4..7c0be549df 100644
--- a/indra/newview/llspatialpartition.h
+++ b/indra/newview/llspatialpartition.h
@@ -750,7 +750,7 @@ class LLVolumeGeometryManager: public LLGeometryManager
 	virtual void rebuildGeom(LLSpatialGroup* group);
 	virtual void rebuildMesh(LLSpatialGroup* group);
 	virtual void getGeometry(LLSpatialGroup* group);
-	void genDrawInfo(LLSpatialGroup* group, U32 mask, std::vector<LLFace*>& faces, BOOL distance_sort = FALSE, BOOL batch_textures = FALSE);
+	void genDrawInfo(LLSpatialGroup* group, U32 mask, std::vector<LLFace*>& faces, BOOL distance_sort = FALSE, BOOL batch_textures = FALSE, BOOL no_materials = FALSE);
 	void registerFace(LLSpatialGroup* group, LLFace* facep, U32 type);
 };
 
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index f77869ee91..27565a8d17 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -4775,7 +4775,7 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
 		fullbright_mask = fullbright_mask | LLVertexBuffer::MAP_TEXTURE_INDEX;
 	}
 
-	genDrawInfo(group, simple_mask | LLVertexBuffer::MAP_TEXTURE_INDEX, simple_faces, FALSE, batch_textures);
+	genDrawInfo(group, simple_mask | LLVertexBuffer::MAP_TEXTURE_INDEX, simple_faces, FALSE, batch_textures, TRUE);
 	genDrawInfo(group, fullbright_mask | LLVertexBuffer::MAP_TEXTURE_INDEX, fullbright_faces, FALSE, batch_textures);
 	genDrawInfo(group, alpha_mask | LLVertexBuffer::MAP_TEXTURE_INDEX, alpha_faces, TRUE, batch_textures);
 	genDrawInfo(group, bump_mask | LLVertexBuffer::MAP_TEXTURE_INDEX, bump_faces, FALSE, FALSE);
@@ -4954,7 +4954,7 @@ static LLFastTimer::DeclareTimer FTM_GEN_DRAW_INFO_RESIZE_VB("Resize VB");
 
 
 
-void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::vector<LLFace*>& faces, BOOL distance_sort, BOOL batch_textures)
+void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::vector<LLFace*>& faces, BOOL distance_sort, BOOL batch_textures, BOOL no_materials)
 {
 	LLFastTimer t(FTM_REBUILD_VOLUME_GEN_DRAW_INFO);
 
@@ -5259,6 +5259,10 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::
 						registerFace(group, facep, LLRenderPass::PASS_FULLBRIGHT);
 					}
 				}
+				else if (no_materials)
+				{
+					registerFace(group, facep, LLRenderPass::PASS_SIMPLE);
+				}
 				else
 				{
 					U32 pass[] = 
-- 
cgit v1.2.3


From 119c0a35f15d0f82ebf99507300357609769520b Mon Sep 17 00:00:00 2001
From: Graham Madarasz <graham@lindenlab.com>
Date: Tue, 16 Apr 2013 18:07:25 -0700
Subject: NORSPEC-59 fix? for mac crasher

---
 indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl | 6 +++---
 indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl | 6 +++---
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
index fc628e60cf..8c9fe95590 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
@@ -152,10 +152,10 @@ void main()
 	color.rgb = atmosLighting(color.rgb);
 
 	color.rgb = scaleSoftClip(color.rgb);
-	vec3 light_col = vec3(0,0,0);
+	col = vec3(0,0,0);
 
    #define LIGHT_LOOP(i) \
-	light_col += light_diffuse[i].rgb * calcPointLightOrSpotLight(pos.xyz, vary_norm, light_position[i], light_direction[i], light_attenuation[i].x, light_attenuation[i].y, light_attenuation[i].z);
+	col += light_diffuse[i].rgb * calcPointLightOrSpotLight(pos.xyz, vary_norm, light_position[i], light_direction[i], light_attenuation[i].x, light_attenuation[i].y, light_attenuation[i].z);
 
 	LIGHT_LOOP(1)
 	LIGHT_LOOP(2)
@@ -165,7 +165,7 @@ void main()
 	LIGHT_LOOP(6)
 	LIGHT_LOOP(7)
 
-	color.rgb += diff.rgb * vary_pointlight_col * light_col;
+	color.rgb += diff.rgb * vary_pointlight_col * col;
 
 	frag_color = color;
 }
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
index 42467a1b60..e55023c384 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
@@ -240,10 +240,10 @@ void main()
 	color.rgb = atmosLighting(color.rgb);
 
 	color.rgb = scaleSoftClip(color.rgb);
-	vec3 light_col = vec3(0,0,0);
+	col = vec3(0,0,0);
 
   #define LIGHT_LOOP(i) \
-		light_col += light_diffuse[i].rgb * calcPointLightOrSpotLight(pos.xyz, vary_norm, light_position[i], light_direction[i], light_attenuation[i].x, light_attenuation[i].y, light_attenuation[i].z);
+		col += light_diffuse[i].rgb * calcPointLightOrSpotLight(pos.xyz, vary_norm, light_position[i], light_direction[i], light_attenuation[i].x, light_attenuation[i].y, light_attenuation[i].z);
 		
 	LIGHT_LOOP(1)
 	LIGHT_LOOP(2)
@@ -253,7 +253,7 @@ void main()
 	LIGHT_LOOP(6)
 	LIGHT_LOOP(7)
 
-	color.rgb += diff.rgb * vary_pointlight_col * light_col;
+	color.rgb += diff.rgb * vary_pointlight_col * col;
 
 	frag_color = color;
 }
-- 
cgit v1.2.3


From e40bcc4e16c8baeb3945e89c5d035d89416896e3 Mon Sep 17 00:00:00 2001
From: Graham Madarasz <graham@lindenlab.com>
Date: Wed, 17 Apr 2013 09:05:40 -0700
Subject: NORSPEC-59 and NORSPEC-133 work-around crash with RenderDebugGL on
 and fix breakage in shaders from Mac changes

---
 indra/llrender/llvertexbuffer.cpp                   |  2 +-
 indra/newview/app_settings/settings.xml             |  2 +-
 .../shaders/class1/deferred/alphaF.glsl             |  9 ++++-----
 .../shaders/class2/deferred/alphaF.glsl             | 19 ++++++++-----------
 indra/newview/lldrawpoolalpha.cpp                   | 21 +++++++--------------
 5 files changed, 21 insertions(+), 32 deletions(-)

diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp
index 6108c6f821..dc6e158034 100644
--- a/indra/llrender/llvertexbuffer.cpp
+++ b/indra/llrender/llvertexbuffer.cpp
@@ -2223,7 +2223,7 @@ void LLVertexBuffer::setBuffer(U32 data_mask)
 
 			if ((data_mask & required_mask) != required_mask)
 			{
-				llerrs << "Shader consumption mismatches data provision." << llendl;
+				llwarns << "Shader consumption mismatches data provision." << llendl;
 			}
 		}
 	}
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index eb5c9cc5c0..84b2bde206 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -8072,7 +8072,7 @@
       <key>Type</key>
       <string>Boolean</string>
       <key>Value</key>
-      <integer>0</integer>
+      <integer>1</integer>
     </map>
   <key>RenderDebugNormalScale</key>
   <map>
diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
index 8c9fe95590..e8cbf318a1 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
@@ -136,8 +136,7 @@ void main()
 	float vertex_color_alpha = vertex_color.a;
 #endif
 	
-	vec3 normal = vary_norm;
-	normal = texture2D(bumpMap, vary_texcoord1.xy).xyz * 2 - 1;
+	vec3 normal = texture2D(bumpMap, vary_texcoord1.xy).xyz * 2 - 1;
 	normal = vec3(dot(normal.xyz, vary_rotation[0]),
 				dot(normal.xyz, vary_rotation[1]),
 				dot(normal.xyz, vary_rotation[2]));
@@ -152,10 +151,10 @@ void main()
 	color.rgb = atmosLighting(color.rgb);
 
 	color.rgb = scaleSoftClip(color.rgb);
-	col = vec3(0,0,0);
+	col = vec4(0,0,0,0);
 
    #define LIGHT_LOOP(i) \
-	col += light_diffuse[i].rgb * calcPointLightOrSpotLight(pos.xyz, vary_norm, light_position[i], light_direction[i], light_attenuation[i].x, light_attenuation[i].y, light_attenuation[i].z);
+	col.rgb += light_diffuse[i].rgb * calcPointLightOrSpotLight(pos.xyz, normal, light_position[i], light_direction[i].xyz, light_attenuation[i].x, light_attenuation[i].y, light_attenuation[i].z);
 
 	LIGHT_LOOP(1)
 	LIGHT_LOOP(2)
@@ -165,7 +164,7 @@ void main()
 	LIGHT_LOOP(6)
 	LIGHT_LOOP(7)
 
-	color.rgb += diff.rgb * vary_pointlight_col * col;
+	color.rgb += diff.rgb * vary_pointlight_col * col.rgb;
 
 	frag_color = color;
 }
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
index e55023c384..69bcca88b5 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
@@ -68,7 +68,6 @@ VARYING vec4 vertex_color;
 
 uniform mat4 shadow_matrix[6];
 uniform vec4 shadow_clip;
-uniform vec2 shadow_res;
 uniform float shadow_bias;
 
 uniform mat4 inv_proj;
@@ -210,11 +209,11 @@ void main()
 		shadow = 1.0;
 	}
 
-#if INDEX_MODE == INDEXED
-	
-	vec4 diff = diffuseLookup(vary_texcoord0.xy);
+	vec4 diff;
+#if INDEX_MODE == INDEXED	
+	diff = diffuseLookup(vary_texcoord0.xy);
 #else
-	vec4 diff = texture2D(diffuseMap,vary_texcoord0.xy);
+	diff = texture2D(diffuseMap,vary_texcoord0.xy);
 #endif
 	
 #if INDEX_MODE == NON_INDEXED_NO_COLOR
@@ -223,8 +222,7 @@ void main()
 	float vertex_color_alpha = vertex_color.a;
 #endif
 
-	vec3 normal = vary_norm;
-	normal = texture2D(bumpMap, vary_texcoord1.xy).xyz * 2 - 1;
+	vec3 normal = texture2D(bumpMap, vary_texcoord1.xy).xyz * 2 - 1;
 	normal = vec3(dot(normal.xyz, vary_rotation[0]),
 				dot(normal.xyz, vary_rotation[1]),
 				dot(normal.xyz, vary_rotation[2]));
@@ -232,7 +230,6 @@ void main()
 	vec3 l = light_position[0].xyz;
 	vec3 dlight = calcDirectionalLight(normal, l);
 	     dlight = dlight * vary_directional.rgb * vary_pointlight_col;
-	vec4 diff = diffuseLookup(vary_texcoord0.xy);
 
 	vec4 col = vec4(vary_ambient + dlight *shadow, vertex_color_alpha);
 	vec4 color = diff * col;
@@ -240,10 +237,10 @@ void main()
 	color.rgb = atmosLighting(color.rgb);
 
 	color.rgb = scaleSoftClip(color.rgb);
-	col = vec3(0,0,0);
+	col = vec4(0,0,0,0);
 
   #define LIGHT_LOOP(i) \
-		col += light_diffuse[i].rgb * calcPointLightOrSpotLight(pos.xyz, vary_norm, light_position[i], light_direction[i], light_attenuation[i].x, light_attenuation[i].y, light_attenuation[i].z);
+		col.rgb += light_diffuse[i].rgb * calcPointLightOrSpotLight(pos.xyz, normal, light_position[i], light_direction[i].xyz, light_attenuation[i].x, light_attenuation[i].y, light_attenuation[i].z);
 		
 	LIGHT_LOOP(1)
 	LIGHT_LOOP(2)
@@ -253,7 +250,7 @@ void main()
 	LIGHT_LOOP(6)
 	LIGHT_LOOP(7)
 
-	color.rgb += diff.rgb * vary_pointlight_col * col;
+	color.rgb += diff.rgb * vary_pointlight_col * col.rgb;
 
 	frag_color = color;
 }
diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp
index 31b84bb258..f65bbc9799 100644
--- a/indra/newview/lldrawpoolalpha.cpp
+++ b/indra/newview/lldrawpoolalpha.cpp
@@ -515,21 +515,14 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask)
 							current_shader->bindTexture(LLShaderMgr::SPECULAR_MAP, LLViewerFetchedTexture::sWhiteImagep);
 						}
 					}
-				} else if (current_shader == simple_shader)
+				} else if (LLPipeline::sRenderDeferred && current_shader && (current_shader == simple_shader))
 				{
-					// No material.  Propegate with default parameters.
-					if (LLPipeline::sRenderDeferred)
-					{
-						current_shader->uniform4f(LLShaderMgr::SPECULAR_COLOR, 0.0f, 0.0f, 0.0f, 0.0f);
-						
-						current_shader->uniform1f(LLShaderMgr::ENVIRONMENT_INTENSITY, 0.0f);
-						
-						LLViewerFetchedTexture::sFlatNormalImagep->addTextureStats(params.mVSize);
-						current_shader->bindTexture(LLShaderMgr::BUMP_MAP, LLViewerFetchedTexture::sFlatNormalImagep);
-						
-						LLViewerFetchedTexture::sWhiteImagep->addTextureStats(params.mVSize);
-						current_shader->bindTexture(LLShaderMgr::SPECULAR_MAP, LLViewerFetchedTexture::sWhiteImagep);
-					}
+					current_shader->uniform4f(LLShaderMgr::SPECULAR_COLOR, 1.0f, 1.0f, 1.0f, 1.0f);						
+					current_shader->uniform1f(LLShaderMgr::ENVIRONMENT_INTENSITY, 0.0f);			
+					LLViewerFetchedTexture::sFlatNormalImagep->addTextureStats(params.mVSize);
+					current_shader->bindTexture(LLShaderMgr::BUMP_MAP, LLViewerFetchedTexture::sFlatNormalImagep);						
+					LLViewerFetchedTexture::sWhiteImagep->addTextureStats(params.mVSize);
+					current_shader->bindTexture(LLShaderMgr::SPECULAR_MAP, LLViewerFetchedTexture::sWhiteImagep);
 				}
 
 				if (params.mGroup)
-- 
cgit v1.2.3


From c7b9b9e02cb771a082c33e073810791ed3158aeb Mon Sep 17 00:00:00 2001
From: Graham Madarasz <graham@lindenlab.com>
Date: Wed, 17 Apr 2013 09:19:08 -0700
Subject: NORSPEC-133 More NULL shader pointer crash suppression

---
 indra/newview/lldrawpoolalpha.cpp | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp
index f65bbc9799..70168c53c0 100644
--- a/indra/newview/lldrawpoolalpha.cpp
+++ b/indra/newview/lldrawpoolalpha.cpp
@@ -487,14 +487,13 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask)
 					current_shader = NULL;
 				}
 				
-				if (params.mMaterial.notNull() && current_shader == simple_shader)
+				if (params.mMaterial.notNull() && current_shader && (current_shader == simple_shader))
 				{
 					// I apologize in advance for not giving this its own shader.
 					// We have a material.  Supply the appropriate data here.
 					if (LLPipeline::sRenderDeferred)
 					{
-						current_shader->uniform4f(LLShaderMgr::SPECULAR_COLOR, params.mSpecColor.mV[0], params.mSpecColor.mV[1], params.mSpecColor.mV[2], params.mSpecColor.mV[3]);
-						
+						current_shader->uniform4f(LLShaderMgr::SPECULAR_COLOR, params.mSpecColor.mV[0], params.mSpecColor.mV[1], params.mSpecColor.mV[2], params.mSpecColor.mV[3]);						
 						current_shader->uniform1f(LLShaderMgr::ENVIRONMENT_INTENSITY, params.mEnvIntensity);
 						
 						if (params.mNormalMap)
@@ -515,6 +514,7 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask)
 							current_shader->bindTexture(LLShaderMgr::SPECULAR_MAP, LLViewerFetchedTexture::sWhiteImagep);
 						}
 					}
+
 				} else if (LLPipeline::sRenderDeferred && current_shader && (current_shader == simple_shader))
 				{
 					current_shader->uniform4f(LLShaderMgr::SPECULAR_COLOR, 1.0f, 1.0f, 1.0f, 1.0f);						
-- 
cgit v1.2.3


From 35ede26097161ec9ab02dd0228ae9c95fce941ee Mon Sep 17 00:00:00 2001
From: Dave Parks <davep@lindenlab.com>
Date: Wed, 17 Apr 2013 16:46:32 -0500
Subject: NORSPEC-128 Edit glossiness and environment as U8's from [0,255], as
 they are stored

---
 indra/newview/llpanelface.cpp                            |  8 ++++----
 .../newview/skins/default/xui/en/panel_tools_texture.xml | 16 +++++++++-------
 2 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp
index be88cb6ab6..2d2a0d6d0c 100644
--- a/indra/newview/llpanelface.cpp
+++ b/indra/newview/llpanelface.cpp
@@ -1720,8 +1720,8 @@ void LLPanelFace::onMaterialLoaded(const LLMaterialID& material_id, const LLMate
 		getChild<LLUICtrl>("shinyOffsetV")->setValue(offset_y);
 		getChild<LLColorSwatchCtrl>("shinycolorswatch")->setOriginal(material->getSpecularLightColor());
 		getChild<LLColorSwatchCtrl>("shinycolorswatch")->set(material->getSpecularLightColor(),TRUE);
-		getChild<LLUICtrl>("glossiness")->setValue((F32)(material->getSpecularLightExponent())/255.0);
-		getChild<LLUICtrl>("environment")->setValue((F32)(material->getEnvironmentIntensity())/255.0);
+		getChild<LLUICtrl>("glossiness")->setValue(material->getSpecularLightExponent());
+		getChild<LLUICtrl>("environment")->setValue(material->getEnvironmentIntensity());
 	}
 	updateShinyControls(combobox_shininess,this, true);
 
@@ -1844,8 +1844,8 @@ void LLPanelFace::updateMaterial()
 			if (!new_material)
 			{
 				mMaterial->setSpecularLightColor(getChild<LLColorSwatchCtrl>("shinycolorswatch")->get());
-				mMaterial->setSpecularLightExponent((U8)(255*getChild<LLUICtrl>("glossiness")->getValue().asReal()));
-				mMaterial->setEnvironmentIntensity((U8)(255*getChild<LLUICtrl>("environment")->getValue().asReal()));
+				mMaterial->setSpecularLightExponent(getChild<LLUICtrl>("glossiness")->getValue().asInteger());
+				mMaterial->setEnvironmentIntensity(getChild<LLUICtrl>("environment")->getValue().asInteger());
 			}
 		}
 		else
diff --git a/indra/newview/skins/default/xui/en/panel_tools_texture.xml b/indra/newview/skins/default/xui/en/panel_tools_texture.xml
index 5e2caa28a9..042134a8c6 100644
--- a/indra/newview/skins/default/xui/en/panel_tools_texture.xml
+++ b/indra/newview/skins/default/xui/en/panel_tools_texture.xml
@@ -392,12 +392,13 @@
                 Glossiness
             </text>
             <spinner
-             decimal_digits="3"
-             min_value="0"
-             max_value="1"
+             decimal_digits="0"
+             min_val="0"
+             max_val="255"
              follows="left|top"
              height="19"
-             initial_value="0.2"
+             initial_value="51"
+             increment="1"
              layout="topleft"
              top_delta="-4"
              left_pad="10"
@@ -417,9 +418,10 @@
                 Environment
             </text>
             <spinner
-             decimal_digits="3"
-             min_value="0"
-             max_value="1"
+             decimal_digits="0"
+             min_val="0"
+             max_val="255"
+             increment="1"
              follows="left|top"
              height="19"
              initial_value="0"
-- 
cgit v1.2.3


From fc965b3c897140ba794f0ece9ad3e943e79a0fcb Mon Sep 17 00:00:00 2001
From: Dave Parks <davep@lindenlab.com>
Date: Thu, 18 Apr 2013 00:15:18 -0500
Subject: NORSPEC-135 Fix for environment map not showing up if glossiness is
 zero.

---
 .../app_settings/shaders/class1/deferred/softenLightF.glsl   | 12 ++++++++----
 .../app_settings/shaders/class2/deferred/softenLightF.glsl   |  8 ++++++--
 2 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
index 63c819f941..4b4cb5c8ce 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
@@ -308,11 +308,13 @@ void main()
 	
 		col *= diffuse.rgb;
 	
+		vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
+
 		if (spec.a > 0.0) // specular reflection
 		{
 			// the old infinite-sky shiny reflection
 			//
-			vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
+			
 			float sa = dot(refnormpersp, sun_dir.xyz);
 			vec3 dumbshiny = vary_SunlitColor*(texture2D(lightFunc, vec2(sa, spec.a)).r);
 			
@@ -320,13 +322,15 @@ void main()
 			vec3 spec_contrib = dumbshiny * spec.rgb;
 			bloom = dot(spec_contrib, spec_contrib) / 6;
 			col += spec_contrib;
-
-			//add environmentmap
+		}
+	
+		if (envIntensity > 0.0)
+		{ //add environmentmap
 			vec3 env_vec = env_mat * refnormpersp;
 			col = mix(col.rgb, textureCube(environmentMap, env_vec).rgb, 
 				max(envIntensity-diffuse.a*2.0, 0.0)); 
 		}
-	
+
 		col = atmosLighting(col);
 		col = scaleSoftClip(col);
 
diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
index 8e638c64eb..5fb22c7f4d 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
@@ -315,11 +315,13 @@ void main()
 	
 		col *= diffuse.rgb;
 	
+		vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
+
 		if (spec.a > 0.0) // specular reflection
 		{
 			// the old infinite-sky shiny reflection
 			//
-			vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
+			
 			float sa = dot(refnormpersp, sun_dir.xyz);
 			vec3 dumbshiny = vary_SunlitColor*scol_ambocc.r*(texture2D(lightFunc, vec2(sa, spec.a)).r);
 
@@ -327,8 +329,10 @@ void main()
 			vec3 spec_contrib = dumbshiny * spec.rgb;
 			bloom = dot(spec_contrib, spec_contrib) / 6;
 			col += spec_contrib;
+		}
 
-			//add environmentmap
+		if (envIntensity > 0.0)
+		{ //add environmentmap
 			vec3 env_vec = env_mat * refnormpersp;
 			col = mix(col.rgb, textureCube(environmentMap, env_vec).rgb, 
 				max(envIntensity-diffuse.a*2.0, 0.0)); 
-- 
cgit v1.2.3


From 1a5bba865c096473164b47a56dbb0ba1e055613d Mon Sep 17 00:00:00 2001
From: Dave Parks <davep@lindenlab.com>
Date: Thu, 18 Apr 2013 18:00:56 -0500
Subject: NORSPEC-90 Cleanup of alpha pool hook ups for materials.

---
 indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl    | 5 ++---
 indra/newview/app_settings/shaders/class1/deferred/materialF.glsl | 7 ++++++-
 indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl    | 5 ++---
 indra/newview/lldrawpoolalpha.cpp                                 | 6 ++----
 indra/newview/llviewershadermgr.cpp                               | 4 +++-
 5 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
index e8cbf318a1..f63e2f7198 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
@@ -72,7 +72,6 @@ uniform vec3 light_direction[8];
 uniform vec3 light_attenuation[8]; 
 uniform vec3 light_diffuse[8];
 
-uniform sampler2D bumpMap;
 uniform samplerCube environmentMap;
 uniform mat3 env_mat;
 
@@ -125,7 +124,7 @@ void main()
 	vec4 pos = vec4(vary_position, 1.0);
 	
 #if INDEX_MODE == INDEXED
-	vec4 diff= diffuseLookup(vary_texcoord0.xy);
+	vec4 diff = diffuseLookup(vary_texcoord0.xy);
 #else
 	vec4 diff = texture2D(diffuseMap,vary_texcoord0.xy);
 #endif
@@ -136,7 +135,7 @@ void main()
 	float vertex_color_alpha = vertex_color.a;
 #endif
 	
-	vec3 normal = texture2D(bumpMap, vary_texcoord1.xy).xyz * 2 - 1;
+	vec3 normal = vec3(0,0,1); 
 	normal = vec3(dot(normal.xyz, vary_rotation[0]),
 				dot(normal.xyz, vary_rotation[1]),
 				dot(normal.xyz, vary_rotation[2]));
diff --git a/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl b/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl
index 79a06bed2c..9674d9e88e 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl
@@ -566,11 +566,13 @@ void main()
 	
 			col *= diffuse.rgb;
 	
+			vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
+
 			if (spec.a > 0.0) // specular reflection
 			{
 				// the old infinite-sky shiny reflection
 				//
-				vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
+				
 				float sa = dot(refnormpersp, sun_dir.xyz);
 				vec3 dumbshiny = vary_SunlitColor*shadow*(texture2D(lightFunc, vec2(sa, spec.a)).r);
 							
@@ -578,7 +580,10 @@ void main()
 				vec3 spec_contrib = dumbshiny * spec.rgb;
 				bloom = dot(spec_contrib, spec_contrib) / 6;
 				col += spec_contrib;
+			}
 
+			if (envIntensity > 0.0)
+			{
 				//add environmentmap
 				vec3 env_vec = env_mat * refnormpersp;
 				col = mix(col.rgb, textureCube(environmentMap, env_vec).rgb, 
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
index 5faa94fb03..293613e74c 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
@@ -217,7 +217,7 @@ void main()
 	float vertex_color_alpha = vertex_color.a;
 #endif
 
-	vec3 normal = texture2D(bumpMap, vary_texcoord1.xy).xyz * 2 - 1;
+	vec3 normal = vec3(0,0,1); 
 	
 	vec3 l = light_position[0].xyz;
 	vec3 dlight = calcDirectionalLight(normal, l);
@@ -244,7 +244,6 @@ void main()
 
 	color.rgb += diff.rgb * vary_pointlight_col * col.rgb;
 
-	frag_color = vec4(1,0,1,1);
-	//frag_color = color;
+	frag_color = color;
 }
 
diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp
index 3f041a3a85..1912ae0c16 100644
--- a/indra/newview/lldrawpoolalpha.cpp
+++ b/indra/newview/lldrawpoolalpha.cpp
@@ -152,8 +152,7 @@ void LLDrawPoolAlpha::beginPostDeferredPass(S32 pass)
 		gPipeline.mDeferredDepth.copyContents(gPipeline.mDeferredScreen, 0, 0, gPipeline.mDeferredScreen.getWidth(), gPipeline.mDeferredScreen.getHeight(),
 							0, 0, gPipeline.mDeferredDepth.getWidth(), gPipeline.mDeferredDepth.getHeight(), GL_DEPTH_BUFFER_BIT, GL_NEAREST);	
 		gPipeline.mDeferredDepth.bindTarget();
-		simple_shader = NULL;
-		fullbright_shader = NULL;
+		simple_shader = fullbright_shader = &gObjectFullbrightAlphaMaskProgram;
 		gObjectFullbrightAlphaMaskProgram.bind();
 		gObjectFullbrightAlphaMaskProgram.setMinimumAlpha(0.33f);
 	}
@@ -504,7 +503,6 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask)
 				if(use_shaders && (current_shader != target_shader))
 				{// If we need shaders, and we're not ALREADY using the proper shader, then bind it
 				// (this way we won't rebind shaders unnecessarily).
-					llassert(target_shader != NULL);
 					current_shader = target_shader;
 					current_shader->bind();
 				}
@@ -514,7 +512,7 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask)
 					current_shader = NULL;
 				}
 				
-				if (mat && !params.mFullbright)
+				if (use_shaders && mat && !params.mFullbright)
 				{
 					// I apologize in advance for not giving this its own shader.
 					// We have a material.  Supply the appropriate data here.
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
index d30fe50ac8..2442e04a42 100644
--- a/indra/newview/llviewershadermgr.cpp
+++ b/indra/newview/llviewershadermgr.cpp
@@ -1412,8 +1412,10 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
 		gDeferredAlphaProgram.mShaderFiles.clear();
 		gDeferredAlphaProgram.mShaderFiles.push_back(make_pair("deferred/alphaV.glsl", GL_VERTEX_SHADER_ARB));
 		gDeferredAlphaProgram.mShaderFiles.push_back(make_pair("deferred/alphaF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gDeferredAlphaProgram.addPermutation("INDEX_MODE", "1");
+		gDeferredAlphaProgram.addPermutation("HAS_SKIN", "0");
+		gDeferredAlphaProgram.addPermutation("IS_AVATAR_SKIN", "0");
 		gDeferredAlphaProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
-
 		success = gDeferredAlphaProgram.createShader(NULL, NULL);
 
 		// Hack
-- 
cgit v1.2.3


From 28fcb3d54987a056b3dfe4d1d01a75339f8e6689 Mon Sep 17 00:00:00 2001
From: Dave Parks <davep@lindenlab.com>
Date: Thu, 18 Apr 2013 18:31:49 -0500
Subject: NORSPEC-90 Remove unused state from alphaF/alphaV

---
 .../app_settings/shaders/class1/deferred/alphaF.glsl  |  9 ++-------
 .../app_settings/shaders/class1/deferred/alphaV.glsl  | 19 +------------------
 .../app_settings/shaders/class2/deferred/alphaF.glsl  |  2 +-
 .../app_settings/shaders/class2/deferred/alphaV.glsl  | 18 +-----------------
 4 files changed, 5 insertions(+), 43 deletions(-)

diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
index f63e2f7198..94ce8a658a 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
@@ -56,8 +56,6 @@ VARYING vec3 vary_fragcoord;
 VARYING vec3 vary_position;
 VARYING vec3 vary_pointlight_col;
 VARYING vec2 vary_texcoord0;
-VARYING vec2 vary_texcoord1;
-VARYING vec2 vary_texcoord2;
 VARYING vec3 vary_norm;
 VARYING mat3 vary_rotation;
 
@@ -135,11 +133,8 @@ void main()
 	float vertex_color_alpha = vertex_color.a;
 #endif
 	
-	vec3 normal = vec3(0,0,1); 
-	normal = vec3(dot(normal.xyz, vary_rotation[0]),
-				dot(normal.xyz, vary_rotation[1]),
-				dot(normal.xyz, vary_rotation[2]));
-
+	vec3 normal = vary_norm; 
+	
 	vec3 l = light_position[0].xyz;
 	vec3 dlight = calcDirectionalLight(normal, l);
 	dlight = dlight * vary_directional.rgb * vary_pointlight_col;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl
index e6b63657e6..76277069d5 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl
@@ -40,9 +40,6 @@ void passTextureIndex();
 ATTRIBUTE vec3 normal;
 ATTRIBUTE vec4 diffuse_color;
 ATTRIBUTE vec2 texcoord0;
-ATTRIBUTE vec3 binormal;
-ATTRIBUTE vec2 texcoord1;
-ATTRIBUTE vec2 texcoord2;
 
 #if HAS_SKIN
 mat4 getObjectSkinnedTransform();
@@ -71,11 +68,8 @@ VARYING vec4 vertex_color;
 #endif
 
 VARYING vec2 vary_texcoord0;
-VARYING vec2 vary_texcoord1;
-VARYING vec2 vary_texcoord2;
 
 VARYING vec3 vary_norm;
-VARYING mat3 vary_rotation;
 
 uniform float near_clip;
 uniform float shadow_offset;
@@ -159,8 +153,7 @@ void main()
 	pos = (modelview_matrix * vert);
 	gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
 #endif
-	vary_texcoord1 = (texture_matrix0 * vec4(texcoord1,0,1)).xy;
-	vary_texcoord2 = (texture_matrix0 * vec4(texcoord2,0,1)).xy;
+	
 #if INDEX_MODE == INDEXED
 	passTextureIndex();
 	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
@@ -169,17 +162,7 @@ void main()
 #endif
 	
 	vary_norm = norm;
-	float dp_directional_light = max(0.0, dot(norm, light_position[0].xyz));
-	vary_position = pos.xyz + light_position[0].xyz * (1.0-dp_directional_light)*shadow_offset;
 	
-	vec3 n = norm;
-	vec3 b = normalize(normal_matrix * binormal);
-	vec3 t = cross(b, n);
-
-	vary_rotation[0] = vec3(t.x, b.x, n.x);
-	vary_rotation[1] = vec3(t.y, b.y, n.y);
-	vary_rotation[2] = vec3(t.z, b.z, n.z);
-
 	calcAtmospherics(pos.xyz);
 
 	//vec4 color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.));
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
index 293613e74c..c765962352 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
@@ -217,7 +217,7 @@ void main()
 	float vertex_color_alpha = vertex_color.a;
 #endif
 
-	vec3 normal = vec3(0,0,1); 
+	vec3 normal = vary_norm;
 	
 	vec3 l = light_position[0].xyz;
 	vec3 dlight = calcDirectionalLight(normal, l);
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl
index 5f2961c90e..63953b37bf 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl
@@ -40,10 +40,6 @@ void passTextureIndex();
 ATTRIBUTE vec3 normal;
 ATTRIBUTE vec4 diffuse_color;
 ATTRIBUTE vec2 texcoord0;
-ATTRIBUTE vec3 binormal;
-ATTRIBUTE vec2 texcoord1;
-ATTRIBUTE vec2 texcoord2;
-
 
 #if HAS_SKIN
 mat4 getObjectSkinnedTransform();
@@ -72,11 +68,8 @@ VARYING vec4 vertex_color;
 #endif
 
 VARYING vec2 vary_texcoord0;
-VARYING vec2 vary_texcoord1;
-VARYING vec2 vary_texcoord2;
 
 VARYING vec3 vary_norm;
-VARYING mat3 vary_rotation;
 
 uniform float near_clip;
 uniform float shadow_offset;
@@ -160,8 +153,7 @@ void main()
 	pos = (modelview_matrix * vert);
 	gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
 #endif
-	vary_texcoord1 = (texture_matrix0 * vec4(texcoord1,0,1)).xy;
-	vary_texcoord2 = (texture_matrix0 * vec4(texcoord2,0,1)).xy;
+	
 #if INDEX_MODE == INDEXED
 	passTextureIndex();
 	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
@@ -173,14 +165,6 @@ void main()
 	float dp_directional_light = max(0.0, dot(norm, light_position[0].xyz));
 	vary_position = pos.xyz + light_position[0].xyz * (1.0-dp_directional_light)*shadow_offset;
 	
-	vec3 n = norm;
-	vec3 b = normalize(normal_matrix * binormal);
-	vec3 t = cross(b, n);
-
-	vary_rotation[0] = vec3(t.x, b.x, n.x);
-	vary_rotation[1] = vec3(t.y, b.y, n.y);
-	vary_rotation[2] = vec3(t.z, b.z, n.z);
-
 	calcAtmospherics(pos.xyz);
 
 	//vec4 color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.));
-- 
cgit v1.2.3


From 509c35d5bae7dbd938198c3e038011932693ff36 Mon Sep 17 00:00:00 2001
From: Dave Parks <davep@lindenlab.com>
Date: Thu, 18 Apr 2013 19:21:08 -0500
Subject: NORSPEC-90 Cleanup avatar alpha shaders

---
 indra/newview/app_settings/settings.xml                 |  2 +-
 .../app_settings/shaders/class1/deferred/alphaF.glsl    | 17 -----------------
 .../app_settings/shaders/class1/deferred/alphaV.glsl    | 10 +++++++---
 .../app_settings/shaders/class2/deferred/alphaF.glsl    |  7 -------
 .../app_settings/shaders/class2/deferred/alphaV.glsl    |  6 ++++++
 indra/newview/lldrawable.cpp                            |  2 +-
 indra/newview/llviewershadermgr.cpp                     |  7 +++++--
 7 files changed, 20 insertions(+), 31 deletions(-)

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 84b2bde206..eb5c9cc5c0 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -8072,7 +8072,7 @@
       <key>Type</key>
       <string>Boolean</string>
       <key>Value</key>
-      <integer>1</integer>
+      <integer>0</integer>
     </map>
   <key>RenderDebugNormalScale</key>
   <map>
diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
index 94ce8a658a..495ed33e9e 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
@@ -35,16 +35,10 @@ out vec4 frag_color;
 #define frag_color gl_FragColor
 #endif
 
-uniform sampler2DRect depthMap;
-
 #if INDEX_MODE != INDEXED
 uniform sampler2D diffuseMap;
 #endif
 
-#if INDEX_MODE == INDEXED
-vec4 diffuseLookup(vec2 texcoord);
-#endif
-
 uniform vec2 screen_res;
 
 vec3 atmosLighting(vec3 light);
@@ -57,27 +51,16 @@ VARYING vec3 vary_position;
 VARYING vec3 vary_pointlight_col;
 VARYING vec2 vary_texcoord0;
 VARYING vec3 vary_norm;
-VARYING mat3 vary_rotation;
 
 #if INDEX_MODE != NON_INDEXED_NO_COLOR
 VARYING vec4 vertex_color;
 #endif
 
-uniform mat4 inv_proj;
-
 uniform vec4 light_position[8];
 uniform vec3 light_direction[8];
 uniform vec3 light_attenuation[8]; 
 uniform vec3 light_diffuse[8];
 
-uniform samplerCube environmentMap;
-uniform mat3 env_mat;
-
-uniform vec4 specular_color;
-
-
-uniform float shadow_offset;
-
 vec3 calcDirectionalLight(vec3 n, vec3 l)
 {
         float a = pow(max(dot(n,l),0.0), 0.7);
diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl
index 76277069d5..4c26621a88 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl
@@ -38,7 +38,9 @@ ATTRIBUTE vec3 position;
 void passTextureIndex();
 #endif
 ATTRIBUTE vec3 normal;
+#if INDEX_MODE != NON_INDEXED_NO_COLOR
 ATTRIBUTE vec4 diffuse_color;
+#endif
 ATTRIBUTE vec2 texcoord0;
 
 #if HAS_SKIN
@@ -72,8 +74,6 @@ VARYING vec2 vary_texcoord0;
 VARYING vec3 vary_norm;
 
 uniform float near_clip;
-uniform float shadow_offset;
-uniform float shadow_bias;
 
 uniform vec4 light_position[8];
 uniform vec3 light_direction[8];
@@ -162,9 +162,13 @@ void main()
 #endif
 	
 	vary_norm = norm;
-	
+	vary_position = pos.xyz;
+
 	calcAtmospherics(pos.xyz);
 
+#if INDEX_MODE == NON_INDEXED_NO_COLOR
+	vec4 diffuse_color = vec4(1,1,1,1);
+#endif
 	//vec4 color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.));
 	vec4 col = vec4(0.0, 0.0, 0.0, diffuse_color.a);
 	
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
index c765962352..76a045a3bb 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
@@ -56,10 +56,7 @@ VARYING vec3 vary_fragcoord;
 VARYING vec3 vary_position;
 VARYING vec3 vary_pointlight_col;
 VARYING vec2 vary_texcoord0;
-VARYING vec2 vary_texcoord1;
-VARYING vec2 vary_texcoord2;
 VARYING vec3 vary_norm;
-VARYING mat3 vary_rotation;
 
 #if INDEX_MODE != NON_INDEXED_NO_COLOR
 VARYING vec4 vertex_color;
@@ -69,15 +66,11 @@ uniform mat4 shadow_matrix[6];
 uniform vec4 shadow_clip;
 uniform float shadow_bias;
 
-uniform mat4 inv_proj;
-
 uniform vec4 light_position[8];
 uniform vec3 light_direction[8];
 uniform vec3 light_attenuation[8]; 
 uniform vec3 light_diffuse[8];
 
-uniform vec4 specular_color;
-
 vec3 calcDirectionalLight(vec3 n, vec3 l)
 {
         float a = pow(max(dot(n,l),0.0), 0.7);
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl
index 63953b37bf..44abbdfe54 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl
@@ -38,7 +38,9 @@ ATTRIBUTE vec3 position;
 void passTextureIndex();
 #endif
 ATTRIBUTE vec3 normal;
+#if INDEX_MODE != NON_INDEXED_NO_COLOR
 ATTRIBUTE vec4 diffuse_color;
+#endif
 ATTRIBUTE vec2 texcoord0;
 
 #if HAS_SKIN
@@ -167,6 +169,10 @@ void main()
 	
 	calcAtmospherics(pos.xyz);
 
+#if INDEX_MODE == NON_INDEXED_NO_COLOR
+	vec4 diffuse_color = vec4(1,1,1,1);
+#endif
+
 	//vec4 color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.));
 	vec4 col = vec4(0.0, 0.0, 0.0, diffuse_color.a);
 
diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp
index e9895a6e10..fe058cf094 100644
--- a/indra/newview/lldrawable.cpp
+++ b/indra/newview/lldrawable.cpp
@@ -484,7 +484,7 @@ void LLDrawable::makeActive()
 	}
 
 	llassert(isAvatar() || isRoot() || mParent->isActive());
-	}
+}
 
 
 void LLDrawable::makeStatic(BOOL warning_enabled)
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
index 2442e04a42..499f6a848c 100644
--- a/indra/newview/llviewershadermgr.cpp
+++ b/indra/newview/llviewershadermgr.cpp
@@ -1588,8 +1588,11 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
 		gDeferredAvatarAlphaProgram.mFeatures.isAlphaLighting = true;
 		gDeferredAvatarAlphaProgram.mFeatures.disableTextureIndex = true;
 		gDeferredAvatarAlphaProgram.mShaderFiles.clear();
-		gDeferredAvatarAlphaProgram.mShaderFiles.push_back(make_pair("deferred/avatarAlphaNoColorV.glsl", GL_VERTEX_SHADER_ARB));
-		gDeferredAvatarAlphaProgram.mShaderFiles.push_back(make_pair("deferred/alphaNonIndexedNoColorF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gDeferredAvatarAlphaProgram.mShaderFiles.push_back(make_pair("deferred/alphaV.glsl", GL_VERTEX_SHADER_ARB));
+		gDeferredAvatarAlphaProgram.mShaderFiles.push_back(make_pair("deferred/alphaF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gDeferredAvatarAlphaProgram.addPermutation("INDEX_MODE", "3");
+		gDeferredAvatarAlphaProgram.addPermutation("HAS_SKIN", "0");
+		gDeferredAvatarAlphaProgram.addPermutation("IS_AVATAR_SKIN", "1");
 		gDeferredAvatarAlphaProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
 
 		success = gDeferredAvatarAlphaProgram.createShader(NULL, &mAvatarUniforms);
-- 
cgit v1.2.3