Gyakorta érezhettük azt a videokártyák sok-sok évtizedes történelmében, hogy a kirakatba helyezett hardverek jelentik az előrehaladást a virtuális világ felépítése során, a nyomtatott áramkörre integrált, szilíciumalapú lapkák azonban mit sem érnének megfelelő futtatókörnyezet, eszközillesztő programok és fejlesztői támogatás nélkül. Mind a GeForce, mind pedig a Radeon kártyákról elmondható, hogy generációról generációra megmutatták, hol is tart a chiptervező technológia, ám a konkrét produktumok, részegységek életre keltése még nagyobb kihívások elé állította a termékfelelős csapatokat.
A PC-ken futtatott játékok őskoráig most nem repülünk vissza, inkább azon a ponton vennénk fel a fonalat, amikor a Microsoft a Windows 95-tel behozta a köztudatba az első DirectX verziót, ami a fejlesztők számára közvetlenebb hozzáférést adott a hardverek irányába a korábban használt Windows API-hoz képest.
Tette ráadásul mindezt úgy, hogy az operációs rendszer védett módja is adott volt. A redmondiak fejlesztése kapcsán már az első verzióknál olyan út rajzolódott ki, ami nemcsak a grafikai feladatokról szól, hanem egy komplett multimédiás csomag jövőjét jelezte
Az évről évre érkező frissítések és verziószámugrások igyekeztek mind a fejlesztők, mind pedig a hardvergyártók kéréseinek megfelelni, másképp mondva iparági szintű egyetértéssel lett a DirectX egyre meghatározóbb a Windows-alapú PC-k világában. Bár a Khronos Group által kezelt, az egyik legismertebb alternatív megoldásnak számító OpenGL nyíltsága miatt sokszor érte támadás a Microsoftot a DirectX olykor túlontúl zárt, nem eléggé rugalmas és kívülről nem irányítható jellege miatt, visszatekintve azért ki lehet jelenteni, hogy közel harminc évvel később az API nagyon közel áll ahhoz, hogy megfelelő alapot adjon a jövő vizuális innovációinak.
Amikor a PC és a konzol összeforr
Mivel egy éves szinten több milliárdos üzletágról van szó, a játékiparágban tevékenykedő kiadók, fejlesztők és online piacterek minden egyes játéknál komolyan számításba veszik, mekkora lehet az a bázis, amit elérhetnek az adott cím megjelentetésével. A játék témája, típusa, kinézete természetesen továbbra is fontos, ám ahogy azt láthatjuk az utóbbi években, átlagon felüli üzleti sikerre a multiplatform fejlesztéseknek lehet igazán esélyük. Ezzel a Microsoft maga is elég régóta tisztában van, és lassan évtizedes léptékben mérhető az a próbálkozás, hogyan vonhatnák össze a klasszikus, PC-s játékosbázist a konzolos közösséggel.
Talán meglepetést okozhat egyesek számára, hogy a DirectX már ott volt az első Xbox születésénél is, a GeForce NV2A grafikus vezérlő miatt pedig az Nvidia is beszállt a fejlesztésbe. Az így létrejött Xbox API a DirectX 8.1 verziójának egy speciális változata volt, amit azonban nem lehetett tovább frissíteni úgy, ahogy azt PC-n megszokhattuk. Ez volt tehát az első lépés, igazi mérföldkő, persze ettől még nem vált a játékfejlesztés egy leányálommá. Kezdetben ez jelentette a kapcsot a két platform között (miközben a Sony a saját útját járta a PlayStationnel), majd az Xbox 360 folytatta a sort a DirectX 9.0c-alapú API-val, míg a jelenkor Xbox Series S|X konzoljai a DirectX 12 Ultimate képességeiből profitálnak.
Amellett, hogy a hardveres képességeknek megfelelően fejlődött és kapott új funkciókat a DirectX, a 12-es főverzió nyitotta meg a játékfejlesztők számára az utat a többplatformos tervezés felé.
A Direct3D 12 alacsony szintű programozási rétegei adták meg az igazán szabad parancsmegadási és pufferelési hozzáféréseket a GPU-khoz (Close to Metal), amelyekkel elérhetővé vált a 3D-grafika konzolszintű hatékonysága egyéb eszközök, számítógépek, okostelefonok és tabletek számára. Ezt a fejlődési utat egészíti ki az Ultimate verzió, amely immár közös parancskönyvtárak mentén köti össze a Windows 10-alapú PC-ket és a Series X|S konzolokat.
Sugárkövetéses szemfényvesztés
Nem lepődünk meg, ha a ray tracing kapcsán egy kisebb zavar alakulna ki a játékosok fejében amiatt, hogy nem teljesen tiszta, miképp is indult el, és kezdték alkalmazni ezt a technológiát. Az Nvidia roppant erős és céltudatos marketingkampányának köszönhetően a legtöbb játékos az RTX videokártyákhoz köti a sugárkövetéses fény-árnyékolás megjelenítését, pedig valójában ez a funkció is API-k támogatása, fejlődése mentén valósulhat meg adott képességű hardvereken.
Egyrészt nemcsak az Nvidia-féle RTX ray tracing megoldás létezik, a DirectX DXR fejlesztése 2018 óta elérhető, és része is egyébként a Windows 10 operációs rendszernek. Támogatásához ráadásul nem feltétlenül van szükség fixfunkciós hardvermodulokra a GPU-n belül, a GeForce-kínálatban a Pascal architektúrára épülő GTX 10 sorozatban is működik.
Az már más kérdés, hogy a DXR 1.0 esetében leginkább csak egyszerű ray-tracing effektek megjelenítésére lehet számítani. Apróbb tükröződések kalkulációját ugyan egy GTX 1060-as kártya is el tudja végezni, ám a teljes renderelt kép sugárkövetésén alapuló megvilágítása óriási számítási kapacitást igényel. Ez pedig már az RTX és RX 6000-es grafikus vezérlők területe, amelyek a DXR 1.1-es verzióját is teljes mértékben támogatják.
A frissítéssel a Microsoft további, alacsony szintű hozzáférést kínál a GPU vezérléséhez, aminek egyetlen célja, hogy hatékonyabb lehessen a jelenetek kiszámítása. Ez jelenleg akár 50-60 százalékos képkocka-sebességvesztéssel is járhat. Az iparág jelenleg egy jó kiindulási alapként tekint a Microsoft ray tracing megoldására, ám az aktuális konzolgenerációba grafikus vezérlőket szállító AMD szerint saját fejlesztésű megoldásra is szükség van, hogy a konzolok grafikai tudása még inkább kihasználhatóvá váljon.
Hogy ebből ténylegesen egy külön szálon futó fejlesztés lesz, vagy a DXR következő verziója fogja tartalmazni az RDNA 2 architektúrára szabott ray tracing parancsokat, egyelőre nem tudni. A játékosoknak egyelőre az a jó hírünk van, hogy a technológia a DirectX elemi részévé vált, és a DXR 1.1 révén a játékfejlesztők is nagyobb érdeklődést mutathatnak iránta.
Minőségi grafika, de csak okosan
A Variable Rate Shading szintén fontos újítás a DX12 Ultimate-en belül, de hozzá kell tennünk, hogy a funkció már korábban megjelent az Nvidia és az Intel megoldásaként. Előbbi vállalat a Turing architektúrára épülő RTX 20-kártyáknál mutatta be a VRS-t, az Intel pedig a Gen11 integrált grafikus vezérlőitől kezdve nyújt támogatást az igen érdekes teljesítménynövelő eljáráshoz. A VRS lényege ugyanis, hogy lehetővé teszi a GPU számára, hogy egyazon képkockán belül változó mennyiségű feldolgozási teljesítményt használjon a kép különböző részeinek megjelenítéséhez.
Ennek használatával a GPU teljes árnyékolásfeldolgozási teljesítményét átcsoportosíthatja a kép komplexebb vizualitású részeihez, és ezáltal kevesebb számítási kapacitást delegál az egyszerűbb részekhez. Vesztünk-e ezzel a képminőségből? Igen is, meg nem is. A GPU-k tartalmaznak egy pixel shader nevű komponenst, amelyek mindegyikéhez egy pixel tartozik, így határozzák meg annak vizuális jellemzőit. Minél nagyobb a grafikai részletesség, annál nagyobb grafikai teljesítményt igényelnek a shaderszámítások és fordítva. A VRS megváltoztatja azoknak a pixeleknek a számát, amelyekhez az egy szem pixel árnyékolóműveletet adhat.
Ennek eredményeként egy pixelárnyékoló művelet a pixelek teljes, egészen pontosan akár 16×16 pixeles területre alkalmazható. Ez azt jelenti, hogy a fejlesztők csökkenthetik a vizuális hűséget a képkocka megfelelő, a játékos számára kevésbé látható területein, így a PC vagy a konzol grafikus vezérlőjére jóval kisebb számítási teher hárul. Ez növelheti a másodpercenkénti képkockasebességet, valamint lehetővé teszi, hogy alacsonyabb tudású GPU-kkal is élvezhetőbb játékélményben legyen részünk.
A VRS és ennek jövője merőben meghatározhatja azt, hogy egy adott konzolgenerációnak milyen hosszú életútja lehet, és ezalatt mennyire kerülhetők el azok a szituációk, amikor az évekkel később megjelenő grafikai motorok egyre nagyobb falatot jelentenek a korosodó hardverek számára.
Geometriai számítások másképp
Szintén már korábban bemutatott, ám az Ultimate verziófrissítéssel a DirectX-be is bekerülő újítás az úgynevezett mesh shading. A geometriai elemek kiszámolásának menete az aktuális grafikai futószalagon a vertex árnyékolók segítségével történhet, amelyek az évek során egy sor egyéb funkciót is kaptak például a geometriai és tesszellációs árnyékolók révén. Bár ezek működése kezdetben nem okozott különösebb problémát, a mai hardverek működése (működtetése) teljesen másképp zajlik, és gyakorlatilag a közel húszéves technológia elavulttá vált.
A különféle geometriai elemek megalkotása, kivágása számos korlátozás mentén zajlott, az egyre növekvő objektummegjelenítési igény miatt pedig komoly teljesítményproblémákba futott, ami nemcsak a GPU számítási kapacitását ölte meg, hanem a memóriát is megette. A háromszögek generálására önmagában is képes mesh shading tulajdonképpen az eddigi grafikai futószalag frissítése a kor architektúráinak megfelelően, compute shader alapokon, ráadásul mindezt jóval alacsonyabb memóriafelhasználás mellett. Gyorsabb, egyszerűbb és váratlan teljesítménycsúcsoktól mentes számítási mód, amely a fejlesztőket még komplexebb világok felépítésében segítheti.
Takarékosan az adatokkal
Végül, de nem utolsósorban szintén a hatékonyság növelését célozza a sampler feedback funkció, amelynek révén a fejlesztőnek lehetősége nyílik ténylegesen csak azokat a textúrákat betölteni az adott hardver memóriájába, amelyekre szükség van a következő képkockán. Ennek kezelése egyébként a DX12 Ultimate-ben és az Xbox Series X|S sorozatokon eltérő, utóbbiak esetében ugyanis a Microsoft a DirectStorage API-val egészítette ki a működést, amelybe bevonta a villámgyors SSD-tárolót is.
A sampler feedback streaming tehát lényegében a teljes megoldás, hiszen itt a textúrabetöltés az SSD-ről az előre meghatározott memóriaterületre rögtön garantált, amit a játékos abból vehet észre, hogy a pályák (pályarészek) betöltése egyrészt sokkal gyorsabb, másrészt nem okoz képmegjelenítési sebességvesztést, avagy indokolatlan hardverterhelést.
A PC-k frontján egy kicsit magukra maradnak a fejlesztők a "streaming" kifejlesztésével, és az adatok gyorsítótárazására saját megoldásokat kell találniuk.
Mikor látunk ebből bármit is?
Valami sosem változik, az pedig a türelem szükségessége. A DirectX 12 Ultimate jelentette újítások megtestesülése az elkövetkezendő években várható, és bár a PC-k és a két új konzolgeneráció megadja a teljes támogatást, az aktuális játékok motorjai még csak most kezdik el felfedezni maguknak a DX12 komplex tudástárát. Érdemes nyomon követni, miképp változnak a játékok idén és jövőre, az előzetesekből már látni itt-ott azt az igazi next-gen élményt, amelyre vártunk már egy ideje.
Ha szívesen olvasnál további cikkeket tőlünk és örülnél ajándék teljes verziós programoknak, biztonsági szoftvereknek és egy PC-játéknak, akkor vedd meg a 2021/03-as PC World magazint!