Master Member
|
這麼好的文當然要推一下....
順便跟各位說明一下在設計遊戲時CPU與GPU的考量點.
基本上來說, 遊戲效能的瓶頸粗略來分可以分成「CPU Bound」與「GPU Bound」
當然還有可能卡在HDD, 記憶體和匯流排, 不過那個我們一般在設計遊戲時比較少
考慮到, 還是以CPU與GPU的執行效能瓶頸來做最佳化.
會卡在GPU的, 一般上來說都是Shader用的兇的(如3DMark05)或是場景同一時間
看到物件數少的(如DOOM3). 這時候CPU使用時間<GPU使用時間, 那提高GPU效
能就會看到效能的提昇. 反之就算CPU再快做完, 也是要等GPU把東西畫出去才能
再處理下一個Frame的東西.
會卡在CPU的, 大部份都是同一時間看到的物件數很多(尤其是戶外場景, HL2就是
很好的例子), Shader指令數用得少, Shader的pass少的(HL2又是很好的例子).
基本上場景每多一個物件, 都會分掉一部份的CPU時間來做處理.甚至包括看不到的
物件(例如在你背後的). 此時是CPU使用時間>GPU使用時間. 表示GPU雖然很快畫
完了, 但是CPU要準備給GPU資料(在接受玩家的操作, 轉換成對應的動作並且更新
所有該更新的物件, 像字彈, 人的走動等等)卻很慢.
就設計上來說, GPU Bound可以很容易的經由Shader的多個Implementation
(例如一個shader同時會有ps2.0跟ps1.4版本可以選擇), 或是經過選項關掉某
些shader的pass, 犧牲畫質來避開shader bound. 但是畫面上的物件數目, 通
常是難有選項可以選擇的. 總不可能少畫幾棟房子或幾面牆吧(ps.每個物件的面
數多少跟CPU沒有很直接的關係)? 所以CPU Bound比較難用選項調整來避開.
近代的遊戲引擎像unreal 3或source engine(做HL2的遊戲引擎), 整體來說會
走向CPU會愈用愈兇的趨勢. 當然Shader也是會愈用愈兇的啦, 看怎麼用法跟
遊戲類型的不同來決定.就算是7800 SLI, shader卯起來用也還是會卡在GPU
上面的. 不管怎麼說, 一個遊戲跑的順的系統, CPU跟GPU是同等重要的~
__________________
祝~Po文破千篇......
|