Unity Shader 入门精要pdf电子书提取码

简介: 本书适合Unity初学者、游戏开发者、程序员,也可以作为大专院校相关专业师生的学习用书,以及培训学校的培训教材。

第1篇

基础篇

这是很重要的一篇,尽管在本篇中我们没有进行真正的代码编写,但本篇会为初学者普及基本的理论知识以及必要的数学基础,为读者顺利步入Unity Shader学习打下很好的基础。

第1章 欢迎来到Shader的世界

欢迎来到Shader的世界!我们曾不断听到周围有人提出类似的问题:“Shader是什么”“我应该看哪些书才能学好Shader”“学习Unity Shader,我应该从哪里着手”。我希望这本书可以告诉你这些问题的答案。让你离制作心目中优秀游戏的心愿更近一步。

第2章 渲染流水线

这一章讲解了现代GPU是如何实现整个渲染流水线的,这些内容对于理解Shader的工作原理有着非常重要的作用。

第3章 Unity Shader基础

这一章将讲解Unity Shader的实现原理和基本语法,同时也将为读者解答一些常见的困惑点。

第4章 学习Shader所需的数学基础

数学向来是初学者面对的一大学习障碍。然而,在初级阶段的渲染学习中,我们需要掌握的数学理论实际上并不复杂。这一章将为读者讲解渲染过程中常见的数学知识。这章内容可以帮助读者理解Shader中的数学运算,我们在讲解过程中以一个具体的例子来阐述“一头奶牛的鼻子是如何一步步被绘制到屏幕上的”。

第1章

欢迎来到Shader的世界

欢迎来到Shader的世界!我们曾不断听到周围有人提出类似的问题:“Shader是什么”“我应该看哪些书才能学好Shader”“学习Unity Shader,我应该从哪里着手”。我们希望这本书可以告诉你这些问题的答案。如果本书是你学习Shader的第一本书,我们希望这本书可以为你打开一扇新的大门,让你离制作心目中的优秀游戏的心愿更近一步;如果不是,我们同样希望这本书可以让你更深入地理解Shader的方方面面,在学习Shader的过程中更上一层楼。

1.1 程序员的三大浪漫

有人说,程序员的三大浪漫是编译原理、操作系统和图形学(是的,我已经听到很多人在反驳这句话了,不要当真啦)。不管你是否认同这句话,我们只是想借此说明图形学在程序员心目中的地位。正在看此书的你,想必多多少少都对图形学或者渲染有一定兴趣,也许你想要通过此书来学习如何实现游戏中的各种特效,也许你仅仅是好奇那些绚丽的画面是如何产生的。我们是程序员中的“外貌协会”,期待着用代码编写出一个绚丽多姿的世界。这就是我们的浪漫。

我想,读者大概都经历过这样的场景:当你在游戏里看到那些出色的画面时,你很好奇这样的游戏是如何制作出来的,更具体的是,这样的渲染效果是如何得到的。于是你搜索后发现,这个游戏是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的工作方式,所以它的一些语法对我们来说并不那么直观。因此,任何一篇只讲语法、不讲渲染框架的文章都无法解决读者的困惑。

版权:人民邮电出版社