unity动态批处理

news/2024/10/18 1:56:50/

unity动态批处理

      • 动态批处理
      • 要求和兼容性
        • 渲染管线兼容性
      • 使用动态批处理
      • 网格的动态批处理
      • 限制
      • 动态生成几何体的动态批处理

动态批处理

动态批处理是一种绘制调用批处理方法,用于批处理移动的 GameObjects 以减少绘制调用。动态批处理在处理网格和 Unity 在运行时动态生成的几何体(如粒子系统)时有所不同。有关网格和动态几何体之间的内部差异的信息,请参阅网格的动态批处理和动态生成几何体的动态批处理。

注意:网格的动态批处理是为了优化旧低端设备的性能而设计的。在现代消费硬件上,动态批处理在 CPU 上的工作量可能超过绘制调用的开销,这会对性能产生负面影响。有关更多信息,请参阅网格的动态批处理。

要求和兼容性

该部分包含有关动态批处理的渲染管线兼容性的信息。

渲染管线兼容性
功能内置渲染管线通用渲染管线 (URP)高清渲染管线 (HDRP)自定义可编程渲染管线 (SRP)
动态批处理

使用动态批处理

Unity 始终对动态几何体(如粒子系统)使用动态批处理。

要对网格使用动态批处理:

  1. 转到 Edit > Project Settings > Player
  2. Other Settings 中启用 Dynamic Batching

Unity 会自动将符合常见使用信息中描述条件的移动网格批处理为同一个绘制调用。

网格的动态批处理

网格的动态批处理通过将所有顶点转换为世界空间在 CPU 上执行,而不是在 GPU 上。这意味着只有在变换工作所需资源低于执行绘制调用时,动态批处理才是优化。

绘制调用的资源需求依赖于许多因素,主要是图形 API。例如,在控制台或现代 API(如 Apple Metal)上,绘制调用的开销通常较低,动态批处理往往不会提高性能。要确定在你的应用中使用动态批处理是否有利,建议在启用和禁用动态批处理的情况下对应用进行性能分析。

Unity 可以对阴影投射器使用动态批处理,即使它们的材质不同,只要 Unity 需要的阴影传递材质值相同。例如,多个箱子可以使用具有不同纹理的材质。尽管材质资产不同,但对阴影投射器传递的差异无关紧要,Unity 可以在阴影渲染步骤中批处理箱子 GameObjects 的阴影。

限制

在以下场景中,Unity 无法使用动态批处理,或只能在有限程度上应用动态批处理:

  • Unity 不能对包含超过 900 个顶点属性和 300 个顶点的网格应用动态批处理。这是因为网格的动态批处理对每个顶点有开销。例如,如果你的着色器使用顶点位置、顶点法线和单个 UV,则 Unity 最多可以批处理 300 个顶点。但如果你的着色器使用顶点位置、顶点法线、UV0、UV1 和顶点切线,则 Unity 只能批处理 180 个顶点。
  • Unity 不能对在其 Transform 组件中包含镜像的 GameObjects 应用动态批处理。例如,如果一个 GameObject 的缩放为 1,另一个 GameObject 的缩放为 -1,Unity 不能将它们批处理在一起。
  • 如果 GameObjects 使用不同的材质实例,Unity 不能将它们批处理在一起,即使它们本质上相同。唯一的例外是阴影投射器渲染。
  • 使用光照贴图的 GameObjects 具有额外的渲染参数。这意味着如果你希望批处理光照贴图的 GameObjects,它们必须指向相同的光照贴图位置。
  • 对于使用多通道着色器的 GameObjects,Unity 不能完全应用动态批处理。
  • 几乎所有 Unity 着色器在前向渲染中支持多个灯光。为了实现这一点,它们为每个灯光处理额外的渲染通道。Unity 只批处理第一个渲染通道,不能批处理额外的逐像素灯光的绘制调用。
  • 传统延迟渲染路径不支持动态批处理,因为它在两个渲染通道中绘制 GameObjects。第一个通道是光照预通道,第二个通道渲染 GameObjects。

动态生成几何体的动态批处理

以下渲染器动态生成几何体,例如粒子和线条,可以使用动态批处理进行优化:

  • 内置粒子系统
  • 线条渲染器
  • 路径渲染器

动态生成几何体的动态批处理与网格的动态批处理工作方式不同:

  • 对于每个渲染器,Unity 将所有可以动态批处理的内容构建为一个大的顶点缓冲区。
  • 渲染器设置批次的材质状态。
  • 然后 Unity 将顶点缓冲区绑定到 GPU。
  • 对于批次中的每个渲染器,Unity 更新顶点缓冲区中的偏移并提交新的绘制调用。

这种方法类似于 Unity 为静态批处理提交绘制调用的方式。


http://www.ppmy.cn/news/1539872.html

相关文章

SpringBoot框架在购物推荐网站设计中的创新应用

3系统分析 3.1可行性分析 通过对本东大每日推购物推荐网站实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本东大每日推购物推荐网站采用JAVA作为开发语言&…

智能网联汽车安全隐患,如何化解?

0. 智能网联汽车安全问题如何才能解决?1. TARA 威胁分析与风险评估平台2. CSTP 智能网联汽车网络安全测试平台3. 智能网联汽车安全解决方案4. 车联网测试认证与培训解决方案5. 车联网网络安全实验室建设方案 0. 智能网联汽车安全问题如何才能解决? 智能…

双通道音频功率放大电路D2822M兼容TDA2822,全封装输出功率0.11W,用于音频产品

在某客户的便携式音频产品中,客户想在确保其产品的性能的前提下,为产品方案寻找一颗国产备份料。客户产品之前使用的是TDA2822,在了解客户的电路设计以及该产品的电气特性后,给客户寻找了一款可兼容相同电路设计使用的国产厂牌芯谷…

Caffeine Cache解析(一):接口设计与TinyLFU

Caffeine is a high performance Java caching library providing a near optimal hit rate. 自动加载value, 支持异步加载基于size的eviction:frequency and recency基于时间的过期策略:last access or last write异步更新valuekey支持weak referenceva…

AI+Xmind彻底解决你的思维导图

在写作领域、老师授课、产品经理等都会使用到思维导图,如果是一个个拖拉撰写太麻烦了。 本篇内容小索奇就教会大家利用AI结合Xmind制作思维导图。 先打开我们的AI软件 这里小索奇用ChatGPT(可以使用kimi,豆包等大模型都可以) P…

Linux 下安装最新版 MySQL

1. 下载和安装 MySQL 1.1 下载 Linux 版本 MySQL 压缩包 在 Linux 操作系统中下载 MySQL 比较简单,只需要运行一条命令就可以了。 命令 : wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz # 下载地址下载进度如…

高频面试手撕

手撕高频结构 前言,以下内容,都是博主在秋招面试中,遇到的面试手撕代码题目,包含常见的数据结构、多线程以及数据库连接池等。 ArrayList 实现了ArrayList的基本功能,包括随机访问和自动扩容。 添加元素时&#xff…

【Vue】Vue(八)Vue3.0 使用ref 和 reactive创建响应式数据

ref 创建:基本类型的响应式数据 **作用:**定义响应式变量。语法:let xxx ref(初始值)。**返回值:**一个RefImpl的实例对象,简称ref对象或ref,ref对象的value属性是响应式的。注意点: JS中操作…