Unity渲染优化简介

该篇文章主要是以总结为主,不会太过详细讲解技术的实现以及原理,如果想要了解原理或者该技术如何实现的可以自行搜索该技术网上会有很多优秀的文章供大家学习

渲染优化对于入门Unity开发者来说用处不大,因为目前技术水平阶段还达不到让我们去优化项目,优化渲染,那为什么我们还要去了解呢?主要是在面试的时候技术官会问你这方面的问题,如果一问三不知那岂不是会减少印象分,多了解一些技术也是好的(真就是面试造航母,实际工作就是打螺母。。。)好了废话不多说。

一.Lod技术:使用LOD技术可以实现根据不同的距离修改不同的模型,例如在离摄像机远处的物体,就可以不用精细多面的模型,而用低面数的模型;这样就可以减少GPU渲染的负担

二.Mip Map技术:用于2D图片的远近渲染显示不同清晰度,其实可以理解为2D图片的Lod技术

三.遮挡剔除:设置了遮挡剔除的物体可以实现在只显示在摄像机能够看到的物体,在完全被遮挡的物体和摄像机以外的物体都不会显示,也就是摄像机看不见的物体都会被unity自动隐藏掉

四.降低DrawCall:

        (1)什么是DrawCall:DrawCall就是当一个物体需要渲染在平面上时,该过程是CPU发送命令给GPU,该命令就是CPU计算处理的渲染数据,让GPU渲染出来。也就是相当于CPU是老大,GPU是小弟,每次画面需要渲染的时候都是需要老大告诉小弟,需要渲染什么图像,小弟只管渲染,这个命令我们就叫做DrawCall

        (2)DrawCall的影响:DrawCall的数量多了,就会造成CPU花费大量时间在准备DrawCall上,就会影响性能;也就是CPU除了需要告诉GPU需要渲染什么以外它还有其他的工作,又因为CPU生成DrawCall会比较消耗性能,如果CPU的性能全部都拿去生成DrawCall了,那是不是就会影响整体的游戏性能

        (3)DrawCall的数量:DrawCall的数量是和unity中渲染批处理一样的,一个渲染批次就会有一次DrawCall,因此减少渲染批次就可以直接降低DrawCall;在Unity的States状态栏中有个Bitchs,渲染批次,一个宣布渲染批次也就是一次DrawCall,因此如果渲染批次越多DrawCall就越多

        (4)减少DrawCall的方法:

                A.打图集:打图集是对2D来说的,是什么意思呢,就是在渲染2D画面中时,2D画面是由许多图片组成的,因为每张图片是独立的,那么每张图片就都是一个独立的渲染批次,这样的话DrawCall就会由很多,因此就采用打图集的办法,将多张独立的图片打到一个图集里面,这样就只需要一个渲染批次就可以将这些图片都渲染处理,也就大大降低了DrawCall(关于怎么打图集可以自行百度,以下图片是取自别人课程中的图片)

这里会涉及一个Drawcall会被Text文字组件打断的知识点,需要注意

                B.合批技术:合批技术就是对于3D来讲的,优化的思路和2D也很像,也就是因为3D独立的模型多了,那么Drawcall也就会多,我们就需要想办法将独立的3D模型合并到一个批次这不就减少了Drawcall了吗。合批技术的实现有大概以下四点:1.美术合批,2.静态合批,3.动态合批,4.Instancing合批

1.美术合批

2.静态合批

3.动态合批

4.GPU Instancing的合批:

五.减少实时光照渲染和实时阴影:减少实时光照和实时阴影就可以减少CPU的实时计算所带来的消耗,在一些地方可以改为静态光照渲染和静态阴影

猜你喜欢

转载自blog.csdn.net/qq_62947569/article/details/135037392