當前位置:
首頁 > 科技 > 英偉達概述如何為VR集成注視點渲染+可變速率著色VRS

英偉達概述如何為VR集成注視點渲染+可變速率著色VRS

查看引用和消息源請點擊:nvidia

輕鬆集成VRS注視點渲染

映維網 2019年05月31日)每一代的VR頭顯都能實現大幅度的提升。然而,解析度,刷新率,視場,以及其他功能都產生了獨特的挑戰。為了應對所述的問題,NVIDIA VRWorks Graphics SDK一直在提供各種不同的渲染技術。例如英偉達圖形所帶來的可變速率著色(Variable Rate Shading;VRS),它能夠改變一幀中的著色率。

下圖所示的眼動追蹤是新一代VR頭顯的又一個關鍵功能。諸如Vive Pro Eye等商業設備已經集成了眼動追蹤,而英偉達這為VRS集成提供了進一步的動力,因為著色資源可以集中於注視點區域。在本文中,英偉達的Swaroop Bhonde主要講解了集成注視點VRS的簡單方式,並且介紹了VRS Wrapper NVAPIs。下面是映維網的具體整理:

1. 圖靈架構中的可變速率著色

英偉達圖靈架構帶來了可變速率著色(VRS)這項功能。通過改變應用於圖像不同區域的處理資源,VRS可以平衡渲染性能和渲染質量。這種全新的著色技術能夠改變單個像素著色器所處理的像素數目,而所述操作現在已經可以應用於像素塊,支持應用程序有效地改變屏幕不同區域中的著色質量。在渲染表面時,通過近似輸出至頭顯的透鏡校正圖像,VRS能夠更有效地渲染VR場景,因為這可以避免渲染在圖像輸出至VR頭顯之前會被丟棄的像素。VRS同時可以結合眼動追蹤,根據用戶注視點進一步優化渲染質量。

我們先前的博文已經介紹了VRS的基礎內容,而這一次我們將主要介紹包含VRS Helper和Gaze Handler APIs的VRS Wrapper。

英偉達為Maxwell和Pascal架構推出了VR渲染優化功能,包括多解析度著色(Multi-Res Shading;MRS)和透鏡匹配著色(Lens Matched Shading;LMS)。與前面所述的方法相比,VRS可以提供更佳的邊緣保持。為了進一步說明VRS的優勢,圖2比較了VRS和MRS與LMS的視覺質量。

2. 注視點渲染

對於頭顯解析度的每一次提升,這都意味著GPU需要渲染的像素數目同樣有所增加。為了維持流暢的VR體驗,我們必須繼續尋找優化VR渲染性能的新方法。集成眼動追蹤的頭顯提供了提升視覺質量和性能的新方法。這是因為人類眼睛對視場各個位置的感知質量都所有不同。如圖3所示,視錐細胞的數量與眼睛的敏銳度密切相關。

人眼只能在非常狹窄的視場區域中感知到最高的細節,我們將這裡稱為中央凹。位於注視點區域的外圍視場通常比較模糊,人眼所能感知的細節較少。VRS注視點渲染利用了這一生理特性,集中資源渲染注視點區域的畫面,同時降低外圍視場的渲染質量。通過這樣的方式,注視點渲染能夠提升頭顯的視覺感知質量,並且幫助維持高幀率。VRS注視點渲染可以支持開發者根據現代頭顯提供的注視點輸入來改變著色率。

VRS為開發者實現注視點渲染提供了大量的工具。然而,原來的NVAPI對VRS的支持依然需要開發者付出的繁重的工作量才能有效地實現注視點渲染。現在,最新版本的NVAPI版本已經提供了簡化VRS注視點渲染實現的工具。

3. VRS Helper和Gaze Handler

最初發布的low-level VRS NVAPI為VR渲染提供了完全可定製的功能。新版VRS Wrapper NVAPI則可允許開發者以更少的代碼為應用程序集成注視點渲染。

VRS Wrapper由下面兩個介面組成:

VRS Helper:用於控制注視點渲染參數

Gaze Handler:採集和管理眼動追蹤數據

表1對比了low-level VRS APIs和VRS Helpers Wrapper NVAPIs。

4. VRS Regions VRS區域

在深入介紹設置VRS Helper的細節之前,我們先來看看一個關鍵概念:VRS區域。圖4說明了著色率是如何根據注視點的不同而變化。著色率是指4×4光柵像素塊中的著色器採樣數量。改變一幀中的著色率意味著我們在不同的注視區域改變採樣。

圖4中的深藍色區域對應於中央凹區域或眼睛注視點。中心藍色區域具有最高的著色率,其次是青色區域,以及外圍紅色區域。這允許開發者保持高水平的感知視覺質量,同時不會對幀速率產生不利影響。VRS允許開發者將不同的著色率烘焙到應用程序中。但是,這可能需要大量的編碼工作。這正是VRS Helper發揮作用的時候。

5. VRS Helper可助你輕鬆利用預設和自定義

VRS Helper簡化了注視點渲染的實現,同時沒有放棄靈活性。VRS Helper允許你選擇以下內容來執行注視點渲染。

易於使用的內置預設:這提供了集成注視點渲染的最快方式。你無需深入到任何數字參數,同時仍然提供了一定的靈活性。

完全可定製的預設。對於自定義預設,你可以自定義大多數內部參數,完全按照自己的方式執行注視點渲染。

