Világos tulajdonságok (Direct3D 9)
A fénytulajdonságok a fényforrás típusát és színét írják le. A használt fény típusától függően a fények tulajdonságokkal rendelkezhetnek a csillapításhoz és a tartományhoz, illetve a reflektorfény-effektusokhoz. De nem minden fénytípus használja az összes tulajdonságot. A Direct3D a D3DLIGHT9 szerkezettel minden típusú fényforrás fénytulajdonságairól tartalmaz információkat. Ez a szakasz az összes fénytulajdonságra vonatkozó információt tartalmazza. Az információk a következő csoportokba vannak osztva.
A pozíció, a tartomány és a csillapítási tulajdonságok határozzák meg a fény helyét a világűrben, és azt, hogy az általa kibocsátott fény hogyan viselkedik távolról. A C++-ban használt összes fénytulajdonsághoz hasonlóan ezek is a fény D3DLIGHT9 szerkezetében találhatók.
Világos csillapítás
A csillapítás azt szabályozza, hogy a fény intenzitása hogyan csökken a tartománytulajdonság által megadott maximális távolság felé. Három D3DLIGHT9 struktúratag a könnyű csillapítást jelöli: Attenuation0, Attenuation1 és Attenuation2. Ezek a tagok lebegőpontos értékeket tartalmaznak 0,0-tól a végtelenig, szabályozva a fény csillapítását. Egyes alkalmazások az Attenuation1 tagot 1,0-ra, a többit pedig 0,0-ra állítják be, ami 1/D-ként változó fényintenzitást eredményez, ahol D a fényforrástól a csúcsig való távolság. A maximális fényintenzitás a forrásnál van, és a fény tartományában 1/-ra (Fénytartomány) csökken. Az alkalmazások általában az Attenuation0 értéket 0,0-ra, az Attenuation1-et állandó értékre, az Attenuation2-t pedig 0,0-ra állítja.
A csillapítási értékeket kombinálva összetettebb csillapítási hatásokat érhet el. Vagy beállíthatja őket a normál tartományon kívüli értékekre, hogy még idegenebb csillapítási effektusokat hozzon létre. A negatív csillapítási értékek azonban nem engedélyezettek. Lásd: Attenuation and Spotlight Factor (Direct3D 9).
Világos szín
A Direct3D fényei három színt bocsátanak ki, amelyeket egymástól függetlenül használnak a rendszer világítási számításaiban: diffúz színt, környezeti színt és spekuláris színt. Ezeket a Direct3D világítási modul építi be, és az aktuális anyag egy megfelelőjével együttműködve létrehoz egy végső színt, amelyet a renderelés során használnak. A diffúz szín kölcsönhatásba lép az aktuális anyag diffúz visszatükröző tulajdonságával, a spekuláns szín az anyag spekularis tükrözési tulajdonságával stb. További információ arról, hogy a Direct3D hogyan alkalmazza ezeket a színeket: Matematika a világítás (Direct3D 9).
Egy C++ alkalmazásban a D3DLIGHT9 szerkezet három tagot tartalmaz ezekhez a színekhez – Diffúz, Környezeti és Specular – mindegyik egy D3DCOLORVALUE szerkezet, amely meghatározza a kibocsátott színt.
A rendszer számításai során a legkeményebb színtípus a diffúz szín. A leggyakoribb diffúz szín a fehér (R:1.0 G:1.0 B:1.0), de igény szerint létrehozhat színeket a kívánt hatások eléréséhez. Használhat például piros fényt egy kandallóhoz, vagy használhat zöld fényt egy "Go" értékű közlekedési jelhez.
A világos színösszetevőket általában 0,0 és 1,0 közötti értékre állítja, de ez nem követelmény. Előfordulhat például, hogy az összes összetevőt 2.0 értékre állítja, és egy "fehérnél világosabb" fényt hoz létre. Ez a beállítástípus különösen akkor lehet hasznos, ha a konstanstól eltérő csillapítási beállításokat használ.
Vegye figyelembe, hogy bár a Direct3D RGBA-értékeket használ a fényekhez, az alfa színösszetevő nem használatos.
Általában anyagszíneket használnak a világításhoz. Megadhatja azonban, hogy az anyagszínek megengedő, környezeti, diffúz és spekuláns színeit diffúz vagy spekuláris csúcsszínekkel felül kell bírálni. Ez úgy történik, hogy meghívja SetRenderState, és beállítja az alábbi táblázatban felsorolt eszközállapot-változókat.
Eszközállapot-változó | Jelentés | Típus | Alapértelmezett |
---|---|---|---|
D3DRS_AMBIENTMATERIALSOURCE | Meghatározza, hogy hol kell a környezeti anyag színét lekérni. | D3DMATERIALCOLORSOURCE | D3DMCS_MATERIAL |
D3DRS_DIFFUSEMATERIALSOURCE | Meghatározza a diffúz anyag színének helyét. | D3DMATERIALCOLORSOURCE | D3DMCS_COLOR1 |
D3DRS_SPECULARMATERIALSOURCE | Meghatározza, hogy hol kell a spekuláns anyag színét lekérni. | D3DMATERIALCOLORSOURCE | D3DMCS_COLOR2 |
D3DRS_EMISSIVEMATERIALSOURCE | Meghatározza, hogy hol lehet megengedő anyagszínt kapni. | D3DMATERIALCOLORSOURCE | D3DMCS_MATERIAL |
D3DRS_COLORVERTEX | Letiltja vagy engedélyezi a csúcsszínek használatát. | BOOL | IGAZ |
Az alfa/átlátszóság értéke mindig csak a diffúz szín alfa csatornájából származik.
A ködérték mindig csak a szín alfa csatornájából származik.
D3DMATERIALCOLORSOURCE a következő értékekkel rendelkezhet.
- D3DMCS_MATERIAL – Az anyag színe a forrás.
- D3DMCS_COLOR1 – A diffúz csúcspont színe a forrás.
- D3DMCS_COLOR2 – A spekuláris csúcspont színe a forrás.
Világos irány
A fény iránytulajdonságai határozzák meg, hogy az objektum által kibocsátott fény milyen irányban halad a világűrben. Az irányt csak irányfények és reflektorfények használják, és vektorral írják le.
Állítsa be a fény irányát a fény D3DLIGHT9 szerkezetének Irány tagjára. Az iránytag D3DVECTORtípusú. Az irányvektorok a logikai forrástól való távolságként vannak leírva, függetlenül attól, hogy a fény milyen helyzetben van egy jelenetben. Ezért a reflektorfény, amely közvetlenül egy jelenetre mutat - a pozitív z tengely mentén - <0,0,1 irányvektorsal rendelkezik,> függetlenül attól, hogy hol van meghatározva a pozíciója. Hasonlóképpen szimulálhatja a közvetlenül a jeleneten ragyogó napfényt egy irányított fény használatával, amelynek iránya 0,-1,0><. Nyilvánvaló, hogy nem kell olyan fényeket létrehoznia, amelyek a koordináta tengelyek mentén ragyognak; az értékeket kombinálva érdekesebb szögekben ragyogó fényeket hozhat létre.
Jegyzet
Bár nem kell normalizálnia a fény irányvektorát, mindig győződjön meg róla, hogy nagysága van. Más szóval ne használjon <0,0,0> irányvektort.
Világos pozíció
A könnyű helyzet leírása D3DVECTOR szerkezettel történik a D3DLIGHT9 szerkezet Pozíció tagjában. Az x-, y- és z-koordináták feltételezik, hogy a világűrben vannak. Az irányított fények az egyetlen olyan fénytípus, amely nem használja a pozíciótulajdonságot.
Fénytartomány
A fény tartománytulajdonságai határozzák meg a világűrben azt a távolságot, ahol a jelenetben lévő hálók már nem fogadják az adott objektum által kibocsátott fényt. A Tartománytag egy lebegőpontos értéket tartalmaz, amely a fény maximális tartományát jelöli a világűrben. Az irányjelző fények nem használják a tartománytulajdonságot.
Kapcsolódó témakörök