Condividi tramite


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.

screenshot dell'esempio di effetto che mostra

L'effetto calcola i valori dei pixel di output finali usando queste equazioni:

calcolo bitmap di output

Dove:

kd = costante di illuminazione diffusa. Specificato dall'utente.
normale simbolo vettore. = vettore di unità normale di superficie, una funzione di x e y.
simbolo vettore chiaro. = 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

ID2D1Effect