【Unity资源】版主上任贡献贴(二):Unity Shader资源

作为初学者,断断续续学习Unity Shader半年了,感觉这坑很大啊。一开始学习的时候遇到很多问题,不知道去哪里学,从什么地方开始,关于CG有很多书选哪些看,看看别人写的Shader又总是看不懂,很苦恼

之所以想要学Shader,我会告诉你是因为一个主程姐姐告诉我这方面工资很高吗。。。当然,学了才知道,要学好不容易,学到能靠这个赚钱的地步更不容易。。。

不过呢,我一直相信,手机硬件会越来越好,学一点这个不管对游戏开发还是相关的图像处理都是有帮助滴。最近,我也发现不管是群里还是邮件,也有很多小伙伴们开始关注这个领域,搜索这部分资源,呜,CSDN8月份也举办了一个相关培训,因此,贡献贴第二章就是Unity Shader了。

当然,由于能力有限,如有不对之处还望指出

以下的Shader没有特殊说明的话是指Unity中的Shader。

========== 什么是Shader ==========

Shader,也就是着色器,它的工作就是读取你的网格并渲染在屏幕上。Shader可以定义一些属性,你会用它来影响渲染模型时所显示的效果。当存储了这些属性的设置时,就是一个Material,材质。

Unity中的Shader有以下几个种类:

Surface Shaders —— 这是Unity的骄傲。它去除了大部分“麻烦的工作”,可以适用于很多情况下 。

Vertex和Fragment Shaders —— 它允许你做更多的工作,但也更难写,而且它还让我们可以做低层的一些东西,像顶点光照,这对于移动设备和多个通道(passes)所必需的更高级的效果会非常有用。

这里只做简单介绍,更详细可以访问博客文章

对于深入学习CG和渲染,可以参见“unity3d引擎程序员养成”这篇博客,里面介绍了很多书籍和技术资料。

========== Shader学习资料 ==========

以下主要是针对Unity Shader的学习教程和资料。

1. Unity官网的Shader手册

推荐。官方手册,质量保证。

2. Unity Build-in Shaders以及官方指南

推荐。感谢热心人补充~Unity中内置的各种Shader,可以下载下来进行观摩学习。你还可以在Unity/Contents/CGIncludes(MAC目录)或者Unity/Editor/Data/CGIncludes(Windows目录)下找到Unity内置函数和内置变量的实现细节(也包含在官方的下载资源里)。

3. Unity CG Wiki Book

4. NVidia的CG编程教程

经典教程,是讲CG语言的,而非Unity封装后的。不过对于Vertex和Fragment Shaders,语法基本相同。

5. CreativeTD的Surface Shaders系列视频教程

外国网友推荐的。

6. CgCookie的Shader初级视频教程

7. CgCookie的Shader中级视频教程

8. 风雨冲的Shader教程系列(终于有个中文了)

感觉是国内最早开始写Unity Shader的博客之一了。

9.《Unity Shaders and Effects Cookbook》和中文专栏

书籍,2013年6月出版。

========== 万事开头难 ==========

我现在的学习路径也只正在学习《Unity Shaders and Effects Cookbook》一书,并写了一个专栏作为记录。

这本书虽然讲的比较浅显,但也多少弥补了下书籍市场上这方面的空白。除此之外,会看一些专题Shader的制作教程或者视频。当然,由于Unity主要是在CG或者HLSL上面加了一层封装,如果想要深入理解,学习这些也是十分必要的。另外需要强调的是,由于计算机图像包含了很多数学计算,良好的数学功底也很重要啊!

最后,欢迎补充、指导和拍砖!
...全文
4236 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
billcherie2009 2016-06-12
  • 打赏
  • 举报
回复
请问亲爱的版主有没有大神做好的着色器DEMO可以插入UNITY让我们切身体会一下可编程渲染管线的效果,如果有能发我一份学习一下么?344410323@qq.com迷茫的入门菜鸡恳请版主分享~
ZizerZhang 2015-01-30
  • 打赏
  • 举报
