Hlavní navigace

MS přidává do DirectX 12 technologii Variable Rate Shading. Umí ji Turing a Intel Gen11

20. 3. 2019

Sdílet

Technika Variable Rate nebo Adaptive Shading se vynořila jako jedno z architektonických zlepšení – nebo přesněji nových funkcí – architektury Nvidia Turing. Tato funkce umožňuje snížit kvalitu shaderů v části obrazu a počítat je například jen pro každý druhý nebo čtvrtý pixel. Hry by díky tomu mohly získat výkon navíc. To se vždy hodí a tento zlepšovák by se teď měl prosadit šířeji. Vyklube se z ní totiž standardní funkce DirectX 12, kterou by eventuálně měla podporovat také další GPU kromě Turingů od Nvidie.

 

Variable Rate Shading v DirectX 12

Tento týden u příležitosti GDC 2019 představil Microsoft Variable Rate Shading jako novou funkci grafického API DirectX 12. Kdy přesně se do něj tento update dostane, není jasné, ale nemělo by to asi trvat příliš dlouho. Na palubě jsou ale pro tuto změnu i velcí vývojáři her, například Activision, Ubisfot, Epic Games, Massive Entertainment, Io Interactive, zmíněn je i engine Unity.

Variable Rate Shading v rámci DirectX 12 bude umožňovat použití této výkon šetřící techniky několika různými způsoby. Vždy půjde o selektivní snížení „rozlišení“ shaderů (například výpočet efektu pro blok 2×2 pixelů místo jediného pixelu). Toto snížení kvality bude možné definovat 1) pro určitý konkrétní draw call; 2) v rámci jednoho draw callu pro jeho části podle masky („screenspace image“); 3) v rámci draw callu pro některé jeho primitivy. První případ, kde v jednom draw callu může být použita jenom jedna stejná úroveň kvality, se označuje jako Variable Rate Shading Tier 1. Oproti tomu druhé dvě granulárnější možnosti se označují jako Tier 2.

Microsoft DirectX12 Variable Rate Shading Tier1 Default side by side no labels Demo Variable Rate Shadingu (s použitím Tier 1) od Firaxis. VS je zapnuté na pravé polovině obrazu

Snížení kvality tam, kde se to snese

Podpora na úrovni Tier 1 se dá využít například pro vykreslení objektů ve velké dálce nebo na pozadí, objektů zakrytých poloprůhledným objektem (takže nebude vidět nižší úroveň detailů). V separátním draw callu se pak může popředí vykreslit s plnou kvalitou.

Microsoft DirectX12 Variable Rate Shading Tier2 Default side by side Variable Rate Shading s použitím Tier 2. VRS je zapnuté na pravé polovině obrazu

Pokud hardware podporuje Tier 2, pak je možné pokročilejší využití. Program například může vygenerovat masku hran a aplikovat plnou kvalitu podle ní, přičemž v plochých oblastech se kvalita může snížit. Také foveated rendering by mohl pracovat pomocí takovéto masky. Tato maska se označuje „screenscape image“ a něco podobného dělá Nvidia s Turingem, kde je obraz rozdělen na bloky a ona variabilní kvalita se mění podle klasifikace těchto bloků.

Microsoft DirectX12 Variable Rate Shading VRS Tier 2 ssimage Zde pravá část obrazu ukazuje masku Screenspace Image pro Variable Rate Shading

Variabilita třetího typu, kdy se kvalita mění pro jednotlivé primitivy (trojúhelníky modelu), se pak dá využít třeba pro snížení kvality u vzdálenějších objektů scény (Microsoft uvádí jako příklad využití Motion Blur efektu, kdy takové objekty stejně budou rozmázlé). Vývojáři nicméně nebudou omezeni striktně na výběr jedné z těchto technik, bude je možné i navzájem kombinovat. Jejich použitím by se dalo získat až kolem 15–20 % výkonu navíc, přičemž při správné aplikaci by neměla viditelně utrpět kvalita. Určité demo toho efektu už lze najít například ve hře Wolfenstein II: The New Colossus, byť tam to ještě není ve standardizované formě.

WT100

Microsoft DirectX12 Variable Rate Shading Intel VRS Screenshot Demo Unreal Engine 4 Sun Temple také demonstruje Variable Rate Shading. Tento screenshot má být z grafiky Intel Gen11

Které grafiky to budou umět?

Variable Rate Shading by měly nyní umět grafiky Turing, kde by podpora měla být na úrovni Tier 2. Nebudou ale dlouho samotné. Microsoft prozradil, že Tier 2 budou umět také GPU architektury Gen11, která by měl Intel uvést na trh letos integrované v 10nm procesorech Ice Lake, LakefieldElkhart Lake.

Microsoft DirectX12 Variable Rate Shading partneri Softwarová partneři, kteří počítají s podporou Variable Rate Shadingu nad DirectX 12

U grafik AMD Radeon není zatím podpora známa. Nevím, zda by nebylo možné zpětně podporovat Tier 1 (není to potvrzené a blog Microsoftu nic takového nezmiňuje, i když se tento názor zdá se tu a tam objevil). Podpora se ale zřejmě objeví v některé z budoucích architektur, dost možná už rovnou s Tier 2. AMD totiž tuto techniku popisuje v některých svých patentových přihláškách. A také obecně platí, že součásti DirectX typicky výrobci GPU vždy implementují, dříve nebo později. Nebylo by tedy nějak šokující, pokud by se Variable Rate Shading objevil v GPU Navi, čímž by se podpora této funkce dostala do nových generací všech tří hlavních výrobců.

Galerie: Variable Rate Shading v DirectX 12