diff --git a/indra/llrender/llshadermgr.cpp b/indra/llrender/llshadermgr.cpp
index 55f079117477f538bcc834e6d76f7ffb5306139e..19a9ced3213bdd91221873132d2ad6cc86b3d21e 100644
--- a/indra/llrender/llshadermgr.cpp
+++ b/indra/llrender/llshadermgr.cpp
@@ -575,10 +575,13 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade
 
 	//we can't have any lines longer than 1024 characters 
 	//or any shaders longer than 4096 lines... deal - DaveP
-	GLcharARB buff[1024];
-	GLcharARB* text[4096];
-	GLuint count = 0;
-
+    GLcharARB buff[1024];
+    GLcharARB *extra_code_text[1024];
+    GLcharARB *shader_code_text[4096 + LL_ARRAY_SIZE(extra_code_text)] = { NULL };
+    GLuint extra_code_count = 0, shader_code_count = 0;
+    BOOST_STATIC_ASSERT(LL_ARRAY_SIZE(extra_code_text) < LL_ARRAY_SIZE(shader_code_text));
+    
+    
 	S32 major_version = gGLManager.mGLSLVersionMajor;
 	S32 minor_version = gGLManager.mGLSLVersionMinor;
 	
@@ -593,20 +596,20 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade
 
 		if (minor_version <= 19)
 		{
-			text[count++] = strdup("#version 110\n");
-			text[count++] = strdup("#define ATTRIBUTE attribute\n");
-			text[count++] = strdup("#define VARYING varying\n");
-			text[count++] = strdup("#define VARYING_FLAT varying\n");
+			shader_code_text[shader_code_count++] = strdup("#version 110\n");
+			extra_code_text[extra_code_count++] = strdup("#define ATTRIBUTE attribute\n");
+			extra_code_text[extra_code_count++] = strdup("#define VARYING varying\n");
+			extra_code_text[extra_code_count++] = strdup("#define VARYING_FLAT varying\n");
 		}
 		else if (minor_version <= 29)
 		{
 			//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");
-			text[count++] = strdup("#define ATTRIBUTE attribute\n");
-			text[count++] = strdup("#define VARYING varying\n");
-			text[count++] = strdup("#define VARYING_FLAT varying\n");
+			shader_code_text[shader_code_count++] = strdup("#version 120\n");
+       		extra_code_text[extra_code_count++] = strdup("#define FXAA_GLSL_120 1\n");
+			extra_code_text[extra_code_count++] = strdup("#define FXAA_FAST_PIXEL_OFFSET 0\n");
+			extra_code_text[extra_code_count++] = strdup("#define ATTRIBUTE attribute\n");
+			extra_code_text[extra_code_count++] = strdup("#define VARYING varying\n");
+			extra_code_text[extra_code_count++] = strdup("#define VARYING_FLAT varying\n");
 		}
 	}
 	else
@@ -614,44 +617,43 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade
 		if (major_version < 4)
 		{
 			//set version to 1.30
-			text[count++] = strdup("#version 130\n");
-
+			shader_code_text[shader_code_count++] = strdup("#version 130\n");
 			//some implementations of GLSL 1.30 require integer precision be explicitly declared
-			text[count++] = strdup("precision mediump int;\n");
-			text[count++] = strdup("precision highp float;\n");
+			extra_code_text[extra_code_count++] = strdup("precision mediump int;\n");
+			extra_code_text[extra_code_count++] = strdup("precision highp float;\n");
 		}
 		else
 		{ //set version to 400
-			text[count++] = strdup("#version 400\n");
+			shader_code_text[shader_code_count++] = strdup("#version 400\n");
 		}
 
-		text[count++] = strdup("#define DEFINE_GL_FRAGCOLOR 1\n");
-		text[count++] = strdup("#define FXAA_GLSL_130 1\n");
+		extra_code_text[extra_code_count++] = strdup("#define DEFINE_GL_FRAGCOLOR 1\n");
+		extra_code_text[extra_code_count++] = strdup("#define FXAA_GLSL_130 1\n");
 
