最近有些朋友咨询我几次shader的用法,以及关于shader学习的路线。索性很久没有更新知乎了,在这凉爽的高铁上简单总结一下。
分几个点吧:自身学习路径、学习心得、学习建议。
学习路径
真正系统学习shader应该有3年多了,和大家一样最开始主要专注于图形API或其他框架在项目中的应用,偶尔在项目开发中涉及到shader,多数就是找以有的shader修改一下,力求高效完成任务,很少去仔细研究shader的每一行代码。但是研究生期间因为毕业论文中需要用到shader作实验。至此我入了shader的门.....
索性有图形学和数学基础,觉得shader没有那般恐怖,但也是很抽象的一门语言,入门过程中我首先将iq的视频以及文章和案例都做了深刻的研究。再次期间我又发现对于图形学和几何数学、线性代数某些知识点模糊不清,我又重新研读《虎书》、《三蓝一棕》《3D数学》。当然shader我最最最开始也是研读的opengl glsl 官方文档,如果大家英文不好,可以在网上寻找中文版本的书籍。后面我在shadertpy和shader box网站上寻找各种案例,当然很多大佬会有自己的网站,大家可以结合例子和他们文章去理解。这个过程其实很陡峭,但非常有成就感,对于很经典的例子,可以从修改参数慢慢去理解。
这个过程其实我用到了很多工具demos、graphtoy、code life....等等。YouTube上面还有很多大神分享关于shader的理解。这些丰富的资源足够你入门。
学习心得
也仅仅是入门,因为精通的话。我觉得连iq都觉得不现实吧。shader本质是数学,对于数学永远是一个不断前进的学科。shader只不过是数学的一种可视化的表现,操作pixel,展现出绚丽的效果。
目前我还是入门,可能在浅滩...但还在入门。不过目前也在自己的网站上不断分享经验。
学习建议
每个人情况不一样,造成每个人学习路径也不一样。
如果你对shader很有兴趣,并且想长足发展我建议还是从图形学、数学基础看起,后面可以由浅入深学习shader。
但如果你是工作者,你本身目标还是快速挣钱,shader只不过是你提高自身能力的一种技能,我建议从项目搞起,把项目中遇到的shader先理解清楚,到达一定储备,再逐渐去补充其他知识。
以上均为抛砖引玉,鄙人文字能力有限,不能完全表达自身所感。望见谅,如若有用之,可赞。