Blend One Zero/Zero One
程序员文章站
2022-03-01 18:49:14
最近看Shader的时候会注意到一句话:这里是Blend Zero One,而有的Shader是One Zero。这里记录一下他俩的区别首先是旁边TA巨佬给我的Paper中写道:还有国外巨佬Bgolus的解释:这里其实已经解释的很清楚了,我在这里简单翻译一下:Csrc是当前正在Rasterizing的某个Pixel输出的Color,相当于Shader OutputCdst是当前位于Fream Buffer中的颜色。如果不进行Blend的话,当Csrc通过Ztest&Stencil...
最近看Shader的时候会注意到一句话:
这里是Blend Zero One,而有的Shader是One Zero。这里记录一下他俩的区别
首先是旁边TA巨佬给我的Paper中写道:
还有国外巨佬Bgolus的解释:
这里其实已经解释的很清楚了,我在这里简单翻译一下:
Csrc是当前正在Rasterizing的某个Pixel经过计算输出的Color,相当于Shader Output
Cdst是当前位于Fream Buffer中的颜色,也就是该Pixel之前累加的Color。
如果不进行Blend的话,当Csrc通过Ztest&StencilTest后,Csrc将会覆盖掉Cdst,成为当前Pixel的新颜色。
但是这里如果开启Blend,就需要进行颜色混合:在Direct3D中,用公式:
来进行混合。
Fsrc和Fdst即Blend输入的两个参数。
如果参数为One Zero:
那么相当于 Csrc * 1+Cdst * 0,也就是说完全使用当前新绘制的Color。
反之则不绘制,使用Fream Buffer中的Color。
如上操作和Alpha通道没有关系,因为Alpha需要另外计算,但公式也是类似的:
这里不展开讲述,以后遇到再细讲。
本文地址:https://blog.csdn.net/qq_43461641/article/details/107532347