透明度测试
clip 舍弃透明度不满足阈值的片元
透明度混合
使用当前片元的透明度作为混合因子,与颜色缓冲种的颜色值进行混合。
透明度混合需要【关闭深度写入】,要十分小心渲染顺序。
使用Blend命令。
Blend
指令 | 说明 |
---|
Blend Off | 关闭混合(默认) |
Blend SrcFactor DstFactor | 片元产生的颜色乘以SrcFactor,加上屏幕上已有的颜色乘以DstFactor,得到最终的颜色(写入颜色缓存) |
Blend SrcFactor DstFactor, SrcFactorA DstFactorA | 同上,只不过使用单独的因子SrcFactorA和DstFactorA来混合透明度通道 |
BlendOp BlendOperation | 用其他的操作来取代加法混合。 |
BlendOp OpColor, OpAlpha | 同上,只不过对于透明度通道使用不同的操作。 |
BlendOp
操作 | 说明 |
---|
Add | 加法:FinalColor=SrcFactorSrcColor+DstFactorDstColor |
Sub | 减法(源-目标):FinalColor=SrcFactorSrcColor-DstFactorDstColor |
RevSub | 减法(目标-源):FinalColor=DstFactorDstColor-SrcFactorSrcColor |
Min | 较小值(逐个通道比较) |
Max | 较大值(逐个通道比较) |
混合因子
因子 | 说明 |
---|
One | 混合因子1,表示完全的源颜色或目标颜色 |
Zero | 混合因子0,舍弃掉源颜色或目标颜色 |
SrcColor | 源颜色值 |
SrcAlpha | 源透明度 |
DstColor | 目标颜色值 |
DstAlpha | 目标透明度 |
OneMinusSrcColor | 1-SrcColor |
OneMinusSrcAlpha | 1-SrcAlpha |
OneMinusDstColor | 1-DstColor |
OneMinusDstAlpha | 1-DstAlpha |
双面渲染
透明度测试的双面渲染:Cull Off,关闭剔除。
透明度测试的双面渲染:透明度测试关闭了深度写入,需要把渲染工作分成两个Pass,第一个Pass只渲染背面,第二个Pass只渲染前面。