Effet d’éclairage spéculaire distant
Utilisez l’effet d’éclairage spéculaire distant pour créer une image qui semble être une surface réfléchissante où la source de lumière semble provenir d’une longue distance (comme le soleil ou les lumières de tête). Cet effet utilise le canal alpha comme carte de hauteur et allume l’image avec une source de lumière distante.
La couleur de l’image bitmap de sortie est le résultat de la couleur claire, de la position claire et de la géométrie de la surface. La sortie du canal alpha pour chaque pixel avec un éclairage spéculaire est la valeur maximale des sorties de canal rouge, vert et bleu pour ce pixel.
Le CLSID de cet effet est CLSID_D2D1DistantSpecular.
- Exemple d’image
- Source de lumière distante
- Propriétés de l’effet
- Modes de mise à l’échelle
- Configuration requise
- Rubriques connexes
Exemple d’image
L’exemple ci-dessous montre les images d’entrée et de sortie de l’effet d’éclairage spéculaire distant.
La bitmap de sortie finale peut être calculée à l’aide des équations suivantes.
where
- K? = constante d’éclairage spéculaire.
= vecteur d’unité normale de surface.
= vecteur d’unité « à mi-chemin » entre le vecteur d’unité oculaire et le vecteur d’unité de lumière.
Cr, Cg, Cb = couleur claire dans les composants RVB.
Source de lumière distante
L’image montre ici un exemple de direction de la lumière provenant d’une source de lumière distante.
L’effet utilise les paramètres d’azimut et d’élévation pour calculer le En utilisant les équations suivantes :
où Light?, Lighty et Lightz sont les valeurs de position de la lumière d’entrée.
Propriétés de l’effet
Nom complet et énumération d’index | Description |
---|---|
Azimuth D2D1_DISTANTSPECULAR_PROP_AZIMUTH |
Angle de direction de la source de lumière dans le plan XY par rapport à l’axe X dans la direction du compteur horloge. Les unités sont en degrés et doivent être comprises entre 0 et 360 degrés. Le type est FLOAT. La valeur par défaut est 0,0f. |
Élévation D2D1_DISTANTSPECULAR_PROP_ELEVATION |
Angle de direction de la source de lumière dans le plan YZ par rapport à l’axe Y dans la direction du compteur horloge. Les unités sont en degrés et doivent être comprises entre 0 et 360 degrés. Le type est FLOAT. La valeur par défaut est 0,0f. |
SpecularExponent D2D1_DISTANTSPECULAR_PROP_SPECULAR_EXPONENT |
Exposant pour le terme spéculaire dans l’équation d’éclairage de Phong. Une valeur plus grande correspond à une surface plus réfléchissante. La valeur est sans unité et doit être comprise entre 1,0 et 128. Le type est FLOAT. La valeur par défaut est 1.0f. |
SpecularConstant D2D1_DISTANTSPECULAR_PROP_SPECULAR_CONSTANT |
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.0f. |
SurfaceScale D2D1_DISTANTSPECULAR_PROP_SURFACE_SCALE |
Facteur d’échelle dans la direction Z. 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.0f. |
Color D2D1_DISTANTSPECULAR_PROP_COLOR |
Couleur de la lumière entrante. Cette propriété est exposée en tant que D2D1_VECTOR_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.0f, 1.0f, 1.0f}. |
KernelUnitLength D2D1_DISTANTSPECULAR_PROP_KERNEL_UNIT_LENGTH |
Taille d’un élément dans le noyau Sobel utilisé pour générer la normale de surface dans la direction X et Y. Cette propriété est une D2D1_VECTOR_2F (longueur de l’unité du noyau X, longueur de l’unité du noyau Y) et est définie dans (pixels indépendants du périphérique (DIPs)/Unité de noyau). L’effet utilise l’interpolation bilinéaire pour mettre à l’échelle la bitmap pour qu’elle corresponde à la taille des éléments du noyau. Le type est D2D1_VECTOR_2F. La valeur par défaut est {1.0f, 1.0f}. |
ScaleMode D2D1_DISTANTSPECULAR_PROP_SCALE_MODE |
Mode d’interpolation utilisé par l’effet pour mettre à l’échelle l’image à la longueur d’unité de noyau correspondante. Il existe six modes d’échelle qui varient en qualité et en vitesse. Le type est D2D1_DISTANTSPECULAR_SCALE_MODE. La valeur par défaut est D2D1_DISTANTSPECULAR_SCALE_MODE_LINEAR. |
Modes de mise à l’échelle
Énumération | Description |
---|---|
D2D1_DISTANTSPECULAR_SCALE_MODE_NEAREST_NEIGHBOR | É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_DISTANTSPECULAR_SCALE_MODE_LINEAR | 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_DISTANTSPECULAR_SCALE_MODE_CUBIC | Utilise un noyau cube de 16 exemples pour l’interpolation. Ce mode utilise le temps de traitement le plus élevé, mais génère une image de meilleure qualité. |
D2D1_DISTANTSPECULAR_SCALE_MODE_MULTI_SAMPLE_LINEAR | Utilise 4 exemples linéaires au sein d’un seul pixel pour une bonne anticrénelage de bord. Ce mode est adapté à un scale-down de petites quantités sur des images de quelques pixels. |
D2D1_DISTANTSPECULAR_SCALE_MODE_ANISOTROPIC | Utilise le filtrage anisotrope pour échantillonner un modèle en fonction de la forme transformée de la bitmap. |
D2D1_DISTANTSPECULAR_SCALE_MODE_HIGH_QUALITY_CUBIC | Utilise un noyau cubique de haute qualité de taille variable pour effectuer une mise à l’échelle antérieure de l’image si la mise à l’échelle inférieure est impliquée 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_DISTANTSPECULAR_SCALE_MODE_LINEAR.
Spécifications
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 8 et mise à jour de plateforme pour Windows 7 [applications de bureau | Applications du Windows Store] |
Serveur minimal pris en charge | Windows 8 et mise à jour de plateforme pour Windows 7 [applications de bureau | Applications du Windows Store] |
En-tête | d2d1effects.h |
Bibliothèque | d2d1.lib, dxguid.lib |