【UnityShaders】《UnityShadersandEffectsCookbook》总结
我的唠叨
不知不觉,从发表第⼀篇关于已经快⼗个⽉了。⼀开始的初衷就是学习笔记,毕竟将来回过头去看的时候,再看英⽂难免有种急躁感。从⼀开始⼏乎只有我⼀个⼈在奋⽃,到现在时不时有⼈学习留⾔或者发邮件⿎励我,能有⼈和我⼀起学习我已经很开⼼了。谢谢所有⿎励和⽀持我的⼈~
我先说下我的博客⾥这个系列的特点~
⾸先声明,这不是纯翻译,我的插图绝⼤部分都是在⾃⼰的Unity⾥⾯按步骤实践以后再截图放到博客⾥的。
会对原⽂中的⼀些错误进⾏修正。
会对原⽂中解释较少的部分增加⾃⼰的理解和扩展。
原⽂⾥⼀些我觉得⽐较啰嗦的话我也会不再翻译出来赘述的。。。但我认为,就算没有那些⼀般⼈都是可以看懂的~
那么下⾯就是对这本书的看法啦~
unity 教程优点:
算是填补了国内外(对,没错,包括国外)关于Unity Shaders⽅⾯的空⽩。在这之前⼤多是依靠Unity⽂档、论坛和各种⽹站的资源学习的,⽽现在有了⼀个⽐较集中的书籍。在国外的⽹站上(例如packtpub和Amazon),这本书的评价是4星左右,是可以接受的分数了。
包含的内容⾯还是⽐较⼴的。由基础的漫反射光照、镜⾯反射、Cubemap等等,到Cloth、Skin(Skin这个必须要吐槽。。。真的不像⽪肤啊啊啊啊!),再到移动平台上的优化,如何使⽤Cg,以及最后关于画⾯特效的⼏个⾼级话题。对于初学者来说,这些内容还是⽐较丰富和有趣的。
写Shader⼀直是⼀个很难⽽且不知道如何⼊⼿的事情,这本书给了⼀个简单⽽⼜不失有效的途径。
缺点:
这本书有很多称不上经典的原因(当然已经很感谢作者了)。我感触最深的就是作者关于很多表层⼀下的知识介绍太少,有种浅尝辄⽌的感觉。⽐如Shader的pipeline等。⽽这些其实是⾮常重要的,知其然⽽不知其所以然是阻⽌很多程序员成长的最⼤元凶。如果要完全理解的话,还是要辅助看很多基础数据或⽂章,⽐如Nvidia关于Cg的教程等等。
解释的部分有时太过简略。虽然有时候作者说的很简单,但其实对于初学者来说,“为什么要这样”的问题时常浮现在我的脑海⾥。。。当然其实很多时候写Shader是⼀个经验活,那些公式和系数就是长期时间下来的结果,没有太多的为什么。
⼀些错误。⽐如作者关于变量类型的使⽤⽐较混乱,尤其是fixed的使⽤。我之后也要重新复习看⼀下。。。
虽然叫cookbook,但是很多是不可以直接拿来⽤的。所以,这本书整体来说是⼀个⼊门书籍,让你了解⼀些Unity Shader的常见⽤处和语法。
内容总结
好啦,当做复习以及索引⽅便,下⾯是本书各章节内容的介绍和总结。
Diffuse,即漫反射,可以想象成太阳光照射到某⼀个粗糙平⾯上时,该平⾯向四⾯⼋⽅都会反射光线,这些光线中的某些光线进⼊我们的眼睛,从⽽使我们看到了这个平⾯。⼀个基本的漫反射光照模型,需要包括以下⼏个部分:⼀个反射颜⾊(emissive color,可以理解成平⾯本⾝的颜⾊), ⼀个环境光颜⾊(ambient color,可以理解成光源的颜⾊), 以及计算来⾃所有光源的光线和。
1.1
如何新建⼀个Shader并使⽤Material。
第⼀次解释了Properties块,如何添加新的property,不同类型property的声明⽅式。
第⼀次解释了怎样创建CGPROGRAM和Properties块中各变量的链接。
如何在Surface Shader中使⽤⾮默认的光照函数,光照函数的⼏种类别,基本的漫反射光照模型(兰伯特光照模型)。
半兰伯特听起来很⾼端,其实就是把物体背光⾯的亮度提⾼了,使光照范围从(0.0, 1.0)映射到了(0.5, 1.0)。
使⽤⼀维渐变纹理控制光照(即光照颜⾊就是采样后纹理上的某个像素)是⾮常常见的⼿法,在很多类型的Shader,如卡通风格的Shader中都⾮常常见。这种⽅法具有⾮常好的可变性。
这节是上⾯两节内容的结合和扩展。双向,即两个⽅向,⼀个指⼊射光线的⽅向,⼀个指观察点的⽅向。之前的光照模型都是只使⽤了第⼀个⽅向,即⼊射光线的⽅向。给出了max、半兰伯特对两个⽅向进⾏修正的结果和异同。
待续。。。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。