預設的選擇在Enable()調用本身進行,因此你可以根據任何與遊戲相關的因素來動態更改預設。你同時可以在VRWorks Graphics SDK Sample應用程序中探索所述的預設

6. 內置著色率預設

表2列出了五個內置預設,你可以使用其中一個來設置注視點渲染的著色率。例如,2×2表示由像素著色器調用評估的單個著色將複製在2×2像素的區域中,從而實現粗略著色。另外,諸如4×SS(4×超級採樣)之類的著色率表示像素著色器將調用多達4次。

7. 內置注視點圖案預設

你可以從圖4中的三個內置預設中選擇一個注視點圖案。

8. 自定義預設

著色率和注視點圖案可以完全自定義。你可以在各個設置中選擇「Custom」預設來完成。選擇「Custom」著色速率預設允許你自定義每個區域的著色率。圖5和圖6是相關的菜單選項。

選擇「Custom」注視點圖案預設允許你指定三個同心橢圓的半徑,如圖7所示。半徑值的相對比例是從0.0到1.0。對於位於窗口中心的橢圓,半徑為1.0將跨越窗口的寬度(或高度)。半徑(1.0,1.0)始終表示渲染目標中的完美圓形擬合,在矩形的情況下僅接觸兩個長邊。

圖8描述了自定義預設參數:

9. 平衡版預設:提升質量並最小化性能影響

與傳統的桌面端渲染相比,VR帶來的其中一個額外挑戰是,VR顯示器的每度像素數通常少於桌面顯示屏。所以VR渲染更容易受到鋸齒偽影的影響。另外,在渲染中儘可能多地提供細節對於提升沉浸式體驗而言至關重要。開發者需要處理各種渲染偽影,尤其是鋸齒。對於這個問題,我們可以使用多重採樣渲染目標和MSAA來柔化對象的邊緣。

如果應用程序選擇多重採樣渲染目標/MSAA,執行超採樣可以進一步提升渲染的質量。超採樣可以提高銳度,並且可以為高頻紋理帶來更好的抗鋸齒效果,而這時簡單的MSAA所無法做到的事情你個。對於超採樣,像素著色器在像素內的每個採樣位置運行,而非每像素只運行一次。

如果沒有VRS,應用程序必須為整個渲染目標執行超採樣。由於像素著色器負載增加,這會對GPU產生非常大的壓力。由於VRS Helper可以僅在注視點區域執行超採樣,所以應用程序能夠提高質量,同時最小化性能影響。

另外,「平衡版」著色率預設在非常外圍的區域執行2×2的粗略著色。這反過來可以為中心超採樣騰出一定的GPU性能。

所述的平衡版預設是通過結合下面兩個設置實現:

著色率平衡預設。在注視點域執行4x超採樣,在中間區域執行1x,並在外圍執行2×2粗略著色。

注視點圖案平衡預設。確保注視點區域足夠大,使得外圍區域位於在大多數用戶的瞬時視場之外。

與全屏超採樣相比,採用VRS Wrappers和平衡版預設的注視點渲染展示出非常明顯的優勢,具體請參閱下面圖9的性能圖表:

如圖所示,採用「平衡版注視點」和「著色率」預設可以提升注視點區域的質量,同時能夠保持較高的性能。

10. 編碼VRS Wrapper APIs

VRS Wrapper APIs允許你使用VRS Helper和Gaze Handler介面編碼注視點渲染。

10.1 初始化VRS Helper

要執行進一步的操作,你需要首先初始化VRS Helper。這個過程會返回一個用於調用其他關鍵函數的介面對象。

10.2 初始化Gaze Handler

如果眼動追蹤器運行時或VR運行時沒有實習Gaze Handler,應用程序則必須自行初始化,並在眼動追蹤器獲取時更新注視點數據。

10.3 更新注視點數據

應用程序可以在並行線程中一直更新注視點數據:

10.4 閂鎖(Latching)注視點

VRS Helper需要應用程序標記一幀的開始,亦即驅動程序閂鎖最新注視點,並將其用於餘下繪製調用的位置。

10.5 啟用平衡版預設的注視點渲染

然後,在開始繪製調用之前應用程序需要啟用注視點渲染。注視點渲染保持啟用,直至應用程序予以禁用。

10.6 禁用注視點渲染

在完成注視點渲染所需的所有繪製調用後,應用程序應該禁用注視點渲染。然後,應用程序可以執行後處理和其他渲染任務,如注視點渲染應該予以禁用的離屏渲染。

更多關於NVAPIs的信息請參閱VRWorks SDK包中的NVIDIA Variable Rate Shading Helpers Programming Guide PDF文件。

11. 如何獲取?

NVIDIA VRWorks Graphics 3.2 SDK已經納入了VRS Wrapper APIs。開發者可以嘗試包含其中的示例,並在自己的應用程序中實現VRS Wrapper。

值得一提的是,HTC為Vive Pro Eye創建了一個集成VRS Wrapper NVAPIs的Unity插件。藉助這個插件,你只需點擊幾個按鈕即可快速集成VRS注視點渲染。

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

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


請您繼續閱讀更多來自 映維VR 的精彩文章:

羅技SteamVR手寫筆體驗手記:輕鬆在藝術設計中繪製線條
《Superhot VR》:首發日銷量Quest比Rift高300%

TAG:映維VR |