VR產(chǎn)品層出不窮,但用戶的體驗卻一直沒有達(dá)到最佳狀態(tài)。
畫面真實度差和延遲造成的眩暈感是影響VR產(chǎn)品體驗的兩大重要原因。
既然從軟件到硬件都急需進(jìn)行優(yōu)化,那么究竟產(chǎn)品的優(yōu)化應(yīng)該如何進(jìn)行?這其中又有哪些方式?
來自英偉達(dá)亞太GPU產(chǎn)品總監(jiān)林耀南在VRWDC世界虛擬現(xiàn)實開發(fā)者論壇的分享:如何用5大技術(shù)提升VR產(chǎn)品的體驗?
以下為分享原文:
在分享之前,我想先提一個問題:在你交男/女朋友的時候,第一次約會是否重要呢?
我相信在座大部分的朋友都會回答:重要。第一次約會對于雙方而言,都是一個很重要的體驗。一旦這次的體驗出了問題,你就不再有和對方繼續(xù)發(fā)展下去的欲望了。
回到我的主題,我想表達(dá)的是,對于虛擬現(xiàn)實(價值菌:以下簡稱VR)產(chǎn)業(yè)而言,用戶的體驗也十分重要。
而VR產(chǎn)業(yè)現(xiàn)在恰恰面臨著一種情況——在硬件設(shè)備并不普及的情況下,大多數(shù)用戶通過一些并不舒適的或簡易的設(shè)備來體驗,這可是有點給VR產(chǎn)品的體驗判了死刑。
明明有一些VR產(chǎn)品體驗非常棒,但不少用戶在第一次卻經(jīng)歷了較差的體驗,從此對VR產(chǎn)品不再感冒,豈不是很可惜?
到底是什么造成了用戶比較差的VR體驗?zāi)兀?nbsp;
造成用戶體驗差的原因是什么?
●畫面真實度差
這主要取決于效能,效能是優(yōu)質(zhì)畫面的基礎(chǔ)力量。
通俗來講,絕大多數(shù)的游戲玩家一般是以1080p與30fps來進(jìn)行游戲,但VR的畫質(zhì)約為2k,描繪必須接近3k,且畫面刷新率要高于90fps才會順暢,代表執(zhí)行VR游戲的PC效能必須達(dá)到傳統(tǒng)PC的7倍。
但這很難,因此很容易造成畫面失真,影響用戶的體驗。
●延遲造成眩暈感
玩家從當(dāng)前位置改變到另一位置時的圖像被CPU提交,GPU渲染,同步刷新到頭部顯示設(shè)備上,如果每秒有90幀的畫面,可是每一幀都比用戶的移動慢一點,這中間的延遲超過20ms就會導(dǎo)致用戶大腦因無力計算而發(fā)生錯亂,臨床表現(xiàn)就是頭暈、頭暈、頭暈。
而這兩點也大大降低了用戶的VR產(chǎn)品體驗。
所以我們不僅要解決效能的問題,還要解決延遲的問題,“天下武功,唯快不破”。那到底有哪些解決的方式呢?我們愿意把已經(jīng)掌握了的功能分享給大家,共同解決VR產(chǎn)品體驗差的問題。
如何改善VR產(chǎn)品體驗?
一般來說,沉浸式VR體驗(450MPixel/S)(價值菌注:MPixel/S為每秒百萬像素)對性能的要求是普通PC游戲(60MPixel/S)的7倍。
PC游戲以1080p分辨率和30FPS刷新率為技術(shù)數(shù)據(jù),而VR游戲的實際渲染分辨率為1512×1680×2,刷新率需要達(dá)到90FPS,才能帶來良好的體驗。
基于這樣的痛點,我講講如何通過5 種圖形渲染方面的技術(shù)來解決這個問題,實現(xiàn)更好的體驗。
(價值菌:接下來一大堆專有名詞來襲,請準(zhǔn)備好詞典哦。)
? Multi-res shading 多分辨率著色
講白了,我們在VR的世界里看到直的是直的,橫的是橫的,這是因為有一個光學(xué)透鏡,通過光學(xué)透鏡可以看到圖片,所以我們必須做反扭曲(undistortion),來看到一個完美的世界。
但是做反扭曲,卻不是很容易的,這會浪費很多其他項目。
我們所看到的畫面在眼鏡里其實沒有完全成像,只成像了一半,大部分的地方都是黑的,這些都沒有成像,那我為什么要畫那么大?
我畫了150份最后只顯示100份,太浪費。
而Multi-res shading的基本原理是,將圖形渲染與VR頭盔的光學(xué)變形情況結(jié)合起來。
由于VR頭盔貼近眼球,所以需要一組鏡片幫助用戶對焦。但因為鏡片的存在,會導(dǎo)致畫面發(fā)生畸變,所以需要對畫面進(jìn)行畸變補償。
畸變補償?shù)漠嬅嫠栊畔?,比GPU渲染出的畫面要少很多(鏡片光路損失一部分,同時人眼對視覺中心比邊緣看得更清楚)。所以 GPU 本質(zhì)上做了很多無用功。
Multi-res shading 要做的就是,把每一幀的畫面分成多個部分,中間保留更多細(xì)節(jié),而邊緣保留較少細(xì)節(jié)。換個角度就是壓縮畫面,從而提升渲染速度。
所以當(dāng)我們把游戲切成9個部分,根據(jù)9個部分,中間形變最少采取100%的分辨率,剩下的開發(fā)商可以自己填,填完之后在沒有減少視覺的差異下,還是100%,不會浪費。
? Front Buffer Rendering前緩沖渲染
我剛剛講,天下武功為快不破,這里就要通過直接對前緩沖渲染來減少延遲。
前緩沖渲染技術(shù)原理跟直接模式相關(guān)。
簡單來講,如果電腦把 VR 頭盔當(dāng)做普通的顯示器的話,就需要通過標(biāo)準(zhǔn)的兩級緩沖模式進(jìn)行渲染。而識別成 VR頭盔的話,就可以越過 Back Buffer 直接進(jìn)入 Front Buffer,從而減少延遲。
? Context Priority上下文優(yōu)先級
Context Priority可控制GPU調(diào)度以支持各種先進(jìn)的VR功能,像是異步時間扭曲。
稍微解釋一下什么是異步時間扭曲。
它是指在一個線程(稱為ATW線程)中進(jìn)行處理,這個線程和渲染線程并行運行。在每次同步之前,ATW線程根據(jù)渲染線程的最后一幀生成一個新的幀。
可能不是很好理解,我用簡單一點的語言來描述。
舉個例子。
如果轉(zhuǎn)頭過快的話,新位置的畫面還沒渲染出來,或者出現(xiàn)的是前一個位置的畫面,就會引起不適。
怎么解決這個問題呢?
技術(shù)專家想到一種方法,即人為插入一個根據(jù)位置計算出來的幀來占位。
GPU 需要一個獨立的線程來做這件事,搶在下一幀出現(xiàn)之前占位,從而減少畫面的延遲(或因為掉幀而引起的抖動)。
如此不僅能縮減延遲,當(dāng)游戲玩家移動頭部時還能快速調(diào)整顯示影像,無須重新渲染畫面。
? VR SLI 多顯卡支持
這需要用到CPU,以確保兩個眼睛看到同一點。
這里就需要通過增加顯卡來增強(qiáng)渲染性能。
人有雙眼,所以VR圖像都被渲染成左右兩個畫面。
但是這兩個畫面是不一樣的,這就額外增加了CPU和GPU的占用。
雖然,有些計算不需要算兩遍,比如物理計算,陰影圖,游戲邏輯等,但實際視角包含的畫面肯定需要重新計算,以保證正確的時差和深度信息。
所以說,在有些極端情況下,虛擬現(xiàn)實渲染模式下GPU用量是翻番了的。
在這種情況下,如果使用兩塊顯卡,并行處理左右兩個畫面,就可以解決好了。
也就是說,一塊顯卡處理左眼的畫面,另一塊處理右眼的畫面,最后整合在一起輸出。
這個方法可以大大提升計算效率,卻也不會增加延遲。
舉一個例子。
常規(guī)多顯卡渲染即:
顯卡0和顯卡1輪流渲染第n幀和第n1幀,但是要求CPU提交得足夠快,因為CPU要提交兩份DRAWCALL,CPU不能成為瓶頸。
而經(jīng)過改進(jìn)之后:
讓顯卡0和顯卡1分別負(fù)責(zé)繪制左右兩眼,而CPU為兩個顯卡提供一模一樣的DRAWCALL,因為在VR的兩眼繪制的東西基本是一樣的,除了PERSPECTIVE矩陣不一樣。
而VRWORKS通過其API,實現(xiàn)了一組DRAWCALL對多個顯卡的廣播,可以為不同顯卡設(shè)置不同的PERSPECTIVE(常量)。這樣CPU一份DRAWCALL對于兩眼,而兩眼的繪制在兩個CPU并行,延遲大大節(jié)省。
? DIRECT MODE 直接模式
這個模式使得GPU與頭戴式可視設(shè)備之間,能夠具備良好的即插即用兼容性。
它能兼容各種虛擬現(xiàn)實頭盔,即插即用。傳統(tǒng)的渲染,PC顯示器會把VR眼鏡作為顯示器的一個顯示擴(kuò)展,VR眼鏡和GPU是沒有直接交互的。
而透過Direct Mode (直連模式),我們的繪圖處理器驅(qū)動程式就有能力,把頭戴裝置辨識成一部VR顯示器,而不僅僅是一個標(biāo)準(zhǔn)的桌面顯示器,因此能提供更接近無縫的用戶體驗。
VR體驗的重點,是得匹配人類的四大感官才可以得到很大的體驗。我也希望以上所提到的五種技術(shù),可以幫助開發(fā)者真正提升VR產(chǎn)品的用戶體驗。
文章系VR價值論獨家整理,如需獲得轉(zhuǎn)載授權(quán),請?zhí)砑游⑿盘枺篤R-jzj(申請時請備注:轉(zhuǎn)載文章)
- QQ:61149512