前 言
Unity提供了一系列工具来帮助开发者创建和运行游戏项目。Unity 5用全新的标准着色器替换了大部分旧版着色器,为我们带来了功能上的重大升级。新着色器通过简单设置便可模拟真实物体表面上的很多物理特性。
本书将探索这一系列新着色器为我们带来的全新选择,以及学习它们如何与光照和特效相互作用,产生高质量的游戏画面。
为了实现当今游戏画面中的真实感,人们走过了一条漫长的道路。在过去相当长的时间里,实时光照所带来的额外运算量为游戏研发制造了很多困扰。有时候,实现真实感的重担直接落在了纹理美术设计师的肩上。他们不得不将许多静态的表面效果直接烘焙到游戏角色和材质的纹理当中。
这种静态烘焙的方法有时在一些动态的游戏角色身上难以达到理想效果——特别是当一个角色移动到较阴暗或者较明亮的空间中时,静态烘焙难以实现良好的亮度等级变化,使得游戏画面显得粗糙而不真实。
计算机图形理论的进化,特别是显卡设备的升级换代,使很多基于实时光照的技术能够更加高效地运作。同时这也使人们对现代游戏报以更高的期望——我们希望在充满动态光照的场景中看到更逼真的物体表面。
在本书中,读者将通过一个典型的科幻题材恐怖游戏来学习这些新的着色器和光照理论。基于此,我们将能够探索各式各样的光照和物体表面效果。
本书主要内容
在本书的不同章节中,我们将学习Unity 5中的所有主要着色器和效果。在每一章中我们会研究一个不同的场景文件。
第1章介绍基本概念,并通过为恐怖科幻游戏中的场景设置材质属性,展示Unity标准着色器的能力和局限性。
第2章继续设计飞船维修场景——通过创建自定义着色器优化游戏场景的外观。我们将从无到有创建自定义着色器,然后基于它,为头盔的透明外观和星球的大气创建更加复杂的效果。
第3章深入学习场景光照和自发光表面的关系,并在飞船驾驶舱场景中为一个星球模型实现全息影像效果。
第4章研究通过不同的技术在着色器中实现动画。在展示更复杂的基于自定义着色器的顶点动画之前,我们将演示如何通过滚动UV坐标和在C#中遍历纹理数组的方法来显示动画的全息影像。
第5章介绍在星球表面上所应用的各种透明效果,并且为多种材质指定现有的以及特殊创建的着色器。
第6章重点展示在Unity 5的标准着色器中,高光工作流和金属工作流的不同之处。
第7章展示在一个室内场景中为角色创建统一的皮肤和毛发着色器。本章中的第一个着色器为一些特殊的半透明材质(例如,宇航员的皮肤)实现次表面散射效果。紧接着我们将继续创建使用“基于物理渲染”方法的毛发和眼睛着色器。
第8章讲述如何创建实现烟雾、蒸汽和火焰的着色器。与前面章节类似,我们将不会满足于Unity的默认着色器,而是要为恐怖科幻游戏创建更高级别的电影效果。本章的场景将是飞船的走廊。
第9章研究如何在安卓和iOS等移动设备平台上测试自定义着色器。
阅读准备
完成本书中的各个章节需要读者具备基本的3D图形概念。此外还需要:
在计算机中安装Unity 5(macOS或者Windows均可)。免费个人版即可满足本书所有章节中的实例程序。该版本可以从Unity官方网站下载。
虽然书中所含代码均会被清晰地讲解,但是具备Unity脚本和C#基础知识会对理解本书内容有益。
读者人群
本书面向具有一定Unity和C#基础知识并希望为下一代游戏开发着色器和效果的中等水平的游戏开发者。我们假设读者对游戏开发和游戏美术设计的基础背景知识有一定了解。
本书约定
在本书中,不同类型的内容使用多种不同的字体风格。这里列举一些示例并阐述它们的含义。
目 录
[第1章 掌握标准着色器
1.1 创建程序项目 ](/)
1.2 导入项目文件
1.3 加载飞船维修场景并在场景中漫游
1.3.1 为宇航员创建材质
1.3.2 为宇航员的装备创建材质
1.3.3 为飞船创建材质
1.3.4 为星球创建材质
1.3.5 设置天空盒
1.3.6 调节场景光照并添加效果
1.4 总结
[第2章 创建自定义着色器
2.1 打开程序项目 ](/)
2.1.1 打开场景
2.1.2 创建第一个自定义着色器
2.2 进阶的透明效果
2.2.1 创建自定义透明着色器
2.2.2 编辑透明着色器
2.3 进阶的星球大气效果
2.3.1 创建自定义大气着色器
2.3.2 应用大气着色器
2.3.3 编辑大气着色器
2.4 总结