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