为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
若有问题,请隨時聯繫!!!
非常感謝!!!
**
为DK2应用程序迁移到Oculus CV1做好准备!的更多相关文章
- 如何利用mono把.net windows service程序迁移到linux上
How to migrate a .NET Windows Service application to Linux using mono? 写在最前:之所以用要把windows程序迁移到Linux上 ...
- paip.java win程序迁移linux的最佳实践
paip.java win程序迁移linux的最佳实践 1.class load路径的问题... windows哈第一的从calsses目录加载,,而linux优先从jar加载.. 特别的是修理了ja ...
- 将 Java Spring Framework 应用程序迁移到 Windows Azure
我们刚刚发布了一个新教程和示例代码,以阐述如何在Windows Azure中使用 Java 相关技术.在该指南中,我们提供了分步教程,说明如何将 Java Spring Framework 应用程序( ...
- vue项目向小程序迁移调研
概述 今天调研了一下vue项目怎么向小程序迁移,有些心得,记录下来,供以后开发时参考,相信对其他人也有用. 基本上vue项目向小程序迁移不外乎2种方法,一种是用小程序的web-view组件,另一种是用 ...
- 微信小程序迁移到头条小程序工具
最近公司需要将微信小程序迁移到头条小程序,比较得知微信和头条小程序的写法类似,只有文件名称不同,相关的指令不同,以及头条在ttml绑定的数据不可使用function,于是就写了node脚本来实现这些重 ...
- 将Spring Boot应用程序迁移到Java9:兼容性
将 Spring Boot 应用程序迁移到 Java 9:兼容性 随着 Java 9 的到来,关于如何迁移应用程序以使用模块系统有很多的讨论.遗憾的是,大多数文章的焦点都集中于简单的 Hello Wo ...
- uniapp小程序迁移到TS
uniapp小程序迁移到TS 我一直在做的小程序就是 山科小站 也已经做了两年了,目前是用uniapp构建的,在这期间也重构好几次了,这次在鹅厂实习感觉受益良多,这又得来一次很大的重构,虽然小程序功能 ...
- .NET程序迁移到Mysql的极简方案——让GGTalk同时支持Sqlserver与mysql全程记录!
园子里的这个GGTalk,咱们前前后后用它移花接木做的IM项目也不下三四个了.初次入手的时候,洋洋代码,多少感觉有些难以把握.不过一来二去,理清了头绪,也就一览无余了.相信跟我们一样想要利用GGTal ...
- 将传统 WPF 程序迁移到 DotNetCore 3.0
介绍 由于历史原因,基于 Windows 平台存在着大量的基于 .NetFramework 开发的 WPF 和 WinForm 相关程序,如果将这些程序全部基于 DotNetCore 3.0 重写一遍 ...
随机推荐
- PHP获取数组长度的方法 函数参数的比较
在php中获取数组长度方法很简单,php为我们提供了两个函数可以计算一维数组长度,如count,sizeof都可以直接统计数组长度哦,下面我们来看几个实例吧.php如何获取数组的长度,使用php函数c ...
- session 的工作原理
session.cookie_domain session.cookie_path session.name session.save_path session.use_cokies session_ ...
- SQL SERVER读书笔记:内存
系统先操作地址空间,真正要用的时候才申请物理内存,进行使用. Reserved Memory 保留内存,虚拟内存 Commited Memory 提交内存,物理内存 [如何判断SQL SERVER ...
- luogu3369 【模板】 普通平衡树 Splay
题目大意 维护一个数据结构,满足以下操作: 插入x数 删除x数(若有多个相同的数,因只删除一个) 查询x数的排名(排名定义为比当前数小的数的个数+1.若有多个相同的数,因输出最小的排名) 查询排名为x ...
- w3school
http://www.runoob.com/w3cnote_genre/android https://www.tutorialspoint.com/android/android_sqlite_da ...
- Android.mk中添加宏定义【转】
本文转载自:http://blog.csdn.net/huangyabin001/article/details/38302021 在Boardconfig.mk 中添加一个 IS_FLAG := t ...
- xml配置文件中的转义字符
https://stackoverflow.com/questions/14607920/the-character-breaks-passwords-that-are-stored-in-the-w ...
- Head First 设计模式 —— 工厂模式与工厂方法
1. 实例化对象的方法 制造对象的方法不只 new 操作符一种.且实例化这个动作不应该总是公开地进行,还有初始化常常造成耦合问题.由此提出的工厂模式以进一步封装实例化的活动,且避免对象初始化时的可能产 ...
- 解决 dotnet core 1.x 命令行(cli) 下运行路径错误
环境: Windows 10,Visual Studio 2017 centos 7,nginx,supervisor,dotnet core 1.1 问题: 在 Linux 配置 superviso ...
- .NET使用Office Open XML导出大量数据到 Excel
我相信很多人在做项目的都碰到过Excel数据导出的需求,我从最开始使用最原始的HTML拼接(将需要导出的数据拼接成TABLE标签)到后来happy的使用开源的NPOI, EPPlus等开源组件导出EX ...