回复
感谢楼主,感悟很多。 说实话,我从接触Unity开始就想重新做一遍当年风靡全国的《热血传奇》,但是已经工作一年了,这个想法还一直只是个想法,最初的梦想全部抛到了脑后,不知道现在重新拾起来能不能赶上。
jackhamsir 2014-12-19
  • 打赏
  • 举报
回复
看完我只想问。are you single?
鱼弦 2014-11-02
  • 打赏
  • 举报
回复
多么温馨的存在~ 资源很不错
yxlovemoney 2014-10-08
  • 打赏
  • 举报
回复
引用 16 楼 candycat1992 的回复:
[quote=引用 15 楼 yxlovemoney 的回复:] 不过看了版主的这些话,也让我想通不少
Unity用起来会上瘾,我现在做什么都想要用Unity来实现,已中毒。。。 你说的也没错,这就是经验问题了。你自己也说了才半年,从感兴趣的游戏开始做起、学起,如果你需要实现那个技术,那就好好研究一下,不需要的感觉研究起来就没动力。。。也容易忘记。不积跬步无以至千里~慢慢积累努力吧~起码要光之子!!!一个人么。。。追求很高嘛。。。[/quote] 怎么可能一个人。。。。 一个人根本做不来。单美工就足以摧毁我了 所以,现在还是先按博客中DX的路线走走,至于文中《real-time rendering》以后的事,到时再说好了。 不过说真的,文章标题叫《游戏引擎程序员养成》感觉更贴切
yxlovemoney 2014-10-07
  • 打赏
  • 举报
回复
最近加大对U3D的学习力度,加上之前看的DX书籍似乎并不好所以又回来观看版主这篇文,才发现版主文中说的 unity3d引擎程序员养成 就说了DX的学习路线,并与我之前找的书籍几乎一至,早知道当时该好好看看 而现在看到最多的词就是 什么渲染,什么SHADER, 等等一堆术语。看来似乎都是一体,但又似乎是各自不同的方向 。 而后博文又介绍了一堆似乎都是为引擎学习的书,话说这又是应该去学的吗? 说实话,看了这些介绍,感觉脑袋更乱了。感觉这似乎是一个方向,又好像是好几个方向。那我到底该往哪跑? 求版本作为过来人,指点下,感觉还是挺乱的。 说到这里,突然想起,还有个OpenGL
  • 打赏
  • 举报
回复
引用 15 楼 yxlovemoney 的回复:
这个假期用UNITY3D做了个FLAPPY BIRD,我已经很有成就感 了。但我不满足于这类小游戏,起码也希望自己能做出像胧村正,光之子这种级别的。所以我在不知道该学什么的情况下,就到处找书了。像我这类小白确实非常需要别人指点啊。 不过看了版主的这些话,也让我想通不少
Unity用起来会上瘾,我现在做什么都想要用Unity来实现,已中毒。。。 你说的也没错,这就是经验问题了。你自己也说了才半年,从感兴趣的游戏开始做起、学起,如果你需要实现那个技术,那就好好研究一下,不需要的感觉研究起来就没动力。。。也容易忘记。不积跬步无以至千里~慢慢积累努力吧~起码要光之子!!!一个人么。。。追求很高嘛。。。
yxlovemoney 2014-10-07
  • 打赏
  • 举报
