Effetto di illuminazione diffusa con riflettore
Usare l'effetto di illuminazione spot-diffusa per creare un'immagine che sembra essere una superficie non riflettente con la quale la fonte di luce è limitata a un cono diretto di luce e la luce viene diffusa in tutte le direzioni. Questo effetto usa il canale alfa come mappa di altezza e illumina l'immagine con una fonte di luce spot.
Il colore della bitmap di output è un risultato del colore chiaro, della posizione della luce e della geometria della superficie. L'output del canale alfa per ogni pixel con illuminazione diffusa è sempre 1,0.
ClSID per questo effetto è CLSID_D2D1SpotDiffuse.
Immagine di esempio
L'esempio seguente mostra le immagini di input e output dell'effetto di illuminazione spot-diffuse.
L'effetto calcola i valori dei pixel di output finali usando queste equazioni:
Dove:
- kd = costante di illuminazione diffusa. Specificato dall'utente.
= vettore di unità normale di superficie, una funzione di x e y.
= vettore unitario che punta dalla superficie alla luce.
Lr, Lg, Lb = il colore chiaro nei componenti RGB.
Proprietà dell'effetto
Enumerazione nome visualizzato e indice | Tipo e valore predefinito | Descrizione |
---|---|---|
LightPosition D2D1_SPOTDIFFUSE_PROP_LIGHT_POSITION |
D2D1_VECTOR_3F {0.0f, 0.0f, 0.0f} |
Posizione della luce della fonte di luce punto. La proprietà è una D2D1_VECTOR_3F definita come (x, y, z). Le unità sono in pixel indipendenti dal dispositivo (DIP) e non sono collegate. |
PuntiAt D2D1_SPOTDIFFUSE_PROP_POINTS_AT |
D2D1_VECTOR_3F {0.0f, 0.0f, 0.0f} |
Dove si concentra la luce del punto. La proprietà viene esposta come D2D1_VECTOR_3F con (x, y, z). Le unità sono in DIP e i valori non sono collegati. |
Focus D2D1_SPOTDIFFUSE_PROP_FOCUS |
FLOAT 1.0f |
Lo stato attivo della luce spot. Questa proprietà è senza unità e viene definita tra 0 e 200. |
LimitConeAngle D2D1_SPOTDIFFUSE_PROP_LIMITING_CONE_ANGLE |
FLOAT 90.0f |
Angolo cono che limita l'area in cui viene proiettata la luce. Nessuna luce è proiettata all'esterno del cono. L'angolo di cono limitante è l'angolo tra l'asse luce spot (l'asse tra le proprietà LightPosition e PointsAt ) e il cono di luce spot. Questa proprietà è definita in gradi e deve essere compresa tra 0 e 90 gradi. |
DiffuseConstant D2D1_SPOTDIFFUSE_PROP_DIFFUSE_CONSTANT |
FLOAT 1.0f |
Rapporto tra reflection diffusa e quantità di luce in ingresso. Questa proprietà deve essere compresa tra 0 e 10.000 ed è senza unità. |
SurfaceScale D2D1_SPOTDIFFUSE_PROP_SURFACE_SCALE |
FLOAT 1.0f |
Fattore di scala nella direzione Z. La scala di superficie è senza unità e deve essere compresa tra 0 e 10.000. |
Color D2D1_SPOTDIFFUSE_PROP_COLOR |
D2D1_VECTOR_3F {1.0f, 1.0f, 1.0f} |
Colore della luce in ingresso. Questa proprietà viene esposta come vettore 3 (R, G, B) e usata per calcolare LR, LG, LB. |
KernelUnitLength D2D1_SPOTDIFFUSE_PROP_KERNEL_UNIT_LENGTH |
D2D1_VECTOR_2F {1.0f, 1.0f} |
Dimensioni di un elemento nel kernel Sobel utilizzato per generare la normale superficie nella direzione X e Y. Questa proprietà esegue il mapping ai valori dx e dy nella sfumatura Sobel. Questa proprietà è una D2D1_VECTOR_2F(Lunghezza unità kernel X, lunghezza unità kernel Y) e viene definita in (unità DIP/kernel). L'effetto usa l'interpolazione bilineare per ridimensionare la bitmap in modo che corrisponda alle dimensioni degli elementi del kernel. |
Scalemode D2D1_SPOTDIFFUSE_PROP_SCALE_MODE |
D2D1_SPOTDIFFUSE_SCALE_MODE D2D1_SPOTDIFFUSE_SCALE_MODE_LINEAR |
La modalità di interpolazione usa per ridimensionare l'immagine alla lunghezza dell'unità kernel corrispondente. Esistono sei modalità di scalabilità che vanno in qualità e velocità. Per altre informazioni, vedere Modalità di scalabilità . |
Modalità di scalabilità
Enumerazione | Descrizione |
---|---|
D2D1_SPOTDIFFUSE_SCALE_MODE_NEAREST_NEIGHBOR | Esempi del singolo punto più vicino e lo usa. Questa modalità usa meno tempo di elaborazione, ma restituisce l'immagine di qualità più bassa. |
D2D1_SPOTDIFFUSE_SCALE_MODE_LINEAR | Usa un esempio a quattro punti e l'interpolazione lineare. Questa modalità restituisce un'immagine di qualità superiore rispetto al vicino più vicino. |
D2D1_SPOTDIFFUSE_SCALE_MODE_CUBIC | Usa un kernel cubo di esempio 16 per l'interpolazione. Questa modalità usa il tempo di elaborazione più elevato, ma restituisce un'immagine di qualità superiore. |
D2D1_SPOTDIFFUSE_SCALE_MODE_MULTI_SAMPLE_LINEAR | Usa 4 esempi lineari all'interno di un singolo pixel per un buon anti-aliasing perimetrale. Questa modalità è utile per ridurre le dimensioni in base a piccole quantità per le immagini con pochi pixel. |
D2D1_SPOTDIFFUSE_SCALE_MODE_ANISOTROPIC | Usa un filtro anisotropico per campionire un modello in base alla forma trasformata della bitmap. |
D2D1_SPOTDIFFUSE_SCALE_MODE_HIGH_QUALITY_CUBIC | Usa un kernel cubico di dimensioni variabili di alta qualità per eseguire una pre-ridimensionamento dell'immagine se la scalabilità orizzontale è coinvolta nella matrice di trasformazione. Usa quindi la modalità di interpolazione cubica per l'output finale. |
Nota
Se non si seleziona una modalità, l'effetto viene predefinito per D2D1_SPOTDIFFUSE_SCALE_MODE_LINEAR.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 8 e Aggiornamento della piattaforma per Windows 7 [app desktop | App di Windows Store] |
Server minimo supportato | Windows 8 e Aggiornamento della piattaforma per Windows 7 [app desktop | App di Windows Store] |
Intestazione | d2d1effects.h |
Libreria | d2d1.lib, dxguid.lib |