Chromium Code Reviews| Index: samplecode/SampleShadowing.cpp |
| diff --git a/samplecode/SampleShadowing.cpp b/samplecode/SampleShadowing.cpp |
| index d0b37fb15ab7921f259a93f2ed2c236f3fb124cf..663047ac66bac2c343d1e1bb8d79d24f80b1f37f 100644 |
| --- a/samplecode/SampleShadowing.cpp |
| +++ b/samplecode/SampleShadowing.cpp |
| @@ -19,11 +19,12 @@ public: |
| this->setBGColor(0xFFCCCCCC); |
| SkLights::Builder builder; |
| - builder.add(SkLights::Light::MakeDirectional(SkColor3f::Make(0.2f, 0.3f, 0.4f), |
| - SkVector3::Make(0.2f, 0.05f, 1.0f))); |
| - builder.add(SkLights::Light::MakeDirectional(SkColor3f::Make(0.4f, 0.3f, 0.2f), |
| - SkVector3::Make(0.05f, 0.2f, 1.0f))); |
| - builder.add(SkLights::Light::MakeAmbient(SkColor3f::Make(0.4f, 0.4f, 0.4f))); |
| + builder.add(SkLights::Light::MakePoint(SkColor3f::Make(0.3f, 0.5f, 0.7f), |
| + SkVector3::Make(150.0f, 150.0f, 300.0f), |
| + 1024)); |
| + builder.add(SkLights::Light::MakePoint(SkColor3f::Make(0.7f, 0.5f, 0.3f), |
| + SkVector3::Make(250.0f, 250.0f, 300.0f), |
| + 1024)); |
| fLights = builder.finish(); |
| fTestRects[0].fColor = 0xFFEE8888; |
| @@ -44,6 +45,7 @@ public: |
| fSelectedRect = -1; |
| fMoveLight = false; |
| + fLightDepth = 300.0f; |
| fClearShadowMaps = false; |
| } |
| @@ -67,6 +69,14 @@ protected: |
| // the shadow maps will be re-generated according to the new backend. |
| fClearShadowMaps = true; |
| break; |
| + case 'q': |
| + fLightDepth += 5.0f; |
| + fMoveLight = true; |
| + break; |
| + case 'w': |
| + fLightDepth -= 5.0f; |
| + fMoveLight = true; |
| + break; |
| default: |
| break; |
| } |
| @@ -117,9 +127,9 @@ protected: |
| fLightsChanged = false; |
| fClearShadowMaps = false; |
| - canvas->setLights(fLights); |
| - canvas->drawShadowedPicture(fPicture, nullptr, nullptr); |
| } |
| + canvas->setLights(fLights); |
| + canvas->drawShadowedPicture(fPicture, nullptr, nullptr); |
| } |
| SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override { |
| @@ -135,22 +145,18 @@ protected: |
| if (fMoveLight) { |
| if (dx != 0 || dy != 0) { |
| - float recipX = 1.0f / kWidth; |
| - float recipY = 1.0f / kHeight; |
| - |
| SkLights::Builder builder; |
| - builder.add(SkLights::Light::MakeDirectional( |
| - SkColor3f::Make(0.2f, 0.3f, 0.4f), |
| - SkVector3::Make(0.2f + (200.0f - x) * recipX, |
| - 0.05f + (200.0f - y) * recipY, |
| - 1.0f))); |
| - builder.add(SkLights::Light::MakeDirectional( |
| - SkColor3f::Make(0.4f, 0.3f, 0.2f), |
| - SkVector3::Make(0.05f + (200.0f - x) * recipX, |
| - 0.2f + (200.0f - y) * recipY, |
| - 1.0f))); |
| - builder.add(SkLights::Light::MakeAmbient( |
| - SkColor3f::Make(0.4f, 0.4f, 0.4f))); |
| + builder.add(SkLights::Light::MakePoint(SkColor3f::Make(0.3f, 0.5f, 0.7f), |
|
jvanverth1
2016/08/17 19:59:02
If you stick these lines in a method that takes x
vjiaoblack
2016/08/18 14:52:19
Done.
|
| + SkVector3::Make(x - 50, |
| + 350 - y, |
| + fLightDepth), |
| + 1024)); |
| + |
| + builder.add(SkLights::Light::MakePoint(SkColor3f::Make(0.7f, 0.5f, 0.3f), |
| + SkVector3::Make(x + 50, |
| + 450 - y, |
| + fLightDepth), |
| + 1024)); |
| fLights = builder.finish(); |
| fLightsChanged = true; |
| @@ -208,6 +214,8 @@ private: |
| bool fSceneChanged; |
| bool fLightsChanged; |
| + SkScalar fLightDepth; |
| + |
| sk_sp<SkLights> fLights; |
| typedef SampleView INHERITED; |