Megosztás a következőn keresztül:


Pont-spekuláris fényhatás

A pont-spekuláris megvilágítási effektussal olyan képet hozhat létre, amely tükröző felületnek tűnik. Az effektus a kép alfa csatornáját használja magasságtérképként és pont fényforrásként, amelyet ön helyez el, és kiszámítja a tükrözést és a fényt a Phong világítási modell spekuláns részének megfelelően.

A kimeneti bitkép színe a világos szín, a világos pozíció és a felületi geometria eredménye. A spekuláris megvilágítású képpontok alfa csatornakimenete az adott képponthoz tartozó piros, zöld és kék csatornakimenet maximális értéke.

Az effektus CLSID azonosítója CLSID_D2D1PointSpecular.

Példakép

Az alábbi példa a pont-spekuláris fényeffektus bemeneti és kimeneti képeit mutatja be.

példaeffektus képernyőképe, amely a pontspekuláris megvilágítási effektus bemeneti és kimeneti képeit jeleníti meg.

A spekuláris fény olyan fényre utal, amely a Phong világítási modellnek megfelelően egy adott irányban tükröződik.

a bitkép spekuláris megvilágítási kimenetének kiszámításához használt vektorok diagramja.

Az effektus az alábbi egyenletekkel számítja ki a végső kimeneti képpontértékeket:

az egyenleteket a végső képpontértékek kiszámításához.

hol

k? = spekuláris világítási állandó.
a felület normál egységvektorszimbólumát. = normál felületi egységvektor, amely x és y függvény. A számításokhoz lásd magasságtérképet és a normál vektoros.
a félúton lévő egységvektorszimbólumot. = "félúton lévő" egységvektor a szem és a fény egységvektora között. A számításokhoz lásd pont fényforrás.
Lr, Lg, Lb = az RGB-összetevők világos színe.

A spekuláris megvilágítási állandót a SpecularConstant tulajdonságként, a fény színét pedig a Color tulajdonságként állítja be.

Pontfényforrás

A pontfényforrás minden irányban fényt bocsát ki, mint az itt látható képen.

egy pontfényt, amely minden irányban fényt bocsát ki.

A fényforrás pozícióját a LightPosition tulajdonság használatával állíthatja be. Az effektus kiszámítja az L fényvektort egy pont fényforráshoz az alábbi egyenletek használatával:

a fényvektor egyenletét.

ahol Light?, Lighty, és Lightz a bemeneti fény helyzete. Az effektus kiszámítja a félvektort, félvektor szimbólum. a Phong világítási modellben meghatározott módon, az itt található egyenlet segítségével. A világítási modell feltételezi, hogy a szemvektor, a szemvektor szimbóluma, a (0,0,1) helyen található.

félvektor egyenlet.

Mind az L, mind a H egységhosszúságú vektorokra van normalizálva.

Magasságtérkép és normál vektor

Az effektus létrehoz egy magasságtérképet a bemeneti képhez az alfa csatornája alapján.

A magasság (Z) összetevő kiszámítása a következő egyenlettel történik:

a felület magasságának (z) kiszámítására szolgáló egyenletet.

Az effektus kiszámítja a felületi normált, a normál vektorszimbólumot., a bemeneti bitképhez Sobel-gradienssel.

Tükörfény világítási állandó és hatványérték

A spekuláris fény a kép magasságtérképének felületéről visszaverődő fényt jelöli. Meg kell adnia a SpecularExponent tulajdonságot, amely meghatározza a bitkép spekulatív tükröződésének mennyiségét.

A nagyobb kitevők a fényesebb tárgyakat jelölik, és a fényt összpontosított formában tükrözik.

A SpecularConstant K tulajdonság? a visszavert fény mennyiségét a bejövő fény arányában határozza meg.

Effektus tulajdonságai

