Unity 图形渲染知识三大块
众所周知图形渲染是一个庞大而复杂的知识体系,让很多刚接触的同学望而却步,造成了学习门槛比较高的现象。本篇文章当然不能解决轻松学习的问题,学习还是得一点一滴脚踏实地的学,写这个文章主要还是想帮助想学习的同学脑袋里建立一套框架,从而对后面的学习有所帮助。想要学好图形学,要了解很多的基础知识,比如光学,数学,线性代数,微积分,计算机相关知识等,这些都不是我想表达的重点,之后有机会再聊。
那我们从哪几方面来开始概况总结呢?
想要学好图形渲染,很多人一想到的就是渲染管线,说的没错,但不全面,我总结为三个方面:渲染模型、渲染管线、GPU架构。
一、渲染模型
渲染模型为什么要单独提出来呢,因为它决定了你渲染出来的东西是什么样子的。这就好比厨房给准备好了,但要渲染出来什么东西,就得看菜单了,这个渲染模型就像是菜单一样。
那这个菜单具体指的是什么呢?
1、标准光照模型 如 兰伯特模型,Blinn-Phong模型
2、BRDF模型
3、BSDF模型
4、次表面散射模型
等等。
不同的模型应用场景不同,渲染出来的效果也不同,需要的代价也不同。
我们如何用好、用对、那就不得不对其进行研究学习。就好比厨师不能只会炒土豆片,还得会鱼香肉丝,烧茄子等。
二、渲染管线
学习过的同学对渲染管线是再熟悉不过了,如图所示:
对于渲染管线的理解,我们还是拿厨房来举例子:
一道菜从原材料到上桌需要经过下面这些步骤
采购 -> 洗菜 ->切菜 -> 加调料 -> 翻炒 -> 成品
这就非常像我们讲的渲染管线,图形从无到有也要经过上图的步骤。我们需要弄清楚每个步骤才知道
1、怎么去控制它。 (土豆切几个,形状切成什么样,大小如何)
2、出问题了怎么查找它 (菜没熟是块切大了吗,味道太咸是盐加多了吗)
3、以及怎么优化它。(土豆切成合适的形状、盐适量)
上面的例子虽然牵强,但能增强我们对渲染管线的理解,同时体现了管线对于我们学习的重要性
三、GPU架构
第三方面就想聊聊关于GPU架构方面的事情了,我为什么觉得它也要单独提出来讲呢
还是拿炒菜来举例,炒菜你可以在饭店炒,也可以大街上炒。
在饭店炒你不需要考虑城管来找你的问题,你可以安安心心的炒,灶台你可以弄的宽敞些,洗菜池子大些,再配上油烟机。
在大街炒你就不要那么多家伙事,一个煤气罐,和一口锅就行了,来了城管你就跑。
那同样的道理,PC端你不需要考虑功耗的问题,放到移动端就不行了,功耗是移动端必须要考虑的问题,玩家玩了2分钟游戏就关机了肯定是要骂娘的。
所以对GPU架构的理解才能帮助我们
1、考虑如何优化以及怎么优化
2、在我们脑子里形成清晰的数据走向,加深对图形渲染的理解,而不是死记硬背一些概念。
3、理解Unity提供的一些接口的作用,如图
就是由于移动端GPU架构的原因,在unity里面对rendertexture的使用也特别说明了一下,当不再使用这个RenderTexture之前,调用一次Discard()可以在某些移动设备上提高性能。
以上就是我认为比较重要的三大块,相信有了这种框架性思维对学习一定大有益处,感谢关注。
参考资料,大家可以随时学习:
1、无我:GPU渲染架构-IMR & TBR & TBDR
2、opengl渲染管线 不能再详细了
3、OpenGL Insights 阅读有感 - Tile Based架构下的性能调校 翻译
4、GPU渲染管线之旅_空空的司马的博客-CSDN博客
5、针对移动端TBDR架构GPU特性的渲染优化_leonwei的博客-CSDN博客
6、深入GPU硬件架构及运行机制 - 0向往0 - 博客园 最好把光照系统也加上 我觉得光照系统归属于渲染模型一类,比如BRDF模型 并不是[尴尬] 你说的光照系统是指前向渲染、延迟渲染以及全局光照(IBL,光线追踪,路径追踪等)这些东西吧,仔细想想这么大个模块好像确实应该单独分个类出来,感谢提议
页:
[1]