Categories: Sonstiges

Einsteigerguide: Temporal Antialiasing und Supersampling.

Supersampling ist eine Methode des Antialiasing, die versucht, gezackte, pixelige Kanten (Aliasing) in Bildern zu reduzieren. Es arbeitet, indem es eine höhere Auflösung des Bildes abtastet, um die durchschnittliche Farbe eines Pixels zu erhalten, bevor es auf die beabsichtigte Größe reduziert wird. Die gemittelten Farbwerte erzeugen sanftere Übergänge entlang einer Farbkante und reduzieren den gezackten Look.

Da Supersampling speicherintensiv ist, verwendet Lumberyard temporales Antialiasing (TAA), um das Supersampling zu approximieren. Während Supersampling Pixel räumlich analysiert, erfolgt beim TAA Frames eine Analyse über die Zeit, auch wenn die Kamera statisch ist. Das aktuelle Bild wird auf das vorherige projiziert und die Proben werden in einen Akkumulationspuffer eingeblendet. Diese Technik reduziert Ghosting-Artefakte in der Bewegung und gibt ihnen die Kontrolle über die Menge an Antialiasing, die für ihre Grafiken benötigt wird. Sie können scharfe Bilder oder weichere, unscharfe Bilder erstellen. Sie können auch Supersampling für sehr hochwertige Renderings verwenden.

TAA ist nützlich aus den folgenden Gründen nützlich für die Reduzierung von Aliasing:

  • Glanzlichter und helle Pixel, besonders in Kombination mit Faltungsfiltern wie Tiefenschärfe oder Bloom.
  • Geometrische und alpha-geprüfte Kanten.

Sie können TAA konfigurieren, indem Sie die Konsolenvariable r_AntialiasingMode setzen, die Konfigurationsdatei der Plattform bearbeiten oder eine Konfigurationsdatei mit dieser Einstellung erstellen.

Steuerung von Antialiasing.

Die folgende Tabelle listet die Antialiasing-Modi auf, die in Lumberyard verfügbar sind, wenn Sie die Konsolenvariable r_AntialiasingMode verwenden.

Modus Console Variable Value Beschreibung
Kein Antialiasing 0 Deaktiviert nachbearbeitungsbasiertes Antialiasing. Dies ist nützlich beim Debuggen oder wenn die Technik nicht notwendig ist. Sie können auch eine höhere Auflösung verwenden, wenn Sie keine Systemressourcen für Antialiasing ausgeben möchten.
FXAA 1 Ermöglicht schnelles approximatives Antialiasing (FXAA), das Kanten mit Hilfe eines Postprocessing-Kantenerkennungsverfahren filtert.
SMAA (1TX) 2 Ermöglicht das morphologische Subpixel-Antialiasing (SMAA), das eine fortschrittliche Nachbearbeitungstechnik verwendet, um Kanten zu erkennen und zu filtern. Dieser Modus enthält eine grundlegende zeitliche Antialiasing-Komponente, adressiert aber keine Subpixel-Jitter.
TAA 3 Ermöglicht zeitliches Antialiasing (TAA). Dies ist der Standardmodus.

Die folgende Tabelle listet die zusätzlichen Konsolenvariablen auf, die Sie für das zeitliche Antialiasing konfigurieren können.