回复
引用 14 楼 candycat1992 的回复:
Unity也有比赛,也是分亚太赛区和全球的,比如炉石传说和纪念碑谷也是去年的得奖作品。。。手机游戏的话还有谷歌的安卓挑战赛等等。。。 不要以为很深奥的技术和好游戏之间一定有什么必然联系,用户不会在意你用了哪些算法,用了什么shader,他们就觉得好玩就ok了。只有程序员才会想,咦,这个技术是怎么实现的呀~~。。。 你也可以看看云风参加2014年IGF评委写的一篇文章
其实几个月前跟朋友聊天时就让我明白到,技术与取得的成就不一定是正比,在国庆之前我也让自己去确立过这个观念,好的游戏,不一定需要很牛X的技术。不过可能是我自己比较追求技术吧,开始学习游戏之前也为了技术走了很多很多弯路。不过现在为了游戏我已经完全放弃以前走的路。老实说这真是很大的决心啊。 正因为走过这样的路,所以我会担心,我需要技术达到什么程度,才能承担起我想做的游戏类型。就拿你之前求过的液体流动实现来说吧,这看起来很简单的东西,却要很复杂的算法,而这也是很多小游戏会有的。又比如之前我COCOS2D做的一个判断点击中哪个不规则图片,最后通过像素判断达到。所以这些如果我算法牛B,图形学方面牛B,碰到这些困难就会一下想到可以通过什么方式解决。 也因为如此,一看到别人说要看什么什么,我就会想,我是不是也需要去学这些才行。毕竟我接触游戏制作(应该说学习)刚好半年,很多东西都异常地空白,连概念都不清楚。 也不是我逼自己学这么多,而是因为我不知道真正到底要学哪些。 这个假期用UNITY3D做了个FLAPPY BIRD,我已经很有成就感 了。但我不满足于这类小游戏,起码也希望自己能做出像胧村正,光之子这种级别的。所以我在不知道该学什么的情况下,就到处找书了。像我这类小白确实非常需要别人指点啊。 不过看了版主的这些话,也让我想通不少
  • 打赏
  • 举报
回复
引用 13 楼 yxlovemoney 的回复:
其实我的想法也很单纯,只是想做出能带给玩家快乐的游戏,同时也不至少过于简陋的游戏,说不上大作,也起码能达到小量级级别吧。但我不知这个想法,是否要把博客提到的学个大部分才能达成这梦想,所以要说兴趣。。。。 兴趣就是做游戏。。。。
如果你只是想做出给人带来快乐的游戏,那我觉得中国最缺的是游戏创意,而不是画面。我打开一个国内的游戏,大部分时候第一个感觉都是这画面好乱。。。没新意,没剧情。很多好玩的游戏其实没有很复杂的画面,3D的比如纪念碑谷,2D的只要原画漂亮就很好了。你要达到梦想就算没有学DX、GL也是完全可能的。不要这么逼迫自己。。。 你可以想个游戏创意,做个小游戏出来,然后放到商店里让大家去评判,这样我觉得反而更适合你。还可以参加下比赛,看看其他人做的游戏有哪些好的地方。比如很多名的独立游戏大赛IGF,有中国版也有国外版,都是一些小团队开发出来的,得奖的游戏总是很有启发,我记得纪念碑谷好像就是前几年的获奖作品吧。Unity也有比赛,也是分亚太赛区和全球的,比如炉石传说和纪念碑谷也是去年的得奖作品。。。手机游戏的话还有谷歌的安卓挑战赛等等。。。 不要以为很深奥的技术和好游戏之间一定有什么必然联系,用户不会在意你用了哪些算法,用了什么shader,他们就觉得好玩就ok了。只有程序员才会想,咦,这个技术是怎么实现的呀~~。。。 你也可以看看云风参加2014年IGF评委写的一篇文章
yxlovemoney 2014-10-07
  • 打赏
  • 举报
回复
引用 12 楼 candycat1992 的回复:
[quote=引用 11 楼 yxlovemoney 的回复:] 最近加大对U3D的学习力度,加上之前看的DX书籍似乎并不好所以又回来观看版主这篇文,才发现版主文中说的 unity3d引擎程序员养成 就说了DX的学习路线,并与我之前找的书籍几乎一至,早知道当时该好好看看 ……
都怪我之前写的太罗嗦了才导致你没看到。。。那篇文章最后的确给了很多方向,比如地形、AI之类的,在大型游戏里这些内容都会涉及,也不能算是为了开发引擎而学习的吧,但后面他提到的引擎设计就是为了开发引擎而学习的。 你说这些都是一体,额,从宏观角度上也可以这么说?但的确是很多方向啦,几乎没有人可以都掌握啊,你也不用这么严格要求自己都要学吧。。。我觉得你看自己的兴趣,每一个都可以学习很久很久,如果你对GPU、shader渲染感兴趣就去学shader嘛,你如果对游戏里面的各种AI算法有兴趣就去学AI,东西不在多而在精嘛 如果是shader的话,你也不需要同时掌握DX、GL和CG,可以选一个适合你的平台或者兴趣的,它们很多都是相通的,然后再继续深入~ [/quote] 其实我的想法也很单纯,只是想做出能带给玩家快乐的游戏,同时也不至少过于简陋的游戏,说不上大作,也起码能达到小量级级别吧。但我不知这个想法,是否要把博客提到的学个大部分才能达成这梦想,所以要说兴趣。。。。 兴趣就是做游戏。。。。
  • 打赏
  • 举报
