| Index: gm/lightingshader.cpp
|
| diff --git a/gm/lightingshader.cpp b/gm/lightingshader.cpp
|
| index ae6a24f9f0c3ce895aeae048f022c53ce0504daf..3b1c224f2bf980ab91a3e2524d36a4eaa2b22b10 100644
|
| --- a/gm/lightingshader.cpp
|
| +++ b/gm/lightingshader.cpp
|
| @@ -7,7 +7,9 @@
|
|
|
| #include "gm.h"
|
|
|
| +#include "SkBitmapProcShader.h"
|
| #include "SkLightingShader.h"
|
| +#include "SkNormalSource.h"
|
| #include "SkPoint3.h"
|
| #include "SkShader.h"
|
|
|
| @@ -49,7 +51,9 @@ public:
|
| SkLights::Builder builder;
|
|
|
| builder.add(SkLights::Light(SkColor3f::Make(1.0f, 1.0f, 1.0f),
|
| - SkVector3::Make(1.0f, 0.0f, 0.0f)));
|
| + SkVector3::Make(SK_ScalarRoot2Over2,
|
| + 0.0f,
|
| + SK_ScalarRoot2Over2)));
|
| builder.add(SkLights::Light(SkColor3f::Make(0.2f, 0.2f, 0.2f)));
|
|
|
| fLights = builder.finish();
|
| @@ -95,12 +99,13 @@ protected:
|
|
|
| const SkMatrix& ctm = canvas->getTotalMatrix();
|
|
|
| - // TODO: correctly pull out the pure rotation
|
| - SkVector invNormRotation = { ctm[SkMatrix::kMScaleX], ctm[SkMatrix::kMSkewY] };
|
| -
|
| SkPaint paint;
|
| - paint.setShader(SkLightingShader::Make(fDiffuse, fNormalMaps[mapType], fLights,
|
| - invNormRotation, &matrix, &matrix));
|
| + sk_sp<SkShader> normalMap = SkMakeBitmapShader(fNormalMaps[mapType],
|
| + SkShader::kClamp_TileMode, SkShader::kClamp_TileMode, &matrix, nullptr);
|
| + sk_sp<SkNormalSource> normalSource = SkNormalSource::MakeFromNormalMap(std::move(normalMap),
|
| + ctm);
|
| + paint.setShader(SkLightingShader::Make(fDiffuse, fLights, &matrix,
|
| + std::move(normalSource)));
|
|
|
| canvas->drawRect(r, paint);
|
| }
|
|
|