| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2014 Google Inc. | 2 * Copyright 2014 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 | 7 |
| 8 #ifndef GrXferProcessor_DEFINED | 8 #ifndef GrXferProcessor_DEFINED |
| 9 #define GrXferProcessor_DEFINED | 9 #define GrXferProcessor_DEFINED |
| 10 | 10 |
| 11 #include "GrBlend.h" |
| 11 #include "GrColor.h" | 12 #include "GrColor.h" |
| 12 #include "GrProcessor.h" | 13 #include "GrProcessor.h" |
| 13 #include "GrTexture.h" | 14 #include "GrTexture.h" |
| 14 #include "GrTypes.h" | 15 #include "GrTypes.h" |
| 15 #include "SkXfermode.h" | 16 #include "SkXfermode.h" |
| 16 | 17 |
| 17 class GrShaderCaps; | 18 class GrShaderCaps; |
| 18 class GrGLSLCaps; | 19 class GrGLSLCaps; |
| 19 class GrGLXferProcessor; | 20 class GrGLXferProcessor; |
| 20 class GrProcOptInfo; | 21 class GrProcOptInfo; |
| 21 | 22 |
| 22 /** | 23 /** |
| 23 * Equations for alpha-blending. | |
| 24 */ | |
| 25 enum GrBlendEquation { | |
| 26 // Basic blend equations. | |
| 27 kAdd_GrBlendEquation, //<! Cs*S + Cd*D | |
| 28 kSubtract_GrBlendEquation, //<! Cs*S - Cd*D | |
| 29 kReverseSubtract_GrBlendEquation, //<! Cd*D - Cs*S | |
| 30 | |
| 31 // Advanced blend equations. These are described in the SVG and PDF specs. | |
| 32 kScreen_GrBlendEquation, | |
| 33 kOverlay_GrBlendEquation, | |
| 34 kDarken_GrBlendEquation, | |
| 35 kLighten_GrBlendEquation, | |
| 36 kColorDodge_GrBlendEquation, | |
| 37 kColorBurn_GrBlendEquation, | |
| 38 kHardLight_GrBlendEquation, | |
| 39 kSoftLight_GrBlendEquation, | |
| 40 kDifference_GrBlendEquation, | |
| 41 kExclusion_GrBlendEquation, | |
| 42 kMultiply_GrBlendEquation, | |
| 43 kHSLHue_GrBlendEquation, | |
| 44 kHSLSaturation_GrBlendEquation, | |
| 45 kHSLColor_GrBlendEquation, | |
| 46 kHSLLuminosity_GrBlendEquation, | |
| 47 | |
| 48 kFirstAdvancedGrBlendEquation = kScreen_GrBlendEquation, | |
| 49 kLast_GrBlendEquation = kHSLLuminosity_GrBlendEquation | |
| 50 }; | |
| 51 | |
| 52 static const int kGrBlendEquationCnt = kLast_GrBlendEquation + 1; | |
| 53 | |
| 54 /** | |
| 55 * Coeffecients for alpha-blending. | |
| 56 */ | |
| 57 enum GrBlendCoeff { | |
| 58 kZero_GrBlendCoeff, //<! 0 | |
| 59 kOne_GrBlendCoeff, //<! 1 | |
| 60 kSC_GrBlendCoeff, //<! src color | |
| 61 kISC_GrBlendCoeff, //<! one minus src color | |
| 62 kDC_GrBlendCoeff, //<! dst color | |
| 63 kIDC_GrBlendCoeff, //<! one minus dst color | |
| 64 kSA_GrBlendCoeff, //<! src alpha | |
| 65 kISA_GrBlendCoeff, //<! one minus src alpha | |
| 66 kDA_GrBlendCoeff, //<! dst alpha | |
| 67 kIDA_GrBlendCoeff, //<! one minus dst alpha | |
| 68 kConstC_GrBlendCoeff, //<! constant color | |
| 69 kIConstC_GrBlendCoeff, //<! one minus constant color | |
| 70 kConstA_GrBlendCoeff, //<! constant color alpha | |
| 71 kIConstA_GrBlendCoeff, //<! one minus constant color alpha | |
| 72 kS2C_GrBlendCoeff, | |
| 73 kIS2C_GrBlendCoeff, | |
| 74 kS2A_GrBlendCoeff, | |
| 75 kIS2A_GrBlendCoeff, | |
| 76 | |
| 77 kLast_GrBlendCoeff = kIS2A_GrBlendCoeff | |
| 78 }; | |
| 79 | |
| 80 static const int kGrBlendCoeffCnt = kLast_GrBlendCoeff + 1; | |
| 81 | |
| 82 /** | |
| 83 * Barriers for blending. When a shader reads the dst directly, an Xfer barrier
is sometimes | 24 * Barriers for blending. When a shader reads the dst directly, an Xfer barrier
is sometimes |
| 84 * required after a pixel has been written, before it can be safely read again. | 25 * required after a pixel has been written, before it can be safely read again. |
| 85 */ | 26 */ |
| 86 enum GrXferBarrierType { | 27 enum GrXferBarrierType { |
| 87 kTexture_GrXferBarrierType, //<! Required when a shader reads and renders to
the same texture. | 28 kTexture_GrXferBarrierType, //<! Required when a shader reads and renders to
the same texture. |
| 88 kBlend_GrXferBarrierType, //<! Required by certain blend extensions. | 29 kBlend_GrXferBarrierType, //<! Required by certain blend extensions. |
| 89 }; | 30 }; |
| 90 | 31 |
| 91 /** | 32 /** |
| 92 * GrXferProcessor is responsible for implementing the xfer mode that blends the
src color and dst | 33 * GrXferProcessor is responsible for implementing the xfer mode that blends the
src color and dst |
| (...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 459 enum { | 400 enum { |
| 460 kIllegalXPFClassID = 0, | 401 kIllegalXPFClassID = 0, |
| 461 }; | 402 }; |
| 462 static int32_t gCurrXPFClassID; | 403 static int32_t gCurrXPFClassID; |
| 463 | 404 |
| 464 typedef GrProgramElement INHERITED; | 405 typedef GrProgramElement INHERITED; |
| 465 }; | 406 }; |
| 466 | 407 |
| 467 #endif | 408 #endif |
| 468 | 409 |
| OLD | NEW |