VR开发中性能问题—OculusWaitForGPU
http://blog.csdn.net/cartzhang/article/details/50788894
VR開發中性能問題—OculusWaitForGPU
本文章由cartzhang編寫,轉載請注明出處。 所有權利保留。?
文章鏈接:http://blog.csdn.net/cartzhang/article/details/50788894?
作者:cartzhang?
**
一、OculusWaitForGPU
在unity 5.3.0f4中測試,使用Unity提供的VR解決方案,直接在Build setting的Playersetting中,勾選使用Virtual Reality Supported,如下圖所示:?
?
在運行程序的Profile時,你會發現OculusWaitForGPU 的占用時間特別高。?
如下圖:?
二、原因
先說配置:?
Unity 版本:Unity 5.3.0f4?
OC版本:0.8.0 beta的.?
是什么造成這個問題的呢??
網上搜索各種原因,如下:?
1. 有的說是因為,CPU在等待OC的GPU渲染數據返回。?
2. OC內部API強制垂直同步,罪魁禍首是Unity內部集成的當前OC驅動。?
3. Unity個版本問題,不僅僅各個大版本,還有各個小版本之間,有個的f,有的是P。?
三、大致的解決方案
為啥說大致的解決方案呢?因為招了半天,沒有具體的,也沒有誰說有個自己好用,別人也好用的方法。更重要的是OC官方說的方法,也是針對某個版本的暫時之用。?
故此,我總結的方法如下:?
1.使用64位模式。?
2.在GUp和shader的渲染處理優化。?
3. 換OC版本試試,使用0.6.0.1,0.7版本的可能效率低。?
4. 5.3.0f4對VR來說不太好,可選擇5.2.3p3來解決多線程問題,也就是說你的換換其他版本來測試,安裝OC官方推薦版本來試試(下面會給出官方推薦版本連接)。?
5. 對于使用Untiy插件的觀眾:你的選擇有多了一個!!代碼來解決,自己修改 TimeWarp,但是OCulus官方說這個是暫時的,以后版本就不能這樣用 的。?
關于修改TimeWarp的代碼如下:?
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
看清楚了,這個是需要OC對Unity的插件的,因為看到里面的?
- 1
- 1
看到這個東西了吧,這個就是需要OVRManager.cs,也就是OC插件里帶的相機管理腳本。?
里面還有個宏定義,也就是說在安卓下使用。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
什么是TimeWarp呢?這個問題,很好。簡單說就是:處理VR,提高幀率的一種手段。但是不是萬能的。?
具體參考如下:?
http://xinreality.com/wiki/Timewarp?
http://www.myexception.cn/other/1883027.html?
里面講了TimeWarp的基本原理,時間扭曲和位置抖動等,可以參考一下!!?
就這樣了。?
最后,就是關于Unity版本推薦的OC官方網:
https://forums.oculus.com/viewtopic.php?t=25882
四、參考鏈接
https://www.reddit.com/r/oculus/comments/3of567/huge_fps_hit_in_unity_with_vr_enabled/?
https://forums.oculus.com/viewtopic.php?f=37&t=27963&p=310144&hilit=OculusWaitforGPU#p310144?
http://forum.unity3d.com/threads/major-vr-performance-issue-oculuswaitforgpu-running-on-cpu.328442/
http://xinreality.com/wiki/Timewarp?
http://www.myexception.cn/other/1883027.html
重要更新:2016-07-28?
我們的解決方案:?
目前我們測試的低OculusWaitForGPU的版本為:5.3.2f1版本。當然也不是說其他版本不行。?
只是我們沒有測試過。?
還有就是:目前對OCulus0.80.支持的最后版本為:?
Unity 5.3.4p4 and 5.4.0b15 were the last versions that supported PC SDK 0.8.!!!
就是這樣了。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
轉載于:https://www.cnblogs.com/jukan/p/6037628.html
總結
以上是生活随笔為你收集整理的VR开发中性能问题—OculusWaitForGPU的全部內容,希望文章能夠幫你解決所遇到的問題。