3Dmark: Fusk eller optimering?

0

Med all kontrovers kring
3DMark03 tänkte jag ta tillfället i akt att diskutera det här
med optimeringar och fusk. Var drar man gränsen för vad som är
vad? Vad betyder detta för användandet av 3DMark03 osv. Ha i åtanke
att det jag skriver här är subjektivt. Det finns inga regler här
och därför måste vi använda vårt sunda förnuft
för att tolka den information som finns. För den som är mindre
insatt i hur 3D-grafik fungerar kan det ju dock vara svårt att tolka
de olika partnernas uttalanden.



Angående
nVidias optimeringar:

nVidia applicerade till en början optimeringarna som mycket tydligt sänkte
kvaliteten i 3Dmark03. Detta är uppenbarligt oacceptabelt oavsett synvinkeln.

Lite mer komplicerat blir
det med de nya optimeringarna. Här drog nVidia fördel av att 3DMark03s
tester har en kamera med en förutbestämd "väg" genom
scenerna. Med kunskapen om detta kunde nVidia manuellt sätta in så
kallade clip planes på väl valda tillfällen. Allt som faller
bortom ett clip plane kommer inte att renderas.
Att sätta in clip planes fungerar bara om man vet exakt hur en "kamera"
ska röra sig. Skulle man göra det i Quake 3 t.ex. så skulle
all grafik bli helt tokig.
Ni kan själva testa hur det ser ut när man överskrider ett
clip plane genom att t.ex. starta CS och när ni är i free camera
mode åker ni in med kameran i ett hus eller t.ex. utanför kartan.
Här smetas allt bara ut till ett enda stort kladd av konstig upprepande
grafik.

Den andra delen av deras
optimeringar rör att nVidia inte låter testet rensa den bakre bufferten.
Detta resulterar i liknande grafikproblem som de när man rör sig
utanför ett clip plane. Samma sak gäller här: denna typ av
optimeringar går inte att applicera på ett spel eftersom man helt
enkelt inte vet hur kameran kommer att röra sig.

Den tredje delen av nVidias
optimeringar rör förändrad shader-kod. I vissa fall kan detta
innebära att nVidia helt enkelt har bytt ut befintlig program kod mot
kod som utför motsvarande effekter. Det är här viktigt att
poängtera att det grafiska resultatet må se nästintill identiskt
ut men det är de facto inte identiskt.
Detta skulle kunna gå att applicera på ett riktigt spel, men det
är ganska osannolikt då det skulle kräva många dagars
arbete bara för ett spel. Arbete som sedan kan gå till spillo om
spelet patchas i framtiden.
Om man kan sköta det med godtyckliga resultat skulle jag personligen
anse att det är ok att göra i ett spel, så länge bildkvaliteten
är den samma så gör det ingen skada.
Men nu är det som sagt så att det är tveksamt om det är
rimligt att applicera det på spel i större skala. Och som vi nämner
i nyheten är det väldigt tveksamt om man i ett syntetiskt benchmark
ska få ändra på programkod. Gör man det så sköter
de testade grafikkorten uppenbarligen inte samma uppgifter när de kör
testet och på så vis blir resultaten mindre tillförlitliga.

En sista kommentar
om nVidias optimeringar är att ett par drivrutiner inte kunde rendera
GameTest 1 helt korrekt. Så kallade "muzzle flashes" syntes
inte från flygplanens vapen. Detta är ju en visuell skillnad, men
vi har inget sätt att ta reda på om det är en bugg eller en
optimering. Inte heller kan vi på något bra sätt mäta
om prestandan förändras av det.

Jag ser
inte att nVidia skulle ha sänkt bildkvaliteten:

Faktum är att även om skillnaderna är små så har
nVidias optimeringar sänkt bildkvaliteten. Detta kunde vi först
se i och med den sänkta preceisionen i Game Test 4 där himmeln helt
enkelt blev alldeles grådaskig. Detta visade vi i vår recension
av FX 5800 Ultra här.
Vidare har Beyond3D postat några bilder på vatten shadern i GameTest
4 där vi kan se hur nVidia åter igen försämrat bildkvaliteten
här.

Angående
ATis optimeringar
:
Här har vi bara ATis information att gå efter.
Enligt ATi har de "möblerat om" en del shader kod i Game Test
4 för att den ska bli mer anpassad för deras kort.
Denna optimering gör inget för att påverka kvaliteten och
bär vissa liknelser med nVidias utbyte av shader-kod om än mindre
drastiskt.
Precis som med nVidias liknande optimeringar skulle detta kunna gå att
applicera i spel även här utan försämrad kvalitet.
Men precis som i nVidias fall är det givetvis oönskat att man låter
grafikkorten dra olika tunga bördor i ett syntetiskt test.

Är
inte detta bara buggar:

Nej detta är verkligen inte buggar. Samtliga optimeringar som omnämns
i denna artikeln, förutom kanske det här med flygplanens eldgivning
i GameTest 1, är mycket medveten programmering från nVidias och
ATis håll. Det finns inte ens en mikroskopisk chans att något
liknande skulle hända "av misstag".

Angående
optimeringar i allmänhet: (Fusk eller optimering?)

