【问题标题】:GearVR application heating issueGearVR 应用程序发热问题
【发布时间】:2017-12-14 05:41:26
【问题描述】:

我正在为 Gear VR 构建我的第一个 VR 应用程序。这是一个基于媒体的应用程序,我正在构建它来查看 360 度视频。

我正在使用 Unity 3D 构建应用程序,我已经实现了我的应用程序的所有功能,但遇到了一个主要问题。

问题:手机在使用 10-12 分钟后会变热:我正在使用三星 s6 进行测试,因此我无法在我的应用上观看长时间的视频。 我很清楚,在堆栈溢出时,我们主要讨论的是编码实践而不是这样的问题,但我的问题是,我是否需要遵循任何类型的编码实践来避免这个问题。

我已经通过在设备上启用开发者模式并安装 Gear VR 服务来检查 CPU 利用率水平对其进行了测试,但是当我为商店中可用的其他应用程序测试它时,我的结果是相同的(其他应用程序的播放时间比我长)

这里的任何人都可以为我指出正确的方向,以便我可以摆脱这个问题吗?以下是一些细节:

Hardware used: Gear VR (white version) + S6.
Software used: Unity3d with third party movie player
Feature: User is made to download/stream the video from URL video size varies from (100MB - 1GB).
Issue: Device gets heated within 5-6 minutes.
Solution tried: Lower down quality settings, Deactivating Anti aliasing, Writing scripts to lower down render scale & render viewport of the camera.

【问题讨论】:

  • 我不确定您是否会找到解决方案。不在这里,也不在任何地方。任何对设备要求很高的应用程序,比如你提到的 VR,都会让手机发热。您可以在这里阅读一些原因,但我觉得没有解决方案:indiatoday.intoday.in/technology/story/…
  • 我担心这个的原因是商店中的另一个应用程序与我的应用程序相比做得很好。例如他们的应用程序运行至少 25 分钟,而我的应用程序运行 5-6 分钟,与他们相比,我的应用程序的渲染更少。

标签: unity3d samsung-mobile gear-vr


【解决方案1】:

根据您的评论,如果您怀疑在运行应用程序时手机升温速度比运行商店中的其他应用程序时更快,那么您可能是对的,问题可能出在您的代码中。

现在,玩游戏时手机发热的原因之一是处理器和图形芯片的工作需求更高。

因此,您可以尝试找出您的 VR 应用程序中计算最密集的任务,以便您可以更改、改进或直接删除它们。在这里,我将列出一些在 Unity 5 中提高 VR 应用程序性能的技巧,您可能会觉得有趣。

首先,您应该尝试一些性能指标:

  • 每只眼睛 50 次绘制调用。 Unity 5 更准确地将它们称为 setpass 调用。
  • 场景中少于 50K-100K 顶点和 50K-100K 多边形。

1- 静态批处理

您的场景中可能有大量静态几何体,例如墙壁、椅子、灯光和永不移动的网格。在编辑器中将它们标记为静态。请务必将它们标记为静态光照贴图,以便获得烘焙光照贴图纹理。标记为静态的对象可以批处理到一个组合网格中,而不是对每个单独的对象进行绘制调用。 静态批处理有一个关键要求:所有对象必须使用相同的材​​料。如果您有木质材质的静态墙和钢材质的静态椅子,则墙壁将被分批成一个带有一个组合网格的绘制调用,而椅子则在一个单独的绘制调用中使用它们自己的单独网格。

2- 纹理贴图

如前所述,每种材质都会引发一次绘制调用。您可能会认为木门和钢椅可能需要不同的材料,因为它们使用不同的纹理。但是,如果它们可以使用相同的着色器,则可以使用纹理图集创建两个对象都可以使用的一种材质。纹理图集只是一个包含所有较小纹理的较大纹理。您可以让一种材质仅加载一种纹理,而不是使用数十种材质加载数十种纹理。每个对象都可以映射为使用地图集上不同坐标上的纹理。 您可以在您的艺术管道中手动执行此操作,但我发现 Juan Sebastian 的 Pro Draw Call Optimizer 非常有用。它会自动生成纹理图集并交换新对象,而不会弄乱您的资产。

3- 动态批处理

移动非静态对象可以动态批处理到单个绘图调用中。我注意到这是 CPU 密集型的,并且是在每一帧上计算的,但这是一个很好的优化。这仅适用于使用相同材质的顶点少于 900 个的对象。使用纹理贴图为您的动态对象创建单一材质,您可以获得便宜的动态批处理!

4- LOD

