Radeon HD 5800 (1/2) - představení možností hardware
29.9.2009, Petr Štefek, recenze
AMD vydalo grafickou kartu Radeon HD 5870 postavenou na nové architektuře, která je prvním zástupcem hardware s podporou DirectX 11 a také velkým výkonovým skokem kupředu. Podívejme se, co vše si pod čepicí tato novinka schovává. Co nám nabídne dnes a co nás s ní čeká v budoucnu.
Kapitoly článku:
AMD má nyní v rukách první DirectX 11 hardware a technologický náskok. To se stalo naposledy při uvedení Radeonu 9700 Pro, který technologicky i výkonnostně překonával tehdejší řadu GeForce 4000. To ale bylo v dobách DirectX 9 a od té doby se stav poněkud obrátil a Nvidia hrála prim. Nyní má možnost AMD s ATI vrátit úder v několikaměsíčním náskoku před konkurencí. Ale k čemu je nám vlastně DirectX 11 dobrý?
Když jsme předčasem psali o možnostech nového rozhraní DirectX 11 od společnosti Microsoft, bylo řečeno, že nové API je evolucí stávajících DirectX 10, které tvoří jakousi podmnožinu tohoto rozhraní. Programátoři tedy nemusí nijak měnit své uvažování a rozpracované projekty, ale mohou vzít do úvahy nové skutečnosti, které přináší DirectX 11. To může v praxi velmi dobře znamenat, že stávající hry a ty připravované mohou dostat velmi jednoduše patch DirectX 11, který dovolí využít nový hardware. Direct3D 11 pipeline je oproti minulé verzi obohacena o teselaci a tzv. "Computer Shader". V praxi to znamená, že proces teselace se skládá ze tří různých částí (Hull Shader, Tesselator a Domani Shader) a s tím vším je spojený Computer Shader.
Jaká je vlastně primární funkce teselace? V zásadě se jedná o rozdělení trojúhelníků na menší části, nebo-li 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 s velmi malým dopadem na velikost (dat), vizuální kvalitu a výkon.
(1) Hull Shader (HS) má na starosti kontrolu zpracování dat (ploch) pro (2) Tesselator a jeho konfiguraci. Plošky vytvořené HS definují oblasti objektu, které budou teselovány a následně HS využívá kontrolních bodů k určení toho, jak správně nastavit Tesselator a pak odeslat data do (3) Domain Shaderu (DS).
Teselová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 teselace 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 zpracovává.
Jak už bylo řečeno výše, 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 znovu do VS/GS, ale budou hned posterizována (procesována Pixel Shaderem).
Tesselator 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 mělo ve svých grafických jádrech funkci hardwarové teselace již od relativně revolučního grafického jádra R600, které svou vyspělostí předběhlo dobu a to se mu také bohužel 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 Computer Shader vývojářům do značné míry pomůže překonat problém v práci s datovými strukturami a vykonávání obecného kódu. Stejně jako další plně programovatelné úrovně DirectX 10 a DirectX 11 pipeline, bude mít k dispozici jasně dané množství shader procesorů.
Možnosti, které spolu s výpočetním shaderem přícházejí, jsou téměř nekonečné, ale v naprosté většině případů pomohou vývojářům udělat některé speciální efekty a techniky, které nejsou možné udělat za pomoci klasického pixel shaderu. Příkladem těchto "hi-tech" vymožeností může být tzv. A-Buffer pro superkvalitní vyhlazování hran objektů nebo pokročilou průhlednost objektů, dále mohou využít například pokročilý deferred shading (stínování), pokročilé post-processing efekty a mnoho dalších technik.
Příklad Order Independent Transparency
Jednou takovou technikou, která je v současnosti s Computer Shaderem prezentována nejvíce, je tzv. Order Independent Transparency. Zjednodušeně to znamená, že transparentní textury mohou mít různý stupeň transparentnosti. To bylo možné již v minulosti za použití pixel shaderu, ale díky možnostem nového Computer Shaderu je vše výrazně rychlejší.
Dalších minoritních vylepšení je spousta a můžeme jmenovat Depth of Field (změna hloubky ostrosti ), Contact Hardened Shadows (mírně realističtější stíny) nebo High-Definition Ambient Occlusion (opět další vylepšení světelného modelu pro větší realitu prostředí). Posledním, co stojí za pozornost, je možnost zapnutí super-sampling anti-aliasingu, který doposud podporovaly jen starší karty ATI. Bohužel tento typ vyhlazování je sice tím nejkvalitnějším, nicméně je také nejvíce náročným, a tak není překvapením, že výkon je penalizován téměř 50 %.
Když jsme předčasem psali o možnostech nového rozhraní DirectX 11 od společnosti Microsoft, bylo řečeno, že nové API je evolucí stávajících DirectX 10, které tvoří jakousi podmnožinu tohoto rozhraní. Programátoři tedy nemusí nijak měnit své uvažování a rozpracované projekty, ale mohou vzít do úvahy nové skutečnosti, které přináší DirectX 11. To může v praxi velmi dobře znamenat, že stávající hry a ty připravované mohou dostat velmi jednoduše patch DirectX 11, který dovolí využít nový hardware. Direct3D 11 pipeline je oproti minulé verzi obohacena o teselaci a tzv. "Computer Shader". V praxi to znamená, že proces teselace se skládá ze tří různých částí (Hull Shader, Tesselator a Domani Shader) a s tím vším je spojený Computer Shader.
Tesselator
Jaká je vlastně primární funkce teselace? V zásadě se jedná o rozdělení trojúhelníků na menší části, nebo-li 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 s velmi malým dopadem na velikost (dat), vizuální kvalitu a výkon.
(1) Hull Shader (HS) má na starosti kontrolu zpracování dat (ploch) pro (2) Tesselator a jeho konfiguraci. Plošky vytvořené HS definují oblasti objektu, které budou teselovány a následně HS využívá kontrolních bodů k určení toho, jak správně nastavit Tesselator a pak odeslat data do (3) Domain Shaderu (DS).
Teselová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 teselace 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 zpracovává.
Jak už bylo řečeno výše, 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 znovu do VS/GS, ale budou hned posterizována (procesována Pixel Shaderem).
Tesselator 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 mělo ve svých grafických jádrech funkci hardwarové teselace již od relativně revolučního grafického jádra R600, které svou vyspělostí předběhlo dobu a to se mu také bohužel 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.
Computer Shader
DirectX 11 Computer Shader vývojářům do značné míry pomůže překonat problém v práci s datovými strukturami a vykonávání obecného kódu. Stejně jako další plně programovatelné úrovně DirectX 10 a DirectX 11 pipeline, bude mít k dispozici jasně dané množství shader procesorů.
Možnosti, které spolu s výpočetním shaderem přícházejí, jsou téměř nekonečné, ale v naprosté většině případů pomohou vývojářům udělat některé speciální efekty a techniky, které nejsou možné udělat za pomoci klasického pixel shaderu. Příkladem těchto "hi-tech" vymožeností může být tzv. A-Buffer pro superkvalitní vyhlazování hran objektů nebo pokročilou průhlednost objektů, dále mohou využít například pokročilý deferred shading (stínování), pokročilé post-processing efekty a mnoho dalších technik.
Příklad Order Independent Transparency
Jednou takovou technikou, která je v současnosti s Computer Shaderem prezentována nejvíce, je tzv. Order Independent Transparency. Zjednodušeně to znamená, že transparentní textury mohou mít různý stupeň transparentnosti. To bylo možné již v minulosti za použití pixel shaderu, ale díky možnostem nového Computer Shaderu je vše výrazně rychlejší.
Dalších minoritních vylepšení je spousta a můžeme jmenovat Depth of Field (změna hloubky ostrosti ), Contact Hardened Shadows (mírně realističtější stíny) nebo High-Definition Ambient Occlusion (opět další vylepšení světelného modelu pro větší realitu prostředí). Posledním, co stojí za pozornost, je možnost zapnutí super-sampling anti-aliasingu, který doposud podporovaly jen starší karty ATI. Bohužel tento typ vyhlazování je sice tím nejkvalitnějším, nicméně je také nejvíce náročným, a tak není překvapením, že výkon je penalizován téměř 50 %.