首页 > 其他分享 >Unity性能优化-动态合批

Unity性能优化-动态合批

时间:2023-10-02 10:56:25浏览次数:32  
标签:合批 渲染 批处理 Unity 顶点 动态 优化

动态合批也叫动态批处理,是Unity的一种优化技术。

对移动的物体使用动态合批后,则Unity不会一个个绘制它们,而是把它们合并为一个批次(Batch),再由CPU把它们一次性提交给GPU进行处理,这样可以减少Draw Call带来的性能消耗,从而提高性能。

官方文档:https://docs.unity3d.com/cn/current/Manual/dynamic-batching.html

动态合批默认是由Unity自动完成。可以在Edit——Project Settings——Player——Other Settings——Dynamic Batching查看。默认Dynamic Batching是勾选的,当条件满足时,Unity会自动对使用了相同材质(Material)的物体进行动态合批。如果取消勾选,则不会进行动态合批。

即使勾选了Dynamic Batching,也必须同时满足以下条件,动态合批才会成功:
1、Unity不能对包含超过900个顶点属性和225个顶点的网格应用动态批处理。这是因为网格的动态批处理对每个顶点都有开销。例如,如果你的着色器使用顶点位置、顶点法线和单个UV,那么Unity最多可以批处理225个顶点。然而,如果你的着色器使用顶点位置、顶点法线、UV0、UV1和顶点切线,那么Unity只能批处理180个顶点。
2、如果GameObjects使用不同的材质实例,Unity就不能将它们批处理在一起,即使它们本质上是相同的。唯一的例外是阴影施法者的渲染。
3、带有光贴图的游戏对象有额外的渲染参数。这意味着,如果你想批处理光照贴图的游戏对象,它们必须指向相同的光照贴图位置。
4、Unity不能完全将动态批处理应用于使用多通道着色器的GameObjects。
几乎所有的Unity着色器都支持正向渲染中的多个光源。为了实现这一点,他们为每个光处理一个额外的渲染通道。Unity只批处理第一个渲染通道。它不能批处理额外的逐像素灯光的绘制调用。
遗留延迟渲染路径不支持动态批处理,因为它在两个渲染通道中绘制GameObjects。第一个通道是灯光预通道,第二个通道渲染GameObjects。

其中我们要注意的是,物体必须使用相同的材质,才有可能成功进行动态合批。

使用动态合批往往能减少CPU和GPU的开销,提升游戏性能,但同时也会占用一定的内存。

是否要开启动态合批,要根据自己的项目来定。可以尝试启用,在性能分析器中看看效果如果,如果效果好,再确定启用它。

标签:合批,渲染,批处理,Unity,顶点,动态,优化
From: https://www.cnblogs.com/zerobeyond/p/17739766.html

相关文章

  • [react性能优化]--防止react-re-render: Why Suspense and how ?
    近期内部项目基础项目依赖升级,之前使用的路由缓存不再适用,需要一个适配方案。而在此过程中reactre-render算是困扰了笔者很久。后来通过多方资料查找使用了freeze解决了此问题。本文主要论述reactre-render问题一般的解决方案和freeze在react内部的实现原理。react版本17.0.2......
  • 斜率优化学习笔记
    下面可能会用到一些叫上凸壳鸭下凸壳呀的名词,大家不用弄懂它的概念的说也不用望风而逃(我之前就望风而逃过(*/ω\*)),凸壳就简单理解成一个凸了一块的一段连线就好了。斜率优化有些地方不好用代数的语言刻画,比如下凸壳,比如凸包(凸包有的定义就直接写橡皮筋的比喻233333),以及为什么下凸......
  • Python笔记:控制流优化
    零值判断Python当中有个语法糖是可以直接对某个对象做空值判断:ifnums_arr: pass不同类型的数据对应什么样的bool值呢?我们可以有如下的判断:None、0、False、空列表、空元组、空字典、空集合等等都对应布尔值为假。其余的对应布尔值为真。但是现在问题来了,对于开发者自......
  • 【机器学习 | 数据预处理】 提升模型性能,优化特征表达:数据标准化和归一化的数值处理技
    ......
  • 2023年10月,红米(小米)note 8 pro 优化记
    看了红米的note13pro和note12turbo的参数和价格后,我决定下单买个note8pro的手机壳,确实有新手机的感觉了。我note8pro手机参数如下MIUI12.0.5内存是6G具体看下图经过优化调整后一般还剩3G内存,文件夹存了很多图标后也不再卡了优化步骤下载adbhttps://dl.google.co......
  • 斜率优化dp
    斜率优化dp【模板】任务安排机器上有n个需要处理的任务,它们构成了一个序列。这些任务被标号为1到n,因此序列的排列为1,2,3....n。这n个任务被分成若干批,每批包含相邻的若干任务。从时刻0开始,这些任务被分批加工,第i个任务单独完成所需的时间是T_i。在每批任务......
  • 搜索优化
    一、什么是剪枝     首先应当明确的是,“剪枝”的含义是什么。我们知道,搜索的进程可以看作是从树根出发,遍历一棵倒置的树——搜索树的过程。而所谓剪枝,顾名思义,就是通过某种判断,避免一些不必要的遍历过程,形象的说,就是剪去了搜索树中的某些“枝条”,故称剪枝。我们在编写搜......
  • 理解React页面渲染原理,如何优化React性能?
    ReactJSX转换成真实DOM过程当使用React编写应用程序时,可以使用JSX语法来描述用户界面的结构。JSX是一种类似于HTML的语法,但实际上它是一种JavaScript的扩展,用于定义React元素。React元素描述了我们想要在界面上看到的内容和结构。在运行React应用程序时,JSX会被转换成真实的DOM元素......
  • 笔记:VMware之性能优化
    目标:通过调整VMware设置,提高VMware中虚拟机性能版本:16.2.2build-19200509一、首选项针对所有虚拟机设置,对所有虚拟机都有效1.1设置路径:主页->编辑->首选项->更新软件更新,取消“启动时检查产品更新”,取消“根据需要检查软件组件”1.2设置路径:主页->编辑->首选项->反馈客......
  • 多重背包单调队列优化
    引用自:动态规划-背包问题(01背包、完全背包、多重背包)#include<cstdio>#include<algorithm>#include<cstring>usingnamespacestd;constintmaxn=100005;intn,m,cnt;intv[102],num[102],dp[maxn];structQueue{intpos,val;}q[maxn];intmain(){......