Combine the ambient and spot alphas into the base color
for geometric shadows.
This matches the analytic shadow approach better, and
is color space invariant.
Also includes cleanup in SampleAndroidShadows.
Bug: skia:6546
Change-Id: I7a7cd060420dae741f967334c8b19542a14f0bcf
Reviewed-on: https://skia-review.googlesource.com/15228
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
diff --git a/src/gpu/effects/GrBlurredEdgeFragmentProcessor.cpp b/src/gpu/effects/GrBlurredEdgeFragmentProcessor.cpp
index 95b08d2..a37c173 100644
--- a/src/gpu/effects/GrBlurredEdgeFragmentProcessor.cpp
+++ b/src/gpu/effects/GrBlurredEdgeFragmentProcessor.cpp
@@ -23,7 +23,7 @@
fragBuilder->codeAppendf("vec4 color = %s;", args.fInputColor);
if (!args.fGpImplementsDistanceVector) {
fragBuilder->codeAppendf("// assuming interpolant is set in vertex colors\n");
- fragBuilder->codeAppendf("float factor = 1.0 - color.b;");
+ fragBuilder->codeAppendf("float factor = 1.0 - color.a;");
} else {
fragBuilder->codeAppendf("// using distance to edge to compute interpolant\n");
fragBuilder->codeAppend("float radius = color.r*256.0*64.0 + color.g*64.0;");
@@ -37,14 +37,10 @@
fragBuilder->codeAppend("factor = exp(-factor * factor * 4.0) - 0.018;");
break;
case GrBlurredEdgeFP::kSmoothstep_Mode:
- fragBuilder->codeAppend("factor = smoothstep(factor, 0.0, 1.0);");
+ fragBuilder->codeAppend("factor = smoothstep(1.0, 0.0, factor);");
break;
}
- if (!args.fGpImplementsDistanceVector) {
- fragBuilder->codeAppendf("%s = vec4(factor*color.g);", args.fOutputColor);
- } else {
- fragBuilder->codeAppendf("%s = vec4(factor*color.a);", args.fOutputColor);
- }
+ fragBuilder->codeAppendf("%s = vec4(factor);", args.fOutputColor);
}
protected: