作为一名从业六年的游戏开发人员,搭过框架也做过优化。但是对图形渲染这块不了解。而游戏中酷炫逼真的效果又是由shader来控制实现的。所以想要提高自己技能就必须啃下shader这个硬骨头。

以下提供本人学习shader的心路历程。由于每个人学习方式不同,所以下面建议不适应所有人。学习过程如下:
1.作为一名客户端开发人员,首先要会应用shader做出上级分配的任务才是优先级最高的事情。几乎所有游戏引擎都提供了shader的上层封装,这也就更方便我们应用shader了。如:unity引擎中提供了unity shader,它是在底层图形api接口上做的一层封装,我们可以手写unity shader或者用unity的shader graph来拖拽实现想要的效果。unity shader的学习可以参考《Unity Shader入门精要》这本书,也可以参考本人unity shader专栏,里面是对《Unity Shader入门精要》学习的总结。

2.会应用shader后就需要去了解底层的实现了。虽然引擎帮我们封装了接口,也提供了工具去写引擎定制的shader来帮我们实现想要的效果。但是作为unity长期用户来说,unity的bug还真不少,谁知道某一天会不会在渲染这个给你来一个bug,虽然引擎最终会修复,但也是漫长的等待。此时就必须对引擎的渲染底层有所了解,这样出问题了知道是哪里的问题并立马进行修复或者给出替代解决方案,这一点很重要。

3.底层api选择:现在市面上主要有苹果公司的metal,微软公司的direct 3d以及跨平台的opengl。metal主要是针对苹果的a系列处理器做了优化,在苹果产品上的确性能很高。direct 3d主要在微软产品上应用,而且曾经跟opengl有场你死我活的api之争。但是很多开发者和硬件厂商还是选择支持opengl,就因为它的跨平台和高性能的特性。所以毫无悬念,本人这里也是选择opengl作为底层图形api学习的标准。

4.opengl的学习资料:首先要了解opengl的发展历程,这个https://www.cnblogs.com/George1994/p/6418013.html链接中记录了大部分的opengl版本变化,最新的opengl已经发布到4.6了,详细的版本信息可以参照opengl官网。现在市面上比较受欢迎的书籍就是《OpenGL超级宝典(中文第5版3.3或者英文第七版4.5)》和《OpenGL编程指南(中文第九版4.5)》。建议先学习opengl超级宝典第五版,虽然现在opengl已经到最新的4.6了,而超级宝典第五版里面只是到3.3,但是并没有关系,因为3.3到4.6之间的核心架构都没变,只是引进了一些新的功能以及改善了某些功能的实现而已。而且书中细节讲解的很清晰,还有大量的例子来佐证,非常适合opengl初学者。当看完超级宝典第五版后建议再学习下opengl编程指南第九版,该书针对opengl4.5版本,不仅引入了很多有意思和高大上的技能讲解,可以继续更深层次学习3.3往后的版本技能。还可以当做api参考书,无疑是opengl界的新华字典。

5.开始学习之旅啦!!!我会建立两个专栏,分别是opengl超级宝典第五版和opengl编程指南第九版。里面会总结学习的心得。有兴趣的朋友可以关注下。专栏会在周末空闲时间不定期更新,虽然历程有些漫长,但是静下心来慢慢撸,总会撸完的。

