Add gs_blend_function_separate

This allows the ability to separate the blend states of color and alpha.

The default blend state has also changed so that alpha is always added
together to ensure that the destination image always gets an alpha value
that is actually usable after the operation (for render targets).

Old default state:
  color source: GS_BLEND_SRCALPHA, color dest: GS_BLEND_INVSRCALPHA
  alpha source: GS_BLEND_SRCALPHA, alpha dest: GS_BLEND_INVSRCALPHA

New default state:
  color source: GS_BLEND_SRCALPHA, color dest: GS_BLEND_INVSRCALPHA
  alpha source: GS_BLEND_ONE,      alpha dest: GS_BLEND_ONE
This commit is contained in:
jp9000
2015-03-27 11:18:02 -07:00
parent 95f5a3c260
commit be52fa26f9
8 changed files with 102 additions and 24 deletions

View File

@@ -495,8 +495,10 @@ struct gs_swap_chain {
struct BlendState {
bool blendEnabled;
gs_blend_type srcFactor;
gs_blend_type destFactor;
gs_blend_type srcFactorC;
gs_blend_type destFactorC;
gs_blend_type srcFactorA;
gs_blend_type destFactorA;
bool redEnabled;
bool greenEnabled;
@@ -505,8 +507,10 @@ struct BlendState {
inline BlendState()
: blendEnabled (true),
srcFactor (GS_BLEND_SRCALPHA),
destFactor (GS_BLEND_INVSRCALPHA),
srcFactorC (GS_BLEND_SRCALPHA),
destFactorC (GS_BLEND_INVSRCALPHA),
srcFactorA (GS_BLEND_ONE),
destFactorA (GS_BLEND_ONE),
redEnabled (true),
greenEnabled (true),
blueEnabled (true),