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