| Index: gm/lightingshader.cpp
|
| diff --git a/gm/lightingshader.cpp b/gm/lightingshader.cpp
|
| index 2cf4a953d800b78c0577a57f48daa020168ee698..e2f616fa67d646d6a5d9029384388b66b7f2db0d 100644
|
| --- a/gm/lightingshader.cpp
|
| +++ b/gm/lightingshader.cpp
|
| @@ -112,6 +112,25 @@ protected:
|
| canvas->drawRect(r, paint);
|
| }
|
|
|
| + void drawBevelRect(SkCanvas* canvas, const SkRect& r) {
|
| +
|
| + SkRect bitmapBounds = SkRect::MakeIWH(fDiffuse.width(), fDiffuse.height());
|
| +
|
| + SkMatrix matrix;
|
| + matrix.setRectToRect(bitmapBounds, r, SkMatrix::kFill_ScaleToFit);
|
| +
|
| + SkPaint paint;
|
| + auto diffuseShader = SkBitmapProcShader::MakeBitmapShader(fDiffuse,
|
| + SkShader::kClamp_TileMode, SkShader::kClamp_TileMode, &matrix);
|
| + auto normalSource = SkNormalSource::MakeBevel(SkNormalSource::BevelType::kLinear,
|
| + 0.15f * SkIntToScalar(kTexSize),
|
| + 0.2f * SkIntToScalar(kTexSize));
|
| + paint.setShader(SkLightingShader::Make(std::move(diffuseShader), std::move(normalSource),
|
| + fLights));
|
| +
|
| + canvas->drawRect(r, paint);
|
| + }
|
| +
|
| void onDraw(SkCanvas* canvas) override {
|
| SkMatrix m;
|
| SkRect r;
|
| @@ -136,7 +155,7 @@ protected:
|
| m.setRotate(45.0f, r.centerX(), r.centerY());
|
| m.postTranslate(0.0f, kGMSize/2.0f - kTexSize/2.0f);
|
| canvas->setMatrix(m);
|
| - this->drawRect(canvas, r, kFrustum_NormalMap);
|
| + this->drawBevelRect(canvas, r);
|
| canvas->restore();
|
| }
|
|
|
|
|