polopate-rendering-3d-sceny-a-jak-to-priblizne-funguje
Hardware Článek Polopatě - rendering 3D scény (a jak to přibližně funguje)

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

Kwolek Jirka

Kwolek Jirka

30. 4. 2007 01:00 41

Seznam kapitol

1. 3D zobrazení nejsou žádná kouzla 2. (VS) Vertex Shader Stage 3. (GS) Geometry Shader Stage 4. Rasterizer Stage 5. (PS) Pixel-Shader Stage 6. (OM) Output-Merger Stage

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).

Reklama

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)
i Zdroj: PCTuning.cz

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)
i Zdroj: PCTuning.cz

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)
i Zdroj: PCTuning.cz


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)
i Zdroj: PCTuning.cz


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".

Předchozí
Další
Reklama
Reklama

Komentáře naleznete na konci poslední kapitoly.

Reklama
Reklama