當前位置:
首頁 > 科技 > 51VR旗下CODE51與intel聯合發布優化VR遊戲應用體驗方案

51VR旗下CODE51與intel聯合發布優化VR遊戲應用體驗方案

原標題:51VR旗下CODE51與intel聯合發布優化VR遊戲應用體驗方案


王文斕,英特爾公司


吳亞光,第一摩碼娛樂科技有限公司


摘要


作為人與虛擬世界之間的新型交互方式,VR 能夠讓用戶在模擬現實中獲得身臨其境的感受。但是,鑒於 VR 的幀預算為每幀 11.1ms (90fps),實現實時渲染並不容易,需要對整個場景渲染兩次(一隻眼睛一次)。在本文中,我們將重點探討 VR 遊戲的性能和用戶體驗優化,介紹我們在《Code51》這款VR電競遊戲中使用的緩解暈動症技術,延長用戶的遊玩時間,還將介紹《Code51》中的性能優化和差異化,提升玩家和觀眾在整個遊戲中的用戶體驗。

引言


《Code51》是全球首款支持 Oculus Rift、HTC Vive、PSVR 和 Pico VR 的機甲競技場 VR 遊戲,它可支持全球玩家之間四對四對抗,專為 VR 電子競技量身定製,採用可最大限度減少暈動症的遊戲設計和內置的觀察者模式。《Code51》已在中國 3,000 多個 VR線下店和體驗中心上線(造夢和樂客),並且計劃在 2018 年第二季度在 PlayStation Store、Oculus Store 和 Steam 上線。


英特爾與第一摩碼緊密合作,致力於優化該遊戲的用戶體驗和性能,並且在英特爾? 酷睿? i7 處理器上增添了視覺和聽覺增強效果,包括 3D 音效、物件破壞、更豐富的CPU粒子和額外的背景效果等。


我們將在本文介紹《Code51》中幫助提升 VR 遊戲沉浸感和用戶體驗的 7 個設計要點。


沉浸感 VR 遊戲的設計要點


在 VR 中身臨其境地移動


當前有 4 種在虛擬世界移動的方式,分別是:


瞬移 + 6自由度 (DoF) 追蹤(如《Robo Recall》)虛擬座艙(如《EVE: Valkyrie》)硬體運動模擬器(如Virtuix Omni?)大空間追蹤系統(如OptiTrack?)


所有這些解決方案各有優缺點。《Code51》採用了虛擬座艙的移動方式,原因如下:


能夠連續移動是提升 VR 沉浸感的一種重要方法,因為它與我們的現實體驗相匹配,虛擬座艙是唯一可支持在 VR 中連續移動且無需增加額外硬體和成本的方法。鑒於目前高端 VR 頭盔的銷量並不高,可兼容 3自由度 VR 頭盔的移動方式有助擴大用戶基數並減少將遊戲移植到這些設備上的工程量。《Code51》是一款VR電競遊戲,玩家坐在機甲座艙內與其他人戰鬥,這種「坐式」體驗與虛擬座艙的移動方式完美匹配,提升了沉浸感。坐著使用遊戲手柄玩沒有站著使用動作控制器玩那麼累人,用戶可以更長時間地暢玩 VR 遊戲[1]。圖 1 展示了用戶如何使用各種 VR 頭盔暢玩《Code51》。


圖 1.《Code51》支持各種 VR 頭盔。左側:HTC Vive (6 DoF)。右側:Pico VR (3 DoF)。


緩解 VR 中的暈動症


暈動症[2]是影響用戶不能長時間體驗 VR 的主要因素之一。引起這種癥狀的因素包括:


輻輳調節衝突引起的視覺壓力[3]VR 場景沒有方向線索或參照物(即不能獲得當前移動方向的提示)較低的幀率或較高的 MTP 延遲眼睛所見和身體感受之間的加速度不匹配角速度鏡頭拉近或拉遠低PPD (每度像素數)引起的模糊


《Code51》採用了幾種方法來最大限度地減少暈動症


