Mlha Vzorce (Direct3D 9)
Aplikace jazyka C++ můžou řídit, jak mlha ovlivňuje barvu objektů ve scéně změnou způsobu, jakým Microsoft Direct3D vypočítává efekty mlhy přes vzdálenost. Typ výčtu D3DFOGMODE obsahuje členy, které identifikují tři mlhové vzorce. Všechny vzorce vypočítají mlhový faktor jako funkci vzdálenosti vzhledem k parametrům, které vaše aplikace nastaví.
Lineární mlha
Toto nastavení je nastaveno s následující D3DFOG_LINEAR rovnicí.
kde
- start je vzdálenost, ve které začnou mlha efekty.
- konec je vzdálenost, při které se již nezvětší efekty mlhy.
- d představuje hloubku nebo vzdálenost od pohledu. U mlhy založené na rozsahu je hodnota d vzdálenost mezi polohou kamery a vrcholem. U mlhy, která není založená na rozsahu, je hodnota d absolutní hodnotou souřadnice Z v prostoru kamery.
Exponenciální mlha
Lineární a exponenciální vzorce jsou podporovány pro mlhu pixelů i pro mlhu vrcholů.
Toto nastavení je nastaveno pomocí následující D3DFOG_EXP rovnice.
kde
- e je základem přirozených logaritmů (přibližně 2,71828).
- hustota je libovolná hustota mlhy, která může být v rozsahu od 0,0 do 1,0.
- d představuje hloubku nebo vzdálenost od pohledu, jak je uvedeno výše.
Toto nastavení je nastaveno pomocí následující D3DFOG_EXP2 rovnice.
kde
- e je základ přirozených logaritmů, jak je uvedeno výše.
- hustota je libovolná hustota mlhy, která může být v rozsahu od 0,0 do 1,0, jak je uvedeno výše.
- d představuje hloubku nebo vzdálenost od pohledu, jak je uvedeno výše.
Poznámka
Systém ukládá mlhový faktor v alfa komponentě specifikární barvy vrcholu. Pokud vaše aplikace provádí vlastní transformaci a osvětlení, můžete hodnoty mlhového faktoru vložit ručně, které systém použije při vykreslování.
Následující graf ukazuje tyto vzorce s použitím běžných hodnot jako v parametrech vzorce.
D3DFOG_LINEAR je 1,0 na začátku a 0,0 na konci. Neměří se vzhledem k nejbližším nebo vzdáleným rovinám.
Když Direct3D vypočítá mlhové efekty, použije faktor mlhy z jedné z předchozích rovnic v následující směšovací rovnici.
Tento vzorec efektivně škáluje barvu aktuálního mnohoúhelníku C mlhovým faktorem f a přidá součin do mlhové barvy C, škálovanou bitovým inverzním faktorem mlhy. Výsledná hodnota barvy je směs barvy mlhy a původní barvy jako faktor vzdálenosti. Vzorec platí pro všechna zařízení podporovaná v Microsoft DirectX 7.0 a novějších verzích. U staršího zařízení rampy mlha škáluje difuzní a specifikární barevné komponenty, uchycené na rozsah 0,0 a 1,0 včetně. Mlhový faktor obvykle začíná na 1,0 u blízké roviny a klesá na 0,0 na vzdáleném letadle.
Související témata