
如果在渲染線程進(jìn)行繪制之前(5ms時(shí)),重新再采樣一下傳感器數(shù)據(jù),修正一下視口信息(不會(huì)對(duì)游戲邏輯產(chǎn)生影響),那延遲就縮短到了約12ms

做過渲染優(yōu)化的人都知道,提交D3D Command后,需要等待GPU執(zhí)行完畢,這部分時(shí)間在整幀時(shí)間中的占比還是相當(dāng)高的。那有沒有辦法在渲染完成之后,提交到屏幕之前再次采樣一次傳感器數(shù)據(jù)呢? 如果像下圖那樣的話,延遲可以縮短到3ms!!!

這就是Timewarp的主要思想,我們來看看它是怎么實(shí)現(xiàn)的
Timewarp
了解過延遲渲染的人應(yīng)該都知道,我們可以利用ZBuffer的深度數(shù)據(jù),逆向推導(dǎo)出屏幕上每個(gè)像素的世界坐標(biāo)

這就意味著,我們可以把所有像素變換到世界空間,再根據(jù)新的攝像機(jī)位置,重新計(jì)算每個(gè)像素的屏幕坐標(biāo),生成一幅新的圖像: