A reusable GLSL point light function for use with glslify.
vec3 point_light, which takes the following arguments:
vec3 color: the RGB values of the light.
vec3 light_position: the x/y/z position of the light.
vec3 current_position: the x/y/z position of the current fragment/vertex.
vec3 normal: a normalized normal vector for the current fragment/vertex.
vec3 attenuation: the light attenuation.
Light attenuation is the rate at which the light will fade over space. It's passed as a vector for brevity, but each value has a different effect:
kc, is the constant attenuation.
kl, is the linear attenuation.
kq, is the quadratic attenuation.
Together these values effect the final attenuation curve. For more information check out this this article.
See shaders/terrain.vert for a full example.