玩转Unity Shader,渲染出属于程序员的浪漫

举报
feichaiyu 发表于 2020/02/17 22:18:05 2020/02/17
【摘要】 欢迎来到Shader的世界我们曾不断听到周围有人提出类似的问题:“Shader是什么”“我应该看哪些书才能学好Shader”“学习Unity Shader,我应该从哪里着手”。希望《Unity Shader入门精要》这本书可以告诉你这些问题的答案。如果这本书是你学习Shader的第一本书,我们希望这本书可以为你打开一扇新的大门,让你离制作心目中的优秀游戏的心愿更近一步;如果不是,我们同样希望...

欢迎来到Shader的世界

我们曾不断听到周围有人提出类似的问题:“Shader是什么”“我应该看哪些书才能学好Shader”“学习Unity 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的工作方式,所以它的一些语法对我们来说并不那么直观。因此,任何一篇只讲语法、不讲渲染框架的文章都无法解决读者的困惑。

我们希望通过《Unity Shader入门精要》可以帮助读者建立一个渲染流程的整体体系,这些基础是跨越Shader学习中层层障碍的重要因素。

本文节选自《Unity Shader入门精要 》,点击图书封面阅读更多内容。

image.png

内容简介


本书不仅要教会读者如何使用Unity Shader,更重要的是要帮助读者学习Unity中的一些渲染机制以及如何使用Unity Shader实现各种自定义的渲染效果,希望这本书可以为读者打开一扇新的大门,让读者离制作心目中优秀游戏的心愿更近一步。

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



本文转载自异步社区。

原文链接:https://www.epubit.com/articleDetails?id=NC7E3EF9359D0000149AE10C48C008C70

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。