diff options
author | Clyne Sullivan <tullivan99@gmail.com> | 2016-01-12 07:40:29 -0500 |
---|---|---|
committer | Clyne Sullivan <tullivan99@gmail.com> | 2016-01-12 07:40:29 -0500 |
commit | 1574754cdaca14d68459cc520b63b6b3c449ecbd (patch) | |
tree | 45964411f6e342386914e6688e31a5ccec6d4e5a /test.frag | |
parent | d3792c499ce9e33f314e06d102d2a0119108e8d3 (diff) | |
parent | e08983ddccf0beee79e63bdf3ef1b839ea947c7a (diff) |
links / lamps
Diffstat (limited to 'test.frag')
-rw-r--r-- | test.frag | 24 |
1 files changed, 17 insertions, 7 deletions
@@ -2,22 +2,23 @@ uniform sampler2D sampler;
uniform int numLight;
-uniform vec2 lightLocation[255];
+uniform vec2 lightLocation[1024];
uniform vec3 lightColor;
uniform float amb;
-// uniform float lightStrength;
-//uniform float screenHeight;
+
+float b = .0005;
+float minLight = .05;
+float radius = sqrt(1.0 / (b * minLight));
+
void main(){
vec4 color = vec4(0.0f,0.0f,0.0f,0.0f);
for(int i = 0; i < numLight; i++){
vec2 loc = lightLocation[i];
- //if(loc.x == 0.0f) continue;
float dist = length(loc - gl_FragCoord.xy);
- float attenuation=1.0/(1.0+0.01*dist+0.00000000001*dist*dist);
+ //float attenuation=1.0/(1.0+0.01*dist+0.00000000001*dist*dist);
+ float attenuation = clamp(1.0 - dist*dist/(radius*radius), 0.0, 1.0); attenuation *= attenuation;
- //vec4 color = vec4(1.0f,1.0f,1.0f,1.0f);
color += vec4(attenuation, attenuation, attenuation, 1.0f) * vec4(lightColor, 1.0f);
- //color = color + vec4((vec3(lightColor.r + amb, lightColor.g + amb, lightColor.b + amb)*0.25f),1.0f);
}
vec2 coords = gl_TexCoord[0].st;
vec4 tex = texture2D(sampler, coords);
@@ -25,3 +26,12 @@ void main(){ color += vec4(amb,amb,amb,1.0f+amb);
gl_FragColor = tex * vec4(color)*tex.a;
}
+
+/* b values
+ .002 10
+ .008 50
+ .0005 200
+ .00008 500
+ .00002 1000
+ .00005 2000
+*/
|