玩过游戏的同学都知道,游戏的地面由各种材质组成,比如,石板路上有草地,草地里面有泥泞,多种材质混合在一起,这就通过纹理混合技术来实现的,我们来看一张魔兽世界的截图:
这张图的地面就是由草地,泥泞和石板组成的,我们现在就来讲讲如何实现这个效果,首先我们有四张图片,
注意最后一张三色的图片,这图片就代表上面三种材质各自显示的比列,红色代表第一张,绿色代表第二张,蓝色代表第三张,我们把这张图叫做混合贴图,通过以下shader代码进行混合:
_MainTex1,_MainTex1,_MainTex1代表上面三张材质贴图,_Blend就是混合贴图,tex2D函数通过i.uv坐标对图上的每个像素采样,获得UV坐标对应像素的颜色,分别存在col1,col2,col3三个颜色变量里面。同时用同样的方法和UV坐标对_Blend进行采样得到红绿蓝混合贴图上的像素颜色。这里rgb每个颜色分量的值都是0-1之间。然后将混合贴图上获得的颜色的RGB分别除以该颜色RGB三个分量的总和,就得到该RGB的三个分量在颜色总和中的百分比,这个百分比就是上面三张材质贴图显示力度,所以最后一行就用三张材质贴图的颜色,分别乘上他们显示的力度百分比,在把所有相乘的颜色相加,就得该位置显示的颜色。以下是效果图:
这节课就讲到这里,如果有大家有疑问,可以看看我的shader高级着色语言视频教程,上面说的比较清楚,谢谢大家捧场。
欢迎关注游戏开发者微信公众号
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明,否则将追究法律责任。https://blog.kokojia.com/game/b-57.html