为什么 mipmap 在这个 2.5D 场景中没有提升精灵性能?

问题描述

我遇到过很多高分辨率灌木丛的情况。

问题是,这些灌木的细节太高,因此会导致性能问题(部分原因是阴影)。一个平滑的解决方案可能是 mipmap,允许灌木在远离相机时变得较低分辨率。然而,这并没有像预期的那样奏效。

带有 mipmap 的场景(你可以看到远处的精灵是模糊的):

enter image description here

没有 mipmap 的场景:

enter image description here

这是性能差异。

enter image description here

使用 mipmap

enter image description here

没有 mipmap

enter image description here

为什么没有性能提升?

解决方法

您的 mipmap 不能解决您的性能问题。它们只会降低更远对象的纹理分辨率。性能差异是存在的,但不是您所期望的。

737 批处理是将大量绘制调用批处理在一起。

减少绘制调用并获得所需的性能提升 您有多种选择:

  • 减少三角形计数。您没有按照建议显示线框,但是您想要为您的草地做一个带有 2 个三角形的简单正方形,并像您一样使用基于 alpha 蒙版的纹理。
  • 使您的材质更高效:例如不要使用 2 面渲染,如果使用着色器图,则减少处理量。
  • 使它们成为静态的草物体并烘焙您的照明。由于渲染器需要 1 次网格绘制调用和 1 次灯光绘制调用,这将大大减少您的绘制调用。
  • 此外,您还可以将多个草对象分组到集群中。使用一种材料为它们制作纹理,因为每种材料都会影响您的表现。

要了解绘制调用和批处理之间的区别,请阅读以下内容:

https://support.unity.com/hc/en-us/articles/207061413-Why-are-my-batches-draw-calls-so-high-What-does-that-mean-

关于 polycount 的非常有用的论坛帖子,Joe Wilson 分享了一些知识。值得一读: https://polycount.com/discussion/206507/the-cost-of-a-texture-draw-call-quantity-vs-resolution