引用:
作者Move
問題不大
因過渡期間還有Mantle(偽D12)可用
|
雖然問題不大, 可是問題也很大
講白一點, DX12的最大優勢就是
在設計遊戲時, 可以比較不管 Batch 的數量
問題在於, 長久以來, 尤其是GPU的總運算效能遠超過CPU後, 遊戲設計者就有一條rule 101
每個batch盡量放進越多的物件越好!
100000物件/batch is always (much)x100 better than 1物件/batch x100000
那大家想想遊戲內的情況, 最常見的情況是你操縱
1(FPS,FTG,ACT,RPG)~200(SIM, SLG)個擁有10000~1000000多邊形的角色
幾乎沒有遊戲要你操縱500000個獨立物件, 然後每個物件只有幾百個polygons.
說幾乎是因為有遊戲可以變這樣
可以回想一下SC2, 如果自己搞出無單位上限地圖
那無論你是哪種GPU, 當8ppl總單位超過8000(在i7 2600)下後,都會變幻燈片
因為這時讓Draw call過多, 多到變成 CPU limitation.
不過很明顯的, 這種模式只是惡搞用, 不會有任何公司弄出這種東西
那今天在不需要個別控制物件的情況下, 我為啥要為了DX12把本來幾萬個Draw call就搞得定的畫面, 拆成幾百萬個Draw call?
這會讓你的遊戲
1. 難以設計
2. 無法相容於DX12以下所有模式
3. 對於CPU核心不足的平台造成致命影響
當然, 如果對於物件的精細度要作更多要求, 那解放Draw call的限制是好事
只是這些東西, 又和物理引擎以及遊戲設計甚至人的智慧背道而馳
這又回到遊戲設計面, 有需要捨棄物理引擎, 只為了(可能分辨不出來)更逼真的爆炸效果
讓CPU浪費一大堆時間用幾十萬個draw call處理幾萬個爆炸顆粒?
有需要讓人物的頭髮(可能分辨不出來的)更自然, 而讓CPU去draw call*每一根*頭髮?
這些方法都是早就因為過於土法煉鋼而沒人使用, 不單純只是因為Draw call的問題
只能說, 解放Draw call的DX11以前對多核CPU排程無效率是件好事, 但他只是一小部分