Effet d’éclairage spéculaire par point

Utilisez l’effet d’éclairage point-spéculaire pour créer une image qui semble être une surface réfléchissante. L’effet utilise le canal alpha de l’image comme carte de hauteur et une source de lumière de point que vous placez, puis calcule la réflexion et la lumière en fonction de la partie spéculaire du modèle d’éclairage Phong.

La couleur de l’image bitmap de sortie est un résultat de la couleur claire, de la position de la lumière et de la géométrie de la surface. La sortie de canal alpha pour chaque pixel avec éclairage spéculaire est le nombre maximal de sorties de canal rouge, vert et bleu pour ce pixel.

Le CLSID de cet effet est CLSID _ D2D1PointSpecular.

Exemple d’image

L’exemple ci-dessous montre les images d’entrée et de sortie de l’effet d’éclairage de point-spéculaire.

exemple de capture d’écran montrant les images d’entrée et de sortie de l’effet d’éclairage spéculaire du point.

La lumière spéculaire fait référence à la lumière qui est reflétée dans une direction spécifique en fonction du modèle d’éclairage Phong.

diagramme des vecteurs utilisés pour cacluate une sortie d’éclairage spéculaire pour une image bitmap.

L’effet calcule les valeurs de pixel de sortie finales à l’aide des équations ici :

équations pour le calcul des valeurs de pixels finales.

where

DK? = constante d’éclairage spéculaire.
symbole de vecteur d’unité normale de surface. = vecteur d’unité normale de surface qui est une fonction de x et y. Consultez carte de hauteur et vecteur normal pour les calculs.
symbole de vecteur d’unité à mi-chemin. = vecteur d’unité « mi » entre le vecteur d’unité oculaire et le vecteur d’unité clair. Consultez source de lumière de point pour les calculs.
Lr, lg, lb = couleur claire des composants RVB.

Vous définissez la constante d’éclairage spéculaire sur la propriété SpecularConstant et la couleur claire comme propriété de couleur .

Source de lumière de point

Une source de lumière de point émet de la lumière dans toutes les directions comme dans l’image ici.

lumière de point émettant de la lumière dans toutes les directions.

Vous définissez la position de la source de lumière à l’aide de la propriété LightPosition . L’effet calcule le vecteur clair, L, pour une source de lumière de point à l’aide des équations ici :

équation de vecteur clair.

où Light ?, Lightyet Lightz sont la position de la lumière d’entrée. L’effet calcule le vecteur à mi-  chemin. comme défini dans le modèle d’éclairage Phong, à l’aide de l’équation ici. Le modèle d’éclairage suppose que le vecteur oculaire,  le symbole de vecteur oculaire , se trouve à (0, 0, 1).

équation à moitié vecteur.

L et H sont normalisés en vecteurs de longueur unitaire.

Carte de hauteur et vecteur normal

L’effet génère une carte de hauteur pour l’image d’entrée en fonction de son canal alpha.

Le composant Height (Z) est calculé à l’aide de l’équation suivante :

équation pour le calcul de la hauteur (z) de la surface.

L’effet calcule la normale de la surface, symbole de vecteur normal., pour la bitmap d’entrée à l’aide d’un dégradé Sobel.

Constante d’éclairage spéculaire et exposant

La lumière spéculaire représente la lumière réfléchie à partir de la surface du de la carte de la hauteur de l’image. Vous spécifiez la propriété SpecularExponent qui détermine la quantité de réflexion spéculaire à partir de l’image bitmap.

Les exposants plus grands représentent des objets shinier et reflètent la lumière dans une forme plus ciblée.

La propriété SpecularConstant K ? définit la quantité de lumière réfléchie comme rapport de la lumière entrante.

Propriétés d’effet

