GDC2017: PlayStation VR Worlds中的渲染優化

介紹了一種很trick的優化方法: Checkerboard Rendering

這裡他們稱之為Resolution Gradient

主要的思想跟NVIDIA的MultiRes Shading差不多, 但是不用依賴硬體的特性才能實現. 簡單一點說就是, 因為VR顯示器透鏡變形的原因, 邊緣的渲染解析度用不著那麼高, 中心區域是全解析度就好了.

這個優化思路來自於GDC2016上」Fast and Flexible: Technical Art and Rendering For The Unknown」.

通過4個2x2像素的Quad(這是做像素著色的基本單位)做Mask, 就能實現4個級別的解析度

空出來的那些黑色像素使用最近有效像素的顏色填充上, 需要一個額外的Dilate Pass(當然也可以整合到後期效果里, 直接在採樣時就取有效像素)

跟TemporalAA結合到一起可以解決走樣的問題, 但是需要每幀使用不同的Mask

在60FPS的情況下, 結省了大約4ms!!!

但是走樣的問題還是挺明顯的, 特別是在高頻細節或者動態的像素上

與4x4MSAA一起用, 調整MSAA的採樣位置, 這樣可以做到像素級的Mask, 而不是之前的Quad, 效果也就好多了

還有一個問題, 如果不能開Early Z, 那麼這個優化就沒意義了, 解決辦法是弄個PrePass

未來可以根據畫的物件類型來決定哪些像素使用低解析度(Mask)來渲染

既然這個技術不依賴特定的顯卡, 那麼就可以在PC的VR遊戲上用, 在PixelBound的情況下, 性能提升應該還是很可觀的, 後續有時間可以嘗試下


推薦閱讀:

數字圖像處理與CG有多大聯繫?與遊戲引擎有多大聯繫?
計算機中的圖片為什麼都是矩形的?顯示圓形也只能周圍透明?
向量、矩陣、三維變換及四元數
Screen Space Reflection特定角度顯示錯誤問題?
WebGL2.0標準的發展和普及如何?

TAG:虚拟现实VR | 计算机图形学 | GDC |