当前位置: 首页 > article >正文

unity动态批处理

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.kler.cn/news/353739.html

相关文章:

  • Spring Boot知识管理系统:安全与合规性
  • linux红帽基础命令
  • 【力扣热题100】3194. 最小元素和最大元素的最小平均值【Java】
  • mysql--数据表的操作
  • AI Weekly#1:过去一周重要的AI资讯汇总
  • 基于知识图谱的宁夏非遗问答系统
  • URL路径以及Tomcat本身引入的jar包会导致的 SpringMVC项目 404问题、Tomcat调试日志的开启及总结
  • Spring Boot: 构建高效中小型医院网站
  • C++初阶学习第七弹——string的模拟实现
  • 基于STM32的节能家庭管家系统设计
  • Spring AI Java程序员的AI之Spring AI(一)
  • 看《米小圈日记魔法》突破写作困境一点也不难!
  • 小红的行列式构造
  • Java微信支付接入(10)API V3 申请退款API
  • 深度学习500问——Chapter17:模型压缩及移动端部署(4)
  • 【环境搭建】远程服务器搭建ElasticSearch
  • python取字典的任意一项的value
  • pytorh学习笔记——手写数字识别mnist
  • Linux 命令—— ping、telnet、curl、wget(网络连接相关命令)
  • 改变TikTok零播放情况的6个解决方法