Condividi tramite


Effetto di illuminazione con luce riflettore speculare

Usa l'effetto di illuminazione speculare spot per creare un'immagine che sembra essere una superficie riflettente in cui la sorgente di luce è limitata a un cono diretto di luce. Questo effetto usa il canale alfa come mappa di altezza e illumina l'immagine con una sorgente di luce punto.

Il colore della bitmap di output è il risultato del colore chiaro, della posizione della luce, della direzione del cono e della geometria della superficie in base alla parte speculare del modello di illuminazione Phong. L'output del canale alfa per ogni pixel con illuminazione speculare è il massimo degli output del canale rosso, verde e blu per quel pixel.

Il CLSID per questo effetto è CLSID_D2D1SpotSpecular.

Immagine di esempio

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

screenshot dell'esempio di effetto.

La luce speculare si riferisce alla luce riflessa in una particolare direzione.

diagramma dei vettori usati per incluare un output di illuminazione speculare per una bitmap.

L'effetto calcola i valori dei pixel di output finali usando le equazioni riportate di seguito:

equazioni pixel di output.

dove

definizioni di variabili.

Sorgente di luce spot

Una sorgente di luce spot emette luce in un cono in una direzione specifica e non emette luce all'esterno del cono.

La sorgente di luce spot calcola il vettore luce L e il vettore halfway H allo stesso modo dell'effetto speculare punto.The spot light source calculates the Light Vector L and the Halfway Vector H the same way as the point-specular effect.

L'effetto calcola il colore chiaro, Lr, Lg, Lb, come funzione della posizione della sorgente di luce, come illustrato nelle equazioni qui:

equazione per sorgente di luce spot

Il simbolo vettore di luce vettoriale. è definito da queste equazioni:

equazione: vettore

Il simbolo vettore t è definito da queste equazioni:

equazione: vettore 2

Proprietà dell'effetto

Enumerazione nome visualizzato e indice Descrizione
LightPosition
D2D1_SPOTSPECULAR_PROP_LIGHT_POSITION
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. Il tipo è D2D1_VECTOR_3F.
Il valore predefinito è {0.0f, 0.0f, 0.0f}.
PointsAt
D2D1_SPOTSPECULAR_PROP_POINTS_AT
Dove la luce spot è evidenziata. La proprietà viene esposta come D2D1_VECTOR_3F con (x, y, z). Le unità sono in DIP e i valori non sono associati. Il tipo è D2D1_VECTOR_3F.
Il valore predefinito è {0.0f, 0.0f, 0.0f}.
Focus
D2D1_SPOTSPECULAR_PROP_FOCUS
Lo stato attivo della luce spot. Questa proprietà è senza unità ed è definita tra 0 e 200. Il tipo è FLOAT.
Il valore predefinito è 1,0f.
LimitazioneConeAngle
D2D1_SPOT_SPECULAR_PROP_LIMITING_CONE_ANGLE
Angolo cono che limita l'area in cui viene proiettata la luce. Nessuna luce proiettata all'esterno del cono. L'angolo del cono di limitazione è l'angolo tra l'asse della 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. Il tipo è FLOAT.
Il valore predefinito è 90,0f.
SpecularExponent
D2D1_SPOTSPECULAR_PROP_SPECULAR_EXPONENT
Esponente per il termine speculare nell'equazione di illuminazione di Phong. Un valore maggiore corrisponde a una superficie più riflettente. Questo valore è senza unità e deve essere compreso tra 1,0 e 128. Il tipo è FLOAT.
Il valore predefinito è 1,0f.
SpecularConstant
D2D1_SPOTSPECULAR_PROP_SPECULAR_CONSTANT
Rapporto tra reflection speculare e luce in ingresso. Il valore è unitless e deve essere compreso tra 0 e 10.000. Il tipo è FLOAT.
Il valore predefinito è 1,0f.
SurfaceScale
D2D1_SPOTSPECULAR_PROP_SURFACE_SCALE
Fattore di scala nella direzione Z per generare una mappa di altezza. Il valore è unitless e deve essere compreso tra 0 e 10.000. Il tipo è FLOAT.
Il valore predefinito è 1,0f.
Color
D2D1_SPOTSPECULAR_PROP_COLOR
Colore della luce in ingresso. Questa proprietà viene esposta come Vector 3 (R, G, B) e usata per calcolare LR, LG, LB. Il tipo è D2D1_VECTOR_3F.
Il valore predefinito è {1.0f, 1.0f, 1.0f}.
KernelUnitLength
D2D1_SPOTSPECULAR_PROP_KERNEL_UNIT_LENGTH
Dimensioni di un elemento nel kernel Sobel usato 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) ed è definita in (unità DIP/unità kernel). L'effetto usa l'interpolazione bilineare per ridimensionare la bitmap in modo che corrisponda alle dimensioni degli elementi del kernel. Il tipo è D2D1_VECTOR_2F.
Il valore predefinito è {1.0f, 1.0f}.
Scalemode
D2D1_SPOTSPECULAR_PROP_SCALE_MODE
Modalità di interpolazione usata dall'effetto per ridimensionare l'immagine alla lunghezza dell'unità kernel corrispondente. Esistono sei modalità di scala che vanno in termini di qualità e velocità. Per altre informazioni, vedi Modalità di scalabilità .
Il tipo è D2D1_SPOTSPECULAR_SCALE_MODE.
Il valore predefinito è D2D1_SPOTSPECULAR_SCALE_MODE_LINEAR.

Modalità di scalabilità

Enumerazione Descrizione
D2D1_SPOTSPECULAR_SCALE_MODE_NEAREST_NEIGHBOR Campiona il punto singolo più vicino e lo usa. Questa modalità usa meno tempo di elaborazione, ma restituisce l'immagine di qualità più bassa.
D2D1_SPOTSPECULAR_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_SPOTSPECULAR_SCALE_MODE_CUBIC Usa un kernel cubico di esempio 16 per l'interpolazione. Questa modalità usa il tempo di elaborazione più elevato, ma restituisce un'immagine di qualità superiore.
D2D1_SPOTSPECULAR_SCALE_MODE_MULTI_SAMPLE_LINEAR Usa 4 campioni lineari all'interno di un singolo pixel per anti-aliasing dei bordi validi. Questa modalità è valida per ridurre le dimensioni delle immagini con pochi pixel.
D2D1_SPOTSPECULAR_SCALE_MODE_ANISOTROPIC Usa il filtro anisotropico per campionare un modello in base alla forma trasformata della bitmap.
D2D1_SPOTSPECULAR_SCALE_MODE_HIGH_QUALITY_CUBIC Usa un kernel cubico di alta qualità con dimensioni variabili per eseguire una scalabilità preliminare 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à, per impostazione predefinita l'effetto viene D2D1_SPOTSPECULAR_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