9.3 混合系数
通过为源混合系数和目标混合系数指定不同的组合值,可以实现不同的混合效果。我们将在9.5节讲解这里的一部分组合值,对于那些我们没有讲到的组合值,请读者自己做一些实验,看看它们可以产生哪些效果。下面的列表描述了基本的混合系数,它们都可以用于Fsrc和Fdst。对于一些额外的高级混合系数,请参阅SDK文档中的D3D11_BLEND枚举类型。设Csrc = (r,g,b)、Asrc = as(从像素着色器中输出的RGBA颜色)、Cdst = (rd,gd,bd )、Ad = ad(已经储存在渲染目标中的RGBA颜色),F既可以作为Fsrc也可以作为Fdst,F既可以作为Fsrc也可以作为Fdst,我们有:
- D3D11_BLEND_ZERO:F = (0, 0, 0)且F = 0
- D3D11_BLEND_ONE:F = (1, 1, 1) 且F = 1
- D3D11_BLEND_SRC_COLOR:F = (rs ,gs ,bs )
- D3D11_BLEND_INV_SRC_COLOR:F = (1 - rs ,1 - gs ,1 - bs )
- D3D11_BLEND_SRC_ALPHA:F = (as ,as ,as )且F = as
- D3D11_BLEND_INV_SRC_ALPHA:F = (1 − as,1 − as,1 − as)且F =1 − as
- D3D11_BLEND_DEST_ALPHA:F = (ad ,ad ,ad )且F = ad
- D3D11_BLEND_INV_DEST_ALPHA:F = (1 – ad,1 − ad,1 – ad)且F =1 – ad
- D3D11_BLEND_DEST_COLOR:F = (rd ,gd ,bd )
- D3D11_BLEND_INV_DEST_COLOR:F = (1 – rd ,1 – gd ,1 – bd )
- D3D11_BLEND_SRC_ALPHA_SAT:F = (asʹ, asʹ, asʹ)且F = asʹ,其中,asʹ = clamp(as , 0, 1)
- D3D11_BLEND_BLEND_FACTOR:F = (r,g,b)且F = a,其中,颜色(r,g,b,a)由ID3D11DeviceContext::OMSetBlendState方法的第2个参数指定(9.4节)。也就是说,我们可以将一个颜色指定为混合系数;在修改混合状态前,该颜色一直有效。
- D3D11_BLEND_INV_BLEND_FACTOR:F = (1-r,1-g,1-b)且F = 1-a,其中,颜色(r,g,b,a)由ID3D11DeviceContext::OMSetBlendState方法的第2个参数指定(9.4节)。也就是说,我们可以将一个颜色指定为混合系数;在修改混合状态前,该颜色一直有效。
注意:clamp函数的定义为:
\(clamp(x,a,b) = \left\{ {\begin{array}{*{20}{c}}{x,a \le x \le b}\\{a,x < a}\\{b,x > b}\end{array}} \right.\)
所有的这些混合系数都可用于RGB混合方程。但是,以“_COLOR”结尾的混合系数不可用于alpha混合方程。
文件下载(已下载 515 次)发布时间:2014/8/10 下午9:25:34 阅读次数:4498