資源描述:
《解決虛擬現(xiàn)實VR中用戶不良體驗》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。
1、解決虛擬現(xiàn)實(VR)中用戶不良體驗的多種方案楊雪青內容技術開發(fā)工程師英偉達(NVIDIA)關于虛擬現(xiàn)實(VR)?極強的真實體驗感?下一個游戲開發(fā)的重要領域?尚有諸多挑戰(zhàn)需要解決–佩戴設備的制作–輸入方法的完善–VR游戲體驗的設計–渲染性能的提高VR給游戲渲染提出了苛刻的條件渲染延遲反饋延遲時間≤20msVR給游戲渲染提出了苛刻的條件立體渲染為雙眼各渲染一個場景GAMEWORKSVR針對游戲和VR頭戴顯示設備開發(fā)者的SDKGameWorksVR上下文優(yōu)先級VRSLI多分辨率著色直接模式前緩沖渲染上下文優(yōu)先級上下文優(yōu)先級(ContextPriori
2、ty)?允許VR平臺的制作者執(zhí)行異步時間扭曲(AsynchronousTimewarp)來減少渲染延遲?通過GPU優(yōu)先權(Preemption)控制機制來實現(xiàn)幀隊列FrameNFrameN+1…CPUFrameN?1FrameNFrameN+1…幀隊列…FrameN?1FrameNFrameN+1…GPU…FrameN?1FrameNFrameN+1掃描輸出…FrameN?1FrameN時間幀隊列CPUFrameNFrameN+1…幀隊列GPUFrameN?1FrameNFrameN+1掃描輸出…FrameN?1FrameN時間時間扭曲(Tim
3、ewarp)沒有時間扭曲的情況采樣頭部位置CPU發(fā)送至GPUGPU翻轉(Flip)掃描輸出延遲使用時間扭曲的情況CPU時間扭曲(Timewarp)發(fā)送至GPUGPU翻轉(Flip)掃描輸出延遲使用時間扭曲的情況現(xiàn)有時間扭曲的優(yōu)缺點?這種減少延遲的方法,對于鏡頭旋轉能產(chǎn)生相當好的效果?無法應對鏡頭移動的情況?無法應對渲染跟不上Vsync幀率時的情況時間扭曲的管線氣泡(PiplineBubbles)時間扭曲(Timewarp)垂直同步(Vsync)CPUFrameN等待FrameN+1GPU…FrameN空閑空閑…掃描輸出FrameN?1Frame
4、N時間后期抓取常量(Late-LatchingConstants)時間扭曲(Timewarp)垂直同步(Vsync)CPUFrameNFrameN+1…GPU…FrameN等待FrameN+1掃描輸出FrameN?1FrameN時間異步時間扭曲(AsynchronousTimpwarp)垂直同步垂直同步CPUFrameNFrameN+1…GPU…FrameNFrameN+1時間扭曲掃描輸出…FrameN?1FrameN時間異步時間扭曲的優(yōu)缺點?防止最壞情況的發(fā)生:畫面卡住?彌補偶爾發(fā)生的卡頓?無法應對鏡頭移動的情況高優(yōu)先級上下文(High-Pr
5、iorityContext)?NVIDIA的驅動支持高優(yōu)先級圖形上下文(High-PriorityGraphicsContext)–優(yōu)先搶占整個GPU資源?主渲染?普通上下文?時間扭曲渲染?高優(yōu)先級上下文異步時間扭曲&高優(yōu)先級上下文垂直同步垂直同步主渲染線程FrameNFrameN+1…時間扭曲線程搶占(Preempt)搶占(Preempt)GPU…FrameNFrameN+1時間優(yōu)先權(Preemption)?Fermi,Kepler,Maxwell:Draw-level優(yōu)先權–GeForceGTX500系列開始?以DrawCall為單位進行
6、切換–遇到長時間的DrawCall會延遲上下文的切換?今后的GPU:將使用更小的切換單位開發(fā)建議?盡量將渲染幀率控制在頭戴設備的自帶幀率上?異步時間扭曲提供了效果保障–可以隱藏掉偶爾發(fā)生的卡頓或掉幀狀況–但無法從根本上提高幀率?避免長時間的DrawCall–目前的GPU以DrawCall為單位進行上下文切換–長DrawCall可能阻礙異步時間扭曲的工作–對時長超過1ms的DrawCall進行分割?例如:開銷很大的后處理,可以將屏幕分塊處理VRSLIVRSLI一雙眼睛...兩塊GPU!隔幀渲染(Alternate-FrameRendering,A
7、FR)SLICPUNN+1GPU0NGPU1N+1掃描輸出NN+1延遲VRSLICPUNN+1GPU0NN+1LLGPU1NN+1RR掃描輸出NN+1延遲VRSLIL共享命令流API(Sharedcommandstream)RVRSLI各GPU狀態(tài)
8、常量緩沖(ConstantBuffer)
9、視口(Viewport)/剪切(scissor)L引擎LRAPIRVRSLIGPU掩碼SetGPUMask(1)SetGPUMask(3)SetGPUMask(2)VRSLI通過PCIe進行跨GPU數(shù)據(jù)拷貝LLRR使用VRSLI的注意點?由應用程序決定如何使
10、用多個GPU–需要引擎集成?加速效果以來應用程序的使用?多GPU執(zhí)行相同復制的工作會影響性能提升效果–陰影貼圖–GPU粒子,GPU物理模擬開發(fā)建議?引