From bf0d36bf889bb913fbc2a53c5a1b9818acb11ee6 Mon Sep 17 00:00:00 2001
From: Leslie Linden <leslie@lindenlab.com>
Date: Wed, 24 Aug 2011 15:41:00 -0700
Subject: Mac rendering now with 100% fewer crashes when enabling shadows.

---
 indra/llrender/llglslshader.cpp                                     | 2 ++
 indra/llrender/llshadermgr.cpp                                      | 3 +++
 indra/newview/app_settings/settings.xml                             | 2 +-
 .../newview/app_settings/shaders/class1/deferred/postDeferredF.glsl | 2 +-
 .../app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl    | 2 +-
 indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl   | 6 +++---
 indra/newview/app_settings/shaders/class2/deferred/sunLightV.glsl   | 4 +---
 indra/newview/lltexlayer.cpp                                        | 6 +++---
 8 files changed, 15 insertions(+), 12 deletions(-)

(limited to 'indra')

diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp
index 02bcc9e338..61648e527d 100644
--- a/indra/llrender/llglslshader.cpp
+++ b/indra/llrender/llglslshader.cpp
@@ -117,10 +117,12 @@ BOOL LLGLSLShader::createShader(vector<string> * attributes,
 	// Create program
 	mProgramObject = glCreateProgramObjectARB();
 	
+#if !LL_DARWIN
 	if (gGLManager.mGLVersion < 3.1f)
 	{ //force indexed texture channels to 1 if GL version is old (performance improvement for drivers with poor branching shader model support)
 		mFeatures.mIndexedTextureChannels = llmin(mFeatures.mIndexedTextureChannels, 1);
 	}
+#endif // !LL_DARWIN
 
 	//compile new source
 	vector< pair<string,GLenum> >::iterator fileIter = mShaderFiles.begin();
diff --git a/indra/llrender/llshadermgr.cpp b/indra/llrender/llshadermgr.cpp
index b487cda4ef..db3d7becd9 100644
--- a/indra/llrender/llshadermgr.cpp
+++ b/indra/llrender/llshadermgr.cpp
@@ -544,10 +544,13 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade
 	{
 		//set version to 1.20
 		text[count++] = strdup("#version 120\n");
+		text[count++] = strdup("#define FXAA_GLSL_120 1\n");
+		text[count++] = strdup("#define FXAA_FAST_PIXEL_OFFSET 0\n");
 	}
 	else
 	{  //set version to 1.30
 		text[count++] = strdup("#version 130\n");
+		text[count++] = strdup("#define FXAA_GLSL_130 1\n");
 	}
 
 	//copy preprocessor definitions into buffer
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 1ea986b16d..7c01731282 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -7571,7 +7571,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/postDeferredF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl
index cfcd8585f1..daef6a938c 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl
@@ -26,7 +26,7 @@
 #extension GL_ARB_texture_rectangle : enable
 
 #define FXAA_PC 1
-#define FXAA_GLSL_130 1
+//#define FXAA_GLSL_130 1
 #define FXAA_QUALITY__PRESET 12
 
 /*============================================================================
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl
index e9122fc9d3..f67615bdd5 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl
@@ -26,7 +26,7 @@
 #extension GL_ARB_texture_rectangle : enable
 
 #define FXAA_PC 1
-#define FXAA_GLSL_130 1
+//#define FXAA_GLSL_130 1
 #define FXAA_QUALITY__PRESET 12
 
 /*============================================================================
diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl
index 1809cff1e5..146fac56e9 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl
@@ -48,12 +48,12 @@ uniform float ssao_factor;
 uniform float ssao_factor_inv;
 
 varying vec2 vary_fragcoord;
-varying vec4 vary_light;
 
 uniform mat4 inv_proj;
 uniform vec2 screen_res;
 uniform vec2 shadow_res;
 uniform vec2 proj_shadow_res;
+uniform vec3 sun_dir;
 
 uniform float shadow_bias;
 uniform float shadow_offset;
@@ -132,10 +132,10 @@ void main()
 	}*/
 	
 	float shadow = 1.0;
-	float dp_directional_light = max(0.0, dot(norm, vary_light.xyz));
+	float dp_directional_light = max(0.0, dot(norm, sun_dir.xyz));
 
 	vec3 shadow_pos = pos.xyz + displace*norm;
-	vec3 offset = vary_light.xyz * (1.0-dp_directional_light);
+	vec3 offset = sun_dir.xyz * (1.0-dp_directional_light);
 	
 	vec4 spos = vec4(shadow_pos+offset*shadow_offset, 1.0);
 	
diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightV.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightV.glsl
index 827ec15621..2cf7375d4d 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/sunLightV.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightV.glsl
@@ -1,5 +1,5 @@
 /** 
- * @file sunLightF.glsl
+ * @file sunLightV.glsl
  *
  * $LicenseInfo:firstyear=2007&license=viewerlgpl$
  * Second Life Viewer Source Code
@@ -25,8 +25,6 @@
  
 attribute vec3 position;
 
-
-varying vec4 vary_light;
 varying vec2 vary_fragcoord;
 
 uniform vec2 screen_res;
diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp
index 87e7a57ae8..f44e62335d 100644
--- a/indra/newview/lltexlayer.cpp
+++ b/indra/newview/lltexlayer.cpp
@@ -306,9 +306,6 @@ BOOL LLTexLayerSetBuffer::render()
 	success &= mTexLayerSet->render( mOrigin.mX, mOrigin.mY, mFullWidth, mFullHeight );
 	gGL.flush();
 
-	LLVertexBuffer::unbind();
-	LLGLSLShader::sNoFixedFunction = no_ff;
-	
 	if(upload_now)
 	{
 		if (!success)
@@ -338,6 +335,9 @@ BOOL LLTexLayerSetBuffer::render()
 		doUpdate();
 	}
 
+	LLVertexBuffer::unbind();
+	LLGLSLShader::sNoFixedFunction = no_ff;
+	
 	// reset GL state
 	gGL.setColorMask(true, true);
 	gGL.setSceneBlendType(LLRender::BT_ALPHA);
-- 
cgit v1.2.3