dungeon_crawler
annotate prototype/sdr/deferred_omni.p.glsl @ 30:938a6a155c94
foo
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Mon, 27 Aug 2012 04:03:22 +0300 |
parents | 2fc004802739 |
children | 0357994effe2 |
rev | line source |
---|---|
nuclear@29 | 1 uniform sampler2D mrt0, mrt1, mrt2, mrt3; |
nuclear@30 | 2 uniform vec2 tex_scale, fb_size; |
nuclear@30 | 3 |
nuclear@30 | 4 varying vec3 ltpos; |
nuclear@29 | 5 |
nuclear@29 | 6 void main() |
nuclear@29 | 7 { |
nuclear@30 | 8 vec2 tc = gl_FragCoord.xy * tex_scale / fb_size; |
nuclear@29 | 9 |
nuclear@30 | 10 vec3 pos = texture2D(mrt0, tc).xyz; |
nuclear@30 | 11 vec3 norm = texture2D(mrt1, tc).xyz; |
nuclear@30 | 12 |
nuclear@30 | 13 vec4 texel3 = texture2D(mrt2, tc); |
nuclear@30 | 14 vec3 dcol = texel3.xyz; |
nuclear@30 | 15 float shin = texel3.w; |
nuclear@30 | 16 |
nuclear@30 | 17 vec3 ldir = ltpos - pos; |
nuclear@30 | 18 float dist = length(ldir); |
nuclear@30 | 19 ldir = normalize(ldir); |
nuclear@30 | 20 |
nuclear@30 | 21 float ndotl = dot(norm, ldir); |
nuclear@30 | 22 vec3 color = dcol * ndotl; |
nuclear@30 | 23 |
nuclear@30 | 24 float atten = 1.0; |
nuclear@30 | 25 if(dist > 0.2) { |
nuclear@30 | 26 atten = 0.0; |
nuclear@29 | 27 } |
nuclear@29 | 28 |
nuclear@30 | 29 gl_FragColor = vec4(color, 1.0); |
nuclear@29 | 30 } |