打回重写
混合模式 —— 决定如何将计算结果(片元)输出到帧缓冲。一般对计算产生的颜色、alpha来和其他东西进行混合 |
常用来绘制透明、半透明、镂空物体 |
源因子、目标因子 |
混合模式操作指令 | 说明 |
Blend Off | 关闭混合(默认情况?是不是这个?) |
Blend 源因子 目标因子 | 计算产生的颜色和源因子相乘,然后两个颜色相加 |
Blend 源因子 目标因子,源因子A 目标因子A | 源因子和目标因子用于混合颜色值; 源因子A和目标因子A用于混合alpha值 |
BlendOp 操作命令 | 不是将加入的颜色混合在一起,而是对它们做其他操作。 主要命令有 Min、Max、Sub(求差)、RevSub(求反差) |
猜测 ——
源颜色,应该是说计算得到的颜色值,还没存到帧缓冲区
目标颜色,应该是说帧缓冲区中的,片元的颜色值
源/目标混合因子 | 说明 |
One | 值为1,用它可以使源颜色、目标颜色完全显示 |
Zero | 值为0,用它可以删除源颜色、目标颜色 |
SrcColor | 这个阶段的值乘以源颜色值 |
SrcAlpha | |
DstColor | 这个阶段的值乘以帧缓存源颜色值 |
DstAlpha | |
OneMinusSrcColor | 这个阶段的值乘以(1 - 源颜色的值) |
OneMinusSrcAlpha | |
OneMinusDstColor | 这个阶段的值乘以(1 - 目标颜色的值) |
OneMinusDstAlpha |
例子
Tags{ "Queue" = "Transparent" }
Blend SrcAlpha OneMinusSrcAlpha
//使物体的颜色乘以它的Alpha值,然后再和缓冲区目标颜色的值相混合,达到透明效果
一个球网,遮挡住后边的立方体。(大致上应该可以这么理解)
立方体因其 Queue 是 Geometry,先进行渲染,帧缓冲区中有它的颜色值,
然后才渲染 Queue 是 Transparent 的球网,球网是一个平面进行贴图,其中一些区域是 alpha = 0,所以要将其与帧缓冲中的颜色值进行混合(避免直接覆盖了它后边的物体)。
另外,如果不用混合,而是用 AlphaTest,那么估计会是直接将整个球网写入帧缓冲,所以见不到这个立方体。。。估计是这样的。。。