mini|Mit verschiedenen Methoden gerenderte 3D-Szene Bildsynthese oder Rendern (von , ) bezeichnet in der Computergrafik die Erzeugung eines Bildes aus Rohdaten. Rohdaten können geometrische Beschreibungen im 2D- oder 3D-Raum (auch Szene genannt), HTML, SVG etc. sein.

Eine Szene ist ein virtuelles räumliches Modell, das Objekte und deren Materialeigenschaften, Lichtquellen, sowie die Position und Blickrichtung eines Betrachters definiert.

Computerprogramme zum Rendern von Bildern werden Renderer genannt. Unterschieden werden z. B. die Rendering Engine für Computerspiele, die HTML-Renderer etc.

Beim Rendern müssen üblicherweise folgende Aufgaben gelöst werden:

die Ermittlung der vom virtuellen Betrachter aus sichtbaren Objekte (Verdeckungsberechnung) die Simulation des Aussehens von Oberflächen, beeinflusst durch deren Materialeigenschaften (Shading) die Berechnung der Lichtverteilung innerhalb der Szene, die sich unter anderem durch die indirekte Beleuchtung zwischen Körpern äußert.

Daneben erfordert die Erzeugung von Computeranimationen einige zusätzliche Techniken. Ein wichtiger Einsatzbereich ist die interaktive Synthese von Bildern in Echtzeit, bei der meist Hardwarebeschleunigung zum Einsatz kommt. Bei der realistischen Bildsynthese hingegen wird auf hohe Bildqualität oder physikalische Korrektheit Wert gelegt, während die benötigte Rechenzeit eine untergeordnete Rolle spielt.

mini|Ein gerendertes Bild mit Reflexions- und Schärfentiefeneffekten

Echtzeitrendern Beim Echtzeitrendern wird eine Reihe von Bildern schnell berechnet und die zugrundeliegende Szene vom Anwender interaktiv verändert. Die Berechnung erfolgt ausreichend schnell, so dass die Bildfolge als dynamischer Prozess empfunden wird. Ab einer Bildfrequenz von etwa 6 fps ist eine interaktive Benutzung möglich, bei 15 fps lässt sich mit Sicherheit von Echtzeit sprechen.Tomas Akenine-Möller, Eric Haines: Real-Time Rendering, S. 1 Auf modernen Computern wird das Echtzeitrendern durch Hardwarebeschleunigung mittels Grafikkarten unterstützt. Mit wenigen Ausnahmen unterstützt Grafikhardware nur Punkte, Linien und Dreiecke als grafische Grundobjekte.Tomas Akenine-Möller, Eric Haines: Real-Time Rendering, S. 7

Grafikpipeline

Beim Echtzeitrendern beschreibt die Grafikpipeline den Weg von der Szene bis zum fertigen Bild. Es handelt sich um eine Modellvorstellung, die je nach System variieren kann. Die Grafikpipeline ist oftmals in Teilen ähnlich wie Prozessorpipelines implementiert, bei denen Berechnungen parallel ausgeführt werden. Eine Grafikpipeline kann in drei große Schritte aufgeteilt werden: Anwendung, Geometrie und Rasterung.Tomas Akenine-Möller, Eric Haines: Real-Time Rendering, S. 11

Der Anwendungsschritt nimmt alle Änderungen an der Szene vor, die vom Anwender im Rahmen der Interaktion festgelegt werden, und gibt sie an den nächsten Schritt der Pipeline weiter. Daneben kommen hier Techniken wie Kollisionserkennung, Animation, Morphing und Beschleunigungsverfahren mittels räumlicher Unterteilungsschemata zum Einsatz.

mini|Darstellung einer Szene mit virtuellem Betrachter und Sichtvolumen (hellgrau), das von den beiden Clippingebenen begrenzt wird. Das Sichtvolumen wird im Zuge der Projektion in einen Würfel transformiert, sodass nähere Objekte größer als weiter entfernte erscheinen.

Der Geometrieschritt übernimmt einen Großteil der Operationen mit den Vertices, den Eckpunkten der Grundobjekte. Er lässt sich in verschiedene Unterschritte aufteilen, die nacheinander Transformationen in verschiedene Koordinatensysteme vornehmen. Um die perspektivische Abbildung zu vereinfachen, arbeiten fast alle geometrischen Operationen des Geometrieschrittes mit homogenen Koordinaten. Dabei werden Punkte durch vier Koordinaten und Transformationen durch 4×4-Matrizen definiert.

