Gouraud seems to be a real pain in the ass of many coders. First
time this compo was cancelled due to lack of contributions, and
even this time we had had the same problem. Only 2(3) contributions
this time, from BlueBerry, Luken and me (Nao) But I just discovered
after deadline that mine entry has 2 fatal bugs (ie. crash and
object dissappearing on some very particular cases). Unfortunatly,
I found me in the difficult position to judge myself so, I retired
my entry from the competition. At least we have a winner BlueBerry
with a stunning routine, very short and fast indeed!
Luken entry doesn't seems to rotate vertex normals, so, when object rotates, light rotates too, like object and light are a rigid body. Anyway.. rules doesn't strictly speak about this case, so there was no penalty. Also notice that Luken used a very short gouraud rasterizer (but painfully slow).
No doubts for BlueBerry's routine, he is the winner, cause shortest (and fastest) code and a very good accuracy on ligthening (less in edges calculations). Maybe, joining BlueBerry's rotation and projection code, and Luken's gouraud rasterizer, should be possible to make a even shorter routine :-)
In case you want to see the contributions code. Download the package here Please remember that, even if you can download these routines, they are still not public domain. Ask before using any of these routines, or give credits at least.