diff options
Diffstat (limited to 'indra/newview/app_settings/shaders/class2/deferred')
10 files changed, 198 insertions, 71 deletions
| diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl new file mode 100644 index 0000000000..294a000ab5 --- /dev/null +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl @@ -0,0 +1,121 @@ +/**  + * @file alphaNonIndexedNoColorF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ +  + + +#extension GL_ARB_texture_rectangle : enable + +uniform sampler2DRectShadow shadowMap0; +uniform sampler2DRectShadow shadowMap1; +uniform sampler2DRectShadow shadowMap2; +uniform sampler2DRectShadow shadowMap3; +uniform sampler2DRect depthMap; +uniform sampler2D diffuseMap; + +uniform mat4 shadow_matrix[6]; +uniform vec4 shadow_clip; +uniform vec2 screen_res; +uniform vec2 shadow_res; + +vec3 atmosLighting(vec3 light); +vec3 scaleSoftClip(vec3 light); + +varying vec3 vary_ambient; +varying vec3 vary_directional; +varying vec3 vary_fragcoord; +varying vec3 vary_position; +varying vec3 vary_pointlight_col; + +uniform float shadow_bias; + +uniform mat4 inv_proj; + +vec4 getPosition(vec2 pos_screen) +{ +	float depth = texture2DRect(depthMap, pos_screen.xy).a; +	vec2 sc = pos_screen.xy*2.0; +	sc /= screen_res; +	sc -= vec2(1.0,1.0); +	vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0); +	vec4 pos = inv_proj * ndc; +	pos.xyz /= pos.w; +	pos.w = 1.0; +	return pos; +} + +float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc, float scl) +{ +	stc.xyz /= stc.w; +	stc.z += shadow_bias; +	 +	float cs = shadow2DRect(shadowMap, stc.xyz).x; +	float shadow = cs; + +	shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(scl, scl, 0.0)).x, cs); +	shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(scl, -scl, 0.0)).x, cs); +	shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(-scl, scl, 0.0)).x, cs); +	shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(-scl, -scl, 0.0)).x, cs); +			 +	return shadow/5.0; +} + + +void main()  +{ +	vec2 frag = vary_fragcoord.xy/vary_fragcoord.z*0.5+0.5; +	frag *= screen_res; +	 +	float shadow = 1.0; +	vec4 pos = vec4(vary_position, 1.0); +	 +	vec4 spos = pos; +		 +	if (spos.z > -shadow_clip.w) +	{	 +		vec4 lpos; +		 +		if (spos.z < -shadow_clip.z) +		{ +			lpos = shadow_matrix[3]*spos; +			lpos.xy *= shadow_res; +			shadow = pcfShadow(shadowMap3, lpos, 1.5); +			shadow += max((pos.z+shadow_clip.z)/(shadow_clip.z-shadow_clip.w)*2.0-1.0, 0.0); +		} +		else if (spos.z < -shadow_clip.y) +		{ +			lpos = shadow_matrix[2]*spos; +			lpos.xy *= shadow_res; +			shadow = pcfShadow(shadowMap2, lpos, 1.5); +		} +		else if (spos.z < -shadow_clip.x) +		{ +			lpos = shadow_matrix[1]*spos; +			lpos.xy *= shadow_res; +			shadow = pcfShadow(shadowMap1, lpos, 1.5); +		} +		else +		{ +			lpos = shadow_matrix[0]*spos; +			lpos.xy *= shadow_res; +			shadow = pcfShadow(shadowMap0, lpos, 1.5); +		} +	} +	 +	vec4 diff = texture2D(diffuseMap,gl_TexCoord[0].xy); + +	vec4 col = vec4(vary_ambient + vary_directional.rgb*shadow, 1.0); +	vec4 color = diff * col; +	 +	color.rgb = atmosLighting(color.rgb); + +	color.rgb = scaleSoftClip(color.rgb); + +	color.rgb += diff.rgb * vary_pointlight_col.rgb; + +	gl_FragColor = color; +} + diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl index 20121da52d..501fcb004b 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl @@ -22,7 +22,10 @@   * $/LicenseInfo$   */ - +attribute vec3 position; +attribute vec3 normal; +attribute vec4 diffuse_color; +attribute vec2 texcoord0;  vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);  void calcAtmospherics(vec3 inPositionEye); @@ -76,18 +79,18 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa  void main()  { -	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0; +	gl_TexCoord[0] = gl_TextureMatrix[0] * vec4(texcoord0,0,1);  	mat4 mat = getObjectSkinnedTransform();  	mat = gl_ModelViewMatrix * mat; -	vec3 pos = (mat*gl_Vertex).xyz; +	vec3 pos = (mat*vec4(position, 1.0)).xyz;  	gl_Position = gl_ProjectionMatrix * vec4(pos, 1.0); -	vec4 n = gl_Vertex; -	n.xyz += gl_Normal.xyz; +	vec4 n = vec4(position, 1.0); +	n.xyz += normal.xyz;  	n.xyz = (mat*n).xyz;  	n.xyz = normalize(n.xyz-pos.xyz); @@ -98,8 +101,8 @@ void main()  	calcAtmospherics(pos.xyz); -	//vec4 color = calcLighting(pos.xyz, norm, gl_Color, vec4(0.)); -	vec4 col = vec4(0.0, 0.0, 0.0, gl_Color.a); +	//vec4 color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.)); +	vec4 col = vec4(0.0, 0.0, 0.0, diffuse_color.a);  	// Collect normal lights  	col.rgb += gl_LightSource[2].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[2].position, gl_LightSource[2].spotDirection.xyz, gl_LightSource[2].linearAttenuation, gl_LightSource[2].quadraticAttenuation, gl_LightSource[2].specular.a); @@ -109,23 +112,23 @@ void main()  	col.rgb += gl_LightSource[6].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[6].position, gl_LightSource[6].spotDirection.xyz, gl_LightSource[6].linearAttenuation, gl_LightSource[6].quadraticAttenuation, gl_LightSource[6].specular.a);  	col.rgb += gl_LightSource[7].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[7].position, gl_LightSource[7].spotDirection.xyz, gl_LightSource[7].linearAttenuation, gl_LightSource[7].quadraticAttenuation, gl_LightSource[7].specular.a); -	vary_pointlight_col = col.rgb*gl_Color.rgb; +	vary_pointlight_col = col.rgb*diffuse_color.rgb;  	col.rgb = vec3(0,0,0);  	// Add windlight lights  	col.rgb = atmosAmbient(vec3(0.)); -	vary_ambient = col.rgb*gl_Color.rgb; -	vary_directional.rgb = gl_Color.rgb*atmosAffectDirectionalLight(max(calcDirectionalLight(norm, gl_LightSource[0].position.xyz), (1.0-gl_Color.a)*(1.0-gl_Color.a))); +	vary_ambient = col.rgb*diffuse_color.rgb; +	vary_directional.rgb = diffuse_color.rgb*atmosAffectDirectionalLight(max(calcDirectionalLight(norm, gl_LightSource[0].position.xyz), (1.0-diffuse_color.a)*(1.0-diffuse_color.a))); -	col.rgb = min(col.rgb*gl_Color.rgb, 1.0); +	col.rgb = min(col.rgb*diffuse_color.rgb, 1.0);  	gl_FrontColor = col;  	gl_FogFragCoord = pos.z; -	pos.xyz = (gl_ModelViewProjectionMatrix * gl_Vertex).xyz; +	pos.xyz = (gl_ModelViewProjectionMatrix * vec4(position.xyz, 1.0)).xyz;  	vary_fragcoord.xyz = pos.xyz + vec3(0,0,near_clip);  } diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl index 307ae30098..b0ae0107fb 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl @@ -23,7 +23,10 @@   * $/LicenseInfo$   */ - +attribute vec4 position; +attribute vec3 normal; +attribute vec4 diffuse_color; +attribute vec2 texcoord0;  vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);  void calcAtmospherics(vec3 inPositionEye); @@ -79,22 +82,22 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa  void main()  {  	//transform vertex -	vec4 vert = vec4(gl_Vertex.xyz, 1.0); -	vary_texture_index = gl_Vertex.w; -	gl_Position = gl_ModelViewProjectionMatrix * vert;  -	 -	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0; -	 +	vec4 vert = vec4(position.xyz, 1.0); +	vary_texture_index = position.w;  	vec4 pos = (gl_ModelViewMatrix * vert); -	vec3 norm = normalize(gl_NormalMatrix * gl_Normal); +	gl_Position = gl_ModelViewProjectionMatrix*vec4(position.xyz, 1.0); +	 +	gl_TexCoord[0] = gl_TextureMatrix[0] * vec4(texcoord0,0,1); +		 +	vec3 norm = normalize(gl_NormalMatrix * normal);  	float dp_directional_light = max(0.0, dot(norm, gl_LightSource[0].position.xyz));  	vary_position = pos.xyz + gl_LightSource[0].position.xyz * (1.0-dp_directional_light)*shadow_offset;  	calcAtmospherics(pos.xyz); -	//vec4 color = calcLighting(pos.xyz, norm, gl_Color, vec4(0.)); -	vec4 col = vec4(0.0, 0.0, 0.0, gl_Color.a); +	//vec4 color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.)); +	vec4 col = vec4(0.0, 0.0, 0.0, diffuse_color.a);  	// Collect normal lights  	col.rgb += gl_LightSource[2].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[2].position, gl_LightSource[2].spotDirection.xyz, gl_LightSource[2].linearAttenuation, gl_LightSource[2].quadraticAttenuation, gl_LightSource[2].specular.a); @@ -104,17 +107,17 @@ void main()  	col.rgb += gl_LightSource[6].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[6].position, gl_LightSource[6].spotDirection.xyz, gl_LightSource[6].linearAttenuation, gl_LightSource[6].quadraticAttenuation, gl_LightSource[6].specular.a);  	col.rgb += gl_LightSource[7].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[7].position, gl_LightSource[7].spotDirection.xyz, gl_LightSource[7].linearAttenuation, gl_LightSource[7].quadraticAttenuation, gl_LightSource[7].specular.a); -	vary_pointlight_col = col.rgb*gl_Color.rgb; +	vary_pointlight_col = col.rgb*diffuse_color.rgb;  	col.rgb = vec3(0,0,0);  	// Add windlight lights  	col.rgb = atmosAmbient(vec3(0.)); -	vary_ambient = col.rgb*gl_Color.rgb; -	vary_directional.rgb = gl_Color.rgb*atmosAffectDirectionalLight(max(calcDirectionalLight(norm, gl_LightSource[0].position.xyz), (1.0-gl_Color.a)*(1.0-gl_Color.a))); +	vary_ambient = col.rgb*diffuse_color.rgb; +	vary_directional.rgb = diffuse_color.rgb*atmosAffectDirectionalLight(max(calcDirectionalLight(norm, gl_LightSource[0].position.xyz), (1.0-diffuse_color.a)*(1.0-diffuse_color.a))); -	col.rgb = col.rgb*gl_Color.rgb; +	col.rgb = col.rgb*diffuse_color.rgb;  	gl_FrontColor = col; diff --git a/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl b/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl index 80f386ecb0..f35af53f95 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl @@ -24,6 +24,9 @@   */ +attribute vec3 position; +attribute vec3 normal; +attribute vec2 texcoord0;  vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);  mat4 getSkinnedTransform(); @@ -79,20 +82,21 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa  void main()  { -	gl_TexCoord[0] = gl_MultiTexCoord0; +	gl_TexCoord[0] = vec4(texcoord0,0,1);  	vec4 pos;  	vec3 norm;  	mat4 trans = getSkinnedTransform(); -	pos.x = dot(trans[0], gl_Vertex); -	pos.y = dot(trans[1], gl_Vertex); -	pos.z = dot(trans[2], gl_Vertex); +	vec4 pos_in = vec4(position.xyz, 1.0); +	pos.x = dot(trans[0], pos_in); +	pos.y = dot(trans[1], pos_in); +	pos.z = dot(trans[2], pos_in);  	pos.w = 1.0; -	norm.x = dot(trans[0].xyz, gl_Normal); -	norm.y = dot(trans[1].xyz, gl_Normal); -	norm.z = dot(trans[2].xyz, gl_Normal); +	norm.x = dot(trans[0].xyz, normal); +	norm.y = dot(trans[1].xyz, normal); +	norm.z = dot(trans[2].xyz, normal);  	norm = normalize(norm);  	gl_Position = gl_ProjectionMatrix * pos; @@ -102,9 +106,7 @@ void main()  	calcAtmospherics(pos.xyz); -	//vec4 color = calcLighting(pos.xyz, norm, gl_Color, vec4(0.)); - -	vec4 col = vec4(0.0, 0.0, 0.0, gl_Color.a); +	vec4 col = vec4(0.0, 0.0, 0.0, 1.0);  	// Collect normal lights  	col.rgb += gl_LightSource[2].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[2].position, gl_LightSource[2].spotDirection.xyz, gl_LightSource[2].linearAttenuation, gl_LightSource[2].quadraticAttenuation, gl_LightSource[2].specular.a); @@ -114,17 +116,17 @@ void main()  	col.rgb += gl_LightSource[6].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[6].position, gl_LightSource[6].spotDirection.xyz, gl_LightSource[6].linearAttenuation, gl_LightSource[6].quadraticAttenuation, gl_LightSource[6].specular.a);  	col.rgb += gl_LightSource[7].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[7].position, gl_LightSource[7].spotDirection.xyz, gl_LightSource[7].linearAttenuation, gl_LightSource[7].quadraticAttenuation, gl_LightSource[7].specular.a); -	vary_pointlight_col = col.rgb*gl_Color.rgb; +	vary_pointlight_col = col.rgb;  	col.rgb = vec3(0,0,0);  	// Add windlight lights  	col.rgb = atmosAmbient(vec3(0.)); -	vary_ambient = col.rgb*gl_Color.rgb; -	vary_directional = gl_Color.rgb*atmosAffectDirectionalLight(max(calcDirectionalLight(norm, gl_LightSource[0].position.xyz), (1.0-gl_Color.a)*(1.0-gl_Color.a))); +	vary_ambient = col.rgb; +	vary_directional = atmosAffectDirectionalLight(max(calcDirectionalLight(norm, gl_LightSource[0].position.xyz), 0.0)); -	col.rgb = min(col.rgb*gl_Color.rgb, 1.0); +	col.rgb = min(col.rgb, 1.0);  	gl_FrontColor = col; diff --git a/indra/newview/app_settings/shaders/class2/deferred/edgeV.glsl b/indra/newview/app_settings/shaders/class2/deferred/edgeV.glsl index 9deff7bb2a..964f12afcf 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/edgeV.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/edgeV.glsl @@ -24,6 +24,7 @@   */ +attribute vec3 position;  varying vec2 vary_fragcoord;  uniform vec2 screen_res; @@ -31,7 +32,7 @@ uniform vec2 screen_res;  void main()  {  	//transform vertex -	gl_Position = ftransform();  -	vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex; +	vec4 pos = gl_ModelViewProjectionMatrix * vec4(position.xyz, 1.0); +	gl_Position = pos;   	vary_fragcoord = (pos.xy*0.5+0.5)*screen_res;  } diff --git a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl index 0b31cbefd1..4c92d72f44 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl @@ -54,7 +54,10 @@ uniform float sun_wash;  uniform int proj_shadow_idx;  uniform float shadow_fade; -varying vec4 vary_light; +uniform vec3 center; +uniform float size; +uniform vec3 color; +uniform float falloff;  varying vec4 vary_fragcoord;  uniform vec2 screen_res; @@ -128,9 +131,9 @@ void main()  	frag.xy *= screen_res;  	vec3 pos = getPosition(frag.xy).xyz; -	vec3 lv = vary_light.xyz-pos.xyz; +	vec3 lv = center.xyz-pos.xyz;  	float dist2 = dot(lv,lv); -	dist2 /= vary_light.w; +	dist2 /= size;  	if (dist2 > 1.0)  	{  		discard; @@ -161,7 +164,7 @@ void main()  	proj_tc.xyz /= proj_tc.w; -	float fa = gl_Color.a+1.0; +	float fa = falloff+1.0;  	float dist_atten = min(1.0-(dist2-1.0*(1.0-fa))/fa, 1.0);  	if (dist_atten <= 0.0)  	{ @@ -193,7 +196,7 @@ void main()  			vec4 plcol = texture2DLodDiffuse(projectionMap, proj_tc.xy, lod); -			vec3 lcol = gl_Color.rgb * plcol.rgb * plcol.a; +			vec3 lcol = color.rgb * plcol.rgb * plcol.a;  			lit = da * dist_atten * noise; @@ -210,7 +213,7 @@ void main()  		amb_da = min(amb_da, 1.0-lit); -		col += amb_da*gl_Color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a; +		col += amb_da*color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;  	} @@ -243,7 +246,7 @@ void main()  					stc.y > 0.0)  				{  					vec4 scol = texture2DLodSpecular(projectionMap, stc.xy, proj_lod-spec.a*proj_lod); -					col += dist_atten*scol.rgb*gl_Color.rgb*scol.a*spec.rgb*shadow; +					col += dist_atten*scol.rgb*color.rgb*scol.a*spec.rgb*shadow;  				}  			}  		} diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl index d7407332e5..22f52032a5 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl @@ -65,7 +65,8 @@ uniform mat3 ssao_effect_mat;  uniform mat4 inv_proj;  uniform vec2 screen_res; -varying vec4 vary_light; +uniform vec3 sun_dir; +  varying vec2 vary_fragcoord;  vec3 vary_PositionEye; @@ -282,7 +283,7 @@ void main()  	norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm  	//vec3 nz = texture2D(noiseMap, vary_fragcoord.xy/128.0).xyz; -	float da = max(dot(norm.xyz, vary_light.xyz), 0.0); +	float da = max(dot(norm.xyz, sun_dir.xyz), 0.0);  	vec4 diffuse = texture2DRect(diffuseRect, tc); @@ -309,7 +310,7 @@ void main()  			// the old infinite-sky shiny reflection  			//  			vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz)); -			float sa = dot(refnormpersp, vary_light.xyz); +			float sa = dot(refnormpersp, sun_dir.xyz);  			vec3 dumbshiny = vary_SunlitColor*scol_ambocc.r*texture2D(lightFunc, vec2(sa, spec.a)).a;  			// add the two types of shiny together diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl index fed238510a..e52edcba41 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl @@ -24,21 +24,18 @@   */ +attribute vec3 position;  uniform vec2 screen_res; -varying vec4 vary_light;  varying vec2 vary_fragcoord; +  void main()  {  	//transform vertex -	gl_Position = ftransform();  +	vec4 pos = gl_ModelViewProjectionMatrix * vec4(position.xyz, 1.0); +	gl_Position = pos;  -	vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex; -	vary_fragcoord = (pos.xy*0.5+0.5)*screen_res; -		 -	vec4 tex = gl_MultiTexCoord0; -	tex.w = 1.0; -	vary_light = gl_MultiTexCoord0; +	vary_fragcoord = (pos.xy*0.5+0.5)*screen_res;  } diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl index 681186d6b2..60741771d6 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl @@ -47,7 +47,7 @@ uniform float ssao_factor;  uniform float ssao_factor_inv;  varying vec2 vary_fragcoord; -varying vec4 vary_light; +uniform vec3 sun_dir;  uniform mat4 inv_proj;  uniform vec2 screen_res; @@ -184,10 +184,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 e7ab11c6ed..827ec15621 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/sunLightV.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightV.glsl @@ -23,6 +23,7 @@   * $/LicenseInfo$   */ +attribute vec3 position;  varying vec4 vary_light; @@ -33,13 +34,8 @@ uniform vec2 screen_res;  void main()  {  	//transform vertex -	gl_Position = ftransform();  -	vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex; -	vary_fragcoord = (pos.xy * 0.5 + 0.5)*screen_res;	 -	vec4 tex = gl_MultiTexCoord0; -	tex.w = 1.0; +	vec4 pos = gl_ModelViewProjectionMatrix * vec4(position.xyz, 1.0); +	gl_Position = pos;  -	vary_light = gl_MultiTexCoord0; -		 -	gl_FrontColor = gl_Color; +	vary_fragcoord = (pos.xy * 0.5 + 0.5)*screen_res;	  } | 
