aboutsummaryrefslogtreecommitdiff
path: root/shaders
diff options
context:
space:
mode:
authorJoshua Rahm <joshua.rahm@colorado.edu>2014-04-18 13:54:36 -0600
committerJoshua Rahm <joshua.rahm@colorado.edu>2014-04-18 13:54:36 -0600
commite1662612bec40fc131ecd306b66f6cb99f7f33e6 (patch)
tree746a288748690d4352d0ee45fe7a0fea4ab2b67e /shaders
parente4754131548a55fea393d6fc9245b20fcd60c62c (diff)
downloadterralloc-e1662612bec40fc131ecd306b66f6cb99f7f33e6.tar.gz
terralloc-e1662612bec40fc131ecd306b66f6cb99f7f33e6.tar.bz2
terralloc-e1662612bec40fc131ecd306b66f6cb99f7f33e6.zip
fixed reflection
Diffstat (limited to 'shaders')
-rw-r--r--shaders/water.frag36
1 files changed, 26 insertions, 10 deletions
diff --git a/shaders/water.frag b/shaders/water.frag
index 82b8163..4a73318 100644
--- a/shaders/water.frag
+++ b/shaders/water.frag
@@ -4,7 +4,11 @@
layout(location = 0) out vec4 frag_color ;
layout(location = 8) uniform vec4 lightPos ;
+layout(location = 9) uniform float time ;
+layout(location = 10) uniform vec4 globalAmbient ;
+
uniform sampler2D texture ;
+ uniform sampler2D skytex ;
in vec3 normal ;
in vec4 position ;
@@ -13,7 +17,7 @@ in vec2 texpos ;
float dX = 1 / 512.0 ;
float dY = 1 / 512.0 ;
vec4 sample(float xc,float yc) {
- return texture2D(texture,texpos + vec2(xc,yc));
+ return texture2D(texture,texpos + vec2(xc,yc) - vec2(time/20.0,time/20.0));
}
vec3 calNormChange( vec3 norm, vec3 down, vec3 right ) {
@@ -35,14 +39,26 @@ vec3 calNormChange( vec3 norm, vec3 down, vec3 right ) {
return (right*2 + down*2 + norm) / 5.0 ;
}
+in vec3 original_x ;
+in vec3 original_z ;
void main() {
-// vec3 down = vec3( 0, -1, 0 ) ;
-// vec3 right = normalize(cross( normal, down )) ;
-// down = normalize(cross( normal, right ) );
-// vec3 newNorm = calNormChange( normal, down, right ) ;
-//
-// float coef = dot( normalize(vec3(lightPos) - vec3(position)), normalize(newNorm) ) ;
-// vec4 color = texture2D(texture,texpos) ;
-// frag_color = vec4(color.xyz * vec3(0.0,0.4,0.7) * coef,0.8);
- frag_color = vec4(0,0,1,0.8) ;
+ vec3 down = vec3( 0, -1, 0 ) ;
+ vec3 right = normalize(cross( normal, down )) ;
+ down = normalize(cross( normal, right ) );
+ vec3 newNorm = calNormChange( normal, down, right ) ;
+
+ vec3 camVector = vec3(position) - vec3(0,0,0);
+ vec3 ref = reflect( normalize(camVector), newNorm ) ;
+
+ float tex_x = (dot( ref, original_x ) + 1) / 2;
+ float tex_y = (dot( ref, original_z ) + 1) / 2;
+ vec4 refcolor = texture2D(skytex, vec2(tex_x,tex_y));
+ float coef = dot( normalize(vec3(lightPos) - vec3(position)), normalize(normal) ) * 0.5 + 0.5 ;
+
+
+ // frag_color = vec4( original_z, 1.0 );
+ // frag_color = vec4(tex_x,tex_y,0,1.0) ;
+ // vec4 color = sample(0,0);
+ frag_color = vec4(vec3(refcolor * coef) * vec3(0.6,0.8,1.0),0.8) * vec4(normalize(globalAmbient.xyz),1.0);
+// frag_color = vec4(0,0,1,0.8) ;
}