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  }