动机
在豆瓣上看到有人写《GameDev Weekly》 系列,主要是记录每周阅读的游戏开发相关内容,包括视频、文章等。但我自身水平较弱,他分享的一些内容我还看不懂。于是自已也打算写类似的系列,不一定是weekly,把自己阅读过的有价值的内容尽量分类,按从入门到精通的顺序罗列出来,也做一些总结。
所分享的内容都亲自品尝过,保证无毒无害,营养价值极高!
入门
这是一套非常基础的入门指南,真的是猫都能学会,作者所用语言尽量通俗,很少出现“高大上”的词汇。第一篇主要介绍了概念和语法。第二篇举了一个应用场景,看完会有更直观的认识。缺点是只涉及surface shader。对于理解概念和了解语法,初步认识shader有很大意义!
Alan Zucconi 写的基础系列:
- 《A gentle introduction to shaders in Unity3D》
- 《Surface shaders in Unity3D》
- 《Physically Based Rendering and lighting models in Unity3D》
- 《Vertex and fragment shader in Unity3D》
- 《Screen shaders and postprocessing effects in Unity3D》
前两篇和前面推荐的“猫都能学会”系列内容重叠很多,可能有借鉴之处。相对而言这里的前两篇更深入一些,“猫都能学会”更通俗一些。
第三篇仍然是surface shader, 讲解了Lambertian和Blinn-Phong两种光照模型,以及Unity中现在使用的光照模型PBR(Physically Based Rendering)。
第四篇介绍了Vertex and fragment shader。这种shader往往不使用物理信息(光照、反射率、光滑度等),因此这种shader经常被用来做非真实的渲染、2D特效。
最后一篇讲了一些屏幕特效,比如老的CRT晶体管电视的效果。
接下来是两个视频:
前面只看文字可能到自己操作的时候可能还是有困难,视频的话更直观,并且都附带源码,还有课后作业。实现的效果也非常惊艳!
2D shader 实例
两个简单的shader在2D中的应用场景。
3D shader 实例
第一个系列写得非常详细,对于理解自然光相关物理有很大帮助!
官方实例中有不少惊艳的效果值得学习。
Shadertoy
最后推荐这个网站 Shadertoy,有非常多效果,找到自己喜欢的,学习下源码。有自己的想法之后也就可以在上面分享自己的shader啦!不过学了前面的unity shader的内容,并不会用shadertoy,所以再提供一个上手指南。