/ src / Ryujinx.Graphics.GAL / BlendFactor.cs
BlendFactor.cs
 1  namespace Ryujinx.Graphics.GAL
 2  {
 3      public enum BlendFactor
 4      {
 5          Zero = 1,
 6          One,
 7          SrcColor,
 8          OneMinusSrcColor,
 9          SrcAlpha,
10          OneMinusSrcAlpha,
11          DstAlpha,
12          OneMinusDstAlpha,
13          DstColor,
14          OneMinusDstColor,
15          SrcAlphaSaturate,
16          Src1Color = 0x10,
17          OneMinusSrc1Color,
18          Src1Alpha,
19          OneMinusSrc1Alpha,
20          ConstantColor = 0xc001,
21          OneMinusConstantColor,
22          ConstantAlpha,
23          OneMinusConstantAlpha,
24  
25          ZeroGl = 0x4000,
26          OneGl = 0x4001,
27          SrcColorGl = 0x4300,
28          OneMinusSrcColorGl = 0x4301,
29          SrcAlphaGl = 0x4302,
30          OneMinusSrcAlphaGl = 0x4303,
31          DstAlphaGl = 0x4304,
32          OneMinusDstAlphaGl = 0x4305,
33          DstColorGl = 0x4306,
34          OneMinusDstColorGl = 0x4307,
35          SrcAlphaSaturateGl = 0x4308,
36          Src1ColorGl = 0xc900,
37          OneMinusSrc1ColorGl = 0xc901,
38          Src1AlphaGl = 0xc902,
39          OneMinusSrc1AlphaGl = 0xc903,
40      }
41  
42      public static class BlendFactorExtensions
43      {
44          public static bool IsDualSource(this BlendFactor factor)
45          {
46              switch (factor)
47              {
48                  case BlendFactor.Src1Color:
49                  case BlendFactor.Src1ColorGl:
50                  case BlendFactor.Src1Alpha:
51                  case BlendFactor.Src1AlphaGl:
52                  case BlendFactor.OneMinusSrc1Color:
53                  case BlendFactor.OneMinusSrc1ColorGl:
54                  case BlendFactor.OneMinusSrc1Alpha:
55                  case BlendFactor.OneMinusSrc1AlphaGl:
56                      return true;
57                  default:
58                      return false;
59              }
60          }
61      }
62  }