Console Variable Beschreibung
r_AntialiasingModeEditor Gibt an, ob Subpixel-Jitter im Editor verwendet werden sollen. Dies kann zitternde Artefakte auf Helferobjekten auf Kosten des Verlusts von Antialiasing bei statischen Szenen eliminieren. Gültige Werte 0 = deaktiviert diesen Modus | = aktiviert diesen Modus.
r_AntialiasingTAAClampingFactor Steuert den Clamping Faktor bei Standardabweichungen. Stellen Sie den Wert ein, bei dem die TAA-Antwort begrenzt werden soll. Höhere Werte schaffen eine stabilere Szene mit weniger Flackern, aber mehr Ghosting. Niedrigere Werte erzeugen eine Szene mit weniger Ghosting, aber mehr Aliasing und Flackern. Gültige Werte 0.75 – 2.0
r_AntialiasingTAAJitterPattern Gibt das Abtastmuster für das zeitliche Antialiasing an. Gültige Werte: 0 = keine Teilproben | 1 = 2x | 2 = 3x | 3 = 4x | 4 = 8x | 5 = spärliches Raster, 8×8 | 6 = zufällig | 7 = Halbton 8x (Standard) | 8 = Halbton zufällig
r_AntialiasingTAALuminanceMax Klemmt die Eingangsleuchtdichte vor der zeitlichen Filterung, um die Bildstabilität zu verbessern. Extra helle Pixel können Geister und Blütenartefakte verursachen. Standardwert: 100.0
r_AntialiasingTAAMotionDifferenceMax Gibt die maximale Geschwindigkeitsdifferenz zwischen dem aktuellen Pixel und seinem Verlaufspixel an, bei der das aktuelle Pixel als vollständig deaktiviert gilt. Niedrigere Werte erzeugen eine Szene mit weniger Geisterbildern, aber mehr Aliasing auf entfernten Pixeln.
r_AntialiasingTAAMotionDifferenceMaxWeight Gibt das Mischgewicht für den aktuellen Frame bei maximaler Geschwindigkeitsdifferenz an (definiert durch die Konsolenvariable r_AntialiasingTAAMotionDifferenceMax). Gültige Werte 0 = 100% des Verlaufspixels | 1 = 100% des aktuellen Pixels, Standardwert = 0
r_AntialiasingTAANewFrameFalloff Stellt die Zeitspanne in Sekunden dar, in der das Historiensignal 63% des Quellsignals erreicht. Niedrigere Werte führen zu einer schnelleren Konvergenz, die das Ghosting reduzieren kann, aber ein gewisses Aliasing einführt. Da höhere Werte die Stabilität möglicherweise nicht verbessern, sollten Sie den Farbspannfaktor vor der Einstellung dieses Wertes anpassen. Standardwert: 0.15
r_AntialiasingTAASharpening Steuert den Schärfungsfilter, um die Schärfe zu erhalten. Dies ist nützlich, wenn das zeitliche Antialiasing eine Szene während der Bewegung unscharf macht. Standardwert: 0.2
r_AntialiasingTAAUseAntiFlickerFilter Reduziert Jitter-basiertes Flackern in bestimmten Szenarien. Gültige Werte 0 = deaktiviert diesen Modus | 1 = aktiviert diesen Modus.
r_AntialiasingTAAUseJitterMipBias Aktiviert die Mipmap-Vorspannung auf Texturen, wenn Jitter aktiviert ist. Dies erzeugt eine Szene mit weniger Unschärfe, aber mehr Flackern. Gültige Werte 0 = deaktiviert diesen Modus | 1 = aktiviert diesen Modus, Standardwert: 1
r_AntialiasingTAAUseVarianceClamping Ermöglicht das Einspannen von Farbabweichungen, um das Schablonieren zu reduzieren. Dies kann das Flackern in der Szene verstärken. Die Variable r_AntialiasingTAAClampingFactor beeinflusst nur diesen Modus. Gültige Werte 0 = deaktiviert diesen Modus | 1 = aktiviert diesen Modus, Standardwert: 0

Die folgenden Bilder veranschaulichen die Bandbreite der Grafikqualität, sie Sie erreichen können, je nachdem, welche Antialiasing-Einstellung Sie verwenden.

Temporäre Antialiasing Beschränkungen.

Temporal Antialiasing (TAA) ist eine kostengünstige Lösung, die Aliasing aus allen Quellen reduziert und mit den meisten Inhalten gut funktioniert. Da TAA auf Bildschirmflächeninformationen aus früheren Frames basiert, hat es in den folgenden Szenarien Beschränkungen:

  • Objekte verschließen während der Bewegung andere Objekte. In diesem Szenario haben die neu sichtbaren Bereiche im aktuellen frame keinen Historienwert und können sich als Ghosting manifestieren.
  • Bewegungsvektoren sind bei bewegten Objekten nicht vorhanden, was zu subtilen Schmiereffekten führen kann. Bewegungsvektoren werden nicht für verschmolzene Vegetation, nicht-CGF-basierte Partikel oder transparente Materialien erzeugt. In bestimmten Hochfrequenzsignalszenarien ist das offensichtlichste Artefakt das Flackern, das durch Subpixel-Jittering verursacht wird, das zwischen hellen und dunklen Pixeln wechselt.
  • Der Content hat viele Subpixel-Dreiecke und Normals. In diesem Szenario kann das Subpixel-Detail zu flackernden Artefakten mit zeitlichem Subpixel-Jittering führen. Wenn eine helle Kante, die von dunklen Pixeln umgeben ist, kleiner wird, bewirkt die Nachbarschaftsklemmheuristik, dass die Pixel zwischen hell und dunkel flimmern.
  • Transparenz schreibt nicht in die Tiefe. In diesem Szenario können bestimmte transparente Inhalte subtile Schmierungsartefakte aufweisen.

In diesen Fällen können Sie das morphologische Subpixel-Antialiasing (SMAA) oder das schnelle approximative Antialiasing (FXAA) bevorzugen.

Best Practices von Temporal Antialiasing.

Wir empfehlen, diese Best Practices bei der Verwendung von Temporal Antialiasing (TAA) zu befolgen.

  • Bauen Sie Inhalte so wenig wie möglich auf Alias.
  • Verwenden Sie den Detaillierungsgrad (LOD), um Subpixel-Details für weit entfernte Objekte zu reduzieren.
  • Verwenden Sie den Anti-Flicker-Filter, um das Flackern zu verhindern. Die Variable r_AntialiasingTAAUseAntiFlickerFilter ist standardmäßig aktiviert.

Steuerung von Supersampling.

Zusätzlich zum Antialiasing unterstützt Lumberyard Supersampling für eine sehr hohe Renderqualität. Supersampling rendert die Szene in einer höheren Auflösung und verkleinert das Bild, um glatte und stabile Kanten zu erhalten. Aufgrund der hohen internen Rendering-Auflösung ist Supersampling leistungsintensiv und nur für Spiele geeignet, die auf High-End-Computern gespielt werden sollten.

3DMaster