Unity性能优化 --- 减少OverDraw

OverDraw(过度绘制)就是GPU多次重复绘制同一像素点的操作。在Unity 中渲染的图像由数百万个像素组成,如果这些像素被多次绘制,那么会造成GPU极大的性能损耗。例如下图多个物体叠加放在一起

注:棕色越深的地方,过度绘制的次数越多。

怎样减少OverDraw?

1.减少不透明的物体绘制。

1.1由于几何体效率低下导致的过度绘制和自身相交的几何体因为在同一绘制调用中无法保证像素渲染顺序导致的过度绘制。

将几何体拆分成小物体,以便Unity的物体渲染排序。

1.2减少有相互遮挡物体的批处理使用。

2.减少透明物体的过度绘制。

2.1减少渲染的透明图层的数量,

2.2减少透明几何体占用的屏幕大小,

缩小透明对象的大小;从Sprite中删除100%透明像素;制作一个紧密网格,减少完全透明区域(如何做?可参考这篇文章 Unity中如何修改Sprite的渲染网格-CSDN博客)。

在使用紧密网格后,即使外边框靠近也不会发生过度绘制。

3.尽量减少粒子系统的透明图层。

4.尽量不使用全屏的后处理效果。

5.在移动端使用加法混合代替alpha混合。

6.在打开全屏UI窗口时关闭3D渲染的相机。

参考链接:

Unity 过度绘制:提高游戏的 GPU 性能 |TheGamedev.Guru 游戏开发大师

How to create custom sprite meshes to reduce overdraw, tri-count and improve performance in Unity 2D (youtube.com)

相关推荐
Kisang.5 小时前
【HarmonyOS】性能优化——组件的封装与复用
华为·性能优化·typescript·harmonyos·鸿蒙
tealcwu8 小时前
【Unity小技巧】如何将3D场景转换成2D场景
3d·unity·游戏引擎
桦说编程10 小时前
如果让我从头再来学习并发编程
java·设计模式·性能优化
全栈陈序员10 小时前
用Rust和Bevy打造2D平台游戏原型
开发语言·rust·游戏引擎·游戏程序
鹿野素材屋12 小时前
Unity模型中人形角色的嘴巴一直开着怎么办
unity
世洋Blog16 小时前
Unity面经-List底层原理、如何基于数组、如何扩容、List存储泛型、List有关在内存中的结构
unity·面试·c#·list
n***293217 小时前
前端动画性能优化,减少重绘重排
前端·性能优化
dblens 数据库管理和开发工具18 小时前
PostgreSQL物化视图详解:用空间换时间的性能优化利器
数据库·postgresql·性能优化
MichaelIp19 小时前
Python同步vs异步性能对比实验-2
开发语言·python·性能优化·可用性测试
奔跑吧邓邓子19 小时前
Server性能优化实战:突破性能瓶颈,释放强大算力
性能优化·实战·server·突破性能瓶颈