标签:
感谢所有点进来看的朋友。没错,我目前打算写一本关于Unity Shader的书。
出书的目的有下面几个:
总结我接触Unity Shader以来的历程,给其他人一个借鉴。我非常明白学Shader的艰难,在群里也见了很多人提出的问题。我觉得学习Shader还是一件有规律可循的事情,但问题是中文资料难觅,而大家又不愿意去看英文。。。这对我有什么好处呢?强迫我对知识进行梳理,对细节问题把握更清楚。
第二个原因你懂的。
关于本书的定位问题:
面向Unity Shader初学者,但要:
我写这本书的一个目标是,希望帮助初学者把基础打牢,没有基础任何上层建筑都是不可靠的。
我不是在写一本特效大全,所以你如果想要看到各种酷炫狂霸拽的特效,抱歉,这本书里几乎没有。这跟上一点有很大关系,仅靠一本书,我可以肯定一个初学者没有办法成为一个“Shader大神”。我希望所有读过这本书的人可以真正明白shader是个什么东西,而不是说:“哦,shader嘛,就是在Unity里右键Create->Shader得到的那个东西嘛”。关于特效大全的问题,如果将来我有十足的经验和资格了,可能会真的写一本,哈哈哈
写书是件很不容易的事情,希望我可以把它做好。
我把这本书分为五大篇章:
基础篇:这是很重要的一章,主要是为了初学者普及基本的理论知识,以及所需的数学基础。我明白很多人看不懂网上的一些材料,我尽量讲得通俗。
Shader初级篇:从最简单的shader开始,讲解shader中基础的光照模型、纹理、和透明效果等。同时,还会介绍一些shader的Debug技巧、shader里常见报错信息。
Shader中级篇:这是进阶篇章,将讲解更加复杂的光照、高级纹理、以及如何用shader实现动画等一系列进阶内容;
Shader高级篇:则涵盖了一些shader的高级用法,如使用缓冲区、实现屏幕特效、非真实感渲染等,同时,还会介绍一些优化技巧;
扩展篇:将会涵盖一些Unity Surface Shader背后的机制,还会针对Unity 5.0+版本中的一些新的特性进行简要分析。最后,希望向大家介绍一点学习shader的经验和资源。
目前目录已经初步定型,把目录记录在这里,但我会不断更新。
如果您对该书的目录和内容有任何意见和建议都可以在下方留言。如果您没有CSDN账号,也可以通过发邮件来告诉我:lelefeng1992 # gmail DOT com。我会根据您的意见对目录和内容做出一定的更改。
* 前言
* 这本书讲些什么
* 读这本书之前你需要哪些知识
* 谁适合读这本书
* 谁暂时还不适合读这本书
* 约定
* 读者反馈
* 本书源码
第1部分 基础篇
第1章 欢迎来到Shader的世界
第2章 渲染流水线
第3章 Unity Shader基础
第4章 学习Shader所需的数学基础
第2部分初级篇
第5章 开始Unity Shader学习之旅
第6章 Unity中的基础光照
第7章 基础纹理
第8章 透明效果
第3部分 中级篇
第9章 更复杂的光照
第10章 高级纹理
第11章 让画面动起来
第4部分 Shader高级篇
第11章 基于图像处理的渲染方法
第12章 使用深度和法线缓冲区
第13章 非真实感渲染
第14章 在Shader中使用噪声
第15章 移动平台的优化
第5部分 扩展篇
第16章 Surface Shader探秘
第17章 基于物理的渲染——Physically Based Shading
第18章 Unity 5.0更新了什么
第19章 还有更多内容吗
参考文献
这几天在写数学的部分,早就料到数学是最难讲的一部分,尤其是矩阵。我和很多人一样,对矩阵这个家伙简直是”深恶痛绝“,看到它就想躲过去。无奈,shader里面要时常跟它打交道,那么,就勇敢地面对它吧!
我很明白,为什么我们会这么”讨厌“矩阵。如果说矢量这种我们还可以通过可视化的方法来直观地理解,那么,矩阵,这个放在一个小方框里的东西,就很难用画的方式把它画出来。而我们人的大脑又是很懒惰的(恩,我只能为我的大脑代言),没图你说个XXX!我才懒得记!
实际上,我一直对数学怀抱一种敬畏的心态。世界上有很多的数学家同时也是哲学家、心理学家,感觉数学对理解这个世界都有非常重要的意义,而且那些数学家的生平都很有意思,让人敬佩。能够将其一生都贡献给数学的人都很伟大的,那些创造矩阵、空间、矢量这些的人是多么伟大,怎么就会想到用这样一种方式来描述这种现象呢?这真的是件很神奇的事情。而且,你会发现,怎么这样算就可以表示出这种意思呢,明明看起来没有任何关系啊!这种巧合真的是让人感叹数学的伟大。
好了,不再歪歪……回到真实的世界……在写的过程中,我会尽量用通俗、幽默、有图示的方式来讲这一章,效果怎么样,我也很忐忑,会不会反映说看不懂?现在一切都不得而知……
一个有趣的事情是,在讲左右手坐标系和左右手法则的时候,我拿自己的手做了模型:
这几天一直在画图、看书、写文字、写公式(天哪,虽然用Markdown写公式已经很方便了,但一天要写那么多公式也真的是……)、算题,希望最后的结果是好的。加油吧!
写了两个多星期,把数学一章的草稿基本完成了。今天更新了第2、3、4章的目录,有兴趣的可以看一下,欢迎提出各种意见和建议。
数学篇是我最想好好写的一篇(当然啦,其他章我也会好好写。。。)。数学之所以难学,一部分是因为它的抽象性,没办法,如果我们想要把一些规律从生活中提取出来,就必然要涉及到各种数学符号,这就要用到抽象。我用了很多图和案例来尽量让这个过程更加形象易懂,也使用了一些类似对话的方式,来解释一些常见的疑惑。
目前,本书的第一篇——基础篇基本成型。基础篇里每一章都有个小节叫做答疑解惑,意在总结一些常见的疑惑点,如果读者除了我上面写到的几点外还有其他的困惑,可以给我留言。我会视情况添加到这一章节。
除此之外,在数学一章里我添加了练习题的部分。其实我是有犹豫的,觉得可能大家都会跳过去,那不是白写了。。。之所以要设置这个练习题的部分,一方面的确是希望读者可以通过这些练习真的拿笔算一下,说真的,数学你不多算真的永远学不会。另一方面,是想把一些容易混淆的点通过练习题的方式提出来,让读者自己算一下加深理解。因为如果要把这些混淆点都写进书里,思路上会比较乱。希望能起到比较好的效果吧。。。
下面就会真正开始Unity Shader的部分了。加油!
放假了大部分时间都拿来看资料、学习、写书了。半个多月写出了基本篇的草稿,不知道是快还是慢?我自信自己写的很详细了,比如第5章介绍了语义,第6章详细介绍了基本光照模型,第7章写到凹凸映射的时候也花了很大篇幅介绍实现的原理和细节,包括高度图,第8章的透明效果先介绍了渲染队列,我自己认为这个很重要的,应该在学习怎么实现透明之前就让读者知道渲染队列对透明来说是多么的重要。我觉得现在的安排对初学者足够友好了,当然写后面内容的时候可能还会对前面的内容进行改动,例如现在想在第4章数学里加一个在Unity脚本里的矩阵运算,但这本书是讲shader的,不知道加进去合不合适,但它的确是个容易出错的地方。
每次讲到新的内容时,我都尽量用图示来解释,每一幅图都是在OmniGraffle里认真做的,希望以后看到的人能get到我的意思。写书写太多感觉写博客都语无伦次了。。。
最近QQ群、私信和留言经常有人问题一些问题,我在这里统一回答一下。回答几个问题:
这书什么时候出版?
大家也看到了我的更新速度,目前写的了第8章(第一章介绍还没写),初步定的是19章,也就是说写了三分之一了,我现在大概花了一个多月,但是写书的确花费了很多时间,写完基本篇之后可能会放慢一下速度。总体来讲,我估测下大概还要三四个月的时间才能写完,因此出版的话最快年底,不然就是明年年初了。有一些人说太晚了,相信我,我比任何人都想让它赶紧出版,但是我不会影分身……好羡慕鸣人。
能不能增加些更高难度的技术?
一些童鞋大概看了前几章目录后觉得内容比较简单。怎么说呢,这本书的定位是面向初学者,因此肯定会是由易到难的,但我自信的是,即便是简单的内容我也写的很详细,很多很小的点也都写到了,很多地方都是其他资料里一带而过,而又很迷惑的点。如果是没有好好学过shader的,就算现在已经可以熟练写一些了我觉得这本书也是有用的。
更重要的是,我不想把它写成一本百科全书,一来我自己的确经验不够,写不来大全,二来我觉得一本大全的书肯定写不精、写不细,到头来又说看不懂怎么办?三来我觉得写shader是一个师傅领进门修行靠个人的活,一旦你了解了它的工作流程和基本思路,剩下的就是经验的积累,你看得写、写得多自然就厉害了,这不是一本基础书就可以让你做到的。
当然,我的确会写一些复杂的技术,这是高级篇和扩展篇的工作。如果你觉得有一些常用的复杂一些的技术想要在这本书里看到,可以告诉我。
是彩色书还是黑白书?
我自己当然希望是彩色书,一本讲画面效果的书竟然是黑白的那太遗憾了。不过编辑告诉我,彩色印刷会提高很多成本,那销量就会下降。我能够理解,但现在还没有一个定论,等写完之后会尽量争取。不过我也很好奇,大家觉得这样一本几百页的全彩书,你觉得多少价钱比较合适?
断断续续把中级篇的草稿完成了。越往后面写感觉内容的安排越费劲,一些内容不知道把它们归入到哪一章更加合适,放的早了一些内容没讲担心读者看不明白,放的晚了又觉得内容不足单独成章。高级篇想必也会这样。目录还在不断调整中……
写第9章光照简直是除数学篇外最痛苦的一章,想要讲明白非常难啊,不管怎样,目前的内容我尽力了,希望可以有好的效果。因为内容多而且杂,所以这一章不知不觉就写了四万字,也是目前字数最多的章节了。即便这样,仍然对一些内容“念念不忘”,例如菲尼尔光照、边缘光照等,不知道以后会不会加入进去。
话说,写书的时候发现一个不错的免费纹理网站——http://opengameart.org/,写书的时候有一些纹理是从这里找到的,在这里也推荐给大家。当然,也有自己画的一些纹理。之前做游戏的时候做了一个2D水面,这次把它的实现也添加到了书里面。
呼,还有两大篇整体草稿就完成了。有些内容想偷点懒,使用点博客里写过的。。。9月估计要赶论文,进度会更慢。预计完成大概要11月或者12月了,希望大家可以耐心等待。我会加油的。
版权声明:本文为博主原创文章,未经博主允许不得转载。
【我的书】Unity Shader的书 — 目录(2015.09.04更新)
标签:
原文地址:http://blog.csdn.net/candycat1992/article/details/46560879