Api’s kijken – Wat hebben gamers aan DirectX 12? | Gamer.nl

Api’s kijken – Wat hebben gamers aan DirectX 12? | Gamer.nl

Windows 10 komt eind deze maand uit en het aankomende besturingssysteem introduceert de nieuwste versie van DirectX. De twaalfde iteratie van dit cruciale stukje software is de oorzaak van enthousiast geroezemoes onder toegewijde pc-gamers. Wat is DirectX 12 en waarom moeten we er blij van worden?

Voordat we gaan smijten met termen als ‘draw calls’ en ‘multi-gpu’ is het handig om eerst uit te leggen waar DirectX überhaupt goed voor is. En om dat te verklaren kunnen we het beste beginnen bij het grote pluspunt van consoles. Spelcomputers als de Xbox One en PlayStation 4 zijn uniform; elke console bevat (vrijwel) precies dezelfde onderdelen. Dat is heerlijk voor ontwikkelaars, want zij weten precies waar ze aan toe zijn bij het ontwerpen van hun game. Omdat exact bekend is wat een PlayStation 4 kan, kunnen programmeurs alles uit de beschikbare hardware halen en dicht ‘op het metaal’ werken.

Daar tegenover staat de pc, met zijn ellendige eigenschap om in honderden, zo niet duizenden, verschillende soorten en maten te komen. Met zo veel mogelijke combinaties van proce ors en gpu’s – ‘graphics proce ing unit’ is de technische term voor ‘videokaart’ – is het onmogelijk om overal rekening mee te houden bij de ontwikkeling van een game. Toen eind jaren negentig de eerste 3d-versnellers verschenen, was het niet ongebruikelijk dat ontwikkelaars een aparte versie voor populaire videokaarten als de ATI Rage 3D en de S3 ViRGE moesten schrijven. Zou het niet heerlijk zijn als er een soort laag tu en de game en de hardware zit, die de commando’s om een bepaalde scène te tekenen zodanig vertaalt, dat alle videokaarten het begrijpen?

Media has no description

Enter DirectX

Dat is nou precies wat een api doet. Een api – kort voor ‘application programming interface’ – is een soort basi tuurprogramma dat allerlei soorten hardware met elkaar laat communiceren. Als een game het geluid van een geweerschot wil laten horen, hoeft het dankzij een api niet precies te weten welke geluidschip op het moederbord zit. De game stuurt zijn verzoek uit en de api geeft het door. Er bestaan meerdere api’s – OpenGL, Glide voor de 3dfx-kaarten van weleer, het recent doodverklaarde Mantle en Vulkan dat ervoor in de plaats komt – maar veruit de bekendste is Microsofts DirectX. DirectX bestaat uit meerdere onderdelen die elk een categorie aan hardware helpen aansturen, zoals DirectInput, DirectSound en de belangrijkste voor dit artikel: Direct3D.

Ontwikkelaars krijgen meer vrijheid om ‘dichterbij’ de hardware te programmeren

Een api helpt dus bij de ondersteuning van een breed scala van hardwarecombinaties, maar die abstractie heeft een groot nadeel. De vertaalslag tu en instructies van bijvoorbeeld de proce or naar de gpu kost tijd. Het gaat om slechts milliseconden per frame, maar als je tientallen beelden per seconde nodig hebt voor een geloofwaardige ervaring is elke onnodige milliseconde er een te veel. Bezitters van AMD-videokaarten zullen dit hebben gemerkt de afgelopen paar jaar. Onder Direct3D 11 duurt het namelijk opvallend lang voordat een AMD-gpu een ‘draw call’ – het verzoek van de proce or om een bepaald object op het scherm te renderen – heeft verwerkt. Zeker in combinatie met langzamere proce ors, zoals een Core i3, zakt het aantal draw calls per seconde in als een mislukte pudding.

Media has no description

Afgeslankt

DirectX 12 komt met belangrijke verbeteringen ten opzichte van 11. Allereerst wordt de laag tu en hardware en game een stuk slanker. Ontwikkelaars krijgen meer vrijheid om ‘dichterbij’ de hardware te programmeren, zodat er minder vertaalslagen nodig zijn voor een snelle communicatie. Daarnaast is de werkdruk veel beter geoptimaliseerd voor meerdere proce orkernen. Voorlopige benchmarks laten alvast zien dat DX12 de taken een stuk netter verdeelt over de beschikbare kernen, zodat je dure quadcore veel beter tot zijn recht komt.

Minstens zo handig is dat de proce or de taken niet meer een voor een naar de videokaart stuurt, maar meerdere verzoeken tegelijkertijd en desnoods asynchroon bij de gpu neerlegt. Deze optimalisaties zorgen ervoor dat een AMD R9 290X die met DirectX 11 nauwelijks 600.000 draw calls kan bolwerken, met DirectX 12 ruim acht miljoen draw calls verwerkt. Bij Nvidia-kaarten is de toename iets minder spectaculair, maar dat heeft er vooral mee te maken dat deze gpu’s onder DX11 minder problemen ondervinden.

Mooier, sneller, beter

