研发实战:如何为Quest 2增加90Hz支持
(映维网 2020年11月14日)Oculus日前正式放出了v23软件更新,新增了一系列的功能与优化,包括纳入健身跟踪应用Oculus Move,原生支持90Hz刷新率,以及允许向朋友赠送游戏和体验的App Gifting等等。
对于v23版本,这意味着开发者现在可以开始提供包含本地90Hz支持的Quest内容。尽管72Hz依然是Quest和Quest 2的默认选项,但现在Quest 2的开发者可以选择提供80Hz和90Hz。
需要注意的是,尽管应用程序现在可以请求更高的帧速率,但72Hz以上的速率并不能获得保证:在极少数情况下,系统可能会决定降低显示刷新率。例如,系统可能会降低帧速率以响应严重的发热情况(VrDriver将强制应用程序设置为minVsyncs=2,亦即36Hz,但屏幕仍以72Hz运行)。尽管这类事件非常罕见,但对于某些用户来说,它们可能会产生视觉不适。对于90Hz的渲染速率,如果遇到异常的热压力,系统将首先降到72Hz,然后再降到一半速率。
90Hz和80Hz渲染仅支持Quest 2。对于Quest 1,请求90Hz的应用程序将会以72Hz的频率运行。
如何使用并测试90Hz
为了允许你的应用程序能够访问80Hz和90Hz,开发者需要通过利用com.oculus.supportedDevices manifest fag。
一旦更新了manifest,你就可以使用通常的VRAPI和引擎集成API来请求支持的刷新率,并将显示频率设置为90Hz。以下是在Unreal与Unity中更改显示频率的文档:
- Unreal:https://developer.oculus.com/documentation/unreal/unreal-blueprints-set-display-frequency/
- Unity:https://developer.oculus.com/documentation/unity/unity-set-disp-freq/
对于v23版本,VrDriver会显示当前的系统刷新率。以下示例是系统以90Hz的频率运行,而应用程序以89fps的速度运行:
VrApi : FPS=89/90,Prd=34ms,Tear=0,Early=8
如果系统出于任何原因决定限制刷新率,你会收到一个事件警告。绝大多数开发者不需要做任何事情,但在VRAPI会创建一个新event:
Unreal和Unity的下一个引擎集成版本将纳入允许开发者轻松处理所述event的方法。
最后,为了测试运行时驱动的刷新率变化,Oculus在VrDriver添加了一个广播意图,它将模拟合成器从90变为72。在ADB shell,调用:
将把屏幕从90调节到72持续10秒会发送相应的event。例如,在VrShell调用它将在VRAPI logcats中显示:
随着v23的发布,开发者现在可以自由开发支持90Hz的应用。