LOD 组是一种提高性能的廉价方法。使用具有多个 LOD 的资产并为远离相机的对象渲染较低细节的几何体。当相机靠近时,Unity 可以在每个 LOD 之间自动淡入淡出。

5- 填充率、透支和剔除

这涉及到一个我不太熟悉但值得关注的话题:减少过度绘制,其中最远的对象首先被绘制到一个像素,然后重新绘制像素,每个更近的对象都在顶部。这对于普通的 1080p PC 显示器来说不是什么大问题,但对于具有超高分辨率显示器的 VR 和移动设备来说却是一个重大问题。大量的透支加上大量的像素会扼杀你的填充率。纹理过滤是 GPU 中的关键限制指标之一。 一些解决方案提供了开箱即用的遮挡剔除和截头剔除。截锥体剔除不会渲染相机截锥体之外的对象。没有点渲染你看不到的物体!遮挡剔除会剔除被其前面的其他对象遮挡的对象。例如,门后的房间可以完全排除在外。默认情况下,遮挡剔除适用于您的整个场景,但适当的关卡设计将允许您剔除游戏的整个关卡。

LOD 组还可以剔除离场景太远的对象,进一步帮助最小化填充率。

六层设计

如果您的游戏涉及一个玩家从一个房间到另一个房间,那么简单的解决方案就是将整个游戏放在一个关卡中。然而,缺点是内存消耗。每个房间中的每个对象和材料都会加载到内存中,即使它们不可见。将每个房间放到一个单独的关卡中,并在代码中智能地异步加载它们。

7- 异步加载

在玩家接近下一个房间的门之前,加载下一个关卡。不要使用 Application.LoadLevel() 同步加载它,因为这会导致你的游戏在加载时挂起。当头部跟踪暂时停止时,这会导致恶心,对玩家来说是一种可怕的体验。

改为使用 Application.LoadLevelAsync()。您可以在 Oculus Mobile SDK BlockSplosion 示例中找到这方面的示例,位于 StartupSample.cs

8-烘焙光照

关闭实时阴影!接收动态阴影的对象将不会被批处理,您将受到严重的绘制调用惩罚。

在 PC 上,您可以使用单个实时定向光来获得漂亮的动态阴影。大多数现代 PC 可以提供华丽的每像素阴影。但是在移动设备上,您希望坚持使用烘焙照明并且没有实时阴影。以极高的分辨率使用硬阴影和软阴影烘焙您的照明。

9- 阴影

特别是对于高性能的移动体验,跳回 3D 对象上的阴影的旧技巧。可以在对象下方使用具有模糊阴影纹理的简单 2D 四边形来模拟半真实阴影。

10- 光探头

当您使用烘焙照明时,您的动态对象看起来不合适,而静态对象看起来很棒。您可以使用光照探针廉价地模拟动态对象上的动态光照。

光照探测器是烘焙的立方体贴图,用于存储有关场景中各个点的直接、间接甚至发射光的信息。当动态对象移动时,它会插入附近光探测器的样本以近似该特定位置的照明。这是一种在动态对象上模拟真实光照的廉价方法,无需使用昂贵的实时光照。

11- 避免透明和多材质对象

使用透明着色器的玻璃透视窗等对象非常昂贵。通过使用具有灰尘或铁锈纹理的透明材料以及单独的基础漫反射材料来增加墙壁的真实感是一种常见的做法。这种多材料 alpha 混合很昂贵;每种材质都会添加一个绘图调用!但是请注意,多个纹理不是问题;使用多种单独的材料是昂贵的。使用一种材质和一个着色器,可以通过 Alpha 混合来混合多个纹理,而不是使用多个单独的材质。

12- 蒙皮网格渲染器

蒙皮网格渲染器通常用于具有动画绑定的角色,使用物理(布娃娃身体)或自定义动画(步行、跳跃等)实现逼真的网格变形。

不幸的消息:蒙皮网格渲染器不会被批处理。场景中的每个角色可以为每只眼睛创建多个绘制调用。我还不确定如何解决这个问题。

来源:https://blog.bigscreenvr.com/12-performance-tricks-for-optimizing-vr-apps-in-unity-5-9849bb6aefa7

【讨论】:

  • 会试一试,如果有任何问题,请告诉您。
【解决方案2】:

在您尝试上述任何建议之前,请先确定您的应用程序是受 CPU 还是 GPU 约束。这可以在 Unity3D 的分析器中看到。

如果是CPU,可以检查draw call、动态批处理等

如果是 GPU,检查着色器、纹理填充率等

提前这样做可以优化您的开发资源和时间,从而获得最佳回报。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2017-03-11
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多