游戲為何總是卡?人眼成像背后的秘密
那那些因素會造成個別幀渲染時間超長呢?
想要論證這個現(xiàn)象,首先有必要提一下游戲畫面渲染的原理。和電影的順序播放不同,游戲的幀數(shù)完全是實時渲染而成的。每一幀從生成到渲染完畢,過程非常復(fù)雜。
簡單來說,先要生成三維圖像模型(幾何模型),將它們保存在自身的建模空間,然后通過模型變換將單獨的幾何模型移動到世界坐標系中,然后通過被稱為“相機變換”的過程,將幾何模型的世界坐標系轉(zhuǎn)換為攝像機坐標。相機坐標的參數(shù)包括投影方式、近平面、遠平面、視野和屏幕的長寬比例,它們決定了物體從相機坐標系投影變換到屏幕坐標系的位置。
這些參數(shù)實際上定義了一個視域四棱錐,也叫做視錐體。然后通過裁剪優(yōu)化算法,通過投影到平面生成最初的二維畫面。接著通過消隱、光照計算、紋理映射、顏色融合等光柵化操作來算出相對正確的像素顏色,呈現(xiàn)出凹凸感、陰影、景深等效果,生成最后的游戲畫面。一幀畫面的誕生,至少包含了上述所有步驟,而其中每一步出現(xiàn)問題和延遲,都會對最終成像速度造成影響。
了解了這些,我們可以大膽猜測一下,可能是其中某些環(huán)節(jié)的不正常遲滯造成了個別幀渲染時間過長,最后導(dǎo)致畫面卡頓,于是我們做了下面幾組測試以求獲知真相。
MODE 1畫面參數(shù)設(shè)置
首先筆者懷疑是某些特效拖了后腿,火焰效果,物理加速和真實樹這幾個特效嫌疑很大,試想爆炸瞬間,如果火焰效果占用資源,或者物理加速和CPU的溝通延時這些都有可能是導(dǎo)致個別幀效率低下的罪魁禍首。

關(guān)閉了這幾個特效,依然有幾幀出現(xiàn)了夸張的延時,看來他們并不是關(guān)鍵癥結(jié)所在,而罪魁禍首另有其人……
關(guān)注我們


