Unity渲染优化分析

在游戏制作过程中,需要对游戏不断进行优化,优化可以分为几个方面,比如对美术素材进行优化,对渲染进行优化,对算法进行优化,等等。这次我只分享一下我对渲染优化的一些理解。

渲染优化其实就是对GPU的优化,常使用unity的同学肯定对DrawCall,批处理,这两个个词不陌生,而且都知道优化渲染就是降低DrawCall,增加批处理。那如何降低DrawCall和提升批处理呢,为什么要这么做呢?

首先介绍一下渲染的大体流程,首先cpu会先把游戏中目前用到的所有的模型和贴图以及材质球着色器等等,全部发送给GPU放置到显存里。当需要渲染的时候,一般会出现下面的对话

CPU:用A材质渲染染一下地面
GPU:渲染完了
CPU:用B材质渲染染一下木箱
GPU:渲染完了
CPU:用C材质渲染染一下草坪
GPU:渲染完了
GPU:快点还要渲染啥
CPU:你等一下,我先想想
**

可以看出一般情况下GPU的效率会比CPU的效率高很多,就造成了GPU一直在等CPU下达渲染命令,但是CPU忙的不可开交,这就是我们大多数情况下遇到的渲染瓶颈。

我们知道了渲染效率低原来是CPU的原因,而不是我们的显卡不够好,那怎么解决呢。首先说一下CPU每次高数GPU要如何渲染的时候就是一个DrawCall,上面的对话可以看出使用了3个DrawCall,那我们能不能降低一下DrawCall呢?如果CPU可以这样

CPU:用A材质渲染染一下地面,草坪,和石头
GPU:稍等
CPU:用B材质渲染染一下木箱,木棍,和木门
GPU:好的
CPU:你先渲染我忙别的去

这种对话CPU对GPU说了两次话,但是每次让GPU渲染个3个模型,这其实就是使用2个DrawCall,批处理为3。而之前的是3个DrawCall,并且批处理为1.

这样可以看出:我们尽可能的让一次DrawCall能表达更多的信息,是解决渲染瓶颈的好方法。那么如何让表达的信息更丰富呢,我们先看一下第二次的对话:用A材质渲染一下地面,草坪,和石头

说明地面,草坪,和石头都使用了同一个A材质,也就是说他们3个使用了一样的渲染状态。木箱,木棍,和木门也是一样的,都是用B材质,也就是另外一种渲染状态。那也就是说我们可以尽量让多的模型共用一个渲染状态也就是一个材质球就可以提升渲染效率了。

是这样的,这就是为什么程序经常说要减少材质球的数量。但是其实降低降低材质球的数量并不是一定会降低DrawCall,比如遇到下面这种情况

1.png在这里插入图片描述

方块和五角形都是用了同一种渲染状态,但是他们之间被绿色的圆形分割开了。CPU就必须调用3个DrawCall,1渲染红色方块,2渲染绿色圆,3渲染红色五角形。因为他们有叠压关系,但是如果改变一下

2.png在这里插入图片描述

这样就可以批处理了:1.渲染红色方块,和红色五角形2.渲染绿色圆。

渲染优化的原理简单的讲就这么多,那我们在游戏制作中如何对渲染进行优化呢

1.降低材质数量(为降低DrawCall做准备,降低CPU的压力)

2.合理制作场景(为可批处理创造环境,降低CPU的压力)

3.为不动的物体设置静态(为可批处理创造环境,降低CPU的压力)

4.减少模型顶点数量和骨骼数量(降低GPU的运算压力)

5.在画面允许的情况下使用较小的贴图(降低显存的压力和GPU的运算压力)

转载:http://www.tuansbook.com/newsinfo.php?id=170

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值