| ATI
Radeon X800 XT PE
Radeon X800 und die Texturen
In den letzten Tagen hat neben der Leistungsfähigkeit
besonders auch ATIs isotrope und anisotrope Texturfilter der
X800 Grafikchips für Aufregung gesorgt.
Wie viel Optimierung verträgt der Mensch? Ein Grund für
uns, einmal näher hinzuschauen.
Der intelligente Algorithmus ist zum Teil
schon seit der Radeon 9600 XT aktiv und wurde bis vor einigen
Wochen nicht entdeckt.
Details
Laut ATI wird die intelligente Optimierung
nur bei typischen Fällen angewandt, in denen Mipmaps
durch den Boxfilter erstellt werden.
Der Boxfilter wird aufgrund seiner guten optischen Ergebnisse
bei vergleichsweise geringem Aufwand für das automatische
Erzeugen von Mipmaps genutzt und wird von DirectX als Default-Filter
für die Texture-Load-Funktion genutzt.
Um von der Basistextur den Mip-Level 1 zu berechnen, fügt
der Boxfilter ein Quadrat von 2x2 Pixels der Ausgangstextur
bzw. Mip0 mit jeweils 25% Gewichtung zu einem Pixel der Mip1
zusammen, für Mip-Level 2 sind es vier Pixel zu einem
Pixel usw.
Erkennt der Algorithmus eine atypische Situation,
bei der starke Differenzen zwischen den einzelnen Mip-Levels
zu erwarten wären, wird die Optimierung nicht genutzt,
wodurch Artefakte und optische Auffälligkeiten verhindert
werden sollen.
Weitere Informationen können den Artikeln
von unseren Kollegen entnommen werden:
Computerbase
3D
Center
Tom’s
Hardware
Unsere Kollegen von Computerbase haben zudem
noch herausgefunden, dass ATI neben dem intelligenten Algorithmus
zusätzlich noch das LOD beim R420 leicht anhebt.
Durch diesen angehobenen LOD filtert man länger aus der
hochauflösenderen Mip-Stufe, kommt dabei aber auch länger
mit einer, im Verhältnis zum korrekten LOD gesehen, niedrigeren
Anzahl an Textursamples bzw. bei anisotroper Filterung aus.
Von der Idee ist diese Optimierung eigentlich ideal. So erzeugt
man zwar auf Standbildern ein schärferes Bild, was aber
in Bewegung zum Flimmern neigen dürfte, denn umsonst
wird der Nullpunkt beim LOD im Allgemeinen nicht eingehalten.
Was ist LOD Mip Mapping?
LOD steht
für "Level of Detail", was aus dem Englischen
übersetzt etwa soviel wie "Detailstufe" bedeutet.
Den Nutzen von LOD Mip Mapping lässt sich am besten anhand
eines Beispiels darstellen:
Man stelle sich in Far Cry ein Außenlevel
mit einem Transport-Container vor, der sehr weit entfernt
steht. Die Textur, welche auf den Container projiziert wird,
muss stark verkleinert werden. Dadurch entstehen - trotz Filterung
- hässliche Effekte ("Shimmering"), da für
das dargestellte Pixel abwechslungsweise verschiedene Texel
verwendet werden können. Durch die große Entfernung
macht es keinen Sinn, immer eine 512x512 Pixel große
Textur zu nutzen, wenn im Endeffekt nur 32x32 Pixel dargestellt
werden sollen.
Nun kommt LOD MIP Mapping ins Spiel. Zuerst
wird der "Level of Detail" berechnet. Dieser setzt
sich zusammen aus dem Verhältnis zwischen "Anzahl
Texel vorhanden" und "Anzahl Pixel sichtbar".
Würde man bei einer eingestellten Auflösung von
640x480 direkt vor einer 640x480 großen Textur stehen,
so ist das Verhältnis 1:1 und die LOD - Stufe 0 wird
gewählt (größte MIP - Map Textur). Vergrößert
man nun den Abstand zur Textur, dass schlussendlich nur noch
100x100 Pixel dargestellt werden müssen, ist das Verhältnis
ca. 5:1 und die LOD - Stufe wird um eins erhöht auf 1.
Je nach Spiele-Engien werden normalerweise 5 bis 10 Stufen
unterstützt.
Für jede dieser Stufen steht eine eigene,
ideal skalierte Textur zur Verfügung, welche dann schlussendlich
für das Texture Mapping verwendet wird. Idealerweise
sind also meistens mehrere gleiche Texturen unterschiedlicher
Größe zur Auswahl vorhanden, für die Referenztextur
der Größe 128x128 noch weitere der Größe
64x64, 32x32 und 16x16 Pixel (jeweils immer Seitenlänge
/ 2). Je näher man sich dem Objekt nähert, umso
größer muss die Textur sein, da man durch der geringen
Abstand mehr Details erkennen kann.
Die hochdetaillierten 512x512 - Texturen
werden fast nur dann verwendet, wenn man sich fast unmittelbar
vor dem Objekt befindet. Die meisten Spielentwickler liefern
die verschiedenen selbst skalierten Texturen mit, es gibt
allerdings auch 3D - Chips, welche diese verschiedenen MIP
- Maps automatisch erzeugen können.
Die Optimierung auf einem Blick:
-
Stage-Optimierung:
Die Stage-Optimierung wird bei allen R3x0 und R420 basierenden
Grafikkarten mit aktiver anisotroper Filterung angewandt.
Es wird nur die erste Texturschicht mit trilinear gefiltert,
alle weiteren Texturschichten bekommen nur noch bilinear.
- Nachteil: Sichtbares Mip-Banding bsw. bei Detail-Texturen.
- Deaktivieren: Dank dem rTool ist diese Optimierung
sehr leicht zu umgehen.
-
Reduzierung des trilinearen
Filters:
Im RV360 und R420 enthalten und immer aktiv auch ohne
AF. Der Übergang zwischen zwei Mip-Stufen einer Textur
wird nur noch in einem schmaleren Streifen trilinear gefiltert.
Daraus resultiert ein größerer Bereich, wo
nur bilinear gefiltert wird, wodurch die Übergänge
nicht mehr ineinander fließen.
- Nachteil: Mip-Banding kann sichtbar werden.
- Deaktivieren: Manueller Eintrag in die Registry
-
Reduzierung der Sampelzahl
innerhalb der Basistextur:
Wie zuvor immer aktiv bei RV360 und R420 Chips. Die Optimierung
senkt die Schwelle, wo in die nächst höhere
Samplezahl zur Texturfilterung umgeschaltet wird. Durch
die geringe Menge an Textursamples spart man deutlich
an Leistung.
- Nachteil: Texturflimmern möglich
- Deaktivieren: Manueller Eintrag in die Registry
-
LOD-Optimierung:
Neu und bis jetzt nur in der X800-Reihe mit anisotroper
Texturfilterung aktiv.
Wieder einmal wird hier die Schwelle, ab welcher eine
Erhöhung der Textursamplezahl nötig wird, weiter
nach hinten ins Bild hinein geschoben.
- Nachteil: Texturflimmern möglich
- Deaktivieren: Manueller Eintrag in die Registry
|