Beleuchtungseffekt „Scheinwerfer-Spiegelnd“
Verwenden Sie den spot-spekulären Beleuchtungseffekt, um ein Bild zu erstellen, das eine reflektierende Oberfläche zu sein scheint, bei der die Lichtquelle auf einen gerichteten Lichtkegel beschränkt ist. Dieser Effekt verwendet den Alphakanal als Höhenkarte und beleuchtet das Bild mit einer Punktlichtquelle.
Die Farbe der Ausgabe-Bitmap ist das Ergebnis der Lichtfarbe, der Lichtposition, der Richtung des Kegels und der Oberflächengeometrie gemäß dem Spiegelteil des Phong-Beleuchtungsmodells. Die Alphakanalausgabe für jedes Pixel mit Glanzlicht ist das Maximum der roten, grünen und blauen Kanalausgaben für dieses Pixel.
Die CLSID für diesen Effekt ist CLSID_D2D1SpotSpecular.
Beispielbild
Das hier gezeigte Beispiel zeigt die Eingabe- und Ausgabebilder des Spot-Glanzlichteffekts.
Glanzlicht bezieht sich auf Licht, das in einer bestimmten Richtung reflektiert wird.
Der Effekt berechnet die endgültigen Ausgabepixelwerte anhand der folgenden Formeln:
where
Spot-Lichtquelle
Eine Spotlichtquelle gibt Licht in einem Kegel in einer bestimmten Richtung aus und gibt kein Licht außerhalb des Kegels aus.
Die Spotlichtquelle berechnet den Lichtvektor L und den Halfway Vector H auf die gleiche Weise wie der Punkt-Spiegel-Effekt .
Der Effekt berechnet die Lichtfarbe Lr, Lg, Lb als Funktion der Position der Lichtquelle, wie mit den folgenden Formeln dargestellt:
Das durch die folgenden Formeln definiert:
Das wird durch die folgenden Formeln definiert:
Effekteigenschaften
Anzeigename und Indexenumeration | BESCHREIBUNG |
---|---|
LightPosition D2D1_SPOTSPECULAR_PROP_LIGHT_POSITION |
Die Lichtposition der Punktlichtquelle. Die -Eigenschaft ist eine D2D1_VECTOR_3F, die als (x, y, z) definiert ist. Die Einheiten befinden sich in geräteunabhängigen Pixeln (DEVICE-Independent Pixels, DIPs) und sind nicht gebunden. Der Typ ist D2D1_VECTOR_3F. Der Standardwert ist {0.0f, 0.0f, 0.0f}. |
PointsAt D2D1_SPOTSPECULAR_PROP_POINTS_AT |
Wo das Spotlicht fokussiert ist. Die -Eigenschaft wird als D2D1_VECTOR_3F mit (x, y, z) verfügbar gemacht. Die Einheiten befinden sich in DIPs, und die Werte sind nicht gebunden. Der Typ ist D2D1_VECTOR_3F. Der Standardwert ist {0.0f, 0.0f, 0.0f}. |
Fokus D2D1_SPOTSPECULAR_PROP_FOCUS |
Der Fokus des Spotlichts. Diese Eigenschaft ist einheitslos und zwischen 0 und 200 definiert. Der Typ ist FLOAT. Der Standardwert ist 1,0f. |
LimitingConeAngle D2D1_SPOT_SPECULAR_PROP_LIMITING_CONE_ANGLE |
Der Kegelwinkel, der den Bereich einschränkt, in dem das Licht projiziert wird. Es wird kein Licht außerhalb des Kegels projiziert. Der Begrenzungskegelwinkel ist der Winkel zwischen der Spotlichtachse (der Achse zwischen den Eigenschaften LightPosition und PointsAt ) und dem Spotlichtkegel. Diese Eigenschaft ist in Grad definiert und muss zwischen 0 und 90 Grad betragen. Der Typ ist FLOAT. Der Standardwert ist 90,0f. |
SpecularExponent D2D1_SPOTSPECULAR_PROP_SPECULAR_EXPONENT |
Der Exponent für den Glanzbegriff in der Phong-Beleuchtungsgleichung. Ein größerer Wert entspricht einer reflektierenderen Oberfläche. Dieser Wert ist einheitslos und muss zwischen 1,0 und 128 sein. Der Typ ist FLOAT. Der Standardwert ist 1,0f. |
SpecularConstant D2D1_SPOTSPECULAR_PROP_SPECULAR_CONSTANT |
Das Verhältnis der Spiegelung zum eingehenden Licht. Der Wert ist einheitslos und muss zwischen 0 und 10.000 sein. Der Typ ist FLOAT. Der Standardwert ist 1,0f. |
SurfaceScale D2D1_SPOTSPECULAR_PROP_SURFACE_SCALE |
Der Skalierungsfaktor in Z-Richtung zum Generieren einer Höhenzuordnung. Der Wert ist einheitslos und muss zwischen 0 und 10.000 sein. Der Typ ist FLOAT. Der Standardwert ist 1,0f. |
Color D2D1_SPOTSPECULAR_PROP_COLOR |
Die Farbe des eingehenden Lichts. Diese Eigenschaft wird als Vector 3 (R, G, B) verfügbar gemacht und zum Berechnen von LR, LG, LB verwendet. Der Typ ist D2D1_VECTOR_3F. Der Standardwert ist {1.0f, 1.0f, 1.0f}. |
KernelUnitLength D2D1_SPOTSPECULAR_PROP_KERNEL_UNIT_LENGTH |
Die Größe eines Elements im Sobel-Kernel, das verwendet wird, um die Oberflächennormale in X- und Y-Richtung zu generieren. Diese Eigenschaft wird den dx- und dy-Werten im Sobel-Farbverlauf zugeordnet. Diese Eigenschaft ist eine D2D1_VECTOR_2F (Kernel Unit Length X, Kernel Unit Length Y) und wird in (DIPs/Kernel Unit) definiert. Der Effekt verwendet die bilineare Interpolation, um die Bitmap entsprechend der Größe der Kernelelemente zu skalieren. Der Typ ist D2D1_VECTOR_2F. Der Standardwert ist {1.0f, 1.0f}. |
Scalemode D2D1_SPOTSPECULAR_PROP_SCALE_MODE |
Der Interpolationsmodus, den der Effekt verwendet, um das Image auf die entsprechende Kerneleinheitslänge zu skalieren. Es gibt sechs Skalierungsmodi, die in Qualität und Geschwindigkeit liegen. Weitere Informationen finden Sie unter Skalierungsmodi . Der Typ ist D2D1_SPOTSPECULAR_SCALE_MODE. Der Standardwert ist D2D1_SPOTSPECULAR_SCALE_MODE_LINEAR. |
Skalierungsmodi
Enumeration | Beschreibung |
---|---|
D2D1_SPOTSPECULAR_SCALE_MODE_NEAREST_NEIGHBOR | Beispiel für den nächsten einzelen Punkt und verwendet diesen. Dieser Modus verbraucht weniger Verarbeitungszeit, gibt jedoch das Bild mit der niedrigsten Qualität aus. |
D2D1_SPOTSPECULAR_SCALE_MODE_LINEAR | Verwendet ein Vierpunktbeispiel und eine lineare Interpolation. Dieser Modus gibt ein Bild mit höherer Qualität aus als der nächste Nachbar. |
D2D1_SPOTSPECULAR_SCALE_MODE_CUBIC | Verwendet einen Kubikkern mit 16 Beispielen für die Interpolation. Dieser Modus verwendet die meiste Verarbeitungszeit, gibt jedoch ein Bild mit höherer Qualität aus. |
D2D1_SPOTSPECULAR_SCALE_MODE_MULTI_SAMPLE_LINEAR | Verwendet 4 lineare Beispiele in einem einzelnen Pixel für eine gute Edge-Antialiasierung. Dieser Modus eignet sich gut für das Herunterskalieren von kleinen Mengen auf Bildern mit wenigen Pixeln. |
D2D1_SPOTSPECULAR_SCALE_MODE_ANISOTROPIC | Verwendet anisotrope Filterung, um ein Muster entsprechend der transformierten Form der Bitmap zu samplen. |
D2D1_SPOTSPECULAR_SCALE_MODE_HIGH_QUALITY_CUBIC | Verwendet einen hochwertigen Kubikkern mit variabler Größe, um eine Vorabskalierung des Bilds durchzuführen, wenn eine Downskalierung an 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_SPOTSPECULAR_SCALE_MODE_LINEAR.
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 |