diff options
author | 2017-01-24 16:27:57 -0500 | |
---|---|---|
committer | 2017-01-24 23:33:16 +0000 | |
commit | fdb1bdf1aa4e7f14befcb3acc3f586e7734190ea (patch) | |
tree | 6addb828abf8dedba1e0e02e1dc63b4918b15f58 /src/effects/SkGaussianEdgeShader.cpp | |
parent | 7f9c29a887106ab3babe0ec423a3bcae87ae4788 (diff) |
Add geometric implementation for ambient shadows
BUG=skia:6119
Change-Id: I3140522f223c35fc059a33b593064897485dff7c
Reviewed-on: https://skia-review.googlesource.com/7273
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Diffstat (limited to 'src/effects/SkGaussianEdgeShader.cpp')
-rw-r--r-- | src/effects/SkGaussianEdgeShader.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/effects/SkGaussianEdgeShader.cpp b/src/effects/SkGaussianEdgeShader.cpp index e1c30c8fbf..7405fd14d9 100644 --- a/src/effects/SkGaussianEdgeShader.cpp +++ b/src/effects/SkGaussianEdgeShader.cpp @@ -79,9 +79,10 @@ public: if (!args.fGpImplementsDistanceVector) { fragBuilder->codeAppendf("// GP does not implement fsDistanceVector - " - " returning grey in GLSLGaussianEdgeFP\n"); - fragBuilder->codeAppendf("vec4 color = %s;", args.fInputColor); - fragBuilder->codeAppendf("%s = vec4(0.0, 0.0, 0.0, color.r);", args.fOutputColor); + " using alpha as input to GLSLGaussianEdgeFP\n"); + fragBuilder->codeAppendf("float factor = 1.0 - %s.a;", args.fInputColor); + fragBuilder->codeAppend("factor = exp(-factor * factor * 4.0) - 0.018;"); + fragBuilder->codeAppendf("%s = vec4(0.0, 0.0, 0.0, factor);", args.fOutputColor); } else { fragBuilder->codeAppendf("vec4 color = %s;", args.fInputColor); fragBuilder->codeAppend("float radius = color.r*256.0*64.0 + color.g*64.0;"); |