Das Kefk Network Wiki befindet sich im Testbetrieb.


Scanline Rendering

Aus Kefk.

Wechseln zu: Navigation, Suche
Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf bitte mit, ihn zu verbessern, und entferne anschließend diese Markierung.
Bild:Raster-dreieck.gif
Scanline-Rendering am Beispiel eines Dreiecks mit multiplen, quasi-parallelen Füllpfaden

Scanline Rendering oder auch Tastlinienrendern ist ein Verfahren der 2D-Computergrafik zur Darstellung von grafischen Primitiven auf Rastergeräten. Es wird auch für 3D-Computergrafik eingesetzt, dies ist aber erst nach der projektiven Abbildung möglich.

Das Verfahren wird häufig in modernen Grafikkarten zur Darstellung von 3D-Grafik in Echtzeit verwendet und wird in der Regel über OpenGL oder DirectX umgesetzt.

Das Scanline-Rendering ist eine Form des Renderns, bei dem für jedes Primitiv ein in Frage kommender Bildbereich zeilenweise auf Überdeckung geprüft wird. Eine solche Zeile nennt man Scanline oder auch Tastlinie. Einen Bereich zusammenhängender Pixel in einer Scanline, die zum Primitiv gehören, nennt man Span.

Bei dem Verfahren werden meist nur Polygone (Dreieck, Rechteck, Fächer, Band, ...) als Primitive eingesetzt. In diesem Fall werden alle nicht horizontalen Kanten betrachtet und ihre Schnittpunkte mit jeder Zeile des Bildes berechnet. Das kann zwar schnell und einfach mit dem Mittelpunktsalgorithmus erfolgen. Dieser Algorithmus führt allerdings gerne zu ungeliebten Überschneidungen, weswegen man beim Scanline Rendering eher darauf verzichtet. Zur Bestimmung der Schnittpunkte dienen deswegen meist andere, inkrementelle Verfahren. Hierbei wird z.B. der Kehrwert der Steigung bei Iteration in y-Richtung für Linien mit einer Steigung m>1 auf den aktuellen x-Wert (basierend auf schneller Integer-Arithmetik) aufsummiert. Division wird in der Regel vermieden, da sie entweder langsamer oder bei Hardwarelösungen nur mit unverhältnismässig hoher Gatterzahl zu realisieren ist.

Beim Abarbeiten einer Scanline werden dann die bereits überschrittenen Schnittpunkte mit den Objektekanten gezählt und die Parität betrachtet. Ist diese ungerade. so befindet man sich in einem Span, also zwischen zwei Objektkanten, ansonsten nicht. Somit sind auch konkave oder sich selbst überschneidende Objekte zulässig, jedoch sollten die Objekte einen geschlossenen Linienzug bilden. Die Pixel innerhalb eines Spans werden üblicher Weise ausgefüllt. Dabei wird zwischen den Attributen (z.B. gewünschte Farbe, Tiefe, Nebel-Parameter, Texturkoordinaten) der beiden Randpunkte interpoliert. Zum Setzen der finalen Pixelfarbe an einem bestimmten Punkt des Spans werden unter anderem die Pixelfarbe, Texturdaten, Tiefeninformationen, Überblendfaktoren und die zuvor schon für diesen Punkt ermittelten Pixeldaten herangezogen. Fortgeschrittene Techniken verwenden außerdem Algorithmen wie Bump Mapping oder diverse frei programmierbare Pixel-Shader.

Die Bestimmung von Shading-Eckwerten für die Eckpunkte des jeweiligen Primitivs ist dagegen Teil der vorangegangenen Geometrie-Berechnung der aufrufenden 3D-Rendering-Algorithmik. Siehe hierzu: Transform and Lighting.

Persönliche Werkzeuge
Andere Sprachen