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)

相关推荐
晓13131 小时前
【Cocos Creator 3.x】篇——第四章 子系统
前端·javascript·游戏引擎
魔士于安2 小时前
Shader forge技术美术专用
游戏·unity·游戏引擎·贴图·技术美术·模型
想ai抽3 小时前
Spark Executor 因节点内存超限被杀的分析与应对
大数据·性能优化·spark
一锅炖出任易仙3 小时前
创梦汤锅学习日记day34
学习·游戏引擎
青春喂了后端4 小时前
Go Sidecar Status 性能优化
开发语言·性能优化·golang
Y学院4 小时前
C#游戏脚本开发全流程(Unity通用完整版)
游戏·unity·c#
不喝水就会渴4 小时前
HarmonyOS惰性加载性能优化技术详解(喵屿项目案例)
华为·性能优化·harmonyos
ellis19705 小时前
Lua的module和require
unity·lua
淡海水6 小时前
38-Hybrid生态-LeanCLR总览
unity·架构·c#·热更新·clr·hybrid·leanclr
郝学胜-神的一滴7 小时前
[简化版 GAMES 101] 计算机图形学 13:从光栅化到着色——赋予三维像素光影灵魂
c++·计算机视觉·unity·godot·图形渲染·opengl·unreal