更新时间:2022-10-02 11:11:23
本节书摘来自华章出版社《Unity着色器和屏幕特效开发秘笈》一 书中的第1章,第1.2节,作者:(美)Kenny Lammers,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
随着我们进一步学习本书,你已经知道如何在Unity当中设置工作区,从而提高你的工作效率,而且这很容易实现。如果你已经熟悉了在Unity 4中创建着色器和设置材质,可以跳过这个教程。这里,我们只是为了确保新的Unity 4开发者能够顺利学习有关表面着色器的其他教程。
开始学习本教程之前,你需要先打开Unity 4,并且创建新的项目。在本书中有一个Unity项目,所以当你学习到相应的教程时,你可以使用这个项目并添加自定义的着色器。当你完成了这些,现在就准备进入实时阴影的奇妙世界吧!
在开始我们第一个着色器之前,我们需要创建一个小的场景(scene)供我们使用。这可以通过Unity编辑器中的GameObject | Create Other菜单来完成。然后可以创建一个平面作为地面,创建两个球体作为着色器的应用对象,以及一个定向光作为场景的灯光。场景建立完毕,我们就可以开始编写着色器了:
此时它看起来没什么效果,但着色器的开发环境已经设置好了,现在我们可以开始修改着色器代码,以满足我们的需求。
Unity已经帮你完成了着色器和运行环境的建立,你只需要简单地点击几下鼠标便可以开始后面的工作了。对于表面着色器本身而言,很多元素都是在后台工作的。Unity采用Cg作为着色语言,Cg语言使你的代码编写更加高效。表面着色器语言大多基于组件的方式写入着色器。如纹理坐标和转置矩阵之类的功能Unity已经帮你实现了,因此你不必从头开始了。以前,为了编写一个新的着色器,你必须重复重写很多代码。在你已经熟悉表面着色器之后,你自然想探索更多关于Cg语言的基本功能,以及Unity是如何在底层的图形处理单元(GPU)上执行低级图形运算的。
因此,通过简单地更改着色器路径名,我们已经拥有了一个可以在Unity下运行的基础漫反射着色器,包含的灯光和阴影也能正常工作。而这一切的实现只需改变一行代码而已!
为了了解更多关于Unity内置的大量Cg功能,可以访问Unity安装目录下的Unity4EditorDataCGIncludes,有三个文件需要特别注意的,UnityCG.cginc、Lighting.cginc和 UnityShaderVariables.cginc.。目前我们的着色器使用的正是这三个文件里的功能。
我们会在第9章更加深入地学习Cglncludes文件。