It seems your normals are not computed as they should. Notice how same direction sides of different objects are lit differently.
I would guess that:
- you are not transforming the normals right when transforming your objects;
- your normals are not normalized to unit length (do you have
glEnable(GL_NORMALIZE)
in your code?) - normals computation is wrong in some other way (e.g. you round the values before sending them to render).
It is hard to suggest more possible causes without seeing your actual code.