-		text[count++] = strdup("#define ATTRIBUTE in\n");
+		extra_code_text[extra_code_count++] = strdup("#define ATTRIBUTE in\n");
 
 		if (type == GL_VERTEX_SHADER_ARB)
 		{ //"varying" state is "out" in a vertex program, "in" in a fragment program 
 			// ("varying" is deprecated after version 1.20)
-			text[count++] = strdup("#define VARYING out\n");
-			text[count++] = strdup("#define VARYING_FLAT flat out\n");
+			extra_code_text[extra_code_count++] = strdup("#define VARYING out\n");
+			extra_code_text[extra_code_count++] = strdup("#define VARYING_FLAT flat out\n");
 		}
 		else
 		{
-			text[count++] = strdup("#define VARYING in\n");
-			text[count++] = strdup("#define VARYING_FLAT flat in\n");
+			extra_code_text[extra_code_count++] = strdup("#define VARYING in\n");
+			extra_code_text[extra_code_count++] = strdup("#define VARYING_FLAT flat in\n");
 		}
 
 		//backwards compatibility with legacy texture lookup syntax
-		text[count++] = strdup("#define texture2D texture\n");
-		text[count++] = strdup("#define textureCube texture\n");
-		text[count++] = strdup("#define texture2DLod textureLod\n");
-		text[count++] = strdup("#define	shadow2D(a,b) vec2(texture(a,b))\n");
+		extra_code_text[extra_code_count++] = strdup("#define texture2D texture\n");
+		extra_code_text[extra_code_count++] = strdup("#define textureCube texture\n");
+		extra_code_text[extra_code_count++] = strdup("#define texture2DLod textureLod\n");
+		extra_code_text[extra_code_count++] = strdup("#define	shadow2D(a,b) vec2(texture(a,b))\n");
 		
 		if (major_version > 1 || minor_version >= 40)
 		{ //GLSL 1.40 replaces texture2DRect et al with texture
-			text[count++] = strdup("#define texture2DRect texture\n");
-			text[count++] = strdup("#define shadow2DRect(a,b) vec2(texture(a,b))\n");
+			extra_code_text[extra_code_count++] = strdup("#define texture2DRect texture\n");
+			extra_code_text[extra_code_count++] = strdup("#define shadow2DRect(a,b) vec2(texture(a,b))\n");
 		}
 	}
 	
@@ -660,13 +662,13 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade
 		for (boost::unordered_map<std::string,std::string>::iterator iter = defines->begin(); iter != defines->end(); ++iter)
 		{
 			std::string define = "#define " + iter->first + " " + iter->second + "\n";
-			text[count++] = (GLcharARB *) strdup(define.c_str());
+			extra_code_text[extra_code_count++] = (GLcharARB *) strdup(define.c_str());
 		}
 	}
 
 	if( gGLManager.mIsATI )
 	{
-		text[ count++ ] = strdup( "#define IS_AMD_CARD 1\n" );
+		extra_code_text[extra_code_count++] = strdup( "#define IS_AMD_CARD 1\n" );
 	}
 	
 	if (texture_index_channels > 0 && type == GL_FRAGMENT_SHADER_ARB)
@@ -704,28 +706,28 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade
 		}
 		*/
 
-		text[count++] = strdup("#define HAS_DIFFUSE_LOOKUP 1\n");
+		extra_code_text[extra_code_count++] = strdup("#define HAS_DIFFUSE_LOOKUP 1\n");
 
 		//uniform declartion
 		for (S32 i = 0; i < texture_index_channels; ++i)
 		{
 			std::string decl = llformat("uniform sampler2D tex%d;\n", i);
-			text[count++] = strdup(decl.c_str());
+			extra_code_text[extra_code_count++] = strdup(decl.c_str());
 		}
 
 		if (texture_index_channels > 1)
 		{
-			text[count++] = strdup("VARYING_FLAT int vary_texture_index;\n");
+			extra_code_text[extra_code_count++] = strdup("VARYING_FLAT int vary_texture_index;\n");
 		}
 
