diff options
Diffstat (limited to 'indra/newview/app_settings/shaders/class2')
5 files changed, 98 insertions, 115 deletions
| diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl index 8db4cb58cf..12706f130b 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl @@ -34,10 +34,10 @@ out vec4 frag_color;  VARYING vec4 vertex_color;  VARYING vec2 vary_texcoord0; -uniform sampler2DRectShadow shadowMap0; -uniform sampler2DRectShadow shadowMap1; -uniform sampler2DRectShadow shadowMap2; -uniform sampler2DRectShadow shadowMap3; +uniform sampler2DShadow shadowMap0; +uniform sampler2DShadow shadowMap1; +uniform sampler2DShadow shadowMap2; +uniform sampler2DShadow shadowMap3;  uniform sampler2DRect depthMap;  uniform mat4 shadow_matrix[6]; @@ -58,22 +58,22 @@ uniform float shadow_bias;  uniform mat4 inv_proj; -float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc) +float pcfShadow(sampler2DShadow shadowMap, vec4 stc)  {  	stc.xyz /= stc.w;  	stc.z += shadow_bias; - -	stc.x = floor(stc.x + fract(stc.y*12345)); // add some chaotic jitter to X sample pos according to Y to disguise the snapping going on here +		 +	stc.x = floor(stc.x*shadow_res.x + fract(stc.y*shadow_res.y*12345))/shadow_res.x; // add some chaotic jitter to X sample pos according to Y to disguise the snapping going on here -	float cs = shadow2DRect(shadowMap, stc.xyz).x; +	float cs = shadow2D(shadowMap, stc.xyz).x;  	float shadow = cs; - -        shadow += shadow2DRect(shadowMap, stc.xyz+vec3(2.0, 1.5, 0.0)).x; -        shadow += shadow2DRect(shadowMap, stc.xyz+vec3(1.0, -1.5, 0.0)).x; -        shadow += shadow2DRect(shadowMap, stc.xyz+vec3(-1.0, 1.5, 0.0)).x; -        shadow += shadow2DRect(shadowMap, stc.xyz+vec3(-2.0, -1.5, 0.0)).x; -                         -        return shadow*0.2; +	 +    shadow += shadow2D(shadowMap, stc.xyz+vec3(2.0/shadow_res.x, 1.5/shadow_res.y, 0.0)).x; +    shadow += shadow2D(shadowMap, stc.xyz+vec3(1.0/shadow_res.x, -1.5/shadow_res.y, 0.0)).x; +    shadow += shadow2D(shadowMap, stc.xyz+vec3(-1.0/shadow_res.x, 1.5/shadow_res.y, 0.0)).x; +    shadow += shadow2D(shadowMap, stc.xyz+vec3(-2.0/shadow_res.x, -1.5/shadow_res.y, 0.0)).x; +                        +    return shadow*0.2;  } @@ -99,8 +99,7 @@ void main()  		if (spos.z < near_split.z)  		{  			lpos = shadow_matrix[3]*spos; -			lpos.xy *= shadow_res; - +			  			float w = 1.0;  			w -= max(spos.z-far_split.z, 0.0)/transition_domain.z;  			shadow += pcfShadow(shadowMap3, lpos)*w; @@ -111,8 +110,7 @@ void main()  		if (spos.z < near_split.y && spos.z > far_split.z)  		{  			lpos = shadow_matrix[2]*spos; -			lpos.xy *= shadow_res; - +			  			float w = 1.0;  			w -= max(spos.z-far_split.y, 0.0)/transition_domain.y;  			w -= max(near_split.z-spos.z, 0.0)/transition_domain.z; @@ -123,8 +121,7 @@ void main()  		if (spos.z < near_split.x && spos.z > far_split.y)  		{  			lpos = shadow_matrix[1]*spos; -			lpos.xy *= shadow_res; - +			  			float w = 1.0;  			w -= max(spos.z-far_split.x, 0.0)/transition_domain.x;  			w -= max(near_split.y-spos.z, 0.0)/transition_domain.y; @@ -135,8 +132,7 @@ void main()  		if (spos.z > far_split.x)  		{  			lpos = shadow_matrix[0]*spos; -			lpos.xy *= shadow_res; -				 +							  			float w = 1.0;  			w -= max(near_split.x-spos.z, 0.0)/transition_domain.x; diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl index 33958a5010..228dc104ac 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl @@ -31,17 +31,16 @@ out vec4 frag_color;  #define frag_color gl_FragColor  #endif -uniform sampler2DRectShadow shadowMap0; -uniform sampler2DRectShadow shadowMap1; -uniform sampler2DRectShadow shadowMap2; -uniform sampler2DRectShadow shadowMap3; +uniform sampler2DShadow shadowMap0; +uniform sampler2DShadow shadowMap1; +uniform sampler2DShadow shadowMap2; +uniform sampler2DShadow 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); @@ -54,6 +53,7 @@ VARYING vec3 vary_pointlight_col;  VARYING vec2 vary_texcoord0;  VARYING vec4 vertex_color; +uniform vec2 shadow_res;  uniform float shadow_bias;  uniform mat4 inv_proj; @@ -71,22 +71,22 @@ vec4 getPosition(vec2 pos_screen)  	return pos;  } -float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc) +float pcfShadow(sampler2DShadow shadowMap, vec4 stc)  {  	stc.xyz /= stc.w;  	stc.z += shadow_bias; -	stc.x = floor(stc.x + fract(stc.y*12345)); // add some chaotic jitter to X sample pos according to Y to disguise the snapping going on here +	stc.x = floor(stc.x*shadow_res.x + fract(stc.y*12345))/shadow_res.x; // add some chaotic jitter to X sample pos according to Y to disguise the snapping going on here -	float cs = shadow2DRect(shadowMap, stc.xyz).x; +	float cs = shadow2D(shadowMap, stc.xyz).x;  	float shadow = cs; - -        shadow += shadow2DRect(shadowMap, stc.xyz+vec3(2.0, 1.5, 0.0)).x; -        shadow += shadow2DRect(shadowMap, stc.xyz+vec3(1.0, -1.5, 0.0)).x; -        shadow += shadow2DRect(shadowMap, stc.xyz+vec3(-1.0, 1.5, 0.0)).x; -        shadow += shadow2DRect(shadowMap, stc.xyz+vec3(-2.0, -1.5, 0.0)).x; +	 +    shadow += shadow2D(shadowMap, stc.xyz+vec3(2.0/shadow_res.x, 1.5/shadow_res.y, 0.0)).x; +    shadow += shadow2D(shadowMap, stc.xyz+vec3(1.0/shadow_res.x, -1.5/shadow_res.y, 0.0)).x; +    shadow += shadow2D(shadowMap, stc.xyz+vec3(-1.0/shadow_res.x, 1.5/shadow_res.y, 0.0)).x; +    shadow += shadow2D(shadowMap, stc.xyz+vec3(-2.0/shadow_res.x, -1.5/shadow_res.y, 0.0)).x; -        return shadow*0.2; +    return shadow*0.2;  } @@ -112,8 +112,7 @@ void main()  		if (spos.z < near_split.z)  		{  			lpos = shadow_matrix[3]*spos; -			lpos.xy *= shadow_res; - +			  			float w = 1.0;  			w -= max(spos.z-far_split.z, 0.0)/transition_domain.z;  			shadow += pcfShadow(shadowMap3, lpos)*w; @@ -124,8 +123,7 @@ void main()  		if (spos.z < near_split.y && spos.z > far_split.z)  		{  			lpos = shadow_matrix[2]*spos; -			lpos.xy *= shadow_res; - +			  			float w = 1.0;  			w -= max(spos.z-far_split.y, 0.0)/transition_domain.y;  			w -= max(near_split.z-spos.z, 0.0)/transition_domain.z; @@ -136,8 +134,7 @@ void main()  		if (spos.z < near_split.x && spos.z > far_split.y)  		{  			lpos = shadow_matrix[1]*spos; -			lpos.xy *= shadow_res; - +			  			float w = 1.0;  			w -= max(spos.z-far_split.x, 0.0)/transition_domain.x;  			w -= max(near_split.y-spos.z, 0.0)/transition_domain.y; @@ -148,8 +145,7 @@ void main()  		if (spos.z > far_split.x)  		{  			lpos = shadow_matrix[0]*spos; -			lpos.xy *= shadow_res; -				 +							  			float w = 1.0;  			w -= max(near_split.x-spos.z, 0.0)/transition_domain.x; diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl index 2093fc37dc..c3950a10e1 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl @@ -33,17 +33,16 @@ out vec4 frag_color;  uniform float minimum_alpha; -uniform sampler2DRectShadow shadowMap0; -uniform sampler2DRectShadow shadowMap1; -uniform sampler2DRectShadow shadowMap2; -uniform sampler2DRectShadow shadowMap3; +uniform sampler2DShadow shadowMap0; +uniform sampler2DShadow shadowMap1; +uniform sampler2DShadow shadowMap2; +uniform sampler2DShadow 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); @@ -55,6 +54,8 @@ VARYING vec3 vary_position;  VARYING vec3 vary_pointlight_col;  VARYING vec2 vary_texcoord0; +uniform vec2 shadow_res; +  uniform float shadow_bias;  uniform mat4 inv_proj; @@ -72,20 +73,20 @@ vec4 getPosition(vec2 pos_screen)  	return pos;  } -float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc) +float pcfShadow(sampler2DShadow shadowMap, vec4 stc)  {  	stc.xyz /= stc.w;  	stc.z += shadow_bias; -	stc.x = floor(stc.x + fract(stc.y*12345)); // add some chaotic jitter to X sample pos according to Y to disguise the snapping going on here +	stc.x = floor(stc.x*shadow_res.x + fract(stc.y*12345))/shadow_res.x; // add some chaotic jitter to X sample pos according to Y to disguise the snapping going on here +	float cs = shadow2D(shadowMap, stc.xyz).x; -	float cs = shadow2DRect(shadowMap, stc.xyz).x;  	float shadow = cs; -        shadow += shadow2DRect(shadowMap, stc.xyz+vec3(2.0, 1.5, 0.0)).x; -        shadow += shadow2DRect(shadowMap, stc.xyz+vec3(1.0, -1.5, 0.0)).x; -        shadow += shadow2DRect(shadowMap, stc.xyz+vec3(-1.0, 1.5, 0.0)).x; -        shadow += shadow2DRect(shadowMap, stc.xyz+vec3(-2.0, -1.5, 0.0)).x; +        shadow += shadow2D(shadowMap, stc.xyz+vec3(2.0/shadow_res.x, 1.5/shadow_res.y, 0.0)).x; +        shadow += shadow2D(shadowMap, stc.xyz+vec3(1.0/shadow_res.x, -1.5/shadow_res.y, 0.0)).x; +        shadow += shadow2D(shadowMap, stc.xyz+vec3(-1.0/shadow_res.x, 1.5/shadow_res.y, 0.0)).x; +        shadow += shadow2D(shadowMap, stc.xyz+vec3(-2.0/shadow_res.x, -1.5/shadow_res.y, 0.0)).x;          return shadow*0.2;  } @@ -120,8 +121,7 @@ void main()  		if (spos.z < near_split.z)  		{  			lpos = shadow_matrix[3]*spos; -			lpos.xy *= shadow_res; - +			  			float w = 1.0;  			w -= max(spos.z-far_split.z, 0.0)/transition_domain.z;  			shadow += pcfShadow(shadowMap3, lpos)*w; @@ -132,8 +132,7 @@ void main()  		if (spos.z < near_split.y && spos.z > far_split.z)  		{  			lpos = shadow_matrix[2]*spos; -			lpos.xy *= shadow_res; - +			  			float w = 1.0;  			w -= max(spos.z-far_split.y, 0.0)/transition_domain.y;  			w -= max(near_split.z-spos.z, 0.0)/transition_domain.z; @@ -144,8 +143,7 @@ void main()  		if (spos.z < near_split.x && spos.z > far_split.y)  		{  			lpos = shadow_matrix[1]*spos; -			lpos.xy *= shadow_res; - +			  			float w = 1.0;  			w -= max(spos.z-far_split.x, 0.0)/transition_domain.x;  			w -= max(near_split.y-spos.z, 0.0)/transition_domain.y; @@ -156,8 +154,7 @@ void main()  		if (spos.z > far_split.x)  		{  			lpos = shadow_matrix[0]*spos; -			lpos.xy *= shadow_res; -				 +							  			float w = 1.0;  			w -= max(near_split.x-spos.z, 0.0)/transition_domain.x; diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl index 92d8adbb79..890486c4b1 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl @@ -35,10 +35,10 @@ out vec4 frag_color;  uniform sampler2DRect depthMap;  uniform sampler2DRect normalMap; -uniform sampler2DRectShadow shadowMap0; -uniform sampler2DRectShadow shadowMap1; -uniform sampler2DRectShadow shadowMap2; -uniform sampler2DRectShadow shadowMap3; +uniform sampler2DShadow shadowMap0; +uniform sampler2DShadow shadowMap1; +uniform sampler2DShadow shadowMap2; +uniform sampler2DShadow shadowMap3;  uniform sampler2DShadow shadowMap4;  uniform sampler2DShadow shadowMap5; @@ -55,10 +55,10 @@ VARYING vec2 vary_fragcoord;  uniform mat4 inv_proj;  uniform vec2 screen_res; -uniform vec2 shadow_res;  uniform vec2 proj_shadow_res;  uniform vec3 sun_dir; +uniform vec2 shadow_res;  uniform float shadow_bias;  uniform float shadow_offset; @@ -78,30 +78,31 @@ vec4 getPosition(vec2 pos_screen)  	return pos;  } -float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc, float scl, vec2 pos_screen) +float pcfShadow(sampler2DShadow shadowMap, vec4 stc, float scl, vec2 pos_screen)  {  	stc.xyz /= stc.w; -	stc.z += shadow_bias*scl; +	stc.z += shadow_bias; -	stc.x = floor(stc.x + fract(pos_screen.y*0.666666666)); // add some jitter to X sample pos according to Y to disguise the snapping going on here +	stc.x = floor(stc.x*shadow_res.x + fract(pos_screen.y*0.666666666))/shadow_res.x; // add some jitter to X sample pos according to Y to disguise the snapping going on here +	float cs = shadow2D(shadowMap, stc.xyz).x; -	float cs = shadow2DRect(shadowMap, stc.xyz).x;  	float shadow = cs; -	shadow += shadow2DRect(shadowMap, stc.xyz+vec3(2.0, 1.5, 0.0)).x; -	shadow += shadow2DRect(shadowMap, stc.xyz+vec3(1.0, -1.5, 0.0)).x; -	shadow += shadow2DRect(shadowMap, stc.xyz+vec3(-2.0, 1.5, 0.0)).x; -	shadow += shadow2DRect(shadowMap, stc.xyz+vec3(-1.0, -1.5, 0.0)).x; +	shadow += shadow2D(shadowMap, stc.xyz+vec3(2.0/shadow_res.x, 1.5/shadow_res.y, 0.0)).x; +	shadow += shadow2D(shadowMap, stc.xyz+vec3(1.0/shadow_res.x, -1.5/shadow_res.y, 0.0)).x; +	shadow += shadow2D(shadowMap, stc.xyz+vec3(-2.0/shadow_res.x, 1.5/shadow_res.y, 0.0)).x; +	shadow += shadow2D(shadowMap, stc.xyz+vec3(-1.0/shadow_res.x, -1.5/shadow_res.y, 0.0)).x; + -        return shadow*0.2; +    return shadow*0.2;  } -float pcfShadow(sampler2DShadow shadowMap, vec4 stc, float scl, vec2 pos_screen) +float pcfSpotShadow(sampler2DShadow shadowMap, vec4 stc, float scl, vec2 pos_screen)  {  	stc.xyz /= stc.w;  	stc.z += spot_shadow_bias*scl;  	stc.x = floor(proj_shadow_res.x * stc.x + fract(pos_screen.y*0.666666666)) / proj_shadow_res.x; // snap -	 +  	float cs = shadow2D(shadowMap, stc.xyz).x;  	float shadow = cs; @@ -162,8 +163,7 @@ void main()  			if (spos.z < near_split.z)  			{  				lpos = shadow_matrix[3]*spos; -				lpos.xy *= shadow_res; - +				  				float w = 1.0;  				w -= max(spos.z-far_split.z, 0.0)/transition_domain.z;  				shadow += pcfShadow(shadowMap3, lpos, 0.25, pos_screen)*w; @@ -174,8 +174,7 @@ void main()  			if (spos.z < near_split.y && spos.z > far_split.z)  			{  				lpos = shadow_matrix[2]*spos; -				lpos.xy *= shadow_res; - +				  				float w = 1.0;  				w -= max(spos.z-far_split.y, 0.0)/transition_domain.y;  				w -= max(near_split.z-spos.z, 0.0)/transition_domain.z; @@ -186,7 +185,6 @@ void main()  			if (spos.z < near_split.x && spos.z > far_split.y)  			{  				lpos = shadow_matrix[1]*spos; -				lpos.xy *= shadow_res;  				float w = 1.0;  				w -= max(spos.z-far_split.x, 0.0)/transition_domain.x; @@ -198,7 +196,6 @@ void main()  			if (spos.z > far_split.x)  			{  				lpos = shadow_matrix[0]*spos; -				lpos.xy *= shadow_res;  				float w = 1.0;  				w -= max(near_split.x-spos.z, 0.0)/transition_domain.x; @@ -237,11 +234,11 @@ void main()  	//spotlight shadow 1  	vec4 lpos = shadow_matrix[4]*spos; -	frag_color[2] = pcfShadow(shadowMap4, lpos, 0.8, pos_screen);  +	frag_color[2] = pcfSpotShadow(shadowMap4, lpos, 0.8, pos_screen);   	//spotlight shadow 2  	lpos = shadow_matrix[5]*spos; -	frag_color[3] = pcfShadow(shadowMap5, lpos, 0.8, pos_screen);  +	frag_color[3] = pcfSpotShadow(shadowMap5, lpos, 0.8, pos_screen);   	//frag_color.rgb = pos.xyz;  	//frag_color.b = shadow; diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl index 08543e5fdf..2dcd3d656f 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl @@ -34,10 +34,10 @@ out vec4 frag_color;  uniform sampler2DRect depthMap;  uniform sampler2DRect normalMap; -uniform sampler2DRectShadow shadowMap0; -uniform sampler2DRectShadow shadowMap1; -uniform sampler2DRectShadow shadowMap2; -uniform sampler2DRectShadow shadowMap3; +uniform sampler2DShadow shadowMap0; +uniform sampler2DShadow shadowMap1; +uniform sampler2DShadow shadowMap2; +uniform sampler2DShadow shadowMap3;  uniform sampler2DShadow shadowMap4;  uniform sampler2DShadow shadowMap5;  uniform sampler2D noiseMap; @@ -55,10 +55,11 @@ VARYING vec2 vary_fragcoord;  uniform mat4 inv_proj;  uniform vec2 screen_res; -uniform vec2 shadow_res;  uniform vec2 proj_shadow_res;  uniform vec3 sun_dir; +uniform vec2 shadow_res; +  uniform float shadow_bias;  uniform float shadow_offset; @@ -139,30 +140,30 @@ float calcAmbientOcclusion(vec4 pos, vec3 norm)  	return min(ret, 1.0);  } -float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc, float scl, vec2 pos_screen) +float pcfShadow(sampler2DShadow shadowMap, vec4 stc, float scl, vec2 pos_screen)  {  	stc.xyz /= stc.w; -	stc.z += shadow_bias*scl; +	stc.z += shadow_bias; -	stc.x = floor(stc.x + fract(pos_screen.y*0.666666666)); +	stc.x = floor(stc.x*shadow_res.x + fract(pos_screen.y*0.666666666))/shadow_res.x; +	float cs = shadow2D(shadowMap, stc.xyz).x; -	float cs = shadow2DRect(shadowMap, stc.xyz).x;  	float shadow = cs; -	shadow += shadow2DRect(shadowMap, stc.xyz+vec3(2.0, 1.5, 0.0)).x; -        shadow += shadow2DRect(shadowMap, stc.xyz+vec3(1.0, -1.5, 0.0)).x; -        shadow += shadow2DRect(shadowMap, stc.xyz+vec3(-1.0, 1.5, 0.0)).x; -        shadow += shadow2DRect(shadowMap, stc.xyz+vec3(-2.0, -1.5, 0.0)).x; -                         +	shadow += shadow2D(shadowMap, stc.xyz+vec3(2.0/shadow_res.x, 1.5/shadow_res.y, 0.0)).x; +    shadow += shadow2D(shadowMap, stc.xyz+vec3(1.0/shadow_res.x, -1.5/shadow_res.y, 0.0)).x; +    shadow += shadow2D(shadowMap, stc.xyz+vec3(-1.0/shadow_res.x, 1.5/shadow_res.y, 0.0)).x; +    shadow += shadow2D(shadowMap, stc.xyz+vec3(-2.0/shadow_res.x, -1.5/shadow_res.y, 0.0)).x; +	                   return shadow*0.2;  } -float pcfShadow(sampler2DShadow shadowMap, vec4 stc, float scl, vec2 pos_screen) +float pcfSpotShadow(sampler2DShadow shadowMap, vec4 stc, float scl, vec2 pos_screen)  {  	stc.xyz /= stc.w;  	stc.z += spot_shadow_bias*scl;  	stc.x = floor(proj_shadow_res.x * stc.x + fract(pos_screen.y*0.666666666)) / proj_shadow_res.x; // snap -	 +		  	float cs = shadow2D(shadowMap, stc.xyz).x;  	float shadow = cs; @@ -223,8 +224,7 @@ void main()  			if (spos.z < near_split.z)  			{  				lpos = shadow_matrix[3]*spos; -				lpos.xy *= shadow_res; - +				  				float w = 1.0;  				w -= max(spos.z-far_split.z, 0.0)/transition_domain.z;  				shadow += pcfShadow(shadowMap3, lpos, 0.25, pos_screen)*w; @@ -235,8 +235,7 @@ void main()  			if (spos.z < near_split.y && spos.z > far_split.z)  			{  				lpos = shadow_matrix[2]*spos; -				lpos.xy *= shadow_res; - +				  				float w = 1.0;  				w -= max(spos.z-far_split.y, 0.0)/transition_domain.y;  				w -= max(near_split.z-spos.z, 0.0)/transition_domain.z; @@ -247,8 +246,7 @@ void main()  			if (spos.z < near_split.x && spos.z > far_split.y)  			{  				lpos = shadow_matrix[1]*spos; -				lpos.xy *= shadow_res; - +				  				float w = 1.0;  				w -= max(spos.z-far_split.x, 0.0)/transition_domain.x;  				w -= max(near_split.y-spos.z, 0.0)/transition_domain.y; @@ -259,8 +257,7 @@ void main()  			if (spos.z > far_split.x)  			{  				lpos = shadow_matrix[0]*spos; -				lpos.xy *= shadow_res; -				 +								  				float w = 1.0;  				w -= max(near_split.x-spos.z, 0.0)/transition_domain.x; @@ -298,11 +295,11 @@ void main()  	//spotlight shadow 1  	vec4 lpos = shadow_matrix[4]*spos; -	frag_color[2] = pcfShadow(shadowMap4, lpos, 0.8, pos_screen); +	frag_color[2] = pcfSpotShadow(shadowMap4, lpos, 0.8, pos_screen);  	//spotlight shadow 2  	lpos = shadow_matrix[5]*spos; -	frag_color[3] = pcfShadow(shadowMap5, lpos, 0.8, pos_screen); +	frag_color[3] = pcfSpotShadow(shadowMap5, lpos, 0.8, pos_screen);  	//frag_color.rgb = pos.xyz;  	//frag_color.b = shadow; | 