回复
引用 11 楼 yxlovemoney 的回复:
最近加大对U3D的学习力度,加上之前看的DX书籍似乎并不好所以又回来观看版主这篇文,才发现版主文中说的 unity3d引擎程序员养成 就说了DX的学习路线,并与我之前找的书籍几乎一至,早知道当时该好好看看 ……
都怪我之前写的太罗嗦了才导致你没看到。。。那篇文章最后的确给了很多方向,比如地形、AI之类的,在大型游戏里这些内容都会涉及,也不能算是为了开发引擎而学习的吧,但后面他提到的引擎设计就是为了开发引擎而学习的。 你说这些都是一体,额,从宏观角度上也可以这么说?但的确是很多方向啦,几乎没有人可以都掌握啊,你也不用这么严格要求自己都要学吧。。。我觉得你看自己的兴趣,每一个都可以学习很久很久,如果你对GPU、shader渲染感兴趣就去学shader嘛,你如果对游戏里面的各种AI算法有兴趣就去学AI,东西不在多而在精嘛 如果是shader的话,你也不需要同时掌握DX、GL和CG,可以选一个适合你的平台或者兴趣的,它们很多都是相通的,然后再继续深入~
  • 打赏
  • 举报
回复
引用 9 楼 boyhailong 的回复:
话说我还想学些unity的基础编程呢
嘿嘿,基础编程可以看置顶资源里面的贡献贴一~
xiaolomg 2014-07-30
  • 打赏
  • 举报
回复
话说我还想学些unity的基础编程呢
yxlovemoney 2014-07-18
  • 打赏
  • 举报
回复
引用 6 楼 candycat1992 的回复:
[quote=引用 5 楼 yxlovemoney 的回复:] 又是一堆英文资源,早就听说shader很难,可怜的我还不清楚这是干嘛用的,
说简单点就是那些3D游戏里面的各种模型渲染效果,相信我我也不想英文。。。[/quote] 那就是为了模型更逼真更好看而已吧? 那我暂时还是不把脚踩进去了
  • 打赏
  • 举报
回复
引用 5 楼 yxlovemoney 的回复:
又是一堆英文资源,早就听说shader很难,可怜的我还不清楚这是干嘛用的,
说简单点就是那些3D游戏里面的各种模型渲染效果,相信我我也不想英文。。。
yxlovemoney 2014-07-18
  • 打赏
  • 举报
回复
又是一堆英文资源,早就听说shader很难,可怜的我还不清楚这是干嘛用的,
  • 打赏
  • 举报
回复
引用 7 楼 yxlovemoney 的回复:
[quote=引用 6 楼 candycat1992 的回复:] [quote=引用 5 楼 yxlovemoney 的回复:] 又是一堆英文资源,早就听说shader很难,可怜的我还不清楚这是干嘛用的,
说简单点就是那些3D游戏里面的各种模型渲染效果,相信我我也不想英文。。。[/quote] 那就是为了模型更逼真更好看而已吧? 那我暂时还是不把脚踩进去了[/quote] 可以观望下,的确不要轻易进来。。。
  • 打赏
  • 举报
回复
引用 2 楼 lile1234_show 的回复:
加油啊、版主。
望前辈多多指点
  • 打赏
  • 举报
回复
引用 1 楼 hgplan 的回复:
楼主少放了一个东东,Unity\Editor\Data\CGIncludes目录下的Unity已经写好的一些Shader的内置变量啊,内置函数啊。还有Unity自带的内置Shader也可以找出来照着写滴(下面是链接)~~ http://unity3d.com/unity/download/archive
谢谢补充!看来您也是学过的人啊
lee_鹿游原 2014-07-17
  • 打赏
  • 举报
回复
加油啊、版主。
加载更多回复(1)

8,325

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