Diit.cz - Novinky a informace o hardware, software a internetu

Shader Model 5.0, Tesselace, Hull a Domain Shader

ATI uvedla Radeony HD 5800 - HD 5870
Další významný okamžik na poli grafických procesorů je zde. Společnost AMD jako první uvádí na trh grafické karty DirectX 11 generace nesoucí nové GPU vzniklé evolučním vývojem z předchozí DirectX 10.1 generace, avšak kromě technologií navíc obohacené na celkově dvojnásobné množství stream procesorů, texturovacích a ROP jednotek a vyráběné nejpokročilejším 40nm procesem. Pojďme se tedy společně na novinky „pětitisící“ generace Radeonů podívat podrobněji.

Ještě jsme nenapsali, že, zcela pochopitelně, Radeony HD 5800 podporují Shader Model 5.0, který přináší několik novinek (SV_Coverage, Flexible Gather, Coarse Partial Derivatives, Type Conversion Instructions, Bit Manipulation Instructions). Jinak AMD pochopitelně vidí využití nového GPU i ve hrách pro věci jako zpracování a filtrování obrazu, Order Independent Transparency (OIT - efektivní pro věci jako kouř, oheň, vlasy, vodu, sklo), renderování stínů, fyziku, umělou inteligenci i raytracing, pár z těchto věcí v minulosti prezentovali.

Ještě v této souvislosti připomeňme DirectX 11 tesselaci programovatelnou skrze dva nové typy shaderů: hull a domain shadery. Díky nim je přístupná řada (staro)nových implementací jako Catmull-Clark Subdivison, Bezier Patches, N-patches, Displacement Mapping, Adaptive & Continuous Tessellation (Dynamic Level of Detail). Celkově se tak v rámci tesselace můžeme dočkat (záleží na praktických implementacích v herních engine) více polygonů, detailnějších postav, šatů či terénu.

DirectX 11 pipeline

Každopádně protože už v tom možná mohou mnozí mít chaos, podívejme se na celou Direct3D 11 renderovací pipeline na schématu. Tesselace, resp. oba nové typy shaderů pochopitelně přicházejí na řadu hned po vertex shaderech. Zelené čteverečky, tedy oba shadery, jsou plně programovatlené, žluté, tedy tesselátor, je pouze konfigurovatelný a modré jsou (zpravidla?) implementovány jako pevně daná funkcionalita v GPU.

Hull shader má na starosti dvě hlavní věci: (volitelně) konvertovat kontrolní body (které dostává z vertex shaderu) z jedné báze do jiné (například pomocí aproximací Catmull-Clark Subdivision Surfaces (letitý efektivní a rychlý standard) s „Bicubic Patches“ - ty jsou v DirectX 11 novým typem primitiv). Kontrolní body jsou posílány přímo do domain shaderu, obcházejí tedy tesselátor.

Druhou zodpovědností hull shaderu je spočítání vhodných tesselačních faktorů, které jsou poté předány tesselátoru. To se používá pro adaptivní tesselaci, která je tím, co realizuje průběžnou korekci LOD z pohledu postavy ve hře. Tesselační faktory jsou specifické pro každou „hranu patche“, a to v rozsahu 2 až 64, což znamená, že každou hranu lze rozdělit na nejméně dvě, resp. nejvíce 64 trojůhelníkovité nebo čtvercové „patche“.

Než se podíváme na domain shader, ještě pár slov k tesselaci (kterou ATI implementovala poprvé v Radeonu 8500, tehdy ještě bez jakékoli odezvy). Tesselátor přebírá od hull shaderu ony faktory a „sudvididuje patche“ (tedy rozsekává je) na tří a čtyř uhelníková primitiva. Tesselátor pochopitelně nemá přístup ke kontrolním bodům, dělá pouze hrubou mechaickou práci, přemýšlí za něj hull shader, který o tesselaci rozhoduje právě volbou faktorů, další částí je nastavení konfigurace tesselátoru (opět je mu dána zvenčí). Kažopádně vertexy vzniklé tesselací odcházejí z tesselátoru do domain shaderu.

Ten pracuje na parametrových koordinátech „patchů“, pro každý vertex odděleně (i když může přistupovat i k transformovaným kontrolním bodům pro celou „patch“). Zpracovaná data z domain shaderu, tedy vertexy s údaji o pozici a koordinátech textur atd., poté putují do již známého geometry shaderu.

A poznámka na závěr: Microsoft sice implemetoval Catmull-Clark subdivision surfaces, ale implementovat lze i jiné algoritmy a postupy.

David "David Ježek" Ježek

Bývalý zdejší redaktor (2005-2017), nyní diskusní rejpal.

více článků, blogů a informací o autorovi

Diskuse ke článku AMD uvádí Radeony HD 5800

Středa, 15 Duben 2020 - 01:16 | ian sedmik | nalezena bleška: v odstavci SIMD engine má být v...
Úterý, 29 Září 2009 - 12:05 | Anonym | To Xspy: funkční přepínání mezi dedikovanou a...
Čtvrtek, 24 Září 2009 - 15:34 | DRK | Tak NB s HD4850 C2Q a 4GB pameti mi v nejvetsi...
Čtvrtek, 24 Září 2009 - 11:21 | DTS maniac | Halik: vsadím se, že kdyby to bylo 10-12W, tak...
Čtvrtek, 24 Září 2009 - 09:50 | Benjamin | ukulele: Uz ne, vsechny (tri) karty 5kove rady...
Čtvrtek, 24 Září 2009 - 07:54 | Anonym | 27W je stále moc. Kdyby to bylo 10-12W, tak se...
Čtvrtek, 24 Září 2009 - 00:15 | Jan Ukulele | Tak koukám že v CZC je od včerejška skladem Asus...
Středa, 23 Září 2009 - 22:08 | Xspy | 27W jsou minimálně tři čtvrtiny spotřeby...
Středa, 23 Září 2009 - 19:24 | David Ježek | ach ty noční hodiny, opraveno.
Středa, 23 Září 2009 - 18:52 | MrHenky | drk22: A nie len tam...

Zobrazit diskusi