Zunächst werden alle Grundobjekte der Szene so transformiert, dass der virtuelle Beobachter entlang der z- (Tiefen-)achse blickt. Falls die Szene Lichtquellen enthält, wird für jeden Vertex anhand der Materialeigenschaften des entsprechenden Dreiecks eine Farbe berechnet. Das vom Betrachter aus sichtbare Volumen der Szene ist ein Pyramidenstumpf (Frustum). Im nächsten Schritt wird dieses Frustum in einen Würfel transformiert, was einer Zentralprojektion entspricht. Teilweise oder vollständig außerhalb des Sichtvolumens liegende Grundobjekte werden mittels Clipping- und Culling-Techniken beschnitten oder entfernt. Schließlich wird eine Transformation angewandt, die die Vertex-Koordinaten an den gewünschten Zeichenbereich des Bildschirms verschiebt. Die z-Koordinaten bleiben dabei weiter erhalten, da sie für die spätere Verdeckungsberechnung benötigt werden.

Im Rasterungsschritt werden alle verbleibenden, projizierten Grundobjekte gerastert, indem die zu ihnen gehörenden Pixel eingefärbt werden. Da bei überlappenden Dreiecken nur die sichtbaren Teile angezeigt werden sollen, wird ein Z-Buffer verwendet, der die Verdeckungsberechnung übernimmt.

Grafik-APIs Zur Ansteuerung von Grafikpipelines werden üblicherweise Grafik-APIs verwendet, die die Grafikhardware abstrahieren und dem Programmierer viele Aufgaben abnehmen. Wesentlich zur Entwicklung des Echtzeitrenderns hat der ursprünglich von Silicon Graphics eingeführte Standard OpenGL beigetragen. Die aktuellen Neuerungen von OpenGL und Microsofts DirectX finden hauptsächlich in modernen Computerspielen ihre Anwendung. Außer DirectX und OpenGL gab es noch andere Ansätze, wie Glide, die sich allerdings nicht durchsetzen konnten. Im professionellen Bereich hat OpenGL große Bedeutung. DirectX ist hingegen stark auf die Entwicklung von Spielen optimiert. DirectX ist eine proprietäre Software, die nur unter Windows verfügbar ist; sie ist kein offener Standard.

Historische Techniken

Die erste interaktive Technik zur Verdeckungsberechnung wurde 1969 von Schumacker und anderen veröffentlicht.Ivan Sutherland u. a.: A Characterization of Ten Hidden-Surface Algorithms. ACM Computing Surveys (CSUR) 6, 1 (March 1974): 1–55, hier S. 23, Schumackers AlgorithmusR. A. Schumaker u. a.: Study for Applying Computer-Generated Images to Visual Simulation. AFHRL-TR-69-14. US Air Force Human Resources Laboratory, 1969 diente der Flugsimulation für die US-Streitkräfte, eine Anwendung, bei der stets massiv in Grafikhardware investiert wurde.

In der Frühzeit der Computerspiele mit interaktiver 3D-Grafik wurden alle rechenaufwändigen Grafikoperationen noch vom Hauptprozessor des Rechners übernommen. Daher konnten nur sehr einfache und eingeschränkte Renderverfahren genutzt werden. Der Ego-Shooter Wolfenstein 3D (1992) etwa verwendete zur Verdeckungsberechnung Raycasting, womit sich nur eine festgelegte Höhendimension und rechtwinklig aneinandergrenzende Räume darstellen ließen. Doom kombinierte Raycasting mit zweidimensionalem Binary Space Partitioning, um die Effizienz zusätzlich zu steigern und komplexere Szenen rendern zu können.

Shading und direkte Beleuchtung Als Shading (dt.: Schattierung) wird allgemein die Berechnung der Farben an Oberflächen anhand der zugehörigen Materialeigenschaften und dem direkt von den Lichtquellen eintreffenden Licht bezeichnet. Das Shading kommt sowohl beim Echtzeitrendern als auch beim realistischen Rendern zum Einsatz. Die indirekte Beleuchtung von anderen Oberflächen bleibt dabei zunächst unberücksichtigt. Einen Spezialfall stellen nichtfotorealistische Shading-Techniken (Non-photorealistic Rendering) dar, bei denen zum Beispiel aus ästhetischen Gründen Verfremdungen erzeugt werden, etwa Cel Shading für comicähnliche Bilder.

Lichtquellen und Schatten Bei der Modellierung sind verschiedene, oft physikalisch nicht korrekte Arten von Lichtquellen üblich. Directional Lights senden parallele Lichtstrahlen ohne Abschwächung in eine bestimmte Richtung, Punktlichtquellen emittieren Licht in alle Richtungen, und Spot Lights emittieren Licht nur in einem kegelförmigen Bereich. In Wirklichkeit besitzen Lichter eine bestimmte Fläche; die Lichtintensität nimmt quadratisch mit der Entfernung ab. Dies wird bei der realistischen Bildsynthese berücksichtigt, während beim Echtzeitrendern meistens nur einfache Lichtquellen verwendet werden.

