Radikálisan új motorstruktúra kell az új API-khoz

Az már az elmúlt év nyarán kiderült, hogy a DirectX 12 és a Vulkan API nem fogja szeretni a naiv portokat, amelyre Stephan Hodes, az AMD rendszerprogramozója hívta fel a figyelmet. Ez az információ persze annyira nem volt sokkoló, mivel korábban is részletezésre került, hogy milyen változásokat kell bevetni, hogy az új, explicit API-kkal az adott program egyáltalán gyorsuljon. Matthäus G. Chajdas, az AMD partnerfejlesztőket segítő programozója azonban a korábbi előadást egy kicsit kiterjesztette, így az elmúlt évek gyakorlati méréseire építve a vállalat előállt egy némileg jobban részletezett alappal, ami egyrészt fontos a fejlesztők számára, másrészt alapvetően megmagyaráz pár aktuális eredményt.

Az explicit API-k szempontjából azért érdemes az AMD-nek a véleményére adni, mert az említett vállalat kilenc olyan játék megszületését segítette, amelyek valamelyik explicit API-t használják. Összehasonlításképpen a Microsoft csak kettő, míg az NVIDIA csak egy játékot segített életre ilyen szempontból, vagyis az elméletet ugyan mindegyik érintett kívülről fújja, de a gyakorlatról nem sok cégnek van tapasztalata.

Hirdetés

Márpedig a gyakorlat egyáltalán nem egyszerű, és például az AMD is úgymond rosszul mérte fel az átállást az explicit API-kra, így a két első, Mantle API-t használó játék például bizonyos szempontok szerint problémás volt. A Battlefield 4 végül az is maradt, míg a Thief fél évvel később kapott egy nagyobb frissítést, amitől sokat javult a helyzet, de a megjelenés pillanatában a gondok így is tetten érhetők voltak. Ha így vesszük, akkor a Microsoft és az NVIDIA sem kezdett jobban. Az előbbi cégtől a Gears of War: Ultimate Edition és a Quantum Break nem azt hozza, ami a DirectX 12-től elvárható lenne, az utóbbi vállalat pedig úgy segítette a Rise of the Tomb Raider explicit API-ra való átültetését, hogy több területen is jelentősen lassult tőle az alkalmazás.

Az AMD emiatt a GDC-n hangsúlyozta, hogy a gyakorlati tapasztalat kiemelten fontos tényező, és az elmúlt három év alapján gyűjtött adatokból felállítottak pár általános javaslatot. Közismert, hogy a mai multiplatform videojáték-motorokat a sok elérhető API miatt eléggé általánosra tervezik. Mindegyiknek van egy viszonylag magas szintű leképezője, amelyhez kapcsolódik egy olyan réteg, amin keresztül az egyes API-k támogatva vannak. Általában ez a rétegnek a célzott grafikus API-k közül a legjobbhoz igazodik, de itt is számos tényezőt kell figyelembe venni.


[+]

Matthäus G. Chajdas szerint ha sok API-t kell támogatni, akkor az sok kompromisszummal jár, emiatt nehéz igazán gyors alapokat fejleszteni.


[+]

Némileg jobb a helyzet, ha a fejlesztők elhagyják az olyan rendkívül elavult API-kat, mint az OpenGL, az OpenGL ES, illetve a DirectX 9. Ebben az esetben két opció lehetséges. Egyrészt az API fölötti réteget lehet a DirectX 11-hez vagy a DirectX 12-höz tervezni. Előbbi esetben az explicit API-k inkább lassítanak a teljesítményen, kivéve akkor, ha az adott jelenetet valamiért rendkívül limitálja az elérhető processzoridő. Emiatt az explicit API-hoz már a videojáték-motor legalsó rétegét is érdemes ennek tudatában tervezni, és ilyen körülmények között kihasználható többletterhelés csökkenéséből eredő előny, mindenféle teljesítménycsökkentést okozó hátrány nélkül.

Matthäus G. Chajdas szerint a legtöbb videojáték-motor ma ennek a két szintnek az egyikén tart, vagyis van egy alapvető leképező, és annak egy DirectX 11 vagy DirectX 12 API-khoz illeszkedő rétege. Sajnos ma még nem mindenki váltott át az utóbbi struktúrára, márpedig ez fontos lenne, mivel a DirectX 11-hez idomuló réteggel a DirectX 12 különböző API limitációk mellett lehet gyorsabb.


[+]

Az AMD szerint azonban még az eddig felvázolt legjobb opció sem elég jó, mivel a leképező szintje túl alacsonyan van, az API-hoz közvetlenül kapcsolódó réteg pedig túl magasan, illetve ezzel kapcsolatban még az is probléma, hogy az említett réteg eltérő működésű grafikus API-kat szolgál ki. Emiatt a vállalat három év gyakorlati tapasztalatára építve egy újszerű struktúrát ajánl, ami megfelelően magas szintre helyezi a leképezőt, az egyes eltérő API-khoz pedig különálló, megfelelően alacsony szintű réteg kapcsolódhat. Messze ez adja az új modellben a legnagyobb teljesítményt, viszont az erre való átállás nehézkesebb, illetve rendkívül sok kísérletezést igényel. Szerencsére vannak már olyan videojáték-motorok, amelyek már így működnek, kiemelve a Nitroust, a LORE-t, valamint a Frostbite, a CryEngine, a Glacier és az Asura új verzióját.

Felmerülhet az a kérdés, hogy ha ezek az elméleti irányok ismertek, akkor miért nem ezzel kezdett mindenki. Nos erre a válasz az, hogy az AMD által leghatékonyabbnak felvázolt modell elméletben egyáltalán nem kézenfekvő. Egyrészt sok munkával jár, másrészt nagyon sok gyakorlati elemzés szükséges a tökéletes eredményhez.

  • Kapcsolódó cégek:
  • AMD

Azóta történt

Előzmények

Hirdetés