打回重写


混合模式 ——

决定如何将计算结果(片元)输出到帧缓冲。一般对计算产生的颜色、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,那么估计会是直接将整个球网写入帧缓冲,所以见不到这个立方体。。。估计是这样的。。。