我有3个纹理形状,我想相互重叠,但我还没能弄清楚如何做到。我可以通过以下方式轻松实现添加剂混合:
color1 + color2 + color3;
但如果没有加性效应,我想不出该怎么做。我明白我需要做";阿尔法混合";不知怎么的,但我没能度过只找到无法在DX9像素着色器中正确应用的公式或代码片段的阶段。
还有其他混合模式,但着色器程序中的基本alpha混合形式为
blended = lerp(bottom_layer, top_layer, value)
其中,当值等于1时,blended
将返回top_layer
,当值介于0和1之间时,在两者之间混合,当值为0时,返回底层。只需再次重复该操作即可混合任何附加层。
值的选择取决于应用程序。对于不混合颜色的重叠形状,请使用值的遮罩形状。例如:
blended = lerp( background, color_green, step(length(uv-0.5),0.5));
将在背景色的顶部绘制一个绿色的圆圈,而不进行颜色混合。