Beleuchtungseffekt „Entfernt-Spiegelnd“

Verwenden Sie den lichtend entfernten Lichteffekt, um ein Bild zu erstellen, das eine reflektierende Oberfläche zu sein scheint, bei der die Lichtquelle aus einer großen Entfernung (z. B. die Sonnen- oder Oberlichter) zu stammen scheint. Dieser Effekt verwendet den Alphakanal als Höhenkarte und leuchtet das Bild mit einer entfernten Lichtquelle.

Die Farbe der Ausgabebitmap ist das Ergebnis von helle Farbe, Lichtposition und Oberflächengeometrie. Die Alphakanalausgabe für jedes Pixel mit specularer Beleuchtung ist das Maximum der roten, grünen und blauen Kanalausgabe für dieses Pixel.

Die CLSID für diesen Effekt ist CLSID _ D2D1DistantSpecular.

Beispielbild

Das hier gezeigte Beispiel zeigt die Ein- und Ausgabebilder des entfernten Specular-Beleuchtungseffekts.

Screenshot des Effektbeispiels mit den Ein- und Ausgabebildern des entfernten Specular-Beleuchtungseffekts.

Die endgültige Ausgabebitmap kann mit den folgenden Gleichungen berechnet werden.

Ausgabebitmapberechnung

Hierbei gilt:

K? = Specular Lighting-Konstante.
Normales Oberflächensymbol. = Normaleinheitsvektor der Oberfläche.
Halfway-Vektorsymbol. = "halber" Einheitenvektor zwischen Augeneinheitsvektor und lichten Einheitenvektor.
Cr,Cg,Cb = die helle Farbe in RGB-Komponenten.

Entfernte Lichtquelle

Die Abbildung zeigt hier ein Beispiel für die Richtung des Lichts von einer entfernten Lichtquelle.

Entfernte Lichtquelle

Der Effekt berechnet den Lichtvektor mit den Parametern "azi vektor" und "elevation". l-Vektor. mithilfe der folgenden Gleichungen:

Berechnung des Lichtvektors

wobei Light?, Lightyund Lightz die Eingabelichtpositionswerte sind.

Effect-Eigenschaften

Anzeigename und Indexenumeration BESCHREIBUNG
Azimut
D2D1 _ ENTFERNTSPECULAR _ PROP _ AZIPUL
Der Richtungswinkel der Lichtquelle in der XY-Ebene relativ zur X-Achse in der uhrweisen Richtung des Indikators. Die Einheiten liegen in Grad und müssen zwischen 0 und 360 Grad liegen.
Der Typ ist FLOAT.
Der Standardwert ist 0,0f.
Elevation
D2D1– _ ENTFERNTSSPEZIFISCHE _ _ PROP-ERHÖHUNG
Der Richtungswinkel der Lichtquelle in der YZ-Ebene relativ zur Y-Achse in der Zählertaktrichtung. Die Einheiten liegen in Grad und müssen zwischen 0 und 360 Grad liegen.
Der Typ ist FLOAT.
Der Standardwert ist 0,0f.
SpecularExponent
D2D1 _ ENTFERNTPECULAR _ PROP _ SPECULAR _ EXPONENT
Der Exponent für den specular-Begriff in der Phong-Beleuchtungsgleichung. Ein größerer Wert entspricht einer reflektierenderen Oberfläche. Der Wert ist unitlos und muss zwischen 1,0 und 128 liegen. Der Typ ist FLOAT.
Der Standardwert ist 1,0f.
SpecularConstant
D2D1 _ ENTFERNTPECULAR _ PROP _ SPECULAR _ CONSTANT
Das Verhältnis der spiegelförmigen Reflektion zum eingehenden Licht. Der Wert ist einheitslos und muss zwischen 0 und 10.000 liegen. Der Typ ist FLOAT.
Der Standardwert ist 1,0f.
SurfaceScale
D2D1 _ ENTFERNTSPECULAR _ PROP SURFACE _ _ SCALE
Der Skalierungsfaktor in Z-Richtung. Der Wert ist einheitslos und muss zwischen 0 und 10.000 liegen. Der Typ ist FLOAT.
Der Standardwert ist 1,0f.
Color
D2D1– _ ENTFERNTEPECULAR _ _ PROP-FARBE
Die Farbe des eingehenden Lichts. Diese Eigenschaft wird als D2D1 _ VECTOR _ 3F (R, G, B)verfügbar gemacht und zum Berechnen von L R, L G, LB verwendet. Der Typ ist D2D1 _ VECTOR _ 3F.
Der Standardwert ist {1,0f, 1,0f, 1,0f}.
KernelUnitLength
D2D1 _ ENTFERNTSPECULAR _ PROP KERNEL UNIT _ _ _ LENGTH
Die Größe eines Elements im Sobel-Kernel, das zum Generieren der Oberflächennormale in X- und Y-Richtung verwendet wird. Diese Eigenschaft ist ein D2D1 _ VECTOR _ 2F (Kernel Unit Length X, Kernel Unit Length Y) und wird in (geräteunabhängige Pixel (DIPs)/Kernel Unit) definiert. Der Effekt verwendet die bilineare Interpolation, um die Bitmap so zu skalieren, dass sie mit der Größe der Kernelelemente übereinstimmen kann. Der Typ ist D2D1 _ VECTOR _ 2F.
Der Standardwert ist {1,0f, 1,0f}.
Scalemode
D2D1 _ ENTFERNTSPECULAR _ PROP _ _ SCALE-MODUS
Der Interpolationsmodus, den der Effekt verwendet, um das Bild auf die entsprechende Länge der Kerneleinheit zu skalieren. Es gibt sechs Skalierungsmodi, die in Qualität und Geschwindigkeit reichen.
Der Typ ist D2D1 _ _ ENTFERNTSPECULAR-SKALIERUNGSMODUS. _
Der Standardwert ist D2D1 _ ENTFERNTSPECULAR _ SCALE _ MODE _ LINEAR.

