Efecto de iluminación difusa puntual
Utilice el efecto de iluminación difusa de punto para crear una imagen que parece ser una superficie no reflectante con donde la fuente de luz se limita a un cono dirigido de luz y la luz se dispersa en todas las direcciones. Este efecto usa el canal alfa como un 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 y la geometría de la superficie. La salida del canal alfa para cada píxel con iluminación difusa siempre es de 1,0.
El CLSID de este efecto es CLSID_D2D1SpotDiffuse.
Imagen de ejemplo
En el ejemplo siguiente se muestran las imágenes de entrada y salida del efecto de iluminación difusa puntual.
El efecto calcula los valores finales de píxeles de salida mediante estas ecuaciones:
Donde:
- kd = constante de iluminación difusa. Especificado por el usuario.
= vector de unidad normal de superficie, una función de x e y.
= vector de unidad que apunta desde la superficie a la luz.
Lr, Lg, Lb = el color claro en componentes RGB.
Propiedades de efecto
Enumeración de nombre para mostrar e índice | Tipo y valor predeterminado | Descripción |
---|---|---|
LightPosition D2D1_SPOTDIFFUSE_PROP_LIGHT_POSITION |
D2D1_VECTOR_3F {0.0f, 0.0f, 0.0f} |
Posición de la luz del punto fuente de luz. La propiedad es un D2D1_VECTOR_3F definido como (x, y, z). Las unidades se encuentran en píxeles independientes del dispositivo (DIP) y no están enlazados. |
PointsAt D2D1_SPOTDIFFUSE_PROP_POINTS_AT |
D2D1_VECTOR_3F {0.0f, 0.0f, 0.0f} |
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. |
Foco D2D1_SPOTDIFFUSE_PROP_FOCUS |
FLOAT 1.0f |
Foco de la luz puntual. Esta propiedad no es unitaria y se define entre 0 y 200. |
LimitingConeAngle D2D1_SPOTDIFFUSE_PROP_LIMITING_CONE_ANGLE |
FLOAT 90.0f |
Ángulo de cono que restringe la región donde se proyecta la luz. No se proyecta luz fuera del cono. El ángulo de cono de limitación 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. |
DiffuseConstant D2D1_SPOTDIFFUSE_PROP_DIFFUSE_CONSTANT |
FLOAT 1.0f |
Proporción de reflexión difusa a cantidad de luz entrante. Esta propiedad debe estar entre 0 y 10 000 y no tiene unidad. |
SurfaceScale D2D1_SPOTDIFFUSE_PROP_SURFACE_SCALE |
FLOAT 1.0f |
Factor de escala en la dirección Z. La escala de superficie no tiene unidad y debe estar entre 0 y 10 000. |
Color D2D1_SPOTDIFFUSE_PROP_COLOR |
D2D1_VECTOR_3F {1.0f, 1.0f, 1.0f} |
Color de la luz entrante. Esta propiedad se expone como vector 3 (R, G, B) y se usa para calcular LR, LG, LB. |
KernelUnitLength D2D1_SPOTDIFFUSE_PROP_KERNEL_UNIT_LENGTH |
D2D1_VECTOR_2F {1.0f, 1.0f} |
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 (DIPs/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. |
Scalemode D2D1_SPOTDIFFUSE_PROP_SCALE_MODE |
D2D1_SPOTDIFFUSE_SCALE_MODE D2D1_SPOTDIFFUSE_SCALE_MODE_LINEAR |
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. |
Modos de escalado
Enumeración | Descripción |
---|---|
D2D1_SPOTDIFFUSE_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_SPOTDIFFUSE_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_SPOTDIFFUSE_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_SPOTDIFFUSE_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_SPOTDIFFUSE_SCALE_MODE_ANISOTROPIC | Usa el filtrado anisotrópico para muestrear un patrón según la forma transformada del mapa de bits. |
D2D1_SPOTDIFFUSE_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_SPOTDIFFUSE_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 |