Well, isn't this confusing.
The light vector is specified in world space. I have done no transformation on it outside the shader.
The gl_Normal is from the object I'm rendering. All objects in my scene have normals for each vertex.
Setting the direction uniform after I do my transformations seem to have no effect.
So that you have a clearer picture, this is the actual code where I do the transformations:
// Set shader uniforms// Light direction specified in world coordinates...glMatrixMode(GL_PROJECTION);glLoadIdentity();gluPerspective(fovY, aspect, near, far);glMatrixMode(GL_MODELVIEW);glLoadIdentity();// Camera follows a spaceship that flies over the ground at a fixed height of 0.333 units// Camera is 2 units behind the ship and 1.333 units above the grounddouble radians = shipAngle * (3.14 / 180.0);gluLookAt(shipX - (2.0 * sin(radians)), 1.333, shipZ - (2.0 * cos(radians)), shipX, 0.333, shipZ, 0.0, 1.0, 0.0);// Draw the ground, which is centred at the origin...// Position the shipglTranslated(shipX, 0.333, shipZ);glRotated(shipAngle, 0.0, 1.0, 0.0);// Draw the ship...