2016-08-20 155 views
1

我一直有我的GearVR的应用程序性能问题(上统一开发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和手机之间的性能差异?

回答

2

我不知道你是否已经找到答案(我希望你做到了),但是不久前我有同样的问题,而其他人可能会面临同样的问题。

1)GUITexture.Draw

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

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

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

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

2)剖析

profiling的时候,除非你打算启动裂痕或万岁版本不要使用您的电脑。 Galaxy S6和你的PC之间的处理能力有很大的不同(如果你的GPU和处理器不同,甚至可以在PC之间)。

配置文件时,请始终使用您的目标设备。这是正确了解项目发生情况的唯一方法。如果你想在你的PC上启动一个Rift/Vive项目配置文件,如果你想在你的移动设备上使用GearVR版本的配置文件。