Unity3d 为什么mipmaps在这个2.5D场景中不能提高sprite的性能?

Unity3d 为什么mipmaps在这个2.5D场景中不能提高sprite的性能?,unity3d,rendering,textures,sprite,mipmaps,Unity3d,Rendering,Textures,Sprite,Mipmaps,我有一种情况,我有很多高分辨率的灌木丛 问题是,这些灌木丛的细节太高,因此会导致性能问题(部分原因是阴影)。一个平滑的解决方案可能是mipmap,当离相机更远时,灌木丛的分辨率会变得更低。然而,这并没有如预期的那样起作用 具有mipmaps的场景(如您所见,远处的精灵模糊): 没有mipmap的场景: 这就是性能差异。 使用mipmap 没有mipmap 为什么性能没有提高?您的mipmap不是解决性能问题的方案。它们只会进一步降低对象的纹理分辨率。性能上的差异是存在的,但不是您所期望

我有一种情况,我有很多高分辨率的灌木丛

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

具有mipmaps的场景(如您所见,远处的精灵模糊):

没有mipmap的场景:

这就是性能差异。

使用mipmap

没有mipmap


为什么性能没有提高?

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

737批处理是许多批处理在一起的draw调用

减少抽签调用并获得所需的性能提升 您有几个选择:

  • 减少三角形计数。您没有按照建议显示线框,但是您希望对草地执行的操作是使用一个带有2个三角形的简单正方形,并使用基于alpha遮罩的纹理,就像您已经做的那样
  • 使材质更高效:例如,不要使用双面渲染,如果使用着色器图形,请减少处理量
  • 使它们成为静止的草对象并烘焙照明。由于渲染器需要1个网格绘制调用和1个灯光绘制调用,这将大大减少绘制调用
  • 此外,还可以将多个草对象分组为簇。使用一种材质对其进行纹理处理,因为每种材质也会影响您的性能
要了解绘制调用和批处理之间的区别,请阅读以下内容:

在polycount论坛上,Joe Wilson分享了一些知识,内容非常丰富。值得一读:

对不起,我有一个错误,我看不到人们发布的任何图像,所以是RAM没有减少,FPS或CPU。你说的是我没有列出的其他东西吗?FPS没有增加。你能包括你的抽签呼叫统计吗?检查此链接:此外,您可能希望包括线框的屏幕截图、屏幕上的当前多边形计数、每个灌木的纹理分辨率、是否有活动动画等信息。信息太少,无法真正告诉您任何事情。Mip地图似乎不是你的解决方案。@Pfinnn我为场景添加了统计数据。事实上完全一样。(FPS实际上在90左右徘徊,但在我拍摄屏幕截图的那一刻它就下降了。但它们都在90左右)我最终选择了LOD精灵,这样精灵渲染器创建的顶点就更少了。我应该提到这些草对象不能是静态的,因为它们是SpriteRenders,不支持静态批处理。