I found out that using diffuse lighting with a light "in the infinity" and non local viewer did not work on the lattest mesa 3.1 I have (and apparently it did not work with any 3.1 version) I tracked the reason to the fact that light->VP_inf_norm contained zeroes when shading should happen. the field is initialized in light.c in gl_compute_light_positions but apparently in my case the function was never called I fixed this in context.c by adding (ctx->NewState & NEW_LIGHTING) || to the list of conditions which cause gl_compute_light_positions to be called. (around line 2222) I am not certain if my fix is an overkill, so somebody how knows about this should check it. In any case somebody with the CVS access should fix the bug either using the above mmentioned fix or something better. Eero