diff options
| author | Geenz <geenz@geenzo.com> | 2013-04-18 19:43:30 -0400 | 
|---|---|---|
| committer | Geenz <geenz@geenzo.com> | 2013-04-18 19:43:30 -0400 | 
| commit | 6b836eacafd21c1ccac2c7276483ed393a4b406e (patch) | |
| tree | fc0369eea3840c30d9861c9a764c4b7c6831b23f /indra/newview/app_settings/shaders/class1 | |
| parent | 4afb70eba7a86b43005d5eb3fbd6d27fe12c6075 (diff) | |
Use GL_SRGB8_ALPHA8 for the diffuse and specular buffers, and correct gamma *before* glow and other post processing effects that don't care about being gamma correct.
Diffstat (limited to 'indra/newview/app_settings/shaders/class1')
7 files changed, 47 insertions, 11 deletions
| diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl index d29c9a2b77..63863fb836 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl @@ -93,8 +93,7 @@ void main()  	norm = decode_normal(norm.xy); // unpack norm  	norm = normalize(norm);  	vec4 spec = texture2DRect(specularRect, frag.xy); -	spec.rgb = pow(spec.rgb, vec3(2.2)); -	vec3 diff = pow(texture2DRect(diffuseRect, frag.xy).rgb, vec3(2.2)); +	vec3 diff = texture2DRect(diffuseRect, frag.xy).rgb;  	float noise = texture2D(noiseMap, frag.xy/128.0).b;  	vec3 out_col = vec3(0,0,0);  	vec3 npos = normalize(-pos); diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl index 5129ecf128..377df49815 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl @@ -181,7 +181,6 @@ void main()  	vec3 col = vec3(0,0,0);  	vec3 diff_tex = texture2DRect(diffuseRect, frag.xy).rgb; -	diff_tex = pow(diff_tex, vec3(2.2));  	float noise = texture2D(noiseMap, frag.xy/128.0).b;  	if (proj_tc.z > 0.0 && @@ -222,7 +221,6 @@ void main()  	vec4 spec = texture2DRect(specularRect, frag.xy); -	spec.rgb = pow(spec.rgb, vec3(2.2));  	if (spec.a > 0.0)  	{ diff --git a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl index fa514e5585..332b610197 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl @@ -108,7 +108,7 @@ void main()  	float noise = texture2D(noiseMap, frag.xy/128.0).b; -	vec3 col = pow(texture2DRect(diffuseRect, frag.xy).rgb, vec3(2.2)); +	vec3 col = texture2DRect(diffuseRect, frag.xy).rgb;  	float fa = falloff+1.0;  	float dist_atten = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0);  	float lit = da * dist_atten * noise; @@ -116,7 +116,6 @@ void main()  	col = color.rgb*lit*col;  	vec4 spec = texture2DRect(specularRect, frag.xy); -	spec.rgb = pow(spec.rgb, vec3(2.2));  	if (spec.a > 0.0)  	{  		vec3 npos = -normalize(pos); diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredGammaCorrect.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredGammaCorrect.glsl new file mode 100644 index 0000000000..404e284abb --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredGammaCorrect.glsl @@ -0,0 +1,44 @@ +/**  + * @file postDeferredGammaCorrect.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2007, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + *  + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details. + *  + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA + *  + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA + * $/LicenseInfo$ + */ +  +#extension GL_ARB_texture_rectangle : enable + +#ifdef DEFINE_GL_FRAGCOLOR +out vec4 frag_color; +#else +#define frag_color gl_FragColor +#endif + +uniform sampler2DRect diffuseRect; + +uniform vec2 screen_res; +VARYING vec2 vary_fragcoord; + +void main()  +{ +	vec4 diff = texture2DRect(diffuseRect, vary_fragcoord); +	frag_color = pow(diff, vec4(0.454545, 0.454545, 0.454545, 1.0)); +} + diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl index cceb1b11ab..eb5beeef39 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl @@ -42,6 +42,6 @@ void main()  	vec4 diff = texture2DRect(diffuseRect, vary_fragcoord.xy);  	vec4 bloom = texture2D(bloomMap, vary_fragcoord.xy/screen_res); -	frag_color = pow(diff + bloom, vec4(0.454545, 0.454545, 0.454545, 1.0)); +	frag_color = diff + bloom;  } diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl index 8600f69b8a..026039a0e7 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl @@ -294,9 +294,7 @@ void main()  	float da = max(dot(norm.xyz, sun_dir.xyz), 0.0);  	vec4 diffuse = texture2DRect(diffuseRect, tc); -	diffuse.rgb = pow(diffuse.rgb, vec3(2.2));  	vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy); -	spec.rgb = pow(spec.rgb, vec3(2.2));  	vec3 col;  	float bloom = 0.0;  	if (diffuse.a < 0.9) diff --git a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl index 4b4063f51c..a339f6506e 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl @@ -187,7 +187,6 @@ void main()  	vec3 col = vec3(0,0,0);  	vec3 diff_tex = texture2DRect(diffuseRect, frag.xy).rgb; -	diff_tex = pow(diff_tex, vec3(2.2));  	float noise = texture2D(noiseMap, frag.xy/128.0).b;  	if (proj_tc.z > 0.0 && @@ -228,7 +227,6 @@ void main()  	vec4 spec = texture2DRect(specularRect, frag.xy); -	spec.rgb = pow(spec.rgb, vec3(2.2));  	if (spec.a > 0.0)  	{ | 
