Skip to content
Snippets Groups Projects
Commit b7aa0ce2 authored by Tofu Linden's avatar Tofu Linden
Browse files

enable basic directional lighting for basic/atmospheric shaders - yay.

next, needs the non-shader GL lighting model to be equally dumb (it's too smart - kill the spot angle.
parent ec2eae01
No related branches found
No related tags found
No related merge requests found
...@@ -28,7 +28,28 @@ float calcPointLight(vec3 v, vec3 n, vec4 lp, float la) ...@@ -28,7 +28,28 @@ float calcPointLight(vec3 v, vec3 n, vec4 lp, float la)
//angular attenuation //angular attenuation
da *= calcDirectionalLight(n, lv); da *= calcDirectionalLight(n, lv);
return da;
}
float calcPointLight2(vec3 v, vec3 n, vec4 lp, vec3 ln, float la)
{
//get light vector
vec3 lv = lp.xyz-v;
//get distance
float d = length(lv);
//normalize light vector
lv *= 1.0/d;
//distance attenuation
float da = clamp(1.0/(la * d), 0.0, 1.0);
//angular attenuation
da *= dot(lv, -ln) * calcDirectionalLight(n, lv);
return da; return da;
} }
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
float calcDirectionalLight(vec3 n, vec3 l); float calcDirectionalLight(vec3 n, vec3 l);
float calcPointLight(vec3 v, vec3 n, vec4 lp, float la); float calcPointLight(vec3 v, vec3 n, vec4 lp, float la);
float calcPointLight2(vec3 v, vec3 n, vec4 lp, vec3 ln, float la);
vec3 atmosAmbient(vec3 light); vec3 atmosAmbient(vec3 light);
vec3 atmosAffectDirectionalLight(float lightIntensity); vec3 atmosAffectDirectionalLight(float lightIntensity);
...@@ -18,9 +19,10 @@ vec4 sumLights(vec3 pos, vec3 norm, vec4 color, vec4 baseLight) ...@@ -18,9 +19,10 @@ vec4 sumLights(vec3 pos, vec3 norm, vec4 color, vec4 baseLight)
// Collect normal lights (need to be divided by two, as we later multiply by 2) // Collect normal lights (need to be divided by two, as we later multiply by 2)
col.rgb += gl_LightSource[1].diffuse.rgb * calcDirectionalLight(norm, gl_LightSource[1].position.xyz); col.rgb += gl_LightSource[1].diffuse.rgb * calcDirectionalLight(norm, gl_LightSource[1].position.xyz);
col.rgb += gl_LightSource[2].diffuse.rgb * calcPointLight(pos, norm, gl_LightSource[2].position, gl_LightSource[2].linearAttenuation);
col.rgb += gl_LightSource[3].diffuse.rgb * calcPointLight(pos, norm, gl_LightSource[3].position, gl_LightSource[3].linearAttenuation); col.rgb += gl_LightSource[2].diffuse.rgb * calcPointLight2(pos, norm, gl_LightSource[2].position, gl_LightSource[2].spotDirection.xyz, gl_LightSource[2].linearAttenuation);
//col.rgb += gl_LightSource[4].diffuse.rgb * calcPointLight(pos, norm, gl_LightSource[4].position, gl_LightSource[4].linearAttenuation); col.rgb += gl_LightSource[3].diffuse.rgb * calcPointLight2(pos, norm, gl_LightSource[3].position, gl_LightSource[3].spotDirection.xyz, gl_LightSource[3].linearAttenuation);
//col.rgb += gl_LightSource[4].diffuse.rgb * calcPointLight2(pos, norm, gl_LightSource[4].position, gl_LightSource[4].spotDirection.xyz, gl_LightSource[4].linearAttenuation);
col.rgb = scaleDownLight(col.rgb); col.rgb = scaleDownLight(col.rgb);
// Add windlight lights // Add windlight lights
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment