diff options
author | 2017-03-02 11:28:43 -0500 | |
---|---|---|
committer | 2017-03-02 17:40:00 +0000 | |
commit | cf40e307cd7c78c3ac8812229a7f4f2796b8688e (patch) | |
tree | 2e7aeafe54e0f286bdb83ed6914334a0a1849f82 /src/effects | |
parent | e7e5499c787a492d98f73445dea78b9dfb0f773b (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.cpp | 14 |
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, |