2017-05-17 12:05

 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明,否则将追究法律责任。https://blog.kokojia.com/game/b-57.html

玩过游戏的同学都知道,游戏的地面由各种材质组成,比如,石板路上有草地,草地里面有泥泞,多种材质混合在一起,这就通过纹理混合技术来实现的,我们来看一张魔兽世界的截图:

1494992525151322.jpg

这张图的地面就是由草地,泥泞和石板组成的,我们现在就来讲讲如何实现这个效果,首先我们有四张图片,

1494992821119839.png

注意最后一张三色的图片,这图片就代表上面三种材质各自显示的比列,红色代表第一张,绿色代表第二张,蓝色代表第三张,我们把这张图叫做混合贴图,通过以下shader代码进行混合:

1494993114610682.png

_MainTex1,_MainTex1,_MainTex1代表上面三张材质贴图,_Blend就是混合贴图,tex2D函数通过i.uv坐标对图上的每个像素采样,获得UV坐标对应像素的颜色,分别存在col1,col2,col3三个颜色变量里面。同时用同样的方法和UV坐标对_Blend进行采样得到红绿蓝混合贴图上的像素颜色。这里rgb每个颜色分量的值都是0-1之间。然后将混合贴图上获得的颜色的RGB分别除以该颜色RGB三个分量的总和,就得到该RGB的三个分量在颜色总和中的百分比,这个百分比就是上面三张材质贴图显示力度,所以最后一行就用三张材质贴图的颜色,分别乘上他们显示的力度百分比,在把所有相乘的颜色相加,就得该位置显示的颜色。以下是效果图:

1494994250232916.png

这节课就讲到这里,如果有大家有疑问,可以看看我的shader高级着色语言视频教程,上面说的比较清楚,谢谢大家捧场。


欢迎关注游戏开发者微信公众号1496659171995662.png





 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明,否则将追究法律责任。https://blog.kokojia.com/game/b-57.html

评论

上海龙虎斗

#1

上海龙虎斗

http://v.qq.com/x/search/?q=%E7%8E%B0%E5%9C%BA%E7%9C%9F%E4%BA%BA%E7%99%BE%E5%AE%B6%E4%B9%90%E3%80%90133-8888-6OO4%E3%80%91 http://v.qq.com/x/search/?q=%E7%9C%9F%E4%BA%BA%E7%99%BE%E5%AE%B6%E4%B9%90%E4%B8%8B%E8%BD%BD%E3%80%90133-8888-6OO4%E3%80%91 http://v.qq.com/x/search/?q=%E4%B8%8B%E8%BD%BD%E7%9C%9F%E4%BA%BA%E7%99%BE%E5%AE%B6%E4%B9%90%E3%80%90133-8888-6OO4%E3%80%91 http://v.qq.com/x/search/?q=%E7%94%B5%E8%84%91%E7%99%BE%E5%AE%B6%E4%B9%90%E3%80%90133-8888-6OO4%E3%80%91 http://v.qq.com/x/search/?q=%E7%94%B5%E8%84%91%E7%9C%9F%E4%BA%BA%E7%99%BE%E5%AE%B6%E4%B9%90%E3%80%90133-8888-6OO4%E3%80%91 http://v.qq.com/x/search/?q=%E6%89%8B%E6%9C%BA%E7%9C%9F%E4%BA%BA%E7%99%BE%E5%AE%B6%E4%B9%90%E3%80%90133-8888-6OO4%E3%80%91 http://v.qq.com/x/search/?q=%E6%89%8B%E6%9C%BA%E7%99%BE%E5%AE%B6%E4%B9%90%E3%80%90133-8888-6OO4%E3%80%91 http://v.qq.com/x/search/?q=%E7%BD%91%E4%B8%8A%E7%9C%9F%E4%BA%BA%E7%99%BE%E5%AE%B6%E4%B9%90%E3%80%90133-8888-6OO4%E3%80%91 http://v.qq.com/x/search/?q=%E7%9C%9F%E4%BA%BA%E7%99%BE%E5%AE%B6%E4%B9%90%E3%80%90133-8888-6OO4%E3%80%91 http://v.qq.com/x/search/?q=%E7%BD%91%E6%8A%95%E7%99%BE%E5%AE%B6%E4%B9%90%E3%80%90133-8888-6OO4%E3%80%91
2020/09/08 13:29回复