diff options
| author | Geenz <geenz@geenzo.com> | 2013-04-17 15:53:09 -0400 | 
|---|---|---|
| committer | Geenz <geenz@geenzo.com> | 2013-04-17 15:53:09 -0400 | 
| commit | bb5bf632c6c3dea22865a86dc8c13f5de9ce06f0 (patch) | |
| tree | ae3ddab3001c060a9513f469ddcdd6ce0f7c21fa /indra/newview/app_settings/shaders/class2/deferred | |
| parent | c72c3691ecf83875d4ee3e0784b3e76cb4b4633a (diff) | |
First pass of gamma correction reimplementation.
Diffstat (limited to 'indra/newview/app_settings/shaders/class2/deferred')
5 files changed, 25 insertions, 13 deletions
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl index 486e806434..df6eb04a62 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl @@ -215,7 +215,7 @@ void main()  #else  	vec4 diff = texture2D(diffuseMap,vary_texcoord0.xy);  #endif -	 +	diff.rgb = pow(diff.rgb, vec3(2.2));  #if INDEX_MODE == NON_INDEXED_NO_COLOR  	float vertex_color_alpha = 1.0;  #else diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl index 5f2961c90e..db5e5620dc 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl @@ -186,17 +186,19 @@ void main()  	//vec4 color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.));  	vec4 col = vec4(0.0, 0.0, 0.0, diffuse_color.a); -	vary_pointlight_col = diffuse_color.rgb; +	vec3 dff = pow(diffuse_color.rgb, vec3(2.2)); + +	vary_pointlight_col = dff;  	col.rgb = vec3(0,0,0);  	// Add windlight lights  	col.rgb = atmosAmbient(vec3(0.)); -	vary_ambient = col.rgb*diffuse_color.rgb;  	vary_directional.rgb = atmosAffectDirectionalLight(1); +	vary_ambient = col.rgb*dff; -	col.rgb = col.rgb*diffuse_color.rgb; +	col.rgb = col.rgb*dff;  #if INDEX_MODE != NON_INDEXED_NO_COLOR  	vertex_color = col; diff --git a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl index b3ab8fd510..cfdb53b5cc 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl @@ -82,6 +82,7 @@ vec3 decode_normal (vec2 enc)  vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod)  {  	vec4 ret = texture2DLod(projectionMap, tc, lod); +	ret.rgb = pow(ret.rgb, vec3(2.2));  	vec2 dist = tc-vec2(0.5); @@ -97,6 +98,7 @@ vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod)  vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod)  {  	vec4 ret = texture2DLod(projectionMap, tc, lod); +	ret.rgb = pow(ret.rgb, vec3(2.2));  	vec2 dist = vec2(0.5) - abs(tc-vec2(0.5)); @@ -114,6 +116,7 @@ vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod)  vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod)  {  	vec4 ret = texture2DLod(projectionMap, tc, lod); +	ret.rgb = pow(ret.rgb, vec3(2.2));  	vec2 dist = tc-vec2(0.5); @@ -193,6 +196,7 @@ 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 && @@ -214,8 +218,6 @@ void main()  			vec3 lcol = color.rgb * plcol.rgb * plcol.a;  			lit = da * dist_atten * noise; -			 -			lit = pow(lit, 0.7);  			col = lcol*lit*diff_tex*shadow;  			amb_da += (da*0.5)*(1.0-shadow)*proj_ambiance; @@ -235,6 +237,8 @@ void main()  	vec4 spec = texture2DRect(specularRect, frag.xy); +	spec.rgb = pow(spec.rgb, vec3(2.2)); +	  	if (spec.a > 0.0)  	{  		vec3 ref = reflect(normalize(pos), norm); diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl index 8e638c64eb..e8f3a02c5a 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl @@ -60,6 +60,7 @@ uniform float density_multiplier;  uniform float distance_multiplier;  uniform float max_y;  uniform vec4 glow; +uniform float global_gamma;  uniform float scene_light_strength;  uniform mat3 env_mat;  uniform vec4 shadow_clip; @@ -233,9 +234,9 @@ void calcAtmospherics(vec3 inPositionEye, float ambFactor) {  		  + tmpAmbient)));  	//brightness of surface both sunlight and ambient -	setSunlitColor(vec3(sunlight * .5)); -	setAmblitColor(vec3(tmpAmbient * .25)); -	setAdditiveColor(getAdditiveColor() * vec3(1.0 - temp1)); +	setSunlitColor(pow(vec3(sunlight * .5), vec3(global_gamma)) * 3.3); +	setAmblitColor(pow(vec3(tmpAmbient * .25), vec3(global_gamma)) * 3.3); +	setAdditiveColor(pow(getAdditiveColor() * vec3(1.0 - temp1), vec3(global_gamma)) * 3.3);  }  vec3 atmosLighting(vec3 light) @@ -293,9 +294,9 @@ void main()  	float envIntensity = norm.z;  	norm.xyz = decode_normal(norm.xy);  	float da = max(dot(norm.xyz, sun_dir.xyz), 0.0); -	da = pow(da, 0.7);  	vec4 diffuse = texture2DRect(diffuseRect, tc); +	diffuse.rgb = pow(diffuse.rgb, vec3(2.2));  	vec3 col;  	float bloom = 0.0; @@ -303,6 +304,7 @@ void main()  	if (diffuse.a < 0.9)  	{  		vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy); +		spec.rgb = pow(spec.rgb, vec3(2.2));  		vec2 scol_ambocc = texture2DRect(lightMap, vary_fragcoord.xy).rg;  		float scol = max(scol_ambocc.r, diffuse.a);  @@ -330,7 +332,7 @@ void main()  			//add environmentmap  			vec3 env_vec = env_mat * refnormpersp; -			col = mix(col.rgb, textureCube(environmentMap, env_vec).rgb,  +			col = mix(col.rgb, pow(textureCube(environmentMap, env_vec).rgb, vec3(2.2)) * 2.2,   				max(envIntensity-diffuse.a*2.0, 0.0));   		} diff --git a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl index 43fc5dbc5e..7ce327d1e0 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl @@ -83,6 +83,7 @@ vec3 decode_normal (vec2 enc)  vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod)  {  	vec4 ret = texture2DLod(projectionMap, tc, lod); +	ret.rgb = pow(ret.rgb, vec3(2.2));  	vec2 dist = tc-vec2(0.5); @@ -98,6 +99,7 @@ vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod)  vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod)  {  	vec4 ret = texture2DLod(projectionMap, tc, lod); +	ret.rgb = pow(ret.rgb, vec3(2.2));  	vec2 dist = vec2(0.5) - abs(tc-vec2(0.5)); @@ -115,6 +117,7 @@ vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod)  vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod)  {  	vec4 ret = texture2DLod(projectionMap, tc, lod); +	ret.rgb = pow(ret.rgb, vec3(2.2));  	vec2 dist = tc-vec2(0.5); @@ -194,6 +197,8 @@ 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 && @@ -215,8 +220,6 @@ void main()  			vec3 lcol = color.rgb * plcol.rgb * plcol.a;  			lit = da * dist_atten * noise; -			 -			lit = pow(lit, 0.7);  			col = lcol*lit*diff_tex*shadow;  			amb_da += (da*0.5)*(1.0-shadow)*proj_ambiance; @@ -236,6 +239,7 @@ void main()  	vec4 spec = texture2DRect(specularRect, frag.xy); +	spec.rgb = pow(spec.rgb, vec3(2.2));  	if (spec.a > 0.0)  	{  		vec3 ref = reflect(normalize(pos), norm);  | 
