Efecto de iluminación especular distante
Utilice el efecto de iluminación especular distante para crear una imagen que parezca ser una superficie reflectante en la que la fuente de luz parece estar procedente de una larga distancia (como el sol o las luces de sobrecarga). Este efecto usa el canal alfa como mapa de altura y ilumina la imagen con una fuente de luz lejana.
El color del mapa de bits de salida es el resultado del color claro, la posición de la luz y la geometría de la superficie. La salida del canal alfa para cada píxel con iluminación especular es el máximo de las salidas de canal rojo, verde y azul para ese píxel.
El CLSID de este efecto es CLSID_D2D1DistantSpecular.
- Imagen de ejemplo
- Fuente de luz lejana
- Propiedades de efecto
- Modos de escalado
- Requisitos
- Temas relacionados
Imagen de ejemplo
En el ejemplo siguiente se muestran las imágenes de entrada y salida del efecto de iluminación especular distante.
El mapa de bits de salida final se puede calcular mediante las ecuaciones siguientes.
where
- ¿K? = constante de iluminación especular.
= vector de unidad normal de superficie.
= vector de unidad "medio camino" entre vector de unidad ocular y vector de unidad de luz.
Cr, Cg, Cb = el color claro en componentes RGB.
Fuente de luz lejana
La imagen aquí muestra un ejemplo de la dirección de la luz de una fuente de luz lejana.
El efecto usa los parámetros azimuth y de elevación para calcular el Utilizando las ecuaciones siguientes:
donde Light?, Lighty y Lightz son los valores de posición de la luz de entrada.
Propiedades de efecto
Enumeración de índice y nombre para mostrar | Descripción |
---|---|
Azimuth D2D1_DISTANTSPECULAR_PROP_AZIMUTH |
Ángulo de dirección de la fuente de luz en el plano XY relativo al eje X en la dirección del reloj en sentido del reloj. Las unidades están en grados y deben estar entre 0 y 360 grados. El tipo es FLOAT. El valor predeterminado es 0,0f. |
Elevation D2D1_DISTANTSPECULAR_PROP_ELEVATION |
Ángulo de dirección de la fuente de luz en el plano YZ en relación con el eje Y en la dirección del reloj en sentido del reloj. Las unidades están en grados y deben estar entre 0 y 360 grados. El tipo es FLOAT. El valor predeterminado es 0,0f. |
SpecularExponent D2D1_DISTANTSPECULAR_PROP_SPECULAR_EXPONENT |
Exponente del término especular en la ecuación de iluminación Phong. Un valor mayor corresponde a una superficie más reflectante. El valor no tiene unidad y debe estar comprendido entre 1,0 y 128. El tipo es FLOAT. El valor predeterminado es 1.0f. |
SpecularConstant D2D1_DISTANTSPECULAR_PROP_SPECULAR_CONSTANT |
Proporción de reflexión especular con la luz entrante. El valor no tiene unidad y debe estar comprendido entre 0 y 10 000. El tipo es FLOAT. El valor predeterminado es 1.0f. |
SurfaceScale D2D1_DISTANTSPECULAR_PROP_SURFACE_SCALE |
Factor de escala en la dirección Z. El valor no tiene unidad y debe estar comprendido entre 0 y 10 000. El tipo es FLOAT. El valor predeterminado es 1.0f. |
Color D2D1_DISTANTSPECULAR_PROP_COLOR |
Color de la luz entrante. Esta propiedad se expone como un D2D1_VECTOR_3F (R, G, B) y se usa para calcular LR, LG, LB. El tipo es D2D1_VECTOR_3F. El valor predeterminado es {1.0f, 1.0f, 1.0f}. |
KernelUnitLength D2D1_DISTANTSPECULAR_PROP_KERNEL_UNIT_LENGTH |
Tamaño de un elemento del kernel de Sobel usado para generar la superficie normal en la dirección X e Y. Esta propiedad es un D2D1_VECTOR_2F (Longitud de unidad de kernel X, Longitud de unidad de kernel Y) y se define en (píxeles independientes del dispositivo (DIP)/Unidad de kernel). El efecto usa la interpolación bilineal para escalar el mapa de bits para que coincida con el tamaño de los elementos kernel. El tipo es D2D1_VECTOR_2F. El valor predeterminado es {1.0f, 1.0f}. |
Scalemode D2D1_DISTANTSPECULAR_PROP_SCALE_MODE |
Modo de interpolación que usa el efecto para escalar la imagen a la longitud de la unidad de kernel correspondiente. Hay seis modos de escala que oscilan en calidad y velocidad. El tipo es D2D1_DISTANTSPECULAR_SCALE_MODE. El valor predeterminado es D2D1_DISTANTSPECULAR_SCALE_MODE_LINEAR. |
Modos de escalado
Enumeración | Descripción |
---|---|
D2D1_DISTANTSPECULAR_SCALE_MODE_NEAREST_NEIGHBOR | Muestra el punto único más cercano y lo usa. Este modo usa menos tiempo de procesamiento, pero genera la imagen de menor calidad. |
D2D1_DISTANTSPECULAR_SCALE_MODE_LINEAR | Usa una interpolación lineal y una muestra de cuatro puntos. Este modo genera una imagen de mayor calidad que el vecino más cercano. |
D2D1_DISTANTSPECULAR_SCALE_MODE_CUBIC | Usa un kernel cúbico de 16 muestras para la interpolación. Este modo usa el tiempo de procesamiento más alto, pero genera una imagen de mayor calidad. |
D2D1_DISTANTSPECULAR_SCALE_MODE_MULTI_SAMPLE_LINEAR | Usa 4 muestras lineales dentro de un solo píxel para un buen suavizado de contorno perimetral. Este modo es bueno para reducir verticalmente por pequeñas cantidades en imágenes con pocos píxeles. |
D2D1_DISTANTSPECULAR_SCALE_MODE_ANISOTROPIC | Usa el filtrado anisotrópico para muestrear un patrón según la forma transformada del mapa de bits. |
D2D1_DISTANTSPECULAR_SCALE_MODE_HIGH_QUALITY_CUBIC | Usa un kernel cúbico de alta calidad de tamaño variable para realizar una escalabilidad previa de la imagen si el escalado descendente está implicado en la matriz de transformación. A continuación, usa el modo de interpolación cúbica para la salida final. |
Nota:
Si no selecciona un modo, el efecto tiene como valor predeterminado D2D1_DISTANTSPECULAR_SCALE_MODE_LINEAR.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 8 y actualización de plataforma para Windows 7 [aplicaciones de escritorio | Aplicaciones de la Tienda Windows] |
Servidor mínimo compatible | Windows 8 y actualización de plataforma para Windows 7 [aplicaciones de escritorio | Aplicaciones de la Tienda Windows] |
Encabezado | d2d1effects.h |
Biblioteca | d2d1.lib, dxguid.lib |