Seite 2: Screenspace Antialiasing - Die etwas andere Kantenglättung

GameStar Plus Logo
Weiter mit GameStar Plus

Wenn dir gute Spiele wichtig sind.

Besondere Reportagen, Analysen und Hintergründe für Rollenspiel-Helden, Hobbygeneräle und Singleplayer-Fans – von Experten, die wissen, was gespielt wird. Deine Vorteile:

Alle Artikel, Videos & Podcasts von GameStar
Frei von Banner- und Video-Werbung
Einfach online kündbar

Lage der Kanten bestimmen

Tiefen (oben links), Normalen (oben rechts) und Texturkoordinaten (unten links) bilden die Eingabe für den Kantenbuffer (unten rechts). Tiefen (oben links), Normalen (oben rechts) und Texturkoordinaten (unten links) bilden die Eingabe für den Kantenbuffer (unten rechts).

Im letzten Schritt des Algorithmus werden die gewonnenen Entfernungsinformationen genutzt, um die Lage der Kanten auf dem Bild und den prozentualen Anteil an jedem Bildpunkt zu bestimmen. Auch hier lassen sich die Berechnungen in einen horizontalen und einen vertikalen Teil trennen. Die Genauigkeit hängt dabei von den Daten der zwei vorangegangenen Schritte ab und liegt etwas über Morphological Antialiasing, aber unter der Genauigkeit von Verfahren, die Aliasing-Artefakte verhindern. Je länger die Kantenartefakte werden, desto genauer arbeitet der Algorithmus, die Qualität kann sogar die von einfachem MSAA und SSAA übertreffen.

Über den Strahlensatz (Binomi Verlag, 2004) lässt sich mithilfe der Abstände in vertikaler und horizontaler Richtung das Flächeninhaltstrapez von jeder Dreieckskante – geschnitten mit den Pixeln – bestimmen. Durch die Optimierung im Zählschritt müssen die Entfernungen auf beiden Seiten der Kante gelesen werden. So können die Gesamtlänge eines Kantenartefaktes und die aktuelle Position auf diesem Kantenartefakt bestimmt und daraus dann der Flächeninhalt hergeleitet werden. Probleme traten auf, wenn sich bei sehr kurzen Kantenartefakten die Flächeninhalte über und unter dem Bildpunkt gegenseitig aufhoben. Um diese Fälle behandeln zu können, genügt es, den Flächeninhalt für halbe Bildpunkte zu berechnen und negative Werte zu verwerfen. Um auch halbe Bildpunkte zu berechnen, habe ich bilineare Filterung auf der Entfernungstextur angewendet und die Formel leicht angepasst.

Unterfilterung Um derartige Artefakte zu vermeiden, muss das Verfahren verfeinert werden.

Unterfilterung durch AAA Je nach Vorgehensweise fallen Artefakte mal so, mal so aus. Im Ergebnis sollen diese möglichst verschwinden.

Verbesserungen und Anmerkungen

Zukünftige Erweiterungen könnten aus einem verbesserten Zählalgorithmus bestehen, der Unterbrechungen von Kanten erkennt, zum Beispiel durch Schnitte mit anderen Polygonkanten. Bei diesen wird der Zähler dann nicht zurückgesetzt. Eine direkte Entfernungsbestimmung zu den Kanten mit den Pixeln unter Zuhilfenahme der Position und der Texturkoordinaten ist leider nicht möglich, weil weder »AlphaTest«-Kanten noch außen liegende Pixel erfasst werden. Malan (Malan, 2010) löste letzteres Problem mit einem speziellen Vertex Shader, der die Polygonkanten um genau eine Pixelbreite skaliert. Leider ist dieses Verfahren nicht sehr robust. Eventuell könnte man auf »Direct3D10«-Hardware ein ein Pixel breites Rechteck extrudieren, um mithilfe der Texturkoordinaten direkt die Flächennutzung zu bestimmen (Egbert, 2008). Allerdings gibt es mit D3D10 auch wieder andere Möglichkeiten, um selbst unter schwierigen Bedingungen MSAA zum Laufen zu bekommen. Anstatt im finalen Schritt die Farbe mit Pointsampling zu ziehen und im Pixelshader zu mischen, wäre es besser, einfach nur die Texturkoordinaten zu ändern und die Farbe mit Bilinearsampling zu holen. Eventuell lohnt es sich, auch die beiden Teilschritte der horizontalen und vertikalen Filterung zusammenzufassen. Um auf der Xbox 360 die Resolve-Operation zwischen den Teilschritten zu sparen, kann man auch Alpha Blending einsetzen und direkt im eDRAM mischen. Das Schreiben von linearen Texturen auf der Xbox 360 lässt sich durch MEMEXPORT bewerkstelligen.

Der Autor

Arne Shober ist Entwickler bei Yager Development.

Arne Schober hat seine Karriere 2008 als Software Architect bei einer Berliner Softwarefirma gestartet. Nach einem Praktikum bei IBM Research&Development heuerte er 2009 bei Yager an und ist dort bis heute als Console Developer tätig. Nebenbei hält er Vorträge, wie etwa zum Thema »Realtime Screenspace Antialiasing for Consoles« auf der GDC Europe 2010. Arne hat sich vor allem auf Realtime Posteffects und das Compositing spezialisiert.

» Dieser Artikel erschien ursprünglich in unserem Entwicklermagazin Making Games

2 von 2


zu den Kommentaren (25)

Kommentare(25)
Kommentar-Regeln von GameStar
Bitte lies unsere Kommentar-Regeln, bevor Du einen Kommentar verfasst.

Nur angemeldete Benutzer können kommentieren und bewerten.