Advanced Shader Delivery urychlilo spuštění Forza Horizon 6 z 90 na 4 sekundy
Od nástupu DirectX 8 využívají hry shadery, programy běžící na GPU, které zajišťují vykreslování obsahu. Postupem času narostl počet typů (krom Pixel Shader a Vertex Shader přibyl Domain Shader, Hull Shader, Geometry Shader, Compute Shader a tuna dalších pro ray-tracing, například Amplification Shader, Mesh Shader, Ray Generation Shader, Closest Hit Shader, Any Hit Shader, Miss Shader, Intersection Shader, Callable Shader…), samotná délka shaderů i počet jednotlivých shaderů na hru. Jde tedy o obrovský objem kódu, shaderů mohou být desítky tisíc na hru. Navíc si musíme uvědomit, že každá PC sestava je unikátní. Existuje nepřeberné množství kombinací GPU + ovladačů + softwarové konfigurace systému, takže do hry nelze zahrnout jeden konkrétní binární kód, který poběží na všech sestavách.
Tradičním řešením je kompilovat kód na koncové sestavě podle její konfigurace (GPU, ovladač, verze hry, DirectX…). To však postupem času způsobilo velmi pomalé nabíhání her v kombinaci s neplynulým chodem hry (shadery se podle potřeby dokompilovávají za běhu), což působí kolísavé zatížení CPU. Do cache se zkrátka nalijí jiná data, neboť jsou jádra zatížena zcela odlišným kódem a než je vše dokončeno, klesne výkon vláken zodpovědných za rendering.
| Řešením je nekompilovat shadery stále opakovaně, ale mít je ve zkompilované podobě někde uložené. Toto řešení je v případě AMD a Nvidie běžné od roku 2015, tedy přinejmenším 11 let. U Nvidie dokonce o něco déle, byť s určitými výhradami. Nvidia v tichosti implementovala tzv. shader disk cache již v souvislosti s ovladači řady 304 snad koncem roku 2012, ale to se týkalo pouze kombinace OpenGL a Linuxu. Asi v roce 2014 přišla podpora DirectX (11), ale teprve kolem roku 2020 vzniklo ovládací rozhraní. Do té doby šlo o uzavřenou interní záležitost, o které Nvidia příliš nemluvila. |
Původně se tedy situaci snažili řešit výhradně výrobci grafických karet. Postupem času však začal vznikat tlak na systémovější řešení na straně DirectX.
| S DirectX 12 přišla ještě podpora v rovině API, kdy situaci může řídit primárně hra prostřednictvím tzv. PSO cache. Cache na úrovni ovladačů nicméně může existovat rovněž. Právě moderní API (DirectX 12 a Vulkan) přinesla možnost tzv. externích předkompilovaných shaderů, kdy je nemusí hra kuchtit při prvním spuštění (které pak může být pomalé a cukavé), ale prostě se stáhnou / přesunou již hotové. V tomto ohledu nabízí nejkompletnější podporu AMD, která má otevřený přístup a nabízí širší kompatibilitu napříč platformami (emulátory, Linux / Mesa). Nvidia se do podpory sdílených binárek příliš nehrne, nabízí základní podporu v rámci Vulkan / DirectX 12, ale primárně využívá cache ovladače, což má za následek častější potřebu překompilování obsahu cache po aktualizacích her nebo ovladače (zřejmě tímto způsobem zahrnuje i vlastní optimalizace). |
Jenže ani Pipeline State Object (PSO) cache nebylo tak úplně komplexním řešením - v podstatě šlo o standardizovanou možnost uložit zkompilovaný kód na úrovni PC hráče. Pokračováním tohoto vývoje je nyní uvedená technologie Advanced Shader Delivery (ASD). Její podstatou je zkompilování mimo PC hráče a získání (stažení) zkompilovaného obsahu z cloudu. Tím lze eliminovat i potřebu kompilace při prvním spuštění hry a případnou rekompilaci při změně softwarové konfigurace (aktualizace hry, aktualizace ovladače, aktualizace DirectX a podobně). Díky ASD se v takové situaci může zkompilovaný kód stáhnout znovu.
Podpora ASD se pomalu dostává na svět, vyžaduje:
- Windows 11 24H2+
- kompatibilní ovladač
- hru podporující ASD
- DirectX 12 hry
- nebo platformu Xbox (aktuálně s Xbox Insider + Xbox Gaming Services 37.113.11003.0+)
AMD upozornila, že s Adrenalin Edition 26.5.2 již technologii podporuje a pro hru Forza Horizon 6 to znamená zkrácení spouštěcí doby z 90 sekund na 4 sekundy a omezení záškubů během hry. Zmíněný ovladač přináší ASD pro grafické karty s architekturou RDNA 3, RDNA 3.5 a RDNA 4.
Intel se zatím k podpoře této technologie nevyjádřil. Připomeňme, že teprve letos v březnu přišel Intel s prvotní podporou předkompilovaných shaderů pro generaci Battlemage. Alchemist není podporován vůbec a podle březnového vyjádření se to už nezmění.
Nvidia přislíbila podporu ASD v březnu, ale konkrétní seznam generací nebo architektur dosud zveřejněn nebyl. Za jistou můžeme považovat podporu GeForce RTX 5000, za vysoce pravděpodobnou GeForce RTX 4000 a vyloučit nelze ani starší hardware řady RTX.
via WCCFTech
Diskuse ke článku Advanced Shader Delivery urychlilo spuštění Forza Horizon 6 z 90 na 4 sekundy




















