annotate prototype/sdr/deferred_omni.p.glsl @ 33:0357994effe2
ha! fixed deferred
author |
John Tsiombikas <nuclear@member.fsf.org> |
date |
Tue, 28 Aug 2012 03:18:47 +0300 |
parents |
938a6a155c94 |
children |
85734f319626 |
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@33
|
4 uniform vec3 light_color;
|
nuclear@33
|
5 uniform float light_radius;
|
nuclear@33
|
6
|
nuclear@30
|
7 varying vec3 ltpos;
|
nuclear@29
|
8
|
nuclear@29
|
9 void main()
|
nuclear@29
|
10 {
|
nuclear@30
|
11 vec2 tc = gl_FragCoord.xy * tex_scale / fb_size;
|
nuclear@29
|
12
|
nuclear@30
|
13 vec3 pos = texture2D(mrt0, tc).xyz;
|
nuclear@30
|
14 vec3 norm = texture2D(mrt1, tc).xyz;
|
nuclear@30
|
15
|
nuclear@30
|
16 vec4 texel3 = texture2D(mrt2, tc);
|
nuclear@30
|
17 vec3 dcol = texel3.xyz;
|
nuclear@30
|
18 float shin = texel3.w;
|
nuclear@30
|
19
|
nuclear@30
|
20 vec3 ldir = ltpos - pos;
|
nuclear@33
|
21 float light_dist = length(ldir);
|
nuclear@30
|
22 ldir = normalize(ldir);
|
nuclear@30
|
23
|
nuclear@30
|
24 float ndotl = dot(norm, ldir);
|
nuclear@30
|
25 vec3 color = dcol * ndotl;
|
nuclear@30
|
26
|
nuclear@33
|
27 float atten = 1.0 - light_dist / light_radius;
|
nuclear@33
|
28 atten = clamp(atten, 0.0, 1.0);
|
nuclear@29
|
29
|
nuclear@33
|
30 gl_FragColor = vec4(color * light_color * atten, 1.0);
|
nuclear@29
|
31 }
|