DirectX 12: De toekomst van PC gaming!

Door aercaen op woensdag 29 juli 2015 21:56 - Reacties (9)
CategorieŽn: Software, Technologie, Views: 4.293

Deze blog word geschreven uit het standpunt van een gamer, ik snap wel hoe games worden opgebouwd, maar ik ben
geen professionele game designer (ben nog iets veel beter, namelijk een SAP FICO analist).

Inleiding

Met de komst van Windows 10 vandaag vond ik het de beste tijd om eens te praten over DirectX 12, en zijn concurrent OpenGLVulkan. Er wordt nogal veel over gesproken dat beide het mogelijk gaan maken om meer uit minder hardware te halen. De focus van deze blog gaat zijn om een introductie te geven in DirectX 12. (Mogelijk zal ik op een later tijdstip een meer geavanceerde blog schrijven over dit onderwerp, maar nu zijn er teveel termen die ik zou moeten uitleggen om in detail te gaan)

Wat is nu een graphics API?

Een API (Application Programming Interface) is een interface welke door programmeurs kan worden gebruikt om makkelijk zaken binnen een platform aante spreken. In het geval van graphics API's geeft het toegang tot te grafische kaart. Het idee hierachter is dat het makkelijker word voor ontwikkelaars om de hardware aan te spreken. In plaats van voor elke grafische kaart apart
te optimaliseren, kunnen ze via een grafische API de game maken. En dan maken de grafische kaart fabrikanten hun producten compatibel met de API. Bij PC is dit een heel belangrijke reden waarom graphics API's worden gebruikt, want op dat platform zijn er veel verschillende hardware combinaties mogelijk.

AMD Mantle

Voordat ik begin over DirectX 12, moet ik toch even de trendsetter vermelden. En dit was AMD met Mantle. Mantle was een nieuwe graphics API welke als doel had om de CPU zoveel mogelijk te ontlasten. Dit zorgde ervoor dat je een mindere CPU kon aanvullen met krachtige GPU zonder al te veel performantie te verliezen in games. AMD heeft Mantle open source gemaakt in een poging om het aan populariteit te laten winnen. Spijtig genoeg heeft de marktleider (Nvidia) besloten
om zich eerder te focussen op DirectX 12 en heeft die nooit Mantle ondersteund. Met de komst van DirectX 12 en OpenGL Vulkan heeft AMD besloten om Mantle niet verder uit te bouwen (hier zou Nvidia iets van kunnen leren).

DirectX 12

Dus DirectX is een Graphics API (ook multimedia, but who cares :P) welke standaard word meegeleverd met Windows. DirectX 12 is de laatste iteratie welke met Windows 10 word gebundeld. Waar DirectX 10 in het kader stond van "please, koop Windows Vista" en DirectX 11 in het kader stond van Tesselation. Slaat de laatste versie van DirectX op het verminderen van overhead. Overhead is een logisch probleem dat voorkomt op PC omdat de software compatibel moet zijn
met heel uiteenlopende hardware. Buiten overhead maakt DirectX ook meer en beter gebruik van meerdere CPU cores.

Nieuw multi-GPU setup
Eťn van de grootste verbeteringen van DirectX 12 is dat er anders word omgegaan met systemen met meerdere grafische kaarten. Met DirectX 12 kan de ontwikkelaar elke grafische kaart apart aanspreken. Dit zorgt ervoor dat je totaal verschillende grafische kaarten kan laten samenwerken. En zelfs Nvidia en AMD grafische kaarten kunnen nu dus ook samen werken. Maar ook bijvoorbeeld de interne grafische kaart van een Intel kan samenwerken met een dedicated grafische kaart
om betere performantie te halen (en daar zit ik dan met mijn dure X99 processor welke geen interne GPU heeft :().
Al is dit een goede vooruitgang, er is wel ťťn keerzijde aan deze aanpak. Er is veel meer werk nodig voor de programmeur om dit soort multi-GPU setup ten volle te benutten. En in een wereld waar de PC port vaak word uitbesteed aan een klein team welke het zo snel mogelijk moet afwerken, kan dit ervoor zorgen dat meeste grote games het niet gaan ondersteunen.

Nieuwe hardware nodig?
Het leuke aan DirectX 12 is dat ook oudere hardware word ondersteund. Zo is bij Nvidia minimum een GPU uit de Fermi generatie nodig. Bij AMD, alle GPU's gebaseerd op GCN, en bij Intel alle Haswell generatie GPU's.
Maar er zijn ook specifieke functies welke enkel met grafische kaarten werkt welke DirectX 12 ondersteunen. Hier word het spijtig genoeg heel complex, zelf al staat op de doos DirectX 12 support betekend dit niet dat alles gaat werken. Dit is heel verwarrend en als je er meer informatie over wilt hebben zou ik ten zeerste aanraden om deze post van Werelds te lezen.


Xbox one: krijgt die ook iets?
Ook de Xbox one krijgt DirectX 12 alsook Windows 10. Maar er is al meermaals gezegd dat DirectX 12 niet voor dezelfde performanceverschillen gaat zorgen dan voor PC. De reden hiervoor is dat bij consoles de ontwikkelaars altijd voor dezelfde hardware programmeren. Dit is ook de hoofdreden waarom een console met veel minder grafische kracht toch heel mooie graphics op het scherm kan toveren. Wat DirectX 12 wel doet is ontwikkelaars de mogelijkheid geven om makkelijker
het ESRAM van de Xbox one aan te spreken. Dit zou in theorie een performance boost moeten geven, al denk ik dat we dit nog zullen moeten afwachten.

OpenGL Vulkan

OpenGL Vulkan is de laatste versie van OpenGL, welke door de Khronos Group word onderhouden. Vulkan maakt ook hergebruik van zaken welke in Mantle zijn geÔmplementeerd. En kan dus ook aanzien worden als de opvolger van Mantle. Vulkan heeft ook als doel om net als DirectX overhead te verminderen, alsook om meerdere CPU cores beter te benutten.
In tegenstelling tot DirectX, is OpenGL open source en bruikbaar op alle platformen (Windows, Mac OS, Linux, enz...).

Conclusie

Sinds AMD de trend heeft ingezet om overhead te verlagen, zijn alle graphics API gevolgd. Dit heeft positieve gevolgen voor alle PC gamers. Spijtig genoeg zijn er voor het moment buiten iets als 3DMark nog geen games welke DirectX 12 ondersteunen. Hierdoor neem ik nog een "wait and see" houding aan. Niet dat ik twijfel aan de mogelijkheden welke DirectX 12 biedt. Maar eerder aan of dit wel goed gaat worden geÔmplementeerd door game developers.


Footnote
Deze blog heeft als doel om game technologieŽn, als er interesse is, in de spotlight te zetten.
Indien je een suggestie hebt voor een onderwerp, kan je mij altijd laten weten via de reacties of PM.
De huidige planning voor blogs ziet er zo uit (staat verre van vast):
  • Terugblik op Gamescom 2015
  • MegaTexture: De misstap van John Carmack?
  • 3DFX: Wat ging er mis?
  • Nvidia PhysX: een waardevolle gimmick?
  • Game termen uitgelegd: Textures, shaders en polygonen
Voor meer informatie over dit onderwerp raad ik aan de volgende zaken eens te lezen:
http://blogs.msdn.com/b/d...014/03/20/directx-12.aspx
https://www.khronos.org/vulkan