返回 登录
0

Unreal* Engine 4 VR应用的CPU性能优化和差异化:第三部分

作者:王文斓

虚拟现实(VR)能够带给用户前所未有的沉浸体验,但同时由于双目渲染、低延迟、高分辨率、强制垂直同步(vsync)等特性使VR对CPU渲染线程和逻辑线程,以及GPU的计算压力较大[1]。如何能有效分析VR应用的性能瓶颈,优化CPU线程提高工作的并行化程度,从而降低GPU等待时间提升利用率将成为VR应用是否流畅、会否眩晕、沉浸感是否足够的关键。Unreal* Engine 4 (UE4) 作为目前VR开发者主要使用的两大游戏引擎之一,了解UE4的CPU线程结构和相关优化工具能够帮助我们开发出更优质基于UE4的VR应用。本文将集中介绍UE4的CPU性能分析和调试指令、线程结构、优化方法和工具、以及如何在UE4里发挥闲置CPU核心的计算资源来增强VR内容的表现,为不同配置的玩家提供相应的视听表现和内容,优化VR的沉浸感。

UE4 VR应用的CPU差异化

上面介绍了几种VR应用的CPU优化技巧,然而优化只能保证VR应用做到不掉帧不眩晕,没法进一步提升体验。如果要提升VR体验,必须尽可能最大程度利用上硬件提供的计算能力,把这些计算资源转化成内容、特效及画面表现提供给最终用户,而这就需要根据计算能力对CPU提供相应的差异化内容。下面介绍其中五种CPU的差异化技巧。

布料模拟
UE4的布料仿真主要通过物理引擎分到工作线程进行计算,对逻辑线程影响较小。而且布料模拟是每帧都需要计算的,即使布料不在画面显示范围内,也需要进行计算来决定更新后会否显示到画面中,因此计算量比较稳定,可以根据CPU能力适配对应的布料模拟方案[17]。

可破坏物件

可破坏对象在UE4里也是通过物理引擎分到工作线程进行破坏模拟计算的,因此对于计算能力较高的CPU这部分可以加强,比如更多对象可以被破坏、破坏时出现更多碎片或者碎片在场景中的存在时间更长等。可破坏对象的存在会大大加强场景的表现以及沉浸感,设置过程可以参考[18]。

CPU粒子

CPU粒子是另一项比较容易扩展的模块,虽然从粒子数目来说CPU粒子较GPU粒子少,但采用CPU粒子能降低GPU的负担,较好地利用多核CPU的计算能力,而且CPU粒子具备下列独有的功能:

  1. 可发光
  2. 可设置粒子材质及参数(金属、透明材质等)
  3. 可受特定引力控制运动轨迹(可以受点、线或者其他粒子的吸引)
  4. 能产生阴影

开发过程中可以对不同CPU设置相应的CPU粒子效果。

3D音频 – Steam* Audio

对于VR应用来说,除了画面外制造沉浸感的另一个重要元素就是音频,具有方向性的3D音频能够增强VR体验的临场感,Oculus*曾经推出Oculus* Audio SDK[19]来模拟3D音频,但该SDK对环境音效的仿真比较简单,相对并不普及。Steam* Audio[20]是Valve*新推出的一套3D音频SDK,支持Unity* 5.2以上的版本及UE 4.16以上的版本,同时提供C语言接口。Steam* Audio具备下面几项特点:

  1. 提供基于真实物理模拟的3D音频效果,支持头部相关传输函数(Head-Related Transfer
    Function,HRTF)的方向音频滤波以及环境音效(包括声音遮挡、基于真实环境的音频传递、反射及混音等),另外也支持接入VR头显的惯性数据
  2. 能够对场景中每个对象设置音效反射的材质及参数(散射系数、对不同频率的吸收率等),环境音效的仿真可以根据CPU的计算能力采用实时或烘焙的方式处理
  3. 环境音效中很多设置或参数都可以根据质量或性能要求做调整。例如HRTF的插值方法、音频光线跟踪的数目和反射次数、混音的形式等
  4. 相对于Oculus* Audio SDK只提供鞋盒式的环境音效仿真(shoebox model)而且不支持声音遮挡,Steam*
    Audio的3D音频模拟更真实而且完整,可以提供更精细的质量控制
  5. 免费且不绑定VR头显或平台

Steam* Audio从UE4的逻辑线程收集音源及收听者的状态和信息,通过工作线程进行声音的光线跟踪及环境反射模拟,将计算出来的脉冲响应(impulse response)传送到音频渲染线程对音源进行相应的滤波和混音工作,再由OS的音频线程输出到耳机(例如Windows*的XAudio2)。整个处理过程都是由CPU的工作线程进行,在加入3D音频的同时并不会增加渲染线程和逻辑线程负载,对原来游戏的性能并不会造成影响,可以说是非常适合VR的一项体验优化。详细的设置过程可以参考Steam* Audio的说明文檔[21]。

可扩展性

UE4的可扩展性设置是一套通过参数调节控制画面表现的工具,能适配不同计算能力平台[22]。对CPU来说,可扩展性主要体现在下面几项参数设置上:

  • 可视距离(View Distance): 距离剔除缩放比例(r.ViewDistanceScale 0 – 1.0f)
  • 阴影(Shadows): 阴影质量(sg.ShadowQuality 0 - 3)
  • 植被(Foliage): 每次被渲染的植被数量(FoliageQuality 0 - 3)
  • 骨骼网格体LOD偏差(r.SkeletalMeshLODBias): 全局控制骨骼网格体的LOD等级偏差
  • 粒子LOD偏差(r.ParticleLODBias): 全局控制粒子LOD等级偏差
  • 静态网格体LOD距离缩放(r.StaticMeshLODDistanceScale): 全局控制静态网格体的LOD等级偏差

图6 - 8分别显示了腾讯*<<猎影计划>>这款VR游戏对不同CPU的植被、粒子和阴影差异化效果。

图片描述图 6.《猎影计划》中的植被差异化效果。
图片描述
..
查看原文


了解更多相关内容,请关注CSDN英特尔开发专区

评论