-		text[count++] = strdup("vec4 diffuseLookup(vec2 texcoord)\n");
-		text[count++] = strdup("{\n");
+		extra_code_text[extra_code_count++] = strdup("vec4 diffuseLookup(vec2 texcoord)\n");
+		extra_code_text[extra_code_count++] = strdup("{\n");
 		
 		
 		if (texture_index_channels == 1)
 		{ //don't use flow control, that's silly
-			text[count++] = strdup("return texture2D(tex0, texcoord);\n");
-			text[count++] = strdup("}\n");
+			extra_code_text[extra_code_count++] = strdup("return texture2D(tex0, texcoord);\n");
+			extra_code_text[extra_code_count++] = strdup("}\n");
 		}
 		else if (major_version > 1 || minor_version >= 30)
 		{  //switches are supported in GLSL 1.30 and later
@@ -734,27 +736,27 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade
 				for (U32 i = 0; i < texture_index_channels; ++i)
 				{
 					std::string if_string = llformat("\t%sif (vary_texture_index == %d) { return texture2D(tex%d, texcoord); }\n", i > 0 ? "else " : "", i, i); 
-					text[count++] = strdup(if_string.c_str());
+					extra_code_text[extra_code_count++] = strdup(if_string.c_str());
 				}
-				text[count++] = strdup("\treturn vec4(1,0,1,1);\n");
-				text[count++] = strdup("}\n");
+				extra_code_text[extra_code_count++] = strdup("\treturn vec4(1,0,1,1);\n");
+				extra_code_text[extra_code_count++] = strdup("}\n");
 			}
 			else
 			{
-				text[count++] = strdup("\tvec4 ret = vec4(1,0,1,1);\n");
-				text[count++] = strdup("\tswitch (vary_texture_index)\n");
-				text[count++] = strdup("\t{\n");
+				extra_code_text[extra_code_count++] = strdup("\tvec4 ret = vec4(1,0,1,1);\n");
+				extra_code_text[extra_code_count++] = strdup("\tswitch (vary_texture_index)\n");
+				extra_code_text[extra_code_count++] = strdup("\t{\n");
 		
 				//switch body
 				for (S32 i = 0; i < texture_index_channels; ++i)
 				{
 					std::string case_str = llformat("\t\tcase %d: return texture2D(tex%d, texcoord);\n", i, i);
-					text[count++] = strdup(case_str.c_str());
+					extra_code_text[extra_code_count++] = strdup(case_str.c_str());
 				}
 
-				text[count++] = strdup("\t}\n");
-				text[count++] = strdup("\treturn ret;\n");
-				text[count++] = strdup("}\n");
+				extra_code_text[extra_code_count++] = strdup("\t}\n");
+				extra_code_text[extra_code_count++] = strdup("\treturn ret;\n");
+				extra_code_text[extra_code_count++] = strdup("}\n");
 			}
 		}
 		else
@@ -765,14 +767,81 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade
 	}
 	else
 	{
-		text[count++] = strdup("#define HAS_DIFFUSE_LOOKUP 0\n");
+		extra_code_text[extra_code_count++] = strdup("#define HAS_DIFFUSE_LOOKUP 0\n");
 	}
 
+    
 	//copy file into memory
