Sdílet prostřednictvím


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í.

rovnice přímé 3d lineární mlhy

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.

rovnice přímé 3d exponenciální mlhy

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.

rovnice přímé 3d exponenciální 2 mlhy

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.

graf vzorců mlhy nad vzdáleností a množstvím barevných

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.

rovnice mlhových efektů pro direct3d

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.

typy mlhy