用戶界面設計將控制面板放到離用戶 1 米以外以避免頻繁改變用戶的輻輳距離,減少輻輳距離相對於焦距的變化場景設計在場景中提供清晰的方向線索,以便用戶始終知道正在走哪個方向,這能夠讓人的大腦提前做移動準備,減少眩暈。在實踐中,避免添加可能會阻擋用戶整個視野的純紋理對象,因為它缺少視覺線索,讓大腦無法感知目前的移動方向,等效增加了額外的加速度變化。渲染性能優化性能,讓《Code51》以穩定 90fps 的速度渲染,最大限度地降低 MTP 延遲。減少加速運動儘可能地避免在《Code51》中添加加速度以減少眩暈,速度應該在不同程度之間作即時切換。例如僅在運動開始瞬間添加加速度,然後在跳躍或著陸期間保持恆定速度。降低角速度降低高速旋轉(角速度)的能力,可幫助減低光流量。動態縮小 FOV動態縮小 VR 中的 FOV 有助於減輕暈動症[4][5]。《Code51》中採用了該方法,使用depth buffer(深度緩存)計算出屏幕四個角落的移動速度,然後在stencil buffer(模板緩存)中根據速度大小將頂點相應地向內彎曲,以減少運動期間的 FOV。正如圖 2 中所示,移動的越快,FOV 越狹窄。它能夠減少最終用戶感知到的光流量。



圖 2.《Code51》中採用動態 FOV 來消除屏幕邊緣的光流,在實際測試中用戶在 VR 裡並不太感覺出FOV的縮小,卻能夠幫助緩解暈動症。


最大限度降低網路延遲

對於 VR 應用,降低網路延遲也很重要,這樣才能避免畫面滯後,擁有流暢的遊戲體驗,否則容易引起暈眩。在《Code51》中,機甲本身的所有動作都是在本地預測,然後以較低的頻率與伺服器作同步和修正,避免網路不佳時本地出現頻繁的修正動作,干擾遊戲進行。如果同步失敗,客戶端會根據之前的軌跡作插值。


增強 VR 電競遊戲的觀看體驗


為了給 VR 電競觀眾打造更好的觀看體驗,《Code51》內嵌了觀察者模式。觀察者模式在遊戲中是一個獨立的客戶端,允許觀眾通過鍵盤、滑鼠或手柄操控從任何視角和位置觀看實時戰鬥畫面,畫面能夠以雙目或單目方式輸出到 VR 頭盔或者大型顯示屏(如圖 3 所示)。



圖 3.《Code51》中的觀察者模式。最終用戶可以採用 VR 或非 VR 模式觀看現場戰鬥。


保持渲染畫面的銳利度


相對於傳統顯示器,當前 VR 頭盔顯示器的 PPD (每度像素數)仍然很低,因此 VR 應用需要儘可能地保證渲染畫面的銳利度以減少畫面模糊和因此引發的眩暈。當前 UE4 開發人員可使用的抗鋸齒 (AA) 方案大致有以下三種


頁框交錯抗鋸齒 (TAA)在靜態環境中,TAA 及其衍生AA演算法擁有良好的抗鋸齒質量,且計算成本適中。對於半透明物件的 TAA,必須在額外的步驟中計算,因為這些物件沒有可用的深度信息。此外,VR 中使用的 TAA 最好採用保守的參數設置,以減少由於頭部移動或動態場景中產生的 VR 模糊。多重採樣抗鋸齒 (MSAA)MSAA 只能在正向渲染管線中使用,《Code51》採用了該方法來最大限度地減少 AA 所產生的 VR 模糊。VR 裡一般採用 4 倍 MSAA 就能達到不錯的效果。屏幕空間抗鋸齒 (SSAA)SSAA 的計算成本較高,但是能夠實現最佳的抗鋸齒質量,《Code51》中還使用了 1.4 倍 SSAA。


CPU 性能優化


為了降低 UE4 DX11 VR 遊戲的 CPU 瓶頸,需要減少渲染線程的工作負載[6],UE4 (4.20+) 中為 DX11 實現的 RHI線程可通過 D3D11 多線程渲染減輕主渲染線程的負載[7],所以儘可能啟用 RHI 線程。

此外,UE4 中還有各種優化主渲染線程負載的方法[8],《Code51》中就採用了其中一些方法:


