本书是一部系统讲解Unity ShaderLab语言与编程方法的入门教程(包含纸质图书、Unity美术资源、Shader源代码)。
本书共分14章,第1、2章,主要为了给读者普及3D数学相关的基础知识以及GPU渲染流水线的基本概念,为本书后面的内容提供基础知识的储备。第3~11章,主要讲解了Shader的语法结构、两种不同的编写方式(Vertex Fragment Shader和Surface Shader)、光照模型、后期处理、自定义材质设置面板。这一部分内容是本书的主要部分,读者朋友们一定要认真阅读。第12章,主要讲解Unity Shader可视化编辑插件——Amplify Shader Editor,方便读者在编写Shader之前梳理逻辑或者前期验证效果的时候使用。第13、14章,通过对不同经典案例的分析和讲解,使读者进一步加深对Unity Shader的理解,并且能够更加高效地编写出可以应用于真实项目的Shader效果。
本书主要以3D美术人员的视角进行效果描述和逻辑讲解的,因此非常适合毫无程序编写经验的3D美术人员作为Unity Shader的入门之选。并且本书同样也适用于各大培训机构、高等院校作为Unity Shader课程教材使用。
当然,从事Unity程序开发的朋友也可以阅读本书,从3D 美术人员的视角开始切入,或许可以帮助你更好的理解Unity Shader,毕竟Shader也是一种视觉效果的设计。
本书的写作背景
相信很多人在玩游戏的过程中,在体验游戏剧情的同时,也会被游戏中精美的画面所吸引。因此我猜想,肯定会有很多人跟我一样,有一种想要制作一款画质精美的游戏的冲动。然而想要实现精美画质的视觉效果,往往需要编写多种多样的Shader。但对于一些毫无编程经验的人来说,想要入门Unity Shader比较困难。这是因为,一方面国内关于Unity Shader的书少之又少,而目前市面仅有的几本也是针对Unity 5版本编写的,并不完全适用于Unity 2019版; 另一方面网上关于Unity Shader的教程,很多都是一上来直接讲代码,很少有真正从基础开始讲解的。于是笔者萌生了一个念头: 写一本面向零基础Unity Shader爱好者的入门指南。
本书的独特之处
本书采用由易到难、层层深入的讲解方法,带领毫无Shader编程基础的读者逐渐掌握这门技术。对于一些理论性的知识和使用方法,本书不会灌入式地硬性讲解,而是会从内在逻辑开始讲起,从而使读者彻底理解。
为了方便读者理解Shader效果实现的内在逻辑,本书插入了大量流程图、汇总表格等。对于一些专有名词或者语法关键词,本书在编写的过程中使用了“中文+英文”的方式,方便读者理解以及后期查找或者阅读其他资料。
笔者一直认为,Shader的学习达到一定程度之后,其实就是在学习数学算法。Shader的程序代码本身并不重要,重要的是里边的逻辑和算法。很多人总是会好奇“这段代码为什么能够实现这样的效果”,相信这是学习Shader的人最想弄清楚的。而涉及逻辑类的数学思想有时候很难用文字表达出来,所以本人在案例讲解部分会借助可视化Shader编辑器“Amplify Shader Editor”来帮助读者理解其中的内在逻辑。
需要提前掌握的知识
作为一本计算机图形专业书籍,建议读者在阅读本书之前掌握如下知识:
(1) Unity的基本操作,比如导入资源、创建对象、添加组件等。
(2) 平面数学。
(3) 空间几何基础。
(4) 三角函数。
(5) 基础编程知识,比如理解变量、函数、运算操作等。
本书的源文件
为了方便读者编写测试,本书会附赠课程所涉及的所有Shader文件以及项目资源,读者将Package文件导入Unity项目之后,在Assets/ Unity ShaderLab Tutorial路径下即可看到所有的资源。
特别鸣谢
在这里我要特别感谢我的未婚妻,正是在她的鼓励下,我才有了编写本书的动力。记得在正式开始撰写本书之前,当我一直在为后续的出版事宜发愁时,她告诉我: “先迈出第一步,后面自然会有路。”因此我把出版问题全部抛掷脑后,专心写完了这本书。同时,本书从编写到出版的整个过程也让我深刻认识到: 万事开头难,但只要克服恐惧,勇敢地迈出第一步并持之以恒,一切皆会水到渠成。后来,每当我遇到事情犹豫不前的时候,我总会想起这句话: “先迈出第一步,后面自然会有路。”
本书大部分配图是使用Edraw制作而成的,这款软件使得我在配图制作方面节省了大量的时间,因此本人对这款图例制作软件表示郑重的感谢。
本书能够顺利出版,还要感谢清华大学出版社, 在该出版社相关编辑的帮助下,本书得以顺利面世。
最后,本书若有疏漏和不足之处,恳请读者批评指正。