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


V táto fázi by se v naši automobilové 3D dílně na rámu našeho připravovaného auta musely začít dít zajímavé věci. Roboti typu "Geometry Shader" by zde museli rám podle potřeby ještě upravovat - například vytvořit nové vertexy dodatečným ohnutím trubek, případně by části karosérie zcela zrušily.

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

3D zobrazení - Geometry Shader Stage

Poznámka: Geometry Shadery (GS) jsou novinkou rozhraní DirectX 10 (Shader Model 4.0) - a i když ze začátku nebudou tyto funkce příliš využívané, jedná se o novou funkci s největším potenciálem. A ještě jedna důležitá připomínka: nezapomeňte, že postupujeme grafickou pipeline postupně - nenechejte se zmást následujícími obrázky, které už zobrazují výsledný (tedy renderovaný) obraz. Geometry Shadery stále působí v rámci geometrické fáze a jejich výsledkem je soustava (i když np. desítek tisíc) vertexů!

Zatímco Vertex Shader má na výstupu vždy jeden jediný vertex, Geometry shader může tyto vertexy podle potřeby (tedy programově) generovat (Geometry Amplification) nebo zcela rušit. To je pro programátory toužící nahrazovat ruční práci chytře napsanými programy čirá rajská hudba.

Předpokládanými "velkými" budoucími aplikacemi Geometry Shadeů budou:

Částicové systémy

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

Pohyb fyzikálně věrného velkého počtu malých částic (kdy v příkladu níže voda dopadá na povrch a dále stéká, přičemž si vytváří cestičky podle povrchu) je ve hrách dnes obtížně realizovatelným úkolem.

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

V budoucnu geometry shader spočítá veškerou fyziku pohybu částic (vody, úlomků) a procesor bude mít čas věnovat se jiným úkolům.

Změna geometrie - teselace...

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

...a procedurální tvorba povrchu

Zde grafická karta nejen renderuje (zobrazuje) povrch, ale zároveň ho také vytváří, což také šetří čas procesoru. Jedná se o procedurální tvorbu založenou zčásti na náhodných datech, takže se povrch nikdy neopakuje.

Výpočetně náročné vytváření pohybující se kůže, vlasů nebo kožešiny čeká na budoucí hry a aplikace. Pomocí geometry shaderů bude možné také simulovat takový efekt jakým je zarůstání nebo porůstání hladkých ploch (porůstání vegetací, rezivění, bobtnání, vrásnění).

Instancing...

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

Úkolem instancingu je automaticky generovat / kopírovat prvky obrazu tak, aby se nimi programátor nemusel zabývat "ručně". Instancing je možný dnes a běžné se také používá na programové úrovni - například hra Far Cry například používá 4 typy trávy, 12 typů keřů a 8 typů stromů (pro stromy 500 až  1600 polygonů v instanci). Geometry shadery mohou celou záležitost posunout do jiné roviny.

Geometry shadery v nejbližší praxi

Ještě ale nejásejte - geometry shadery jsou velmi náročné na výpočetní výkon (+ náročné na přenos dat mezi pamětí a grafickým procesorem) - budou proto na začátku využívané ke zdánlivě jednoduchým věcem:

Motion Blur

Například pro generování rozmazaného obrysu rychle se pohybujících objektů (np. zde meče), kdy geometry shader vygeneruje ve směru pohybu nové "natažené" body a upraví průhlednost textur.

Polopatě - rendering 3D scény (a jak to přibližně funguje)
Korektní "Motion Blur" - nepohybující části jsou ostré

Geometricky korektní "Cube Mapping"

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

(SO) Stream Output

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

Důležitou novinkou rozhraní Direct3D 10 je tzv. "Stream output". V minulosti bylo do paměti grafické karty možné možné ukládat jen pixely - nyní je zde možné (s pomocí Geometry Shaderu) ukládat i geometrická data a následně je využívat a zpracovávat.

Co je důležité vědět: Vertex a dále i Geometry Shadery, přes všechny výše uvedené obrázky, působí v rámci geometrické fáze tvorby obrazu a jejich výsledkem je soustava (i když np. desítek tisíc) vertexů! Vertex Shadery jsou pro tvorbu obrazu nezbytné, ale jejich vstupem a výstupem je vždy jen jeden vertex. Geometry shadery mohou vertexy nebo soustavy vertexů rušit a modifikovat. Geometry shadery mají přístup pro ukládaní dat do paměti grafické karty - Stream Output.



 
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.