研發實戰:如何在Oculus Mobile VR平臺進行Vulkan開發

2019-08-09 09:22 | 達峰網

移動VR從一開始就將OpenGL ES作為圖形API,但現在大多數引擎都開始轉向Vulkan和DX12等API,因為它們為開發者提供了更大的靈活性和更低的渲染負載。Oculus日前介紹了GL和Vulkan在開發VR游戲功能方面的差異。需要注意的是,本文深入介紹了與圖形相關的細節,讀者需要掌握GL和Vulkan的基本知識。下面是映維網的具體整理:

 

 

由于Adreno圖形驅動和Oculus運行時方面的改動,下面介紹的大多數功能都需要新發布的Build 7.0版本。

1. 多重采樣抗鋸齒(Multi-sampling Anti-aliasing;MSAA)

與PC顯卡不同,移動芯片集的MSAA是由Tiler執行MASS操作,然后當Tile完成時進行解析(將所有子樣本平均到最終像素),再將其結果存儲到主存儲器。由于從Tile內存到一般內存的帶寬是非MSAA,這允許我們以接近與非MSAA相同的速度運行MSAA幀緩沖器。這對VR非常重要,因為每個眼睛的像素非常低,會產生明顯的邊緣鋸齒。

對于GLES,這是通過使用MSAA幀緩沖區將其渲染到非MSAA紋理來完成。MSAA幀緩沖區使用以下函數進行初始化:glFramebufferTextureMultisampleMultiviewOVR

盡管有效,但由于其隱式性質,這引起了一系列的問題,例如“我不認為我的系統支持MSAA,我的紋理只是RGBA8888,我如何啟用MSAA”。

在Vulkan中,由于一切都為顯式。每個子通道由包含pColorAttachments,pDepthStencilAttachment和pResolveAttachments的vkSubpassDescription結構定義。一個優秀的Vulkan應用程序應該通過附著4x MSAA緩沖區來設置MSAA,并將其用于顏色/深度附件中的顏色和深度,以及pResolveAttachment中的非MSAA顏色緩沖區。應用程序同時應該將pColorAttachments和pDepthStencilAttachments storeOperations設置為VK_ATTACHMENT_STORE_OP_DONT_CARE。這將告訴驅動:“我以后不會要求這種顏色或深度,請不要將它們存儲在Tile內存中并丟棄它們”。

熱門文章
圖文推薦
最新推薦
編輯郵箱:[email protected] | xml地圖 | 達峰網移動端
鄭重聲明:達峰網網站資源摘自互聯網,如有侵權,麻煩通知刪除,謝謝!
11选5任3口诀