過去我們知道,要測出一款 3D 遊戲在不同系統平台下的每秒幀數,都需要依賴一些跑分軟體,像是鼎鼎大名的 3DMark 來完成。但在 VR 世界就跟過去不太一樣,因為 VR 的概念是三度空間,跟平面化的傳統遊戲畫面大不相同。這時候就需要特殊的 VR 跑分軟體來測試效能。
很多人都知道測試顯卡表現要用 3DMark 來跑分。但 VR 呢?虛擬實境的畫面表現可以說是仿造真實三度空間而來,傳統遊戲雖說是 3D ,但表現的載體一直是平面空間。這時候有點天分的玩家就會發現可以試試 NVIDIA 之前推出過的 Frame Capture Analysis Tool (FCAT)可以逐幀紀錄分析,不過這個工具依然是對應一般遊戲,而非 VR 。NVIDIA 也知道這個工具有他的極限,在上週 GDC 2017 中,NIVIDIA 就發表了一個將 FCAT 導入到 VR 環境的新工具。
在 FCAT VR 之前,其實也有 VRMark 與 VRScore 這些工具,NVIDIA FCAT VR 基本上跟這些軟體的作用一樣。可以得到 VR 環境下的效能比較,根據 NVIDIA 的說法, VR底下的畫面機制可分為 VR Game 與 VR Runtime 兩個部分,正常來說運作方式是這樣:
- 首先 VR Game 的部分是遊戲針對頭戴式裝置(Head-mounted display, HMD)的位置,透過感應器來取樣。藉此更新相機感應器的訊息,並正確捕捉到使用者的 HMD 所在座標位置。遊戲這時會建立第一個幀,而 GPU 開始渲染下一幀。
- 接著 VR Runtime 部分,渲染後的3D材質被讀取,並被更改成為圖樣,也就是在 HMD 上顯示畫面。在這個環節中還包括對顏色與鏡面扭曲的修正。
然而, VR Runtime 的部分如果生成一幀的時間太長,或者場景太過複雜,最後被生成的時間拖長,下一幀也來不及被渲染,這時候一般的渲染程式會重新渲染上一幀的畫面,但體驗上這種感覺就跟 Lag 沒有差別,特別在 VR 的體驗中對於 Lag 是能避則避的。
在演算法的部分,這種因為渲染時間過久的問題是可以彌補的,一般像是 Asynchronous Timewarp (異步扭曲,ATW)的技術就是用來解決這時候的問題。各個公司都會有類似的技術出現,但邏輯上主要都是巧妙的利用感應器的回傳的資訊,在最近的位置上合成出一幀(也被稱做 Re-Projection 再投影),這時候幀數雖然會飛快的下降,卻比機械式的在每一幀中間插補畫面的效果好。
FCAT VR 主要在四種領域採集關鍵的資訊。首先是遊戲應用中所提出申請的幀(Dropped Frames),接著是異步扭曲後丟掉的幀(Warp Misses),接著是 FCAT VR 同步紀錄的每幀時間資訊(FCAT Frame Time Data),然後是異步扭曲後人工合成的幀(Frames synthesized by asynchronous spacewarp)。為了讓玩家更容易瞭解效能變化,NVIDIA 還開發出一個用 Python 語言寫的 GUI 介面,用來讀取測試後產生的 log 檔製作圖表。
從目前看到的截圖來看,FCAT VR 並不像想像中那麼複雜難用,介面相對平易近人,稍微對 Benchmark 軟體有所認識的人都能理解這個軟體的使用方法。而在 FCAT VR 中也能看到測試數據存取路徑、Benchmark 相關熱鍵,測試時間的視窗等畫面。透過 FCAT VR 可以方便的紀錄 VR 軟體的效能,填補過去無法針對 VR 效果評比的空缺。至於這項工具預計在這個月中旬開放下載,如果你已經入手了可供 VR 遊戲的電腦主機與 HMD 設備,相信這個工具可以讓你更瞭解到你所玩到的 VR 遊戲到底效能是好還是不好。