揭密:小小修改讓A卡DOOM3提速40%
可能有的朋友看了還不是太明白,我們可以這樣簡單地理解:
如果在82年之前出生的朋友一定還記得小時候很少有計算器,所以初中的數學課上用來計算高次冪以及開方運算的時候給每個學生發了一本《中學數學用表》……隨著科技的進步,計算器的應用日漸普及,現在初中數學課堂上已經全部換成計算器了。
這和我們今天在Doom3里遇到的情況就非常類似。在游戲設計之初,當時Q3開發剛剛結束,那時候的顯示芯片無論性能還是功能在今天看來都還都非常薄弱,所以卡馬克就給每個“學生(也就是各種圖形芯片)”發了一本《數學用表》,也就是一個存儲著冪值的矩陣,而這個矩陣正是以貼圖的形式存在的。
卡馬克采用這種方法的主要的目的是保證游戲對各種顯卡的兼容性,因為所有的顯示芯片都能夠在貼圖中尋找數據。
但是,隨著圖形技術的飛速發展,顯示芯片的運算能力有了幾何級數的增長,但Doom3還強迫顯卡在矩陣貼圖中尋找冪值——這種情形就好比現在的初中生都人手一個計算器了,但是每個人還都必須拿著卡馬克準備好的《數學用表》來翻查數據一樣。
而ATI這次的作法就相當于扔掉《數學用表》,拿起了計算器來算冪值一樣。
那么為什么ATI采用這種方法能夠提升性能呢?說起來,這和ATI芯片本身的“先天不足”還有很大關系呢。
在分析這個“先天不足”之前我們先要解釋一下貼圖緩沖的問題。貼圖緩沖比較類似于處理器的Cache,就像是我們會在《數學用表》中最常用的頁碼上折個角或夾個書簽,這樣需要再次用到這頁的時候就能比較快的查找到相應的數值了。
ATI芯片的“先天不足”就是貼圖緩沖會經常性的失效,這就會導致GPU只能再次去查找顯存甚至系統內存中的冪值貼圖了——結果如何你也一定知道了,就是整體效率的降低。
通過以上原理分析我們不難看出,采用GPU直接計算冪值的確能夠提高速度,但是提高的幅度完全取決于場景中的具體情況,所以Humus說的40%的性能提升基本上只會在極限狀態下出現,真實的情況應當是采用這種方法以后幀速率能夠有“小幅度”的提升。
至于有人跟帖說采用這種方法會導致圖像質量大幅降低的說法,目前已經得到了發帖人自己的解釋——這位網友在修改文件的時候查找錯了位置,將MUL R1, R1, program.env[1];注釋掉了。
事實上,從理論的角度來看,ATI的這種方法反而有助于提升圖像的質量——就像用計算器計算出的冪值要比查找《數學用表》得到的結果精確度更高一樣。<
關注我們


