aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm/radial_gradient_precision.cpp
diff options
context:
space:
mode:
authorGravatar Mike Klein <mtklein@chromium.org>2017-05-15 15:55:54 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-05-15 20:37:16 +0000
commitfd35c742bff9c7e39f1b6deeb2171d04ca895f0a (patch)
treea22f0cfa941722601e2c399eaa3ae5c3b06a5315 /gm/radial_gradient_precision.cpp
parent0dc6dd0a3f56798887d6d1d931485c5054f8c152 (diff)
fix SkJumper radial gradient precision
rcp(rsqrt(x)) doesn't have enough precision when x is a coordinate. (It's fine when x is a color, like in the softlight blend mode.) Adds a GM to test this. It used to look quite ugly. Change-Id: Icec295c2e2f50ae7a5e3e33c62270f632a58f65c Reviewed-on: https://skia-review.googlesource.com/16914 Reviewed-by: Herb Derby <herb@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
Diffstat (limited to 'gm/radial_gradient_precision.cpp')
-rw-r--r--gm/radial_gradient_precision.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/gm/radial_gradient_precision.cpp b/gm/radial_gradient_precision.cpp
new file mode 100644
index 0000000000..b4e9a11bb1
--- /dev/null
+++ b/gm/radial_gradient_precision.cpp
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2017 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "gm.h"
+#include "SkGradientShader.h"
+
+// All we're looking for here is that we see a smooth gradient.
+DEF_SIMPLE_GM(radial_gradient_precision, canvas, 200, 200) {
+ SkPoint center = {100000, 100000};
+ SkScalar radius = 40;
+ SkColor colors[] = {SK_ColorBLACK, SK_ColorWHITE};
+
+ SkPaint p;
+ p.setShader(SkGradientShader::MakeRadial(center, radius,
+ colors, nullptr, SK_ARRAY_COUNT(colors),
+ SkShader::kRepeat_TileMode));
+ canvas->drawPaint(p);
+}