GearVR / Unity的性能问题

时间:2016-08-20 02:49:30

标签: performance unity3d unity5 virtual-reality gear-vr

我的GearVR应用程序(在Unity 5.4上开发)出现了性能问题,所以我决定做一个小实验并设置最简单的场景来研究性能:

  • 一个静态平面
  • 一个静态立方体
  • 两者使用相同的材​​质:具有8X8单色纹理的移动无照明着色器
  • 一个烘焙定向灯
  • 默认最快质量设置
  • 默认播放器设置保存启用VR并启用多线程渲染

在我的电脑上,当我查看剖析器时,我得到以下资料:

PC profile profile

关于您的期望:接近4000 FPS。

然而,当我构建完全相同的场景并在我的Galaxy S6上运行它(使用ETC2 GLES 3.0纹理压缩)时,我得到了这个配置文件:

enter image description here

现在已降至约60FPS。 WTF?当我进一步了解细节时,我发现绝大部分CPU使用时间花在了等待GPU上:

enter image description here

然后当我查看GPU使用情况时,我发现它花了99%的时间来应用GUITexture.draw:

enter image description here

问题是......在我非常简单的场景中没有怪异的GUI纹理!我不明白这一点。有人可以向我解释发生了什么以及如何减少PC和移动设备之间的极端性能差异吗?

1 个答案:

答案 0 :(得分:2)

我不知道你是否找到了答案(我希望你能找到答案),但不久前我遇到了同样的问题,其他人也可能遇到同样的问题。

1)GUITexture.Draw

GUITexture.Draw应该是“开发构建”模式。它在渲染整个场景后添加了一个dev水印纹理。我们可以在Unity的帧调试中看到它。 Unity frame debug

着色器属性表示它使用名为“UnityWatermark-dev”的纹理作为_MainTex。您可以使用图形调试器进行确认,我使用了Mali Graphics Debugger。

这里的纹理是什么样的:UnityWatermark-dev

我不知道为什么它会在VR模式下产生这样的开销,但是当您禁用VR时它会相当便宜。

2)分析

分析时不要使用您的PC,除非您计划启动rift或vive版本。 Galaxy S6和PC之间的处理能力差异很大(如果您的GPU和处理器不同,甚至可以在PC之间)。

配置文件时始终使用目标设备。这是了解项目中发生的事情的唯一方法。如果您想在您的移动设备中使用GearVR版本配置文件,那么您可以在PC上启动Rift / Vive项目配置文件。