Condividi tramite


Effetto di illuminazione spot-diffusa

Usa l'effetto di illuminazione spot-diffuse per creare un'immagine che sembra essere una superficie non riflettente con la quale la sorgente di luce è limitata a un cono diretto di luce e la luce viene sparsa in tutte le direzioni. Questo effetto usa il canale alfa come mappa di altezza e illumina l'immagine con una sorgente di luce spot.

Il colore della bitmap di output è il 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.

Il CLSID per questo effetto è CLSID_D2D1SpotDiffuse.

Immagine di esempio

L'esempio seguente mostra le immagini di input e output dell'effetto di illuminazione diffusa spot.

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.
simbolo vettore normale. = vettore di unità normale della superficie, una funzione di x e y.
simbolo del vettore di luce. = vettore unitario che punta dalla superficie alla luce.
Lr, Lg, Lb = colore chiaro nei componenti RGB.

Proprietà dell'effetto

Enumerazione del nome visualizzato e dell'indice Tipo e valore predefinito Descrizione
Posizione delle Luci
D2D1_SPOTDIFFUSE_PROP_LIGHT_POSITION
D2D1_VECTOR_3F
{0.0f, 0.0f, 0.0f}
Posizione della luce della sorgente di luce punto. La proprietà è un D2D1_VECTOR_3F definito come (x, y, z). Le unità sono in pixel indipendenti dal dispositivo (DIP) e non sono associate.
PuntiAt
D2D1_SPOTDIFFUSE_PROP_POINTS_AT
D2D1_VECTOR_3F
{0.0f, 0.0f, 0.0f}
Dove è focalizzato il riflettore. La proprietà è esposta come D2D1_VECTOR_3F con (x, y, z). Le unità sono in DIP e i valori non sono associati.
Focus
D2D1_SPOTDIFFUSE_PROP_FOCUS
GALLEGGIARE
1.0f
Il centro dell'attenzione del riflettore. Questa proprietà è senza unità e viene definita tra 0 e 200.
LimitingConeAngle
Angolo del cono limitante di D2D1_SPOTDIFFUSE_PROP
GALLEGGIARE
90,0f
Angolo del cono che limita l'area in cui è proiettata la luce. Nessuna luce proiettata all'esterno del cono. L'angolo del cono limitante è l'angolo tra l'asse della luce spot (l'asse tra le proprietà LightPosition e PointsAt) e il cono della luce spot. Questa proprietà è definita in gradi e deve essere compresa tra 0 e 90 gradi.
DiffuseConstant
D2D1_SPOTDIFFUSE_PROP_DIFFUSE_CONSTANT
GALLEGGIARE
1.0f
Rapporto tra riflessione 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
GALLEGGIARE
1.0f
Fattore di scala nella direzione Z. La scala della superficie è senza unità e deve essere compresa tra 0 e 10.000.
Colore
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 usato per generare la normale superficie nella direzione X e Y. Questa proprietà corrisponde ai valori dx e dy nel gradiente di Sobel. Questa proprietà è una D2D1_VECTOR_2F(Lunghezza unità kernel X, Lunghezza unità kernel Y) ed è definita in (DIP/unità 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
Modalità di interpolazione usata dall'effetto per ridimensionare l'immagine alla lunghezza dell'unità kernel corrispondente. Esistono sei modalità di scala che differiscono in qualità e velocità. Per altre informazioni, vedi Modalità di scalabilità.

Modalità di scalabilità

Enumerazione Descrizione
D2D1_SPOTDIFFUSE_SCALE_MODE_NEAREST_NEIGHBOR Campiona il punto singolo più vicino e lo utilizza. Questa modalità usa meno tempo di elaborazione, ma restituisce l'immagine di qualità più bassa.
D2D1_SPOTDIFFUSE_SCALE_MODE_LINEAR Usa un campione 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 Utilizza un kernel cubico a 16 campioni 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 campioni lineari all'interno di un singolo pixel per un buon anti-aliasing dei bordi. Questa opzione è utile per ridurre leggermente le dimensioni delle immagini con pochi pixel.
D2D1_SPOTDIFFUSE_SCALE_MODE_ANISOTROPIC Usa il filtro anisotropico per campionare 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-riduzione della scala dell'immagine se il ridimensionamento è coinvolto nella matrice di trasformazione. Usa quindi la modalità di interpolazione cubica per l'output finale.

Nota

Se non si seleziona una modalità, per impostazione predefinita l'effetto si imposta su 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
Biblioteca d2d1.lib, dxguid.lib

ID2D1Effect