Defines the values to use for specifying the source and destination blend factors.

A blend factor represents a particular four-value vector that is multiplied with the source or destination color in the blending formula. The blending formula is:

result = source * sourceFactor + destination * destinationFactor

In the formula, the source color is the output color of the pixel shader program. The destination color is the color that currently exists in the color buffer, as set by previous clear and draw operations.

For example, if the source color is (.6, .6, .6, .4) and the source blend factor is Context3DBlendFactor.ONE_MINUS_SOURCE_ALPHA, then the source part of the blending equation is calculated as:

(.6, .6, .6, .4) * (1-0.4, 1-0.4, 1-0.4, 1-0.4) = (.36, .36, .36, .24)

The final calculation is clamped to the range [0,1].

Examples

The following examples demonstrate the blending math using source color = (.6,.4,.2,.4), destination color = (.8,.8,.8,.5), and various blend factors.

PurposeSource factorDestination factorBlend formulaResult
No blendingONEZERO(.6,.4,.2,.4) * ( 1, 1, 1, 1) + (.8,.8,.8,.5) * ( 0, 0, 0, 0)( .6, .4, .2, .4)
AlphaSOURCE_ALPHAONE_MINUS_SOURCE_ALPHA(.6,.4,.2,.4) * (.4,.4,.4,.4) + (.8,.8,.8,.5) * (.6,.6,.6,.6)(.72,.64,.56,.46)
AdditiveONEONE(.6,.4,.2,.4) * ( 1, 1, 1, 1) + (.8,.8,.8,.5) * ( 1, 1, 1, 1) ( 1, 1, 1, .9)
MultiplyDESTINATION_COLORZERO(.6,.4,.2,.4) * (.8,.8,.8,.5) + (.8,.8,.8,.5) * ( 0, 0, 0, 0)(.48,.32,.16, .2)
ScreenONEONE_MINUS_SOURCE_COLOR(.6,.4,.2,.4) * ( 1, 1, 1, 1) + (.8,.8,.8,.5) * (.4,.6,.8,.6)(.92,.88,.68, .7)

Note that not all combinations of blend factors are useful and that you can sometimes achieve the same effect in different ways.

Variables

@:value(cast 0)@:impl@:enuminlineread onlyDESTINATION_ALPHA:Context3DBlendFactor = 0

The blend factor is (Da,Da,Da,Da), where Da is the alpha component of the fragment color computed by the pixel program.

@:value(cast 1)@:impl@:enuminlineread onlyDESTINATION_COLOR:Context3DBlendFactor = 1

The blend factor is (Dr,Dg,Db,Da), where Dr/g/b/a is the corresponding component of the current color in the color buffer.

@:value(cast 2)@:impl@:enuminlineread onlyONE:Context3DBlendFactor = 2

The blend factor is (1,1,1,1).

@:value(cast 3)@:impl@:enuminlineread onlyONE_MINUS_DESTINATION_ALPHA:Context3DBlendFactor = 3

The blend factor is (1-Da,1-Da,1-Da,1-Da), where Da is the alpha component of the current color in the color buffer.

@:value(cast 4)@:impl@:enuminlineread onlyONE_MINUS_DESTINATION_COLOR:Context3DBlendFactor = 4

The blend factor is (1-Dr,1-Dg,1-Db,1-Da), where Dr/g/b/a is the corresponding component of the current color in the color buffer.

@:value(cast 5)@:impl@:enuminlineread onlyONE_MINUS_SOURCE_ALPHA:Context3DBlendFactor = 5

The blend factor is (1-Sa,1-Sa,1-Sa,1-Sa), where Sa is the alpha component of the fragment color computed by the pixel program.

@:value(cast 6)@:impl@:enuminlineread onlyONE_MINUS_SOURCE_COLOR:Context3DBlendFactor = 6

The blend factor is (1-Sr,1-Sg,1-Sb,1-Sa), where Sr/g/b/a is the corresponding component of the fragment color computed by the pixel program.

@:value(cast 7)@:impl@:enuminlineread onlySOURCE_ALPHA:Context3DBlendFactor = 7

The blend factor is (Sa,Sa,Sa,Sa), where Sa is the alpha component of the fragment color computed by the pixel program.

@:value(cast 8)@:impl@:enuminlineread onlySOURCE_COLOR:Context3DBlendFactor = 8

The blend factor is (Sr,Sg,Sb,Sa), where Sr/g/b/a is the corresponding component of the fragment color computed by the pixel program.

@:value(cast 9)@:impl@:enuminlineread onlyZERO:Context3DBlendFactor = 9

The blend factor is (0,0,0,0).