Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Usa l'effetto di illuminazione speculare del punto per creare un'immagine che sembra essere una superficie riflettente. L'effetto utilizza il canale alfa dell'immagine come mappa dell'altezza e una sorgente di luce puntiforme che posizioni, e calcola la riflessione e la luce in base alla componente speculare del modello di illuminazione Phong.
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 speculare è il massimo degli output del canale rosso, verde e blu per tale pixel.
Il CLSID di questo effetto è CLSID_D2D1PointSpecular.
- Immagine di esempio
- sorgente di luce punto
- Mappa di altezza e vettore normale
- costante di illuminazione speculare ed esponente
- proprietà effetto
- le modalità di scalabilità di
- Requisiti
- argomenti correlati
Immagine di esempio
L'esempio mostra le immagini di input e output dell'effetto di illuminazione speculare a punto.
La luce speculare si riferisce alla luce riflessa in una direzione specifica in base al modello di illuminazione Phong.
L'effetto calcola i valori dei pixel di output finali usando le equazioni riportate di seguito:
dove
- Okay? = costante di illuminazione speculare.


Lr, Lg, Lb = colore chiaro nei componenti RGB.
Imposti la costante di illuminazione speculare come la proprietà SpecularConstant e il colore della luce come la proprietà Color.
Sorgente di luce punto
Una sorgente di luce punto emette luce in tutte le direzioni come nell'immagine qui.
Imposti la posizione della sorgente luminosa usando la proprietà LightPosition. L'effetto calcola il vettore di luce, L , per una sorgente di luce punto usando le equazioni riportate di seguito:
dove Light?, Lightye Lightz sono la posizione della luce di input. L'effetto calcola il vettore intermedio, come definito nel modello di illuminazione Phong, usando l'equazione qui. Il modello di illuminazione presuppone che il vettore oculare,
, si trova in (0,0,1).
Sia L che H vengono normalizzati in vettori a lunghezza unità.
La mappa di altezza e il vettore normale
L'effetto genera una mappa di altezza per l'immagine di input in base al canale alfa.
Il componente height (Z) viene calcolato usando l'equazione:
L'effetto calcola la normale della superficie, , per il bitmap di input utilizzando un gradiente di Sobel.
Costante e esponente dell'illuminazione speculare
La luce speculare rappresenta la luce riflessa dalla superficie della mappa dell'altezza dell'immagine. Specifichi la proprietà SpecularExponent che determina la quantità di riflessione speculare dalla bitmap.
Gli esponenti più grandi rappresentano oggetti più lucidi e riflettono la luce in una forma più focalizzata.
La proprietà SpecularConstant definisce la quantità di luce riflessa come rapporto della luce in ingresso.
Proprietà dell'effetto
Nome visualizzato e enumerazione dell'indice | Descrizione |
---|---|
LightPosition D2D1_POINTSPECULAR_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 i valori sono senza unità e senza limiti. Il tipo è D2D1_VECTOR_3F. Il valore predefinito è {0.0f, 0.0f, 0.0f}. |
SpecularExponent D2D1_POINTSPECULAR_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_POINTSPECULAR_PROP_SPECULAR_CONSTANT |
Il rapporto di riflessione speculare rispetto alla 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_POINTSPECULAR_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_POINTSPECULAR_PROP_COLOR |
Colore della luce in ingresso. Questa proprietà viene esposta come D2D1_VECTOR_3F (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_POINTSPECULAR_PROP_KERNEL_UNIT_LENGTH |
Dimensioni di un elemento nel kernel Sobel usato per generare la normale superficie nelle direzioni X e Y. Questa proprietà corrisponde ai valori dx e dy nel gradiente Sobel. Questa proprietà è un 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. Il tipo è D2D1_VECTOR_2F. Il valore predefinito è {1.0f, 1.0f}. |
ScaleMode D2D1_POINTSPECULAR_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 in qualità e velocità. Per altre informazioni, vedi Modalità di scalabilità. Il tipo è D2D1_POINTSPECULAR_SCALE_MODE. Il valore predefinito è D2D1_POINTSPECULAR_SCALE_MODE_LINEAR. |
Modalità di scalabilità
Enumerazione | Descrizione |
---|---|
D2D1_POINTSPECULAR_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_POINTSPECULAR_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_POINTSPECULAR_SCALE_MODE_CUBIC | Usa 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_POINTSPECULAR_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 scalare di poco le immagini con una bassa quantità di pixel. |
D2D1_POINTSPECULAR_SCALE_MODE_ANISOTROPIC | Usa il filtro anisotropico per campionare un modello in base alla forma trasformata della bitmap. |
D2D1_POINTSPECULAR_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 è impostato su D2D1_POINTSPECULAR_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 |