DirectX 12 Multi-engine: asynchronní shadery v praxi
20.11.2015, Pavel Šantrůček, recenze
Co jsou to asynchronní shadery a k čemu vlastně slouží? Jak zapadají do kontextu DirectX 12? Které grafické karty je podporují, které zase ne a proč? V dnešním článku odpovíme právě na takovéto otázky.
Kapitoly článku:
Ashes of the Singularity (v 0.49)
Počítačová hra, respektive její pre-beta verze, je vyvíjena přímo pro DirectX 12 a snaha jejich autorů je, co nejvíce vytěžit z možností tohoto nového 3D API. Asynchronní shadery jsou zde využívány opravdu hojně, kde podle slov vývojářů až 20 % všech volání spadá právě na shadery výpočetní (ve finální verzi to má ale být až 50 %).
Pro naše testy máme k dispozici jednak původní verzi této hry (v 0.49), která spadá právě do období, ve kterém se záležitosti kolem asynchronních shaderů dostaly na veřejnost, ale také máme k dispozici jednu z posledních verzí (v 0.60), ve které vývojáři Oxide reagovali na požadavky společnosti Nvidia a engine této hry upravili.
Začali jsme tedy popořadě a otestovali nejdříve verzi původní (problémovou). Jediný rozdíl mezi dobovým měřením a tím naším je v tom, že my jsme k těmto testům využili poslední verze ovladačů grafických karet. A jak naše testy dopadly?
GPUView AMD
GPUView Nvidia
Nástroj GPUView ukazuje přesně to, co jsme viděli také u MDolenc testu. Zatímco u Radeonu R9 290X jsou využity obě hardwareové fronty (3D i COMPUTE_0), u GTX 980 i přes využití dvou rozdílných kontextů (3D a Compute), všechny příkazy nakonec končí v jediné hardwareové frontě 3D.
Ashes of the Singularity 1920x1080 | MSAAx4 | HIGH | |||||
GPU | GPU clock | VRAM clock | Driver | FPS | % |
Gigabyte GTX 980 4GD | 1227 MHz | 7012 MHz | 358.91 | 39,4 | 100 % |
Sapphire R9 290X TRI-X 4GB | 1040 MHz | 5200 MHz | 15.11.1 | 39,0 | 99 % |
Z výsledků vyplývá, že i přes poměrně hojné využití asynchronních shaderů ve hře se žádná tragédie na grafických kartách rodiny Maxwell nekoná! Jistě, rozdíl GTX 980 vůči postaršímu Radeonu R9 290X by měl být za normálních okolností asi vyšší, ale vzhledem ke stavu věcí je výsledek GTX 980 celkem solidní.
Příčinou je hra samotná. Na jednu stranu sice využívá asynchronní shadery, které by měly jasně favorizovat grafické karty AMD, na druhou stranu je však v této hře také opravdu masivní počet objektů ve scéně. A jak víme, příliš mnoho a malých trianglů ve scéně není to, co by grafické karty GCN zrovna milovaly.
Dalo by se tedy říci, že s největší pravděpodobností to, co grafická karta Radeon R9 290X získala na souběžném zpracování grafických a výpočetních úloh, ztratila na samotné grafické úloze.