Chromium Code Reviews| Index: bench/PerlinNoiseBench.cpp |
| =================================================================== |
| --- bench/PerlinNoiseBench.cpp (revision 0) |
| +++ bench/PerlinNoiseBench.cpp (revision 0) |
| @@ -0,0 +1,60 @@ |
| +/* |
| + * Copyright 2013 Google Inc. |
| + * |
| + * Use of this source code is governed by a BSD-style license that can be |
| + * found in the LICENSE file. |
| + */ |
| +#include "SkBenchmark.h" |
| +#include "SkCanvas.h" |
| +#include "SkPerlinNoiseShader.h" |
| + |
| +class PerlinNoiseBench : public SkBenchmark { |
| + SkISize fSize; |
| + |
| +public: |
| + PerlinNoiseBench(void* param) : INHERITED(param) { |
| + fSize = SkISize::Make(80, 80); |
| + } |
| + |
| +protected: |
| + virtual const char* onGetName() SK_OVERRIDE { |
| + return "perlinnoise"; |
| + } |
| + |
| + virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE { |
| + test(canvas, 0, 0, SkPerlinNoiseShader::kFractalNoise_Type, |
|
bsalomon
2013/04/10 20:21:10
this->
bsalomon
2013/04/10 20:21:10
One run is enough?
sugoi
2013/04/10 20:28:01
Done.
sugoi
2013/04/10 20:28:01
Well, it is very simplistic, but from what I saw,
|
| + 0.1f, 0.1f, 3, 0, false); |
| + } |
| + |
| +private: |
| + void drawClippedRect(SkCanvas* canvas, int x, int y, const SkPaint& paint) { |
| + canvas->save(); |
| + canvas->clipRect(SkRect::MakeXYWH(SkIntToScalar(x), SkIntToScalar(y), |
| + SkIntToScalar(fSize.width()), SkIntToScalar(fSize.height()))); |
| + SkRect r = SkRect::MakeXYWH(SkIntToScalar(x), SkIntToScalar(y), |
| + SkIntToScalar(fSize.width()), |
| + SkIntToScalar(fSize.height())); |
| + canvas->drawRect(r, paint); |
| + canvas->restore(); |
| + } |
| + |
| + void test(SkCanvas* canvas, int x, int y, SkPerlinNoiseShader::Type type, |
| + float baseFrequencyX, float baseFrequencyY, int numOctaves, float seed, |
| + bool stitchTiles) { |
| + SkShader* shader = (type == SkPerlinNoiseShader::kFractalNoise_Type) ? |
| + SkPerlinNoiseShader::CreateFractalNoise(baseFrequencyX, baseFrequencyY, numOctaves, |
| + seed, stitchTiles ? &fSize : NULL) : |
| + SkPerlinNoiseShader::CreateTubulence(baseFrequencyX, baseFrequencyY, numOctaves, |
| + seed, stitchTiles ? &fSize : NULL); |
| + SkPaint paint; |
| + paint.setShader(shader)->unref(); |
| + drawClippedRect(canvas, x, y, paint); |
|
bsalomon
2013/04/10 20:21:10
this->
sugoi
2013/04/10 20:28:01
Done.
|
| + } |
| + |
| + typedef SkBenchmark INHERITED; |
| +}; |
| + |
| +/////////////////////////////////////////////////////////////////////////////// |
| + |
| +DEF_BENCH( return new PerlinNoiseBench(p); ) |
| + |