Übersicht über die Beleuchtung

Wenn Sie Direct3D-Beleuchtung verwenden, erlauben Sie Direct3D, die Details der Beleuchtung für Sie zu verarbeiten. Fortgeschrittene Benutzer können die Beleuchtung auf Wunsch selbst durchführen.

Wenn die Beleuchtung aktiviert ist, berechnet Direct3D die Farbe jedes Objektvertex basierend auf einer Kombination aus folgendem:

  • Die Texel in einer zugeordneten Texturkarte.
  • Die diffusen und spiegelförmigen Farben am Scheitelpunkt, sofern angegeben.
  • Die Farbe und Intensität des Lichts, das von Lichtquellen in der Szene oder dem Umgebungslicht der Szene erzeugt wird.

Wie Sie mit Beleuchtung und Materialien arbeiten, macht einen großen Unterschied in der Darstellung der gerenderten Szene. Materialien definieren, wie Licht von einer Oberfläche reflektiert wird. Direktes Licht und Umgebungslicht definieren das reflektierte Licht. Sie müssen Materialien verwenden, um eine Szene zu rendern, wenn die Beleuchtung aktiviert ist.

Lichter sind zum Rendern einer Szene nicht erforderlich, aber Details in einer Szene, die ohne Licht gerendert wird, sind nicht sichtbar. Das Rendern einer unbeleuchteten Szene führt bestenfalls zu einer Silhouette der Objekte in der Szene. Dies ist für die meisten Zwecke nicht ausreichend.

Direktes Licht im Vergleich zu Umgebungslicht

Obwohl sowohl direktes Als auch Umgebungslicht Objekte in einer Szene beleuchten, sind sie unabhängig voneinander, haben aber sehr unterschiedliche Effekte, und sie erfordern, dass Sie mit ihnen auf völlig unterschiedliche Weise arbeiten.

Direktes Licht trifft direkt auf das Objekt. Direktes Licht hat immer Richtung und Farbe, und es ist ein Faktor für Schattierungsalgorithmen, z. B. Gouraud-Schattierung. Verschiedene Arten von Lichtern geben auf unterschiedliche Weise direktes Licht aus, wodurch spezielle Dämpfungseffekte entstehen.

Umgebungslicht ist effektiv überall in einer Szene. Umgebungslicht ist eine allgemeine Lichtebene, die eine gesamte Szene ausfüllt, unabhängig von den Objekten und ihren Orten in dieser Szene. Umgebungslicht hat keine Position oder Richtung, nur Farbe und Intensität. Jedes Licht fügt das gesamte Umgebungslicht in einer Szene hinzu.

Die Umgebungslichtfarbe hat die Form eines RGBA-Werts, wobei jede Komponente ein ganzzahliger Wert von 0 bis 255 ist. Dies ist im Gegensatz zu den meisten Farbwerten in Direct3D.

Die roten, grünen und blauen Komponenten kombinieren sich, um die endgültige Farbe des Umgebungslichts zu machen. Die Alphakomponente steuert die Transparenz der Farbe. Bei Verwendung von Hardwarebeschleunigung oder RGB-Emulation wird die Alphakomponente ignoriert.

Direct3D-Lichtmodell im Vergleich zur Natur

In der Natur wird Licht, wenn von einer Quelle emittiert wird, von Hunderten, wenn nicht Tausenden oder Millionen von Objekten reflektiert, bevor es das Auge des Benutzers erreicht. Jedes Mal, wenn es reflektiert wird, wird etwas Licht von einer Oberfläche absorbiert, einige werden in zufällige Richtungen gestreut, und der Rest geht auf eine andere Oberfläche oder auf das Auge des Benutzers weiter. Dieser Prozess wird fortgesetzt, bis das Licht auf nichts reduziert wird oder ein Benutzer das Licht wahrnimmt.

Offensichtlich sind die Berechnungen, die erforderlich sind, um das natürliche Verhalten von Licht perfekt zu simulieren, zu zeitaufwändig, um für Direct3D-Echtzeitgrafiken zu verwenden. Daher entspricht das Direct3D-Lichtmodell unter Berücksichtigung der Geschwindigkeit der Art und Weise, wie Licht in der natürlichen Welt funktioniert. Direct3D beschreibt Licht in Bezug auf rote, grüne und blaue Komponenten, die kombiniert werden, um eine endgültige Farbe zu erstellen.

Wenn in Direct3D Licht von einer Oberfläche reflektiert wird, interagiert die Lichtfarbe mathematisch mit der Oberfläche selbst, um die Farbe zu erzeugen, die schließlich auf dem Bildschirm angezeigt wird. Spezifische Informationen zu den Von Direct3D verwendeten Algorithmen finden Sie unter Mathematik der Beleuchtung.

