宝塔window怎么做网站,上海企业名录大全官网,网页制作的目的,网页游戏排行榜在线玩unity动态批处理 动态批处理要求和兼容性渲染管线兼容性 使用动态批处理网格的动态批处理限制动态生成几何体的动态批处理 动态批处理
动态批处理是一种绘制调用批处理方法#xff0c;用于批处理移动的 GameObjects 以减少绘制调用。动态批处理在处理网格和 Unity 在运行时动… unity动态批处理 动态批处理要求和兼容性渲染管线兼容性 使用动态批处理网格的动态批处理限制动态生成几何体的动态批处理 动态批处理
动态批处理是一种绘制调用批处理方法用于批处理移动的 GameObjects 以减少绘制调用。动态批处理在处理网格和 Unity 在运行时动态生成的几何体如粒子系统时有所不同。有关网格和动态几何体之间的内部差异的信息请参阅网格的动态批处理和动态生成几何体的动态批处理。
注意网格的动态批处理是为了优化旧低端设备的性能而设计的。在现代消费硬件上动态批处理在 CPU 上的工作量可能超过绘制调用的开销这会对性能产生负面影响。有关更多信息请参阅网格的动态批处理。
要求和兼容性
该部分包含有关动态批处理的渲染管线兼容性的信息。
渲染管线兼容性
功能内置渲染管线通用渲染管线 (URP)高清渲染管线 (HDRP)自定义可编程渲染管线 (SRP)动态批处理是是否是
使用动态批处理
Unity 始终对动态几何体如粒子系统使用动态批处理。
要对网格使用动态批处理
转到 Edit Project Settings Player。在 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 的缩放为 -1Unity 不能将它们批处理在一起。如果 GameObjects 使用不同的材质实例Unity 不能将它们批处理在一起即使它们本质上相同。唯一的例外是阴影投射器渲染。使用光照贴图的 GameObjects 具有额外的渲染参数。这意味着如果你希望批处理光照贴图的 GameObjects它们必须指向相同的光照贴图位置。对于使用多通道着色器的 GameObjectsUnity 不能完全应用动态批处理。几乎所有 Unity 着色器在前向渲染中支持多个灯光。为了实现这一点它们为每个灯光处理额外的渲染通道。Unity 只批处理第一个渲染通道不能批处理额外的逐像素灯光的绘制调用。传统延迟渲染路径不支持动态批处理因为它在两个渲染通道中绘制 GameObjects。第一个通道是光照预通道第二个通道渲染 GameObjects。
动态生成几何体的动态批处理
以下渲染器动态生成几何体例如粒子和线条可以使用动态批处理进行优化
内置粒子系统线条渲染器路径渲染器
动态生成几何体的动态批处理与网格的动态批处理工作方式不同
对于每个渲染器Unity 将所有可以动态批处理的内容构建为一个大的顶点缓冲区。渲染器设置批次的材质状态。然后 Unity 将顶点缓冲区绑定到 GPU。对于批次中的每个渲染器Unity 更新顶点缓冲区中的偏移并提交新的绘制调用。
这种方法类似于 Unity 为静态批处理提交绘制调用的方式。