• Keine Ergebnisse gefunden

4.3 Einzelpositionsdaten

5.4.2 Wirksames Shaderantialiasing beim Einsatz von Shadowmaps

Beim Shadowmapping wird die Szene zuerst aus der Sicht der Lichtquelle betrachtet und die Tiefenwerte des Szenarios werden in einer Tiefentextur gespeichert. Während der Darstel-lung werden die Vertices mit Hilfe einer Schattenmatrix in den Texturraum der Tiefentextur transformiert. Die Koordinaten der Fragmente werden linear zwischen den Koordinaten der Eckpunkt-Vertices interpoliert. Somit liegen nach der Transformation auch die Fragment-koordinaten im Texturraum der Schattentextur. Der Tiefenwert des aktuellen Fragments wird dann mit dem korrespondierenden Tiefenwert der Schattentextur verglichen. Aus die-sem Vergleich wird abgeleitet, ob das momentane Fragment abgeschattet dargestellt wer-den soll oder nicht.

Abbildung 51: Detailverlust von kleinen Strukturen während der Darstellung und Ausgleich mittels angepasstem -AtoC-Sampling

Kapitel: Darstellung der Daten 95 5.4 Samplingstrategien komplexer geometrischer Szenarien

In Abbildung 52 wird deutlich, dass die begrenzte Auflösung der Tiefentextur und der Ver-gleich diskreter Tiefenwerte dazu führen, dass störende Treppenartefakte an den Kanten-übergängen des abgeschatteten Bereichs entstehen. Auch die bilineare Filterung der Tie-fenwerte vermag die Aliasingeffekte nicht vollkommen zu unterbinden.

Bildlich stellen sich die Tiefenwerte der Texel der Schattentextur wie quaderförmige Säulen im Texturraum dar.

Auf der linken Seite von Abbildung 53 ist dieser Sachverhalt mit Hilfe einer 2D-Ansicht ver-deutlicht. Weiterhin sind drei Fragmente A, B, C und ihre zugehörigen Ebenen exemplarisch eingezeichnet.

Während beim Percentage Closer Filtering von W.T. Reevers et al. [54] mehrere Nachbar-schaftssamples der Schattentextur dazu genutzt werden, den Grad der Abschattung über die Anzahl der verglichenen Textursamples zu gewichten, nutzen die Shadow Silhouette Maps von P. Sen et al. [57] einen zusätzlichen Berechnungsschritt und eine weitere Textur, in der eine einfache Approximation der Schattenkantensilhouette abgespeichert wird.

Abbildung 52: Aliasingartefakte beim Einsatz von Shadowmapping und Effekt der bilinearen Filterung der Tiefenwerte

Abbildung 53: Säulendarstellung und Approximation der Säulenform mittels Ellipsoid und verformten Ellipsoid

Kapitel: Darstellung der Daten

96 5.4 Samplingstrategien komplexer geometrischer Szenarien

Ich habe nach einer Möglichkeit gesucht, die durch den Schnitt zwischen der Dreiecksebene des aktuellen Fragments und dem imaginären Säulenvolumen der Schattentexel entstehen-den Schattenkanten analytisch zu beschreiben. Inspiriert wurde ich dabei von Arbeiten, die sich mit der formalen Darstellung beliebiger in Texturen enthaltener Kanten beschäftigen wie beispielsweise die Ansätze von P. Sen [58] oder S. Gustavson [59]. Letzterer zerlegt va-riabel komplexe Kantenzüge in kleinere Einzelabschnitte, die sich durch Polynome zweiten Grades beschreiben lassen. Die Koeffizienten werden dabei in einer separaten Textur ver-merkt.

Es stellt sich die Frage, wie die formal kaum beschreibbare Säulenstruktur der Schattentextur in ein mathematisch einfach zu handhabendes Konstrukt überführt werden kann, mit dessen Hilfe ein Abstandsmaß bestimmt wird, das Auskunft darüber gibt, wie weit ein Fragment im Bildraum von der zugehörigen Schattenkante entfernt ist. Die Form der Säulen lässt sich gut durch parametrisierte Ellipsoide nachbilden.

(5.12) In der Mitte von Abbildung 53 ist das Ellipsoid innerhalb der Säule platziert. Um die Ecken der Säulenstruktur besser approximieren zu können, besteht die Notwendigkeit, das Ellip-soid zu verformen. Dies wird durch die Anpassung der Exponenten erreicht (rechte Seite von Abbildung 53).

(5.13) Der Schnitt zwischen Ebene und Ellipsoid ist mathematisch komplex. Um die Berechenba r-keit zu vereinfachen, bietet es sich an, die Ebene in den Ellipsoid-Raum zu transformieren.

Dafür wird eine 3x3 Transformations matrix (siehe (5.14)) benötigt. Für das verformte Ellipsoid wird die Matrix entsprechend angepasst (siehe (5.15)).

