欢迎光临散文网 会员登陆 & 注册

Unity_降低OverDraw提高性能

2023-02-08 15:51 作者:草莓101  | 我要投稿

1.OverDraw : 重复绘制,即在一个已存在像素的位置再次绘制其他像素0。

    Unity渲染时,渲染整个屏幕,该屏幕由数百万个像素组成。如果这些像素总被绘制了一次以上,那么就造成了OverDraw,导致GPU渲染压力增大。

    这种情况最常见于透明几何体,因为首先绘制不透明世界,然后逐次将其与半透明对象混合绘制。

2. 填充率: Fill Rate(填充率)是指显卡每帧或者说每秒能够渲染的像素数。在每帧绘制中,如果一个像素被反复绘制的次数越多,那么它占用的资源也必然更多。

    目前在移动设备上,FillRate 的压力主要来自半透明物体。因为多数情况下,半透明物体需要开启 Alpha Blend 且关闭 ZTest(深度测试)和 ZWrite(深度写入),同时如果我们绘制像 alpha=0 这种实际上不会产生效果的颜色上去,也同样有 Blend 操作,这是一种极大的浪费。

3、在Unity中,填充率并不能被直接统计到,但是我们可以通过查看来大致查看,但是Unity提供的查看OverDraw的视图其实是不太准确的,如果需要精确的查看的话,需要自己实现。

4、如何降低 OverDraw:

  (1)尽量减少 alpha = 0 的资源的使用,因为这种资源也会参与绘制,占用一定的GPU。

  (2)制作图片的时候,尽量使其排布紧凑,避免大面积透明。

  (3)避免无用对象及组件的过度使用。


黑色部分为透明部分,也会进行绘制


5、另外,游戏运行时导致手机发烫,主要就是CPU和GPU的占用率过高引起的,而填充率或者说是OverDraw过高,是导致GPU占用率过高的原因之一。

    减少overdraw,一般出现在渲染模式为透明的场景中。在场景【scene】下拉列表中选择overdraw就能看见,越亮的地方就是overdraw最多的部分。




Unity_降低OverDraw提高性能的评论 (共 条)

分享到微博请遵守国家法律