Zum 3DCenter Forum
Inhalt




Wie viel Optimierung ist optimal?

22. Mai 2004 / von aths / Seite 1 von 5


   Einleitung

Werden betroffene Firmen dazu aufgefordert, sich zum Thema "Optimierung" zu äußern, gibt es meist Statements die sinngemäß so lauten: "So lange die Bildqualität nicht verändert wird, sind Optimierungen eine gute Sache". Dem wagt man ja kaum zu widersprechen. Und doch hält man sich selbst mit dieser Aussage listig die Tür zum platten Betrug offen.

Ein Benchmark, ob nun synthetisch oder als Timedemo im Spiel, misst, wie schnell die Grafik-Hardware im Zusammenspiel mit den restlichen PC-Komponenten eine bestimmte Anzahl an Rechnungen übernehmen kann. Angenommen, wir haben einen CPU-Benchmark der Pi berechnen soll. Eine Optimierung sorgt nun dafür, dass das Ergebnis gleich aus einer dem Treiber mitgelieferten Datei ausgelesen wird. Das Ergebnis – übertragen, die "Bildqualität" – bleibt ja gleich. Ist das eine faire Optimierung?

Bei einem Benchmark / Timedemo geht es nicht nur darum, die gleiche Bildqualität zu wahren. Auch die gleiche Rechenlast muss gewährleistet sein. Optimierungen, die wirklich allen Anwendungen zugute kommen, welche ein gegebenes Feature wie zum Beispiel Pixelshader nutzen, sind natürlich wünschenswert. Analogie: Kann eine CPU nicht nur Pi, sondern jede beliebige Zahl schneller berechnen, ist das ein genereller Vorteil. Dabei würde es kaum als zulässig empfunden, wenn die erhöhte Geschwindigkeit aus geringerer Präzision (übertragen: schlechterer Bildqualität) resultiert. Natürlich muss sehr genau hinterfragt werden, wer denn nun an gesenkter Bildqualität schuld ist: Markiert der Entwickler bestimmte Shader, dass sie mit Partial Precision (FP16-Genauigkeit) ausgeführt werden, kann man möglicherweise entstehende Artefakte nicht Nvidia in die Schuhe schieben, nur weil sie _PP tatsächlich in Hardware unterstützen.

Leider ist seit einiger Zeit ein Besorgnis erregender Trend zu beobachten: Um die Rechenlast zu senken, opfern die Treiberprogrammierer der Grafikchiphersteller bewusst Bildqualität. Dabei reden wir nicht von Intels "Extreme" Graphics oder XGIs Xabre, sondern von Firmen dessen Anspruch auf Marktführerschaft man ernst nehmen kann. Bei ATI hat es Tradition, von vornherein nur suboptimale Qualität anzubieten. Um den Grafik-Chip so klein zu halten wie möglich, werden Texturen mittels vereinfachten Rechnungen nur ungenau gefiltert. Kein Grafikchip filtert exakt, Vereinfachungen sind bei den heutigen Möglichkeiten immer notwendig. Ob unsere Ansprüche übertrieben sind, soll hier nicht diskutiert werden, Fakt ist, dass verschiedene Level der Vereinfachungen in unterschiedlicher Bildqualität resultieren. So sieht echte trilineare Filterung auf der Radeon 9700 weniger trilinear aus, als auf Nvidia-Karten.

Zusätzlich wird für eine Radeon in Direct3D bei aktivierter anisotroper Filterung (AF) treiberseitig die Filterung auf den Textur-Stages 1-7 auf bilinear-anisotrop limitiert, sofern AF über das Control Panel eingestellt wird. Nur die primäre Textur-Stage kann noch trilineares AF bekommen. Wenigstens ist das noch mit Tools wie aTuner oder rTool abschaltbar. Ältere Chips von ATI bieten schlicht inakzeptables AF. Was ATI und Nvidia unter trilinear heute verstehen, darauf kommen wir noch zu sprechen.

Nvidia hat traditionell eigentlich sehr gute Textur-Filterqualität. Doch hier gibt es Bemühungen, die Bildqualität nachträglich zu senken:

  • GeForce3: Sehr gute AF-Qualität. Da dieses Feature die Grafik natürlich verlangsamt, wurde es leider nicht vermarktet, sondern eher vor dem Anwender versteckt.

  • GeForce4 Ti: Einige Treiber senken in OpenGL den maximalen AF-Grad je nach Texturinhalt. Zum Glück ist das abschaltbar. Doch aktiviert man das Feature, steigt die Leistung ohne nennenswerte Bildqualitätsnachteile zu haben (was aber nur für Quake3 intensiv untersucht wurde, und zwar von Rivatuner-Autor Unwinder.)

  • GeForce FX: Je nach Treiber ein andere Bild. Zwei neue Hardware-Features: Erstens "optimierte" anisotrope Filterung, die praktisch nicht zu gebrauchen ist (der alte Modus steht aber noch zur Verfügung), zweitens die "brilineare" Filterung. In OpenGL lässt sich mit Tools wie RivaTuner oder aTuner noch volle trilineare Qualität erzwingen. Möglicherweise schalten zukünftige Forceware-Treiber das auch wieder für Direct3D frei. Was wir von einem Zwang zu "brilinear" halten, ist in diesem Artikel nachzulesen. Als Option ist so genannte "adaptive trilineare" Filterung jedoch eine nützliche Sache.

  • GeForce Series 6: Zusätzliche Features, um die Filterqualität zu senken. Während von vornherein ein vereinfachter AF-Algorithmus zum Einsatz kommen, ruhen die weiteren Möglichkeiten noch. Als Beruhigungspille gibt es zumindest in einigen Treibern wieder die Option auf volle Trilinearität. (Jede Hardware, die wirklich adaptive trilineare Texturfilturung beherrscht, kann auch vollständig trilinear filtern.)

