aboutsummaryrefslogtreecommitdiffstats
path: root/frig.frag
blob: f750f2d989a78bdd68e7925395b62b595d84bef3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#version 120
uniform sampler2D sampler;

uniform int numLight;
uniform vec2 lightLocation[64];
uniform float fireFlicker[64];
uniform vec3 lightColor;
uniform float amb;

float b = .0005f;
float minLight = .05f;
float radius = sqrt(1.0f / (b * minLight));
//float radius = b*minlight;

float rand(vec2 co){
    return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);
}

void main(){
	vec4 color = vec4(0.0f, 0.0f, 0.0f, 0.0f);
	for(int i = 0; i < numLight; i++){
		vec2 loc = lightLocation[i];
		float dist = length(loc - gl_FragCoord.xy);
		//float attenuation=1.0/(1.0+0.01*dist+0.00000000001*dist*dist);
		float attenuation = clamp(1.0f - dist*dist/(radius*radius), 0.0f, 1.0f); attenuation *= attenuation;

		color += vec4(attenuation, attenuation, attenuation, 1.0f) * vec4(lightColor, 1.0f) * fireFlicker[i];
	}
	vec2 coords = gl_TexCoord[0].st;
	vec4 tex = texture2D(sampler, coords);

	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
*/