为什么 mipmap 不能提升 2.5D 场景中的精灵性能?

Why are mipmaps not boosting sprite performance in this 2.5D scenario?

我有很多高分辨率灌木丛。

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

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

没有 mipmap 的场景:

这就是性能差异。

使用 mipmaps

没有 mipmaps

为什么没有性能提升?

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

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

减少绘制调用并获得所需的性能提升 你有几个选择:

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

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

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

关于 polycount 的信息非常丰富的论坛 post,Joe Wilson 在其中分享了一些知识。值得一读: https://polycount.com/discussion/206507/the-cost-of-a-texture-draw-call-quantity-vs-resolution