dungeon_crawler
diff 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 |
line diff
1.1 --- a/prototype/sdr/deferred_omni.p.glsl Sun Aug 26 03:39:32 2012 +0300 1.2 +++ b/prototype/sdr/deferred_omni.p.glsl Mon Aug 27 04:03:22 2012 +0300 1.3 @@ -1,20 +1,30 @@ 1.4 uniform sampler2D mrt0, mrt1, mrt2, mrt3; 1.5 -uniform vec2 tex_scale; 1.6 +uniform vec2 tex_scale, fb_size; 1.7 + 1.8 +varying vec3 ltpos; 1.9 1.10 void main() 1.11 { 1.12 - vec2 tc = gl_TexCoord[0].st; 1.13 + vec2 tc = gl_FragCoord.xy * tex_scale / fb_size; 1.14 1.15 - vec4 texel; 1.16 - if(tc.x < 0.25) { 1.17 - texel = texture2D(mrt0, tc * vec2(4.0, 1.0) * tex_scale); 1.18 - } else if(tc.x < 0.5) { 1.19 - texel = texture2D(mrt1, (tc - vec2(0.25, 0.0)) * vec2(4.0, 1.0) * tex_scale); 1.20 - } else if(tc.x < 0.75) { 1.21 - texel = texture2D(mrt2, (tc - vec2(0.5, 0.0)) * vec2(4.0, 1.0) * tex_scale); 1.22 - } else { 1.23 - texel = texture2D(mrt3, (tc - vec2(0.75, 0.0)) * vec2(4.0, 1.0) * tex_scale); 1.24 + vec3 pos = texture2D(mrt0, tc).xyz; 1.25 + vec3 norm = texture2D(mrt1, tc).xyz; 1.26 + 1.27 + vec4 texel3 = texture2D(mrt2, tc); 1.28 + vec3 dcol = texel3.xyz; 1.29 + float shin = texel3.w; 1.30 + 1.31 + vec3 ldir = ltpos - pos; 1.32 + float dist = length(ldir); 1.33 + ldir = normalize(ldir); 1.34 + 1.35 + float ndotl = dot(norm, ldir); 1.36 + vec3 color = dcol * ndotl; 1.37 + 1.38 + float atten = 1.0; 1.39 + if(dist > 0.2) { 1.40 + atten = 0.0; 1.41 } 1.42 1.43 - gl_FragColor = texel; 1.44 + gl_FragColor = vec4(color, 1.0); 1.45 }