bitetti

Reflection water shader experiment

Apr 16th, 2015
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ### fragment
  2. uniform cubemap reflect_map;
  3. uniform float power = 26.5;
  4. uniform float time_ratio = 0.8;
  5. uniform color water_color = vec4(0.24,0.45,0.24,1.0);
  6. uniform float mist = 0.4;
  7. uniform vec2 uv_inter = vec2(0.5,0.5);
  8.  
  9. vec2 cen = UV - uv_inter; //vec2(0.5,0.5);
  10. float rTime = TIME*time_ratio;
  11. float d = length( cen ) * 2.0;
  12. float d2 = 1.0-d;
  13. float s = sin( power * d - rTime) * d2;
  14. float c = cos( power * d - rTime) * d2;
  15. NORMAL.x += c;
  16. NORMAL.y += s;
  17. NORMAL = normalize( NORMAL );
  18. //vec3 n_reflection = normalize(reflect(vec3(VAR1.x+cen.x,VAR1.z,VAR1.y+cen.y), NORMAL));
  19. vec3 n_reflection = normalize(reflect(vec3(VAR1.x,VAR1.y,VAR1.z), NORMAL));
  20. vec4 cor = texcube(reflect_map, n_reflection ); //vec3(cen.x,cen.y,0.54));
  21. cor.a = water_color.a;
  22.  
  23. DIFFUSE_ALPHA = mix(water_color,cor,mist);
  24. //DIFFUSE = vec3(cor.r,cor.g,cor.b);// + vec4(1.0,1.0,1.0,1.0)*abs(s); //vec4(0.0,0.2,0.6,1.0);
  25. //DIFFUSE_ALPHA = mix(cor, vec4(1.0,1.0,1.0,1.0), abs(s)); //vec4(0.0,0.2,0.6,1.0)
  26.  
  27. ### vertex
  28. //VAR1 = normalize(MODELVIEW_MATRIX * vec4(VERTEX.x,VERTEX.y,VERTEX.z,1.0)); //* vec4(0.0-1.0,0.0-1.0,0.0-1.0,0.0-1.0);//MODELVIEW_MATRIX.y;
  29. VAR1 = normalize(vec4(VERTEX.x,VERTEX.y,VERTEX.z,0.0) - INV_CAMERA_MATRIX.z);
  30.  
  31. ### Light
  32. float NdotL = max(0.0,dot( NORMAL, LIGHT_DIR ));
  33. LIGHT = LIGHT_DIFFUSE * DIFFUSE * NdotL;
  34. if (NdotL > 0.0) {
  35.         //vec3 half_vec = normalize(LIGHT_DIR + EYE_VEC);
  36.         //float eye_light = max(dot(NORMAL, half_vec),0.0);
  37.     //LIGHT+=LIGHT_SPECULAR * SPECULAR * pow( eye_light, SPECULAR_EXP );
  38. };
Advertisement
Add Comment
Please, Sign In to add comment