diff options
| author | Graham Madarasz (Graham) <graham@lindenlab.com> | 2013-07-11 16:21:23 -0700 | 
|---|---|---|
| committer | Graham Madarasz (Graham) <graham@lindenlab.com> | 2013-07-11 16:21:23 -0700 | 
| commit | fbf3d8b78137a5229ccfabd1e42a0712d92b061f (patch) | |
| tree | 54be4abc8d7ca079be78f65d9f9b39a0da54d009 /indra/newview/app_settings | |
| parent | d7856f09999206be489183f52ae2f33020a68538 (diff) | |
NORSPEC-291 WIP materials underwater with haze, reflection broken, water dist broken
Diffstat (limited to 'indra/newview/app_settings')
4 files changed, 29 insertions, 33 deletions
| diff --git a/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl b/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl index 393074344b..9ce4d89df7 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl @@ -136,20 +136,15 @@ uniform vec3 light_attenuation[8];  uniform vec3 light_diffuse[8];  #ifdef WATER_FOG -vec3 getPositionEye() -{ -	return vary_PositionEye; -} -  uniform vec4 waterPlane;  uniform vec4 waterFogColor;  uniform float waterFogDensity;  uniform float waterFogKS; -vec4 applyWaterFogDeferred(vec4 color) +vec4 applyWaterFogDeferred(vec3 pos, vec4 color)  {  	//normalize view vector -	vec3 view = normalize(getPositionEye()); +	vec3 view = normalize(pos);  	float es = -(dot(view, waterPlane.xyz));  	//find intersection point with water plane and eye vector @@ -160,7 +155,7 @@ vec4 applyWaterFogDeferred(vec4 color)  	vec3 int_v = waterPlane.w > 0.0 ? view * waterPlane.w/es : vec3(0.0, 0.0, 0.0);  	//get object depth -	float depth = length(getPositionEye() - int_v); +	float depth = length(pos - int_v);  	//get "thickness" of water  	float l = max(depth, 0.1); @@ -463,21 +458,6 @@ out vec4 frag_data[3];  #else  #define frag_data gl_FragData  #endif - -VARYING vec3 vary_position; - -#ifdef WATER_FOG -vec3 vary_PositionEye; -vec3 getPositionEye() -{ -	return vary_PositionEye; -} -void setPositionEye(vec3 e) -{ -	vary_PositionEye = e; -} -#endif -  #endif  uniform sampler2D diffuseMap; @@ -749,15 +729,18 @@ void main()  	float al = max(diffcol.a,glare)*vertex_color.a;  #ifdef WATER_FOG -	frag_color = applyWaterFogDeferred(vec4(col.rgb, al)); -#else +	vec4 temp = applyWaterFogDeferred(pos, vec4(col.rgb, al)); +	col.rgb = temp.rgb; +	al = temp.a; +#endif +  	frag_color.rgb = col.rgb;  	frag_color.a   = al; -#endif  #else  	frag_data[0] = final_color;  	frag_data[1] = final_specular; // XYZ = Specular color. W = Specular exponent.  	frag_data[2] = final_normal; // XY = Normal.  Z = Env. intensity. -#endif% +#endif  } + diff --git a/indra/newview/app_settings/shaders/class1/deferred/materialV.glsl b/indra/newview/app_settings/shaders/class1/deferred/materialV.glsl index 154db09583..e44a6fcec8 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/materialV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/materialV.glsl @@ -141,3 +141,4 @@ vary_normal  = n;  #endif  #endif  } + diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl index 1706d41da0..953f0189f0 100755 --- a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl @@ -133,6 +133,7 @@ vec3 getPositionEye()  {  	return vary_PositionEye;  } +  vec3 getSunlitColor()  {  	return vary_SunlitColor; @@ -182,10 +183,10 @@ uniform vec4 waterFogColor;  uniform float waterFogDensity;  uniform float waterFogKS; -vec4 applyWaterFogDeferred(vec4 color) +vec4 applyWaterFogDeferred(vec3 pos, vec4 color)  {  	//normalize view vector -	vec3 view = normalize(getPositionEye()); +	vec3 view = normalize(pos);  	float es = -(dot(view, waterPlane.xyz));  	//find intersection point with water plane and eye vector @@ -196,7 +197,7 @@ vec4 applyWaterFogDeferred(vec4 color)  	vec3 int_v = waterPlane.w > 0.0 ? view * waterPlane.w/es : vec3(0.0, 0.0, 0.0);  	//get object depth -	float depth = length(getPositionEye() - int_v); +	float depth = length(pos - int_v);  	//get "thickness" of water  	float l = max(depth, 0.1); @@ -435,13 +436,14 @@ void main()  		if (norm.w < 0.5)  		{  			col = mix(atmosLighting(col), fullbrightAtmosTransport(col), diffuse.a); -			col = mix(scaleSoftClip(col), fullbrightScaleSoftClip(col), diffuse.a);  			#ifdef WATER_FOG -				vec4 fogged = applyWaterFogDeferred(vec4(col, bloom)); +				vec4 fogged = applyWaterFogDeferred(pos,vec4(col, bloom));  				col = fogged.rgb;  				bloom = fogged.a;  			#endif + +			col = mix(scaleSoftClip(col), fullbrightScaleSoftClip(col), diffuse.a);			  		}  		col = srgb_to_linear(col); @@ -450,6 +452,7 @@ void main()  		//col.g = envIntensity;  	} -	frag_color.rgb = col; +	frag_color.rgb = col.rgb;  	frag_color.a = bloom;  } + diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl index 06447261b4..4464358b1e 100755 --- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl @@ -133,6 +133,13 @@ vec4 getPosition(vec2 pos_screen)  	return getPosition_d(pos_screen, depth);  } +#ifdef WATER_FOG +vec3 getPositionEye(); +vec3 getSunlitColor(); +vec3 getAmblitColor(); +vec3 getAdditiveColor(); +vec3 getAtmosAttenuation(); +#else  vec3 getPositionEye()  {  	return vary_PositionEye; @@ -153,6 +160,7 @@ vec3 getAtmosAttenuation()  {  	return vary_AtmosAttenuation;  } +#endif  void setPositionEye(vec3 v)  { @@ -421,3 +429,4 @@ void main()  	frag_color.rgb = col;  	frag_color.a = bloom;  } + | 