-	while( fgets((char *)buff, 1024, file) != NULL && count < LL_ARRAY_SIZE(text) ) 
+	enum {
+		  flag_write_to_out_of_extra_block_area = 0x01
+		, flag_extra_block_marker_was_found = 0x02
+	};
+	
+	unsigned char flags = flag_write_to_out_of_extra_block_area;
+	
+	GLuint out_of_extra_block_counter = 0, start_shader_code = shader_code_count;
+	
+	while(NULL != fgets((char *)buff, 1024, file)
+		  && shader_code_count < (LL_ARRAY_SIZE(shader_code_text) - LL_ARRAY_SIZE(extra_code_text)))
 	{
-		text[count++] = (GLcharARB *)strdup((char *)buff); 
+		bool extra_block_area_found = NULL != strstr((const char*)buff, "[EXTRA_CODE_HERE]");
+		
+		if(extra_block_area_found && !(flag_extra_block_marker_was_found & flags))
+		{
+			if(!(flag_write_to_out_of_extra_block_area & flags))
+			{
+				//shift
+				for(GLuint to = start_shader_code, from = extra_code_count + start_shader_code;
+					from < shader_code_count; ++to, ++from)
+				{
+					shader_code_text[to] = shader_code_text[from];
+				}
+				
+				shader_code_count -= extra_code_count;
+			}
+		  
+			//copy extra code
+			for(GLuint n = 0; n < extra_code_count
+				&& shader_code_count < (LL_ARRAY_SIZE(shader_code_text) - LL_ARRAY_SIZE(extra_code_text)); ++n)
+			{
+				shader_code_text[shader_code_count++] = extra_code_text[n];
+			}
+			
+			extra_code_count = 0;
+			
+			flags &= ~flag_write_to_out_of_extra_block_area;
+			flags |= flag_extra_block_marker_was_found;
+			continue;
+		}
+
+		shader_code_text[shader_code_count] = (GLcharARB *)strdup((char *)buff);
+		
+		if(flag_write_to_out_of_extra_block_area & flags)
+		{
+			shader_code_text[extra_code_count + start_shader_code + out_of_extra_block_counter]
+				= shader_code_text[shader_code_count];
+			out_of_extra_block_counter++;
+			
+			if(out_of_extra_block_counter == extra_code_count)
+			{
+				shader_code_count += extra_code_count;
+				flags &= ~flag_write_to_out_of_extra_block_area;
+			}
+		}
+		
+		++shader_code_count;
+	} //while
+	
+	if(!(flag_extra_block_marker_was_found & flags))
+	{
+		for(GLuint n = start_shader_code; n < extra_code_count + start_shader_code; ++n)
+		{
+			shader_code_text[n] = extra_code_text[n - start_shader_code];
+		}
+		
+		extra_code_count = 0;
 	}
+
 	fclose(file);
 
 	//create shader object
@@ -787,7 +856,7 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade
 	}
 	
 	//load source
