Hirdetés

A Vulkan felé lépdel az Ubisoft

Elsődlegesen a Googla Stadia az oka ennek, amin pont ez az API érhető el.

Az Ubisoftról nem mondható el, hogy beleugrottak volna az explicit API-k érájába. Igen sokáig ragaszkodtak a DirectX 11-hez, a DirectX 12-höz pedig ritkán nyúltak. Persze utóbbi szempontból a Tom Clancy's The Division sorozatba tartozó, Snowdrop videojáték-motort használó két játék esetében ezek a leképezők jól sikerültek, de más címek esetében inkább a háttérben zajlottak a fejlesztések.


[+]

A Scimitar utódjának számító Anvil videojáték-motor, AnvilNext verzióinak legfrissebb fejlesztései például rendelkeztek DirectX 12-es leképezővel, de ezeket az Ubisoft nem szállította a végleges játékokba. Az Assassin's Creed Odyssey hozhatott volna ebből a szempontból áttörést, de időközben a kiadó a Google Stadia platformjának egyik támogatója lett, amelynek a Project Stream nevű előfutára pont az említett címmel tesztelte a rendszer működését. Ehhez az Ubisoftnak át kellett állnia Linuxra, illetve Vulkan API-ra, így a vezető szempontnak nem a DirectX 12 számított már, hanem a Khronos Group nyílt alternatívája, ugyanis ezzel több platform és operációs rendszer célozható egyszerre.

Az Ubisoft a GDC-n számolt be a portolás menetéről, amely állt a felhasznált middleware-ek és komponensek, Linux operációs rendszeren történő működésének kezeléséből, illetve a meglévő DirectX 12-es leképező alapján a Vulkan API támogatásából. Ezen három ember dolgozott nagyjából egy évet, és előnyt jelenthet a kiadó számára, hogy korán megismerkedhettek a Stadia működésével.


[+]

Jean-Noé Morissette, az Ubisoft Montreal programozója szerint a legnagyobb problémát a shaderek jelentették, amelyeket a vállalat HLSL-ben írt, és ezeket nehéz volt SPIR-V-re fordítani. Ezen ugyan a Google folyamatosan dolgozik, tehát a dxc fordítóval ma már nem olyan rossz a helyzet, de az Ubisoft számára régebben az volt, így gyakorlatilag összeraktak maguknak egy saját fordítóinfrastruktúrát, amit csak szimplán vkCompliernek neveztek el. Ez annyit csinált, hogy a HLSL kódokból DXBC bájtkódot generált a Microsoft FXC segítségével, amiből a HLSLcc-vel GLSL kód lett, majd ebből a GLSLangnak hála végre lehetett SPIR-V kódot generálni. Ez nagyjából működött, de még mindig kifejezetten sok munka volt a shaderekkel, így ma már jóval hatékonyabb a Google spiregg kódnevű dxc kiegészítését használni. Ez lényegesen kevesebb problémával működik, és komoly támogatás van mögötte.


[+]

A fejlesztőeszközök szempontjából az Ubisoft a RenderDoc, az AMD Radeon GPU Profiler, illetve nyilván a Vulkan validációs rétegeinek használatára szavazott. Az így elvégzett optimalizálások a Stadia platformon megjelennek. A Google rendszere egyébként magára a fejlesztésre is nagy hatással lehet, mivel a napi munkálatok rendkívül gyorsan tesztelhetővé vállnak. Gyakorlatilag pillanatokon belül elkészíthető az adott kódbázisból a futtatható verzió, ami óriási segítség, így a változások nagyon könnyen bemutathatók a gyakorlatban, elég csak az adott verzióhoz tartozó hiperlinket vinni a megbeszélésekre.

A PC-s portot is egyszerűsítheti a Google platformja. A Stadia lényegében csak a swapchainben különbözik, aminek nyilván van karbantartási vonzata, de elhanyagolható a teljes projekthez viszonyítva. Ergo a Vulkan leképező jelentős része megegyezik PC-n, illetve a Stadia rendszeren. Ez azért hasznos, mert így tesztelhetők a különböző meghajtóverziók is. Helyi szinten az AMD havonta többször frissít eszközillesztőt, míg a Stadia esetében ezek a fejlesztőkörnyezettel párhuzamosan jönnek, vagyis némileg ritkábban. Ez azért kellemes, mert így összehasonlítható a két környezet, így ha ugyanazzal a kódbázissal valami gond van az egyik alatt, akkor igen valószínű, hogy nem a program kódjában van a hiba. Ugyanez igaz a futtatási környezetekre is.

Maga a Vulkan API-ra való portolás egyébként relatíve kevés problémával volt megtűzdelve, persze a DirectX 12-höz képest vannak különbségek, így ezeket kezelni kellett, de a két API amúgy eléggé hasonlít egymásra. Az Ubisoft programozója beszámolt róla, hogy a tipikus nehézség az allokációra vonatkozó limit szokott lenni, ami lényegében a VRAM közvetlen menedzselhetőségéből ered. Egy jól megírt motor esetében azonban ez nem igazán probléma. A vállalat egyedül bizonyos debug módokban ütközött gondokba a konstanspufferekkel, de erre egyszerűen implementálták az AMD Vulkan Memory Allocatort, amivel működött minden. Ezután úgy döntöttek, hogy az utóbbi függvénykönyvtárat mindig működtetik, mivel a stúdió nem akarta ki-be kapcsolni a normál, illetve az egyes debug módok között, hiszen ez csak rontott volna a karbantarthatóságon.


[+]

Az Assassin's Creed Odyssey Project Streamhez készített Vulkan leképezője még nem végleges, így 30 fps-re volt limitálva a működése, holott a Google Stadia elméletben tud 60 fps-t is, de első körben a biztos működést választották a sebesség helyett. A tempó már csak azért sem volt igazán lényeges, mert a tesztre elkészült Vulkan port csak egyetlen parancslistából dolgozik, holott maga az API támogat többet. Az erre vonatkozó munka már nagyrészt kész van, tehát a Stadia startjára elérhető lehet a nagyobb képfrissítés is. Szintén folyamatban lévő optimalizálás még az AMD BAR0 memóriahalmazának használata. Ez talán kevésbé ismert, de az AMD explicit API-khoz írt platformabsztrakciós implementációja támogat egy olyan 256 MB-os memóriaterületet a GPU-hoz tartozó fedélzeti memóriában, amelyet a host processzor közvetlenül elérhet, illetve memóriakoherens formában kezelhet. Ez nem feltétlenül szokás kihasználni a játékokban, mivel más gyártó a VGA-k esetében nem kínál hasonló képességeket, de mivel a Google Stadia Radeonokat használ, így a nagyobb sebesség érdekében érdemes erre optimalizálni, és bizonyos puffereket itt létrehozni.


[+]

Aktív fejlesztés alatt áll még a HDR is, illetve a 4K, ezek igazából a Google tesztjénél nem voltak kritikusak, de a végleges megjelenés szempontjából már azok. Emellett javában készül az optimalizálás az NVIDIA hardvereire is, mivel az Ubisoft a Vulkan tekintetében eddig csak az AMD GPU-ival foglalkozott. Utóbbi azért jó hír, mert bár a Stadia szempontjából ez mindegy, de így nagy az esélye annak, hogy a vállalat kiadja a Vulkan leképezőt az Assassin's Creed Odyssey PC-s verziójához is, elvégre a kód nagyrészt úgyis megegyezik a Google platformjához tervezett fejlesztéssel.

Azóta történt

Előzmények

Hirdetés