UE4实时渲染——几何结构渲染一

编程入门 行业动态 更新时间:2024-10-11 23:24:13

UE4实时渲染——<a href=https://www.elefans.com/category/jswz/34/1769510.html style=几何结构渲染一"/>

UE4实时渲染——几何结构渲染一

上一节:UE4实时渲染——渲染前和遮挡

上一节Draw线程准备好了一些对象,这些对象是当前一帧对象我们可见的,现在我们要使用GPU线程逐对象来渲染了。

首先我们要考虑的,就是渲染对象的顺序,我们不能单纯的像粉刷墙画那样,先刷上一层背景,再刷上面的图案,这会导致图案和背景重叠的部分,会重复绘制2次,如果在N多个对象的场景中,这种绘制无疑是性能的浪费。
我们的办法是依靠前期的深度(Z)通道,做一个深度测试,当渲染几何体时,他会先做一次预通道,确定下来其中一些像素点的值会被另一个模型的像素所覆盖,所以在渲染背景时,他就不会渲染这部分像素点。

预通道设置我们没办法插手太多,设置开启即可。

现在我们开始渲染具体的几何体,几何体会根据绘制调用(drawcall)来逐个渲染。

本节的接下来会重点介绍这个功能,绘制调用drawcall。

绘制调用(drawcall)是指渲染时采用的单一处理过程,可以理解为,有相同属性(材质等)的一组多边形或对象。
比如:
左右两图都有三种元素需要绘制,天空、地面、圆柱体,
区别是,左图只需要绘制5次,而右图由于第三个圆柱体是由两种材质构成,所以需要绘制6次。

每一种新的材质,便要一次新的绘制调用drawcall。
这也就能解释,drawcall会成为最大的性能损耗了,所以如果想在这里获得高性能,就要使绘制调用的次数合理化。
右图的实际渲染顺序如下:

引擎把它们按材质分类组合。我们可以看到三根柱子同材质部分,会依次渲染,然后再绘制其他材质的柱子、其他材质的对象。

有一个常用的命令“stat RHI”(rendering head interface渲染头接口),用来查看当前渲染三角形次数、渲染对象个数等信息。打开后如图:

Trangles drawn:616212
绘制了约62万个三角形

DrawPrimitive calls:1091
绘制调用drawcall了1091个对象

开启光照会对这个数值产生影响,当开启光照时,绘制调用对象和三角形数量会变多:
如下:
三角形数量变为80万左右,绘制调用次数变为1131个左右

但不要太纠结这个所显示的渲染数量,和你在UE4中看到的对象数量的差别,它背后的计算过程我们是看不到的,所以有出入属于正常。
但有个对照表,可以帮助我们明确是否渲染需要优化。

绘制调用次数状态
2000-3000正常
5000+过高
10000+可能会导致问题(取决于硬件以及你用这个做了什么)

一般来说,在可移动设备(手机、VR等)上的绘制调用次数,通常只有几百次最多一千次左右。

drawcall绘制调用,是极其影响性能的因素,每一次渲染器完成绘制调用时,它都要再次接收从渲染线程发来的命令,从而增加损耗。

drawcall绘制调用的影响,在很多情况下已经大于“多边形面数”了,之前我们总是关注渲染多边形有十几万个,其性能消耗之大,但现在我们应该多关注drawcall,因为它的性能消耗不会比渲染多边形要少。

我们可以举一个例子来说明这个性能消耗的比较,比如在PC计算机上,

文件夹及内容总大小复制耗时
文件夹中有1GB的1个文件1GB几分钟
文件夹中有1KB的1百万个文件1GB一两天

这和计算机复制文件的流程是有关的,它每次复制完都要再询问并获取下一个复制文件,同理,这也就是为什么drawcall绘制调用的性能消耗如此之大了,这和有多少三角形面片关系并不大。

再比如有这样的情况:
8600万相同材质三角形,3000次drawcall绘制调用,帧率为33fps

10万个不同材质三角形,44000次drawcall绘制调用,帧率为4fps

15万7000个相同材质三角形,186次drawcall绘制调用,帧率为236fps

这是因为第二幅图中,每一个三角形的材质都不同(如下图显示),如上面介绍的那样,这将会导致每绘制一种材质的三角形,就会调用一次drawcall绘制调用,也就是:渲染->停下->等待->渲染->停下->等待……

总结:
1、绘制调用drawcall对于损耗的影响,会比多边形数量更大。
2、根据你的设置和运行方式,5万三角形可能比5千万的运行效果还差。
3、绘制调用drawcall有基本损耗,所以把低面数模型改为超低面数模型可能不会有太大的改进。

下一节:UE4实时渲染——几何结构渲染二

更多推荐

UE4实时渲染——几何结构渲染一

本文发布于:2024-03-04 13:35:16,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1709399.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:几何   实时   结构

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!