Das Direct3D-Lichtmodell generalisiert Licht in zwei Arten: Umgebungslicht und direktes Licht. Jedes hat unterschiedliche Attribute und interagiert auf unterschiedliche Weise mit dem Material einer Oberfläche. Umgebungslicht ist Licht, das so sehr gestreut wurde, dass seine Richtung und Quelle unbestimmt sind: Es behält überall eine geringe Intensität bei. Die indirekte Beleuchtung, die von Fotografen verwendet wird, ist ein gutes Beispiel für Umgebungslicht.

Umgebungslicht in Direct3D, wie in der Natur, hat keine echte Richtung oder Quelle, nur eine Farbe und Intensität. Tatsächlich ist die Umgebungslichtebene völlig unabhängig von allen Objekten in einer Szene, die Licht erzeugen. Umgebungslicht trägt nicht zur Spiegelung bei.

Direktes Licht ist das Licht, das von einer Quelle innerhalb einer Szene erzeugt wird. es hat immer Farbe und Intensität und bewegt sich in eine angegebene Richtung. Direktes Licht interagiert mit dem Material einer Oberfläche, um spiegelfähige Hervorhebungen zu erzeugen, und seine Richtung wird als Faktor für Schattierungsalgorithmen verwendet, einschließlich der Gouraud-Schattierung. Wenn direktes Licht reflektiert wird, trägt es nicht zum Umgebungslicht in einer Szene bei. Die Quellen in einer Szene, die direktes Licht erzeugen, haben unterschiedliche Eigenschaften, die sich auf die Ausleuchtung einer Szene auswirken.

Darüber hinaus verfügt das Material eines Polygons über Eigenschaften, die beeinflussen, wie dieses Polygon das empfangene Licht reflektiert. Sie legen ein einzelnes Reflektionsmerkmal fest, das beschreibt, wie das Material das Umgebungslicht reflektiert, und sie legen individuelle Merkmale fest, um die spiegelhafte und diffuse Reflexion des Materials zu bestimmen.

Farbwerte für Leuchten und Materialien

Direct3D beschreibt die Farbe in Bezug auf vier Komponenten (Rot, Grün, Blau und Alpha), die sich zu einer endgültigen Farbe kombinieren. Jede Komponente reicht von 0,0 bis 1,0. Obwohl sowohl Leuchten als auch Materialien die gleiche Struktur verwenden, um Farbe zu beschreiben, werden die Werte von Leuchten im Vergleich zu Materialien ein wenig anders verwendet.

Farbwerte für Lichtquellen stellen die Menge einer bestimmten Lichtkomponente dar, die sie ausgibt. Da leuchten keine Alphakomponente verwenden, sind nur die roten, grünen und blauen Komponenten der Farbe relevant. Sie können die drei Komponenten als rote, grüne und blaue Linsen auf einem Projektionsfernseher visualisieren. Jedes Objektiv kann ausgeschaltet sein (ein Wert von 0,0 im entsprechenden Element), es kann so hell wie möglich sein (ein Wert von 1,0), oder es kann eine Ebene dazwischen sein.

Die Farben, die durch die Linsen kommen, kombinieren, um die endgültige Farbe des Lichts zu machen. Eine Kombination wie R(1.0), G(1.0), B(1.0) erzeugt ein weißes Licht, bei dem R(0,0), G(0,0), B(0,0) überhaupt kein Licht emittiert. Sie können ein Licht herstellen, das nur eine Komponente ausgibt, was zu einem reinen roten, grünen oder blauen Licht führt. oder das Licht könnte Kombinationen verwenden, um Farben wie Gelb oder Lila auszustrahlen. Sie können sogar negative Farbkomponentenwerte festlegen, um ein "dunkles Licht" zu erstellen, das tatsächlich Licht aus einer Szene entfernt. Oder Sie können die Komponenten auf einen Wert größer als 1,0 festlegen, um ein extrem helles Licht zu erzeugen.

Bei Materialien hingegen geben Farbwerte an, wie viel einer Lichtkomponente von einer Oberfläche reflektiert wird, die mit diesem Material gerendert wird. Ein Material, dessen Farbkomponenten R(1.0), G(1.0), B(1.0), A(1.0) sind, reflektiert das gesamte Licht, das auf seinen Weg kommt. Ebenso reflektiert ein Material mit R(0.0), G(1.0), B(0.0), A(1.0) das gesamte grüne Licht, das darauf gerichtet ist. Materialien verfügen über mehrere Reflektionswerte, um verschiedene Arten von Effekten zu erzeugen.

Weitere Informationen finden Sie unter Lichttypen und Lichteigenschaften.

Leuchten und Materialien