減少繪製調用(根據我們在前向渲染管線上的分析經驗,運行在高端 VR 頭盔的應用最好將繪製調用數目限制在2,000以下來減少繪製調用的狀態變換開銷,避免產生渲染線程瓶頸。如果 GPU 優化得較好(每幀的 GPU 計算時間較低),每幀有較多的時間留給渲染線程,則繪製調用數目可以超出這數字而不掉幀)優化可見性剔除 (InitView)修改場景物件以減少動態遮擋剔除(硬體遮擋查詢或層次Z-緩衝演算法),因為計算一個只在屏幕上出現一小部分的大型物件的遮擋剔除是一件計算效率低下的事情。圖 4 顯示了該優化的示例使用預計算遮擋剔除[9]減少運行時需要使用動態遮擋剔除處理的基元 (primitives) 數量。這方法在《Code51》中效果相對沒那麼明顯,因為遊戲中的機甲能飛到空中,降低了預計算的效果。在《Code51》中,當啟用預計算遮擋剔除時,可被預計算處理掉的靜態遮擋的基元數量(大約 300 個基元)是總遮擋剔除基元數量的 20%屏蔽遮擋剔除(Github/論文)是採用 SIMD 加速的CPU 遮擋剔除演算法(SSE、AVX 和 AVX-512),它可以取代層次Z-緩衝演算法,能夠在現代的多核 CPU 上高效地並行計算減少動態光源,關閉動態陰影投射,如果預算允許的話可使用膠囊陰影 (capsule shadows)儘可能地使用光照烘焙使用 LOD 和 HLOD,保證高端 VR 下三角形數目少於 250 萬使用粒子 LOD,不要在 LOD0 中使用半透明粒子



圖 4. 場景中一個物件從左圖修改為右圖的樣子,以減少原圖中該物件後面的遮擋剔除計算。


差異化和特效強化


最後,優化 VR 應用體驗的一個重要方向是儘可能地利用硬體平台上的所有可用計算資源,在該平台上提供最佳體驗。例如,使用英特爾? 酷睿? i7-7700K 處理器的用戶比僅使用英特爾? 酷睿? i5-4590 處理器(未使用 ASW 的 Oculus Rift 的 CPU 最低要求規格)的用戶有更高的主頻和更多的 CPU 核心,這意味著可以添加額外的 CPU 計算來增強應用的視覺和聽覺效果,提升體驗的同時不影響幀率。


在《Code51》中,我們加入了一些主要用 CPU 作計算的強化特效來更好地用上高端 CPU 的計算資源,這些特性包括 3D 音效、物件破壞、CPU 粒子增強和炫酷的背景效果,如以下視頻中所示:



其中大部分強化音效和畫面表現的 CPU 計算(例如 PhysX? 計算或Steam? Audio 中利用光線跟蹤演算法的環境音效計算等)都是由 UE4 的工作線程或音效模擬線程處理。因為大部分計算都被分配到閑置的 CPU 核心,這些強化效果大大加強了沉浸感的同時最大程度避免了對幀率的負面影響。


圖 5 展示了《Code51》的幀率數據。數據顯示該遊戲在開啟強化效果的同時能夠在英特爾? 酷睿? i7-7700K 和英特爾? 酷睿? i7-7820HK 上流暢運行,但在英特爾? 酷睿?i5-4590上開啟強化效果則會導致幀率顯著下降,這意味著 i5 CPU 在開啟強化效果下無法在 11.1ms 內完成一幀渲染。但只要關掉所有強化效果(切換到無強化效果的低畫質設置),使用 VR 最低 CPU 規格的用戶仍可順暢地遊玩《Code51》。根據下列《Code51》的幀率數據,當所有 CPU 強化效果均打開時,英特爾? 酷睿? i7-7700K 比英特爾? 酷睿? i5-4590 性能高出 27%。


圖 5.在不同 CPU (英特爾? 酷睿? i5 和 i7 處理器)和畫質設置下的《Code51》性能數據,「超高 Ultra High」是開啟 CPU 強化效果的,「低 Low」是未開啟 CPU 強化效果的。測試系統: 英特爾? 酷睿? i5-4590,NVIDIA? GTX1080,2x4GB DDR3-1600,Windows? 10 版本 1703;英特爾? 酷睿? i7-7700K,NVIDIA? GTX1080,4x4GB DDR4-2400,Windows? 10 版本 1703;英特爾? 酷睿? i7-7820HK,NVIDIA? GTX1080,4x4GB DDR4-2400,Windows? 10 版本 1703。


圖 6 和圖 7 展示了不同設置下《Code51》的 GPUView 屏幕截圖,兩圖中均使用「超高」 畫質設置和採用英特爾? 酷睿? i7-6800K 處理器,並使用 msconfig 分別將 CPU 內核設置為 4C4T 和 6C12T,並以相同的 CPU 頻率運行。從圖表中可以明顯看出,在 4C4T 配置下(模擬 4C4T 英特爾? 酷睿? i5 處理器),一幀的渲染無法在 11.1ms 內完成,並且出現了幀率顯著下降的情況,但在6C12T 配置下卻能夠流暢運行。


