aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/effects
diff options
context:
space:
mode:
authorGravatar Jim Van Verth <jvanverth@google.com>2017-03-02 11:28:43 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-03-02 17:40:00 +0000
commitcf40e307cd7c78c3ac8812229a7f4f2796b8688e (patch)
tree2e7aeafe54e0f286bdb83ed6914334a0a1849f82 /src/effects
parente7e5499c787a492d98f73445dea78b9dfb0f773b (diff)
Use fast path for circular shadows.
Also cleans up some of the MaskFilter code to make it more correct. BUG=skia:6119 Change-Id: I93016bcdd9c55fcb2d1dc8776428a72eb563d67a Reviewed-on: https://skia-review.googlesource.com/9116 Commit-Queue: Jim Van Verth <jvanverth@google.com> Reviewed-by: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'src/effects')
-rw-r--r--src/effects/shadows/SkAmbientShadowMaskFilter.cpp14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/effects/shadows/SkAmbientShadowMaskFilter.cpp b/src/effects/shadows/SkAmbientShadowMaskFilter.cpp
index 9db75c5acb..b6f5392cb1 100644
--- a/src/effects/shadows/SkAmbientShadowMaskFilter.cpp
+++ b/src/effects/shadows/SkAmbientShadowMaskFilter.cpp
@@ -220,12 +220,12 @@ bool SkAmbientShadowMaskFilterImpl::directFilterRRectMaskGPU(GrContext*,
if (fAmbientAlpha > 0.0f) {
SkScalar srcSpaceAmbientRadius = fOccluderHeight * kHeightFactor * kGeomFactor;
const float umbraAlpha = (1.0f + SkTMax(fOccluderHeight * kHeightFactor, 0.0f));
- const SkScalar ambientOffset = srcSpaceAmbientRadius / umbraAlpha;
+ const SkScalar strokeWidth = srcSpaceAmbientRadius * umbraAlpha;
- // For the ambient rrect, we inset the offset rect by half the srcSpaceAmbientRadius
- // to get our stroke shape.
- SkScalar ambientPathOutset = SkTMax(ambientOffset - srcSpaceAmbientRadius * 0.5f,
- minRadius);
+ // For the ambient rrect, we outset the offset rect by srcSpaceAmbientRadius
+ // minus half the strokeWidth to get our stroke shape.
+ SkScalar ambientPathOutset = SkTMax(srcSpaceAmbientRadius - strokeWidth * 0.5f,
+ minRadius);
SkRRect ambientRRect;
if (isRect) {
@@ -235,14 +235,14 @@ bool SkAmbientShadowMaskFilterImpl::directFilterRRectMaskGPU(GrContext*,
rrect.outset(ambientPathOutset, ambientPathOutset, &ambientRRect);
}
- const SkScalar devSpaceAmbientRadius = srcSpaceAmbientRadius * scaleFactor;
+ const SkScalar devSpaceAmbientRadius = strokeWidth * scaleFactor;
GrPaint newPaint(paint);
GrColor4f color = newPaint.getColor4f();
color.fRGBA[3] *= fAmbientAlpha;
newPaint.setColor4f(color);
SkStrokeRec ambientStrokeRec(SkStrokeRec::kHairline_InitStyle);
- ambientStrokeRec.setStrokeStyle(srcSpaceAmbientRadius, false);
+ ambientStrokeRec.setStrokeStyle(strokeWidth, false);
rtContext->drawShadowRRect(clip, std::move(newPaint), viewMatrix, ambientRRect,
devSpaceAmbientRadius,