Board logo

標題: [分享}3D Mark 2003:遊戲玩家的測試程式? [打印本頁]

作者: sodown     時間: 2006-6-5 08:51 PM    標題: [分享}3D Mark 2003:遊戲玩家的測試程式?

新版3D Mark 2003終於現身!不過在一陣新鮮感之後,使用者與硬體測試者很快就清醒過來。CPU效能似乎並沒有在測試結果中扮演重要角色。在3D Mark分數中唯有顯示卡才是重頭戲。

而這也引發了一連串的議論。即使連NVIDIA都刻意與新版程式劃清界線,他們認為這套基準測試程式與現實狀況並不相符。像程式中遊戲測試所使用較少人玩的飛行場景測試(Wings of Fury)就完全不符合市場現況。GT2和GT3測試更是如此。這兩者測試基礎的3D引擎完全相同,也同樣使用了1.4版的pixel shader(像素著色)程式。以下摘錄自NVIDIA的聲明:

這些測試場景中所有pixel shader程式都使用了ps1.4版規格。ps1.1則為那些不相容於ps1.4的硬體設備提供pixel shader的支援。不過這些場景中完全看不見PS1.3版 pixel shader的蹤影。像目前Tiger Woods和Unreal Tournament 2003等目前流行的遊戲全都是使用ps1.1和ps1.3版的pixel shader。就算有使用ps1.4的遊戲,那也是少數中的少數。

與支援PS 1.4的顯示卡比起來,這些shader程式不僅會在相容PS 1.1顯示卡上產生較差的效果(它們必須用較多步驟來產生同一種效果),而且也不容易應用在實際3D遊戲中。Xbox就不支援PS 1.4的程式碼。更糟糕的是3DMark03用不同的shader程式碼來測試不同的顯示卡。這使得不同3D晶片之間幾乎不能夠進行比較。在3D Mark 2001 SE中,只有某個特別的PS1.4測試才會出現這種情況。而現在包括GT4(Mother Nature)在內的所有測試實際上已經無法相互比較了。有趣的是我們聽說Futuremark公司將會正式對此提出因應之道。在3D Mark 2003的官方白皮書中,你可以看到下面這段文字:

Futuremark:Vertex和pixel shader已經變成3D圖形中不可或缺的一部分,因此它們在3DMark03中也佔有重要的地位。遊戲測試中的DirectX 9測試使用了2.0 vertex shader(頂點著色器)和2.0 pixel shader(像素著色器)程式。所有其他遊戲測試則是使用1.1 vertex shader。DirectX 8遊戲則在允許的情況下使用1.4版的pixel shader程式;否則將預設使用1.1版的pixel shader。
NVIDIA則是進一步批評GT2和GT3所使用的3D引擎效率不佳且無法反應實際狀況:

這兩項測試試圖仿效即將推出的第一人稱射擊遊戲「Doom 3」所使用的「Z-first」成像方式。它們有著「類似Doom」的外觀,但卻使用著與Doom 3或其他任何已知遊戲完全不同的怪異成像方式。這樣或許可以建構出一個有趣的demo,但卻沒有遊戲會採用這種效率不彰的方法。而這些測試中所使用的陰影計算方式就是最好的說明。這些測試程式試圖採取Doom 3中稱為stencil shadow volume的陰影技術。這是種對場景中所有物件進行多次運算的演算法。而3DMark03運算內容如下:

對所有物件:

Pass 1(Early Z)
以Vertex Shader繪製物件表面
Pixel Shader 寫入Z,RGB =周遭,而Alpha = Z軸透視
對所有光線:

對所有物件:
Pass 2(計算Stencil Shadow Volume)
將stencil(模版)設為遞增/遞減
以Vertex Shader繪製物件表面
執行Stencil extrusion運算
無Pixel Shader
Pass 3(光線投射)

以Vertex Shader繪製物件表面
Pixel Shader(光線投射)寫入RGB =彩色
這項演算法中標示「以Vertex Shader繪製物件表面」的部分在每個物件一次又一次進行完全相同的表面繪製計算。舉例來說,在一個有5道光源的場景中,每個物件必須重繪表面11次。如此不佳的效能在stencil extrusion計算所使用的龐大演算法中會被進一步放大。與Doom方式不同的是,3DMark03採用了一種比產生extrusion效果所需vertex數目多出六倍時間的方法。在我們五道光源的範例中,這相當於在每個物件上進行36次的表面重繪!沒有任何一款遊戲會採用這種方式。

