1

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

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

在我的电脑上,当我查看分析器时,我得到以下配置文件:

PC配置文件配置文件

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

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

在此处输入图像描述

现在已经下降到大约60FPS。怎么回事?当我更深入地了解细节时,我发现绝大多数 CPU 使用时间都花在了等待 GPU 上:

在此处输入图像描述

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

在此处输入图像描述

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

4

1 回答 1

2

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

1) GUITexture.Draw

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

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

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

我不知道为什么它会在 VR 模式下产生如此大的开销,但是当你禁用 VR 时它会非常便宜。

2) 剖析

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

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

于 2016-09-23T15:46:28.897 回答