Név és index számbavételének megjelenítése Leírás
Fénypozíció
D2D1_POINTSPECULAR_PROP_LIGHT_POSITION
A pontfényforrás fényhelyzete. A tulajdonság egy D2D1_VECTOR_3F, amely (x, y, z) formában van meghatározva. Az egységek eszközfüggetlen képpontokban (DIP-kben) vannak, az értékek pedig egység nélküliek és kötetlenek. A típus D2D1_VECTOR_3F.
Az alapértelmezett érték a következő: {0.0f, 0.0f, 0.0f}.
SpecularExponent
D2D1_POINTSPECULAR_PROP_SPECULAR_EXPONENT
A Phong világítási egyenlet tükröződési tagjának kitevője. A nagyobb érték egy tükrözőbb felületnek felel meg. Ez az érték egység nélküli, és 1,0 és 128 között kell lennie. A típus FLOAT.
Az alapértelmezett érték 1,0f.
SpecularConstant
D2D1_POINTSPECULAR_PROP_SPECULAR_CONSTANT
A spekuláris tükröződés és a bejövő fény aránya. Az érték egység nélküli, és 0 és 10 000 között kell lennie. A típus FLOAT.
Az alapértelmezett érték 1,0f.
SurfaceScale
D2D1_POINTSPECULAR_PROP_SURFACE_SCALE
A Z irányban lévő méretezési tényező a magasságtérkép létrehozásához. Az érték egység nélküli, és 0 és 10 000 között kell lennie. A típus FLOAT.
Az alapértelmezett érték 1,0f.
Szín
D2D1_POINTSPECULAR_PROP_COLOR
A bejövő fény színe. Ez a tulajdonság D2D1_VECTOR_3F (R, G, B) néven érhető el, és az LR, LG, LBkiszámítására szolgál. A típus D2D1_VECTOR_3F.
Az alapértelmezett érték {1.0f, 1.0f, 1.0f}.
KernelEgységhossz
D2D1_POINTSPECULAR_PROP_KERNEL_UNIT_LENGTH
A Sobel-kernel egy elemének mérete, amellyel az X és Y irányban normál felületet hoz létre. Ez a tulajdonság a Sobel-színátmenet dx és dy értékeire lesz leképezve. Ez a tulajdonság egy D2D1_VECTOR_2F (kernelegység hossza X, kernelegység hossza Y), és DIP/kernelegységekben van definiálva. Az effektus kétvonalas interpolációval skálázza a bitképet a kernelelemek méretének megfelelően. A típus D2D1_VECTOR_2F.
Az alapértelmezett érték {1.0f, 1.0f}.
ScaleMode
D2D1_POINTSPECULAR_PROP_SCALE_MODE
Az interpolációs mód, amelyet az effektus a rendszerkép megfelelő kernelegységhosszra történő skálázásához használ. Hat skálázási mód van, amelyek minőségben és sebességben is mozognak. További információt Skálázási módok című témakörben talál.
A típus D2D1_POINTSPECULAR_SCALE_MODE.
Az alapértelmezett érték a D2D1_POINTSPECULAR_SCALE_MODE_LINEAR.

Méretezési módok

Felsorolás Leírás
D2D1_POINTSPECULAR_SCALE_MODE_NEAREST_NEIGHBOR Mintavételezi a legközelebbi egyetlen pontot, és azt használja. Ez a mód kevesebb feldolgozási időt használ, de a legalacsonyabb minőségű képet adja ki.
D2D1_POINTSPECULAR_SCALE_MODE_LINEAR Négypontos mintát és lineáris interpolációt használ. Ez a mód jobb minőségű képet ad ki, mint a legközelebbi szomszéd.
D2D1_POINTSPECULAR_SCALE_MODE_CUBIC 16 köbélmintát használ az interpolációhoz. Ez a mód a legtöbb feldolgozási időt használja, de jobb minőségű képet ad ki.
D2D1_POINTSPECULAR_SCALE_MODE_MULTI_SAMPLE_LINEAR 4 lineáris mintát használ egy pixelben a jó minőségű élelsimításhoz. Ez a mód alkalmas kis mennyiségű csökkentésre kevés pixellel rendelkező képeken.
D2D1_POINTSPECULAR_SKÁLAMÓD_ANIZOTRÓP Anizotróp szűréssel mintát vesz a bitkép átalakított alakjának megfelelően.
D2D1_POINTSPECULAR_SCALE_MODE_HIGH_QUALITY_CUBIC Változó méretű, kiváló minőségű köbmag használatával előzetesen leskálázza a képet, ha az átalakítási mátrix tartalmaz skálázást. Ezután a végső kimenethez a köbinterpolációs módot használja.

Jegyzet

Ha nem választ módot, az effektus alapértelmezésben a D2D1_POINTSPECULAR_SCALE_MODE_LINEAR lesz.

Követelmények

Követelmény Érték
Minimálisan támogatott ügyfél Windows 8 és Platform Update for Windows 7 [asztali alkalmazások | Windows Áruházbeli alkalmazások]
Minimálisan támogatott kiszolgáló Windows 8 és Platform Update for Windows 7 [asztali alkalmazások | Windows Áruházbeli alkalmazások]
Fejléc d2d1effects.h
Könyvtár d2d1.lib, dxguid.lib

ID2D1Effect