這種方式對圖形管線中vertex部分會造成嚴重的效能瓶頸,而使得圖形引擎其他功能(成像、像素程式、raster操作等等)根本無法運作。不幸的是3DMark03 並沒有採用每頁框每個物件只進行一次表面繪製、暫存繪製結果、使用暫存結果來進行陰影效果所需的多次繪製等方式來模擬Doom或其他遊戲。而這是個可以讓圖形引擎中vertex和pixel/raster操作都能全速運作的均衡方法。採取3DMark03的方式來建構硬體就好像在設計一條六線道高速公路時卻假設會有人在上面開堆土機一樣。像3DMark03中這種浪費、無效率的測試程式便會導致這樣的設計,而這對於實際遊戲毫無助益。


NVIDIA並認為GT4(Mother Nature)測試表現不怎麼樣:

今年的3DMark有一組新的戶外自然場景。它的目的在於呈現符合新規格DirectX 9.0(DX9)應用程式的風貌,這些程式預定在今年推出。這個遊戲場景最大的問題是它只有DX9。這個測試中9組pixel shader中的7組依舊沿用了DX8中的ps1.4。這裡同樣有前面所提過關於ps1.4版shader的問題。只有兩組pixel shader符合新版ps2.0。相信這個測試可以作為遊戲未來重要指標的消費者將會發現,它只不過是驚鴻一瞥罷了。

這真是個相當刺耳的說法。姑且不論是X製造商還是Y製造商會因此處於不利的情況,新版3D Mark的意義還是值得討論的。這讓人驚訝的想到這項不符實際情況的說法其實多少也適用在早期版本的3D Mark身上,而NVIDIA的行銷部門就曾經大力推銷這套測試軟體。有個讓人側目的想法是NVIDIA擔心GeForce FX沒辦法在3DMark03中與Radeon 9700 PRO相抗衡。而對GeForce FX「發行版驅動程式」(v42.63)的初步測試也馬上肯定了這項猜測。不過NVIDIA在昨天推出了新版驅動程式(v42.68),使得這項測試有了完全不同的結果:


顯示卡 Radeon 9700 PRO GeForce FX 5800U GeForce FX 5800U
驅動程式 v6.14.01.6292 v42.63 v42.68
3DMark分數 4718 3DMarks 3468 3DMarks 5253 3DMarks
GT1–Wings of Fury 165.6 fps 163.3 fps 169.6 fps
GT2–Battle of Proxycon 30.6 fps 19.7 fps 35.5 fps
GT3–Troll's Lair 28.3 fps 16.5 fps 28.6 fps
GT4–Mother Nature 27.1 fps 19.8 fps 35.1 fps
CPU分數 607 CPUMarks 576 CPUMarks 577 CPUMarks
CPU測試1 63.9 fps 57.7 fps 57.6 fps
CPU測試2 11.4 fps 11.3 fps 11.4 fps
填充率(單材質) 1499.7 MTexels/s 1302.8 MTexels/s 1303.2 MTexels/s
填充率(多材質) 2269.0 MTexels/s 3277.7 MTexels/s 3277.7 MTexels/s
Vertex Shader 14.9 fps 7.3 fps 13.8 fps
Pixel Shader 2.0 41.1 fps 12.0 fps 14.2 fps
Ragtroll 19.8 fps 11.9 fps 17.7 fps


某些例子中新版驅動程式讓shader程式的效能幾乎增加了一倍!GeForce FX只在Pixel Shader 2.0測試中(依舊?)落後。讓人驚訝的是Radeon 9700 Pro在CPU測試1中得到了較好的成績,因為在這類測試中,顯示卡無論如何都不應該扮演太重要的角色才對。

而測試結果到底受到驅動程式最佳化多大的影響?以下是NVIDIA聲明的另一份摘錄:

