diff options
| author | Oz Linden <oz@lindenlab.com> | 2011-08-03 14:13:12 -0400 | 
|---|---|---|
| committer | Oz Linden <oz@lindenlab.com> | 2011-08-03 14:13:12 -0400 | 
| commit | 299e18e588338d19a40a4b9944e9ddd31216b0c8 (patch) | |
| tree | 985a3fe37b693cf377c953a880c967f5e29b2abc /indra/newview/app_settings | |
| parent | 01ee25cca43b175567859becd1eacf77db24af55 (diff) | |
| parent | 93099e22897c8650927b0dc90a4a38e2a7cf81d8 (diff) | |
Automated merge with file:///Users/oz/Work/V-PR
Diffstat (limited to 'indra/newview/app_settings')
25 files changed, 371 insertions, 208 deletions
| diff --git a/indra/newview/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml index 9f4e89691f..ae72dee900 100644 --- a/indra/newview/app_settings/logcontrol.xml +++ b/indra/newview/app_settings/logcontrol.xml @@ -44,7 +44,6 @@  						<array>  							<!-- sample entry for debugging a specific item	-->  <!--						<string>Voice</string>							--> -              <string>Capabilities</string>  						</array>  				</map>  			</array> diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 27c3e42a37..34890b23eb 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -3848,7 +3848,7 @@        <key>Type</key>        <string>String</string>        <key>Value</key> -      <string>https://www.xstreetsl.com/modules.php?name=Marketplace&CategoryID=233</string> +      <string>https://marketplace.secondlife.com/products/search?search[category_id]=200&search[maturity][]=General&search[page]=1&search[per_page]=12</string>      </map>      <key>GridCrossSections</key>      <map> @@ -4872,7 +4872,7 @@        <key>Type</key>        <string>String</string>        <key>Value</key> -      <string>http://viewer-login.agni.lindenlab.com/</string> +      <string/>      </map>      <key>LosslessJ2CUpload</key>      <map> @@ -12578,7 +12578,7 @@      <key>WatchdogEnabled</key>      <map>        <key>Comment</key> -      <string>Controls whether the thread watchdog timer is activated.</string> +      <string>Controls whether the thread watchdog timer is activated. Value is boolean. Set to -1 to defer to built-in default.</string>        <key>Persist</key>        <integer>0</integer>        <key>Type</key> diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl index 60082f40d6..d327216a0c 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl @@ -270,72 +270,41 @@ void main()  	vec4 diffuse = texture2DRect(diffuseRect, tc);  	vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy); -	calcAtmospherics(pos.xyz, 1.0); +	vec3 col; +	float bloom = 0.0; +	if (diffuse.a < 0.9) +	{ +		calcAtmospherics(pos.xyz, 1.0); +	 +		col = atmosAmbient(vec3(0)); +		col += atmosAffectDirectionalLight(max(min(da, 1.0), diffuse.a)); -	vec3 col = atmosAmbient(vec3(0)); -	col += atmosAffectDirectionalLight(max(min(da, 1.0), diffuse.a)); +		col *= diffuse.rgb; -	col *= diffuse.rgb; +		if (spec.a > 0.0) // specular reflection +		{ +			// the old infinite-sky shiny reflection +			// +			vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz)); +			float sa = dot(refnormpersp, vary_light.xyz); +			vec3 dumbshiny = vary_SunlitColor*texture2D(lightFunc, vec2(sa, spec.a)).a; +			 +			// add the two types of shiny together +			vec3 spec_contrib = dumbshiny * spec.rgb; +			bloom = dot(spec_contrib, spec_contrib); +			col += spec_contrib; +		} -	if (spec.a > 0.0) // specular reflection +		col = atmosLighting(col); +		col = scaleSoftClip(col); + +		col = mix(col.rgb, diffuse.rgb, diffuse.a); +	} +	else  	{ -		// the old infinite-sky shiny reflection -		// -		vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz)); -		float sa = dot(refnormpersp, vary_light.xyz); -		vec3 dumbshiny = vary_SunlitColor*texture2D(lightFunc, vec2(sa, spec.a)).a; - -		/* -		// screen-space cheap fakey reflection map -		// -		vec3 refnorm = normalize(reflect(vec3(0,0,-1), norm.xyz)); -		depth -= 0.5; // unbias depth -		// first figure out where we'll make our 2D guess from -		vec2 ref2d = (0.25 * screen_res.y) * (refnorm.xy) * abs(refnorm.z) / depth; -		// Offset the guess source a little according to a trivial -		// checkerboard dither function and spec.a. -		// This is meant to be similar to sampling a blurred version -		// of the diffuse map.  LOD would be better in that regard. -		// The goal of the blur is to soften reflections in surfaces -		// with low shinyness, and also to disguise our lameness. -		float checkerboard = floor(mod(tc.x+tc.y, 2.0)); // 0.0, 1.0 -		float checkoffset = (3.0 + (7.0*(1.0-spec.a)))*(checkerboard-0.5); -		ref2d += vec2(checkoffset, checkoffset); -		ref2d += tc.xy; // use as offset from destination -		// Get attributes from the 2D guess point. -		// We average two samples of diffuse (not of anything else) per -		// pixel to try to reduce aliasing some more. -		vec3 refcol = 0.5 * (texture2DRect(diffuseRect, ref2d + vec2(0.0, -checkoffset)).rgb + -				     texture2DRect(diffuseRect, ref2d + vec2(-checkoffset, 0.0)).rgb); -		float refdepth = texture2DRect(depthMap, ref2d).a; -		vec3 refpos = getPosition_d(ref2d, refdepth).xyz; -		vec3 refn = texture2DRect(normalMap, ref2d).rgb; -		refn = normalize(vec3((refn.xy-0.5)*2.0,refn.z)); // unpack norm -		// figure out how appropriate our guess actually was -		float refapprop = max(0.0, dot(-refnorm, normalize(pos - refpos))); -		// darken reflections from points which face away from the reflected ray - our guess was a back-face -		//refapprop *= step(dot(refnorm, refn), 0.0); -		refapprop = min(refapprop, max(0.0, -dot(refnorm, refn))); // more conservative variant -		// get appropriate light strength for guess-point. -		// reflect light direction to increase the illusion that -		// these are reflections. -		vec3 reflight = reflect(lightnorm.xyz, norm.xyz); -		float reflit = max(dot(refn, reflight.xyz), 0.0); -		// apply sun color to guess-point, dampen according to inappropriateness of guess -		float refmod = min(refapprop, reflit); -		vec3 refprod = vary_SunlitColor * refcol.rgb * refmod; -		vec3 ssshiny = (refprod * spec.a); -		ssshiny *= 0.3; // dampen it even more -		*/ -		vec3 ssshiny = vec3(0,0,0); - -		// add the two types of shiny together -		col += (ssshiny + dumbshiny) * spec.rgb; +		col = diffuse.rgb;  	} -	 -	col = atmosLighting(col); -	col = scaleSoftClip(col); -		 +  	gl_FragColor.rgb = col; -	gl_FragColor.a = 0.0; +	gl_FragColor.a = bloom;  } diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightMSF.glsl index 9dfacfb520..2cce43e2bf 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/softenLightMSF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightMSF.glsl @@ -266,7 +266,7 @@ void main()  	vec2 tc = vary_fragcoord.xy;  	ivec2 itc = ivec2(tc); -	vec3 fcol = vec3(0,0,0); +	vec4 fcol = vec4(0,0,0,0);  	for (int i = 0; i < samples; ++i)  	{ @@ -280,17 +280,16 @@ void main()  		float da = max(dot(norm.xyz, vary_light.xyz), 0.0);  		vec4 diffuse = texelFetch(diffuseRect, itc, i); -		if (diffuse.a >= 1.0) -		{ -			fcol += diffuse.rgb; -		} -		else +		vec3 col; +		float bloom = 0.0; + +		if (diffuse.a < 0.9)  		{  			vec4 spec = texelFetch(specularRect, itc, i);  			calcAtmospherics(pos.xyz, 1.0); -			vec3 col = atmosAmbient(vec3(0)); +			col = atmosAmbient(vec3(0));  			col += atmosAffectDirectionalLight(max(min(da, 1.0), diffuse.a));  			col *= diffuse.rgb; @@ -304,15 +303,22 @@ void main()  				vec3 dumbshiny = vary_SunlitColor*texture2D(lightFunc, vec2(sa, spec.a)).a;  				// add the two types of shiny together -				col += dumbshiny * spec.rgb; +				vec3 spec_contrib = dumbshiny * spec.rgb; +				bloom = dot(spec_contrib, spec_contrib); +				col += spec_contrib;  			}  			col = atmosLighting(col);  			col = scaleSoftClip(col); -			fcol += col; +			col = mix(col, diffuse.rgb, diffuse.a);  		} +		else +		{ +			col = diffuse.rgb; +		} + +		fcol += vec4(col, bloom);  	} -	gl_FragColor.rgb = fcol.rgb/samples; -	gl_FragColor.a = 0.0; +	gl_FragColor = fcol/samples;  } diff --git a/indra/newview/app_settings/shaders/class1/interface/customalphaF.glsl b/indra/newview/app_settings/shaders/class1/interface/customalphaF.glsl new file mode 100644 index 0000000000..3827c72f4c --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/interface/customalphaF.glsl @@ -0,0 +1,17 @@ +/**  + * @file customalphaF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ +  +uniform sampler2D diffuseMap; + +uniform float custom_alpha; + +void main()  +{ +	vec4 color = gl_Color*texture2D(diffuseMap, gl_TexCoord[0].xy); +	color.a *= custom_alpha; +	gl_FragColor = color; +} diff --git a/indra/newview/app_settings/shaders/class1/interface/customalphaV.glsl b/indra/newview/app_settings/shaders/class1/interface/customalphaV.glsl new file mode 100644 index 0000000000..04bfff22c1 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/interface/customalphaV.glsl @@ -0,0 +1,16 @@ +/**  + * @file customalphaV.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ +  + + +void main() +{ +	gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; +	gl_TexCoord[0] = gl_MultiTexCoord0; +	gl_FrontColor = gl_Color; +} + diff --git a/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl b/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl new file mode 100644 index 0000000000..a60fb1eaa7 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl @@ -0,0 +1,17 @@ +/**  + * @file glowcombineF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ +  +#extension GL_ARB_texture_rectangle : enable + +uniform sampler2D glowMap; +uniform sampler2DRect screenMap; + +void main()  +{ +	gl_FragColor = texture2D(glowMap, gl_TexCoord[0].xy) + +					texture2DRect(screenMap, gl_TexCoord[1].xy); +} diff --git a/indra/newview/app_settings/shaders/class1/interface/glowcombineV.glsl b/indra/newview/app_settings/shaders/class1/interface/glowcombineV.glsl new file mode 100644 index 0000000000..ce183ec154 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/interface/glowcombineV.glsl @@ -0,0 +1,15 @@ +/**  + * @file glowcombineV.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ +  + +void main() +{ +	gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; +	gl_TexCoord[0] = gl_MultiTexCoord0; +	gl_TexCoord[1] = gl_MultiTexCoord1; +} + diff --git a/indra/newview/app_settings/shaders/class1/interface/occlusionF.glsl b/indra/newview/app_settings/shaders/class1/interface/occlusionF.glsl new file mode 100644 index 0000000000..b140712f18 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/interface/occlusionF.glsl @@ -0,0 +1,11 @@ +/**  + * @file occlusionF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ +  +void main()  +{ +	gl_FragColor = vec4(1,1,1,1); +} diff --git a/indra/newview/app_settings/shaders/class1/interface/occlusionV.glsl b/indra/newview/app_settings/shaders/class1/interface/occlusionV.glsl new file mode 100644 index 0000000000..5a5d0ec506 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/interface/occlusionV.glsl @@ -0,0 +1,12 @@ +/**  + * @file uiV.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +void main() +{ +	gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; +} + diff --git a/indra/newview/app_settings/shaders/class1/interface/solidcolorF.glsl b/indra/newview/app_settings/shaders/class1/interface/solidcolorF.glsl new file mode 100644 index 0000000000..5b7cc57574 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/interface/solidcolorF.glsl @@ -0,0 +1,15 @@ +/**  + * @file twotextureaddF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ +  +uniform sampler2D tex0; + +void main()  +{ +	float alpha = texture2D(tex0, gl_TexCoord[0].xy).a * gl_Color.a; + +	gl_FragColor = vec4(gl_Color.rgb, alpha); +} diff --git a/indra/newview/app_settings/shaders/class1/interface/solidcolorV.glsl b/indra/newview/app_settings/shaders/class1/interface/solidcolorV.glsl new file mode 100644 index 0000000000..8401208e28 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/interface/solidcolorV.glsl @@ -0,0 +1,16 @@ +/**  + * @file solidcolorV.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ +  + + +void main() +{ +	gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; +	gl_FrontColor = gl_Color; +	gl_TexCoord[0] = gl_MultiTexCoord0; +} + diff --git a/indra/newview/app_settings/shaders/class1/interface/twotextureaddF.glsl b/indra/newview/app_settings/shaders/class1/interface/twotextureaddF.glsl new file mode 100644 index 0000000000..d81b56fdb9 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/interface/twotextureaddF.glsl @@ -0,0 +1,14 @@ +/**  + * @file twotextureaddF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ +  +uniform sampler2D tex0; +uniform sampler2D tex1; + +void main()  +{ +	gl_FragColor = texture2D(tex0, gl_TexCoord[0].xy)+texture2D(tex1, gl_TexCoord[1].xy); +} diff --git a/indra/newview/app_settings/shaders/class1/interface/twotextureaddV.glsl b/indra/newview/app_settings/shaders/class1/interface/twotextureaddV.glsl new file mode 100644 index 0000000000..f685b112b4 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/interface/twotextureaddV.glsl @@ -0,0 +1,16 @@ +/**  + * @file twotextureaddV.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ +  + + +void main() +{ +	gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; +	gl_TexCoord[0] = gl_MultiTexCoord0; +	gl_TexCoord[1] = gl_MultiTexCoord1; +} + diff --git a/indra/newview/app_settings/shaders/class1/interface/uiF.glsl b/indra/newview/app_settings/shaders/class1/interface/uiF.glsl new file mode 100644 index 0000000000..9dec7a56ba --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/interface/uiF.glsl @@ -0,0 +1,13 @@ +/**  + * @file uiF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ +  +uniform sampler2D diffuseMap; + +void main()  +{ +	gl_FragColor = gl_Color*texture2D(diffuseMap, gl_TexCoord[0].xy); +} diff --git a/indra/newview/app_settings/shaders/class1/interface/uiV.glsl b/indra/newview/app_settings/shaders/class1/interface/uiV.glsl new file mode 100644 index 0000000000..9ca6cae5c5 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/interface/uiV.glsl @@ -0,0 +1,16 @@ +/**  + * @file uiV.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ +  + + +void main() +{ +	gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; +	gl_TexCoord[0] = gl_MultiTexCoord0; +	gl_FrontColor = gl_Color; +} + diff --git a/indra/newview/app_settings/shaders/class1/objects/bumpF.glsl b/indra/newview/app_settings/shaders/class1/objects/bumpF.glsl new file mode 100644 index 0000000000..587ab93a80 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/objects/bumpF.glsl @@ -0,0 +1,17 @@ +/**  + * @file bumpF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ +  +uniform sampler2D texture0; +uniform sampler2D texture1; + +void main()  +{ +	float tex0 = texture2D(texture0, gl_TexCoord[0].xy).a; +	float tex1 = texture2D(texture1, gl_TexCoord[1].xy).a; + +	gl_FragColor = vec4(tex0+(1.0-tex1)-0.5); +} diff --git a/indra/newview/app_settings/shaders/class1/objects/bumpV.glsl b/indra/newview/app_settings/shaders/class1/objects/bumpV.glsl new file mode 100644 index 0000000000..056d1a9582 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/objects/bumpV.glsl @@ -0,0 +1,16 @@ +/**  + * @file bumpV.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ +  + +void main() +{ +	//transform vertex +	gl_Position = gl_ModelViewProjectionMatrix*gl_Vertex; +	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0; +	gl_TexCoord[1] = gl_TextureMatrix[1] * gl_MultiTexCoord1; +	gl_FrontColor = gl_Color; +} diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl index f44a5ce32e..5283e80407 100644 --- a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl @@ -10,8 +10,6 @@  void calcAtmospherics(vec3 inPositionEye);  mat4 getObjectSkinnedTransform(); -attribute vec4 object_weight; -  void main()  {  	mat4 mat = getObjectSkinnedTransform(); diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl index e5dafa8c78..1db79791de 100644 --- a/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl @@ -10,8 +10,6 @@  void calcAtmospherics(vec3 inPositionEye);  mat4 getObjectSkinnedTransform(); -attribute vec4 object_weight; -  void main()  {  	//transform vertex diff --git a/indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl index cd655f3bb5..eea41bb4f0 100644 --- a/indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl @@ -11,8 +11,6 @@ vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);  void calcAtmospherics(vec3 inPositionEye);  mat4 getObjectSkinnedTransform(); -attribute vec4 object_weight; -  void main()  {  	mat4 mat = getObjectSkinnedTransform(); diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl index 900448035c..af92e5e002 100644 --- a/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl @@ -11,8 +11,6 @@ vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);  void calcAtmospherics(vec3 inPositionEye);  mat4 getObjectSkinnedTransform(); -attribute vec4 object_weight; -  void main()  {  	//transform vertex diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl index 66a1a8515f..f0c9b01671 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl @@ -267,34 +267,49 @@ void main()  	float da = max(dot(norm.xyz, vary_light.xyz), 0.0);  	vec4 diffuse = texture2DRect(diffuseRect, tc); -	vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy); -	 -	vec2 scol_ambocc = texture2DRect(lightMap, vary_fragcoord.xy).rg; -	float scol = max(scol_ambocc.r, diffuse.a);  -	float ambocc = scol_ambocc.g; + +	vec3 col; +	float bloom = 0.0; + +	if (diffuse.a < 0.9) +	{ +		vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy); +		 +		vec2 scol_ambocc = texture2DRect(lightMap, vary_fragcoord.xy).rg; +		float scol = max(scol_ambocc.r, diffuse.a);  +		float ambocc = scol_ambocc.g; -	calcAtmospherics(pos.xyz, ambocc); +		calcAtmospherics(pos.xyz, ambocc); -	vec3 col = atmosAmbient(vec3(0)); -	col += atmosAffectDirectionalLight(max(min(da, scol), diffuse.a)); +		col = atmosAmbient(vec3(0)); +		col += atmosAffectDirectionalLight(max(min(da, scol), diffuse.a)); -	col *= diffuse.rgb; +		col *= diffuse.rgb; -	if (spec.a > 0.0) // specular reflection +		if (spec.a > 0.0) // specular reflection +		{ +			// the old infinite-sky shiny reflection +			// +			vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz)); +			float sa = dot(refnormpersp, vary_light.xyz); +			vec3 dumbshiny = vary_SunlitColor*scol_ambocc.r*texture2D(lightFunc, vec2(sa, spec.a)).a; + +			// add the two types of shiny together +			vec3 spec_contrib = dumbshiny * spec.rgb; +			bloom = dot(spec_contrib, spec_contrib); +			col += spec_contrib; +		} +			 +		col = atmosLighting(col); +		col = scaleSoftClip(col); + +		col = mix(col, diffuse.rgb, diffuse.a); +	} +	else  	{ -		// the old infinite-sky shiny reflection -		// -		vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz)); -		float sa = dot(refnormpersp, vary_light.xyz); -		vec3 dumbshiny = vary_SunlitColor*scol_ambocc.r*texture2D(lightFunc, vec2(sa, spec.a)).a; - -		// add the two types of shiny together -		col += dumbshiny * spec.rgb; +		col = diffuse.rgb;  	} -	 -	col = atmosLighting(col); -	col = scaleSoftClip(col);  	gl_FragColor.rgb = col; -	gl_FragColor.a = 0.0; +	gl_FragColor.a = bloom;  } diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl index 0bae10ca7d..3b572320c3 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl @@ -255,7 +255,7 @@ void main()  	vec2 tc = vary_fragcoord.xy;  	ivec2 itc = ivec2(tc); -	vec3 fcol = vec3(0,0,0); +	vec4 fcol = vec4(0,0,0,0);  	vec2 scol_ambocc = texture2DRect(lightMap, tc).rg;  	float ambocc = scol_ambocc.g; @@ -270,38 +270,50 @@ void main()  		float da = max(dot(norm.xyz, vary_light.xyz), 0.0);  		vec4 diffuse = texelFetch(diffuseRect, itc, i); -		vec4 spec = texelFetch(specularRect, itc, i); +		vec3 col; +		float bloom = 0.0; +		if (diffuse.a < 0.9) +		{ +			vec4 spec = texelFetch(specularRect, itc, i); -		float amb = 0; +			float amb = 0; -		float scol = max(scol_ambocc.r, diffuse.a);  -		amb += ambocc; +			float scol = max(scol_ambocc.r, diffuse.a);  +			amb += ambocc; -		calcAtmospherics(pos.xyz, ambocc); +			calcAtmospherics(pos.xyz, ambocc); +	 +			col = atmosAmbient(vec3(0)); +			col += atmosAffectDirectionalLight(max(min(da, scol), diffuse.a)); -		vec3 col = atmosAmbient(vec3(0)); -		col += atmosAffectDirectionalLight(max(min(da, scol), diffuse.a)); +			col *= diffuse.rgb; -		col *= diffuse.rgb; +			if (spec.a > 0.0) // specular reflection +			{ +				// the old infinite-sky shiny reflection +				// +				vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz)); +				float sa = dot(refnormpersp, vary_light.xyz); +				vec3 dumbshiny = vary_SunlitColor*scol_ambocc.r*texture2D(lightFunc, vec2(sa, spec.a)).a; + +				// add the two types of shiny together +				vec3 spec_contrib = dumbshiny * spec.rgb; +				bloom = dot(spec_contrib, spec_contrib); +				col += spec_contrib; +			} -		if (spec.a > 0.0) // specular reflection +			col = atmosLighting(col); +			col = scaleSoftClip(col); + +			col = mix(col, diffuse.rgb, diffuse.a); +		} +		else  		{ -			// the old infinite-sky shiny reflection -			// -			vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz)); -			float sa = dot(refnormpersp, vary_light.xyz); -			vec3 dumbshiny = vary_SunlitColor*scol_ambocc.r*texture2D(lightFunc, vec2(sa, spec.a)).a; - -			// add the two types of shiny together -			col += dumbshiny * spec.rgb; +			col = diffuse.rgb;  		} -	 -		col = atmosLighting(col); -		col = scaleSoftClip(col); -		fcol += col; +		fcol += vec4(col, bloom);  	} -	gl_FragColor.rgb = fcol/samples;  -	gl_FragColor.a = 0.0; +	gl_FragColor = fcol/samples;   } diff --git a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl index d38d33cc21..1ae10a5faa 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl @@ -268,91 +268,50 @@ void main()  	float da = max(dot(norm.xyz, vary_light.xyz), 0.0);  	vec4 diffuse = texture2DRect(diffuseRect, tc); -	vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy); +	vec3 col; +	float bloom = 0.0; + +	if (diffuse.a < 0.9) +	{ +		vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy); -	da = texture2D(lightFunc, vec2(da, 0.0)).a; +		da = texture2D(lightFunc, vec2(da, 0.0)).a; -	vec2 scol_ambocc = texture2DRect(lightMap, vary_fragcoord.xy).rg; -	float scol = max(scol_ambocc.r, diffuse.a);  -	float ambocc = scol_ambocc.g; +		vec2 scol_ambocc = texture2DRect(lightMap, vary_fragcoord.xy).rg; +		float scol = max(scol_ambocc.r, diffuse.a);  +		float ambocc = scol_ambocc.g; -	calcAtmospherics(pos.xyz, ambocc); +		calcAtmospherics(pos.xyz, ambocc); -	vec3 col = atmosAmbient(vec3(0)); -	col += atmosAffectDirectionalLight(max(min(da, scol), diffuse.a)); +		col = atmosAmbient(vec3(0)); +		col += atmosAffectDirectionalLight(max(min(da, scol), diffuse.a)); -	col *= diffuse.rgb; +		col *= diffuse.rgb; -	if (spec.a > 0.0) // specular reflection +		if (spec.a > 0.0) // specular reflection +		{ +			// the old infinite-sky shiny reflection +			// +			vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz)); +			float sa = dot(refnormpersp, vary_light.xyz); +			vec3 dumbshiny = vary_SunlitColor*scol*texture2D(lightFunc, vec2(sa, spec.a)).a; +		 +			// add the two types of shiny together +			vec3 spec_contrib = dumbshiny * spec.rgb; +			bloom = dot(spec_contrib, spec_contrib); +			col += spec_contrib;		 +		} +	 +		col = atmosLighting(col); +		col = scaleSoftClip(col); + +		col = mix(col, diffuse.rgb, diffuse.a); +	} +	else  	{ -		// the old infinite-sky shiny reflection -		// -		vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz)); -		float sa = dot(refnormpersp, vary_light.xyz); -		vec3 dumbshiny = vary_SunlitColor*scol*texture2D(lightFunc, vec2(sa, spec.a)).a; - -		/* -		// screen-space cheap fakey reflection map -		// -		vec3 refnorm = normalize(reflect(vec3(0,0,-1), norm.xyz)); -		depth -= 0.5; // unbias depth -		// first figure out where we'll make our 2D guess from -		vec2 ref2d = (0.25 * screen_res.y) * (refnorm.xy) * abs(refnorm.z) / depth; -		// Offset the guess source a little according to a trivial -		// checkerboard dither function and spec.a. -		// This is meant to be similar to sampling a blurred version -		// of the diffuse map.  LOD would be better in that regard. -		// The goal of the blur is to soften reflections in surfaces -		// with low shinyness, and also to disguise our lameness. -		float checkerboard = floor(mod(tc.x+tc.y, 2.0)); // 0.0, 1.0 -		float checkoffset = (3.0 + (7.0*(1.0-spec.a)))*(checkerboard-0.5); - -		ref2d += vec2(checkoffset, checkoffset); -		ref2d += tc.xy; // use as offset from destination -		// Get attributes from the 2D guess point. -		// We average two samples of diffuse (not of anything else) per -		// pixel to try to reduce aliasing some more. -		vec3 refcol = 0.5 * (texture2DRect(diffuseRect, ref2d + vec2(0.0, -checkoffset)).rgb + -				     texture2DRect(diffuseRect, ref2d + vec2(-checkoffset, 0.0)).rgb); -		float refdepth = texture2DRect(depthMap, ref2d).a; -		vec3 refpos = getPosition_d(ref2d, refdepth).xyz; -		float refshad = texture2DRect(lightMap, ref2d).r; -		vec3 refn = texture2DRect(normalMap, ref2d).rgb; -		refn = vec3((refn.xy-0.5)*2.0,refn.z); // unpack norm -		refn = normalize(refn); -		// figure out how appropriate our guess actually was -		float refapprop = max(0.0, dot(-refnorm, normalize(pos - refpos))); -		// darken reflections from points which face away from the reflected ray - our guess was a back-face -		//refapprop *= step(dot(refnorm, refn), 0.0); -		refapprop = min(refapprop, max(0.0, -dot(refnorm, refn))); // more conservative variant -		// get appropriate light strength for guess-point. -		// reflect light direction to increase the illusion that -		// these are reflections. -		vec3 reflight = reflect(lightnorm.xyz, norm.xyz); -		float reflit = min(max(dot(refn, reflight.xyz), 0.0), refshad); -		// apply sun color to guess-point, dampen according to inappropriateness of guess -		float refmod = min(refapprop, reflit); -		vec3 refprod = vary_SunlitColor * refcol.rgb * refmod; -		vec3 ssshiny = (refprod * spec.a); -		ssshiny *= 0.3; // dampen it even more -		*/ -		vec3 ssshiny = vec3(0,0,0); - -		// add the two types of shiny together -		col += (ssshiny + dumbshiny) * spec.rgb; +		col = diffuse.rgb;  	} -	 -	col = atmosLighting(col); -	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); +	gl_FragColor.a = bloom;  } | 
