Aktuality  |  Články  |  Recenze
Doporučení  |  Diskuze
Grafické karty a hry  |  Procesory
Storage a RAM
Monitory  |  Ostatní
Akumulátory, EV
Robotika, AI
Průzkum vesmíru
Digimanie  |  TV Freak  |  Svět mobilně

3D technologie: Displacement Mapping

29.7.2004, Zdeněk Kabát, článek
3D technologie: Displacement Mapping
Minulý týden jsme Vám přinesli popis 3D techniky Bump Mapping, která se používá v grafických čipech již hezkou řádku let. Dnes přichází řada na úplnou novinku v online renderingu, a tou je Displacement Mapping. Tato metoda je hardwarově podporována od Shader Modelu 3.0 a pomocí 2D textury fyzicky upravuje geometrický detail objektu.
Kapitoly článku:
  1. 3D technologie: Displacement Mapping
  2. Implementace Displacement mappingu
  3. Výhody a nevýhody DM
Minulé úterý jsme si představili jednu ze základních grafických technik let minulých i současných, Bump Mapping. Na konci článku jsem se odkazoval na pokročilejší metodu, která pracuje na podobném základě - pomocí 2D textury upravuje nejen osvětlení, ale i geometrický detail scény. Tato metoda se nazývá Displacement Mapping a díky GeForce 6800 je nyní možné ho používat i k online renderingu. Jak tato technika pracuje se podíváme na následujících odstavcích.

Ještě krátký úvod do problematiky. Když grafici chtějí mít velmi detailní model nějakého objektu, postavy apod., musí být co nejpřesnější a obsahovat tedy mnoho vrcholů. Vytvoření takovéhoto modelu je velmi náročné a navíc zabírají data o vrcholech mnoho místa v paměti. Proto zde nastupuje na scénu Displacement Mapping, který by se dal nazvat jako "geometrická komprese". Na rozdíl od Bump Mappingu již sice neulehčuje práci vertex shaderu, ale zato díky 2D textuře určuje členitost povrchu nového objektu. Ten nejen že je precizně osvětlen, ale navíc má i řádný reliéf a vrhá odpovídající stíny. Dokonce lze i celý model vytvořit pomocí jediné displacement mapy.




Obr. 1 - Displacement Mapping u Matrox Parhelia

Hardwarová podpora

Displacement Mapping je specifikace podporovaná od DirectX 9.0 Shader Modelu 3.0, což je rozhraní vypuštěné teprve toto pondělí. Ovšem virtuální Displacement Mapping využíval již hardware pro první generaci DX9 - Matrox Parhelia a Radeon 9700, později i rodina GeForce FX. Podobně jako u Environment-mapped Bump Mappingu zde byl průkopníkem Matrox.

Zatímco Radeon 9700 podporoval pre-sampled DM a Parhelia filtered DM, skutečný hardwarový Displacement mapping přichází na řadu až nyní. GeForce 6800 dokáže jako jediná karta s podporou Shader Modelu 3.0 nahrávat textury přímo do vertex shaderu a aplikovat tak Displacement mapping v reálném čase. Na hry využívající tuto techniku si ale přeci jen chvíli počkáme.

Virtuální Displacement Mapping

Vzhledem k tomu, jak jsou rozšířené v dnešní době Radeony série 9xxx, se hodí rozebrat i jejich přístup k DM. Jedná se o nepravý, tzv. virtuální Displacement mapping, někdy nazývaný také jako offset mapping nebo parallax mapping. Jde spíše o mystifikaci ze strany ATi, protože VDM je de facto pokročilou technikou Bump Mappingu. Svým způsobem sice řeší stejný problém, ale pomocí kompletně odlišné metody.

Jelikož se jedná o Bump Mapping, skutečná geometrie objektu je stále nedotčena. Virtuální DM způsobuje paralaxní posuny, které při pohybu kamery nad texturou vytvářejí dojem větší plastičnosti než při použití obyčejného normálového mapování. Stále je zde ale ten problém, že při pozorování z větších úhlů se efekt VDM ztrácí a vrhané stíny jsou také nezměněné.

Slovo parallax (český ekvivalent paralaxa) je výraz z geometrie, který označuje ve většině případů nějaký úhel (astronomie, fotografování). V našem případě vyjadřuje, že objekt je upraven tak, aby z daného úhlu pohledu vypadal realističtěji. Jak tedy virtuální DM pracuje - díky výškové mapě upraví souřadnice textury tak, aby pozorovatel nabyl dojmu, že se dívá na zakřivený povrch. Nejlepší bude použít obrázek:


Obr. 2 - Virtuální Displacement Mapping

Zde je evidentní, jak VDM pracuje. Původní textura je upravena výškovou mapou (a většinou i normálovou mapou). Aby se pozorovateli zdála z každého úhlu správně zakřivená, jsou souřadnice každého texelu přepočítávány a posouvány směrem k němu. Je tedy jasné, že posuny a vlastně "deformace" textury vycházejí z hodnot ve výškové mapě a úhlu pohledu.

Oproti pravému Displacement Mappingu jde o hodně jednoduchou metodu z hlediska hardwaru. Výšková mapa je 8-bitová 2D textura, která může být kódována přímo do textury nebo normálové mapy (mám na mysli nevyužívaný alpha kanál) a neiniciuje žádné nové vrcholy.




Obr. 3 - Použití virtuálního DM na zeď
Klikněte pro zvětšení

Zde jsou odkazy na dema virtuálního Displacement mappingu:
reklama