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: Bump Mapping

20.7.2004, Zdeněk Kabát, článek
3D technologie: Bump Mapping
Po delší době se opět podíváme na 3D technologie používané v současných GPU. Pod drobnohled jsem si tentokrát vzal Bump Mapping, což je řada technik a algoritmů umožňujících pomocí 2D textur simulovat zakřivení povrchu apod. V článku poskytnu detailní popis Emboss, Environment a DOT3 Bump Mappingu (tzn. normálového mapování), okrajově se zmíním i o Displacement Mappingu.
Environment Bump Mapping

Autorem Environment-mapped Bump Mappingu (EMBM) je společnost Bitboys a hardwarovou podporu přinesla jako první společnost Matrox, která ho uvedla ve své řadě Millennium G400. Jedná se o velice efektivní metodu, která je ovšem náročnější na systémové zdroje (samozřejmě mluvíme o grafické kartě). Pokusím se tuto techniku vysvětlit co nejjednodušeji.

Environment Bump Mapping potřebuje celkem tři textury - klasickou texturu, bump mapu a environment mapu ("mapu prostředí", ale raději zachovám původní název). Bump mapa je trochu odlišná od textur, které jsme si představovali výše. Odpovídá v podstatě nanášené textuře a každému jejímu texelu přiřazuje danou souřadnici z environment mapy. Po kombinaci bump mapy a environment mapy s původní texturou pak vznikne mapa osvětlení pro daný objekt nebo scénu.

Nejlépe bude ukázat si to na obrázku:


Obr. 6 - Environment-mapped Bump Mapping

Na levé straně obrázku vidíte, co udělá environment mapa s obyčejnou texturou. V podstatě simuluje osvětlení a stíny na textuře, ale tak, že zdrojem osvětlení je environment mapa sama, nikoliv vnější zdroj. Po aplikaci bump mapy se již dostáváme ke kýženému výsledku - bump mapa přiřadí každému texelu danou souřadnici (tedy i intenzitu osvětlení) z environment mapy a vzniká dojem prostoru.

Podívejme se podrobněji na vytváření samotné bump mapy. Bump mapa je dvousložková textura obsahující komponenty DU a DV, která popisují posuny v U a V souřadnici původní textury. Souřadnice každého texelu jsou nejdříve získány interpolací souřadnic vrcholů polygonu (U/V) a poté jsou upraveny od DU/DV hodnoty z bump mapy. Jde de facto o černobílou výškovou mapu, jejíž posuny získáme opět odvozením od sklonu potřebné simulované plochy. Je použita 8-bitová hloubka, která je poté transformována na rozsah [-1,1].





Obr. 7, 8 - Planeta Země s využitím EMBM

EMBM je realizován vždy ve dvou průchodech (při multipassingu). V prvním průchodu se zpracuje bump mapa a environment mapa a skombinují se do nové environment mapy, která již obsahuje model osvětlení pro danou texturu. Tento model se v druhém průchodu spojí s texturou a výsledný objekt je na světě.

Enviroment BM má dvě základní využití - kromě toho, že dokáže vytvářet iluzi členitého povrchu, umí i dynamicky zpracovávat pohybující se povrch jakým je např. vodní hladina. EMBM se také používá velmi často k vytváření reflexivních (odrazivých) ploch. V tom případě nenese environment mapa informace o osvětlení scény, ale texturu, která se bude na daném povrchu odrážet.

Výhody Environment-mapped Bump Mappingu jsou evidentní:
  • Pomocí jediné bump mapy lze simulovat i náročnější model osvětlení, tedy včetně několika světelných zdrojů apod. Je to zaručeno tím, že všechny informace o osvětlení jsou uloženy v environment mapě a odkazuje se na ně v libovolně upravitelné bump mapě.
  • Protože bump mapa odpovídá přesně původní textuře, u pohyblivých scén není třeba, aby se měnila v každém snímku. Jedná se totiž o per-pixel zpracování, kde se nám jak textura, tak bump mapa pohybují s objektem, zatímco environment mapa je zcela nezávislá. Na rozdíl od Emboss BM toto velmi šetří výkon GPU.
  • Díky možnosti dynamické bump mapy lze simulovat vlnící se vodní hladinu, která se ovšem v GPU zpracovává jako rovná plocha. Aplikací bump mapy, která se cyklicky mění, se vytváří dojem pohyblivé plochy, a to včetně odrazů. Environment mapa v tomto případě obsahuje i texturu, která se od hladiny odráží, např. stromy, hory apod.
  • EMBM může být závislý i nezávislý na úhlu pohledu a může na něj být použito globální i bodové osvětlení. To se dále zpracovává klasicky přes normálové vektory (Gouraudovo stínování).

Obr. 9 - Odrazy ve vlnící se hladině

Ovšem musím taktéž zmínit jednu nevýhodu. Tou je, že ani EMBM stále nepracuje s normálovými vektory a je tedy vázáno na informace v environment mapě. Pokud se na scéně bude nacházet několik různě umístěných světelných zdrojů, může dojít k nežádoucím efektům v obraze, hlavně pokud jde o reflexivitu povrchu. Přesto ale mají díky jednoduché použitelnosti EMBM vývojáři rádi a většinou jsou výsledky velmi dobré.