Durch Online-Lektüre ist mir die grundlegende Funktionsweise von Supersampling Anti-Aliasing klar: Die Szene wird in einer höheren Auflösung gerendert als die Anzeige des Benutzers, aus den zusätzlichen Pixeln wird ein Durchschnitt berechnet, der dann heruntergesampelt wird.
Ich verstehe allerdings nicht ganz, wie das in der Praxis funktioniert. Wenn sich beispielsweise ein roter Pixel einer Wand neben einem blauen Pixel eines Himmels befindet und die Szene mit x2 SSAA gerendert wird, besteht der eine rote Pixel dann nicht einfach aus vier roten Pixeln und das Gleiche gilt für den blauen Himmelspixel? Wie hilft das bei der Berechnung eines Durchschnitts?
Werden die vier neuen roten Pixel mit dem Originalbild überlagert, sodass man eine Mischung aus roten und blauen Pixeln erhält und einen Durchschnitt berechnen kann, um den Übergang zwischen Wand und Himmel weicher zu gestalten?
Jede Hilfe wäre willkommen.
Antwort1
Es hilft sehr. In Ihrem ursprünglichen Beispiel:
... Rot Rot Rot Blau Blau Blau ...
Die Grenze zwischen Rot und Blau sieht aus wie eine Treppe
Im überabgetasteten Bild
... Rot Rot Rot Rot Blau Blau Blau ...
Beim Downsampling
... Rot] [Rot Rot] [Rot Blau] [Blau Blau] [Blau ...
Jetzt haben wir einen Pixel, der aus dem Durchschnitt von Rot und Blau besteht, wodurch die Grenze zwischen den roten und blauen Bereichen verschwimmt.
Wenn Sie sich eine diagonale Grenze zwischen zwei Bereichen (rot und blau) vorstellen, werden durch die Überabtastung Zwischenpixel an den Stufenkanten eingefügt, da viele der 2x2-Boxen notwendigerweise sowohl rote als auch blaue Pixel enthalten.
Antwort2
Ok, ich werde versuchen, es zu erklären, weil ich ähnliche Methoden schon früher bei der Arbeit mit Fotos angewendet habe, um einige der „Glättungsalgorithmen“ auf Fotos oder Fotos mit niedriger Auflösung anzuwenden, ohne eine sehr umfassende und tiefe Glättung zu erzielen.
es geht ungefähr so.
Hier sind Ihre Pixel in der üblichen Auflösung, in der Sie sie betrachten würden. Anti-Aliasing oder Glättung der Treppeneffekte ist dringend erforderlich.
Auf der einen Seite haben wir das Bild auf das Vierfache hochskaliert und dann den gleichen Anti-Aliasing-Algorithmus angewendet.
Es ist wichtig zu beachten, dass ich als dummer Computer nicht einfach Schwarz in Weiß umwandeln kann (den Weißgrad ändern), sondern auch Weiß in Schwarz umwandeln muss (die Gleichung ausgleichen :-). Ich wende eine mathematische Matrix blind dort an, wo ich angewiesen wurde, sie anzuwenden. Obwohl die Algorithmen der Grafikkarte sehr ausgefeilt sind, sind sie eigentlich nicht so blind wie diese.
Ein sichtbares Beispiel für die Balance in Spielen. Sie möchten nicht, dass Ihr Zaun im Himmel verschwindet, und Sie möchten auch nicht, dass Ihr Himmel zum Zaun wird. Daher müssen alle Anpassungen gleichmäßiger auf Himmels- und Zaunpixel angewendet werden. Auch ein Beispiel dafür, wie Grafikkarten und Spiele-Engines diese Balance stören, um trotz dieser Art von Details ein optimales Bild zu erzielen.
Irgendwann muss das alles wieder auf die Bildschirmauflösung zurückgesetzt werden, wo es die niedrigere Auflösung sein wird, und nachdem eine große Palette von Elementen angepasst werden musste, wird die zusätzliche Anzahl an Pixeln nun perfekt zu weniger Pixeln vermischt.
(Na ja, es war nicht die perfekte Farbe für diese Mischung, aber das habe ich nicht nachgerechnet.)
Und wie Sie sehen, sieht es in der Bildschirmauflösung wieder schrecklich aus.
Auf der Seite mit der niedrigen Auflösung haben wir diesen riesigen betroffenen/veränderten Bereich, da wir alle diese Pixel zueinander gebogen haben (sowohl die schwarzen als auch die weißen), und wir haben eine riesige Glättungsfläche, weil wir nur mit einer niedrigen Auflösung gearbeitet haben.
Auf unserer hochauflösenden Seite haben wir stattdessen einen perfekt ausgewogenen Pixelsatz erhalten, indem wir 4X Pixel zusammenmischen, wodurch ein kleinerer Glättungsbereich entsteht. Die hochauflösende Seite findet also die Pixel, die das Ganze wirklich schön glätten würden, aber kein großes, verschwommenes Durcheinander hinterlassen.
Denn (wieder) müssen wir viel mehr Pixel biegen, um das Gleichgewicht der Überblendung zueinander aufrechtzuerhalten. Wenn wir zuerst hochskalieren, können wir diese Biegeüberblendung in einem kleineren Maßstab erstellen und trotzdem das Gleichgewicht der Biegung zueinander aufrechterhalten. Das Endergebnis sind weniger betroffene Pixel und dieselbe Versteckung von Treppeneffekten.
Wenn man die beiden Methoden bei Spielen nebeneinander vergleicht, ist der Unterschied, der mit scheinbar viel zusätzlicher Arbeit erreicht wird, nicht so groß. Dasselbe gilt, wenn ich Fotos verarbeite, die in niedrigerer Auflösung verwendet werden. Das ist viel zusätzlicher Aufwand für mich und die Maschine, und die Ergebnisse sind kaum besser.