Freigeben über


Übersicht über die Beleuchtung

Wenn Sie Direct3D-Beleuchtung verwenden, können Sie Direct3D die Details der Beleuchtung für Sie verarbeiten. Fortgeschrittene Benutzer können bei Bedarf die Beleuchtung selbst durchführen.

Wenn die Beleuchtung aktiviert ist, berechnet Direct3D die Farbe der einzelnen Objektvertex basierend auf einer Kombination der folgenden Punkte:

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

Wie Sie mit Beleuchtung und Materialien arbeiten, macht einen großen Unterschied bei 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.

Licht ist nicht erforderlich, um eine Szene zu rendern, aber Details in einer Szene, die ohne Licht gerendert wird, sind nicht sichtbar. Das Rendern einer nicht beleuchteten Szene führt am besten zu einer Silhouette der Objekte in der Szene. Dies reicht für die meisten Zwecke nicht aus.

Direktes Licht im Vergleich zum Umgebungslicht

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

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

Umgebungslicht ist praktisch überall in einer Szene. Umgebungslicht ist eine allgemeine Lichtebene, die eine ganze Szene füllt, unabhängig von den Objekten und deren Positionen 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.

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 die endgültige Farbe des Umgebungslichts. Die Alphakomponente steuert die Transparenz der Farbe. Bei Verwendung der Hardwarebeschleunigung oder RGB-Emulation wird die Alphakomponente ignoriert.

Direct3D-Lichtmodell im Vergleich zur Natur

In der Natur, wenn Licht aus einer Quelle ausgegeben wird, wird es von Hunderten reflektiert, wenn nicht Tausende oder Millionen von Objekten, bevor das Auge des Benutzers erreicht wird. Jedes Mal, wenn es reflektiert wird, wird etwas Licht von einer Oberfläche absorbiert, einige werden in zufällige Richtungen verstreut, und der Rest geht auf eine andere Oberfläche oder auf das Auge des Benutzers. 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 des Lichts perfekt zu simulieren, zu zeitaufwändig, um Direct3D-Grafiken in Echtzeit zu verwenden. Daher nähert sich das Direct3D-Lichtmodell 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 das Licht in Direct3D von einer Oberfläche reflektiert wird, interagiert die Lichtfarbe mathematisch mit der Oberfläche selbst, um die farbe zu erstellen, die schließlich auf dem Bildschirm angezeigt wird. Spezifische Informationen zu den Von Direct3D-Algorithmen verwendeten Algorithmen finden Sie unter Beleuchtungsmathematik.

Das Direct3D-Lichtmodell generalisiert Licht in zwei Arten: Umgebungslicht und direktes Licht. Jede hat unterschiedliche Attribute und interagiert jeweils auf unterschiedliche Weise mit dem Material einer Oberfläche. Umgebungslicht ist Licht, das so weit gestreut wurde, dass seine Richtung und Quelle unbestimmt sind: es behält überall einen niedrigen Grad an Intensität. 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 der Umgebungslichtpegel völlig unabhängig von 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 er bewegt sich in eine bestimmte Richtung. Direktes Licht interagiert mit dem Material einer Oberfläche, um Glanzlichter zu erzeugen, und seine Richtung wird als Faktor bei Schattierungsalgorithmen verwendet, einschließlich der Gouraud-Schattierung. Wenn direktes Licht reflektiert wird, trägt es nicht zum Umgebungslichtniveau in einer Szene bei. Die Quellen in einer Szene, die direktes Licht erzeugen, weisen unterschiedliche Merkmale auf, die sich darauf auswirken, wie sie eine Szene beleuchtet.

Darüber hinaus hat das Material eines Polygons Eigenschaften, die beeinflussen, wie dieses Polygon das empfangene Licht widerspiegelt. Sie legen ein einzelnes Reflektionsmerkmal fest, das beschreibt, wie das Material Umgebungslicht widerspiegelt, und Sie legen einzelne Eigenschaften fest, um die Glanz- und diffuse Reflektion 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 eine endgültige Farbe bilden. Jede Komponente reicht von 0,0 bis 1,0. Obwohl sowohl Leuchten als auch Materialien dieselbe Struktur zur Beschreibung der Farbe verwenden, werden die Werte durch Licht und Materialien etwas anders verwendet.

Farbwerte für Lichtquellen stellen die Menge einer bestimmten Lichtkomponente dar, die sie emittiert. Da Lichter 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 ist möglicherweise deaktiviert (ein Wert von 0,0 im entsprechenden Element), es kann so hell wie möglich sein (ein Wert von 1,0), oder es kann ein Level 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, wobei R(0,0), G(0,0), B(0,0) überhaupt kein Licht ausstrahlt. Sie können ein Licht erstellen, das nur eine Komponente ausstrahlt, 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 festlegen, der größer als 1,0 ist, um ein extrem helles Licht zu erzeugen.

Bei Materialien stellen Farbwerte dagegen dar, wie viel von einer Lichtkomponente durch eine 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, spiegelt das licht, das seinen Weg gibt. Ebenso spiegelt ein Material mit R(0,0), G(1,0), B(0,0), A(1,0) das grüne Licht wider, das darauf gerichtet ist. Materialien weisen mehrere Reflektionswerte auf, um verschiedene Arten von Effekten zu erzeugen.

Siehe Lichttypen und Lichteigenschaften.

Leuchten und Materialien