diff options
| author | Graham Linden <graham@lindenlab.com> | 2018-11-01 20:28:47 +0100 | 
|---|---|---|
| committer | Graham Linden <graham@lindenlab.com> | 2018-11-01 20:28:47 +0100 | 
| commit | 4f267a5723e7da2de36b9f2295e4942a4c8bf6c5 (patch) | |
| tree | c186a8888794732f32bba406b7bb66b4cafd4d11 /indra/newview/app_settings/shaders/class3 | |
| parent | a67cf385d763325119f4d2a37beb96c9c6a80282 (diff) | |
SL-9994
Make shaders use consistent naming and parameter order for transport and atmospheric helpers.
Share transport and gamma correction code where possible.
Add lots of asserts and other validation for when things don't go as planned.
Engage dumpShaderSource to get more source output with shader compilation fail.
Diffstat (limited to 'indra/newview/app_settings/shaders/class3')
3 files changed, 17 insertions, 38 deletions
| diff --git a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl index d2fd70c9e2..2615400e52 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl @@ -115,7 +115,6 @@ void main()  	float light_gamma = 1.0/1.3;  	da = pow(da, light_gamma); -  	vec4 diffuse = texture2DRect(diffuseRect, tc);  	//convert to gamma space @@ -133,14 +132,6 @@ void main()  		float ambocc = scol_ambocc.g; -                vec3 sunlit; -                vec3 amblit; -                vec3 additive; -                vec3 atten; -	 -		//calcFragAtmospherics(pos.xyz, ambocc, sunlit, amblit, additive, atten); -		//col += atmosFragAffectDirectionalLight(max(min(da, scol), 0.0), sunlit); -	  		col *= diffuse.rgb;  		vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz)); @@ -158,8 +149,7 @@ void main()  			bloom = dot(spec_contrib, spec_contrib) / 6;  			col += spec_contrib;  		} -	 -		 +  		col = mix(col, diffuse.rgb, diffuse.a);  		if (envIntensity > 0.0) @@ -169,12 +159,6 @@ void main()  			col = mix(col.rgb, refcol, envintensity);  		} -		if (norm.w < 0.5) -		{ -			//col = mix(atmosFragLighting(col, additive, atten), fullbrightFragAtmosTransport(col, atten, additive), diffuse.a); -			//col = mix(scaleFragSoftClip(col), fullbrightScaleSoftClipFrag(col, atten), diffuse.a); -		} -  		#ifdef WATER_FOG  			vec4 fogged = applyWaterFogView(pos,vec4(col, bloom));  			col = fogged.rgb; diff --git a/indra/newview/app_settings/shaders/class3/windlight/atmosphericsF.glsl b/indra/newview/app_settings/shaders/class3/windlight/atmosphericsF.glsl index c809a41a0f..a1b67fc31e 100644 --- a/indra/newview/app_settings/shaders/class3/windlight/atmosphericsF.glsl +++ b/indra/newview/app_settings/shaders/class3/windlight/atmosphericsF.glsl @@ -42,13 +42,7 @@ uniform vec4 glow;  uniform float scene_light_strength;  uniform mat3 ssao_effect_mat; -vec3 scaleFragSoftClip(vec3 light) -{ -	//soft clip effect: -	light = 1. - clamp(light, vec3(0.), vec3(1.)); -	light = 1. - pow(light, gamma.xxx); -	return light; -} +vec3 scaleSoftClipFrag(vec3 light);  vec3 atmosFragLighting(vec3 light, vec3 additive, vec3 atten)  { diff --git a/indra/newview/app_settings/shaders/class3/windlight/transportF.glsl b/indra/newview/app_settings/shaders/class3/windlight/transportF.glsl index c2f4c43101..5c93af386b 100644 --- a/indra/newview/app_settings/shaders/class3/windlight/transportF.glsl +++ b/indra/newview/app_settings/shaders/class3/windlight/transportF.glsl @@ -32,41 +32,42 @@ vec3 getAtmosAttenuation();  uniform int no_atmo; -vec3 atmosFragTransport(vec3 light, vec3 atten, vec3 additive) { -    if (no_atmo == 0) +vec3 atmosTransportFrag(vec3 light, vec3 additive, vec3 atten) { +    if (no_atmo == 1)  	{ -	    light *= atten.r; -	    light += additive * 2.0; +        return light;      } +	light *= atten.r; +	light += additive * 2.0;  	return light;  } -vec3 fullbrightFragAtmosTransport(vec3 light, vec3 atten, vec3 additive) { -    if (no_atmo) +vec3 fullbrightAtmosTransportFrag(vec3 light, vec3 additive, vec3 atten) { +    if (no_atmo == 1)      {  		return light;  	} -	loat brightness = dot(light.rgb, vec3(0.33333)); -	return mix(atmosFragTransport(light.rgb, atten, additive), light.rgb + additive.rgb, brightness * brightness); +	float brightness = dot(light.rgb, vec3(0.33333)); +	return mix(atmosTransportFrag(light.rgb, additive,a tten), light.rgb + additive.rgb, brightness * brightness);  } -vec3 fullbrightFragShinyAtmosTransport(vec3 light, vec3 atten, vec3 additive) { -    if (no_atmo) +vec3 fullbrightShinyAtmosTransportFrag(vec3 light, vec3 atten, vec3 additive) { +    if (no_atmo == 1)      {  		return light;  	}  	float brightness = dot(light.rgb, vec3(0.33333)); -	return mix(atmosFragTransport(light.rgb, atten, additive), (light.rgb + additive.rgb) * (2.0 - brightness), brightness * brightness); +	return mix(atmosTransportFrag(light.rgb, additive, atten), (light.rgb + additive.rgb) * (2.0 - brightness), brightness * brightness);  }  vec3 atmosTransport(vec3 light) { -     return no_atmo ? light : atmosFragTransport(light, getAtmosAttenuation(), getAdditiveColor()); +     return (no_atmo == 1) ? light : atmosTransportFrag(light, getAdditiveColor(), getAtmosAttenuation());  }  vec3 fullbrightAtmosTransport(vec3 light) { -     return no_atmo ? light : fullbrightFragAtmosTransport(light, getAtmosAttenuation(), getAdditiveColor()); +     return (no_atmo == 1) ? light : fullbrightAtmosTransportFrag(light, GetAdditiveColor(), getAtmosAttenuation());  }  vec3 fullbrightShinyAtmosTransport(vec3 light) { -    return no_atmo ? light : fullbrightFragShinyAtmosTransport(light, getAtmosAttenuation(), getAdditiveColor()); +    return (no_atmo == 1) ? light : fullbrightShinyAtmosTransportFrag(light, getAdditiveColor(), getAtmosAttenuation());  } | 
