diff options
author | 2017-07-10 09:58:17 -0400 | |
---|---|---|
committer | 2017-07-10 16:10:25 +0000 | |
commit | 81995592d8a941fcf79ba5cee71a37510fa8d6e5 (patch) | |
tree | c1cc0fdae675211cd5d1e1f97335ec42d88bbaf0 /src/gpu/effects | |
parent | 7343c197fc91c6cedc019dd5fed69969a5d317ca (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.cpp | 19 |
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( |