假設(shè)我們在每幀開始的時候(上一次垂直同步結(jié)束)采樣一次傳感器數(shù)據(jù),在垂直同步之前完成提交,那延遲就是16.67ms;
如果當前幀無法在16。67ms內(nèi)完成渲染,比如花了17ms,那么就會拖到下一幀進行提交,屏幕上顯示的畫面就還是上一次的圖像,這時候的延遲就變成了16.67*2=33.33ms。
這就對VR的渲染提出了非常高的要求:
FPS必須達到刷新率的要求,90Hz就是90Hz,80FPS是不行的,會被垂直同步拖累成45FPS;
FPS必須保證穩(wěn)定,偶爾掉一兩幀在VR中的感覺非常明顯,可能某個物體的位置已經(jīng)差了幾十個像素了。
以O(shè)culus Rift(消費版)為例,1080x1200x2的屏幕分辨率,90Hz的刷新率,再加上因為變形所需要的UpSampling,實際的渲染畫面就是3024×1680@90Hz,這性能壓力幾乎與4k@60Hz相當。所以,單純的提升刷新率和分辨率,目前來說渲染能力還是跟不上。不過既然有了性能需求,硬件廠商才有前進動力,對整個行業(yè)生態(tài)來說,是件好事。
引擎層面的優(yōu)化
除了拼命優(yōu)化降低每幀畫面的渲染時間外,引擎層面還可以通過一些策略進行優(yōu)化,關(guān)鍵的思路就是: 能不能把采樣傳感器數(shù)據(jù)的時間點盡量延后,讓它與垂直同步的時間點盡量靠近?
這里我們?nèi)匀患僭O(shè)60Hz,每幀時間16.67ms(約17ms),忽略硬件延遲

如果在游戲邏輯過程中(1ms時)采樣傳感器數(shù)據(jù),那延遲大約就是16ms