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:
Emboss Bump Mapping
Nejméně efektivní metodou Bump Mappingu je tzv. Emboss (nebo Embossing) Bump Mapping. Jeho základem je také výšková mapa, ale celkově se od ostatních technik velmi liší. Emboss BM je velice jednoduché implementovat a lze ho provozovat prakticky na libovolném 3D akcelerátoru. Ovšem jde spíše o pseudo Bump Mapping, protože nepracuje s normálami, tedy ani přímo s Gouradovým stínováním.
Emboss BM používá dvě různé metody, z čehož jedna je spíše hudbou let minulých. Dříve fungovala tato metoda na principu jedné výškové textury, která byla posunuta o určitou vzdálenost ve směru osvětlení a poté se původní a posunutá textura od sebe odečetly. Takto vznikla bump mapa, která aplikovaná na původní texturu vytvořila dojem prostoru.
Obr. 3 - Původní přístup k Emboss Bump Mappingu
Tato technika pracuje ve třech krocích (posunutí, odečtení, aplikování) a nemá žádné zvláštní požadavky na HW. Ovšem nevýhod, které z této techniky plynou, je několik. Za prvé nemůžete vytvořit jakýkoliv povrch chcete, ale jste vázáni na směr osvětlení a daný posun. Pokud by bylo třeba vytvořit složitější vzor, muselo by se použít několik map a více průběhů. Proto je efekt této metody velmi omezen. Dále dochází k chybám v případě velkého zakřivení povrchu, protože jak můžete vidět, původní Emboss BM se hodí převážně na rovné plochy. Navíc se počítá s globálním osvětlením, neboť v případě směrového světla (obzvláště nízko nad povrchem) je nejlepší používat k osvětlení normály. A tak dále, a tak dále…
Současný Emboss Bump Mapping se trochu odlišuje, ale přesto je v základě stejný, a proto si ponechává i nevýhody. Výšková mapa se upraví na dvě nové textury - jednu s poloviční intenzitou a jednu invertovanou s poloviční intenzitou. Tyto se opět ve směru osvětlení navzájem posunou a v poslední fázi se zkombinují s původní texturou, na kterou je aplikováno osvětlení.
Obr. 4 - Současná technika Emboss Bump Mappingu
Efekt je o něco lepší než u původního přístupu, ale řada problémů zůstala. Z dalších jmenujme např. případ, kdy je vzájemný posun obou textur malý, a proto je výsledná výšková mapa výrazně dotčena následnou filtrací (s bump mapou se zachází stejně jako s obyčejnou texturou). To může vést k následnému snížení kvality scény. Emboss Bump Mapping je také velice nevhodný pro pohyblivé scény.
Emboss BM lze také nahradit alpha-blendingem, ačkoliv tato metoda není úplně účinná. V praxi to funguje tak, že původní textura je transformována na černobílou a posunuta ve směru osvětlení. Dále je odečtena od původní textury a posunuta zpět. V poslední fázi dochází právě k alpha-blendingu (prolnutí). Nevýhodou je, že se takto posouvá celá scéna, tedy včetně hran polygonů. Proto vznikají artefakty, dvojité hrany apod.
Abychom se vyhnuli všem nepříjemným dopadům Emboss Bump Mappingu, máme zde ale jiné techniky.
Nejméně efektivní metodou Bump Mappingu je tzv. Emboss (nebo Embossing) Bump Mapping. Jeho základem je také výšková mapa, ale celkově se od ostatních technik velmi liší. Emboss BM je velice jednoduché implementovat a lze ho provozovat prakticky na libovolném 3D akcelerátoru. Ovšem jde spíše o pseudo Bump Mapping, protože nepracuje s normálami, tedy ani přímo s Gouradovým stínováním.
Emboss BM používá dvě různé metody, z čehož jedna je spíše hudbou let minulých. Dříve fungovala tato metoda na principu jedné výškové textury, která byla posunuta o určitou vzdálenost ve směru osvětlení a poté se původní a posunutá textura od sebe odečetly. Takto vznikla bump mapa, která aplikovaná na původní texturu vytvořila dojem prostoru.
Obr. 3 - Původní přístup k Emboss Bump Mappingu
Tato technika pracuje ve třech krocích (posunutí, odečtení, aplikování) a nemá žádné zvláštní požadavky na HW. Ovšem nevýhod, které z této techniky plynou, je několik. Za prvé nemůžete vytvořit jakýkoliv povrch chcete, ale jste vázáni na směr osvětlení a daný posun. Pokud by bylo třeba vytvořit složitější vzor, muselo by se použít několik map a více průběhů. Proto je efekt této metody velmi omezen. Dále dochází k chybám v případě velkého zakřivení povrchu, protože jak můžete vidět, původní Emboss BM se hodí převážně na rovné plochy. Navíc se počítá s globálním osvětlením, neboť v případě směrového světla (obzvláště nízko nad povrchem) je nejlepší používat k osvětlení normály. A tak dále, a tak dále…
Současný Emboss Bump Mapping se trochu odlišuje, ale přesto je v základě stejný, a proto si ponechává i nevýhody. Výšková mapa se upraví na dvě nové textury - jednu s poloviční intenzitou a jednu invertovanou s poloviční intenzitou. Tyto se opět ve směru osvětlení navzájem posunou a v poslední fázi se zkombinují s původní texturou, na kterou je aplikováno osvětlení.
Obr. 4 - Současná technika Emboss Bump Mappingu
Efekt je o něco lepší než u původního přístupu, ale řada problémů zůstala. Z dalších jmenujme např. případ, kdy je vzájemný posun obou textur malý, a proto je výsledná výšková mapa výrazně dotčena následnou filtrací (s bump mapou se zachází stejně jako s obyčejnou texturou). To může vést k následnému snížení kvality scény. Emboss Bump Mapping je také velice nevhodný pro pohyblivé scény.
Emboss BM lze také nahradit alpha-blendingem, ačkoliv tato metoda není úplně účinná. V praxi to funguje tak, že původní textura je transformována na černobílou a posunuta ve směru osvětlení. Dále je odečtena od původní textury a posunuta zpět. V poslední fázi dochází právě k alpha-blendingu (prolnutí). Nevýhodou je, že se takto posouvá celá scéna, tedy včetně hran polygonů. Proto vznikají artefakty, dvojité hrany apod.
Abychom se vyhnuli všem nepříjemným dopadům Emboss Bump Mappingu, máme zde ale jiné techniky.