Bild: Vierge Marie
Grundidee: Zeichnen von hinten nach vorne.
Bild: Zapyon
Problem:
Bild: Zapyon
Bild: Zeus
* Der Z-Buffer-Algorithmus kann auch andere Objekte verarbeiten
Bild: Gemeinfrei
Bild: A. Nischwitz
Maler
Maler
z-Buffer
Z-Fighting: Begrenzte Auflösung führt zu Flimmern bei nah beieinander liegenden Flächen
→ Lösung: Subpixel-Antialiasing
Transparente Objekte: Reiner Tiefentest versagt, da Beiträge mehrerer Ebenen kombiniert werden müssen
→ hier brauchen wir noch andere Algorithmen
Verwirft Flächen, die von der Kamera weg zeigen.
Rekursive Raumzerlegung für statische Szenen.
Zeilenweise Berechnung der Sichtbarkeit.
Dieses werden wir hier nicht weiter betrachten.
Zeilenweise Berechnung der Sichtbarkeit.
Anstatt Polygone auf den Bildschirm zu projizieren (Rasterisierung), verfolgt Raytracing den Weg des Lichts umgekehrt:
Für jedes Pixel (x, y) der Bildebene:
Generiere einen Primärstrahl vom Augpunkt durch (x, y)
Setze t_min = Unendlich
Setze Treffer_Objekt = Null
Für jedes Objekt in der Szene:
Berechne Schnittpunkt t mit dem Strahl
Wenn (t > 0) UND (t < t_min):
t_min = t
Treffer_Objekt = Aktuelles_Objekt
Wenn Treffer_Objekt != Null:
Farbe(x, y) = BerechneBeleuchtung(Treffer_Objekt, t_min)
Sonst:
Farbe(x, y) = Hintergrundfarbe| Eigenschaft | Z-Buffer | Raytracing |
|---|---|---|
| Komplexität | O(P) - skaliert mit Pixeln | O(P * log n) - skaliert mit Strahlen & Objekten |
| Verdeckung | Pixelweise via Tiefentest | Implizit via Schnittprüfung |
| Schatten | Zusatzverfahren (Shadow Maps) |
Natürlich via Schattenstrahlen |
| Hardware | Optimiert für GPUs (Standard) |
Rechenintensiv (Echtzeit erst kürzlich) |
P - Anzahl Pixel (Bildschirm)
n - Anzahl Objekte
Nicht die Zeichenreihenfolge entscheidet über die Sichtbarkeit, sondern die geringste Tiefe pro Pixel.