Hlavní stránka Hardware Grafické karty Polopatě - rendering 3D scény (a jak to přibližně funguje)
Polopatě - rendering 3D scény (a jak to přibližně funguje)
autor: Kwolek Jirka , publikováno 30.4.2007
Polopatě - rendering 3D scény (a jak to přibližně funguje)

Pokud Vám z Geometry, Pixel, Vertex shaderů, textur a jednotek ROP jde hlava kolem, nezoufejte, v následujícím bloku se pokusím (s pomocí jednoho automobilového příkladu) přiblížit, jak funguje moderní grafická karta (navíc DirectX 10).


Pixel shadery, zjednodušeně řečeno, pokrývají "kostru" našeho virtuálního auta odpovídajícími materiály - včetně stanovení vlastností těchto materiálů (jako jsou druhy textur a jejich umístění, míra průhlednosti, použité efekty...).

Polopatě - rendering 3D scény (a jak to přibližně funguje)

Pixel Shadery jsou vyvolávané předcházející fázi rasterizace, aby vypočítaly hodnotu každého elementárního bodu obrazu (pixelu) všech dále zpracovávaných elementárních plošek. Pixel shadery ovládají bohatý repertoár stínovacích funkcí (Per Pixel Lighting) a různých "post-processing" efektů.

Pixel shader je program, který podle zadaného "receptu" kombinuje vstupní konstanty, textury, interpolované nebo přímé vertexové hodnoty (bere v úvahu umístění, směr, osvětlení, barvu...) a další data za účelem získání konečné hodnoty každého pixelu každé elementární plošky (výpočet pro daný pixel probíhat v několika "kolech"). Výsledkem práce Pixel shaderů jsou "plně kvalifikované" pixely s komponentními údaji (jedním z těchto údajů může být například průhlednost - jinak bychom nemohli vytvářet mlhu oheň ani sklo).

Pixel shadery jsou dnes tak natolik pokročilé, že dokáží vytvářet celou řadu efektů které zle "nanést" na každou elementární plošku. NVIDIA v jednom známém demu předváděla, jak je možné pomocí pixel shaderů (ovládaných posuvníkem) plynule měnit "stáří" auta - přičemž výchozí geometrický model zůstával stále stejný.

Polopatě - rendering 3D scény (a jak to přibližně funguje)

Další častou aplikaci Pixel shaderů je tzv. per-pixel displacement mapping, takové zpracování pixelů v ploše, které (jinak ploché) textuře poskytují určitou 3D strukturu povrchu (tento proces spočívá ve spojení původní textury s dodatečnou "výškovou texturou" která určuje jak výšku každého bodu textury).

Displacement mapping - dvě cesty

Vše záleží na měřítku nerovností - zatímco vlny v oceánu se vytvářejí geometrickým způsobem - tzn. ve Vertex Shaderech, mapování struktury povrchu (np. silnice nebo zdí) je dnes s důvěrou předáváno Pixel Shaderům.

Níže vidíte dva typické příklady per-pixelového mapování struktury povrchu:

 - mapování detailů zdí a nerovnosti prostředí:

Polopatě - rendering 3D scény (a jak to přibližně funguje)
Všimněte si že levá hrana zdi v ohybu je zcela rovná,
per-pixel mapování probíhá jen v rámci dané textury!

- nebo jemných detailů postav a prostředí (v příkladu níže - obličej a detaily brnění), které pak není třeba vytvářet na úrovni geometrie:

Polopatě - rendering 3D scény (a jak to přibližně funguje)
Quake 4 používá "displacement mapping" jako svůj základní stavební prvek...

Pro současnou a nejbližší generaci 3D her je to právě výkon Pixel Shaderů, tím rozhodujícím prvkem ovlivňujícím celkovou "svižnost" 3D renderingu. Bez práce Pixel Shaderů by byl voják v Quake 4 nepříliš pohlednou "3D loutkou".



 
Komentáře naleznete na konci poslední kapitoly.
797 čtenářů navrhlo autorovi prémii: 391.3Kč Prémie tohoto článku jsou již uzavřené, děkujeme za váš zájem.
Tento web používá k poskytování služeb soubory cookie.