summaryrefslogtreecommitdiff
path: root/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/app_settings/shaders/class1/deferred/waterF.glsl')
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/waterF.glsl72
1 files changed, 28 insertions, 44 deletions
diff --git a/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl b/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl
index 0a1f019e3d..d21575119d 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl
@@ -5,19 +5,21 @@
* $License$
*/
+#extension GL_ARB_texture_rectangle : enable
+
vec3 scaleSoftClip(vec3 inColor);
vec3 atmosTransport(vec3 inColor);
uniform sampler2D bumpMap;
uniform sampler2D screenTex;
uniform sampler2D refTex;
-uniform sampler2DShadow shadowMap0;
-uniform sampler2DShadow shadowMap1;
-uniform sampler2DShadow shadowMap2;
-uniform sampler2DShadow shadowMap3;
+uniform sampler2DRectShadow shadowMap0;
+uniform sampler2DRectShadow shadowMap1;
+uniform sampler2DRectShadow shadowMap2;
+uniform sampler2DRectShadow shadowMap3;
uniform sampler2D noiseMap;
-uniform mat4 shadow_matrix[4];
+uniform mat4 shadow_matrix[6];
uniform vec4 shadow_clip;
uniform float sunAngle;
@@ -32,7 +34,8 @@ uniform vec3 normScale;
uniform float fresnelScale;
uniform float fresnelOffset;
uniform float blurMultiplier;
-
+uniform vec2 screen_res;
+uniform mat4 norm_mat; //region space to screen space
//bigWave is (refCoord.w, view.w);
varying vec4 refCoord;
@@ -88,7 +91,7 @@ void main()
refcol *= df1 * 0.333;
vec3 wavef = (wave1 + wave2 * 0.4 + wave3 * 0.6) * 0.5;
- wavef.z *= max(-viewVec.z, 0.1);
+ //wavef.z *= max(-viewVec.z, 0.1);
wavef = normalize(wavef);
float df2 = dot(viewVec, wavef) * fresnelScale+fresnelOffset;
@@ -101,10 +104,10 @@ void main()
refcol = mix(baseCol*df2, refcol, dweight);
//get specular component
- float spec = clamp(dot(lightDir, (reflect(viewVec,wavef))),0.0,1.0);
+ //float spec = clamp(dot(lightDir, (reflect(viewVec,wavef))),0.0,1.0);
//harden specular
- spec = pow(spec, 128.0);
+ //spec = pow(spec, 128.0);
//figure out distortion vector (ripply)
vec2 distort2 = distort+wavef.xy*refScale/max(dmod*df1, 1.0);
@@ -118,40 +121,21 @@ void main()
float shadow = 1.0;
vec4 pos = vary_position;
- vec3 nz = texture2D(noiseMap, gl_FragCoord.xy/128.0).xyz;
-
- if (pos.z > -shadow_clip.w)
- {
- vec4 spos = pos;
-
- if (pos.z < -shadow_clip.z)
- {
- vec4 lpos = (shadow_matrix[3]*spos);
- shadow = shadow2DProj(shadowMap3, lpos).x;
- }
- else if (pos.z < -shadow_clip.y)
- {
- vec4 lpos = (shadow_matrix[2]*spos);
- shadow = shadow2DProj(shadowMap2, lpos).x;
- }
- else if (pos.z < -shadow_clip.x)
- {
- vec4 lpos = (shadow_matrix[1]*spos);
- shadow = shadow2DProj(shadowMap1, lpos).x;
- }
- else
- {
- vec4 lpos = (shadow_matrix[0]*spos);
- shadow = shadow2DProj(shadowMap0, lpos).x;
- }
- }
-
- spec *= shadow;
- color.rgb += spec * specular;
-
- color.rgb = atmosTransport(color.rgb);
- color.rgb = scaleSoftClip(color.rgb);
- color.a = spec * sunAngle2;
+ //vec3 nz = texture2D(noiseMap, gl_FragCoord.xy/128.0).xyz;
+ vec4 spos = pos;
+
+ //spec *= shadow;
+ //color.rgb += spec * specular;
+
+ //color.rgb = atmosTransport(color.rgb);
+ //color.rgb = scaleSoftClip(color.rgb);
+ //color.a = spec * sunAngle2;
- gl_FragColor = color;
+ //wavef.z = -0.25f;
+ wavef = normalize(wavef);
+ wavef = (norm_mat*vec4(wavef, 1.0)).xyz;
+
+ gl_FragData[0] = vec4(color.rgb, 0.75);
+ gl_FragData[1] = vec4(1,1,1, 0.8);
+ gl_FragData[2] = vec4(wavef*0.5+0.5, 0.0);
}