为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 重写一遍 ...
随机推荐
- C++设计模式之状态模式(二)
2.智能空调的设计与实现 某软件公司将开发一套智能空调系统: 系统检測到温度处于20---30度之间,则切换到常温状态:温度处于30---45度,则切换到制冷状态: 温度小于20度,则切换到制热状态. ...
- 【字符串处理算法】字符串包括的算法设计及C代码实现
一.需求描写叙述 给定一个长字符串和一个短字符串.编敲代码推断短字符串中的全部字符是否都在长字符串中.假设是,则长字符串包括短字符串:反之,不包括. 为了尽量包括大多数情况,字符串中能够包括大写和小写 ...
- Android 四大组件学习之ContentProvider二
上节学习了什么是ContentProvider.以及ContentProvider的作用.以及什么是URL.本节就对上节学习的知识做一个实践,也就是定义自己的ContentProvider 好.实践是 ...
- 搜索分析(DFS、BFS、递归、记忆化搜索)
搜索分析(DFS.BFS.递归.记忆化搜索) 1.线性查找 在数组a[]={0,1,2,3,4,5,6,7,8,9,10}中查找1这个元素. (1)普通搜索方法,一个循环从0到10搜索,这里略. (2 ...
- Nginx调优实战
Nginx配置文件性能微调 全局的配置 user www-data; pid /var/run/nginx.pid; worker_processes auto; worker_rlimit_nofi ...
- Hdu-6230 2017CCPC-哈尔滨站 A.Palindrome Manacher 主席树
题面 题意:给你一个字符串,问你满足s[i]=s[2n-i]=s[2n+i-2]的子串(这子串长度为3n-2)有多少个,原字符串长度<=5e5 题解:对于这种子串,其实要满足2个回文,跑过一次M ...
- PLSQL简介
目录 什么是PLSQL PLSQL起源 PLSQL早期版本 改善可移植性 改进执行权限于事务的完整性 原书:steven feuerstei-oracle PLSQL grogramming 2014 ...
- leetcode 几道题目
是周六晚上的几道题,晚上11点半,睡的早,起不来! 494. Target Sum 分析:看完这题,看到数据范围,长度20,枚举就是1<<20 = 1e6, 然后单次20,总共就是2e8, ...
- vue路由history模式下打包node服务器配置
vue-router 默认 hash 模式 —— 使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,页面不会重新加载. 如果不想要很丑的 hash,我们可以用路由的 his ...
- Array.of()和Array()区别
Array.of方法用于将一组值,转换为数组. Array.of(3, 11, 8) // [3,11,8] Array.of(3) // [3] Array.of(3).length // 1 这个 ...