diff options
| author | Dave Parks <davep@lindenlab.com> | 2010-03-19 18:14:17 -0500 | 
|---|---|---|
| committer | Dave Parks <davep@lindenlab.com> | 2010-03-19 18:14:17 -0500 | 
| commit | bbfacbd50d6e8beac36fd8de1dc51ceb109a4a7d (patch) | |
| tree | 172caf45aec0f278555043d3bcdfd70fd91deb15 /indra/newview/app_settings/shaders/class2 | |
| parent | d4699a1b0e922258682d9b6e164a5bcc6bbd7238 (diff) | |
RenderDeferredSSAO works as an independent setting -- decoupled shadows from SSAO.
Diffstat (limited to 'indra/newview/app_settings/shaders/class2')
4 files changed, 4 insertions, 77 deletions
| diff --git a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl index 3e29c684e8..5308e5bb1e 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl @@ -230,9 +230,6 @@ void main()  		}  	} -	//attenuate point light contribution by SSAO component -	col *= texture2DRect(lightMap, frag.xy).g; -	  	gl_FragColor.rgb = col;	  	gl_FragColor.a = 0.0;  } diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl index 249ac7ef9b..589a292751 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl @@ -11,6 +11,7 @@ uniform sampler2DRect diffuseRect;  uniform sampler2DRect specularRect;  uniform sampler2DRect normalMap;  uniform sampler2DRect lightMap; +uniform sampler2DRect depthMap;  uniform sampler2D	  noiseMap;  uniform samplerCube environmentMap;  uniform sampler2D	  lightFunc; @@ -41,7 +42,6 @@ uniform vec3 env_mat[3];  uniform vec4 shadow_clip;  uniform mat3 ssao_effect_mat; -uniform sampler2DRect depthMap;  uniform mat4 inv_proj;  uniform vec2 screen_res; @@ -282,13 +282,5 @@ void main()  	col = scaleSoftClip(col);  	gl_FragColor.rgb = col; -	 -	//gl_FragColor.rgb = gi_col.rgb;  	gl_FragColor.a = 0.0; -	 -	//gl_FragColor.rg = scol_ambocc.rg; -	//gl_FragColor.rgb = texture2DRect(lightMap, vary_fragcoord.xy).rgb; -	//gl_FragColor.rgb = norm.rgb*0.5+0.5; -	//gl_FragColor.rgb = vec3(ambocc); -	//gl_FragColor.rgb = vec3(scol);  } diff --git a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl index 6617e33c0d..eeaecc157f 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl @@ -179,10 +179,6 @@ void main()  		}  	} -	//attenuate point light contribution by SSAO component -	col *= texture2DRect(lightMap, frag.xy).g; -	 -  	gl_FragColor.rgb = col;	  	gl_FragColor.a = 0.0;  } diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl index 50502dbdad..04c9a4d19a 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl @@ -7,6 +7,8 @@  #extension GL_ARB_texture_rectangle : enable +//class 2, shadows, no SSAO +  uniform sampler2DRect depthMap;  uniform sampler2DRect normalMap;  uniform sampler2DRectShadow shadowMap0; @@ -52,66 +54,6 @@ vec4 getPosition(vec2 pos_screen)  	return pos;  } -//calculate decreases in ambient lighting when crowded out (SSAO) -float calcAmbientOcclusion(vec4 pos, vec3 norm) -{ -	float ret = 1.0; -	 -	float dist = dot(pos.xyz,pos.xyz); -	 -	if (dist < 64.0*64.0) -	{ -		vec2 kern[8]; -		// exponentially (^2) distant occlusion samples spread around origin -		kern[0] = vec2(-1.0, 0.0) * 0.125*0.125; -		kern[1] = vec2(1.0, 0.0) * 0.250*0.250; -		kern[2] = vec2(0.0, 1.0) * 0.375*0.375; -		kern[3] = vec2(0.0, -1.0) * 0.500*0.500; -		kern[4] = vec2(0.7071, 0.7071) * 0.625*0.625; -		kern[5] = vec2(-0.7071, -0.7071) * 0.750*0.750; -		kern[6] = vec2(-0.7071, 0.7071) * 0.875*0.875; -		kern[7] = vec2(0.7071, -0.7071) * 1.000*1.000; - -		vec2 pos_screen = vary_fragcoord.xy; -		vec3 pos_world = pos.xyz; -		vec2 noise_reflect = texture2D(noiseMap, vary_fragcoord.xy/128.0).xy; -		 -		float angle_hidden = 0.0; -		int points = 0; -		 -		float scale = min(ssao_radius / -pos_world.z, ssao_max_radius); -		 -		// it was found that keeping # of samples a constant was the fastest, probably due to compiler optimizations (unrolling?) -		for (int i = 0; i < 8; i++) -		{ -			vec2 samppos_screen = pos_screen + scale * reflect(kern[i], noise_reflect); -			vec3 samppos_world = getPosition(samppos_screen).xyz;  -			 -			vec3 diff = pos_world - samppos_world; -			float dist2 = dot(diff, diff); -			 -			// assume each sample corresponds to an occluding sphere with constant radius, constant x-sectional area -			// --> solid angle shrinking by the square of distance -			//radius is somewhat arbitrary, can approx with just some constant k * 1 / dist^2 -			//(k should vary inversely with # of samples, but this is taken care of later) -			 -			//if (dot((samppos_world - 0.05*norm - pos_world), norm) > 0.0)  // -0.05*norm to shift sample point back slightly for flat surfaces -			//	angle_hidden += min(1.0/dist2, ssao_factor_inv); // dist != 0 follows from conditional.  max of 1.0 (= ssao_factor_inv * ssao_factor) -			angle_hidden = angle_hidden + float(dot((samppos_world - 0.05*norm - pos_world), norm) > 0.0) * min(1.0/dist2, ssao_factor_inv); -			 -			// 'blocked' samples (significantly closer to camera relative to pos_world) are "no data", not "no occlusion"  -			points = points + int(diff.z > -1.0); -		} -		 -		angle_hidden = min(ssao_factor*angle_hidden/float(points), 1.0); -		 -		ret = (1.0 - (float(points != 0) * angle_hidden)); -		ret += max((dist-32.0*32.0)/(32.0*32.0), 0.0); -	} -	 -	return min(ret, 1.0); -} -  float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc, float scl)  {  	stc.xyz /= stc.w; @@ -232,7 +174,7 @@ void main()  	}  	gl_FragColor[0] = shadow; -	gl_FragColor[1] = calcAmbientOcclusion(pos, norm); +	gl_FragColor[1] = 1.0;  	//spotlight shadow 1  	vec4 lpos = shadow_matrix[4]*spos; | 