Während ATI suboptimale Bildqualität von vornherein inkauf nimmt, um Transistoren zu sparen, spendiert man zunächst nur bei Nvidia, später auch bei ATI den neuen Grafikchip-Generationen zusätzliche Schaltkreise, um die Texturqualität bei Bedarf senken zu können. Besonders gerne wird bei anisotroper Filterung gespart. Das verstehen wir nicht so recht, denn ein Feature, welches die Bildqualität steigert, muss notwendigerweise Leistung kosten. Reicht die Leistung für eine gegebene Verbesserungsmaßnahme nicht, muss man eben ohne sie auskommen. Außerdem halten wir einen weiteren Anspruch für sinnvoll: Berechnungsaufwand zur Steigerung der Bildqualität sollte die für die gegebene Rechenleistung maximale Verbesserung bringen. Betrachten wir unter diesen Aspekten zunächst die Kantenglättung, dann die anisotrope Filterung. Danach gehen wir auf Skalierungsmöglichkeiten ein.


   Der Fortschritt beim Antialiasing

Was allgemein aktivierbare Vollbild-Kantenglättung angeht, kam Nvidia 3dfx zuvor. Ohne zusätzliche "Antialiasing-Hardware" ist aber höchstens so genanntes "Ordered Grid Supersampling" (OGSS) möglich. OGSS ist aber kein "Software-Antialiasing", da die entsprechenden Berechungen voll auf der Grafikkarte laufen. Doch frisst diese Methode aufgrund der ineffizienten Abtast-Maske mehr Leistung, als zusätzliche Qualität geboten wird. So war Antialiasing auf GeForce256 und GeForce2 GTS denn lediglich eine Spielerei, die nur bei starker CPU-Limitierung sinnvoll war. 3dfx' "Rotated Grid Supersampling" (RGSS) hingegen bietet einen ausgewogenen Trade-Off. Multisampling wendet das Blatt zum Guten, hier bekommt man mehr Zusatzqualität als man Leistung opfert. Die Hintergründe legten wir im Artikel zum Thema Multisampling dar.

GeForce3 bot seinerzeit ein revolutionäres Antialiasing. GeForce4 enttäuschte, da die Verbesserungen marginal waren, doch war das Verfahren seinerzeit konkurrenzlos: ATIs Antialiasing auf der Radeon 8500 überzeugte nicht. Mit Radeon 9700 offerierte ATI nun ein Verfahren, dass im Consumer Markt übrigens bis heute nicht übertroffen wurde. GeForce FX 5800, auch die 5900 setzte für den 4x-Modus weiterhin auf das ineffiziente OGMS-Verfahren. Die mit vier Subpixeln mögliche Qualitätssteigerung wurde bei weitem nicht ausgeschöpft. Das ist, höflich ausgedrückt, natürlich bedauerlich.

Noch bedauerlicher ist das Vorgehen vieler Reviewer. Sie stellen 4x Antialiasing ein und benchen. Welche tatsächliche Kantenglättung geboten wird, fließt in das Benchmark-Ergebnis nicht ein. Ebenso bedauerlich ist das Vorgehen der meisten Review-Leser. Sie klicken sich zu den Diagrammen mit den Balken durch und gucken, wer den längsten hat.

Mit GeForce Series 6 wird nun endlich so genanntes RGMS auch für den 4x-Modus geboten. Statt Rotated Grid sollte man unserer Meinung lieber Sparsed Grid sagen, da das "rotated" in die Irre führt. Ein Grid einfach zu rotieren erhöht noch lange nicht die Qualität. Was "sparsed" heißt und wie man ein passendes Grid entwerfen kann, haben wir in einen Artikel schon ausführlich behandelt.

Manchmal wird argumentiert, da beide Karten (GeForce FX und Radeon) jeweils vier Subsamples pro Pixel berechnen, könne man die beiden Antialiasing-Verfahren schon vergleichen. Dem schließen wir uns nicht an. Den Anwender interessiert nicht, wie hoch die Rechenlast für die Qualitätsverbesserung ist, sondern wie viel Leistung er einbüßt um eine bestimmte Bildverbesserungen zu erlangen.






Kommentare, Meinungen, Kritiken können ins Forum geschrieben werden - Registrierung ist nicht notwendig Weiter / Next

Shortcuts
nach oben