Condividi tramite


Effetto di illuminazione spot 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 della luce, della posizione della luce, della direzione del cono e della geometria della superficie secondo la 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 tale pixel.

Il CLSID per questo effetto è CLSID_D2D1SpotSpecular.

Immagine di esempio

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

screenshot dell'esempio di effetto.

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

il diagramma dei vettori usati per calcolare 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 al di fuori del cono.

La sorgente di luce spot calcola il Vettore di Luce L e il Vettore Intermedio H allo stesso modo dell'effetto speculare del punto .

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

equazione per la sorgente luminosa spot

Vettore simbolo del vettore di luce. è definito da queste equazioni:

equazione vettoriale :

Il simbolo vettore t è definito da queste equazioni:

equazione : vettore 2

Proprietà dell'effetto

Enumerazione del nome visualizzato e dell'indice Descrizione
Posizione della Luce
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}.
PuntiAt
D2D1_SPOTSPECULAR_PROP_POINTS_AT
Dove la luce del riflettore è focalizzata. La proprietà viene esposta come D2D1_VECTOR_3F con i componenti (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
L'oggetto dell'attenzione del faro. Questa proprietà è senza unità e viene definita tra 0 e 200. Il tipo è FLOAT.
Il valore predefinito è 1,0f.
Angolo del cono limitante
D2D1_SPOT_SPECULAR_PROP_ANGOLO_DEL_CONO_LIMITANTE
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. Il tipo è FLOAT.
Il valore predefinito è 90,0f.
SpecularExponent
D2D1_SPOTSPECULAR_PROP_SPECULAR_EXPONENT
Esponente per il termine speculare nell'equazione di illuminazione Phong. Un valore più grande 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
Il rapporto tra la riflessione speculare e la luce in ingresso. Il valore è senza unità 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 è senza unità e deve essere compreso tra 0 e 10.000. Il tipo è FLOAT.
Il valore predefinito è 1,0f.
Colore
D2D1_SPOTSPECULAR_PROP_COLOR
Colore della luce in ingresso. Questa proprietà viene esposta come vettore 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}.
LunghezzaUnitàKernel
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à mappa i valori dx e dy nel gradiente di Sobel. Questa proprietà è un 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 variano per 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 Prende campione del singolo punto 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 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_SPOTSPECULAR_SCALE_MODE_MULTI_SAMPLE_LINEAR Usa 4 campioni lineari all'interno di un singolo pixel per un buon anti-aliasing dei bordi. Questa modalità è utile per ridurre leggermente le dimensioni delle immagini quando hanno 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 dimensioni variabili di alta qualità per eseguire un ridimensionamento preliminare dell'immagine se il ridimensionamento è incluso 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 impostato automaticamente su 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
Biblioteca d2d1.lib, dxguid.lib

ID2D1Effect