Chromium Code Reviews| Index: gm/lightingshader.cpp |
| diff --git a/gm/lightingshader.cpp b/gm/lightingshader.cpp |
| index 2cf4a953d800b78c0577a57f48daa020168ee698..0be9ad9ddc77b7cd9799fcbc4cd3191c44a77475 100644 |
| --- a/gm/lightingshader.cpp |
| +++ b/gm/lightingshader.cpp |
| @@ -112,6 +112,26 @@ 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; |
|
robertphillips
2016/07/11 19:13:21
Add '\n'
dvonbeck
2016/07/13 14:23:37
Done.
|
| + 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 +156,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(); |
| } |