Screen Space Ambient Occlusion

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
Dieser Artikel oder nachfolgende Abschnitt ist nicht hinreichend mit Belegen (beispielsweise Einzelnachweisen) ausgestattet. Die fraglichen Angaben werden daher möglicherweise demnächst entfernt. Bitte hilf der Wikipedia, indem du die Angaben recherchierst und gute Belege einfügst. Näheres ist eventuell auf der Diskussionsseite oder in der Versionsgeschichte angegeben. Bitte entferne zuletzt diese Warnmarkierung.
SSAO Komponente einer typischen Spielszene

Screen Space Ambient Occlusion (SSAO) ist eine Rendering-Technik bei Computer-Grafik für die effiziente Annäherung des häufig verwendeten Effekts „Ambient Occlusion“ in Echtzeit. Es wurde von Vladimir Kajalin während seiner Arbeit bei Crytek entwickelt, und wurde zum ersten Mal im Jahr 2007 bei Crysis, einem Videospiel von Crytek für Microsoft Windows eingesetzt.

Implementierung[Bearbeiten]

Der Algorithmus wird als ein Pixel-Shader implementiert, durch Analyse der Tiefenpuffer einer Szenerie, die in einer Textur gespeichert werden. Für jedes Pixel auf dem Bildschirm tastet ein Pixelshader die Tiefenwerte um ein Pixel herum ab, und versucht für die abgetasteten Punkte den jeweiligen Betrag der Okklusion zu errechnen. In seiner einfachsten Implementierung errechnet sich der Okklusions- (Verdeckungs-) Faktor lediglich anhand des Unterschieds der Tiefenwerte zwischen dem abgetasteten Punkt und dem aktuellen Punkt.

Ohne zusätzliche intelligente Lösungen müsste eine solche Brute-Force-Methode für eine akzeptable Bildqualität etwa 200 mal pro errechnetem Pixel Texturdaten auslesen. Das ist für Echtzeit-Rendering bei dem aktuellen Stand der Grafik-Hardware nicht akzeptabel. Um gute Ergebnisse mit weit weniger Zugriffen auf die Texturdaten zu bekommen, erfolgt die Abtastung mittels eines zufällig rotierenden Kernels. Die Kernel-Ausrichtung wird alle N Bildschirmpixel wiederholt, um das Rauschen im endgültigen Bild auf ein Hochfrequenz-Rauschen zu limitieren. Anschließend wird dieses Hochfrequenzrauschen zum größten Teil durch eine NxN Nachbearbeitung (Blur) unter Berücksichtigung von möglichen Unterbrechungen oder Störungen in den Tiefen-Werten (mit Methoden um beispielsweise bei den Nachbarpixeln die Normalen mit den entsprechenden Tiefenwerten zu vergleichen) entfernt. Solche Methoden verringern die Anzahl der Tiefenwert-Abtastungen der Pixel auf etwa 16 per Pixel oder weniger, bei immer noch sehr guter Bildqualitiät. Erst durch diese Methoden kann softwareseitiges SSAO in Echtzeitanwendungen (z.B. Computerspielen) verwendet werden.

Im Vergleich zu anderen Ambient Occlusion-Methoden hat SSAO die folgenden Vorteile:

  • Es funktioniert unabhängig von der Komplexität der Szene.
  • Die Daten müssen nicht vorbereitet werden, es gibt keine zusätzlichen Ladezeiten und keine Speicherzuordnungen im Systemspeicher.
  • Funktioniert mit dynamischen Szenerien.
  • Funktioniert für jedes Pixel auf dem Bildschirm auf die gleiche konsistente Weise.
  • Keine CPU-Auslastung – der Vorgang kann komplett von der GPU ausgeführt werden.
  • Kann man vergleichsweise einfach in jede moderne Grafik-Pipeline integrieren.

Dieses Verfahren hat auch einige Nachteile:

  • Die Berechnung ist auf einen kleinen Bereich reduziert, und das Ergebnis in vielen Fällen von der jeweiligen Ansicht abhängig, da das Ergebnis von SSAO allein von den jeweils angrenzenden Texel-Tiefen abhängig ist, völlig ohne jegliche Berücksichtigung der Geometrie und anderen Faktoren der Objekte.
  • Es ist schwierig beim Blurring das Hochfrequenzrauschen zu entfernen, ohne dabei Tiefen-Diskontinuitäten wie Objektkanten zu beeinträchtigen (der Effekt sollte nicht „ausbluten“ auf andere Objekte).

Siehe auch[Bearbeiten]