Optimeringar i stil med att förändra en shaders beteende är
ofta något som inte sköts av en drivrutin. Istället tar helt
enkelt ATi eller nVidia kontakt med speltillverkaren och ger dem tips på
hur de kan förbättra sin programkod.
När inte det funkar kan man genom drivrutinerna optimera shader rutinerna
i specifika spel.
Att göra denna typ av specifika optimeringar för olika spel är
något som alla sysslar med. Så länge det inte går ut
över kvalitet eller stabilitet är det inget vi ska klaga på:
gratis prestanda till oss helt enkelt.
Även i de spel vi testar när vi benchmarkar är detta ok då
det ju faktiskt representerar den prestandan du kommer få när du
spelar spelet på riktigt.

Epic Games’ (skaparna
av UT2003) Tim Sweeney delar med sig av sin åsikt om optimeringar här
och den återspeglar ungefär vad som sägs i denna artikel.
Läs hans uttalande på Beyond3D här.

Ett problem med denna
typ av optimeringar är att det tar stor "plats" i drivrutinerna.
En massa programkod som potentiellt sätt gör drivrutinen "bloated"
är inget positivt. Desto fler spel och desto mer avancerade optimeringar
desto större och mer komplicerade drivrutin och desto större chans
för misstag (som kan leda till grafikbuggar eller stabilitets eller prestandaproblem).

Som vi ser är
det ibland en ganska tunn gräns mellan vad som kan kallas en regelrätt
optimering och vad som kan kallas för ett fusk.
Futuremark är nu på det klara med att de inte tolererar något
som påverkar deras programkörning alls.

ATi har gått ut
och sagt att de kommer att ta bort sina optimeringar i nästa drivrutinsuppdatering.

Från nVidia har vi inte fått något besked om åtgärder
men deras första uttalanden lutar snarast mot en förklaring/ursäkt
till varför de gör som de gör.

Angående
3DMark03-resultaten:

Det vi kan se är att nVidias optimeringar/fusk har gett dem väldigt
mycket högre prestanda än vad som är "normalt". Futuremarks
tester visar på en prestandaökning på 24,1 %. Våra
tester här på NH visade en ännu högre förändring
på hela 28,5 %.
Kort sagt kan man inte lita på några testresultat med nVidias
grafikkort från 3Dmark03-versioner som är äldre än 330.

Vidare går det heller inte att lita på resultat från drivrutiner
som är äldre än 43.51 då dessa innehöll sänkningar
av renderingsprecisionen som vi anmärkte på tidigare.
Förutom själva slutscoren påverkar nVidias drivrutiner främst
också Pixel och Vertex Shader testerna i 3DMark03. Dessa förlorade
så mycket som 56 % prestanda i nya 3Dmark03 versionen.

Vad det gäller ATis
resultat dök de ner endast 1,9 % enligt Futuremarks undersökningar
och endast 1,8 % enligt NHs egna tester. Felmarginalen för 3Dmark03s
tester är 3 % och alltså finner sig ATi inom denna gräns.

Kort sagt kan man i princip lita på resultaten man får med ATis
kort i 3Dmark03 oavsett drivrutin eller 3Dmarks-version. I alla fall vad et
gäller helhets scoren. De specifika optimeringarna/fusken som ATi kört
med påverkade prestandan i Game Test 4 desto mer och de resultaten får
man ta med en stor nypa salt om man kör versioner tidigare än 330.

Men slutscoren kan man kort sagt lita på om man tolererar en felmarginal
på mindre än 2 %.

Summan av kardemumman
är att alla 3Dmark03 scores hittills med nVidias FX-kort måste
kasseras och att ATis scores i game Test 4 måste kasseras. ATis "slutresultat"
scores kan vi dock fortfarande lita på oavsett drivrutin och 3Dmark-version.

Vad nVidia
har att säga om saken:

"Since Nvidia is not part of the Futuremark beta program (a program
which costs of hundreds of thousands of dollars to participate in), we do
not get a chance to work with Futuremark on writing the shaders like we would
with a real applications developer. We don’t know what they did, but it looks
like they have intentionally tried to create a scenario that makes our products
look bad."

Visst stämmer det
att nVidia hoppade av Futuremark beta program, visst stämmer det att
det kostar att delta. Men ingen tvingade nVidia att lämna och att ta
betalt för sådana här "program" är inget nytt
under solen precis. I vilket fall är inget av detta en ursäkt för
att fuska som jag ser det. Uppenbarligen vet de också ganska väl
"what they did" eftersom de har spenderat en massa tid på
att komma på avancerade sätt att kringgå det de ogillade
med testerna.

Vad ATi
har att säga om saken:

"The 1.9% performance gain comes from optimization of the two DX9
shaders (water and sky) in Game Test 4. We render the scene exactly as intended
by Futuremark, in full-precision floating point. Our shaders are mathematically
and functionally identical to Futuremark’s and there are no visual artifacts;
we simply shuffle instructions to take advantage of our architecture. These
are exactly the sort of optimizations that work in games to improve frame
rates without reducing image quality and as such, are a realistic approach
to a benchmark intended to measure in-game performance. However, we recognize
that these can be used by some people to call into question the legitimacy
of benchmark results, and so we are removing them from our driver as soon
as is physically possible. We expect them to be gone by the next release of
CATALYST."

