详细谈谈如何学习Shader吧
1.首先、作为学习shader的开始,开发工具是非常重要的,我个人推荐sublinme Text, 在srp推出后 ,所有shader源码是非常方便阅读和理解的,现在unity主推hlsl 因此插件装上hlsl的就好。
导入urp或者hdrp后 将工程下的Library/PackageCache/ 下的com.unity.render-pipelines.core和com.unity.render-pipelines.universal 工作空间 ,这样在可以在很方便的查找到使用代码的引用。
2.如果你对图形学没有任何的基础,可以先去看catlikecoding的关于Rendering教程 ,国内的汉化版本也比较多,里面从矩阵开始一直到大部分unity默认的pbr流程,这一步可能比较难走,因为教程难度还是比较大的,需要花费的时间也比较多,由于该教程使用的默认管线,用的语言也是cg,所以目标主要是理解他的原理以及shaderlibrary的语法。
3.在你对shaderlibrary和渲染流程有一定了解之后 , 可以拿起URP中的LitForward.shader源码进行慢慢分析, 如果你第二步做的牢固的话 ,会发现阅读这些代码是非常轻松的, 而且代码注释也是比较详细的
4.然后你可以在shadertoy上慢慢阅读各种实现,顺便在unity中进行实现这些效果(找一个urp下的的后处理框架 (我推荐用custompostprocess)或者自己写一套,并不是很难),积累各种效果实现的基础,这是一个长期持续的过程
5.提高你的C#基础水平, 写渲染需要的东西不仅仅是会写shader的,大部分的渲染需求不仅仅在shader上, 在你想进阶写一些管线文件的时候 ,六成以上的开发时间都在C#上
6.如果你只是美术,特效岗位,尽早使用ase或者sg这种工具来进行开发可以让你免除很多的学习成本,大部分的渲染效果也是能做出来的,毕竟抛出渲染的底层需求,大部分市面上的需求通过逻辑连线就可以实现了 , 以上这些流程其实是非常枯燥乏味的,而且没有什么成就感,如果坚持的话起码要花费半年以上
7.其他一些学习的那些书籍,我也在想学习的阶段时全部购买阅读过,实际上帮助很低,当时断断续续看书学了一年左右水平还是个萌新一样, 但是从srp发布以来通过读源码的方式进步非常神速(也可能是之前的积累有些作用吧哈哈)