• 为DK2应用程序迁移到Oculus CV1做好准备!


    为DK2应用程序迁移到Oculus CV1做好准备!

    本文章由cartzhang编写,转载请注明出处。 所有权利保留。
    文章链接:http://blog.csdn.net/cartzhang/article/details/50749637
    作者:cartzhang

    **

    本文可作为那些有DK2没有CV1却想发布应用到CV1的开发者的移植指南。

    说明:假定我们无法控制的事情比如驱动和Oculus的runtime——不会有重大变化(肯定会有)。

    一、DK2 vs CV1的渲染

    Dk2分辨率为1920X1080,刷新率为75帧。然而,VR应用的眼睛纹理(渲染目标)分辨率更高:2364x1461。在原始分辨率上乘以1.66倍的渲染缩放。这样做,以确保分辨率在畸变后显示1:1的纹理。

    与DK2不同,CV1是2160X1200分辨率,固定刷新率为90帧,默认每秒渲染4亿像素,而DK2为每秒2.59亿像素。使用同样的1.66X 渲染缩放,估计CV1默认的渲染目标为 2830x1566像素。

    从Dk2到CV1,每秒大致需要多渲染1.55倍像素。

    二、使用DK2模拟CV1的渲染性能

    下面有个简单方法,不用进入CV1硬件,来测试应用程序在CV1上的性能。

    修改渲染比例,渲染更高的分辨率。以性能为代价来提高应用程序质量这非常不错。通过对更大渲染纹理进行超采样,会有更好的抗锯齿效果,且读取纹理变得简单。

    为模拟CV1性能,在DK2上每秒渲染4亿像素。比如:一个2954x1800 渲染纹理,在75帧刷新率下大约每秒4亿像素。

    在unity中,使用VRSettings.renderScale来修改渲染比例。renderScale 缺省为1.0f,是1:1纹理的像素比,创建一个2402X1464渲染纹理。若设置渲染比例为1.23f,Unity将渲染2954X1800渲染纹理。

    VRSettings.renderScale = 1.23f

    若在Unity中,使用1.23f的渲染比例,可到达75帧,那么在CV1上就可以达到90帧。

    在OVRDisplay中测试渲染目标的分辨率。还有其它相关因素,但这个使用DK2硬件来模拟应用程序在CV1上性能。说明,此技术之测试渲染消耗。在CV1上,为保持每秒90帧,每帧绘制时间要在11.1毫秒以内。在Dk2上,测试帧率为75,绘制一帧时间为13.3毫秒,所以并不能完全反映应用程序在CV1上的性能。

    三、用一行神奇代码提升应用在CV1上的性能

    若当renderScale为1.23f时,帧率不能到达75fps,可以对代码和资源做诸多优化,从批处理、纹理集到遮挡剔除等等。

    一个懒办法,使用降低渲染目标分辨率的方法来提高性能。虽然高分辨率可以提升视觉效果,但是伴随的是性能消耗。可以降低渲染比例为90fps,而不用每秒渲染4亿个像素。

    若在DK2上可达到75fps,且没有时间做任何优化处理,可以通过在Unity中设置renderScale大约为0.66,就可以实现在CV1上达到90fps。这只是估计,但是总体原则是适用的:若达不到90fps,且不愿借助时间扭曲,可以降低渲染目标分辨率,用降低视觉逼真度换取性能。


    最後

    非常感謝COCO的校正修改!!!

    原文發布於蠻牛論壇
    地址:http://www.manew.com/thread-47547-1-1.html?_dsign=d0825f73

    若有问题,请隨時聯繫!!!
    非常感謝!!!

    **

    遠方

  • 相关阅读:
    165. Compare Version Numbers
    163. Missing Ranges
    162. Find Peak Element
    161. One Edit Distance
    156. Binary Tree Upside Down
    工欲善其事-Eclipse设置
    2016年1月15日面试某互联网公司总结(一)
    以前用SQL实现的机构职能树,再看看
    Sublime3学习笔记
    Android之EACCES (Permission denied)与Permission denied异常探密
  • 原文地址:https://www.cnblogs.com/qitian1/p/6461919.html
Copyright © 2020-2023  润新知