Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(13)

Side by Side Diff: src/gpu/glsl/GrGLSLBlend.cpp

Issue 1488213002: Add in shader blending for CoverageSetOp XP (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: rebased Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/gpu/glsl/GrGLSLBlend.h ('k') | src/gpu/glsl/GrGLSLXferProcessor.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2015 Google Inc. 2 * Copyright 2015 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 #include "GrGLSLBlend.h" 7 #include "GrGLSLBlend.h"
8 #include "glsl/GrGLSLFragmentShaderBuilder.h" 8 #include "glsl/GrGLSLFragmentShaderBuilder.h"
9 9
10 ////////////////////////////////////////////////////////////////////////////// 10 //////////////////////////////////////////////////////////////////////////////
(...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after
426 false); 426 false);
427 // append dst blend 427 // append dst blend
428 if(!append_porterduff_term(fsBuilder, dstCoeff, dstColor, srcColor, dstC olor, didAppend)) { 428 if(!append_porterduff_term(fsBuilder, dstCoeff, dstColor, srcColor, dstC olor, didAppend)) {
429 fsBuilder->codeAppend("vec4(0, 0, 0, 0)"); 429 fsBuilder->codeAppend("vec4(0, 0, 0, 0)");
430 } 430 }
431 fsBuilder->codeAppend(";"); 431 fsBuilder->codeAppend(";");
432 } else { 432 } else {
433 emit_advanced_xfermode_code(fsBuilder, srcColor, dstColor, outColor, mod e); 433 emit_advanced_xfermode_code(fsBuilder, srcColor, dstColor, outColor, mod e);
434 } 434 }
435 } 435 }
436
437 void GrGLSLBlend::AppendRegionOp(GrGLSLFragmentBuilder* fsBuilder, const char* s rcColor,
438 const char* dstColor, const char* outColor,
439 SkRegion::Op regionOp) {
440 SkXfermode::Coeff srcCoeff, dstCoeff;
441 switch (regionOp) {
442 case SkRegion::kReplace_Op:
443 srcCoeff = SkXfermode::kOne_Coeff;
444 dstCoeff = SkXfermode::kZero_Coeff;
445 break;
446 case SkRegion::kIntersect_Op:
447 srcCoeff = SkXfermode::kDC_Coeff;
448 dstCoeff = SkXfermode::kZero_Coeff;
449 break;
450 case SkRegion::kUnion_Op:
451 srcCoeff = SkXfermode::kOne_Coeff;
452 dstCoeff = SkXfermode::kISC_Coeff;
453 break;
454 case SkRegion::kXOR_Op:
455 srcCoeff = SkXfermode::kIDC_Coeff;
456 dstCoeff = SkXfermode::kISC_Coeff;
457 break;
458 case SkRegion::kDifference_Op:
459 srcCoeff = SkXfermode::kZero_Coeff;
460 dstCoeff = SkXfermode::kISC_Coeff;
461 break;
462 case SkRegion::kReverseDifference_Op:
463 srcCoeff = SkXfermode::kIDC_Coeff;
464 dstCoeff = SkXfermode::kZero_Coeff;
465 break;
466 default:
467 SkFAIL("Unsupported Op");
468 // We should never get here but to make compiler happy
469 srcCoeff = SkXfermode::kZero_Coeff;
470 dstCoeff = SkXfermode::kZero_Coeff;
471 }
472 fsBuilder->codeAppendf("%s = ", outColor);
473 // append src blend
474 bool didAppend = append_porterduff_term(fsBuilder, srcCoeff, srcColor, srcCo lor, dstColor,
475 false);
476 // append dst blend
477 if(!append_porterduff_term(fsBuilder, dstCoeff, dstColor, srcColor, dstColor , didAppend)) {
478 fsBuilder->codeAppend("vec4(0, 0, 0, 0)");
479 }
480 fsBuilder->codeAppend(";");
481 }
482
OLDNEW
« no previous file with comments | « src/gpu/glsl/GrGLSLBlend.h ('k') | src/gpu/glsl/GrGLSLXferProcessor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698