Efecto de iluminación especular puntual

Utilice el efecto de iluminación especular de punto para crear una imagen que parezca ser una superficie reflectante en la que la fuente de luz se limita a un cono dirigido de luz. Este efecto usa el canal alfa como mapa de altura y ilumina la imagen con una fuente de luz puntual.

El color del mapa de bits de salida es el resultado del color claro, la posición de la luz, la dirección del cono y la geometría de la superficie según la parte especular del modelo de iluminación Phong. 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_D2D1SpotSpecular.

Imagen de ejemplo

En el ejemplo siguiente se muestran las imágenes de entrada y salida del efecto de iluminación especular puntual.

captura de pantalla de ejemplo de efecto.

La luz especular hace referencia a la luz que se refleja en una dirección determinada.

diagrama de los vectores usados para almacenar en caché una salida de iluminación especular para un mapa de bits.

El efecto calcula los valores finales de píxeles de salida mediante las ecuaciones aquí:

ecuaciones de píxeles de salida.

where

definiciones de variables.

Fuente de luz puntual

Una fuente de luz puntual emite luz en un cono en una dirección específica y no emite luz fuera del cono.

La fuente de luz puntual calcula el vector de luz L y el vector medio H de la misma manera que el efecto especular de punto .

El efecto calcula el color de la luz, Lr, Lg, Lb, como función de la posición de la fuente de luz, tal como se muestra con las ecuaciones aquí:

ecuación para la fuente de luz puntual

El símbolo de vector de luz vectorial se define mediante estas ecuaciones:

ecuación: vector

El símbolo vectorial t vector se define mediante estas ecuaciones:

ecuación: vector 2

Propiedades de efecto

Enumeración de índice y nombre para mostrar Descripción
LightPosition
D2D1_SPOTSPECULAR_PROP_LIGHT_POSITION
Posición de la luz de la fuente de luz puntual. La propiedad es un D2D1_VECTOR_3F definido como (x, y, z). Las unidades están en píxeles independientes del dispositivo (DIP) y no están enlazados. El tipo es D2D1_VECTOR_3F.
El valor predeterminado es {0.0f, 0.0f, 0.0f}.
PointsAt
D2D1_SPOTSPECULAR_PROP_POINTS_AT
Donde se centra la luz puntual. La propiedad se expone como un D2D1_VECTOR_3F con (x, y, z). Las unidades están en DIP y los valores no están enlazados. El tipo es D2D1_VECTOR_3F.
El valor predeterminado es {0.0f, 0.0f, 0.0f}.
Foco
D2D1_SPOTSPECULAR_PROP_FOCUS
Foco de la luz puntual. Esta propiedad no tiene unidad y se define entre 0 y 200. El tipo es FLOAT.
El valor predeterminado es 1.0f.
LimitConeAngle
D2D1_SPOT_SPECULAR_PROP_LIMITING_CONE_ANGLE
Ángulo de cono que restringe la región donde se proyecta la luz. No hay luz proyectada fuera del cono. El ángulo de cono limitador es el ángulo entre el eje de luz puntual (el eje entre las propiedades LightPosition y PointsAt ) y el cono de luz puntual. Esta propiedad se define en grados y debe estar entre 0 y 90 grados. El tipo es FLOAT.
El valor predeterminado es 90.0f.
SpecularExponent
D2D1_SPOTSPECULAR_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. Este 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_SPOTSPECULAR_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_SPOTSPECULAR_PROP_SURFACE_SCALE
Factor de escala en la dirección Z para generar un mapa de altura. 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_SPOTSPECULAR_PROP_COLOR
Color de la luz entrante. Esta propiedad se expone como vector 3 (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_SPOTSPECULAR_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 se asigna a los valores dx y dy del degradado sobel. Esta propiedad es una D2D1_VECTOR_2F (longitud de unidad de kernel X, longitud de unidad de kernel Y) y se define en (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_SPOTSPECULAR_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 varían en calidad y velocidad. Consulta Modos de escala para obtener más información.
El tipo es D2D1_SPOTSPECULAR_SCALE_MODE.
El valor predeterminado es D2D1_SPOTSPECULAR_SCALE_MODE_LINEAR.

Modos de escalado

Enumeración Descripción
D2D1_SPOTSPECULAR_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_SPOTSPECULAR_SCALE_MODE_LINEAR Usa un ejemplo de cuatro puntos y una interpolación lineal. Este modo genera una imagen de mayor calidad que el vecino más cercano.
D2D1_SPOTSPECULAR_SCALE_MODE_CUBIC Usa un kernel cúbico de 16 muestras para la interpolación. Este modo usa el mayor tiempo de procesamiento, pero genera una imagen de mayor calidad.
D2D1_SPOTSPECULAR_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_SPOTSPECULAR_SCALE_MODE_ANISOTROPIC Usa el filtrado anisotrópico para muestrear un patrón según la forma transformada del mapa de bits.
D2D1_SPOTSPECULAR_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_SPOTSPECULAR_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

ID2D1Effect