-	glShaderSourceARB(ret, count, (const GLcharARB**) text, NULL);
+	glShaderSourceARB(ret, shader_code_count, (const GLcharARB**) shader_code_text, NULL);
 
 	if (gDebugGL)
 	{
@@ -826,9 +895,9 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade
 #if LL_WINDOWS
 				std::stringstream ostr;
 				//dump shader source for debugging
-				for (GLuint i = 0; i < count; i++)
+				for (GLuint i = 0; i < shader_code_count; i++)
 				{
-					ostr << i << ": " << text[i];
+					ostr << i << ": " << shader_code_text[i];
 
 					if (i % 128 == 0)
 					{ //dump every 128 lines
@@ -843,8 +912,8 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade
 #else
 				std::string str;
 				
-				for (GLuint i = 0; i < count; i++) {
-					str.append(text[i]);
+				for (GLuint i = 0; i < shader_code_count; i++) {
+					str.append(shader_code_text[i]);
 					
 					if (i % 128 == 0)
 					{
@@ -853,7 +922,7 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade
 					}
 				}
 #endif
-				
+
 				ret = 0;
 			}
 		}
@@ -865,9 +934,9 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade
 	stop_glerror();
 
 	//free memory
-	for (GLuint i = 0; i < count; i++)
+	for (GLuint i = 0; i < shader_code_count; i++)
 	{
-		free(text[i]);
+		free(shader_code_text[i]);
 	}
 
 	//successfully loaded, save results
diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
index 2b5f0018736626911660254fc1cc6f17ea70aade..b9c8f34cb06e8df3324707276e9aa00b94c9a8bc 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
@@ -25,6 +25,8 @@
  
 #extension GL_ARB_texture_rectangle : enable
 
+/*[EXTRA_CODE_HERE]*/
+
 #define INDEXED 1
 #define NON_INDEXED 2
 #define NON_INDEXED_NO_COLOR 3
diff --git a/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl
index 5264d6e1b4ff3b259c2bc1c4fc72fdd8ccd8eb54..cbd8d2ebfc8d6d4e444bc7246673f7f085a7cd9f 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl
@@ -25,6 +25,8 @@
 
 #extension GL_ARB_texture_rectangle : enable
 
+/*[EXTRA_CODE_HERE]*/
+
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_color;
 #else
diff --git a/indra/newview/app_settings/shaders/class1/deferred/cofF.glsl b/indra/newview/app_settings/shaders/class1/deferred/cofF.glsl
index ccbc3c557cc80a9d66f396bcaf164ba599f723ca..fef1c5a5848c7feb0a8b26d86ecf12887bcbfeda 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/cofF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/cofF.glsl
@@ -25,6 +25,8 @@
 
 #extension GL_ARB_texture_rectangle : enable
 
+/*[EXTRA_CODE_HERE]*/
+
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_color;
 #else
diff --git a/indra/newview/app_settings/shaders/class1/deferred/dofCombineF.glsl b/indra/newview/app_settings/shaders/class1/deferred/dofCombineF.glsl
index a425e5062eba23e7b8c429233b56b411235a60e8..8d48bb016b10b7a4656155748aae2104c65a0d35 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/dofCombineF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/dofCombineF.glsl
@@ -25,6 +25,8 @@
 
 #extension GL_ARB_texture_rectangle : enable
 
+/*[EXTRA_CODE_HERE]*/
+
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_color;
 #else
diff --git a/indra/newview/app_settings/shaders/class1/deferred/emissiveF.glsl b/indra/newview/app_settings/shaders/class1/deferred/emissiveF.glsl
index ed02c4a48189f0318a100c16d13c3dd50af9f135..0ffca8515c30cad38239e2849c8cf930827c3fd8 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/emissiveF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/emissiveF.glsl
@@ -25,6 +25,8 @@
  
 #extension GL_ARB_texture_rectangle : enable
 
+/*[EXTRA_CODE_HERE]*/
+
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_color;
 #else
diff --git a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl
index f22b16965c471a07f49bbf671a75e1ef7e20a173..756e625d073718cc184ace09f83aa8878da3d02a 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl
@@ -25,6 +25,8 @@
  
 #extension GL_ARB_texture_rectangle : enable
 
+/*[EXTRA_CODE_HERE]*/
+
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_color;
 #else
diff --git a/indra/newview/app_settings/shaders/class1/deferred/fxaaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/fxaaF.glsl
index a2b4b3b8c85e9e6161020aa768b43359f2f44cb3..226e63cdda7e082a6b340b54885369b112a13965 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/fxaaF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/fxaaF.glsl
@@ -26,6 +26,8 @@
 #extension GL_ARB_texture_rectangle : enable
 #extension GL_ARB_shader_texture_lod : enable
 
+/*[EXTRA_CODE_HERE]*/
+
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_color;
 #else
diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl
index 1a464fec5d3a26a2c5835c4c5de9f686bf95fc68..9974f8f31b93df55f37889b4a0b2bbd7eb3fc37e 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl
@@ -25,6 +25,8 @@
 
 #extension GL_ARB_texture_rectangle : enable
 
+/*[EXTRA_CODE_HERE]*/
+
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_color;
 #else
diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl
index c08e9d361af6b3f6a1b5ba6332b24151431685c9..3a3e871adea025f17cb114e16f53505a8e5d0688 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl
@@ -23,16 +23,20 @@
  * $/LicenseInfo$
  */
 
+
+
+//class 1 -- no shadows
+
+#extension GL_ARB_texture_rectangle : enable
+#extension GL_ARB_shader_texture_lod : enable
+
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_color;
 #else
 #define frag_color gl_FragColor
 #endif
 
-//class 1 -- no shadows
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_shader_texture_lod : enable
+/*[EXTRA_CODE_HERE]*/
 
 uniform sampler2DRect diffuseRect;
 uniform sampler2DRect specularRect;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/normgenF.glsl b/indra/newview/app_settings/shaders/class1/deferred/normgenF.glsl
index 62cfa5c3167fb9bdd65611d8796e6d76bd7336fa..d0c06cd51f6e7a9341742e346ccb341afa7a239d 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/normgenF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/normgenF.glsl
@@ -25,6 +25,8 @@
  
 #extension GL_ARB_texture_rectangle : enable
 
+/*[EXTRA_CODE_HERE]*/
+
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_color;
 #else
diff --git a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl
index 106d48bd7127064b83b6e75010865359743174b2..aba4a017547b4a40453c3c6f054b359ef2faaa27 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl
@@ -25,6 +25,8 @@
  
 #extension GL_ARB_texture_rectangle : enable
 
+/*[EXTRA_CODE_HERE]*/
+
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_color;
 #else
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl
index bf362e21a4d31ce7f7f45d2c7afd8b39417dbbf8..f06f8c870bc6cab15e6cd04714d1b00a5caed9c7 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl
@@ -25,6 +25,8 @@
 
 #extension GL_ARB_texture_rectangle : enable
 
+/*[EXTRA_CODE_HERE]*/
+
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_color;
 #else
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredGammaCorrect.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredGammaCorrect.glsl
index 4e2f98aa29bb6e4fb4dc5255af184a5fcd41b9d6..6669947d1b3b214633f30cf8cb6dcd425922662c 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredGammaCorrect.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredGammaCorrect.glsl
@@ -25,6 +25,8 @@
  
 #extension GL_ARB_texture_rectangle : enable
 
+/*[EXTRA_CODE_HERE]*/
+
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_color;
 #else
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl
index eb5beeef39a6ce3a47753019ddbdaa385e161876..058941bfb2712c97fb694b7c7645806d3debcab7 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl
@@ -25,6 +25,8 @@
  
 #extension GL_ARB_texture_rectangle : enable
 
+/*[EXTRA_CODE_HERE]*/
+
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_color;
 #else
diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
index 760d52a9ce47de62351be9eb7905bd54fe591538..03bdb754b57b22f057746cb8d5a5a7ef9ac9d8c8 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
@@ -26,6 +26,8 @@
 #extension GL_ARB_texture_rectangle : enable
 #extension GL_ARB_shader_texture_lod : enable
 
+/*[EXTRA_CODE_HERE]*/
+
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_color;
 #else
diff --git a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl
index f50635a1390bc38e6fa8e968bbc39780aa7d1241..f1aec315ccce78c9cc6cb4dda7edaebc845513fc 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl
@@ -26,6 +26,8 @@
 #extension GL_ARB_texture_rectangle : enable
 #extension GL_ARB_shader_texture_lod : enable
 
+/*[EXTRA_CODE_HERE]*/
+
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_color;
 #else
diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl
index 5ca817aff6ed69420c5d09b77f6a399c1e445c14..7329efe3f799ec4fb647dc2b99c20304b4acf1a6 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl
@@ -27,6 +27,8 @@
 
 #extension GL_ARB_texture_rectangle : enable
 
+/*[EXTRA_CODE_HERE]*/
+
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_color;
 #else
diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl
index c0a5865bef2f50a64a890567d5cd3e91f154a9cc..930255729b0cc06f176be1f206aa0786a4862ee0 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl
@@ -25,6 +25,8 @@
 
 #extension GL_ARB_texture_rectangle : enable
 
+/*[EXTRA_CODE_HERE]*/
+
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_color;
 #else
diff --git a/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl b/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl
index 1c3ad49a21c8c51899afa7865084f7249041edc2..37dcd3ad3493178602a7a5b396aa8b6a75d89dee 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl
@@ -25,6 +25,8 @@
  
 #extension GL_ARB_texture_rectangle : enable
 
+/*[EXTRA_CODE_HERE]*/
+
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_data[3];
 #else
diff --git a/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl b/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl
index 0f5eb288fd01ce1dbb6a0caf505d760fd50eb959..36563982bad396b3801bd24cc5ec7f1372f45730 100644
--- a/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl
+++ b/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl
@@ -25,6 +25,8 @@
  
 #extension GL_ARB_texture_rectangle : enable
 
+/*[EXTRA_CODE_HERE]*/
+
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_color;
 #else
diff --git a/indra/newview/app_settings/shaders/class1/interface/downsampleDepthRectF.glsl b/indra/newview/app_settings/shaders/class1/interface/downsampleDepthRectF.glsl
index 942c5888e753e2d406a1d0e993f1f4a822aa693c..cff8d9d50f86d6aeba038d312b70c11bff37304b 100644
--- a/indra/newview/app_settings/shaders/class1/interface/downsampleDepthRectF.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/downsampleDepthRectF.glsl
@@ -25,6 +25,8 @@
 
 #extension GL_ARB_texture_rectangle : enable
 
+/*[EXTRA_CODE_HERE]*/
+
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_color;
 #else
diff --git a/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl b/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl
index ed803de277317cb63815cac756652c9dc953d32d..5c088b3a3c43571a71a94da8cc4226be74e5cba2 100644
--- a/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl
@@ -23,13 +23,15 @@
  * $/LicenseInfo$
  */
 
+#extension GL_ARB_texture_rectangle : enable
+
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_color;
 #else
 #define frag_color gl_FragColor
 #endif
 
-#extension GL_ARB_texture_rectangle : enable
+/*[EXTRA_CODE_HERE]*/
 
 uniform sampler2D glowMap;
 uniform sampler2DRect screenMap;
diff --git a/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAF.glsl b/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAF.glsl
index 59520bb99f7c4a299c575c02177d338307a1a30d..a9e7ea1de838af05b910f7348a3a841d3931ab6c 100644
--- a/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAF.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAF.glsl
@@ -25,6 +25,8 @@
  
 #extension GL_ARB_texture_rectangle : enable
 
+/*[EXTRA_CODE_HERE]*/
+
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_color;
 #else
diff --git a/indra/newview/app_settings/shaders/class1/interface/splattexturerectF.glsl b/indra/newview/app_settings/shaders/class1/interface/splattexturerectF.glsl
index 772bb374e820d71a4bd7a24c8b3e541a52a3e6c8..7614075cfd41158d141e8cf4ddfbd134175e80fb 100644
--- a/indra/newview/app_settings/shaders/class1/interface/splattexturerectF.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/splattexturerectF.glsl
@@ -25,6 +25,8 @@
  
 #extension GL_ARB_texture_rectangle : enable
 
+/*[EXTRA_CODE_HERE]*/
+
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_color;
 #else
diff --git a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl
index 94bd07bec667822d05f2668ba199e4abf3053d72..b9bb522842e3bced03a5164fddc407711419f544 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl
@@ -26,6 +26,8 @@
 #extension GL_ARB_texture_rectangle : enable
 #extension GL_ARB_shader_texture_lod : enable
 
+/*[EXTRA_CODE_HERE]*/
+
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_color;
 #else
diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
index 1022c23f7b536c81adb6e3409eb925bf003008a1..f7832521facdf2c56c437977789395ac9f1ed32b 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
@@ -25,6 +25,8 @@
  
 #extension GL_ARB_texture_rectangle : enable
 
+/*[EXTRA_CODE_HERE]*/
+
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_color;
 #else
diff --git a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl
index 92e1ac95a69c410678b57a4515e9f9fa26431aa8..81af1fdc8a217cc7902f16468f60599e2e9bf12a 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl
@@ -26,6 +26,8 @@
 #extension GL_ARB_texture_rectangle : enable
 #extension GL_ARB_shader_texture_lod : enable
 
+/*[EXTRA_CODE_HERE]*/
+
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_color;
 #else
diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl
index 95c09d3238e1a338a4bd398ab27c7188f0a66dda..265da8df99c0910c5112acd0bfd3df78fb457a98 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl
@@ -25,6 +25,8 @@
 
 #extension GL_ARB_texture_rectangle : enable
 
+/*[EXTRA_CODE_HERE]*/
+
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_color;
 #else
diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl
index b5ff6404ea5648f6a219cba4d698952b2c7201f9..5c6fe30daa221562cfa8207b5e668ff86eaf2477 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl
@@ -24,6 +24,8 @@
  
 #extension GL_ARB_texture_rectangle : enable
 
+/*[EXTRA_CODE_HERE]*/
+
 #ifdef DEFINE_GL_FRAGCOLOR
 out vec4 frag_color;
 #else