Betekent dit nu ook dat we bijna tien keer zoveel frames per seconde gaan zien bij games? Helaas niet, want de draw call is slechts een klein onderdeel van het hele proces om een frame te bakken. Maar het wegnemen van deze bottleneck levert wel extra snelheid op en maakt scenario’s mogelijk waarvan we met DirectX 11 alleen maar konden dromen. De demonstratie van de Oxide Games’ Ashes of the Singularity bevat honderden tanks en vliegtuigen die stuk voor stuk projectielen op de vijand afvuren en elk projectiel is ook nog eens zijn eigen lichtbron. Met DirectX 11 zou de proce or zich verslikken in het rekenwerk en proestend de framerate onder de tien laten zakken, maar met DirectX 12 is het presenteren van een dergelijke veldslag binnen handbereik.

De optimalisaties voor proce oren zijn veruit het belangrijkste pluspunt van DirectX 12, maar de nieuwste versie van Microsofts api bevat meer cadeautjes. De abstractielaag tu en software en hardware wordt niet alleen slanker, maar ook slimmer. Dit blijkt uit de mogelijkheid om straks de rekenkracht van je videokaart te combineren met de geïntegreerde grafische chip van je proce or. Deze Multiadapter-feature levert gratis een paar extra frames per seconde op, door gebruik te maken van iets dat vaak toch al in je pc zit. Eerder dit jaar ging zelfs het gerucht rond dat Multiadapter ook gpu’s van Nvidia en AMD samen laat samenwerken, maar een officiële bevestiging blijft uit.

De ondersteuning voor meerdere gpu’s moet sowieso een stuk beter worden met de komst van DirectX 12. Nu is het nog zo dat het geheugen van meerdere videokaarten niet schaalt: twee gpu’s met 4GB aan videogeheugen hebben samen nog steeds 4GB, omdat de inhoud van beide geheugensets overeen moet komen. Met DX12 wordt 1 + 1 eindelijk 2 en liggen hoge resoluties en het comfortabel weergeven van virtual reality binnen handbereik. Al deze mooie verbeteringen maken de weg vrij voor meer grafisch geweld. Square Enix geeft ons een voorproefje met de indrukwekkende Witch Chapter 0 [cry]-demo, ter promotie van Final Fantasy 15. Dit is hoe 63 miljoen polygonen er uitzien.

Binnenkort in een pc of Xbox One bij jou in de buurt

DirectX 12 is alleen beschikbaar voor Windows 10, maar de lopende aanbieding voor bezitters van Windows 7 en 8 om gratis te upgraden maakt die beperking een stuk beter te behappen. Minder duidelijk is welke videokaarten de nieuwe api gaan ondersteunen. Nvidia stelt dat de GTX 900-serie de enige is die DX12 volledig ondersteunt, maar dat klopt niet helemaal. DirectX is naast een programmeerlaag ook een standaard. Technieken die helpen bij het renderen van beelden worden vastgelegd in zogenaamde Feature Levels. Als een videokaart officieel DirectX 11 ondersteunt, is het best mogelijk dat de chip meer kan dan wat de Feature Level voor DX11 voorschrijft. Om het nog ingewikkelder te maken voldoen sommige kaarten van de GTX 900-serie wel aan 12_1, maar niet 12_0.

Het belangrijkste om te weten is dat alle kaarten vanaf de Nvidia GeForce 400-serie en de AMD HD 7000-serie DirectX 12 in enige mate ondersteunen. Ook met oudere kaarten ga je dus een efficiënter gebruik van de proce or zien, met een betere framerate tot gevolg. Qua Multiadapter en andere tweaks vallen ze waarschijnlijk buiten de boot. Ook de nieuwste videokaarten zullen niet direct al het moois van DirectX 12 kunnen gebruiken. De games moeten het namelijk zelf ook ondersteunen. Deus Ex: Mankind Divided en Ashes of the Singularity worden de eerste games die de speciale features van DirectX 12 gebruiken.

Media has no description

Tot slot een lichtpuntje voor Xbox One-bezitters. De console die regelmatig op grafisch vlak het onderspit moet delven tegen de PlayStation 4, wordt ook voorzien van DirectX 12. Als je nu uitzinnig van vreugde door de kamer stuitert in de veronderstelling dat alle Xbox One-games binnenkort op 1080p draaien, moeten we je teleurstellen. Een aantal optimalisaties van DX12 zijn al verwerkt in de aangepaste versie van DX11 waar de Xbox One mee werkt. Naar verwachting zal de console er iets op vooruit gaan – dankzij een asynchrone aansturing van de grafische rekenkernen en een efficiënter gebruik van de 32MB aan eSRAM – maar volgens lead engineer Balazs Torok van CD Projekt RED is het onwaarschijnlijk dat games een hogere resolutie gaan halen.

Het is nog moeilijk om te zeggen hoe groot de prestatiewinsten precies zullen zijn, omdat er buiten jubelende powerpoints nog weinig onafhankelijke vergelijkingen bestaan. Met DirectX 12 kun je er in ieder geval op rekenen dat games op een groot aantal systemen beter draaien. Dankzij de betere ondersteuning van meerdere proce orkernen en een slimmere aanvoer van data naar de videokaart verwachten we vooral bij pc’s met langzamere proce oren een merkbare sprong in prestaties. Ook in het topsegment gaan pc’s er op vooruit, door de verregaande optimalisaties bij twee of meer videokaarten. Als je een pc-gamer bent, is er dus een goede reden om 29 juli op de kalender te zetten.

Artikel als favoriet toevoegen
Deel dit artikel

Aanbevolen voor jou