DirectX 11 - seznámení s budoucností
16.2.2009, Petr Štefek, recenze
V dnešním článku nahlédneme pod pokličku budoucího rozhraní DirectX 11, které je do značné míry vskutku revolučním API, jež bude zajímavé jak pro vývojáře, tak pro nás uživatele. Blýská se nám tedy na lepší časy?
Kapitoly článku:
Tesselátor nemůžeme v žádném případě považovat za převratnou novinku, která k nám příjde spolu s rozhraním DirectX 11 úplně poprvé. ATI (nyní pod AMD) má ve svých grafických jádrech tesselátor již od relativně revolučního grafického jádra R600, které svou vyspělostí předběhlo dobu a to se mu také stalo osudným. Další grafická jádra řad R600/700 mají ovšem tuto jednotku také, ale nejsou kompatibilní s rozhraním DirectX a její využití je poněkud problematické s ohledem na to, že by vývojáři museli psát speciální funkce pouze pro čipy ATI ne starší než R600, a to, jak uznáte sami, není vzhledem k jejich tržnímu podílu možné a efektivní s ohledem na náklady. DirectX 11 obsahuje v případě specifikace tesselátoru dvě další úrovně pipeline, kde první je tzv. Hull Shader (HS) a tzv. Domain Shader (DS). Funkci těchto úrovní si osvětlíme později.
Jaká je vlastně primární funkce tesselátoru? V zásadě se jedná o rozdělení trojúhelníků na menší části neboli modifikování polygonální sítě podle potřeby programátora. Z relativně jednoduchého modelu, tak lze vytvořit komplexnější model, který více odpovídá realitě. Například můžete vzít objekt jako je kostka a přetvořit jej v kouli v s velmi malým dopadem na velikost (dat), kvalitu a výkon.
Tajemný Hull Shader (HS) má na starosti zpracování kontrolu a zpracování dat (ploch) pro tesselátor a jeho konfiguraci. Plošky vytvořené HS definují oblasti objektu, které budou tesselovány a následně HS využívá kontrolních bodů k určení toho, jak správně nastavit tesselátor a následně odeslat data do Domain Shaderu (DS).
Tesselování probíhá pro každou danou plošku zvlášť a body na této plošce, které jsou základem pro vznik nových trojúhelníků, jsou odeslány do Domain Shaderu, kde je následně proces tesselace dokončen. Pro funkci HS musí programátor zvlášť napsat program, který určí, jak bude daný objekt modifikován. Naopak pro TS není třeba psát žádný další program, neboť funguje pouze na principu vstupních parametrů, které dále procesuje.
Jak už bylo řečeno výše, tak Domain Shader (DS) body připravené HS upraví do formy použitelné pro geometrii upraveného objektu a případně aplikované displacement mapy. Výstupem DS jsou vertexová data. Nové vrcholy mohou být dále procesovány Geometry Shaderem, který je může dále odeslat do Vertex Shaderu. Pravděpodobně nebudeme v praxi vídat situace, kdy by takto data byla odeslána znova do VS/GS, ale budou ihned pasterizována (procesována Pixel Shaderem).
Tajemný Hull Shader (HS) má na starosti zpracování kontrolu a zpracování dat (ploch) pro tesselátor a jeho konfiguraci. Plošky vytvořené HS definují oblasti objektu, které budou tesselovány a následně HS využívá kontrolních bodů k určení toho, jak správně nastavit tesselátor a následně odeslat data do Domain Shaderu (DS).
Tesselování probíhá pro každou danou plošku zvlášť a body na této plošce, které jsou základem pro vznik nových trojúhelníků, jsou odeslány do Domain Shaderu, kde je následně proces tesselace dokončen. Pro funkci HS musí programátor zvlášť napsat program, který určí, jak bude daný objekt modifikován. Naopak pro TS není třeba psát žádný další program, neboť funguje pouze na principu vstupních parametrů, které dále procesuje.