Added normal calculation

Untested, as we don't have a light to test it on, but the implementation
is from my project1 so it should work fine.