Skalierungsmodi

Enumeration Beschreibung
D2D1 _ _ ENTFERNTSPECULAR-SKALIERUNGSMODUS _ _ NÄCHSTER _ NACHBAR Stichprobenentnahme für den nächstgelegenen einzelnen Punkt und Verwendung dieses Punkts. Dieser Modus verbraucht weniger Verarbeitungszeit, gibt jedoch das Image mit der niedrigsten Qualität aus.
D2D1 _ _ ENTFERNTSPECULAR-SKALIERUNGSMODUS _ _ LINEAR Verwendet eine Stichprobe mit vier Punkt und eine lineare Interpolation. Dieser Modus gibt ein Bild mit höherer Qualität als der nächste Nachbar aus.
D2D1 _ ENTFERNTSPECULAR _ SCALE MODE _ _ KUBISCH Verwendet einen kubischen 16-Beispielkernel für die Interpolation. Dieser Modus verwendet die meiste Verarbeitungszeit, gibt jedoch ein Image mit höherer Qualität aus.
D2D1 _ ENTFERNTSPECULAR _ SCALE MODE MULTI SAMPLE _ _ _ _ LINEAR Verwendet vier lineare Stichproben innerhalb eines einzelnen Pixels für ein gutes Edge-Antialiasing. Dieser Modus eignet sich gut für das Herunterskalierung um kleine Mengen auf Bildern mit wenigen Pixeln.
D2D1 _ : _ SKALARER _ SKALIERUNGSMODUS _ ANISOTROP Verwendet die Anisotrope Filterung, um ein Muster entsprechend der transformierten Form der Bitmap abzubilden.
D2D1 _ ENTFERNTERSPEKULÄRER _ _ SKALIERUNGSMODUS _ IN HOHER QUALITÄT _ _ KUBISCH Verwendet einen kubischen Kernel mit variabler Größe, um ein Vorabskalieren des Bilds durchzuführen, wenn die Abwärtsskalierung in der Transformationsmatrix beteiligt ist. Verwendet dann den kubischen Interpolationsmodus für die endgültige Ausgabe.

Hinweis

Wenn Sie keinen Modus auswählen, wird der Effekt standardmäßig auf D2D1 _ DISTANTSPEULAR _ SCALE MODE LINEAR _ _ (LINEAR) eingestellt.

Requirements (Anforderungen)

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 8 und Plattformupdate für Windows 7 [ Desktop-Apps | Windows Store Apps]
Unterstützte Mindestversion (Server) Windows 8 und Plattformupdate für Windows 7 [ Desktop-Apps | Windows Store Apps]
Header d2d1effects.h
Bibliothek d2d1.lib, dxguid.lib

ID2D1Effect