Lighting Effects in Mathematica

First, lets define a time dependent surface plot with a color function that varies with the height.  In this case, we cycle through the hue spectrum.  Specifying a ColorFunction will, by default, turn off the lighting system and use on "flat" colors.

gr[t_] := 
      Plot3D[Sin[x + Cos[x] - t] + Cos[y + Sin[y] - t], {x, 0, 4 π}, {y, 
          0, 4 π}, ImageSize -> 600, PlotPoints -> 150, 
        Mesh -> False, ColorFunction -> (Hue[ .79 #] &), 
        DisplayFunction -> Identity]

In order to turn on the lighting system, we need to modify the previous graphic.  First, we transform all Hue directives into SurfaceColor directives.  We use the 3 argument form of SurfaceColor so that we can see specular reflection.

Also, we specify that the lighting system should be used by using Lighting -> True.  For stylistic reasons, the background color is set to black, and multiple light sources are specified.  The specified light sources are actually the default setting, but they are set here for demonstration purposes.   We animate the surface by using a Table with the time variable varying over one complete cycle.

anim = 
        Table[Show[
            Graphics3D[gr[t]] /. 
              Hue[c_] -> SurfaceColor[Hue[c], White, 50], 
            Lighting -> True, DisplayFunction -> $DisplayFunction, 
            Background -> Black, 
            LightSources -> {{{1, 0, 1}, Red}, {{1, 1, 1}, 
                  Green}, {{0, 1, 1}, Blue}}], {t, 0, 
            2 π,  .1}];