![96e38ce1c605699b3b3280c247ad8215.png](https://i-blog.csdnimg.cn/blog_migrate/a5b6bd7976ea0d2cba4eeef5b676169c.jpeg)
一、Unity环境
在学习之前,我们需要搭建我们的开发环境。Unity Shader的开发环境相当简单,你只需要下载Unity,我们的版本是unity2018.3.1f,你可以在官网直接下载编辑器,或者使用unityhub下载。
由于最近unity官网抽风,大家可以通过以下链接安装unity。
https://pan.baidu.com/s/1oxXzXoR5WYp2swzFVBWXKwpan.baidu.com提取码:g6g7
创建一个新的工程,用于Shader学习,创建模板选择3D
![59523836872e55b1371d44ce6cb01cc6.png](https://i-blog.csdnimg.cn/blog_migrate/1437f5a96d0b29997ada4b21dd04b286.png)
![512a8457e7412a20f5f8dfe71c0d804f.png](https://i-blog.csdnimg.cn/blog_migrate/1d98519c032a1cf83d730ea4dcbb91e6.jpeg)
而关于写shader代码的编写工具,当然你可以选择VS,但是我更推荐VSCode,它更加轻量级,打开文件更快,对Shader的高亮支持也不错。
Visual Studio Code - Code Editing. Redefinedcode.visualstudio.com![e40173dd0b111abbd65bb5d3cd716ab0.png](https://i-blog.csdnimg.cn/blog_migrate/47e20d8ac52e3c4fdf9aaaa7763decf1.jpeg)
在Edit-Reference中设置外部编码工具为VSCode,这样,当我们双击shader文件时,就可以直接打开VSCodeVisual Studio Code - Code Editing. Redefined在Edit-Reference中设置外部编码工具为VSCode,这样,当我们双击shader文件时,就可以直接打开VSCode
![ad7e812d848098487728147f765908ad.png](https://i-blog.csdnimg.cn/blog_migrate/588f75a991bd2b542ec15978ad9482d6.jpeg)
二、模型
模型一般使用建模工具制作,例如3dmax、maya、Blender等,这里推荐Blender2.8,这是一款开源软件,各方面功能相当全面,插件众多。
软件下载 - Blender中国社区www.blendercn.org我们可以把模型定义为非常多三角面的集合,如下图所示:
![30d112b036227139e57026b924a1eab9.png](https://i-blog.csdnimg.cn/blog_migrate/bcccd3c4fdb561f806d43abefba01fa8.jpeg)
![6a907b270b28a4ee4538f5053df55322.png](https://i-blog.csdnimg.cn/blog_migrate/e4a9dc32cc1873985b078e74371e65b0.jpeg)
三、材质
建模工作完成后,我们就得到了一层薄薄的皮,举个例子,一个人类的模型,其实就是一层由三角面构成的皮,由于这层皮是完全闭合的,我们看不到里面,所以就看不到破绽。
![293333f601100c45e9b7e1899af450ea.png](https://i-blog.csdnimg.cn/blog_migrate/6e48512050c55f987d884c209eb1e486.jpeg)
但是光有模型是不够的,模型只定义了形状,在游戏中,我们看到的生动的画面,除了形状,我们还要看到它的颜色,而颜色的明暗、阴影、高光、散射等等,可以让我们分辨清楚看到的是一种什么材质。例如下图的巫师3截图,我们可以很明显看出来皮肤、头发、金属、皮革给我们的感受是不一样的,这就是材质的区别。
![010b9e58493ad3f0373dd7a3799729b9.png](https://i-blog.csdnimg.cn/blog_migrate/f030e3a377eab170b059e50a224224d3.jpeg)
在Unity的Project视窗下,右键菜单里可以创建一个材质
![30ba020d525d75063eb39bb953a29b18.png](https://i-blog.csdnimg.cn/blog_migrate/08c390dea9480195464eb04498dcd2aa.jpeg)
点击这个材质,就可以看到材质属性菜单,一般一个材质有很多种属性可以调节,我们以其中一项属性为例,在属性栏的第三行,有一个属性名为Smoothness,从名称就可以看出这控制着材质的光滑度,光滑度的概念很容易理解,例如剑的表面就比粗糙塑料的表面更加光滑,将这个属性在0-1之间滑动,我们可以很清楚的看到下方的预览窗口中的变化,以此感受不同材质。
![cda60778a8201a8822c7abf311d932bf.png](https://i-blog.csdnimg.cn/blog_migrate/7cdb578c532c6a15cfe73360f067c365.jpeg)
四、光
点击层次视图里的Directional Light,就可以看到这个光的相关参数,可以再Type中看到这个光的类型是直射光,直射光一般用于模拟太阳光。
![91208cb32e44415e264881c9d799f59e.png](https://i-blog.csdnimg.cn/blog_migrate/cb76a971716b4661045208576f830139.png)
光对于材质的影响非常大,一般光会作为参数传入到shader中,影响材质表现。
五、Shader
Shader是材质背后的内部计算,可以把shader想象成一个黑箱,它的输入是环境信息(例如光照、反射探针、环境光),输出是物体显示在屏幕上的一个个像素点。现在为止,我们只能通过调整光照和材质里的属性来改变模型的外观,在接下来的教程中,我们会通过Shader这个工具,制作出真实而又精美的虚拟世界。