Seien wir ehrlich: DirectX 11 und OpenGL werden etwas alt. DirectX 11 wurde bereits 2009 mit Windows 7 eingeführt, ein Jahr später folgte OpenGL 4.0. In Softwarejahren sind diese Technologien mittlerweile veraltet, und die aktuelle Hardware, die auf ihnen ausgeführt wird, befand sich noch nicht einmal auf dem Reißbrett, als diese Grafik-APIs veröffentlicht wurden. Was unternimmt die Branche angesichts dieser offensichtlichen Trennung, um mit der Zeit zu gehen? Nun, wir werden einen Blick in die nahe Zukunft werfen und sehen, aber zunächst wollen wir erklären, was eine API ist und welche Funktion sie für Spiele bietet.
Was ist eine API?
Eine API oder Anwendungsprogrammierschnittstelle besteht aus einer Reihe von Protokollen und Tools, die zum Erstellen von Software verwendet werden. Grafik-APIs sind eigentlich nur spezielle APIs, die das Erstellen von 3D-Grafiken vereinfachen. Grafik-APIs vereinfachen das Erstellen von 3D-Bildern, ermöglichen es Ihnen jedoch auch, die API anzuweisen, etwas zu tun (z. B. ein Rechteck zu zeichnen), und lassen die API dann mit der Hardware kommunizieren, wie diese Aufgabe ausgeführt werden soll. Dies ist der Hauptgrund, warum so viele verschiedene GPUs mit spezialisierter Hardware die gleichen Spiele ausführen können. Ohne das Vorhandensein einer API müsste dasselbe Spiel auf unterschiedliche Weise geschrieben werden, um mit den einzelnen Hardwaresätzen zu kommunizieren. Dies würde die Hardwarehersteller stark einschränken und die Kosten für den Bau von Spielen erheblich erhöhen. Diese Kosten würden letztendlich an den Endverbraucher weitergegeben.
Um die Erklärung oben ein wenig verständlicher zu machen, verwende ich eine Analogie: Stellen Sie sich eine API als Baustellenleiter vor. Seine oder ihre Aufgabe ist es, die Idee des Architekten aufzugreifen und sie aufzuschlüsseln, zu planen, welche Crews wo und wann sein müssen, und sicherzustellen, dass alle auf derselben Seite sind, was getan werden muss.
Derzeit verwendete Grafik-APIs
Nachdem wir den Job einer Grafik-API verstanden haben, schauen wir uns die aktuelle Aufstellung genauer an. Der Hauptakteur auf dem heutigen Markt ist Microsoft DirectX, das bereits 1995 eingeführt wurde. Es wurde seit seiner Veröffentlichung mehrmals aktualisiert und ist im Windows-Betriebssystem von Microsoft enthalten. DirectX ist die One-Graphics-API, die so ziemlich jedes für den PC veröffentlichte Spiel unterstützt. Tatsächlich ist es so verbreitet, dass es heute der Standard für PC-Spiele ist. DirectX ist exklusiv für Windows- und Microsoft-Produkte erhältlich, was es leider zu einem sehr geschlossenen System macht. Als nächstes folgt OpenGL, die einzige wichtige Open-Source-Grafik-API. OpenGL wurde 1992 veröffentlicht und ist plattformübergreifend. Dies bedeutet, dass es unter verschiedenen Betriebssystemen wie Windows, Linux und Mac OS funktioniert. Schließlich haben wir die neueste Grafik-API, Mantle. Mantle wurde 2013 durch eine Partnerschaft zwischen AMD und Dice entwickelt. Mantle ist unter Windows und nur für AMD-GPUs verfügbar.
Bildquelle; Bildnachweis: Intel
DirectX 12
DirectX 12 soll im Herbst mit Windows 10 veröffentlicht werden, und viele neue Verbesserungen werden angekündigt. Eine der großen Verbesserungen ist die bessere Unterstützung von Multithreading. Ein Großteil der Arbeit wird auf mehrere Kerne auf der CPU verteilt, was eine viel bessere und effizientere CPU-Auslastung ermöglicht. In DirectX 11 ist häufig nur ein Kern der CPU vollständig ausgelastet, während andere Kerne in der Nähe des Leerlaufs sitzen. DirectX 12 verspricht, diese Arbeitslast gleichmäßiger auf die CPU-Kerne zu verteilen, damit die Spiele wesentlich leistungsfähiger sind. Die nächste große Verbesserung, die DirectX 12 verspricht, ist die Fähigkeit, viel mehr Draw Calls zu verarbeiten. Ein Draw Call findet immer dann statt, wenn die Game Engine etwas auf den Bildschirm zeichnen möchte. Das Erfordernis vieler Draw Calls ist im Allgemeinen sehr anstrengend für die CPU. DirectX 12 soll bis zu 600.000 Draw Calls verarbeiten können. Um dies in die richtige Perspektive zu rücken, konnte DirectX 9 nur 6.000 Draw Calls oder ein Hundertstel dessen, was DirectX 12 kann, verarbeiten.
Seit Jahren können mehrere GPUs im SLI / Crossfire-Modus betrieben werden. Eine der großen Einschränkungen war jedoch, dass der in die Karten eingebaute VRAM nicht zusammengestapelt wurde, um einen großen, kontinuierlichen Pool zu bilden. Wenn Sie beispielsweise zwei GPUs mit jeweils 2 GB VRAM haben, hatten Sie effektiv nur 2 GB VRAM, da auf jeder Karte die gleichen Informationen gespeichert sein mussten. DirectX 12 möchte dieses Problem mithilfe von AFR oder alternativem Frame-Rendering lösen. Anstelle jedes GPU-Rendering-Teils jedes Frames rendern die GPUs nun jeweils einen vollständigen Frame. Auf diese Weise kann der VRAM auf jeder Karte unabhängig voneinander verwendet werden, und hoffentlich können Karten mit einer geringeren Menge an VRAM für längere Zeit zum Spielen verwendet werden. In DirectX 12 sollen noch viele weitere neue Funktionen enthalten sein, um die Gaming-Grafik noch weiter als bisher voranzutreiben. Microsoft ist jedoch immer noch ziemlich still, was diese neuen Funktionen angeht. Wir werden hoffentlich bald mehr darüber erfahren, wenn die Veröffentlichung der API näher rückt.
Bildquelle; Bildnachweis: nVidia GeForce
Vulkan
Über Vulkan ist nicht so viel bekannt wie über DirectX 12, wie gerade auf der GDC 2015 angekündigt wurde. Wir wissen, dass die Hersteller von OpenGL, die Khronos Group, den Namen glNext zugunsten von Vulkan fallen ließen. Vulkan scheint von Mantle abgeleitet zu sein, das ich bereits in diesem Artikel erwähnt habe. Darüber hinaus scheint AMD in Zusammenarbeit mit der Khronos Group die besten Teile von Mantle für Vulkan auf den Tisch zu bringen. Vulkan soll viele der gleichen Vorteile wie DirectX 12 haben, ist jedoch nicht an eine einzige Plattform wie Windows gebunden. Es wird stattdessen auf vielen verschiedenen Plattformen verfügbar sein, einschließlich Linux und sogar mobilen Geräten. Die Vulkan-Treiber für Windows und Linux sind im Gegensatz zu DirectX vollständig Open Source. Vulkan wird das Multithreading verbessern und daher die heute verfügbare CPU-Leistung viel besser nutzen, indem die Arbeitslast auf mehrere CPU-Kerne verteilt wird. Wie bereits erwähnt, können GPUs durch Verringern der CPU-Belastung nicht mehr so leicht wie jetzt in Engpässe geraten. Dies sollte während des Spielens eine ziemlich beträchtliche Framerate-Erhöhung liefern. Source 2, das kürzlich von Valve angekündigt wurde, wird die erste neue Game-Engine sein, die Vulkan vollständig unterstützt, obwohl ich sicher bin, dass in naher Zukunft noch viele weitere angekündigt werden. Dota 2, ein Spiel, das für seine CPU-Intensität bekannt ist, wurde in Source 2 mit der neuen Vulkan-API unter Verwendung von Intels integrierter Grafik auf der CPU gezeigt. Dies ist etwas, was unter DirectX 11 sicherlich nicht wünschenswert gewesen wäre, aber mit Vulkan schien das Spiel durchgehend eine vernünftige Bildrate beizubehalten. Dan Baker, ein Entwickler von Oxide-Spielen, ging sogar so weit zu sagen: „Bis die GPU-Hersteller sich zusammengetan haben und die GPUs zehnmal schneller machen als jetzt, können wir die CPU nicht ausreizen.“ Dies ist eine gute Nachricht für Leute, die langsamere CPUs verwenden oder über eine hohe GPU-Leistung verfügen, da dies bedeutet, dass mit derselben Hardware eine viel bessere Leistung erzielt werden kann.
Bildquelle; Bildnachweis: Khronos
Was bedeutet das für die Zukunft des Spielens?
Nun, seit langem steigt die GPU-Leistung viel schneller als die CPU-Leistung. Vor fünf Jahren gab Intel sogar an, dass einige GPUs 14-mal schneller waren als ihre eigenen CPUs. Diese Tests wurden mit einer nVidia GTX 280 im Vergleich zu einer i7 960 Intel-CPU durchgeführt, die mittlerweile als veraltete Hardware eingestuft wird. Die Lücke zwischen einem nVidia GTX Titan X (oder sogar einem nVidia GTX 980) und dem aktuellen Mainstream-CPU-Kraftpaket - der Intel i7-4790k-CPU - sollte viel größer sein. Der Punkt, den ich anstrebe, ist, dass immer mehr Spiele aufgrund der CPU an eine Leistungsgrenze stoßen. Fragen Sie jeden mit einer hohen Bildwiederholfrequenz, wie schwierig es ist, in einigen Spielen 100+ fps mit aktuellen CPUs zu erreichen. Ehrlich gesagt, würde es ohne diese neuen APIs und ihre Fähigkeit, die CPU-Leistung effizienter zu nutzen, nur schwieriger werden. Die Einführung dieser neuen APIs könnte für die meisten Menschen eine enorme Leistungssteigerung bedeuten. Außerdem könnten Entwickler damit viel mehr CPU-intensive Spiele als bisher entwickeln. Stellen Sie sich zum Beispiel ein Spiel wie Assasins Creed vor, in dem Tausende von NPCs gleichzeitig auf dem Bildschirm sind und alle miteinander und mit Ihrem Charakter interagieren, während Sie durch eine Stadt streifen. Bei Spielen wie Star Citizen, bei denen Sie eine sehr starke CPU benötigen, um eine stabile und akzeptable Framerate zu erzielen, ist möglicherweise in naher Zukunft eine durchschnittliche CPU und eine starke GPU erforderlich, um eine solide Geschwindigkeit von 60 fps zu gewährleisten.
Letztendlich ist dies eine sehr aufregende Zeit, um ein Spieler zu sein. Wenn diese neuen Grafik-APIs veröffentlicht werden, sehen wir möglicherweise den größten Sprung in der Spieletechnologie seit langem. Hoffen wir nur, dass diese APIs dem Hype gerecht werden, den sie sich bereits aufgebaut haben.
