下载建设网站,视网站亏损了为什么还做,网店运营培训,网站备案掉了怎么办unity静态批处理 静态批处理要求和兼容性渲染管线兼容性 使用静态批处理在构建时进行静态批处理在构建时执行静态批处理的步骤#xff1a; 在运行时进行静态批处理性能影响 静态批处理
静态批处理是一种绘制调用批处理方法#xff0c;它将不移动的网格组合在一起#xff0c… unity静态批处理 静态批处理要求和兼容性渲染管线兼容性 使用静态批处理在构建时进行静态批处理在构建时执行静态批处理的步骤 在运行时进行静态批处理性能影响 静态批处理
静态批处理是一种绘制调用批处理方法它将不移动的网格组合在一起以减少绘制调用。它将组合后的网格转换为世界空间并为它们构建一个共享的顶点和索引缓冲区。然后对于可见的网格Unity 执行一系列简单的绘制调用几乎没有状态变化。静态批处理不会减少绘制调用的数量而是减少它们之间的渲染状态变化。
静态批处理比动态批处理更高效因为静态批处理不会在 CPU 上变换顶点。有关静态批处理的性能影响的更多信息请参阅性能影响。
要求和兼容性
该部分包含有关静态批处理的渲染管线兼容性的信息。
渲染管线兼容性
功能内置渲染管线通用渲染管线 (URP)高清渲染管线 (HDRP)自定义可编程渲染管线 (SRP)静态批处理是是是是
使用静态批处理
Unity 可以在构建时和运行时执行静态批处理。一般来说如果 GameObjects 在构建应用程序之前就存在于场景中建议使用编辑器在构建时批处理。如果在运行时创建 GameObjects 及其网格则使用运行时 API。
当使用运行时 API 时可以更改静态批次根对象的变换属性。这意味着你可以移动、旋转或缩放组成静态批次的整个网格组合但不能更改单个网格的变换属性。
要使用静态批处理GameObjects 必须符合静态批处理的条件。除了常见使用信息中描述的标准外还需要确保
GameObject 是活动的。GameObject 具有启用的 Mesh Filter 组件。Mesh Filter 组件引用一个 Mesh。Mesh 启用了读/写。Mesh 的顶点数大于 0。Mesh 没有与其他 Mesh 组合过。GameObject 具有启用的 Mesh Renderer 组件。Mesh Renderer 组件未使用具有 DisableBatching 标签设置为 true 的材质。
有关静态批处理性能影响的信息请参阅性能影响部分。
在构建时进行静态批处理
你可以在编辑器中启用构建时的静态批处理。
在构建时执行静态批处理的步骤
转到 Edit Project Settings Player。在 Other Settings 中启用 Static Batching。在场景视图或层级中选择要批处理的 GameObject并在检视器中查看。 提示可以同时选择多个 GameObject以便为它们全部启用静态批处理。 在 GameObject 的 Static Editor Flags 中启用 Batching Static。
如果满足常见使用信息中描述的条件Unity 将自动将指定的静态网格批处理为同一个绘制调用。
注意如果在构建时执行静态批处理Unity 在运行时不会使用任何 CPU 资源来生成静态批次的网格数据。
在运行时进行静态批处理
要在运行时批处理静态网格Unity 提供了 StaticBatchingUtility 类。静态方法 StaticBatchingUtility.Combine 将传入的 GameObjects 组合并为静态批处理做准备。这对于在运行时程序生成的网格特别有用。
与构建时的静态批处理不同运行时批处理不需要启用静态批处理玩家设置。有关如何使用此 API 的信息请参阅 StaticBatchingUtility。
性能影响
使用静态批处理需要额外的 CPU 内存来存储组合的几何体。如果多个 GameObject 使用相同的网格Unity 会为每个 GameObject 创建该网格的副本并将每个副本插入到组合网格中。这意味着相同的几何体在组合网格中会多次出现。无论你使用编辑器还是运行时 API 准备 GameObjects 进行静态批处理Unity 都会这样做。如果你希望保持较小的内存占用可能需要牺牲渲染性能并避免对某些 GameObjects 使用静态批处理。例如在密集森林环境中将树木标记为静态可能会对内存产生严重影响。
注意静态批处理对顶点数量有上限。每个静态批次最多可以包含 64000 个顶点。如果超过此数量Unity 会创建另一个批次。