aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/effects
diff options
context:
space:
mode:
authorGravatar Mike Reed <reed@google.com>2017-07-10 09:58:17 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-07-10 16:10:25 +0000
commit81995592d8a941fcf79ba5cee71a37510fa8d6e5 (patch)
treec1cc0fdae675211cd5d1e1f97335ec42d88bbaf0 /src/gpu/effects
parent7343c197fc91c6cedc019dd5fed69969a5d317ca (diff)
don't compose with (forced) opaque colors
Bug: skia: Change-Id: Ic5ea706430b4698e7e937a0cc424ec29b0d8da10 Reviewed-on: https://skia-review.googlesource.com/22029 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Mike Reed <reed@google.com>
Diffstat (limited to 'src/gpu/effects')
-rw-r--r--src/gpu/effects/GrXfermodeFragmentProcessor.cpp19
1 files changed, 3 insertions, 16 deletions
diff --git a/src/gpu/effects/GrXfermodeFragmentProcessor.cpp b/src/gpu/effects/GrXfermodeFragmentProcessor.cpp
index 94491c976e..ad0427174f 100644
--- a/src/gpu/effects/GrXfermodeFragmentProcessor.cpp
+++ b/src/gpu/effects/GrXfermodeFragmentProcessor.cpp
@@ -146,14 +146,12 @@ private:
}
GrColor4f constantOutputForConstantInput(GrColor4f input) const override {
- float alpha = input.fRGBA[3];
- input = input.opaque();
GrColor4f srcColor = ConstantOutputForConstantInput(this->childProcessor(0), input);
GrColor4f dstColor = ConstantOutputForConstantInput(this->childProcessor(1), input);
SkPM4f src = GrColor4fToSkPM4f(srcColor);
SkPM4f dst = GrColor4fToSkPM4f(dstColor);
SkPM4f res = SkBlendMode_Apply(fMode, src, dst);
- return SkPM4fToGrColor4f(res).mulByScalar(alpha);
+ return SkPM4fToGrColor4f(res);
}
GrGLSLFragmentProcessor* onCreateGLSLInstance() const override;
@@ -205,18 +203,12 @@ void GLComposeTwoFragmentProcessor::emitCode(EmitArgs& args) {
GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder;
const ComposeTwoFragmentProcessor& cs = args.fFp.cast<ComposeTwoFragmentProcessor>();
- const char* inputColor = nullptr;
- if (args.fInputColor) {
- inputColor = "inputColor";
- fragBuilder->codeAppendf("vec4 inputColor = vec4(%s.rgb, 1.0);", args.fInputColor);
- }
-
// declare outputColor and emit the code for each of the two children
SkString srcColor("xfer_src");
- this->emitChild(0, inputColor, &srcColor, args);
+ this->emitChild(0, args.fInputColor, &srcColor, args);
SkString dstColor("xfer_dst");
- this->emitChild(1, inputColor, &dstColor, args);
+ this->emitChild(1, args.fInputColor, &dstColor, args);
// emit blend code
SkBlendMode mode = cs.getMode();
@@ -226,11 +218,6 @@ void GLComposeTwoFragmentProcessor::emitCode(EmitArgs& args) {
dstColor.c_str(),
args.fOutputColor,
mode);
-
- // re-multiply the output color by the input color's alpha
- if (args.fInputColor) {
- fragBuilder->codeAppendf("%s *= %s.a;", args.fOutputColor, args.fInputColor);
- }
}
sk_sp<GrFragmentProcessor> GrXfermodeFragmentProcessor::MakeFromTwoProcessors(