26. března 2010

Textury používané v herních enginech

Uvedu zde stručný popis hlavních "druhů" textur používaných v dnešních hrách. Článek je myšlen především jako vodítko pro začínající 3D grafiky. V dnešních herních enginech je již možné využít mnoho různých map diffuse složkou ovlivňující barvu předmětu počínaje a normal mapou pro hrbolatost povrchu konče.
Seznam textur, který tu uvedu rozhodně neberte jako konečný pro všechny enginy. Některé podporují třeba pouze diffuse a několik dalších, jiné dovolují vytvářet vlastní shadery buď kódem nebo pomocí vizuálních editorů. Tím dávají grafikům možnost používat textury pro nejrůznější účely včetně map pro deformaci animovaných materiálů.

Diffuse


Diffuse textura určuje základní barvu materiálu. Ještě v době DirectX 8 to byla díky pevné grafické pipeline jediná možnost úpravy materiálu modelu a grafik tedy musel všechny stíny a detaily přidat do této textury. Jenže stíny se v takovém případě neměnili s různým úhlem světelného zdroje.

Specular


Tento druh textury určuje barvu a sílu odlesků - tj. vlastně odrazů světelných zdrojů. Odlesky se mění podle úhlu kamery a světel a přidávají tedy objektu detail.

Specular power


Nastavuje ostrost odlesků, lépe to asi popíše ukázka - viz. obrázek.

Porovnání různých hodnot Specular power



Bump


Umožňuje vytvořit efekt hrbolatosti povrchu. Zcela bílé pixely se jeví jako nejvyšší bod a zcela černé naopak nejnižší bod povrchu. Ve hrách se používají většinou pouze v kombinaci s normal mapou pro vytvoření ještě lepšího efektu pomocí tzv. paralax mappingu. Ten využívá normal mapu a za pomoci bump mapy při malých úhlech kamery vzhledem k povrchu posunuje pixely směrem od kamery a vytváří tím efekt hloubky. Stále to ale neřeší problém na hranách objektů. Na obrys objektu totiž tyto efekty vliv nemají. Paralax mapping se používají hlavně pro povrchy jako kamenné stěny či cesty.

Normal


Tady je to trochu složitější.  Normal mapa vytváří efekt hrbolatosti. Její vytvoření ale není tak jednoduché, protože do jednotlivých kanálů R, G, B ukládá složky vektoru normály pixelu. Když tedy má vlastní normálu (vektor určující směr kolmý k povrchu) každý pixel a ne pouze každý polygon, je možné vytvořit mnohem menší detaily. Normal mapu lze tedy vytvořit třemi hlavními způsoby:

  1. Pomocí nějakého nástroje pro vytvoření z bump mapy. Např. filtr od n-vidie

  2. Exportem normal mapy z high-poly modelu na jeho low-poly herní verzi (model s normal mapou potom vypadá téměř jako původní, ale s nižším počtem polygonů)

  3. "Ručním" vytvořením v nějakém 2d editoru


Alpha


Definuje průhlednost či ořez materiálu. Černé pixely jsou zcela neviditelné, bílé neprůhledné. Stupně šedi vytváří částečnou průhlednost.

Emissive


Svítivost materiálu, černé pixely nemají žádný efekt, ostatní odstíny určují barvu a intenzitu svítivosti. V herním enginu potom může vytvářet "glow" efekt záře, čí dokonce osvětlovat scénu statickým osvětlením.

... a další textury specifické pro herní engine či shader

Žádné komentáře:

Okomentovat