(5.14)

(5.15)

Durch die Transformation in den Ellipsoid-Raum erfolgt der Test, ob die zum Fragment gehö-rende Ebene das Ellipsoid schneidet, nur noch zwischen transformierter Ebene und der Ein-heitskugel.

Kapitel: Darstellung der Daten 97 5.4 Samplingstrategien komplexer geometrischer Szenarien

Jedes Fragment liegt innerhalb eines Dreiecks, das durch Vertices seiner drei Eckpunkte spe-zifiziert wird. Bis vor wenigen Monaten bestand keine Möglichkeit, im Fragmentshaderpro-gramm auf die Koordinaten der Dreieckseckpunkte des aktuellen Fragments zuzugreifen.

Seit Kurzem sind diese Informationen abrufbar. Erst dadurch bietet sich die Möglichkeit, die Ebenengleichung anhand dieser Daten zu erstellen. Dazu wird das Kreuzprodukt zweier Vek-toren des Dreiecks gebildet, beispielsweise . Der so erhaltene, zur Ebene des Dreiecks senkrecht stehende Vektor wird normalisiert und ergibt den Norma-lenvektor der Ebene.

Die Entscheidung, ob die transformierte Ebene die Einheitskugel schneidet oder nicht, kann nun mit Hilfe der Berechnung des minimalen Abstandes zwischen Ebene und Kugel erfol-gen.

(5.16)

Da der Mittelpunkt der Einheitskugel dem Koordinatenursprung entspricht, wird aus dem Punkt automatisch der Vektor . Ist (der Radius der Einheitskugel), so schnei-det die Ebene die Kugel nicht. Für berührt oder schneidet die Dreiecksebene die Einheitskugel.

Für die drei Beispielfragmente aus Abbildung 53 leiten sich daraus nun folgende unterschied-liche Behandlungsmethoden ab: Fragment A liegt auf einer Ebene, die unsere Ellipsoidapp-roximation nicht schneidet. Deshalb wird auch kein Abstandsmaß bestimmt. Fragment A wird nicht abgeschattet dargestellt. Fragment B liegt innerhalb des Ellipsoids und wird ohne Berechnung eines Abstandsmaßes abgeschattet dargestellt. Fragment C liegt auf einer Ebe-ne, die das Ellipsoid schneidet. Die Schattenkurve ve rläuft also auf der gleichen EbeEbe-ne, auf der C liegt. Die transformierten Koordinaten von C werden nun in die implizite Schnittkur-vengleichung eingesetzt, die der Kreisgleichung entspricht, die sich aus dem Schnitt der transformierten Ebene mit der Einheitskugel ergibt.

Die Funktion liefert dann mit Werten für , oder ein quadratisches Maß für den Abstand des Fragments C zur Schattenkurve der Dreiecksebene.

Mit Hilfe dieses Maßes lässt sich auf einfache Art und Weise ein Helligkeitsverlauf realisie-ren. Der Helligkeitswert ergibt sich durch das mittels berechnete Abstandsmaß

und die obere Abstandsschranke mit Hilfe der nachfolgenden Gleichung:

(5.17)

Kapitel: Darstellung der Daten

98 5.4 Samplingstrategien komplexer geometrischer Szenarien

Auf der linken Seite von Abbildung 54 ist die Berechnung der Schattenbereiche bereits mit Hilfe der verformten Ellipsoide realisiert. Die Randbereiche der beschatteten Areale sind jedoch noch ohne weichen Übergang dargestellt. Auf der rechten Seite wird das Abstands-maß der Schattenkurve zur Berechnung des Helligkeitsverlaufs verwendet. Es ist gut erkenn-bar, dass die Bildung von störenden Treppenartefakten dadurch wirksam vermieden werden kann.

In Abbildung 55 sind die Intervalle der Helligkeitsverteilung unterschiedlich breit gewählt. Es bietet sich dadurch die Möglichkeit, neben perfektem Antialiasing auch unterschiedlich brei-te Softshadow-Übergänge zu erzeugen.

Abbildung 54: Alternative Darstellungsform der Schattentextur und weicher Randverlauf ohne störende Aliasingartefakte

Abbildung 55: Wirksames Antialiasing der Schattenkante und weicher Helligkeitsverlauf mit Hilfe des Abstandsmaßes

Kapitel: Weiterführende Themen 99

Kapitel 6

Weiterführende Themen

In den vorhergehenden Kapiteln habe ich die Kernthemen und Schwerpunktgebiete meiner Arbeit vorgestellt und erläutert. Neben der Beschäftigung mit diesen Methoden und Verfa h-rensweisen bot sich mir die Gelegenheit, nach Ansätzen und Lösungen für einige themen-verwandte Probleme und Fragestellungen zu suchen.

Diese Themengebiete möchte ich kurz in den folgenden beiden Abschnitten diskutieren.