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.

Hirdetés

Fotóznál vagy videóznál? Mutatjuk, melyik okostelefon mire való igazán!

PR Vásárlás előtt érdemes megnézni, mit kínálnak az aktuális telefonok, ha igazán ütős képeket vagy profi mozgóképeket szeretnénk készíteni.

  • Kapcsolódó cégek:
  • AMD

Azóta történt

Előzmények