为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 重写一遍 ...
随机推荐
- python3字符编码错误
在3.x 这里返回的是bytes-like类型, 所以这里不需要释放编码 ,释放也没有意义, 而是应该encode 转换成我们需要的编码, 之所会造成类型错误,原因是就在这里. 他们返回的类型不一样, ...
- 你真懂JavaScript吗?
正文 题目1: if (!("a" in window)) { var a = 1; } alert(a); 题目2 var a = 1, b = function a(x) { ...
- 【STL容器学习】-关联容器与map的用法
STL提供了4个关联容器:set.multiset.map和multimap.这些容器提供了通过keyword高速存储和訪问数据元素的能力.Set和map不同意有反复keyword,而multiset ...
- apple 团队电话
back 苹果电话:400 670 18552 这个是国内能打通的
- JavaFX本地应用自己主动更新功能的实现FXLauncher
JavaFX本地应用自己主动更新功能的实现--FXLauncher 作者:chszs,未经博主同意不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs 一. ...
- 一个使用命令行编译Android项目的工具类
一个使用命令行编译Android项目的工具类 简单介绍 编译apk项目须要使用的几个工具,基本都在sdk中,它们各自是(Windows系统): 1.aapt.exe 资源打包工具 2.android. ...
- ZOJ 1649 Rescue(有敌人迷宫BFS)
题意 求迷宫中从a的位置到r的位置须要的最少时间 经过'.'方格须要1s 经过'x'方格须要两秒 '#'表示墙 因为有1s和2s两种情况 须要在基础迷宫bfs上加些推断 令到达每一个点的时间初 ...
- 使用OpenSSL做RSA签名验证 支付宝移动快捷支付 的server异步通知
因为业务须要.我们须要使用支付宝移动快捷支付做收款.支付宝给了我们<移动快捷支付应用集成接入包支付接口>见支付宝包<WS_SECURE_PAY_SDK>. 支付宝给的serve ...
- wpf Textbox 点击选中全部文本
用法:依赖属性 SelectTextOnFocus.Active = True public class SelectTextOnFocus : DependencyObject { public s ...
- 初识——Vim
有些东西吧,总是碰见,低头不见抬头见,但又不知道是什么.用来干嘛的?总是搞的心里痒痒.所以一定要学习一下. 近期一段时间,总是碰到一个词儿:VIM,在这儿看到了,我不理他,隔一会儿丫的又跑我眼睛里,总 ...