关于shaderLab的Blend命令使用的公式的问题
unity3d吧
全部回复
仅看楼主
level 3
foundationEd 楼主
unity手册里写的公式是finalValue = sourceFactor * sourceValue operation destinationFactor * destinationValue,默认状态下是加法运算。
那么在使用命令Blend SrcAlpha OneMinusSrcAlpha的时候,按这个公式,假设srcAlpha = 0.5, dstAlpha = 1,此时a通道得到的结果是0.5*0.5 + 0.5*1 = 0.75 <1,也就是说加上一个半透明物体之后,原本不透明的物体变成半透明了,不是很理解。
但是在实际测试的时候,并没有出现上述的情况,表现效果反而比较像 srcAlpha + (1-srcAlpha)*dstAlpha。
不知道是我哪里理解的问题,或者说是因为给subShader设置tag会导致这里采用不同的公式计算吗?
感谢帮助!
2024年09月08日 09点09分 1
level 7
你猜猜one minus src alpha 是什么意思
2024年09月08日 12点09分 2
对嘛,srcAlpha=0.5,oneminussrcalpha不也是0.5
2024年09月09日 02点09分
你是想表达什么意思,没懂
2024年09月09日 02点09分
@foundationEd 你用blend srcAlpha OneminusSrcAlpha测试那肯定就是srcAlpha+(1-arcAlpha)啊,你可以在下一个pass(确保渲染顺序)用blend dstAlpha OneminusDstAlpha命令试试看
2024年09月09日 04点09分
@宇宙岛🌟 打错了,应该是(1-srcAlpha)不是(1-arcAlpha)
2024年09月09日 05点09分
1