| Index: gm/lighting.cpp
 | 
| diff --git a/gm/lighting.cpp b/gm/lighting.cpp
 | 
| index e0a317d3287ddd73ad05125f6011d79ebe890ee2..08d09c2ecb14b88e8eecc1199124bae2198c97d6 100644
 | 
| --- a/gm/lighting.cpp
 | 
| +++ b/gm/lighting.cpp
 | 
| @@ -6,6 +6,7 @@
 | 
|   */
 | 
|  
 | 
|  #include "gm.h"
 | 
| +#include "SkAnimTimer.h"
 | 
|  #include "SkLightingImageFilter.h"
 | 
|  #include "SkOffsetImageFilter.h"
 | 
|  #include "SkPoint3.h"
 | 
| @@ -17,7 +18,8 @@ namespace skiagm {
 | 
|  
 | 
|  class ImageLightingGM : public GM {
 | 
|  public:
 | 
| -    ImageLightingGM() {
 | 
| +    ImageLightingGM()
 | 
| +        : fAzimuth(SkIntToScalar(kStartAzimuth)) {
 | 
|          this->setBGColor(0xFF000000);
 | 
|      }
 | 
|  
 | 
| @@ -57,19 +59,25 @@ protected:
 | 
|              canvas->restore();
 | 
|            }
 | 
|          }
 | 
| -        SkPoint3 pointLocation = SkPoint3::Make(0, 0, SkIntToScalar(10));
 | 
| -        SkScalar azimuthRad = SkDegreesToRadians(SkIntToScalar(225));
 | 
| +        SkScalar cosAzimuth;
 | 
| +        SkScalar sinAzimuth = SkScalarSinCos(SkDegreesToRadians(fAzimuth), &cosAzimuth);
 | 
| +
 | 
| +        SkPoint3 spotTarget = SkPoint3::Make(SkIntToScalar(40), SkIntToScalar(40), 0);
 | 
| +        SkPoint3 spotLocation = SkPoint3::Make(spotTarget.fX + 70.7214f * cosAzimuth,
 | 
| +                                               spotTarget.fY + 70.7214f * sinAzimuth,
 | 
| +                                               spotTarget.fZ + SkIntToScalar(20));
 | 
| +        SkScalar spotExponent = SK_Scalar1;
 | 
| +
 | 
| +        SkPoint3 pointLocation = SkPoint3::Make(spotTarget.fX + 50 * cosAzimuth,
 | 
| +                                                spotTarget.fY + 50 * sinAzimuth,
 | 
| +                                                SkIntToScalar(10));
 | 
|          SkScalar elevationRad = SkDegreesToRadians(SkIntToScalar(5));
 | 
| -        SkPoint3 distantDirection = SkPoint3::Make(SkScalarMul(SkScalarCos(azimuthRad),
 | 
| +
 | 
| +        SkPoint3 distantDirection = SkPoint3::Make(SkScalarMul(cosAzimuth,
 | 
|                                                                 SkScalarCos(elevationRad)),
 | 
| -                                                   SkScalarMul(SkScalarSin(azimuthRad),
 | 
| +                                                   SkScalarMul(sinAzimuth,
 | 
|                                                                 SkScalarCos(elevationRad)),
 | 
|                                                     SkScalarSin(elevationRad));
 | 
| -        SkPoint3 spotLocation = SkPoint3::Make(SkIntToScalar(-10),
 | 
| -                                               SkIntToScalar(-10),
 | 
| -                                               SkIntToScalar(20));
 | 
| -        SkPoint3 spotTarget = SkPoint3::Make(SkIntToScalar(40), SkIntToScalar(40), 0);
 | 
| -        SkScalar spotExponent = SK_Scalar1;
 | 
|          SkScalar cutoffAngle = SkIntToScalar(15);
 | 
|          SkScalar kd = SkIntToScalar(2);
 | 
|          SkScalar ks = SkIntToScalar(1);
 | 
| @@ -149,8 +157,18 @@ protected:
 | 
|          }
 | 
|      }
 | 
|  
 | 
| +    bool onAnimate(const SkAnimTimer& timer) override {
 | 
| +        static const SkScalar kDesiredDurationSecs = 15.0f;
 | 
| +
 | 
| +        fAzimuth = kStartAzimuth + timer.scaled(360.0f/kDesiredDurationSecs, 360.0f);
 | 
| +        return true;
 | 
| +    }
 | 
| +
 | 
|  private:
 | 
| +    static const int kStartAzimuth = 225;
 | 
| +
 | 
|      SkBitmap fBitmap;
 | 
| +    SkScalar fAzimuth;
 | 
|  
 | 
|      typedef GM INHERITED;
 | 
|  };
 | 
| 
 |