diff options
Diffstat (limited to 'indra/newview/app_settings/shaders/class2')
9 files changed, 33 insertions, 44 deletions
| diff --git a/indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl b/indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl index 5af9f5c902..563c5f562b 100644 --- a/indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl +++ b/indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl @@ -37,7 +37,7 @@ VARYING vec4 vertex_color;  VARYING vec2 vary_texcoord0; -vec4 calcLightingSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec4 baseCol); +vec4 calcLightingSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor);  void calcAtmospherics(vec3 inPositionEye);  void main() @@ -53,7 +53,7 @@ void main()  	// vec4 specular = specularColor;  	vec4 specular = vec4(1.0); -	vec4 color = calcLightingSpecular(pos, norm, diffuse_color, specular, vec4(0.0)); +	vec4 color = calcLightingSpecular(pos, norm, diffuse_color, specular);  	vertex_color = color; diff --git a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl index 7ccc91f73c..a82d738ec2 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl @@ -71,15 +71,8 @@ uniform vec2 screen_res;  uniform mat4 inv_proj; -vec3 srgb_to_linear(vec3 cs); -  vec3 getNorm(vec2 pos_screen); - -vec4 correctWithGamma(vec4 col) -{ -    return vec4(srgb_to_linear(col.rgb), col.a); -} - +vec3 scaleDownLight(vec3 light);  vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod)  {      vec4 ret = texture2DLod(projectionMap, tc, lod); @@ -220,14 +213,14 @@ void main()              col = dlit*lit*diff_tex*shadow;              // unshadowed for consistency between forward and deferred? -            amb_da += (da*0.5+0.5)/* *(1.0-shadow) */ *proj_ambiance; +            amb_da += (da*0.5+0.5) * (1.0-shadow) * proj_ambiance;          }          //float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0);          vec4 amb_plcol = texture2DLodAmbient(projectionMap, proj_tc.xy, proj_lod); -        // unshadowed for consistency between forward and deferred? -        amb_da += (da*da*0.5+0.5) /* *(1.0-shadow) */ * proj_ambiance; +        // use unshadowed for consistency between forward and deferred? +        amb_da += (da*da*0.5+0.5) * (1.0-shadow) * proj_ambiance;          amb_da *= dist_atten * noise;          amb_da = min(amb_da, 1.0-lit); @@ -259,10 +252,6 @@ void main()              col += speccol;          }      }    -     -     -     -          if (envIntensity > 0.0)      { @@ -296,6 +285,8 @@ void main()      //not sure why, but this line prevents MATBUG-194      col = max(col, vec3(0.0)); +    col = scaleDownLight(col); +      frag_color.rgb = col;         frag_color.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 2d5d1c1b50..06a76668ba 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl @@ -73,6 +73,8 @@ vec3 scaleSoftClipFrag(vec3 l);  void calcAtmosphericVars(vec3 inPositionEye, float ambFactor, out vec3 sunlit, out vec3 amblit, out vec3 additive, out vec3 atten);  float getAmbientClamp();  vec3 atmosTransportFrag(vec3 light, vec3 additive, vec3 atten); +vec3 linear_to_srgb(vec3 c); +vec3 srgb_to_linear(vec3 c);  vec4 getPositionWithDepth(vec2 pos_screen, float depth);  vec4 getPosition(vec2 pos_screen); @@ -99,14 +101,14 @@ void main()      float da = dot(normalize(norm.xyz), light_dir.xyz);            da = clamp(da, -1.0, 1.0); -    vec4 diffuse = texture2DRect(diffuseRect, tc); -    +    vec4 gamma_diff = texture2DRect(diffuseRect, tc); +    vec4 diffuse = gamma_diff; +         diffuse.rgb = srgb_to_linear(diffuse.rgb); +       scol = max(scol_ambocc.r, diffuse.a); -	//scol = pow(scol, light_gamma);      float final_da = da;            final_da = clamp(final_da, 0.0, 1.0); -	      //final_da = pow(final_da, light_gamma);      vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy);      vec3 col; @@ -138,7 +140,7 @@ vec3 post_ambient = col.rgb;  vec3 post_sunlight = col.rgb; -        col.rgb *= diffuse.rgb; +        col.rgb *= gamma_diff.rgb;  vec3 post_diffuse = col.rgb; @@ -169,7 +171,7 @@ vec3 post_diffuse = col.rgb;              }          } -        col.rgb += diffuse.a * diffuse.rgb; +        col.rgb += diffuse.a * gamma_diff.rgb;          if (envIntensity > 0.0)          { //add environmentmap diff --git a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl index 2844cc8574..cd3b33eecc 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl @@ -71,13 +71,8 @@ uniform vec2 screen_res;  uniform mat4 inv_proj; -vec3 srgb_to_linear(vec3 cs);  vec3 getNorm(vec2 pos_screen); - -vec4 correctWithGamma(vec4 col) -{ -	return vec4(srgb_to_linear(col.rgb), col.a); -} +vec3 scaleDownLight(vec3 c);  vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod)  { @@ -218,7 +213,7 @@ void main()  			col = dlit*lit*diff_tex*shadow; -			amb_da += (da*0.5+0.5) /* * (1.0-shadow) */ * proj_ambiance; +			amb_da += (da*0.5+0.5) * (1.0-shadow) * proj_ambiance;  		}  		//float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0); @@ -293,6 +288,8 @@ void main()  	//not sure why, but this line prevents MATBUG-194  	col = max(col, vec3(0.0)); +    col = scaleDownLight(col); +  	frag_color.rgb = col;	  	frag_color.a = 0.0;  } diff --git a/indra/newview/app_settings/shaders/class2/lighting/sumLightsSpecularV.glsl b/indra/newview/app_settings/shaders/class2/lighting/sumLightsSpecularV.glsl index 6fcc41cd6d..89d9d1bde3 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/sumLightsSpecularV.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/sumLightsSpecularV.glsl @@ -28,7 +28,7 @@  float calcDirectionalLightSpecular(inout vec4 specular, vec3 view, vec3 n, vec3 l, vec3 lightCol, float da);  vec3 calcPointLightSpecular(inout vec4 specular, vec3 view, vec3 v, vec3 n, vec3 l, float r, float pw, vec3 lightCol); -vec3 atmosAmbient(vec3 light); +vec3 atmosAmbient();  vec3 atmosAffectDirectionalLight(float lightIntensity);  vec3 atmosGetDiffuseSunlightColor();  vec3 scaleDownLight(vec3 light); @@ -37,7 +37,7 @@ uniform vec4 light_position[8];  uniform vec4 light_attenuation[8];   uniform vec3 light_diffuse[8]; -vec4 sumLightsSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec4 baseCol) +vec4 sumLightsSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor)  {  	vec4 col = vec4(0.0, 0.0, 0.0, color.a); @@ -53,8 +53,8 @@ vec4 sumLightsSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor  	col.rgb = scaleDownLight(col.rgb);  	// Add windlight lights -	col.rgb += atmosAmbient(baseCol.rgb); -	col.rgb += atmosAffectDirectionalLight(calcDirectionalLightSpecular(specularSum, view, norm, light_position[0].xyz,atmosGetDiffuseSunlightColor()*baseCol.a, 1.0)); +	col.rgb += atmosAmbient(); +	col.rgb += atmosAffectDirectionalLight(calcDirectionalLightSpecular(specularSum, view, norm, light_position[0].xyz, atmosGetDiffuseSunlightColor(), 1.0));  	col.rgb = min(col.rgb*color.rgb, 1.0);  	specularColor.rgb = min(specularColor.rgb*specularSum.rgb, 1.0); diff --git a/indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl b/indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl index b4f4850646..57f93a8b36 100644 --- a/indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl +++ b/indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl @@ -26,7 +26,6 @@  float calcDirectionalLight(vec3 n, vec3 l);  float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float is_pointlight); -vec3 atmosAmbient(vec3 light);  vec3 atmosAffectDirectionalLight(float lightIntensity);  vec3 scaleDownLight(vec3 light); @@ -35,7 +34,7 @@ uniform vec3 light_direction[8];  uniform vec3 light_attenuation[8];   uniform vec3 light_diffuse[8]; -vec4 sumLights(vec3 pos, vec3 norm, vec4 color, vec4 baseLight) +vec4 sumLights(vec3 pos, vec3 norm, vec4 color)  {  	vec4 col = vec4(0.0, 0.0, 0.0, color.a); @@ -46,11 +45,8 @@ vec4 sumLights(vec3 pos, vec3 norm, vec4 color, vec4 baseLight)  	col.rgb = scaleDownLight(col.rgb);  	// Add windlight lights -	col.rgb += atmosAmbient(baseLight.rgb);  	col.rgb += atmosAffectDirectionalLight(calcDirectionalLight(norm, light_position[0].xyz)); -				  	col.rgb = min(col.rgb*color.rgb, 1.0); -	  	return col;	  } diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsHelpersV.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsHelpersV.glsl index c80706d2a7..9f049cb8fb 100644 --- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsHelpersV.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsHelpersV.glsl @@ -35,10 +35,10 @@ vec3 getPositionEye();  uniform float scene_light_strength;  uniform int no_atmo; -vec3 atmosAmbient(vec3 light) +vec3 atmosAmbient()  { -    if (no_atmo == 1) return light + vec3(0.66); -    return getAmblitColor() + light / 2.0; +    if (no_atmo == 1) return vec3(0.66); +    return getAmblitColor();  }  vec3 atmosAffectDirectionalLight(float lightIntensity) diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl index 9953f79cf2..ea37610502 100644 --- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl @@ -32,14 +32,17 @@ vec3 getSunlitColor()  {  	return vec3(0,0,0);  } +  vec3 getAmblitColor()  {  	return vec3(0,0,0);  } +  vec3 getAdditiveColor()  {  	return vary_AdditiveColor;  } +  vec3 getAtmosAttenuation()  {  	return vec3(vary_AtmosAttenuation); diff --git a/indra/newview/app_settings/shaders/class2/windlight/transportF.glsl b/indra/newview/app_settings/shaders/class2/windlight/transportF.glsl index 2e8946252b..9cb9c723a2 100644 --- a/indra/newview/app_settings/shaders/class2/windlight/transportF.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/transportF.glsl @@ -39,8 +39,8 @@ vec3 atmosTransportFrag(vec3 light, vec3 additive, vec3 atten)          return light;      }      light *= atten.r; -    light += additive * 2.0; -    return light; +    light += additive; +    return light * 2.0;  }  vec3 atmosTransport(vec3 light) | 
