Unity3D培训
美国上市Unity3D培训机构

400-111-8989

VR培训

Unity 5着色器编程经验分享

  • 发布:Unity3D培训
  • 来源:Unity3D教程
  • 时间:2017-10-25 15:49

今天为大家分享一位来自荷兰的大三学生Emiel Boven,在成立游戏工作室并开发一款黑魂类动作冒险游戏的过程中,对Unity中的着色器编程所进行的探索与研究,本文不会涉及具体的代码,主要为大家分享在Unity中实现冰雪与天空着色器的一些经验。

Unity着色器基本概念

unity5着色器编程经验分享

着色器的本质其实非常简单:就是用来传递并处理3D坐标及属性的小程序,最后写入屏幕以2D图像呈现。Unity自带的标准着色器都拥有特定功能,也可以利用自定义着色器来替换标准着色器来改变最终输出的图像效果,如自定义顶点及片段(或像素)着色器。例如,顶点着色器可以利用位移贴图对模型的顶点坐标进行位移,而无需改变所导入的模型文件。

unity5着色器编程经验分享

想要编写光照交互效果正常的着色器比较复杂,所以大多数情况下通常会使用表面着色器来实现这类效果。Unity的表面着色器可以生成大部分的光照计算,所以开发者不用自己手动编写这些计算公式,从而专注于最终想要实现的效果。而对于不需要进行光照计算的特效,例如延迟贴花与后处理特效等,仍旧会使用顶点及片段着色器。

使用Unity进行着色器编程,也可以借助像Amplify Shader Editor或Shader Forge这样的可视化节点编辑器,无需编写代码即可实现非常酷炫的着色器特效。当然,了解更多的底层原理也更有助于理解渲染管线工作流,并利用这些节点编辑器来实现更加复杂的着色器。

冰雪着色器

unity5着色器编程经验分享

本例在创建冰雪着色器时,用到了两种不同的材质,一种是普通的雪材质,另一种材质上方是雪连带着下方的冰锥。第二种材质会从世界坐标Y轴创建遮罩来显示雪,而冰只会朝着物体表面的正上方或正下方。这样就可以确保旋转网格后冰锥依然朝着游戏世界下方。雪与冰锥都使用位移贴图对上方或下方的顶点进行位移,来实现雪堆积在物体上方的效果。冰锥与雪的处理方式稍有不同,冰锥使用噪声贴图对底部一些部分进行遮罩,例如墙壁上的冰锥会与上方的雪交融,有些则不会与雪交融而是直接悬挂为锯齿状的冰锥效果。

然后将顶点颜色应用到模型,这一操作可以在3D建模软件种完成,也可以利用顶点绘制工具直接在引擎中进行,就像遮罩一样混合两种材质覆盖到网格上。

unity5着色器编程经验分享

天空盒着色器

unity5着色器编程经验分享

本例的天空盒着色器使用节点编辑器制作,它能够将创建的云纹理映射到天空盒。包含云纹理的文件共有3张存储在单独RGB通道中的黑白贴图。这三张贴图将被加载到着色器中,分别用于实现云的形状、边缘光以及内侧阴影。在着色器中为这些贴图分别设置颜色以便在需要时单独调整其中某一部分的效果。边缘光效果比其它两张贴图更特殊,它与太阳周围的距离渐变相乘,也就是说,只有在太阳接近云层时才会出现边缘光效果。

unity5着色器编程经验分享

云层是动态的,所以这里使用噪声纹理来操作静态图片的UV,让云层可以缓慢飘过天空并变换形状。

unity5着色器编程经验分享

着色器实现

在Unity中实现着色器是比较简单的,无论是手动编写还是利用节点编辑器插件。如果没有任何着色器相关经验,建议大家从Amplify Shader Editor或Shader Forge这样的可视化编辑工具开始入手,来实现一些简单的着色器特效并尝试理解材质、纹理及底层渲染原理,以便于后期可以制作出更加复杂更加酷炫的着色器。借助这些工具可以有效提高开发效率,避免手动编写带来的语法错误,也不必再去记住各种方法的具体名称。

结语

着色器的应用十分广泛,可以实现多种基于网格的奇妙效果,也能用于粒子系统与后处理特效。它除了可以为游戏效果增色添彩之外,还可以带来全新的游戏玩法设计。后面我们还会为大家分享更多着色器编程相关的实例教程请大家保持关注Unity3D培训官网!

免责声明:本文由小编转载自网络,旨在分享提供阅读,版权归原作者所有,如有侵权请联系我们进行删除

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:Unity实例教程:创建渐入的列车
下一篇:在VRTK中合并Teleport和Rotate操作
选择城市和中心
贵州省

广西省

海南省