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; |