欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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 One Zero/Zero One
这里是Blend Zero One,而有的Shader是One Zero。这里记录一下他俩的区别
首先是旁边TA巨佬给我的Paper中写道:
Blend One Zero/Zero One
还有国外巨佬Bgolus的解释:
Blend One Zero/Zero One

这里其实已经解释的很清楚了,我在这里简单翻译一下:
Csrc是当前正在Rasterizing的某个Pixel经过计算输出的Color,相当于Shader Output
Cdst是当前位于Fream Buffer中的颜色,也就是该Pixel之前累加的Color。
如果不进行Blend的话,当Csrc通过Ztest&StencilTest后,Csrc将会覆盖掉Cdst,成为当前Pixel的新颜色。
但是这里如果开启Blend,就需要进行颜色混合:在Direct3D中,用公式:Blend One Zero/Zero One
来进行混合。
Fsrc和Fdst即Blend输入的两个参数。
如果参数为One Zero:
那么相当于 Csrc * 1+Cdst * 0,也就是说完全使用当前新绘制的Color。
反之则不绘制,使用Fream Buffer中的Color。

如上操作和Alpha通道没有关系,因为Alpha需要另外计算,但公式也是类似的:
Blend One Zero/Zero One
这里不展开讲述,以后遇到再细讲。

本文地址:https://blog.csdn.net/qq_43461641/article/details/107532347