Shader学习建议相关推荐

  1. 《Unity Shader入门精要》学习笔记第5章 开始Unity Shader学习之旅

    本文章用于帮助自己学习,因此只记录一些个人认为比较重要或者还不够熟悉的内容. 原作者:http://blog.csdn.net/candycat1992/article/ 第五章 开始Unity Sh ...

  2. 如何零基础学习python语言_零基础如何入门Python语言?有哪些学习建议?

    众所周知,Python目前是最受欢迎的编程语言之一,尤其是对于零基础的初学者来说,Python语言更是十分的友好.因此,不少初学者常常会有这样一个共同的疑惑,零基础如何入门Python语言?本文就来给 ...

  3. Java学习从入门到精通的学习建议

    想要学好java技术,首先打好基础很重要,不论学什么基础都是重中之重,学习Java更是如此.如:基础语法.核心类库.面向对象编程.异常.集合.IO流等基础如果学不好,那么后边更深入的语法也不容易学会. ...

  4. GitHub万星的中文机器学习资源:路线图、视频、电子书、学习建议全在这

    本文经AI新媒体量子位(公众号ID:qbitai )授权转载,转载请联系出处 本文多资源,建议阅读6分钟. 本文为你推荐名叫AI Learning的GitHub资源,汇集了30多名贡献者的集体智慧. ...

  5. 零基础学python语言_零基础如何入门Python语言?有哪些学习建议?

    众所周知,Python目前是最受欢迎的编程语言之一,尤其是对于零基础的初学者来说,Python语言更是十分的友好.因此,不少初学者常常会有这样一个共同的疑惑,零基础如何入门Python语言?本文就来给 ...

  6. 嵌入式系统的知识体系、学习误区及学习建议

    嵌入式系统的知识体系.学习误区及学习建议 1.嵌入式系统的知识体系     嵌入式系统的应用范围可以粗略分为两大类:电子系统的智能化(工业控制.现代农业.家用电器.汽车电子.测控系统.数据采集等),计 ...

  7. 学习opencv3中文版_给视觉组新生的一点学习建议

    如果说机械组是把机器人做出来电控组让机器人动起来那么视觉组就是让机器人智能化完成一个合格的机器人三者缺一不可今天就让我们来看看视觉组师兄推荐的学习建议吧!1语言基础   野狼队视觉组目前使用的主要语言 ...

  8. java程序员必看经典书单,以及各个阶段学习建议

    最近,部分读者一直希望我给大家推荐java程序员必读书籍,以及java程序员每个阶段的学习建议. 今天,先给大家推荐1.0版本,后面再不断完善程序员必读书籍2.0版本. 希望,你早日成为牛逼的程序员. ...

  9. 陈小玉:算法学习建议

    算法学习建议 知识在于积累,学习需要耐力.学习就像挖金矿,或许一开始毫无头绪,但转个角度.换换工具,时间久了总会找到一个缝隙.成功就是你比别人多走了一段路,或许恰恰是那么一小步. 第一个建议:多角度, ...

最新文章

  1. zookeeper集群环境搭建
  2. linux下tomcat服务的相关命令
  3. 地球自转减速影响世界时 格林尼治时间或成历史
  4. C++中的类模板详细讲述
  5. CryEngine3 引擎非商业用途将免费
  6. ls -l的功能是什么linux,Ls - Linux Wiki
  7. 讣告 | ACL终身成就奖得主Aravind Joshi去世
  8. 【知识图谱】BERT meet KG 第二弹:新训练方式,新问题视角
  9. Apache Camel系列(3)----Redis组件
  10. cisco 以太通道(端口聚合)配置样例
  11. c 语言病毒源码大全,易语言病毒源码大全
  12. 系统篇: fstab 文件详解
  13. 实现python源代码加密
  14. 移动硬盘插入电脑后不显示盘符
  15. linux ipv6 前缀 定义,IPv6 地址前缀
  16. fackbook登录获取大头像
  17. TIME_WAIT和CLOSE_WAIT的区别
  18. API接口函数的应用
  19. 今年最后一场官方活动
  20. SecureCRT 注册码

热门文章

  1. 02335网络操作系统
  2. 使用ESP32连接腾讯云实现远程控制方法
  3. 【C语言】计算一元二次方程的解
  4. 【团体天梯赛/PTA】7-34 福到了 (15 分)
  5. 如何在PDF中插入另一个PDF文件的页面
  6. Google Research等机构提出新的AI算法以了解人脑网络中的电刺激效应
  7. java中pack什么意思_java – .pack()做什么?
  8. 转置卷积和膨胀卷积详细讲解
  9. Codeforces Round #439 (Div. 2) E. The Untended Antiquity(二维BIT)
  10. C# Excel 新建工作表,新增工作表,更改工作表的名字