下列是在相同英特爾? 酷睿? i7-6800K 上運行、兩種配置下(6C12T 和 4C4T),用 Windows? 性能分析器 (WPA) 觀察到的《Code51》中不同線程上增加的 CPU 計算百分比:


總 CPU 工作負載: 43%↑


渲染線程: 44%↑


GPU驅動線程: 10%↑


邏輯線程: 13%↑


工作線程: 89%↑


在《Code51》中,大量 CPU 強化效果被移到工作線程計算,導致這些線程的計算增加率最大。


圖 6.「超高Ultra High」設置下採用英特爾? 酷睿? i7-6800K 處理器和 GTX1080 顯卡的《Code51》的 GPUView 屏幕截圖,在這裡 CPU 內核用 msconfig 設置為 4C4T。測試系統: 英特爾? 酷睿? i7-6800K,NVIDIA? GTX1080,4x4GB DDR4-2400,Windows? 10 版本 1703。



圖 7.「超高Ultra High」設置下採用英特爾? 酷睿? i7-6800K 處理器和 GTX1080 顯卡的《Code51》的 GPUView 屏幕截圖,在這裡 CPU 內核 (6C12T) 未做任何修改。測試系統: 英特爾? 酷睿? i7-6800K,NVIDIA? GTX1080,4x4GB DDR4-2400,Windows? 10 版本 1703。


結論


讓用戶感到舒適和減輕暈動症是 VR 電競遊戲成功的兩大要素,只有能夠讓用戶長時間沉迷其中的電競遊戲才能真正成功。《Code51》採用了文章中介紹的各種方法來減輕暈動症,同時內置了觀察者模式幫助提升賽事觀看體驗。在性能優化方面,根據 GPUView 和 WPA 可以看出渲染線程通常是 UE4 DX11 VR 應用的主要 CPU 瓶頸,標淮的遊戲優化方法以及將任務從主渲染線程移到其他線程能帶來不少性能提升,此外,像《Code51》一樣利用閑置的 CPU 資源添加更炫酷的畫面和音效強化效果,可以讓遊戲從眾多競品中脫穎而出。


參考文獻


[1] http://blog.leapmotion.com/taking-motion-control-ergonomics-beyond-minority-report/


[2] https://en.wikipedia.org/wiki/Virtual_reality_sickness


[3] Shibata、Takashi 等等「立體顯示引起的視覺不適:觀看距離的影響和視覺輻輳調節衝突的方向。」《立體顯示及應用 XXII》。第 7863 卷。國際光學工程學會,2011 年。

[4] http://engineering.columbia.edu/fighting-virtual-reality-sickness


[5] Fernandes、Ajoy S.和 Steven K. Feiner.。「通過精細的動態視野修改減輕 VR 眩暈。」3D 用戶界面(3DUI),2016 IEEE 座談會。IEEE,2016 年。


[6] Finn Wong,「PC VR遊戲的CPU性能分析與優化」,2016 年


[7] https://msdn.microsoft.com/en-us/library/windows/desktop/ff476891(v=vs.85).aspx


[8] Finn Wong,「Unreal* Engine 4 VR 應用的 CPU 性能優化和差異化」,2017 年。


[9] http://timhobsonue4.snappages.com/culling-precomputed-visibility-volumes


關於作者


王文斕是英特爾合作夥伴關係部 (DRD) 的一位高級軟體工程師。自 2015 年以來,他一直負責 VR 內容支持和技術合作,幫助 VR 開發人員優化 CPU 性能和實現 CPU 內容差異化,從而為最終用戶提供真正的沉浸式 VR 體驗。王文斕曾被邀請在 CGDC、VRCORE、騰訊 GDOC、Unreal Circle、Unity Unite 和 Vision AR/VR 峰會等各種 VR 會議上做技術演講。在此之前,王文斕在英特爾從事 H.264/H.265 和 RealSense 應用的性能優化工作,在視頻編碼、視頻分析、計算機視覺、演算法和性能優化領域擁有 10 多年的豐富經驗,並發表了若干學術論文。王文斕擁有國立台灣大學電機工程學士學位和通信工程碩士學位。

吳亞光是第一摩碼娛樂科技有限公司首席執行官兼聯合創始人。他擁有多年深厚的遊戲開發經驗,從 2016 年開始領導了知名 VR 遊戲《Code51》的開發工作。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 51VR科技 的精彩文章:

TAG:51VR科技 |