3D technologie: Bump Mapping
20.7.2004, Zdeněk Kabát, článek
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.
Kapitoly článku:
- 3D technologie: Bump Mapping
- Emboss Bump Mapping
- Environment Bump Mapping
- Normal (DOT3) Bump Mapping
- Displacement Mapping a závěr
Displacement Mapping
O Displacement Mappingu se chci zmínit jen okrajově, protože se jedná o složitější techniku a pro dnešek myslím, že bylo technologických údajů až příliš. Jak jsme se dozvěděli výše, Bump Mapping zakřivení povrchu pouze simuluje, což má nevýhodu v tom, že silueta objektu a stíny jím vrhané jsou stále jen obrazem původního objektu. Tento problém řeší právě Displacement Mapping, který pomocí textury dokáže členitost povrchu přímo vytvořit.
Stručně řečeno - do frame bufferu se nahraje textura, která obsahuje výškovou mapu. Tato mapa je dále zpracována a ve vertex shaderu upravuje geometrickou podrobnost daného objektu. Velká výhoda tkví v tom, že se povrch modeluje pomocí jednoduché 8- nebo 16-bitové textury a nemusí se nahrávat souřadnice všech vrcholů. Dokonce lze celý objekt vymodelovat pomocí Displacement Mappingu.
Obr. 14 - Možnosti Displacement Mappingu jsou větší než u BM
Současné Radeony a Matrox Parhelia zatím používali jen virtuální displacement mapping, který byl zpracováván ve více průbězích. Pro skutečný DM je totiž potřeba plná podpora Shader Modelu 3.0, který umožňuje nahrávání textur z frame bufferu přímo do vertex shaderu. To dokáže rodina GeForce 6, která je na Displacement Mapping již připravena. Podrobnější popis této technologie Vám přineseme opět příště.
Závěr
Je evidentní, že přínos Bump Mappingu je velký. Metody, které se používaly dříve, nejsou příliš efektivní a daly by se nazvat spíše jako falešný BM. Tedy v případě, že Bump Mappingem nazýváme techniky spojené s modulací normálových vektorů, které se následně používají ke Gouraudovu nebo Phongovu stínování. Emboss a Environment-mapped BM totiž používají pouze osvětlovací mapy, které jsou naprosto nezávislé na zdrojích světla ve scéně. Přesto je konkrétně EMBM velmi platný, protože dokáže simulovat i odrazy na vlnící se vodní hladině apod.
Skutečný Bump Mapping je až normálové mapování, které pomocí 24-bitové normálové mapy určuje nové směrnice pro každý texel (na per-pixel úrovni). Proto tato technika umožňuje širokou škálu efektů a v kombinaci s pixel shadery dává programátorům obrovskou volnost. Normálové mapování ale u současných GPU výrazně postihuje výkon GPU, protože zdvojnásobuje počet potřebných textur. Navíc neovlivňuje siluety a stíny, což je až úkol Displacement Mappingu.
Emboss, Environment-mapped a Normal (DOT3) Bump Mapping podporují hardwarově všechny moderní GPU a vývojáři her toho hojně využívají. Naopak Displacement Mapping je specifikací Shader Modelu 3.0 a protože ho podporuje jen série GeForce 6, nebude zatím v hrách uveden.
Zdroje: Delphi3D, Tweak3D, 3DConcept
O Displacement Mappingu se chci zmínit jen okrajově, protože se jedná o složitější techniku a pro dnešek myslím, že bylo technologických údajů až příliš. Jak jsme se dozvěděli výše, Bump Mapping zakřivení povrchu pouze simuluje, což má nevýhodu v tom, že silueta objektu a stíny jím vrhané jsou stále jen obrazem původního objektu. Tento problém řeší právě Displacement Mapping, který pomocí textury dokáže členitost povrchu přímo vytvořit.
Stručně řečeno - do frame bufferu se nahraje textura, která obsahuje výškovou mapu. Tato mapa je dále zpracována a ve vertex shaderu upravuje geometrickou podrobnost daného objektu. Velká výhoda tkví v tom, že se povrch modeluje pomocí jednoduché 8- nebo 16-bitové textury a nemusí se nahrávat souřadnice všech vrcholů. Dokonce lze celý objekt vymodelovat pomocí Displacement Mappingu.
Obr. 14 - Možnosti Displacement Mappingu jsou větší než u BM
Současné Radeony a Matrox Parhelia zatím používali jen virtuální displacement mapping, který byl zpracováván ve více průbězích. Pro skutečný DM je totiž potřeba plná podpora Shader Modelu 3.0, který umožňuje nahrávání textur z frame bufferu přímo do vertex shaderu. To dokáže rodina GeForce 6, která je na Displacement Mapping již připravena. Podrobnější popis této technologie Vám přineseme opět příště.
Závěr
Je evidentní, že přínos Bump Mappingu je velký. Metody, které se používaly dříve, nejsou příliš efektivní a daly by se nazvat spíše jako falešný BM. Tedy v případě, že Bump Mappingem nazýváme techniky spojené s modulací normálových vektorů, které se následně používají ke Gouraudovu nebo Phongovu stínování. Emboss a Environment-mapped BM totiž používají pouze osvětlovací mapy, které jsou naprosto nezávislé na zdrojích světla ve scéně. Přesto je konkrétně EMBM velmi platný, protože dokáže simulovat i odrazy na vlnící se vodní hladině apod.
Skutečný Bump Mapping je až normálové mapování, které pomocí 24-bitové normálové mapy určuje nové směrnice pro každý texel (na per-pixel úrovni). Proto tato technika umožňuje širokou škálu efektů a v kombinaci s pixel shadery dává programátorům obrovskou volnost. Normálové mapování ale u současných GPU výrazně postihuje výkon GPU, protože zdvojnásobuje počet potřebných textur. Navíc neovlivňuje siluety a stíny, což je až úkol Displacement Mappingu.
Emboss, Environment-mapped a Normal (DOT3) Bump Mapping podporují hardwarově všechny moderní GPU a vývojáři her toho hojně využívají. Naopak Displacement Mapping je specifikací Shader Modelu 3.0 a protože ho podporuje jen série GeForce 6, nebude zatím v hrách uveden.
Zdroje: Delphi3D, Tweak3D, 3DConcept