skia2/gm/radial_gradient_precision.cpp
Mike Klein fd35c742bf 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>
2017-05-15 20:37:16 +00:00

23 lines
709 B
C++

/*
* 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);
}