【问题标题】:Performance issue on GearVR / UnityGearVR / Unity 的性能问题
【发布时间】:2016-08-20 02:49:29
【问题描述】:

我的 GearVR 应用(基于 Unity 5.4 开发)一直存在性能问题,因此我决定做一个小实验并设置尽可能简单的场景来研究性能:

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

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

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    1) GUITexture.Draw

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

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

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

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

    2) 分析

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

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

    【讨论】:

      猜你喜欢
      • 2021-08-07
      • 2017-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-03
      • 1970-01-01
      相关资源
      最近更新 更多