Schatten sind ein wichtiges Element von Computergrafiken, da sie dem Anwender Rückschlüsse über die Platzierung von Objekten im Raum geben. Weil Lichtquellen eine bestimmte Größe haben, wirken Schatten in Wirklichkeit mehr oder weniger verschwommen. Dies wird bei realistischen Renderverfahren berücksichtigt.

Lokale Beleuchtungsmodelle mini|hochkant=1.7|Lichtreflexion auf einer lambertschen (ideal diffusen), einer weniger rauen (glänzenden) und einer glatten (spiegelnden) Oberfläche

Lokale Beleuchtungsmodelle beschreiben das Verhalten von Licht auf Oberflächen. Wenn ein Lichtteilchen auf einen Körper trifft, wird es entweder reflektiert, absorbiert oder – außer bei Metallen – ins Innere des Körpers gebrochen. Nur auf ganz glatten Oberflächen wird eintreffendes Licht gespiegelt; bei nichtmetallischen Körpern wird der relative Anteil des reflektierten und gebrochenen Lichtes durch die fresnelschen Formeln beschrieben.

Mikroskopische Unebenheiten führen dazu, dass das Licht nicht gespiegelt wird, sondern mit einer bestimmten Wahrscheinlichkeit in eine davon abweichende Richtung reflektiert wird. Die Wahrscheinlichkeitsverteilung, die dieses Verhalten für ein Material beschreibt, wird bidirektionale Reflektanzverteilungsfunktion (BRDF) genannt. Lokale Beleuchtungsmodelle sind meist parametrierbare BRDFs. Ideal diffuse Oberflächen lassen beispielsweise mit dem lambertschen Gesetz und glänzende Oberflächen mit den Phong-Beleuchtungsmodell simulieren. Beim Echtzeitrendern wird oft eine Kombination aus einem diffusen, einem glänzenden und einem konstanten Faktor verwendet. Für die realistische Bildsynthese wurden weitere, physikalisch plausiblere Modelle entwickelt.

Die BRDF geht davon aus, dass das an einem Punkt der Oberfläche eintreffende Licht auch genau dort wieder austritt. In Wirklichkeit streuen nichtmetallische Körper Licht in ihrem Inneren, wodurch sich ein weicheres Erscheinungsbild ergibt. Die Simulation dieser Volumenstreuung ist vor allem für die realistische Bildsynthese von Bedeutung.

Interpoliertes Shading mini|hochkant=1.2|Ein Körper (präziser ein Polyeder), links mit Flat Shading, rechts mit Gouraud Shading gerendert, damit er wie eine Kugel (oder ein Rotationsellipsoid) aussieht. Die Beschreibung des Körpers liegt als Drahtgittermodell vor, denn relevant ist ausschließlich Fläche, nicht das Volumen! Eine echte Kugel ließe sich mit sehr viel weniger Parametern beschreiben: Mittelpunkt + Radius. Stattdessen beschreibt man Oberflächen durch viele Vertices und verbindet diese jeweils mit Geraden untereinander. Manche Modelle schreiben Dreiecke vor, andere Vierecke. Berechnungen werden auf diese Vertices angewandt. Dieses Methode wird nicht nur in der Bildsynthese angewandt, sondern z. B. auch bei Numerischen Simulationen (FEM).

Beim Echtzeitrendern gibt es drei übliche Methoden, um die Beleuchtung eines Dreiecks zu berechnen. Beim Flat Shading wird die Farbe für ein Dreieck berechnet und das gesamte Dreieck mit dieser Farbe gefüllt. Dadurch werden die Facetten, aus denen sich das Modell zusammensetzt, deutlich sichtbar. Das von den meisten Grafikkarten unterstützte Gouraud Shading hingegen bestimmt die Farbe an jedem Eckpunkt eines Dreiecks, sodass bei der Rasterung zwischen diesen Farbwerten interpoliert wird und sich ein weicheres Erscheinungsbild als beim Flat Shading ergibt. Beim Phong Shading ist zusammen mit jedem Vertex die Normale an diesem Vertex verfügbar. Bei der Rasterung wird zwischen den Normalen interpoliert und das lokale Beleuchtungsmodell entsprechend dieser Normalen berechnet. Dieses Verfahren vermeidet einige Darstellungsprobleme des Gouraud Shading.

Mapping-Techniken mini|Kugeln mit verschiedenen prozeduralen Texturen