Rendering-Pipeline
Die 3D-Daten liegen normalerweise in Form von Streams von so genannten Vertices vor. Je nach Format kann es sich dabei um Listen von Dreiecken versch. Formatierung oder auch Linienlisten oder einfache Punktlisten handeln. Die Vertizes werden in verschiedenen Einzelschritten transformiert, wobei das Ergebnis jeder Transformation der Ausgangspunkt der nächsten Transformation ist, bis ein fertiges 3D-Bild auf dem Bildschirm zu sehen ist, die Gesamtheit dieser hintereinander geschalteten Transformationen nennt man Pipeline.
- Zunächst wird versucht die Anzahl der zu verarbeitenden Vertizes so klein wie möglich zu bekommen. Um dies zu erreichen wird zunächst mit Verfahren wie Binary Space Partition, Portal-Based Rendering eine Sortierung der Vertizes nach ihrer räumlichen Anordnung im Level vorgenommen: Nur der Raum in dem die Kamera steht, sowie Räume die von diesem Raum aus gesehen werden können werden weiterverarbeitet.
- Im nächsten Schritt werden alle Vertizes aus der Verarbeitung ausgenommen, die zu Oberflächen gehören deren Vorderseite vom Betrachter wegzeigt. Diese Methode bezeichnet man als Back Face Culling.
- Danach wird die Menge der Vertizes auf diejenigen reduziert, die überhaupt im Sichtbereich liegen. Dazu prüft man jeden Vertex ob er sich zwischen Near und Far Clipping Plane befindet. Als nächstes wird überprüft, ob sich der Vertex auch zwischen den vier Ebenenen befindet, die die Ränder des Sichtbereichs bilden. Gehört ein abgeschnittener Vertex zu einer Oberfläche, die zum Teil innerhalb des Sichtbereichs liegt, so werden für die Oberfläche neue Vertizes generiert, die direkt auf der Sichtgrenze liegen und dadurch auf den Sichtbereich zurecht geschnitten. Diesen Vorgang bezeichnet man als Frustum Culling.
- Nachdem die Menge der Vertizes entsprechend geschrümpft wurde, werden die 3D-Daten zunächst einem Screen Mapping unterzogen und anschließend an den Rasterizer übergeben um dort die Farbwerte für die Pixel des Bildschirmrasters zu übermitteln.
- Nachdem durch eine Technik namens Z-Buffering, bzw. W-Buffering ermittelt wurde, welche Primitiven dem Pixel zugeordnet sind, wird für jeden ein Farbwert ermittelt.