揭密:小小修改讓A卡DOOM3提速40%
首先,關于發帖的這個人,網名Humus,他本身就是ATI的員工,是“work for ati”的,他的發言是屬實的。
其次,對于為什么修改參數以后能夠提升幀速率,我們先要看看改的這兩句的內容是什么意思:
一開始在
PARAM subOne = { -1, -1, -1, -1 };
PARAM scaleTwo = { 2, 2, 2, 2 };之后添加的PARAM specExp = { 16, 0, 0, 0 };本身的意義僅僅是定義了一個四維的向量,這個向量的值就是一個常數向量,其具體值是在第一坐標軸上的長度為16的值。
后來的在
# perform a dependent table read for the specular falloff
TEX R1, specular, texture[6], 2D;上的修改才是最最關鍵的。
我們可以從第一句注釋中看到,下面的這句TEX R1, specular, texture[6], 2D;的作用就是從一個表中讀取一個值來決定一個高光的范圍,而這個表的存在形式則是一個由冪值組成的貼圖。
現在采用的方法是將TEX R1, specular, texture[6], 2D;這句話注掉,并且替換上POW R1, specular.x, specExp.x;
這兩句話中第一句TEX R1, specular, texture[6], 2D;的意義是讀取一個貼圖,并且賦值到R1寄存器(TEX命令便是讀取貼圖的意思)。
現在,我們將這句話注釋掉,然后取代以POW R1, specular.x, specExp.x; 這句話的意思就是計算specular.x的冪,而用前面我們定義的向量specExp.x作為冪的指數。
這樣做有什么作用呢?答案是采用了這種方法以后,顯卡將利用GPU來計算用來表示高光范圍的這個冪,而不再使用讀取貼圖查找值的方法了。
這樣做的好處就是能夠充分發揮GPU的功效,讓GPU來承擔更多的計算的操作——這也就是能夠提升性能的原因了。<
關注我們


