From fd35c742bff9c7e39f1b6deeb2171d04ca895f0a Mon Sep 17 00:00:00 2001 From: Mike Klein Date: Mon, 15 May 2017 15:55:54 -0400 Subject: 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 Commit-Queue: Mike Klein --- gm/radial_gradient_precision.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 gm/radial_gradient_precision.cpp (limited to 'gm/radial_gradient_precision.cpp') 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); +} -- cgit v1.2.3