為了讓更低端的電腦也能獲得良好的體驗,Oculus可謂費盡心思,繼之前推出ATW(Asynchronous Timewarp,非同步時間扭曲)之後,近日,該公司更進一步推出了新技術ASW(Asynchronous Spacewarp,非同步空間扭曲)。有了這項技術之後,電腦可以只渲染45Hz的畫面刷新率,而使用者最終體驗和本地90Hz畫面的感受差不多。
那麼這項技術是怎麼實現的呢?我們先來回顧一下ATW技術是怎麼回事。
一種生成中間幀的技術
簡單來說,ATW是一種生成中間幀的技術。當遊戲畫面無法保持足夠的幀率時,它能產生中間幀進行彌補,從而維持較高的畫面刷新率。
這項技術的提出者John Carmack目前是Oculus的CTO。
圖片來源:
Oculus博客
Oculus在博客裡對ATW做了詳細的解釋。如上圖所示,GPU給左右眼的畫面分別進行渲染,然後在畫面顯示出來之前插入一個ATW的處理過程。在左邊這幀的處理中,畫面渲染及時完成,此時直接顯示就行了;中間的第二幀渲染未能及時完成,此時如果什麼都不做就會出現畫面抖動,而有了ATW執行緒的話,它會將前面一幀調用出來,結合頭部運動變化預測新的幀,再顯示出來,從而保持幀率。這裡面預測頭部運動的變化非常重要。但ATW只預測3自由度旋轉的的運動,平移沒有被包括進來。
ATW的主要作用是減少畫面抖動,提高效率,同時保持低延遲。
ASW:ATW的進階版
從名字就可以看出ASW和ATW是類似的技術,根據Oculus官方的解釋,ASW是根據之前的畫面幀預測出新的畫面幀。聽起來和ATW差不多,不過ATW預測的只有一個東西:用戶頭部的轉動。在之前沒有房間級追蹤和Oculus Touch的情況下,這基本就夠用了。
ASW可以和ATW一起將VR體驗裡所有視覺運動都覆蓋。包括角色運動,攝像頭運動,Touch控制器的運動,以及用戶自身的位置運動。這樣當渲染速度跟不上時,使用者體驗到的畫面還可以保持流暢。
舉個例子,看下面這個動圖,這個畫面顯示的是,從第0幀到第1幀(相隔1/45秒),手拿一把槍從從右向左移。ASW執行緒會從這個運動中產生一個新的預測幀(第1幀之後的1/90秒)。ASW執行緒會檢測槍的運動並生成一個新幀,代替程式顯示在螢幕上。
在VR中,ATW和ASW是相輔相成的。Timewarp適合頭部轉動,實際上,對於長距離觀看的靜態圖像它是完美的。類似全景視頻這類應用,ASW沒必要用到。相反地,Spacewarp應對近處的動畫物體非常棒,但對於追蹤頭部運動則不大行。
之前有了ATW時,使用者轉頭畫面可以保持流暢,現在有了ASW,VR裡物體的運動也可以很流暢了。
ASW也不完美
和ATW一樣,ASW是自動適配所有應用的,不需要開發者做什麼事。但這項技術也不是完美的。
在低於螢幕刷新率一半的情況下,ASW效果不是很好。另外,取決於顯示的畫面,由於不完美的幀預測,可能會出現視覺假像。典型的例子如下:
1、快速的亮度變化。
閃電、擺燈、淡入淡出、閃光燈,以及其它快速的亮度變化很難為ASW進行追蹤。ASW試圖識別區塊時,這部分畫面可能會出現晃動。另外,部分半透明動畫場景也可能出現類似效果。
2、物體去遮擋拖尾。“
去遮擋”是個圖像術語,意思是物體移開對某個區域的遮擋。當物體移動時,ASW需要有畫面去填補它不再遮擋的那個區域。而ASW並不知道給這個區域填補什麼,此時後面的畫面就會拉長來進行填補,形成拖尾。由於45 FPS時物體移動的距離通常是很小的,這個拖尾一般看不出來。
3、重複圖樣的高速運動。
例如在鐵欄門前跑動並看著它。由於物體的一部分看起來和其它部分類似,就很難判斷向哪邊移動了。對ASW來說,這種錯誤預測極少出現,但偶爾仍會發生。
4、頭部鎖定的元素運動太快而無法追蹤。
一些應用會使用頭部鎖定(意即相對你的頭不運動)的元素,比如駕駛艙,HUD或是功能表。如果應用試圖自己處理這樣的元素而沒有應用Oculus SDK提供的鎖定層,那麼當背景相對鎖定元素運動得太快,就可能會出現抖動。ASW可以進行一些彌補,但有時用戶頭部運動太快,導致無法很好地追蹤,結果是畫面不流暢。如果用Oculus SDK提供的鎖定層則可以帶來理想的效果。
Oculus提醒開發者不一定要規避這些場景,但需要注意它們的出現。ASW在絕大多數場景下(但並非所有場景)都可以對不足90 FPS的渲染進行彌補。ASW對抖動會有很大的改善,並且和完全本地渲染的畫面相比幾乎看不出區別。
圖片及參考來源:
Oculus