3DMark03將某些特色整合到四項優異的測試場景中。但這些場景也與那些沒有包含在3DMark03之內的現有遊戲軟體相距甚遠。由於缺乏與實際遊戲的相似性,所以它呈現了錯誤的遊戲體驗感,且無法讓消費者在採購決策上具備正確的資訊。它也迫使硬體廠商將貴重的研發資源浪費在永遠無法對實際遊戲有所助益的人為造假中。而消費者正是最後的輸家。

在倒數第二句陳述中,NVIDIA自己承認為了特定測試程式而在驅動程式最佳化中投入大量心力。這麼做在實際遊戲中倒是沒什麼問題,因為到最後玩家還是會從這些實質改良中獲益。

結論

無論你怎麼看待NVIDIA對3D Mark 2003的意見,這其中總有些耐人尋味之處。早在2001和更早版本之前,3D Mark所呈現的總成績就已經是頗有爭議的,不過你總是可以在單項測試中看出某張顯示卡的能耐。不過在2003版中,Futuremark進一步刪去了這些測試。像Polygon Count(多邊型計數)和光線測試就已經被拿掉了。即便是CPU分數也有問題,因為結果決定權在顯示卡身上。圖形品質測試只能夠從螢幕擷圖、而非藉由那些能夠凸顯顯示卡FSAA實作優缺點的特殊場景展示來判斷。

至於Futuremark要怎樣回應批評還有待觀察,特別是Pixel Shader 1.4這一項。在NVIDIA 於倫敦舉辦的「Dawn Till Dusk」的研發者會議上,我遇到一位遊戲開發者(他要求不要報導出他的名字)提到一些有趣的事。他向我表示顯示卡驅動程式可以輕鬆地辨識出某些特別且著名的shader程式碼,並在遊戲或測試程式執行時替換成經過調校的特殊程式碼。而該軟體將不會注意到這個小技巧。3D Mark中所使用的固定(且著名)pixel和vertex shader測試則因此完全失去了意義。到最後測試顯示卡效能最好的方法依然是要用「實際」的遊戲。而NVIDIA現在也持同樣的看法:

所以哪裡才能找到玩家真正的測試基準呢?執行實際遊戲如何?大部分受歡迎遊戲都因此將測試模式包含在內。《Doom3,毀滅戰士3》、《Unreal Tournament 2003,魔域幻境2003》和《Serious Sam Second Encounter,重裝武力2》對現今與未來的遊戲而言都是更好的效能指標。而且由於遊戲廠商將其遊戲引擎授權給其他遊戲開發商,所以你可以預期下一代遊戲程式碼中將會出現這些遊戲引擎。今日消費者不再需要依賴仿效遊戲的人為測試。在大部分情況下,受消費者歡迎的遊戲就已經內建了測試程式。

NVIDIA突然改變的態度令人不解–直到現在為止,3D Mark都還被製造商視為不錯的測試程式,這其中也包括了NVIDIA。初步來看,新驅動程式的出現並不能被視為一項掩蓋FX較弱測試效能的企圖。或許NVIDIA擔心的是失去對研發3Dmark的影響力。特別是NVIDIA打算藉由「The way it's meant to be Played」這支程式來擴大它對於遊戲開發商的影響力。當然,由於在實際遊戲中得到更好的圖形與效能,使用NVIDIA顯示卡的玩家會因NVIDIA介入而獲益。不過非NVIDIA顯示卡的玩家大概就有話要說了。在NVIDIA開發者論壇中可以很清楚地發現,Pixel Shader(2.0)程式碼並無法在所有硬體上都得到相同的執行效果。到最後,遊戲開發者必須使用對應不同晶片的特殊程式碼,以確保在所有可能硬體上都能夠得到不錯的效果。而這也說明了為何需要瞭解NVIDIA與遊戲開發者之間的關係。這是NVIDIA因為Futuremark拒絕使用最佳化程式碼而對3D Mark 2003批評的主要原因嗎?在這件事情上,NVIDIA批評3D Mark不切實際是對的–第一,它是在沒有NVIDIA參與的情況下進行開發的,第二,很難想像真正「客觀」的程式碼能夠在校能評估上起任何作用。




歡迎光臨 網際論壇 (http://centurys.net/) Powered by Discuz! 2.5