istereo2
diff sdr/tunnel.p.glsl @ 2:81d35769f546
added the tunnel effect source
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Sat, 19 Sep 2015 05:51:51 +0300 |
parents | |
children |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/sdr/tunnel.p.glsl Sat Sep 19 05:51:51 2015 +0300 1.3 @@ -0,0 +1,51 @@ 1.4 +#ifdef GL_ES 1.5 +precision mediump float; 1.6 +#endif 1.7 + 1.8 +uniform sampler2D tex, tex_norm; 1.9 + 1.10 +varying vec3 vpos, normal, tangent; 1.11 +varying vec4 color, tc; 1.12 +varying vec3 lpos; 1.13 + 1.14 +void main() 1.15 +{ 1.16 + vec4 fog_color = vec4(0.0, 0.0, 0.0, 1.0); 1.17 + vec3 tcol = texture2D(tex, tc.xy * vec2(1.0, -1.0)).xyz; 1.18 + vec3 tnorm = texture2D(tex_norm, tc.xy * vec2(1.0, -1.0)).xyz; 1.19 + 1.20 + float fog = exp(-(0.2 * -vpos.z)); 1.21 + 1.22 + vec3 ldir = lpos - vpos; 1.23 + float ldist = length(ldir); 1.24 + 1.25 + /* bring the light direction to tangent space */ 1.26 + vec3 norm = normalize(normal); 1.27 + vec3 tang = normalize(tangent); 1.28 + vec3 bitan = cross(norm, tang); 1.29 + 1.30 + mat3 tbn_xform = mat3(tang.x, bitan.x, norm.x, 1.31 + tang.y, bitan.y, norm.y, 1.32 + tang.z, bitan.z, norm.z); 1.33 + 1.34 + vec3 l = normalize(tbn_xform * ldir); 1.35 + 1.36 + /* grab normal from the normalmap */ 1.37 + vec3 n = normalize(tnorm * 2.0 - 1.0); 1.38 + 1.39 + float diffuse = max(dot(n, l), 0.0); 1.40 + 1.41 + /* blinn-phong specular */ 1.42 + vec3 v = normalize(-vpos); 1.43 + vec3 h = normalize(v + l); 1.44 + float specular = pow(max(dot(n, h), 0.0), 60.0); 1.45 + 1.46 + const vec3 amb = vec3(0.02, 0.02, 0.02); 1.47 + 1.48 + float att = clamp(1.0 / (0.5 * (ldist * ldist)), 0.0, 1.0); 1.49 + 1.50 + vec3 dif = tcol * diffuse * att; 1.51 + vec3 spec = vec3(0.6, 0.6, 0.6) * specular * att; 1.52 + 1.53 + gl_FragColor = vec4(fog * (amb + dif + spec), 1.0); 1.54 +}