aboutsummaryrefslogtreecommitdiffhomepage
path: root/samplecode/PerlinPatch.cpp
diff options
context:
space:
mode:
authorGravatar egdaniel <egdaniel@google.com>2015-11-09 07:40:49 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2015-11-09 07:40:49 -0800
commit478c04efb352e84e8ccbf633ba5b352c28a12012 (patch)
treedafc6f692550d64bc75bf56d6a256bae1997c593 /samplecode/PerlinPatch.cpp
parent953549235ddaaf4e670b44bd69efa1ac1c835be0 (diff)
Update sample to use new perlin noise shader, and make cloud like
Diffstat (limited to 'samplecode/PerlinPatch.cpp')
-rw-r--r--samplecode/PerlinPatch.cpp24
1 files changed, 14 insertions, 10 deletions
diff --git a/samplecode/PerlinPatch.cpp b/samplecode/PerlinPatch.cpp
index 9f86f1f217..945b6921fe 100644
--- a/samplecode/PerlinPatch.cpp
+++ b/samplecode/PerlinPatch.cpp
@@ -10,7 +10,7 @@
#include "SkCanvas.h"
#include "SkGradientShader.h"
#include "SkPatchUtils.h"
-#include "SkPerlinNoiseShader.h"
+#include "SkPerlinNoiseShader2/SkPerlinNoiseShader2.h"
#include "SkComposeShader.h"
static void draw_control_points(SkCanvas* canvas, const SkPoint cubics[12]) {
@@ -94,25 +94,21 @@ public:
fPts[11].set(150, 150);
const SkColor colors[SkPatchUtils::kNumCorners] = {
- SK_ColorBLUE, SK_ColorYELLOW
+ 0xFF5555FF, 0xFF8888FF, 0xFFCCCCFF
};
-
- fShader0 = SkGradientShader::CreateRadial(SkPoint::Make(128.0f, 128.0f),
- 180.0f,
+ const SkPoint points[2] = { SkPoint::Make(0.0f, 0.0f),
+ SkPoint::Make(100.0f, 100.0f) };
+ fShader0 = SkGradientShader::CreateLinear(points,
colors,
NULL,
- 2,
+ 3,
SkShader::kMirror_TileMode,
0,
NULL);
- fShader1 = SkPerlinNoiseShader::CreateTurbulence(fXFreq, fYFreq, 2, fSeed, NULL);
- fShaderCompose = new SkComposeShader(fShader0, fShader1);
}
virtual ~PerlinPatchView() {
SkSafeUnref(fShader0);
- SkSafeUnref(fShader1);
- SkSafeUnref(fShaderCompose);
}
protected:
// overrides from SkEventSink
@@ -125,6 +121,7 @@ protected:
}
bool onAnimate(const SkAnimTimer& timer) override {
+ fSeed += 0.005f;
return true;
}
@@ -147,10 +144,17 @@ protected:
SkAutoTUnref<SkXfermode> xfer(SkXfermode::Create(SkXfermode::kSrc_Mode));
+ SkScalar scaleFreq = 2.0;
+ fShader1 = SkPerlinNoiseShader2::CreateImprovedNoise(fXFreq/scaleFreq, fYFreq/scaleFreq, 4,
+ fSeed);
+ fShaderCompose = new SkComposeShader(fShader0, fShader1);
+
paint.setShader(fShaderCompose);
canvas->drawPatch(fPts, nullptr, texCoords, xfer, paint);
draw_control_points(canvas, fPts);
+ SkSafeUnref(fShader1);
+ SkSafeUnref(fShaderCompose);
}
class PtClick : public Click {