本书不仅要教会读者如何使用 Unity Shader,更重要的是要帮助读者学习 Unity 中的一些渲染机制以及如何使用 Unity Shader 实现各种自定义的渲染效果,希望这本书可以为读者打开一扇新的大门,让读者离制作心目中优秀游戏的心愿更近一步。
本书的主要内容为∶
第 1章讲解了学习 Unity Shader 应该从哪里着手;
第2 章讲解了现代 GPU是如何实现整个渲染流水线的,这对理解 Shader的工作原理有着非常重要的作用;
第3章讲解 Unity Shader的实现原理和基本语法;
第 4 章学习 Shader 所需的数学知识,帮助读者克服学习 Unity Shader 时遇到的数学障碍;
第 5 章通过实现一个简单的顶点/片元着色器案例,讲解常用的辅助技巧等;
第6章学习如何在 Shader 中实现基本的光照模型∶
第 7 章讲述了如何在 Unity Shader 中使用法线纹理、遮罩纹理等基础纹理;
第 8章学习如何实现透明度测试和透明度混合等透明效果;
第 9 章讲解复杂的光照实现;
第 10 章讲解在 Unity Shader 中使用立方体纹理、渲染纹理和程序纹理等高级纹理;
第 11 章学习用 Shader实现纹理动画、顶点动画等动态效果;
第 12 章讲解了屏幕后处理效果的屏幕特效;
第 13 章使用深度纹理和法线纹理实现更多屏幕特效∶
第 14 章讲解非真实感渲染的算法,如卡通渲染、素描风格的渲染等;
第 15章讲解噪声在游戏渲染中的应用;
第 16章介绍了常见的优化技巧;
第I7 章介绍用表面着色器实现渲染;
第18 章讲解基于物理渲染的技术;
第 19 章讲解在升级 Unity 5 时可能出现的问题,并给出解决方法;
第 20 章介绍许多非常有价值的学习资料,以帮助读者进行更深入的学习。
本书适合 Unity 初学者、游戏开发者、程序员,也可以作为大专院校相关专业师生的学习用书,以及培训学校的培训教材。
欢迎来到 Shader 的世界!我们曾不断听到周围有人提出类似的问题∶"Shader 是什么""我应该看哪些书才能学好 Shader"""学习 Unity Shader,我应该从哪里着手"。我们希望这本书可以告诉你这些问题的答案。如果本书是你学习 Shader 的第一本书,我们希望这本书可以为你打开一扇新的大门,让你离制作心目中的优秀游戏的心愿更近一步;如果不是,我们同样希望这本书可以让你更深入地理解 Shader 的方方面面,在学习 Shader 的过程中更上一层楼。
有人说,程序员的三大浪漫是编译原理、操作系统和图形学(是的,我已经听到很多人在反驳这句话了,不要当真啦)。不管你是否认同这句话,我们只是想借此说明图形学在程序员心目中的地位。正在看此书的你,想必多多少少都对图形学或者渲染有一定兴趣,也许你想要通过此书来学习如何实现游戏中的各种特效,也许你仅仅是好奇那些绚丽的画面是如何产生的。我们是程序员中的"外貌协会",期待着用代码编写出一个绚丽多姿的世界。这就是我们的浪漫。
我想,读者大概都经历过这样的场景∶ 当你在游戏里看到那些出色的画面时,你很好奇这样的游戏是如何制作出来的,更具体的是,这样的渲染效果是如何得到的。于是你搜索后发现,这个游戏是 Unity 引擎开发的,更巧的是,Unity 也是你熟知的引擎!于是你继续搜索,想要知道如何在Unity 里实现这样的效果,最后,你往往会得到"要编写自己的 Shader"这样的答案。总算有了一些头绪,你继续在网络上搜索如何学习编写 Shader。于是你看到了很多文章,这些文章告诉你Unity Shader 有哪些语法,一个普通的漫反射或者边缘高光的效果的代码是什么样子的。然后,你把这些代码粘贴到 Unity 中,保存后运行,效果出现了!一切看起来好像都很顺利,可是,当你仔细阅读这些代码时,却往往没有头绪。你不知道为什么要有一个名为vert 和 frag 的函数,它们是什么时候调用的,为什么 vert 函数里要进行一些矩阵运算,这些矩阵是用来做什么的,为什么当你按照 C#里面的一些语法编写时 Shader 却报错了。这些疑问大大影响了你学习 Shader 的信心,你开始觉得这是一个比学习 C#难许多倍的事情,怀疑自己是不是还不具备学习如何编写 Shader 的基础。
如果上面的情景和你的经历有些类似,那么相信我,有很多人和你有一样的烦恼。事实上,我们之所以会觉得学习 Shader 比学习 C#这样的编程语言更加困难,一个原因是因为 Shader 需要牵扯到整个渲染流程。当学习 C++、C#这样的高级语言时,我们可以在不了解计算机架构的情况下仍然编写出实现各种功能的代码,这样的高级语言更符合人类的思维方式。然而,Shader 并不是这样的。我们之所以要学习 Shader,是想要学习如何把物体按照自己的意愿渲染到屏幕上,但是,Shader 只是整个渲染流程中的一个子部分。虽然它很关键,但想要学习它,我们就需要了解整个流染流程是如何进行的。和 C++这样的高级语言不同,尽管 Shader 的编写语言已经达到了我们可以理解的程度,但 Shader 更多地是面向 GPU 的工作方式,所以它的一些语法对我们来说并不那么直观。因此,任何一篇只讲语法、不讲渲染框架的文章都无法解决读者的困惑。
我们希望通过本书可以帮助读者建立一个渲染流程的整体体系,这些基础是跨越 Shader 学习中层层障碍的重要因素。我们也相信,在学习完本书后,读者可以自行回答本章开头提出的那些问题。
我们在编写本书时尽量考虑到没有渲染基础的读者们。因此,我们把整书分成了五大篇。
●基础篇
这是很重要的一篇,尽管在本篇中我们没有进行真正的代码编写,但基础篇会为初学者普及基本的理论知识以及必要的数学基础。基础篇包括了以下 3个章节。
第 2 章 渲染流水线 这一章讲解了现代 GPU 是如何实现整个渲染流水线的,这些内容对干理解 Shader 的工作原理有着非常重要的作用。
第3章 Unity Shader 基础 Unity 在原有的渲染流程上进行了封装,并提供给开发者新的图像编程接口——Unity Shader。这一章将讲解 Unity Shader 的实现原理和基本语法,同时也将为读者解答一些常见的困惑点。
第 4章 学习 Shader 所需的数学基础 数学向来是初学者面对的一大学习障碍。然而,在初级阶段的渲染学习中,我们需要掌握的数学理论实际并不复杂。本章将为读者讲解渲染过程中常见的数学知识,如矢量、矩阵运算、坐标空间等。本章内容可以大大帮助读者理解 Shader 中的数学运算。为了帮助读者加深理解,我们在讲解过程中以一个具体的例子来阐述"一头奶牛的鼻子是如何一步步被绘制到屏幕上的"。
●初级篇
在学习完基础篇后,我们就正式开始了 Unity Shader 的学习之旅。初级篇将会从最简单的 Shader 开始,讲解 Shader 中基础的光照模型、纹理和透明效果等初级渲染效果。需要注意的是,我们在初级篇中实现的 Unity Shader 大多不能直接用于真实项目中,因为它们缺少了完整的光照计算,例如阴影、光照衰减等,仅仅是为了阐述一些实现原理。在第 9 章最后,我们会给出包括了完整光照计算的 Unity Shader。初级篇包含了以下 4 个章节。
第5章 开始 Unity Shader 学习之旅 本章将实现一个简单的顶点/片元着色器,并详细解释其中每个步骤的原理,这需要读者对之前基础篇的内容有所理解。本章还会给出关于 Unity Shader的一些常用的辅助技巧,例如如何调试、查看内置代码以及编写规范等。
第 6章 Unitv中的基础光照 本章将学习如何在 Shader 中实现基本的光照模型,如漫反射、高光反射等。我们首先解释如何从无到有实现一个光照模型,最后给出使用 Unity 提供的内置函数来实现的版本。
第7 章 基础纹理 纹理的使用给渲染的世界带来了更多的变化。这一章将会讲述如何在 Unity Shader 中使用法线纹理、遮罩纹理等基础纹理。
第 8章 透明效果 透明是游戏中常用的渲染效果。这一章首先介绍了渲染的实现原理,并给出了和 Unity 的渲染顺序相关的重要内容。在了解了这些内容的基础上,我们将学习如何实现透明度测试和透明度混合等透明效果。
●中级篇
中级篇是本书的进阶篇章,主要讲解 Unity 中的渲染路径、如何计算光照衰减和阴影、如何使用高级纹理和动画等一系列进阶内容。中级篇包含了以下 3 个章节。
第 9 章 更复杂的光照 我们在初级篇中实现的光照模型没有考虑一些重要的光照计算,如阴影和光照衰减。本章首先讲解 Unitv 中的 3 种渲染路径和 3 种重要的光源类型,再解释如何在前向渲染路径中实现包含了光照衰减、阴影等效果的完整的光照计算。在本章最后,我们会给出基于之前学习内容实现的包含了完整光照计算的 Unity Shader。
第 10 章 高级纹理 这一章将会讲解如何在 Unity Shader 中使用立方体纹理、渲染纹理和程序纹理等高级纹理。
第 11章 让画面动起来 静态的画面往往是无趣的。这一章将帮助读者学习如何在 Shader 中使用时间变量来实现纹理动画、顶点动画等动态效果。
● 高级篇
高级篇涵盖了一些 Shader 的高级用法,例如如何实现屏幕特效、利用法线和深度缓冲以及非真实感渲染等,同时,我们还会介绍一些针对移动平台的优化技巧。高级篇的结构如下。
第 12 章 屏幕后处理效果 屏幕特效是游戏中常用的渲染手法之一。这一章将介绍如何在 Unity 中实现一个基本的屏幕后处理脚本系统,并给出一些基本的屏幕特效的实现原理,如高斯模糊、边缘检测等。
第 13 章 使用深度和法线纹理 使用深度和法线纹理可以帮助我们实现很多屏幕特效。本章将介绍如何在 Unity 中获取这些特殊的纹理来实现屏幕特效。
第 14章 非真实感渲染很多游戏使用了非真实感渲染的方法来清染游戏画面。这一章将会给出常见的非真实感渲染的算法,如卡通渲染、素描风格的渲染等。本章的扩展阅读部分可以帮助读者找到更多其他类型的非真实感渲染的实现方法。
第 15章 使用噪声 很多时候噪声是我们的救星。本章给出了噪声在游戏演染中的一些应用。第 16 章 Unity 中的渲染优化技术 优化往往是游戏渲染中的重点。这一章介绍了Unitv 中针对移动平台使用的常见的优化技巧。
●扩展篇
扩展篇旨在进一步扩展读者的视野。本篇将会介绍 Unity 的表面着色器的实现机制,并介绍基于物理的渲染的相关内容。最后,我们给出了更多的关于学习渲染的资料。扩展篇包含了以下 4个章节。
第 17章 Unity 的表面着色器探秘 Unity 提出了一种新颖的 Shader 形式——表面着色器。本章将会介绍这些表面着色器是如何实现的,以及如何使用这些表面着色器来实现渲染。
第 18 章 基于物理的渲染 Unity 5 终于引入了基于物理的渲染,这给 Unity 引擎带来了更强的渲染能力。这一章将介绍基于物理渲染的理论基础,并解释 Unity 是如何实现基于物理的渲染的。我们还会在本章实现一个基本的场景来进一步阐述如何在 Unity 5 中利用基于物理的渲染。
第19 章 Unity 5更新了什么 相较于Unity 4.x,Unity 5 在 Shader 方面有很多重要的更新。本章将给出 Unity 5 中一些重要的更新,以帮助读者解决在升级 Unity 5时所面对的各种问题。
第 20章 还有更多内容吗 图形学的丰富多彩远远超乎我们的想象,我们相信一本书也远远无法满足一些读者强烈的求知欲。在最后一章中,我们将给出许多非常有价值的学习资料,以帮助读者进行更深入的学习。
那么,你准备好了吗?和我们一起进入 Shader 的世界吧!
【下载地址】
链接:https://pan.baidu.com/s/1QADj3ebS2HvHvLO9e0b7BQ
提取码:7j5a
相关文章
不仅要教会读者如何使用 Unity Shader,更重要的是要帮助读者学习 Unity 中的一些渲染机制以及如何使用 Unity Shaad
FlashFXP绿色版网盘下载,附激活教程 1839
FlashFxp百度网盘下载链接:https://pan.baidu.com/s/1MBQ5gkZY1TCFY8A7fnZCfQ。FlashFxp是功能强大的FTP工具
Adobe Fireworks CS6 Ansifa绿色精简版网盘下载 1607
firework可以制作精美或是可以闪瞎眼的gif,这在广告领域是需要常用的,还有firework制作下logo,一些原创的图片还是很便捷的,而且fireworks用法简单,配合dw在做网站这一块往往会发挥出很强大的效果。百度网盘下载链接:https://pan.baidu.com/s/1fzIZszfy8VX6VzQBM_bdZQ
navicat for mysql中文绿色版网盘下载 1652
Navicat for Mysql是用于Mysql数据库管理的一款图形化管理软件,非常的便捷和好用,可以方便的增删改查数据库、数据表、字段、支持mysql命令,视图等等。百度网盘下载链接:https://pan.baidu.com/s/1T_tlgxzdQLtDr9TzptoWQw 提取码:y2yq
火车头采集器(旗舰版)绿色版网盘下载 1738
火车头采集器是站长常用的工具,相比于八爪鱼,简洁好用,易于配置。火车头能够轻松的抓取网页内容,并通过自带的工具对内容进行处理。站长圈想要做网站,火车头采集器是必不可少的。百度网盘链接:https://pan.baidu.com/s/1u8wUqS901HgOmucMBBOvEA
Photoshop(CS-2015-2023)绿色中文版软件下载 1858
安装文件清单(共46G)包含Window和Mac OS各个版本的安装包,从cs到cc,从绿色版到破解版,从安装文件激活工具,应有尽有,一次性打包。 Photoshop CC绿色精简版 Photoshop CS6 Mac版 Photoshop CC 2015 32位 Photoshop CC 2015 64位 Photoshop CC 2015 MAC版 Photoshop CC 2017 64位 Adobe Photoshop CC 2018 Adobe_Photoshop_CC_2018 Photoshop CC 2018 Win32 Photoshop CC 2018 Win64