diff options
author | Mike Klein <mtklein@chromium.org> | 2017-05-15 15:55:54 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-05-15 20:37:16 +0000 |
commit | fd35c742bff9c7e39f1b6deeb2171d04ca895f0a (patch) | |
tree | a22f0cfa941722601e2c399eaa3ae5c3b06a5315 /gm/radial_gradient_precision.cpp | |
parent | 0dc6dd0a3f56798887d6d1d931485c5054f8c152 (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.cpp | 22 |
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); +} |