Per Fragment Lighting

OpenGL's default lighting capabilities are limited to vertices. Using shader allows to have per-fragment lighting.

You can grab the sources!