Spot-diffúz világítási effektus

Használja a spot diffúz világítási effektust, hogy olyan képet hozzon létre, amely nem visszaverő felületnek tűnik, ahol a fényforrás egy irányított fénykúpra korlátozódik, és a fény minden irányba szétszóródik. Ez az effektus az alfa csatornát használja magasságtérképként, és spot fényforrással világítja meg a képet.

A kimeneti bitkép színe a világos szín, a világos pozíció és a felületi geometria eredménye. A diffúz megvilágítású képpontok alfa csatornakimenete mindig 1,0.

Az effektus CLSID azonosítója CLSID_D2D1SpotDiffuse.

Példakép

Az alábbi példa a direkt diffúz fényeffektus bemeneti és kimeneti képeit mutatja be.

példaeffektus képernyőképe

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

kimeneti bitkép kiszámítása

Hol:

kd = diffúz világítási állandó. A felhasználó adja meg.
normál vektorszimbólum. = normál felületi egységvektor, x és y függvény.
fényvektor szimbóluma. = a felületről a fényre mutató egységvektor.
Lr, Lg, Lb = az RGB-összetevők világos színe.

Effektus tulajdonságai

Név és index számbavételének megjelenítése Típus és alapértelmezett érték Leírás
LightPosition
D2D1_SPOTDIFFUSE_PROP_LIGHT_POSITION
D2D1_VECTOR_3F
{0.0f, 0.0f, 0.0f}
A pontfényforrás fényhelyzete. A tulajdonság egy (x, y, z) D2D1_VECTOR_3F definiálva. Az egységek eszközfüggetlen képpontokban (DIP-kben) vannak, és kötetlenek.
Pontátosztás
D2D1_SPOTDIFFUSE_PROP_POINTS_AT
D2D1_VECTOR_3F
{0.0f, 0.0f, 0.0f}
Ahol a reflektorfény összpontosul. A tulajdonság D2D1_VECTOR_3F formájában van kifejezve (x, y, z). Az egységek DIP-egységekben vannak, az értékek pedig nincsenek korlátozva.
Fókusz
D2D1_SPOTDIFFUSE_PROP_FOCUS
LEBEG
1.0f
A reflektorfény középpontja. Ez a tulajdonság egység nélküli, és 0 és 200 között van definiálva.
Határoló kúp szög
D2D1_SPOTDIFFUSE_PROP_KORLÁTOZÓ_KÚPSZÖG
LEBEG
90,0f
Az a kúpszög, amely korlátozza azt a régiót, ahol a fény ki van vetítve. A kúpon kívül nincs fény. A korlátozó kúp szöge a spotlámpa tengely (a LightPosition és PointsAt tulajdonságok közötti tengely) és a spotlámpa kúp közötti szög. Ez a tulajdonság fokban van definiálva, és 0 és 90 fok között kell lennie.
Diffúziós állandó
D2D1_SPOTDIFFUSE_PROP_DIFFÚZ_KONSTANS
LEBEG
1.0f
A diffúz visszaverődés aránya a bejövő fény mennyiségével. Ennek a tulajdonságnak 0 és 10 000 közöttinek kell lennie, és egység nélkülinek kell lennie.
SurfaceScale
D2D1_SPOTDIFFUSE_PROP_FELÜLETI_SKÁLA
LEBEG
1.0f
A skálázási tényező a Z irányban. A felületi skálának egység nélkülinek kell lennie, és 0 és 10 000 közöttinek kell lennie.
Szín
D2D1_SPOTDIFFUSE_PROP_COLOR
D2D1_VECTOR_3F
{1.0f, 1.0f, 1.0f}
A bejövő fény színe. Ez a tulajdonság Vektor 3 (R, G, B) néven érhető el, és az LR, LG, LBkiszámítására szolgál.
KernelEgységhossz
D2D1_SPOTDIFFUSE_PROP_KERNEL_UNIT_LENGTH
D2D1_VECTOR_2F
{1.0f, 1.0f}
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-gradiens dx és dy értékeire lesz leképezve. Ez a tulajdonság egy D2D1_VECTOR_2F (kerneregység hossza X, kerneregység hossza Y), és a (DIP/kerneregység) van megadva. Az effektus kétvonalas interpolációval skálázza a bitképet a kernelelemek méretének megfelelően.
Méretezési mód
D2D1_SPOTDIFFUSE_PROP_SCALE_MODE
D2D1_SPOTDIFFUSE_SCALE_MODE
D2D1_SPOTDIFFUSE_SCALE_MODE_LINEAR
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.

Méretezési módok

Felsorolás Leírás
D2D1_SPOTDIFFUSE_SCALE_MODE_NEAREST_NEIGHBOR Mintavételezi a legközelebbi 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_SPOTDIFFUSE_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_SPOTDIFFUSE_SCALE_MODE_CUBIC (Kubikus interpolációs mód a Spot Diffuse esetében) 16 mintavételes kubikus kernel használata 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_SPOTDIFFUSE_SCALE_MODE_MULTI_SAMPLE_LINEAR Egyetlen képponton belül 4 lineáris mintát használ a jó élelsimításhoz. Ez a mód alkalmas arra, hogy kis mennyiségekkel lefelé skálázható néhány képpontos képeken.
D2D1_SPOTDIFFUSE_SKÁLÁZÁSI_MÓD_ANIZOTRÓP Anizotróp szűréssel mintát vesz a bitkép átalakított alakjának megfelelően.
D2D1_SPOTDIFFUSE_SCALE_MODE_HIGH_QUALITY_CUBIC Változó méretű, kiváló minőségű köbkernelt használva előre leskálázza a képet, ha az átalakítási mátrix skálázást tartalmaz. Ezután a végső kimenethez a köbinterpolációs módot használja.

Jegyzet

Ha nem választ módszert, az effekt alapértelmezés szerint a D2D1_SPOTDIFFUSE_SCALE_MODE_LINEAR beállítást alkalmazza.

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