参考自https://blog.csdn.net/fenglyu/article/details/70183016
我们希望沙子会更多的在缝隙里面出现,而石头越高的地方沙子应该要越少,那么就需要知道每一张贴图的深度信息,这里可以把贴图对应的高度图保存在每张贴图的alpha通道。通过对比每张贴图的高度差,就可以知道应该显示哪张贴图了。
用一个高度混合函数封装核心算法
//高度混合函数
inline half4 Blend(half depth1,half depth2,half depth3,half depth4,fixed4 control)
{
half4 blend;
//获取混合后的高度通道
blend.r = depth1*control.r;
blend.g = depth2*control.g;
blend.b = depth3*control.b;
blend.a = depth4*control.a;
//所有的高度取最大值
half ma = max(blend.r,max(blend.g,max(blend.b,blend.a)));
//用原来的高度混合减去偏移后的高度混合,乘以个遮罩防止溢出
blend = max(blend - ma + _weight ,0) * control;
//标准化输出
return blend/(blend.r + blend.g + blend.b + blend.a);
}
加入光照和法线,得到最终混合纹理图
//得到混合多通道