Optimeringar eller fusk,
här börjar gränsen bli otydlig. Precis som ATi säger är
deras fusk eller optimering, beroende på hur man ser på det, precis
den typen av prestanda "tuning" som brukar försiggå i
alla grafikkortstillverkares drivrutiner. Man optimerar helt enkelt olika
tillämpningar för maximal prestanda utan kvalitetsförluster.
Men oavsett vad anser i.a.f. jag personligen att det är fel av någon
att "mixtra" med resultaten ur ett syntetiskt test eftersom det
gör att olika grafikkort gör olika arbete i samma test. Detta anser
också Futuremark som sätter reglerna för 3DMark03.

Men 3DMark03
är ju ändå ett dåligt verktyg säger många:

3DMark03 lider av en rad brister, detta är helt sant. Bland annat har
de gjort sin shader-kod "klumpig" med vilje med syfte att göra
den mer krävande. Det naturliga alternativet hade ju helt enkelt varit
att göra scenerna mer komplexa och vackra för att på så
sätt öka pressen på grafikkorten om det nu var deras mål.
Men oavsett vad så lyckas ju testet att pressa grafikkorten hårt.
Bara för att det inte alltid syns visuellt betyder det inte på
långa vägar att det inte skulle vara en indikator för "riktig"
prestanda.
Ett annat dilemma som främst nVidia har belyst är att stora delar
av 3Dmark03 förlitar sig på Pixel Shader 1.4. Denna typ av Pixel
Shaders har GeForce4 Ti inte stöd för och nVidia menar att det heller
inte är många spel som använder det. De går t.o.m. så
långt som att de ifrågasätter om ens något spel använder
sig av Pixel Shader 1.4. Faktum är dock att storsäljande spel som
UT2003 och den kommande klassikern Doom 3 faktiskt använder sig av denna
typ av Pixel Shaders så även här är kritiken i mina ögon
obefogad.
Det större klagomålet (även här framfört av nVidia)
berör Game Test 4. Detta test i 3Dmark03 kräver ett kort som har
stöd för DirectX 9. I testet använder Futuremark Pixel Shader
2.0 på himmeln och på vattnet. Resten av testet använder
Pixel Shader 1.4 eller äldre versioner. Att förtydliga är att
alla kort som har stöd för Pixel Shader 2.0 också har stöd
för Pixel Shader 1.4, GeForce FX är inget undantag. För att
göra en lång historia kort ligger klagomålet helt enkelt
i att Game Test 4 inte är "tillräckligt" DirectX 9-inriktat.
Även här finner vi kritiken något obefogad då det, precis
som Futuremark har påpekat, knappast är ens lönt att köra
2.0-shaders på exakt allt i en scen. Alla effekter behöver långt
ifrån 2.0-shaders kort sagt. Vill man testa 2.0-shaders så har
3DMark03 ett separat Shader-test för detta.
Ett mer generellt klagomål från nVidia är att 3Dmark03 är
illa anpassat för deras kort och att det favoriserar ATis hårdvara.
Eftersom en stor del av 3DMark03 förlitar sig på mer avancerade
Vertex och Pixel Shaders är det alltså shader-prestanda som verkar
vara en avgörande faktor. Tittar vi på GeForce FX-serien shader-prestanda
i de tester som finns tillgängliga visar det dock sig att just GeForce
FX är ganska svagt på dessa områden i de befintliga testerna.
Dra era egna slutsatser kring det..

I slutändan
har vi ett faktum: 3DMark03 är det enda DirectX 9-testet vi har just
nu som påminner om ett spel. Visst finns det några ytterst syntetiska
shgader-tester från andra mjukvaruutvecklare men dessa är knappast
av 3Dmarks kaliber. 3DMark är fortfarande ett värdefultl verktyg
för att uppskatta framtida prestanda. Dess "feature tests"
är också mycket bra för att lista ut vilka styrkor eller svagheter
hårdvaran har.

Slutsatser:
Eftersom det hela är ett känsligt ämne tänker jag helt
enkelt låta er dra era egna slutsatser efter att ni läst denna
artikel. NH fortsätter att testa grafikkort som vanligt. Nu med den nya
patchen till 3DMark03 kan vi även använda detta test för att
mäta prestanda med alla grafikkort. Eldprovet blir ju att se om nVidia
fortsätter att försöka applicera sina optimeringar på
den nya patchen i nästa drivrutin eller inte, ATi har redan gjort klart
att de omedelbart tänker ta bort sina optimeringar.

Nej men
nu har du ju helt fel:
Eftersom gränsen mellan fusk och omptimering är tunn lämnar
det en hel del utrymme för tolkning av den fakta som finns tillgänglig.
Har du en annan åsikt än den som framförst här? Eller
tycker du något är oklart är du varmt välkommen att diskutera
ämnet i denna
forumstråd.

Subscribe
Notifiera vid
0 Comments
äldsta
senaste flest röster
Inline Feedbacks
View all comments