Nom complet et énumération d’index Description
LightPosition
POSITION de la _ lumière d2d1 POINTSPECULAR _ prop _ _
Position claire de la source de lumière de point. La propriété est un _ vecteur d2d1 _ 3F défini en tant que (x, y, z). Les unités sont en pixels indépendants du périphérique (DIP) et les valeurs sont sans unité et illimitée. Le type est D2D1 _ Vector _ 3F.
La valeur par défaut est {0.0 f, 0.0 f, 0.0 f}.
SpecularExponent
_ _ _ Exposant spéculaire d2d1 POINTSPECULAR prop _
Exposant du terme spéculaire dans l’équation d’éclairage Phong. Une plus grande valeur correspond à une surface plus réfléchissante. Cette valeur est sans unité et doit être comprise entre 1,0 et 128. Le type est FLOAT.
La valeur par défaut est 1,0 f.
SpecularConstant
_ _ _ Constante spéculaire d2d1 POINTSPECULAR prop _
Rapport entre la réflexion spéculaire et la lumière entrante. La valeur est sans unité et doit être comprise entre 0 et 10 000. Le type est FLOAT.
La valeur par défaut est 1,0 f.
SurfaceScale
_Échelle de surface d2d1 POINTSPECULAR _ prop _ _
Facteur d’échelle dans la direction Z pour la génération d’une carte de hauteur. La valeur est sans unité et doit être comprise entre 0 et 10 000. Le type est FLOAT.
La valeur par défaut est 1,0 f.
Couleur
_Couleur d2d1 POINTSPECULAR _ prop _
Couleur de la lumière entrante. Cette propriété est exposée en tant que _ vecteur d2d1 _ 3F (R, G, B) et utilisée pour calculer lR, lG, lB. Le type est D2D1 _ Vector _ 3F.
La valeur par défaut est {1.0 f, 1.0 f, 1.0 f}.
KernelUnitLength
Longueur de l' _ unité de noyau d2d1 POINTSPECULAR _ prop _ _ _
Taille d’un élément dans le noyau Sobel utilisé pour générer la surface normale dans les directions X et Y. Cette propriété est mappée aux valeurs DX et dy dans le dégradé Sobel. Cette propriété est un _ vecteur d2d1 _ 2F (longueur d’unité de noyau X, longueur d’unité de noyau Y) et est défini dans (DIP/unité noyau). L’effet utilise l’interpolation bilinéaire pour mettre à l’échelle l’image bitmap afin qu’elle corresponde à la taille des éléments de noyau. Le type est D2D1 _ Vector _ 2F.
La valeur par défaut est {1.0 f, 1.0 f}.
Devient
MODE de mise à l' _ échelle d2d1 POINTSPECULAR _ prop _ _
Mode d’interpolation utilisé par l’effet pour mettre l’image à l’échelle de la longueur de l’unité de noyau correspondante. Il existe six modes de mise à l’échelle qui vont de la qualité et de la vitesse. Pour plus d’informations, consultez modes de mise à l' échelle .
Le type est D2D1 _ POINTSPECULAR _ Scale _ mode.
La valeur par défaut est D2D1 _ POINTSPECULAR _ Scale _ mode _ linéaire.

Modes de mise à l’échelle

Énumération Description
MODE de mise à l' _ échelle d2d1 POINTSPECULAR _ _ _ le plus proche _ voisin Échantillonne le point unique le plus proche et l’utilise. Ce mode utilise moins de temps de traitement, mais génère l’image de qualité la plus faible.
D2D1 mode de mise à l' _ _ échelle POINTSPECULAR _ _ linéaire Utilise un échantillon à quatre points et une interpolation linéaire. Ce mode génère une image de qualité supérieure à celle du voisin le plus proche.
D2D1 mode de mise à l' _ _ échelle POINTSPECULAR _ _ cubique Utilise un exemple de noyau cubique 16 pour l’interpolation. Ce mode utilise le plus de temps de traitement, mais génère une image de qualité supérieure.
MODE de mise à l' _ échelle d2d1 POINTSPECULAR _ multi- _ _ _ exemple _ linéaire Utilise 4 échantillons linéaires au sein d’un même pixel pour une bonne anticrénelage. Ce mode est adapté à la réduction de la taille des images avec quelques pixels.
D2D1 _ _ mode Scale _ POINTSPECULAR _ anisotrope Utilise le filtrage anisotrope pour échantillonner un modèle en fonction de la forme transformée de l’image bitmap.
D2D1 _ POINTSPECULAR _ _ en mode Scale de _ haute _ qualité _ cubique Utilise un noyau cubique de haute qualité variable pour effectuer une pré-réduire de l’image si downscaling est impliqué dans la matrice de transformation. Utilise ensuite le mode d’interpolation cubique pour la sortie finale.

Notes

Si vous ne sélectionnez pas de mode, l’effet par défaut est D2D1 _ POINTSPECULAR _ Scale _ mode _ linéaire.

Spécifications

Condition requise Valeur
Client minimal pris en charge mise à jour Windows 8 et de plateforme pour les applications de bureau Windows 7 Windows les applications du windows [ | Store]
Serveur minimal pris en charge mise à jour Windows 8 et de plateforme pour les applications de bureau Windows 7 Windows les applications du windows [ | Store]
En-tête d2d1effects. h
Bibliothèque d2d1. lib, dxguid. lib

ID2D1Effect